From 9c70405740ae387c342a39d8207dbc74540e39d3 Mon Sep 17 00:00:00 2001 From: alebinson Date: Tue, 28 Jul 2020 15:28:30 +0300 Subject: [PATCH 01/35] Stencil controls + react wrapper + LERNA --- demoapp/.gitignore | 21 + demoapp/README.md | 10 + demoapp/images.d.ts | 3 + demoapp/package.json | 35 + demoapp/public/favicon.ico | Bin 0 -> 26694 bytes demoapp/public/index.html | 40 + demoapp/public/manifest.json | 15 + demoapp/src/app.tsx | 19 + demoapp/src/features/home/home-page.tsx | 13 + demoapp/src/index.css | 23 + demoapp/src/index.tsx | 13 + .../src/react-app-env.d.ts | 0 demoapp/tsconfig.base.json | 42 + demoapp/tsconfig.json | 4 + demoapp/tsconfig.test.json | 6 + demoapp/tslint.json | 21 + lerna.json | 9 + package.json | 20 +- .../mc-react-components}/.gitignore | 0 .../mc-react-components}/README.md | 0 .../mc-react-components}/package.json | 2 +- .../mc-react-components}/public/favicon.ico | Bin .../mc-react-components}/public/index.html | 0 .../mc-react-components}/public/logo192.png | Bin .../mc-react-components}/public/logo512.png | Bin .../mc-react-components}/public/manifest.json | 0 .../mc-react-components}/public/robots.txt | 0 .../mc-react-components}/src/index.tsx | 0 .../date-range-picker.spec.tsx | 0 .../date-range-picker/date-range-picker.tsx | 0 .../src/lib/date-range-picker/index.ts | 0 .../mc-react-components}/src/lib/index.ts | 0 .../map-filter-container/container-map.css | 0 .../map-filter-container/container-map.tsx | 0 .../src/lib/map-filter-container/index.ts | 0 .../map-filter-container.tsx | 0 .../polygon-selection-ui.spec.tsx | 0 .../polygon-selection-ui.tsx | 0 .../src/lib/models/enums.ts | 0 .../src/lib/models/index.ts | 0 .../src/lib/ol-map/feature.tsx | 0 .../src/lib/ol-map/index.ts | 0 .../src/lib/ol-map/interactions/draw.tsx | 0 .../src/lib/ol-map/interactions/index.ts | 0 .../src/lib/ol-map/layers/index.ts | 0 .../src/lib/ol-map/layers/tile-layer.tsx | 0 .../src/lib/ol-map/layers/vector-layer.tsx | 0 .../src/lib/ol-map/map.css | 0 .../src/lib/ol-map/map.tsx | 0 .../src/lib/ol-map/source/index.ts | 0 .../src/lib/ol-map/source/osm.tsx | 0 .../src/lib/ol-map/source/vector-source.tsx | 0 .../smart-table/__mocks__/smartTableMocks.ts | 0 .../src/lib/smart-table/index.ts | 0 .../lib/smart-table/smart-table-head.spec.tsx | 0 .../src/lib/smart-table/smart-table-head.tsx | 0 .../lib/smart-table/smart-table-row.spec.tsx | 0 .../src/lib/smart-table/smart-table-row.tsx | 0 .../src/lib/smart-table/smart-table-types.ts | 0 .../src/lib/smart-table/smart-table.spec.tsx | 0 .../src/lib/smart-table/smart-table.tsx | 0 .../src/react-app-env.d.ts | 1 + .../mc-react-components}/src/setupTests.ts | 0 .../mc-react-components}/tsbuildconfig.json | 0 .../mc-react-components}/tsconfig.json | 0 .../mc-react-components}/yarn.lock | 0 packages/mc-wc-ui-components-react/.gitignore | 63 + packages/mc-wc-ui-components-react/LICENSE | 21 + packages/mc-wc-ui-components-react/README.md | 16 + .../mc-wc-ui-components-react/package.json | 41 + .../src/components.ts | 48 + .../mc-wc-ui-components-react/src/index.ts | 1 + .../react-component-lib/createComponent.tsx | 88 + .../createOverlayComponent.tsx | 131 + .../src/react-component-lib/index.ts | 2 + .../src/react-component-lib/interfaces.ts | 31 + .../react-component-lib/utils/attachProps.ts | 112 + .../src/react-component-lib/utils/case.ts | 8 + .../src/react-component-lib/utils/dev.ts | 14 + .../src/react-component-lib/utils/index.tsx | 40 + .../mc-wc-ui-components-react/tsconfig.json | 31 + packages/mc-wc-ui-components/.editorconfig | 15 + packages/mc-wc-ui-components/.gitignore | 27 + packages/mc-wc-ui-components/LICENSE | 21 + packages/mc-wc-ui-components/package.json | 38 + packages/mc-wc-ui-components/readme.md | 72 + .../mc-wc-ui-components/src/components.d.ts | 869 ++++ .../src/components/button/mwc-button-style.ts | 217 + .../src/components/button/mwc-button-types.ts | 7 + .../src/components/button/mwc-button.tsx | 134 + .../src/components/button/readme.md | 36 + .../src/components/card/mwc-card-actions.scss | 1 + .../src/components/card/mwc-card-actions.tsx | 16 + .../components/card/mwc-card-content-style.ts | 30 + .../src/components/card/mwc-card-content.tsx | 27 + .../src/components/card/mwc-card-header.scss | 1 + .../src/components/card/mwc-card-header.tsx | 46 + .../components/card/mwc-card-media-style.ts | 31 + .../src/components/card/mwc-card-media.scss | 1 + .../src/components/card/mwc-card-media.tsx | 44 + .../src/components/card/mwc-card.scss | 1 + .../src/components/card/mwc-card.tsx | 46 + .../src/components/card/readme.md | 18 + .../src/components/checkbox/mwc-checkbox.scss | 2 + .../src/components/checkbox/mwc-checkbox.tsx | 107 + .../src/components/checkbox/readme.md | 32 + .../components/container/mwc-container.tsx | 55 + .../src/components/container/readme.md | 24 + .../components/dialog/mwc-dialog-body.scss | 1 + .../src/components/dialog/mwc-dialog-body.tsx | 16 + .../components/dialog/mwc-dialog-footer.scss | 1 + .../components/dialog/mwc-dialog-footer.tsx | 31 + .../components/dialog/mwc-dialog-header.scss | 1 + .../components/dialog/mwc-dialog-header.tsx | 19 + .../src/components/dialog/mwc-dialog.scss | 1 + .../src/components/dialog/mwc-dialog.tsx | 66 + .../src/components/dialog/readme.md | 10 + .../src/components/drawer/mwc-drawer.scss | 8 + .../src/components/drawer/mwc-drawer.tsx | 115 + .../src/components/drawer/readme.md | 50 + .../src/components/fab/mwc-fab.scss | 1 + .../src/components/fab/mwc-fab.tsx | 59 + .../src/components/fab/readme.md | 21 + .../grid-list/mwc-grid-list-tile.scss | 1 + .../grid-list/mwc-grid-list-tile.tsx | 37 + .../components/grid-list/mwc-grid-list.scss | 1 + .../components/grid-list/mwc-grid-list.tsx | 49 + .../src/components/grid-list/readme.md | 17 + .../icon-toggle/mwc-icon-toggle.scss | 1 + .../icon-toggle/mwc-icon-toggle.tsx | 98 + .../src/components/icon-toggle/readme.md | 31 + .../src/components/list/mwc-list-item.scss | 18 + .../src/components/list/mwc-list-item.tsx | 51 + .../src/components/list/mwc-list-style.ts | 42 + .../src/components/list/mwc-list.scss | 13 + .../src/components/list/mwc-list.tsx | 35 + .../src/components/list/readme.md | 18 + .../src/components/menu/mwc-menu-item.scss | 1 + .../src/components/menu/mwc-menu-item.tsx | 22 + .../src/components/menu/mwc-menu.scss | 6 + .../src/components/menu/mwc-menu.tsx | 57 + .../src/components/menu/readme.md | 18 + .../components/my-component/my-component.css | 3 + .../my-component/my-component.e2e.ts | 32 + .../my-component/my-component.spec.ts | 36 + .../components/my-component/my-component.tsx | 32 + .../src/components/my-component/readme.md | 19 + .../src/components/paper/mwc-paper-style.ts | 38 + .../src/components/paper/mwc-paper.tsx | 40 + .../src/components/paper/readme.md | 33 + .../src/components/progress/mwc-progress.scss | 1 + .../src/components/progress/mwc-progress.tsx | 102 + .../src/components/progress/readme.md | 46 + .../src/components/radio/mwc-radio.scss | 1 + .../src/components/radio/mwc-radio.tsx | 96 + .../src/components/radio/readme.md | 22 + .../src/components/select/mwc-select.scss | 8 + .../src/components/select/mwc-select.tsx | 120 + .../src/components/select/readme.md | 22 + .../src/components/slider/mwc-slider.scss | 1 + .../src/components/slider/mwc-slider.tsx | 102 + .../src/components/slider/readme.md | 54 + .../src/components/snackbar/mwc-snackbar.scss | 1 + .../src/components/snackbar/mwc-snackbar.tsx | 100 + .../src/components/snackbar/readme.md | 46 + .../src/components/styles/breakpoints.d.ts | 20 + .../components/styles/color-manipulator.ts | 204 + .../components/styles/create-breakpoints.ts | 75 + .../src/components/styles/create-mixins.ts | 35 + .../src/components/styles/create-palette.ts | 127 + .../src/components/styles/create-shadows.ts | 43 + .../src/components/styles/create-spacing.ts | 7 + .../src/components/styles/create-theme.ts | 50 + .../components/styles/create-transitions.ts | 74 + .../components/styles/create-typography.ts | 124 + .../src/components/styles/create-zindex.ts | 13 + .../src/components/styles/cssproperties.d.ts | 1631 +++++++ .../src/components/styles/mixins.d.ts | 19 + .../src/components/styles/setup-jss.ts | 22 + .../src/components/styles/shadows.d.ts | 29 + .../src/components/styles/spacing.d.ts | 9 + .../src/components/styles/theme.d.ts | 34 + .../src/components/styles/transition.d.ts | 45 + .../components/styles/types/colors/amber.ts | 20 + .../components/styles/types/colors/blue.ts | 20 + .../styles/types/colors/blueGrey.ts | 20 + .../components/styles/types/colors/brown.ts | 20 + .../components/styles/types/colors/color.ts | 16 + .../components/styles/types/colors/common.ts | 30 + .../components/styles/types/colors/cyan.ts | 19 + .../styles/types/colors/deepOrange.ts | 19 + .../styles/types/colors/deepPurple.ts | 19 + .../components/styles/types/colors/green.ts | 19 + .../components/styles/types/colors/grey.ts | 19 + .../components/styles/types/colors/index.ts | 20 + .../components/styles/types/colors/indigo.ts | 19 + .../styles/types/colors/lightBlue.ts | 19 + .../styles/types/colors/lightGreen.ts | 19 + .../components/styles/types/colors/lime.ts | 19 + .../components/styles/types/colors/orange.ts | 19 + .../components/styles/types/colors/pink.ts | 19 + .../components/styles/types/colors/purple.ts | 19 + .../src/components/styles/types/colors/red.ts | 19 + .../components/styles/types/colors/teal.ts | 19 + .../components/styles/types/colors/yellow.ts | 19 + .../src/components/styles/types/palette.d.ts | 100 + .../src/components/styles/typography.d.ts | 53 + .../src/components/styles/zindex.d.ts | 12 + .../src/components/switch/mwc-switch.scss | 15 + .../src/components/switch/mwc-switch.tsx | 65 + .../src/components/switch/readme.md | 28 + .../src/components/tabbar/mwc-tabbar.scss | 1 + .../src/components/tabbar/mwc-tabbar.tsx | 132 + .../src/components/tabbar/readme.md | 26 + .../components/textfield/mwc-textfield.scss | 1 + .../components/textfield/mwc-textfield.tsx | 159 + .../src/components/textfield/readme.md | 39 + .../src/components/theme/mwc-theme.scss | 9 + .../src/components/theme/mwc-theme.style.ts | 11 + .../src/components/theme/mwc-theme.tsx | 56 + .../src/components/theme/readme.md | 19 + .../toolbar/mwc-content-for-toolbar.tsx | 25 + .../components/toolbar/mwc-toolbar-icon.scss | 3 + .../components/toolbar/mwc-toolbar-icon.tsx | 26 + .../toolbar/mwc-toolbar-section.tsx | 31 + .../components/toolbar/mwc-toolbar-title.tsx | 20 + .../src/components/toolbar/mwc-toolbar.scss | 1 + .../src/components/toolbar/mwc-toolbar.tsx | 37 + .../src/components/toolbar/readme.md | 10 + .../typography/mwc-typography.style.ts | 54 + .../components/typography/mwc-typography.tsx | 59 + .../typography/mwc-typograpy-types.ts | 3 + .../src/components/typography/readme.md | 23 + .../src/components/util/mwc-util.ts | 15 + .../src/components/util/ripple.ts | 159 + .../src/components/util/theme.ts | 357 ++ .../src/components/util/theme_dark.ts | 245 + .../src/components/viewport/mwc-viewport.tsx | 28 + .../src/components/viewport/readme.md | 17 + packages/mc-wc-ui-components/src/index.html | 87 + packages/mc-wc-ui-components/src/index.ts | 1 + .../src/utils/utils.spec.ts | 21 + .../mc-wc-ui-components/src/utils/utils.ts | 8 + .../mc-wc-ui-components/stencil.config.ts | 40 + packages/mc-wc-ui-components/tsconfig.json | 26 + yarn.lock | 4098 ++++++++++++++++- 246 files changed, 13735 insertions(+), 110 deletions(-) create mode 100644 demoapp/.gitignore create mode 100644 demoapp/README.md create mode 100644 demoapp/images.d.ts create mode 100644 demoapp/package.json create mode 100644 demoapp/public/favicon.ico create mode 100644 demoapp/public/index.html create mode 100644 demoapp/public/manifest.json create mode 100644 demoapp/src/app.tsx create mode 100644 demoapp/src/features/home/home-page.tsx create mode 100644 demoapp/src/index.css create mode 100644 demoapp/src/index.tsx rename {mc-react-components => demoapp}/src/react-app-env.d.ts (100%) create mode 100644 demoapp/tsconfig.base.json create mode 100644 demoapp/tsconfig.json create mode 100644 demoapp/tsconfig.test.json create mode 100644 demoapp/tslint.json create mode 100644 lerna.json rename {mc-react-components => packages/mc-react-components}/.gitignore (100%) rename {mc-react-components => packages/mc-react-components}/README.md (100%) rename {mc-react-components => packages/mc-react-components}/package.json (97%) rename {mc-react-components => packages/mc-react-components}/public/favicon.ico (100%) rename {mc-react-components => packages/mc-react-components}/public/index.html (100%) rename {mc-react-components => packages/mc-react-components}/public/logo192.png (100%) rename {mc-react-components => packages/mc-react-components}/public/logo512.png (100%) rename {mc-react-components => packages/mc-react-components}/public/manifest.json (100%) rename {mc-react-components => packages/mc-react-components}/public/robots.txt (100%) rename {mc-react-components => packages/mc-react-components}/src/index.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/date-range-picker/date-range-picker.spec.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/date-range-picker/date-range-picker.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/date-range-picker/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/map-filter-container/container-map.css (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/map-filter-container/container-map.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/map-filter-container/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/map-filter-container/map-filter-container.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/map-filter-container/polygon-selection-ui.spec.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/map-filter-container/polygon-selection-ui.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/models/enums.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/models/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/feature.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/interactions/draw.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/interactions/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/layers/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/layers/tile-layer.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/layers/vector-layer.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/map.css (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/map.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/source/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/source/osm.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/ol-map/source/vector-source.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/__mocks__/smartTableMocks.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/index.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/smart-table-head.spec.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/smart-table-head.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/smart-table-row.spec.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/smart-table-row.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/smart-table-types.ts (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/smart-table.spec.tsx (100%) rename {mc-react-components => packages/mc-react-components}/src/lib/smart-table/smart-table.tsx (100%) create mode 100644 packages/mc-react-components/src/react-app-env.d.ts rename {mc-react-components => packages/mc-react-components}/src/setupTests.ts (100%) rename {mc-react-components => packages/mc-react-components}/tsbuildconfig.json (100%) rename {mc-react-components => packages/mc-react-components}/tsconfig.json (100%) rename {mc-react-components => packages/mc-react-components}/yarn.lock (100%) create mode 100644 packages/mc-wc-ui-components-react/.gitignore create mode 100644 packages/mc-wc-ui-components-react/LICENSE create mode 100644 packages/mc-wc-ui-components-react/README.md create mode 100644 packages/mc-wc-ui-components-react/package.json create mode 100644 packages/mc-wc-ui-components-react/src/components.ts create mode 100644 packages/mc-wc-ui-components-react/src/index.ts create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/createComponent.tsx create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/index.ts create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/interfaces.ts create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/utils/attachProps.ts create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/utils/case.ts create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/utils/dev.ts create mode 100644 packages/mc-wc-ui-components-react/src/react-component-lib/utils/index.tsx create mode 100644 packages/mc-wc-ui-components-react/tsconfig.json create mode 100644 packages/mc-wc-ui-components/.editorconfig create mode 100644 packages/mc-wc-ui-components/.gitignore create mode 100644 packages/mc-wc-ui-components/LICENSE create mode 100644 packages/mc-wc-ui-components/package.json create mode 100644 packages/mc-wc-ui-components/readme.md create mode 100644 packages/mc-wc-ui-components/src/components.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/button/mwc-button-style.ts create mode 100644 packages/mc-wc-ui-components/src/components/button/mwc-button-types.ts create mode 100644 packages/mc-wc-ui-components/src/components/button/mwc-button.tsx create mode 100644 packages/mc-wc-ui-components/src/components/button/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-actions.scss create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-actions.tsx create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-content-style.ts create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-content.tsx create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-header.scss create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-header.tsx create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-media-style.ts create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-media.scss create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card-media.tsx create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card.scss create mode 100644 packages/mc-wc-ui-components/src/components/card/mwc-card.tsx create mode 100644 packages/mc-wc-ui-components/src/components/card/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.scss create mode 100644 packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.tsx create mode 100644 packages/mc-wc-ui-components/src/components/checkbox/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/container/mwc-container.tsx create mode 100644 packages/mc-wc-ui-components/src/components/container/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.scss create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.tsx create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.scss create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.scss create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.tsx create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.scss create mode 100644 packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.tsx create mode 100644 packages/mc-wc-ui-components/src/components/dialog/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.scss create mode 100644 packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.tsx create mode 100644 packages/mc-wc-ui-components/src/components/drawer/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/fab/mwc-fab.scss create mode 100644 packages/mc-wc-ui-components/src/components/fab/mwc-fab.tsx create mode 100644 packages/mc-wc-ui-components/src/components/fab/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss create mode 100644 packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx create mode 100644 packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.scss create mode 100644 packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.tsx create mode 100644 packages/mc-wc-ui-components/src/components/grid-list/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss create mode 100644 packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx create mode 100644 packages/mc-wc-ui-components/src/components/icon-toggle/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/list/mwc-list-item.scss create mode 100644 packages/mc-wc-ui-components/src/components/list/mwc-list-item.tsx create mode 100644 packages/mc-wc-ui-components/src/components/list/mwc-list-style.ts create mode 100644 packages/mc-wc-ui-components/src/components/list/mwc-list.scss create mode 100644 packages/mc-wc-ui-components/src/components/list/mwc-list.tsx create mode 100644 packages/mc-wc-ui-components/src/components/list/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.scss create mode 100644 packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.tsx create mode 100644 packages/mc-wc-ui-components/src/components/menu/mwc-menu.scss create mode 100644 packages/mc-wc-ui-components/src/components/menu/mwc-menu.tsx create mode 100644 packages/mc-wc-ui-components/src/components/menu/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/my-component/my-component.css create mode 100644 packages/mc-wc-ui-components/src/components/my-component/my-component.e2e.ts create mode 100644 packages/mc-wc-ui-components/src/components/my-component/my-component.spec.ts create mode 100644 packages/mc-wc-ui-components/src/components/my-component/my-component.tsx create mode 100644 packages/mc-wc-ui-components/src/components/my-component/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/paper/mwc-paper-style.ts create mode 100644 packages/mc-wc-ui-components/src/components/paper/mwc-paper.tsx create mode 100644 packages/mc-wc-ui-components/src/components/paper/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/progress/mwc-progress.scss create mode 100644 packages/mc-wc-ui-components/src/components/progress/mwc-progress.tsx create mode 100644 packages/mc-wc-ui-components/src/components/progress/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/radio/mwc-radio.scss create mode 100644 packages/mc-wc-ui-components/src/components/radio/mwc-radio.tsx create mode 100644 packages/mc-wc-ui-components/src/components/radio/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/select/mwc-select.scss create mode 100644 packages/mc-wc-ui-components/src/components/select/mwc-select.tsx create mode 100644 packages/mc-wc-ui-components/src/components/select/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/slider/mwc-slider.scss create mode 100644 packages/mc-wc-ui-components/src/components/slider/mwc-slider.tsx create mode 100644 packages/mc-wc-ui-components/src/components/slider/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.scss create mode 100644 packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.tsx create mode 100644 packages/mc-wc-ui-components/src/components/snackbar/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/styles/breakpoints.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/color-manipulator.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-breakpoints.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-mixins.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-palette.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-shadows.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-spacing.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-theme.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-transitions.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-typography.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/create-zindex.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/cssproperties.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/mixins.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/setup-jss.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/shadows.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/spacing.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/theme.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/transition.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/amber.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/blue.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/blueGrey.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/brown.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/color.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/common.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/cyan.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/deepOrange.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/deepPurple.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/green.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/grey.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/index.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/indigo.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/lightBlue.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/lightGreen.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/lime.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/orange.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/pink.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/purple.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/red.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/teal.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/colors/yellow.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/types/palette.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/typography.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/styles/zindex.d.ts create mode 100644 packages/mc-wc-ui-components/src/components/switch/mwc-switch.scss create mode 100644 packages/mc-wc-ui-components/src/components/switch/mwc-switch.tsx create mode 100644 packages/mc-wc-ui-components/src/components/switch/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.scss create mode 100644 packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.tsx create mode 100644 packages/mc-wc-ui-components/src/components/tabbar/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.scss create mode 100644 packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.tsx create mode 100644 packages/mc-wc-ui-components/src/components/textfield/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/theme/mwc-theme.scss create mode 100644 packages/mc-wc-ui-components/src/components/theme/mwc-theme.style.ts create mode 100644 packages/mc-wc-ui-components/src/components/theme/mwc-theme.tsx create mode 100644 packages/mc-wc-ui-components/src/components/theme/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.scss create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.tsx create mode 100644 packages/mc-wc-ui-components/src/components/toolbar/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/typography/mwc-typography.style.ts create mode 100644 packages/mc-wc-ui-components/src/components/typography/mwc-typography.tsx create mode 100644 packages/mc-wc-ui-components/src/components/typography/mwc-typograpy-types.ts create mode 100644 packages/mc-wc-ui-components/src/components/typography/readme.md create mode 100644 packages/mc-wc-ui-components/src/components/util/mwc-util.ts create mode 100644 packages/mc-wc-ui-components/src/components/util/ripple.ts create mode 100644 packages/mc-wc-ui-components/src/components/util/theme.ts create mode 100644 packages/mc-wc-ui-components/src/components/util/theme_dark.ts create mode 100644 packages/mc-wc-ui-components/src/components/viewport/mwc-viewport.tsx create mode 100644 packages/mc-wc-ui-components/src/components/viewport/readme.md create mode 100644 packages/mc-wc-ui-components/src/index.html create mode 100644 packages/mc-wc-ui-components/src/index.ts create mode 100644 packages/mc-wc-ui-components/src/utils/utils.spec.ts create mode 100644 packages/mc-wc-ui-components/src/utils/utils.ts create mode 100644 packages/mc-wc-ui-components/stencil.config.ts create mode 100644 packages/mc-wc-ui-components/tsconfig.json diff --git a/demoapp/.gitignore b/demoapp/.gitignore new file mode 100644 index 00000000..d30f40ef --- /dev/null +++ b/demoapp/.gitignore @@ -0,0 +1,21 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +/node_modules + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/demoapp/README.md b/demoapp/README.md new file mode 100644 index 00000000..253a0821 --- /dev/null +++ b/demoapp/README.md @@ -0,0 +1,10 @@ +App Using Shared Component Library +================================== + +Getting Started +--------------- +```bash +$ yarn start +``` + +Now point your browser to http://localhost:3000/. diff --git a/demoapp/images.d.ts b/demoapp/images.d.ts new file mode 100644 index 00000000..397cc9b3 --- /dev/null +++ b/demoapp/images.d.ts @@ -0,0 +1,3 @@ +declare module '*.svg' +declare module '*.png' +declare module '*.jpg' diff --git a/demoapp/package.json b/demoapp/package.json new file mode 100644 index 00000000..28cbda3e --- /dev/null +++ b/demoapp/package.json @@ -0,0 +1,35 @@ +{ + "name": "demoapp", + "version": "0.1.0", + "private": true, + "scripts": { + "start": "react-scripts start" + }, + "dependencies": { + "react": "^16.13.1", + "react-dom": "^16.13.1", + "@map-colonies/react-components": "^0.1.0", + "@map-colonies/ui-components": "^0.0.1", + "@map-colonies/ui-components-react": "^0.0.1" + }, + "devDependencies": { + "@types/jest": "^24.0.0", + "@types/node": "^12.0.0", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "react-scripts": "3.4.1", + "typescript": "~3.7.2" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/demoapp/public/favicon.ico b/demoapp/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..59a2cc01834a10573f80451786d458603ef40d94 GIT binary patch literal 26694 zcmeHv2V50L_x3@+f}$YyiV}^{Xe>dE4P!-&qR}YEt}&WKlh{j4EHTlj#NIFw6_94f zh*&5JTzZuYs0b(`MVh@t&i^?JR}s+|C3(N^eHnk_Wp`(1&YYRudCob{ERhyfBm)Cd zey8aY{Y+GNY)sR1h_Z36PMw150p*EC=xL6PX;menMutSj#s$}%DiZChr#UtzC)7LG zgs5%X!s}Iu?sm`|<9aiqUA>4}NSny0Mv((Q)Kg3Te?BoYY3+-nuX32Ioc*auEYrK| zJ!nI8I++J%(MDV+zkAflHH`XRWir_0LvtguXmr#~GWSTNQK^r};BXQd?g=My&!i5? zOz+#Cr3uHvs8;AB`uOZMS{a{56+-jr^VmD2=X;B)JH^n@RHlym0;zU%K9vuAK;zRM z(Fdr1L^_j6)MHu{okhC7x2b`esdr#DSwjw8$5_%1$)~B=Oq~;%s-RsR{|990eU0ek z4KlsVR2OZM>H!%zo~N2oDCZbR>(G~9Aj2rgY`8Cm3^)5wImbBC*%wO&yTi$FZvO8|`Lqy<2!(tKB>ASLyejZqvR6CqC3`-MRnZCiOdh zSa57qqoHYY%Q`JO;I$>`gX$HlHTbAo%eKbKAyK)yZ+ER%wSBq5L+UfophA}cX0U!FaDT))>b7pN(8%^T{!3$xG|7i|wQ9 z6rYcEhOve))&j=b#aK5O>j#&2j?bsPm-@W04x7-USTh*w3S+%stZ9t*J!3s#tbL5N zh-qiou@~OI`}}pRhm3WIvA!_Y3C4QBSjQM^9AoWak}@w!dt&A z&T;fv^i8U|;Vf15NT+ruuTl$_NW$|(?Gl*E0sFme>rX9DUZbh0_oyM{6RbvO@6g9F z_h>{WQXA(SBks_$yG+`S@uY7X zK?|a@fs^mj=nSR-DNN1dq4%&Hs~FQ^BqJ;m{p0ES<<8I-Ns?==Tte zNBfIRKSDp%a9j~Otc$k#qpsoT8y&tvRh{BV#|C=b6GLO{&k*fTB(0Fgq!svxbWpz5 zdC2J;NuQodpthHos{V8wavuVmmqh3|IR%-w3S$ex=&!J=LX*d3G;WHNuhIN`dvDH^2 zDu3~=7_pkvX8x#k>$`u`e^Pzj8s^_=&H^#E==^E#AJ-53cJk8Cr>%W@esGHk-+yV@ zt=pWwOZ27tiH8LCBy2E?FK0QBV<@>`w zo7#MJySJKjDL3TldHU#Ui;wl+nK`~e`9U8QIZZUSX0v`3t?I7oGxnL&M6)^$Xt>;X z(Sl;9iGDF{+jdzINc&uYf9Hg(9na-uIER1vw1oa7GrCWWOU!aj$|$Afo)YR3y!><> zGgdk^0X~niRHlJvG_WJYfYx{~pjD^+XgL?2`x3MpZi2 za|Xs?UnC`YcOyW14}S43Io$Ab_{S8OIg|%UHz5&u`_fb zFa`tPFt7jv3n+FGa0vrDF)$4S^D*!w0~a!|6q8NZv#;)#HTGM$AMhUo!!hs^1D`Q4 ziqa0S7z6t-FcSmAFz^xsD>3~R?*FnXpSiXx@`lt84937j42%Vvj2ReF$-q(!EXcq~ z1vZ-0FZaA^+8ccX_?Lm#7;6VoN zX5e)OerMooh7G|a_q=L4lWPFmF&$Wzfv*`DnqgZo@IC|6GVn3OUSQZF49qQdW;z|Y z_4l6T)A!BE>C!{kBn-QPf$JGI4Fi`m>=FjPWng}mGIZwQfL9g$nQ}g8!zCddHV4C2 zVAwYdJk79e7`U6sIWdFIy=L8-hD28`mlq)WqOBW+*^gWk@C@Gkdpgn7S@!#1qk)pJ z6PGd$GlsT$B1^nV($W|BEkzdbC(Oa?a-fYnwZfx&?CMSW;#@Kr{_IYsZt+9`59!yq zEX9UxVjDoc0&{31UWJYPb7-deCJj0eNZOn5s&daDBiOVfqHj?{_hd442&O$3v#Fg= zCiO^!y}CP$np(TlMA+LV`_GdV{1!_hGs)03o>ts>OjEAhBGa%tG(i2347d8yv{2a3 zzeSLlcPd%f`%t?xiDZmNRPT=z(uIvqUbm=a@Ew{Pl1_s{^Js$lF4fr^Nv)1vq7J|N zQI9_oh>lz#y;C=6FqVC>$xUH5j}FNqE4*UG7Vj2ypSE7ep~;cCwD=B_IhH+RhbXG; zn@3f`^QrT>4C)jZcJa9g4R1U#9X-7ie)z4%I`Sd*YSa46oD~w;hW-wQPh@Psby^X1gRHT9PsZ{+T78GGh7g^*OLQuWx}t5d>w6={ z_K~A69Zt@pCLUL)sb3y-Id+k%ZG?};EtNinFJ{Sorlq(4B=`bpY93QX_#hlEWs^<_ zEAhJyhhyn|uVm`&lS<+X8i_tzKnGeuk4Z0z;ge8PefV%bLtO^YWj)^<(uUma?SrV} z5j8EuGPef4pbE!QXdIS0@jVPfOs^q+Tfmpl8NLKF#O;=#|8({iRmB*Z><*%Vt^xEp zbZLw-78sLnARGDLr#gtk8Eo?>1E)9|Xy-*u>_X`)-z(JGErEVOTVxYT^m`PMeH>YA zcc-tg)QiuE{(!61;|7gLW5vf~;u1|`WA4yfcwP5}Z>TkVD&4SDif?6j^lcibet`LW zk;=&!d0_r{<&gz+SqEeE4(7JOrgKEW`K0T7k+i}PBdkDF*;48XCBQXanV~&l-yfu(9!8i=S91vesJ+#vc^PmBK z#c$IZ?UkiB(11?EiWM8~dr<|QjNTpet;t&p{4hI8NM~w)I&0;)YTtbF^%v7ixcv5y zpDkLwqt9OLW&4L2{PtXdI=^gl`+RMqZjQ^$`euZ;`Kfq;^Y5+sHREuVB-gdqj_RiW z@J_MoyFR#>eEoFy`e|ul>oQwkb-&c=*#etS*jzCG_)uiTlq18fm(NYOtpDuwxEgH( zzn`6wnjU(pX7X9RjV=MtUT-kN#bZ)}=U{K|!Ja;WiIbfhJbV2k%Nbq1Y-aJt=+VtT zY}Y@?*~#|V>r=~(7*MrCt%L7hnQ(0T`g$u=C!f7eu|pPi?Xfl3Fn(0;?-sZ8awvA0 zexBKJOpAFNdPWZ&INo@VdVcZiw8a0bkz*_O@?F)Wedme4KX(}q*hJF`bIMPvySraZ z(-JNdMIE=d+PT!u{`d>s5!DZD+SGVUi8ueZp2XV!;&i_;b5aFnZ*AtKT7nXkj5pbm zlCtKyQdaJfd!>$-B=Hv+BlkqsQvL!?De4o%`La}|fieyJf2M&g!5!es+dw~`3Z)-C zQk5)!|KhcYc7&S#W4$?Wr9N$sIHt2DARo2@1FJJIGQ+lD*cJ>t%(`0x@@aeIak9PC zuvF!6z49LXj@M!LFz`MDlQS?h1M4$vB?ew+*ai&j&cO6c8&v5e_moC*%&bRS0ahJD1aO&B(c;)jKu z#IR2p_8Y_AW7vuClRjkFBGP`?Yq!5UDg$;u!xo2c_8!B&WZ0q%TSoEEik@LJG3+mf zZ$Qxz>@9{*0e)88;{iU5E$VpPv^zQjHgQ2cUNAP#!I+eONgL2FY&<2)-^w}h;X+Q> zUksa@VPAsJgF0R}*{Or!3t*7}eg=lE&hTL{dJ5X!zaS9FB!fDhJDPi$r*M#!zaVA_r*`k zWUt=%y4|OvH#(sGeE32bz6OS$h2dXe_y8C-Gs8c`uz?wV5QdM1;fG-OAs9X#h7Ars z^o4vndcDJIw=Xxkr5}bLgyHvL_*fWzBZcn---P0uhHcL9(=dEE48IG*@5JysfJX%< zf?LLmxnQpbk-k@ zo<^AIqNDJ|lb?Pj#gkQdqjUV+6LOcaNRu7%>UNQ@VSlJc*~sUKf40D~0ito76n;Hq8o2Bg^ocG!gNM zTG%_&?C>S(yyXOSJ9(Mt&=oQ|h3kH4^d(FPQ!Hg;LbK>o__9~1bEtdVJ=$?0nDU7F_&VCY4=>wQE#mSQnCgzaI zA4$|qRWzP*O^K&0dr%Nh(Ly}sbHpAhA~s+TKBx|S_wylZn?rF*Jf*M1Q((4y5}ZW? z{L)Daetn6j)ZHIL4eY{c3dTY>sm0?d3lLjc9dm;!xFMc`cu+0Gv4#P93ddFADIWkr zb`Q!ejHldI;weoE<0(_4a;XX84CWYYwC7v=pAVrC%EJ0h~ zZXk{UZmmN>JY_n@iVh|f#8a@BN{OccHaBrbJmvgtGAWFwv;idRnuvG`VjIKG-$gtH zv8fluQy`PXQ?w92DeroT%3+zOAc?2oe#BEY$KD{_t$_vc6sL=1_7YWbF^DDp0Z36PuX1KgH zB%aa{x^9E#vMiNpptuHfIyFS<^nz%4vC>oZjf|F7>fEwYKO-aksl_fnf2eP?Wcw#8 zO~zFl_l@=+jg5+hX^NMxZq(qzq(+V_zd`xE+Ot+$G%%`OyiAef>PEGP^#!>w!DSe2;OeyYKR|_JL-12b*j0y zs>BBDChK`7*R&p<+5KqR;l6$QeqMi_TjZgSm(TrvvQ<&B3;&*KKgq^tu6a%CL%MDm z>y92>m(l&mudT1A%)X!(Xus?E8|pZCY_$0vH-xqx9+^31$`RejL)NF3&;DL-(#CSa zh%J`%Rg*m?;fCat)X>(g4;?zx+WLCU<+DBY0ylbCZZ1|BhdV7@Cbxx1XJ?x)uel~Q zHMM5S^4W8J5>R}y<<95Jo2r~^O!n9qnBX&b?(F1b^W@pH=X(0sOiJ{aT%)A&wyI0Y z4U=s2lFiMRFJGQKSI;JJW829tHJnwp&(~ka!3j6?M^LaiqJonCuxQq<|6~{E86P;5 z(BG*uEuDU;H(-6$?H!ICn=oO*v17-!Z(qN@UhPXCSjLt#z%$FKY7ZEI;`px ztz#XwuOCpajiqYl^WqRSj&-Qra^d3ddi35pDmXZP)YjfTzU#WUWy_{2hovQzuRe3; zkcEr8_87l)pyAM=Lk$f_ZN&`>TMmhxS@JV>z#*owvGMp81LqBm?in3Dbl$-6V~o3Y zoak_%r0Q{Q$jo;tRcO(E#uy0~F?KdYA&C#v98&dSKtc-6G><)`^p z=x1bA&a1+Uq$xOmK&7@aGBOGX@G~;9QmY!jyfm&>_`=dMHpbpQ#=+9^i@&J6u(IlP z8izD(T<698{L4nm3jDvKfdV^C0>zTvZ{;>iKjocQ;l(iczQGC zr|iEn4U}o1Oao;aDAPch2A*m_i?#*5N7ml+X^rOrT6rpjem)&vkny*iTkE}uwuZIC zEm}`+`w#!M?t%{e7C8ZO#n5W6d|K++d@0cU0@ zj^}{CGAK5W8y$e78u#GdXzbtX`XA|o)0MAjqyGav+X#lAn@8SYo*>^R0l#Gd`mh}P z0M|k8&FI4~ko^b9F8c!EPv&tb*Zbl<)<L7=tdH-r3oKu$4Ce`EG$CJ4S_WGG4 z3r9zILbAVbKIB{up3qwGm81`=FdpCEX8u;VJLu;qaA*dDPtynY)N=>l1$B|s`EMlG z)akS};4$J3+%^$=ERp+w-y`3L84Z5V=ioJop1*^<(g)d(2_Lx9ry1BkISD+ZPq4>v zAo^?uK2AsEI;XLrU`ya*aIpT_aX6S^N?U{P>A78D`0%+EGGZp&6MP_%N4QBEp46;7 z$c#SB$6T6={s@0d`X+t+7=4xR*uXc>?ZD-Mznt}tfjhK4_yHZv=<<&YgY~WQv@;}H z3;W^>!Ql}u4`MP3$4lhs4|x#7;!%)K`XI6*CZv3?N9Gh_Av^~2YdCZdKfJ<&lD(k9 zziJA8QY|&J_Fe=)c7{cfv{l;4DRCU_2+r36-=|6h+5`VczU8AC1H{m{KR9912N?&^ zGh#E!UfZ#dTl$3$5hG$fv{eJ`%AQ@(q4YtXg>I1T zL&zxeTlj%8CekOw?O4XB3-sOrvJ0Qh1hNtd>~~@NXJqegI!Vc z5kCW;48b&i@WrqnSR0%<(V2V~O8U?Y;~;Zco=2J2h~X)E7F~F}918n@age#B;TTFk8biLO=nLYQN*0;rSjI_oF8!^FcR&U3BV{fs{6k;p-3I|? z*;no&oUG{A=iwFa`0nUrrA`k7drxEIq1VmAxr9DoE+Iy$d{0cqLUbzf$@>Yh$|qUo zne3$(xhsVgayEm&UsNIBt&#lT^6}$&-<(1w(1v}i=>OHfSMgWl}ewYgiu}9KXV*-s#-cH-mczfWsP`!$ZUJcx2>F9u2PT_?X)az6?()%oD)91+Rif z;o9(sn{0`){c(?(DhoW_Om2_541o!i=T_n1;@gP3VoR5scr-0k(F?}5{*grP?sbj( zoJ-?@stg_;l!b3ZWb=fGT%Ho0$6uTWM;G6Tkncr+W5Ls7Zt+x{`z$Jt$D+)L&>XhJ zJ^lSNxyRWw{=oAZ*F2n9z#o>mvnRH6@q>)dk&MyG7=YWW>lnv5a&vpLTKaD>P z%H&D--ozIX+5ByE4udzv3)FeM0Jh?M{LV$53EOgdR1Qx;nQTI@-%i(q4I?L~xSbQ5K zCYyf%4|-mBCQlDe=g(BBJkIYLcRh~hRq&3~>6Gw*&fNNE>=%tbPT!pZe)eOmFHAea z7+fx%g>Q*03{B&u;AH=DK9e_qpDo`T*$%$;4&=>o=#TmagI~srBhq5^zg`cQ;9c=pX?JT7SKA%I6Md3+-T4gO9Gl5D@mahZd~f?p zIc%4Z&A;Jz3;OhHbSAHgOy@8CuX6o;ka-)(S&Hna%lpyNe^ln;m3!ZxLI)D>D(}=C zA@CstaP7SjJRIL&SpyjlCFSs`l$(6wN*?dOj4_DG;Bj7w+;kttZF8W)Cs*#>pLmaa z?w7O^yLgMGf9&~Co`(oz>>I+nL;A7758stS-lSrK-$EEXH|#TmymDT$l##M>k84si zc|9uK_x#`OrMxTLvqsa2oDi(dkO|MD1LTwEL!L{?^0&O#oq@{^B!jb`6-p;=j-zvV zrEjPIUHOZaKatmpT$ATOuTGd-Vc_~Fqff~A`#^#-_5jSso`lv#Zz=n`Oao;aDAPch p2Ff(>zo-FLl5mkEy~(eJzog+a74n-jd?yY6sW>kx>3^H2^?y%?%rO7} literal 0 HcmV?d00001 diff --git a/demoapp/public/index.html b/demoapp/public/index.html new file mode 100644 index 00000000..257df4a0 --- /dev/null +++ b/demoapp/public/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + + React Template + + + +
+ + + diff --git a/demoapp/public/manifest.json b/demoapp/public/manifest.json new file mode 100644 index 00000000..dfd12cec --- /dev/null +++ b/demoapp/public/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "React Template", + "name": "React Template", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + } + ], + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/demoapp/src/app.tsx b/demoapp/src/app.tsx new file mode 100644 index 00000000..472629ac --- /dev/null +++ b/demoapp/src/app.tsx @@ -0,0 +1,19 @@ +import * as React from 'react'; + +import { DateTimeRangePicker } from '@map-colonies/react-components'; +import { MwcButton } from '@map-colonies/ui-components-react/dist'; + +import { HomePage } from './features/home/home-page'; + +export class App extends React.Component<{}, {}> { + public render() { + return ( +
+ + {console.log(e)}} /> + + KUKU +
+ ); + } +} diff --git a/demoapp/src/features/home/home-page.tsx b/demoapp/src/features/home/home-page.tsx new file mode 100644 index 00000000..d7841b46 --- /dev/null +++ b/demoapp/src/features/home/home-page.tsx @@ -0,0 +1,13 @@ +import * as React from 'react'; + +export class HomePage extends React.Component<{}, {}> { + public render() { + const styles = { + content: { + padding: 8 + } + }; + + return
Home Page
; + } +} diff --git a/demoapp/src/index.css b/demoapp/src/index.css new file mode 100644 index 00000000..6f665655 --- /dev/null +++ b/demoapp/src/index.css @@ -0,0 +1,23 @@ +html, body { + border: 0; + margin: 0; + padding: 0; +} + +html { + box-sizing: border-box; +} +*, *:before, *:after { + box-sizing: inherit; +} + +body { + font-family: Arial, Verdana, Helvetica, sans-serif; + font-size: 16px; + color: rgba(0, 0, 0, 0.87); + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + -webkit-overflow-scrolling: touch; +} diff --git a/demoapp/src/index.tsx b/demoapp/src/index.tsx new file mode 100644 index 00000000..00c919c7 --- /dev/null +++ b/demoapp/src/index.tsx @@ -0,0 +1,13 @@ +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; + +import { App } from './app'; +import './index.css'; + +import { applyPolyfills, defineCustomElements } from '@map-colonies/ui-components/loader'; + +ReactDOM.render(, document.getElementById('root')); + +applyPolyfills().then(() => { + defineCustomElements(); + }); diff --git a/mc-react-components/src/react-app-env.d.ts b/demoapp/src/react-app-env.d.ts similarity index 100% rename from mc-react-components/src/react-app-env.d.ts rename to demoapp/src/react-app-env.d.ts diff --git a/demoapp/tsconfig.base.json b/demoapp/tsconfig.base.json new file mode 100644 index 00000000..90549024 --- /dev/null +++ b/demoapp/tsconfig.base.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "strictNullChecks": true, + "suppressImplicitAnyIndexErrors": true, + "noUnusedLocals": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts" + ], + "include": [ + "src" + ] +} diff --git a/demoapp/tsconfig.json b/demoapp/tsconfig.json new file mode 100644 index 00000000..97a33096 --- /dev/null +++ b/demoapp/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": {} +} diff --git a/demoapp/tsconfig.test.json b/demoapp/tsconfig.test.json new file mode 100644 index 00000000..65ffdd49 --- /dev/null +++ b/demoapp/tsconfig.test.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs" + } +} \ No newline at end of file diff --git a/demoapp/tslint.json b/demoapp/tslint.json new file mode 100644 index 00000000..addefe38 --- /dev/null +++ b/demoapp/tslint.json @@ -0,0 +1,21 @@ +{ + "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], + "rules": { + "arrow-parens": false, + "interface-name": [true, "never-prefix"], + "jsx-no-multiline-js": false, + "member-access": false, + "no-empty": false, + "object-literal-key-quotes": [true, "as-needed"], + "object-literal-sort-keys": false, + "quotemark": false, + "semicolon": false, + "trailing-comma": false + }, + "linterOptions": { + "exclude": [ + "config/**/*.js", + "node_modules/**/*.ts" + ] + } +} diff --git a/lerna.json b/lerna.json new file mode 100644 index 00000000..0420f911 --- /dev/null +++ b/lerna.json @@ -0,0 +1,9 @@ +{ + "lerna": "2.11.0", + "packages": [ + "packages/*" + ], + "version": "independent", + "npmClient": "yarn", + "useWorkspaces": true + } \ No newline at end of file diff --git a/package.json b/package.json index 5615bfbc..267d9ae6 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,24 @@ "name": "mc-react", "version": "1.0.0", "main": "index.js", - "repository": "https://github.com/rnd-hub/mc-conflicts-ui.git", + "repository": "https://github.com/MapColonies/shared-components.git", "author": "ofer.adel ", "private": true, - "workspaces": ["mc-conflicts-ui", "mc-react-components"] + "workspaces": [ + "packages/*", + "demoapp" + ], + "scripts": { + "del-dist": "lerna exec --parallel -- del-cli dist", + "prebuild": "yarn del-dist", + "build:react": "lerna exec --scope @map-colonies/react-components -- yarn build", + "build:stencil": "lerna exec --scope @map-colonies/ui-components -- yarn build", + "build:stencil-react": "lerna exec --scope @map-colonies/ui-components-react -- yarn build", + "build": "yarn build:react && yarn build:stencil && build:stencil-react", + "start:reactdemo": "cd demoapp && yarn start" + }, + "devDependencies": { + "del-cli": "^3.0.1", + "lerna": "^3.22.1" + } } diff --git a/mc-react-components/.gitignore b/packages/mc-react-components/.gitignore similarity index 100% rename from mc-react-components/.gitignore rename to packages/mc-react-components/.gitignore diff --git a/mc-react-components/README.md b/packages/mc-react-components/README.md similarity index 100% rename from mc-react-components/README.md rename to packages/mc-react-components/README.md diff --git a/mc-react-components/package.json b/packages/mc-react-components/package.json similarity index 97% rename from mc-react-components/package.json rename to packages/mc-react-components/package.json index 5a933c54..74450b72 100644 --- a/mc-react-components/package.json +++ b/packages/mc-react-components/package.json @@ -1,5 +1,5 @@ { - "name": "@map-colonies/shared-components", + "name": "@map-colonies/react-components", "version": "0.1.0", "module": "dist/index.js", "main": "dist/index.js", diff --git a/mc-react-components/public/favicon.ico b/packages/mc-react-components/public/favicon.ico similarity index 100% rename from mc-react-components/public/favicon.ico rename to packages/mc-react-components/public/favicon.ico diff --git a/mc-react-components/public/index.html b/packages/mc-react-components/public/index.html similarity index 100% rename from mc-react-components/public/index.html rename to packages/mc-react-components/public/index.html diff --git a/mc-react-components/public/logo192.png b/packages/mc-react-components/public/logo192.png similarity index 100% rename from mc-react-components/public/logo192.png rename to packages/mc-react-components/public/logo192.png diff --git a/mc-react-components/public/logo512.png b/packages/mc-react-components/public/logo512.png similarity index 100% rename from mc-react-components/public/logo512.png rename to packages/mc-react-components/public/logo512.png diff --git a/mc-react-components/public/manifest.json b/packages/mc-react-components/public/manifest.json similarity index 100% rename from mc-react-components/public/manifest.json rename to packages/mc-react-components/public/manifest.json diff --git a/mc-react-components/public/robots.txt b/packages/mc-react-components/public/robots.txt similarity index 100% rename from mc-react-components/public/robots.txt rename to packages/mc-react-components/public/robots.txt diff --git a/mc-react-components/src/index.tsx b/packages/mc-react-components/src/index.tsx similarity index 100% rename from mc-react-components/src/index.tsx rename to packages/mc-react-components/src/index.tsx diff --git a/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx similarity index 100% rename from mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx rename to packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx diff --git a/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx similarity index 100% rename from mc-react-components/src/lib/date-range-picker/date-range-picker.tsx rename to packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx diff --git a/mc-react-components/src/lib/date-range-picker/index.ts b/packages/mc-react-components/src/lib/date-range-picker/index.ts similarity index 100% rename from mc-react-components/src/lib/date-range-picker/index.ts rename to packages/mc-react-components/src/lib/date-range-picker/index.ts diff --git a/mc-react-components/src/lib/index.ts b/packages/mc-react-components/src/lib/index.ts similarity index 100% rename from mc-react-components/src/lib/index.ts rename to packages/mc-react-components/src/lib/index.ts diff --git a/mc-react-components/src/lib/map-filter-container/container-map.css b/packages/mc-react-components/src/lib/map-filter-container/container-map.css similarity index 100% rename from mc-react-components/src/lib/map-filter-container/container-map.css rename to packages/mc-react-components/src/lib/map-filter-container/container-map.css diff --git a/mc-react-components/src/lib/map-filter-container/container-map.tsx b/packages/mc-react-components/src/lib/map-filter-container/container-map.tsx similarity index 100% rename from mc-react-components/src/lib/map-filter-container/container-map.tsx rename to packages/mc-react-components/src/lib/map-filter-container/container-map.tsx diff --git a/mc-react-components/src/lib/map-filter-container/index.ts b/packages/mc-react-components/src/lib/map-filter-container/index.ts similarity index 100% rename from mc-react-components/src/lib/map-filter-container/index.ts rename to packages/mc-react-components/src/lib/map-filter-container/index.ts diff --git a/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx b/packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx similarity index 100% rename from mc-react-components/src/lib/map-filter-container/map-filter-container.tsx rename to packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx diff --git a/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx similarity index 100% rename from mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx rename to packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx diff --git a/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx similarity index 100% rename from mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx rename to packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx diff --git a/mc-react-components/src/lib/models/enums.ts b/packages/mc-react-components/src/lib/models/enums.ts similarity index 100% rename from mc-react-components/src/lib/models/enums.ts rename to packages/mc-react-components/src/lib/models/enums.ts diff --git a/mc-react-components/src/lib/models/index.ts b/packages/mc-react-components/src/lib/models/index.ts similarity index 100% rename from mc-react-components/src/lib/models/index.ts rename to packages/mc-react-components/src/lib/models/index.ts diff --git a/mc-react-components/src/lib/ol-map/feature.tsx b/packages/mc-react-components/src/lib/ol-map/feature.tsx similarity index 100% rename from mc-react-components/src/lib/ol-map/feature.tsx rename to packages/mc-react-components/src/lib/ol-map/feature.tsx diff --git a/mc-react-components/src/lib/ol-map/index.ts b/packages/mc-react-components/src/lib/ol-map/index.ts similarity index 100% rename from mc-react-components/src/lib/ol-map/index.ts rename to packages/mc-react-components/src/lib/ol-map/index.ts diff --git a/mc-react-components/src/lib/ol-map/interactions/draw.tsx b/packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx similarity index 100% rename from mc-react-components/src/lib/ol-map/interactions/draw.tsx rename to packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx diff --git a/mc-react-components/src/lib/ol-map/interactions/index.ts b/packages/mc-react-components/src/lib/ol-map/interactions/index.ts similarity index 100% rename from mc-react-components/src/lib/ol-map/interactions/index.ts rename to packages/mc-react-components/src/lib/ol-map/interactions/index.ts diff --git a/mc-react-components/src/lib/ol-map/layers/index.ts b/packages/mc-react-components/src/lib/ol-map/layers/index.ts similarity index 100% rename from mc-react-components/src/lib/ol-map/layers/index.ts rename to packages/mc-react-components/src/lib/ol-map/layers/index.ts diff --git a/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx b/packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx similarity index 100% rename from mc-react-components/src/lib/ol-map/layers/tile-layer.tsx rename to packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx diff --git a/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx b/packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx similarity index 100% rename from mc-react-components/src/lib/ol-map/layers/vector-layer.tsx rename to packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx diff --git a/mc-react-components/src/lib/ol-map/map.css b/packages/mc-react-components/src/lib/ol-map/map.css similarity index 100% rename from mc-react-components/src/lib/ol-map/map.css rename to packages/mc-react-components/src/lib/ol-map/map.css diff --git a/mc-react-components/src/lib/ol-map/map.tsx b/packages/mc-react-components/src/lib/ol-map/map.tsx similarity index 100% rename from mc-react-components/src/lib/ol-map/map.tsx rename to packages/mc-react-components/src/lib/ol-map/map.tsx diff --git a/mc-react-components/src/lib/ol-map/source/index.ts b/packages/mc-react-components/src/lib/ol-map/source/index.ts similarity index 100% rename from mc-react-components/src/lib/ol-map/source/index.ts rename to packages/mc-react-components/src/lib/ol-map/source/index.ts diff --git a/mc-react-components/src/lib/ol-map/source/osm.tsx b/packages/mc-react-components/src/lib/ol-map/source/osm.tsx similarity index 100% rename from mc-react-components/src/lib/ol-map/source/osm.tsx rename to packages/mc-react-components/src/lib/ol-map/source/osm.tsx diff --git a/mc-react-components/src/lib/ol-map/source/vector-source.tsx b/packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx similarity index 100% rename from mc-react-components/src/lib/ol-map/source/vector-source.tsx rename to packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx diff --git a/mc-react-components/src/lib/smart-table/__mocks__/smartTableMocks.ts b/packages/mc-react-components/src/lib/smart-table/__mocks__/smartTableMocks.ts similarity index 100% rename from mc-react-components/src/lib/smart-table/__mocks__/smartTableMocks.ts rename to packages/mc-react-components/src/lib/smart-table/__mocks__/smartTableMocks.ts diff --git a/mc-react-components/src/lib/smart-table/index.ts b/packages/mc-react-components/src/lib/smart-table/index.ts similarity index 100% rename from mc-react-components/src/lib/smart-table/index.ts rename to packages/mc-react-components/src/lib/smart-table/index.ts diff --git a/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx similarity index 100% rename from mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx rename to packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx diff --git a/mc-react-components/src/lib/smart-table/smart-table-head.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx similarity index 100% rename from mc-react-components/src/lib/smart-table/smart-table-head.tsx rename to packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx diff --git a/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx similarity index 100% rename from mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx rename to packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx diff --git a/mc-react-components/src/lib/smart-table/smart-table-row.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx similarity index 100% rename from mc-react-components/src/lib/smart-table/smart-table-row.tsx rename to packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx diff --git a/mc-react-components/src/lib/smart-table/smart-table-types.ts b/packages/mc-react-components/src/lib/smart-table/smart-table-types.ts similarity index 100% rename from mc-react-components/src/lib/smart-table/smart-table-types.ts rename to packages/mc-react-components/src/lib/smart-table/smart-table-types.ts diff --git a/mc-react-components/src/lib/smart-table/smart-table.spec.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx similarity index 100% rename from mc-react-components/src/lib/smart-table/smart-table.spec.tsx rename to packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx diff --git a/mc-react-components/src/lib/smart-table/smart-table.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table.tsx similarity index 100% rename from mc-react-components/src/lib/smart-table/smart-table.tsx rename to packages/mc-react-components/src/lib/smart-table/smart-table.tsx diff --git a/packages/mc-react-components/src/react-app-env.d.ts b/packages/mc-react-components/src/react-app-env.d.ts new file mode 100644 index 00000000..6431bc5f --- /dev/null +++ b/packages/mc-react-components/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/mc-react-components/src/setupTests.ts b/packages/mc-react-components/src/setupTests.ts similarity index 100% rename from mc-react-components/src/setupTests.ts rename to packages/mc-react-components/src/setupTests.ts diff --git a/mc-react-components/tsbuildconfig.json b/packages/mc-react-components/tsbuildconfig.json similarity index 100% rename from mc-react-components/tsbuildconfig.json rename to packages/mc-react-components/tsbuildconfig.json diff --git a/mc-react-components/tsconfig.json b/packages/mc-react-components/tsconfig.json similarity index 100% rename from mc-react-components/tsconfig.json rename to packages/mc-react-components/tsconfig.json diff --git a/mc-react-components/yarn.lock b/packages/mc-react-components/yarn.lock similarity index 100% rename from mc-react-components/yarn.lock rename to packages/mc-react-components/yarn.lock diff --git a/packages/mc-wc-ui-components-react/.gitignore b/packages/mc-wc-ui-components-react/.gitignore new file mode 100644 index 00000000..2e847eea --- /dev/null +++ b/packages/mc-wc-ui-components-react/.gitignore @@ -0,0 +1,63 @@ +dist/ + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next diff --git a/packages/mc-wc-ui-components-react/LICENSE b/packages/mc-wc-ui-components-react/LICENSE new file mode 100644 index 00000000..1325ed1f --- /dev/null +++ b/packages/mc-wc-ui-components-react/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Ionic + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/mc-wc-ui-components-react/README.md b/packages/mc-wc-ui-components-react/README.md new file mode 100644 index 00000000..01f48443 --- /dev/null +++ b/packages/mc-wc-ui-components-react/README.md @@ -0,0 +1,16 @@ +# stencil-ds-react-template + +This is an example repo of building plugins. + +## Step 1. + +- Update the `package.json` to have the correct package name for this repo. +- Replace `component-library` under `dependencies` with your core stencil package name. + +## Step 2. + +- Build your core stencil package. + +## Step 3. + +- Run build on this package. diff --git a/packages/mc-wc-ui-components-react/package.json b/packages/mc-wc-ui-components-react/package.json new file mode 100644 index 00000000..de355a79 --- /dev/null +++ b/packages/mc-wc-ui-components-react/package.json @@ -0,0 +1,41 @@ +{ + "name": "@map-colonies/ui-components-react", + "sideEffects": false, + "version": "0.0.1", + "private": true, + "description": "React specific wrapper for component-library", + "repository": { + "type": "git", + "url": "https://github.com/ionic-team/ionic.git" + }, + "scripts": { + "build": "npm run clean && npm run compile", + "clean": "rimraf dist", + "compile": "npm run tsc", + "tsc": "tsc -p .", + "rollup": "rollup -c" + }, + "main": "./dist/index.cjs.js", + "module": "./dist/index.es.js", + "types": "./dist/index.d.ts", + "files": [ + "dist/" + ], + "devDependencies": { + "@testing-library/dom": "^7.17.1", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "np": "^3.1.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "typescript": "~3.7.2", + "rimraf": "3.0.2" + }, + "dependencies": { + "@map-colonies/ui-components": "^0.0.1" + }, + "peerDependencies": { + "react": "^16.13.1", + "react-dom": "^16.13.1" + } +} diff --git a/packages/mc-wc-ui-components-react/src/components.ts b/packages/mc-wc-ui-components-react/src/components.ts new file mode 100644 index 00000000..92ceb785 --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/components.ts @@ -0,0 +1,48 @@ +/* eslint-disable */ +/* tslint:disable */ +/* auto-generated react proxies */ +import { createReactComponent } from './react-component-lib'; + +import { JSX } from '@map-colonies/ui-components/dist/types'; + + + +export const MwcButton = /*@__PURE__*/createReactComponent('mwc-button'); +export const MwcCard = /*@__PURE__*/createReactComponent('mwc-card'); +export const MwcCardActions = /*@__PURE__*/createReactComponent('mwc-card-actions'); +export const MwcCardContent = /*@__PURE__*/createReactComponent('mwc-card-content'); +export const MwcCardHeader = /*@__PURE__*/createReactComponent('mwc-card-header'); +export const MwcCardMedia = /*@__PURE__*/createReactComponent('mwc-card-media'); +export const MwcCheckbox = /*@__PURE__*/createReactComponent('mwc-checkbox'); +export const MwcContainer = /*@__PURE__*/createReactComponent('mwc-container'); +export const MwcContentForToolbar = /*@__PURE__*/createReactComponent('mwc-content-for-toolbar'); +export const MwcDialog = /*@__PURE__*/createReactComponent('mwc-dialog'); +export const MwcDialogBody = /*@__PURE__*/createReactComponent('mwc-dialog-body'); +export const MwcDialogFooter = /*@__PURE__*/createReactComponent('mwc-dialog-footer'); +export const MwcDialogHeader = /*@__PURE__*/createReactComponent('mwc-dialog-header'); +export const MwcDrawer = /*@__PURE__*/createReactComponent('mwc-drawer'); +export const MwcFab = /*@__PURE__*/createReactComponent('mwc-fab'); +export const MwcGridList = /*@__PURE__*/createReactComponent('mwc-grid-list'); +export const MwcGridListTile = /*@__PURE__*/createReactComponent('mwc-grid-list-tile'); +export const MwcIconToggle = /*@__PURE__*/createReactComponent('mwc-icon-toggle'); +export const MwcList = /*@__PURE__*/createReactComponent('mwc-list'); +export const MwcListItem = /*@__PURE__*/createReactComponent('mwc-list-item'); +export const MwcMenu = /*@__PURE__*/createReactComponent('mwc-menu'); +export const MwcMenuItem = /*@__PURE__*/createReactComponent('mwc-menu-item'); +export const MwcPaper = /*@__PURE__*/createReactComponent('mwc-paper'); +export const MwcProgress = /*@__PURE__*/createReactComponent('mwc-progress'); +export const MwcRadio = /*@__PURE__*/createReactComponent('mwc-radio'); +export const MwcSelect = /*@__PURE__*/createReactComponent('mwc-select'); +export const MwcSlider = /*@__PURE__*/createReactComponent('mwc-slider'); +export const MwcSnackbar = /*@__PURE__*/createReactComponent('mwc-snackbar'); +export const MwcSwitch = /*@__PURE__*/createReactComponent('mwc-switch'); +export const MwcTabbar = /*@__PURE__*/createReactComponent('mwc-tabbar'); +export const MwcTextfield = /*@__PURE__*/createReactComponent('mwc-textfield'); +export const MwcTheme = /*@__PURE__*/createReactComponent('mwc-theme'); +export const MwcToolbar = /*@__PURE__*/createReactComponent('mwc-toolbar'); +export const MwcToolbarIcon = /*@__PURE__*/createReactComponent('mwc-toolbar-icon'); +export const MwcToolbarSection = /*@__PURE__*/createReactComponent('mwc-toolbar-section'); +export const MwcToolbarTitle = /*@__PURE__*/createReactComponent('mwc-toolbar-title'); +export const MwcTypography = /*@__PURE__*/createReactComponent('mwc-typography'); +export const MwcViewport = /*@__PURE__*/createReactComponent('mwc-viewport'); +export const MyComponent = /*@__PURE__*/createReactComponent('my-component'); diff --git a/packages/mc-wc-ui-components-react/src/index.ts b/packages/mc-wc-ui-components-react/src/index.ts new file mode 100644 index 00000000..099b463e --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/index.ts @@ -0,0 +1 @@ +export * from './components'; \ No newline at end of file diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/createComponent.tsx b/packages/mc-wc-ui-components-react/src/react-component-lib/createComponent.tsx new file mode 100644 index 00000000..0d816552 --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/createComponent.tsx @@ -0,0 +1,88 @@ +import React from 'react'; + +import { + attachProps, + createForwardRef, + dashToPascalCase, + isCoveredByReact, + mergeRefs, +} from './utils'; +import { HTMLStencilElement } from '@stencil/core/internal/stencil-public-runtime'; + +interface StencilReactInternalProps extends React.HTMLAttributes { + forwardedRef?: React.RefObject; + ref?: React.Ref; +} + +export const createReactComponent = < + PropType, + ElementType extends HTMLStencilElement, + ContextStateType = {}, + ExpandedPropsTypes = {} +>( + tagName: string, + ReactComponentContext?: React.Context, + manipulatePropsFunction: ( + originalProps: StencilReactInternalProps, + propsToPass: any, + ) => ExpandedPropsTypes = undefined, +) => { + const displayName = dashToPascalCase(tagName); + + const ReactComponent = class extends React.Component> { + componentEl: ElementType; + + setComponentElRef = (element: ElementType) => { + this.componentEl = element; + }; + + constructor(props: StencilReactInternalProps) { + super(props); + } + + componentDidMount() { + this.componentDidUpdate(this.props); + } + + componentDidUpdate(prevProps: StencilReactInternalProps) { + attachProps(this.componentEl, this.props, prevProps); + } + + render() { + const { children, forwardedRef, style, className, ref, ...cProps } = this.props; + + let propsToPass = Object.keys(cProps).reduce((acc, name) => { + if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) { + const eventName = name.substring(2).toLowerCase(); + if (isCoveredByReact(eventName)) { + (acc as any)[name] = (cProps as any)[name]; + } + } + return acc; + }, {}); + + if (manipulatePropsFunction) { + propsToPass = manipulatePropsFunction(this.props, propsToPass); + } + + let newProps: StencilReactInternalProps = { + ...propsToPass, + ref: mergeRefs(forwardedRef, this.setComponentElRef), + style, + }; + + return React.createElement(tagName, newProps, children); + } + + static get displayName() { + return displayName; + } + }; + + // If context was passed to createReactComponent then conditionally add it to the Component Class + if (ReactComponentContext) { + ReactComponent.contextType = ReactComponentContext; + } + + return createForwardRef(ReactComponent, displayName); +}; diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx b/packages/mc-wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx new file mode 100644 index 00000000..cec0ccd2 --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx @@ -0,0 +1,131 @@ +import { OverlayEventDetail } from './interfaces'; +import React from 'react'; +import ReactDOM from 'react-dom'; + +import { attachProps } from './utils'; + +interface OverlayElement extends HTMLElement { + present: () => Promise; + dismiss: (data?: any, role?: string | undefined) => Promise; +} + +export interface ReactOverlayProps { + children?: React.ReactNode; + isOpen: boolean; + onDidDismiss?: (event: CustomEvent) => void; + onDidPresent?: (event: CustomEvent) => void; + onWillDismiss?: (event: CustomEvent) => void; + onWillPresent?: (event: CustomEvent) => void; +} + +export const createOverlayComponent = < + OverlayComponent extends object, + OverlayType extends OverlayElement +>( + displayName: string, + controller: { create: (options: any) => Promise }, +) => { + const didDismissEventName = `on${displayName}DidDismiss`; + const didPresentEventName = `on${displayName}DidPresent`; + const willDismissEventName = `on${displayName}WillDismiss`; + const willPresentEventName = `on${displayName}WillPresent`; + + type Props = OverlayComponent & + ReactOverlayProps & { + forwardedRef?: React.RefObject; + }; + + class Overlay extends React.Component { + overlay?: OverlayType; + el: HTMLDivElement; + + constructor(props: Props) { + super(props); + this.el = document.createElement('div'); + this.handleDismiss = this.handleDismiss.bind(this); + } + + static get displayName() { + return displayName; + } + + componentDidMount() { + if (this.props.isOpen) { + this.present(); + } + } + + componentWillUnmount() { + if (this.overlay) { + this.overlay.dismiss(); + } + } + + handleDismiss(event: CustomEvent>) { + if (this.props.onDidDismiss) { + this.props.onDidDismiss(event); + } + if (this.props.forwardedRef) { + (this.props.forwardedRef as any).current = undefined; + } + } + + async componentDidUpdate(prevProps: Props) { + if (this.overlay) { + attachProps(this.overlay, this.props, prevProps); + } + + if (prevProps.isOpen !== this.props.isOpen && this.props.isOpen === true) { + this.present(prevProps); + } + if (this.overlay && prevProps.isOpen !== this.props.isOpen && this.props.isOpen === false) { + await this.overlay.dismiss(); + } + } + + async present(prevProps?: Props) { + const { + children, + isOpen, + onDidDismiss, + onDidPresent, + onWillDismiss, + onWillPresent, + ...cProps + } = this.props; + const elementProps = { + ...cProps, + ref: this.props.forwardedRef, + [didDismissEventName]: this.handleDismiss, + [didPresentEventName]: (e: CustomEvent) => + this.props.onDidPresent && this.props.onDidPresent(e), + [willDismissEventName]: (e: CustomEvent) => + this.props.onWillDismiss && this.props.onWillDismiss(e), + [willPresentEventName]: (e: CustomEvent) => + this.props.onWillPresent && this.props.onWillPresent(e), + }; + + this.overlay = await controller.create({ + ...elementProps, + component: this.el, + componentProps: {}, + }); + + if (this.props.forwardedRef) { + (this.props.forwardedRef as any).current = this.overlay; + } + + attachProps(this.overlay, elementProps, prevProps); + + await this.overlay.present(); + } + + render() { + return ReactDOM.createPortal(this.props.isOpen ? this.props.children : null, this.el); + } + } + + return React.forwardRef((props, ref) => { + return ; + }); +}; diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/index.ts b/packages/mc-wc-ui-components-react/src/react-component-lib/index.ts new file mode 100644 index 00000000..85e81ad1 --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/index.ts @@ -0,0 +1,2 @@ +export { createReactComponent } from './createComponent'; +export { createOverlayComponent } from './createOverlayComponent'; diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/interfaces.ts b/packages/mc-wc-ui-components-react/src/react-component-lib/interfaces.ts new file mode 100644 index 00000000..c5ab9aac --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/interfaces.ts @@ -0,0 +1,31 @@ +import { EventEmitter } from '@stencil/core'; + +export interface StyleReactProps { + class?: string; + className?: string; + style?: { [key: string]: any }; +} + +export interface OverlayEventDetail { + data?: T; + role?: string; +} + +export interface OverlayInterface { + el: HTMLElement; + animated: boolean; + keyboardClose: boolean; + overlayIndex: number; + presented: boolean; + + enterAnimation?: any; + leaveAnimation?: any; + + didPresent: EventEmitter; + willPresent: EventEmitter; + willDismiss: EventEmitter; + didDismiss: EventEmitter; + + present(): Promise; + dismiss(data?: any, role?: string): Promise; +} diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/attachProps.ts b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/attachProps.ts new file mode 100644 index 00000000..a3a9bc77 --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/attachProps.ts @@ -0,0 +1,112 @@ +import { camelToDashCase } from './case'; + +export const attachProps = (node: HTMLElement, newProps: any, oldProps: any = {}) => { + // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first + if (node instanceof Element) { + // add any classes in className to the class list + const className = getClassName(node.classList, newProps, oldProps); + if (className !== '') { + node.className = className; + } + + Object.keys(newProps).forEach((name) => { + if ( + name === 'children' || + name === 'style' || + name === 'ref' || + name === 'class' || + name === 'className' || + name === 'forwardedRef' + ) { + return; + } + if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) { + const eventName = name.substring(2); + const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1); + + if (!isCoveredByReact(eventNameLc)) { + syncEvent(node, eventNameLc, newProps[name]); + } + } else { + (node as any)[name] = newProps[name]; + const propType = typeof newProps[name]; + if (propType === 'string') { + node.setAttribute(camelToDashCase(name), newProps[name]); + } else { + (node as any)[name] = newProps[name]; + } + } + }); + } +}; + +export const getClassName = (classList: DOMTokenList, newProps: any, oldProps: any) => { + const newClassProp: string = newProps.className || newProps.class; + const oldClassProp: string = oldProps.className || oldProps.class; + // map the classes to Maps for performance + const currentClasses = arrayToMap(classList); + const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []); + const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []); + const finalClassNames: string[] = []; + // loop through each of the current classes on the component + // to see if it should be a part of the classNames added + currentClasses.forEach((currentClass) => { + if (incomingPropClasses.has(currentClass)) { + // add it as its already included in classnames coming in from newProps + finalClassNames.push(currentClass); + incomingPropClasses.delete(currentClass); + } else if (!oldPropClasses.has(currentClass)) { + // add it as it has NOT been removed by user + finalClassNames.push(currentClass); + } + }); + incomingPropClasses.forEach((s) => finalClassNames.push(s)); + return finalClassNames.join(' '); +}; + +/** + * Checks if an event is supported in the current execution environment. + * @license Modernizr 3.0.0pre (Custom Build) | MIT + */ +export const isCoveredByReact = (eventNameSuffix: string, doc: Document = document) => { + const eventName = 'on' + eventNameSuffix; + let isSupported = eventName in doc; + + if (!isSupported) { + const element = doc.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof (element as any)[eventName] === 'function'; + } + + return isSupported; +}; + +export const syncEvent = ( + node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } }, + eventName: string, + newEventHandler?: (e: Event) => any, +) => { + const eventStore = node.__events || (node.__events = {}); + const oldEventHandler = eventStore[eventName]; + + // Remove old listener so they don't double up. + if (oldEventHandler) { + node.removeEventListener(eventName, oldEventHandler); + } + + // Bind new listener. + node.addEventListener( + eventName, + (eventStore[eventName] = function handler(e: Event) { + if (newEventHandler) { + newEventHandler.call(this, e); + } + }), + ); +}; + +const arrayToMap = (arr: string[] | DOMTokenList) => { + const map = new Map(); + (arr as string[]).forEach((s: string) => map.set(s, s)); + return map; +}; diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/case.ts b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/case.ts new file mode 100644 index 00000000..047704f1 --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/case.ts @@ -0,0 +1,8 @@ +export const dashToPascalCase = (str: string) => + str + .toLowerCase() + .split('-') + .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1)) + .join(''); +export const camelToDashCase = (str: string) => + str.replace(/([A-Z])/g, (m: string) => `-${m[0].toLowerCase()}`); diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/dev.ts b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/dev.ts new file mode 100644 index 00000000..cc6f9ed0 --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/dev.ts @@ -0,0 +1,14 @@ +export const isDevMode = () => { + return process && process.env && process.env.NODE_ENV === 'development'; +}; + +const warnings: { [key: string]: boolean } = {}; + +export const deprecationWarning = (key: string, message: string) => { + if (isDevMode()) { + if (!warnings[key]) { + console.warn(message); + warnings[key] = true; + } + } +}; diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/index.tsx b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/index.tsx new file mode 100644 index 00000000..fa8adb0e --- /dev/null +++ b/packages/mc-wc-ui-components-react/src/react-component-lib/utils/index.tsx @@ -0,0 +1,40 @@ +import React from 'react'; + +import { StyleReactProps } from '../interfaces'; + +type Mutable = { -readonly [P in keyof T]-?: T[P] }; // Remove readonly and ? + +export type StencilReactExternalProps = PropType & + Omit, 'style'> & + StyleReactProps; + +// The comma in the type is to trick typescript because it things a single generic in a tsx file is jsx +export const mergeRefs = (...refs: React.Ref[]) => ( + value: ElementType, +) => + refs.forEach((ref) => { + if (typeof ref === 'function') { + ref(value); + } else if (ref != null) { + // This is typed as readonly so we need to allow for override + (ref as Mutable>).current = value; + } + }); + +export const createForwardRef = ( + ReactComponent: any, + displayName: string, +) => { + const forwardRef = ( + props: StencilReactExternalProps, + ref: React.Ref, + ) => { + return ; + }; + forwardRef.displayName = displayName; + + return React.forwardRef(forwardRef); +}; + +export * from './attachProps'; +export * from './case'; diff --git a/packages/mc-wc-ui-components-react/tsconfig.json b/packages/mc-wc-ui-components-react/tsconfig.json new file mode 100644 index 00000000..8ac532ea --- /dev/null +++ b/packages/mc-wc-ui-components-react/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "allowUnreachableCode": false, + "allowSyntheticDefaultImports": true, + "declaration": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "esModuleInterop": true, + "lib": ["dom", "es2015"], + "module": "es2015", + "moduleResolution": "node", + "noImplicitAny": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "outDir": "dist", + "removeComments": false, + "sourceMap": true, + "jsx": "react", + "target": "es2015" + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx" + ], + "exclude": [ + "**/__tests__/**" + ], + "compileOnSave": false, + "buildOnSave": false + } \ No newline at end of file diff --git a/packages/mc-wc-ui-components/.editorconfig b/packages/mc-wc-ui-components/.editorconfig new file mode 100644 index 00000000..f1cc3ad3 --- /dev/null +++ b/packages/mc-wc-ui-components/.editorconfig @@ -0,0 +1,15 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/packages/mc-wc-ui-components/.gitignore b/packages/mc-wc-ui-components/.gitignore new file mode 100644 index 00000000..9af3905b --- /dev/null +++ b/packages/mc-wc-ui-components/.gitignore @@ -0,0 +1,27 @@ +dist/ +www/ +loader/ +generated/ + +*~ +*.sw[mnpcod] +*.log +*.lock +*.tmp +*.tmp.* +log.txt +*.sublime-project +*.sublime-workspace + +.stencil/ +.idea/ +.vscode/ +.sass-cache/ +.versions/ +node_modules/ +$RECYCLE.BIN/ + +.DS_Store +Thumbs.db +UserInterfaceState.xcuserstate +.env diff --git a/packages/mc-wc-ui-components/LICENSE b/packages/mc-wc-ui-components/LICENSE new file mode 100644 index 00000000..b442934b --- /dev/null +++ b/packages/mc-wc-ui-components/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/mc-wc-ui-components/package.json b/packages/mc-wc-ui-components/package.json new file mode 100644 index 00000000..7c73b865 --- /dev/null +++ b/packages/mc-wc-ui-components/package.json @@ -0,0 +1,38 @@ +{ + "name": "@map-colonies/ui-components", + "version": "0.0.1", + "description": "Stencil Component Starter", + "main": "dist/index.js", + "module": "dist/index.mjs", + "es2015": "dist/esm/index.mjs", + "es2017": "dist/esm/index.mjs", + "types": "dist/types/index.d.ts", + "collection": "dist/collection/collection-manifest.json", + "collection:main": "dist/collection/index.js", + "unpkg": "dist/mc-wc-ui-components/mc-wc-ui-components.js", + "files": [ + "dist/", + "loader/" + ], + "scripts": { + "build": "stencil build --docs", + "start": "stencil build --dev --watch --serve", + "test": "stencil test --spec --e2e", + "test.watch": "stencil test --spec --e2e --watchAll", + "generate": "stencil generate" + }, + "dependencies": { + "@stencil/react-output-target": "^0.0.7", + "classnames": "^2.2.5", + "deepmerge": "^2.0.1", + "jss": "^9.5.0", + "jss-preset-default": "^4.0.1", + "material-components-web": "^0.27.0", + "warning": "^3.0.0" + }, + "devDependencies": { + "@stencil/core": "^1.12.2", + "@stencil/sass": "^1.3.2" + }, + "license": "MIT" +} diff --git a/packages/mc-wc-ui-components/readme.md b/packages/mc-wc-ui-components/readme.md new file mode 100644 index 00000000..73788dd6 --- /dev/null +++ b/packages/mc-wc-ui-components/readme.md @@ -0,0 +1,72 @@ +![Built With Stencil](https://img.shields.io/badge/-Built%20With%20Stencil-16161d.svg?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI%2BCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI%2BCgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU%2BCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MjQuNywzNzMuOWMwLDM3LjYtNTUuMSw2OC42LTkyLjcsNjguNkgxODAuNGMtMzcuOSwwLTkyLjctMzAuNy05Mi43LTY4LjZ2LTMuNmgzMzYuOVYzNzMuOXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTQyNC43LDI5Mi4xSDE4MC40Yy0zNy42LDAtOTIuNy0zMS05Mi43LTY4LjZ2LTMuNkgzMzJjMzcuNiwwLDkyLjcsMzEsOTIuNyw2OC42VjI5Mi4xeiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDI0LjcsMTQxLjdIODcuN3YtMy42YzAtMzcuNiw1NC44LTY4LjYsOTIuNy02OC42SDMzMmMzNy45LDAsOTIuNywzMC43LDkyLjcsNjguNlYxNDEuN3oiLz4KPC9zdmc%2BCg%3D%3D&colorA=16161d&style=flat-square) + +# Stencil Component Starter + +This is a starter project for building a standalone Web Component using Stencil. + +Stencil is also great for building entire apps. For that, use the [stencil-app-starter](https://github.com/ionic-team/stencil-app-starter) instead. + +# Stencil + +Stencil is a compiler for building fast web apps using Web Components. + +Stencil combines the best concepts of the most popular frontend frameworks into a compile-time rather than run-time tool. Stencil takes TypeScript, JSX, a tiny virtual DOM layer, efficient one-way data binding, an asynchronous rendering pipeline (similar to React Fiber), and lazy-loading out of the box, and generates 100% standards-based Web Components that run in any browser supporting the Custom Elements v1 spec. + +Stencil components are just Web Components, so they work in any major framework or with no framework at all. + +## Getting Started + +To start building a new web component using Stencil, clone this repo to a new directory: + +```bash +git clone https://github.com/ionic-team/stencil-component-starter.git my-component +cd my-component +git remote rm origin +``` + +and run: + +```bash +npm install +npm start +``` + +To build the component for production, run: + +```bash +npm run build +``` + +To run the unit tests for the components, run: + +```bash +npm test +``` + +Need help? Check out our docs [here](https://stenciljs.com/docs/my-first-component). + + +## Naming Components + +When creating new component tags, we recommend _not_ using `stencil` in the component name (ex: ``). This is because the generated component has little to nothing to do with Stencil; it's just a web component! + +Instead, use a prefix that fits your company or any name for a group of related components. For example, all of the Ionic generated web components use the prefix `ion`. + + +## Using this component + +### Script tag + +- [Publish to NPM](https://docs.npmjs.com/getting-started/publishing-npm-packages) +- Put a script tag similar to this `` in the head of your index.html +- Then you can use the element anywhere in your template, JSX, html etc + +### Node Modules +- Run `npm install my-component --save` +- Put a script tag similar to this `` in the head of your index.html +- Then you can use the element anywhere in your template, JSX, html etc + +### In a stencil-starter app +- Run `npm install my-component --save` +- Add an import to the npm packages `import my-component;` +- Then you can use the element anywhere in your template, JSX, html etc diff --git a/packages/mc-wc-ui-components/src/components.d.ts b/packages/mc-wc-ui-components/src/components.d.ts new file mode 100644 index 00000000..dafe5282 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components.d.ts @@ -0,0 +1,869 @@ +/* eslint-disable */ +/* tslint:disable */ +/** + * This is an autogenerated file created by the Stencil compiler. + * It contains typing information for all components that exist in this project. + */ +import { HTMLStencilElement, JSXBase } from "@stencil/core/internal"; +import { colorType } from "./components/button/mwc-button-types"; +import { alignType, displayType, typographyType } from "./components/typography/mwc-typograpy-types"; +export namespace Components { + interface MwcButton { + "backgroundcolor": string; + "color": colorType; + "compact": boolean; + "dense": boolean; + "disabled": boolean; + "fab": boolean; + "href": string; + "icon": string; + "mini": boolean; + "raised": boolean; + "ripple": boolean; + "stroked": boolean; + "unelevated": boolean; + } + interface MwcCard { + "height": string; + "radius": number; + "raised": boolean; + "width": string; + } + interface MwcCardActions { + } + interface MwcCardContent { + } + interface MwcCardHeader { + "maintitle": string; + "subtitle": string; + } + interface MwcCardMedia { + "mediaheight": string; + "src": string; + } + interface MwcCheckbox { + "alignlabel": string; + "checkcolor": string; + "checked": boolean; + "disabled": boolean; + "indeterminate": boolean; + "label": string; + "name": string; + "ripple": boolean; + "value": string; + } + interface MwcContainer { + "aligncontent": string; + "alignitems": string; + "backgroundcolor": string; + "flexdirection": string; + "flexwrap": string; + "height": string; + "justifycontent": string; + "width": string; + } + interface MwcContentForToolbar { + } + interface MwcDialog { + "close": () => Promise; + "height": string; + "show": () => Promise; + "width": string; + } + interface MwcDialogBody { + } + interface MwcDialogFooter { + } + interface MwcDialogHeader { + } + interface MwcDrawer { + "close": () => Promise; + "header": boolean; + "open": () => Promise; + "toolbarspacer": boolean; + "type": String; + } + interface MwcFab { + "backgroundcolor": string; + "color": string; + "icon": string; + "mini": boolean; + "ripple": boolean; + } + interface MwcGridList { + "aspectratio": string; + "tiletitleposition": string; + "tilewidth": string; + } + interface MwcGridListTile { + "titlebackgroundcolor": string; + } + interface MwcIconToggle { + "color": string; + "disabled": boolean; + "officon": string; + "officonlabel": string; + "onicon": string; + "oniconlabel": string; + "ripple": boolean; + "toggleon": boolean; + } + interface MwcList { + "borderlist": boolean; + "dense": boolean; + } + interface MwcListItem { + "interactive": boolean; + "ripple": boolean; + } + interface MwcMenu { + "hide": () => Promise; + "open": boolean; + "show": (focusIndex: number) => Promise; + } + interface MwcMenuItem { + "disabled": boolean; + "role": string; + } + interface MwcPaper { + "elevation": number; + "height": string; + "radius": number; + "width": string; + } + interface MwcProgress { + "buffer": (value: any) => Promise; + "bufferbarcolor": string; + "height": string; + "progress": (value: any) => Promise; + "progressbarcolor": string; + "reversed": boolean; + "show": boolean; + "type": string; + "width": string; + } + interface MwcRadio { + "borderlist": boolean; + "checked": boolean; + "color": 'default' | 'primary' | 'secondary'; + "dense": boolean; + "name": string; + "ripple": boolean; + } + interface MwcSelect { + "borderlist": boolean; + "checked": boolean; + "dense": boolean; + "name": string; + "radiocolor": string; + "ripple": boolean; + } + interface MwcSlider { + "disabled": boolean; + "discrete": boolean; + "max": number; + "min": number; + "slidercolor": string; + "step": number; + "stepdown": (amount?: number) => Promise; + "stepup": (amount?: number) => Promise; + "value": number; + } + interface MwcSnackbar { + "actioncolor": string; + "actiononbutton": boolean; + "actiontext": string; + "backgroundcolor": string; + "dismissesonaction": boolean; + "message": string; + "messagecolor": string; + "multiline": boolean; + "show": () => Promise; + "timeout": number; + } + interface MwcSwitch { + "checked": boolean; + "disabled": boolean; + "label": string; + "labelposition": string; + "switchcolor": string; + } + interface MwcTabbar { + "activeindex": number; + "scroller": boolean; + "tabs": Array; + } + interface MwcTextfield { + "dense": boolean; + "disabled": boolean; + "focused": boolean; + "fullwidth": boolean; + "helpertext": string; + "icon": string; + "iconposition": string; + "label": string; + "labelposition": string; + "minlength": number; + "outlined": boolean; + "required": boolean; + "showbox": boolean; + "textarea": boolean; + "type": string; + "value": string; + } + interface MwcTheme { + "fonts": Array; + "icons": Array; + "theme": object; + } + interface MwcToolbar { + "type": string; + } + interface MwcToolbarIcon { + } + interface MwcToolbarSection { + "align": string; + } + interface MwcToolbarTitle { + } + interface MwcTypography { + "align": alignType; + "color": string; + "display": displayType; + "gutterbottom": boolean; + "nowrap": boolean; + "styles": any; + "type": typographyType; + } + interface MwcViewport { + "backgroundcolor": string; + } + interface MyComponent { + /** + * The first name + */ + "first": string; + /** + * The last name + */ + "last": string; + /** + * The middle name + */ + "middle": string; + } +} +declare global { + interface HTMLMwcButtonElement extends Components.MwcButton, HTMLStencilElement { + } + var HTMLMwcButtonElement: { + prototype: HTMLMwcButtonElement; + new (): HTMLMwcButtonElement; + }; + interface HTMLMwcCardElement extends Components.MwcCard, HTMLStencilElement { + } + var HTMLMwcCardElement: { + prototype: HTMLMwcCardElement; + new (): HTMLMwcCardElement; + }; + interface HTMLMwcCardActionsElement extends Components.MwcCardActions, HTMLStencilElement { + } + var HTMLMwcCardActionsElement: { + prototype: HTMLMwcCardActionsElement; + new (): HTMLMwcCardActionsElement; + }; + interface HTMLMwcCardContentElement extends Components.MwcCardContent, HTMLStencilElement { + } + var HTMLMwcCardContentElement: { + prototype: HTMLMwcCardContentElement; + new (): HTMLMwcCardContentElement; + }; + interface HTMLMwcCardHeaderElement extends Components.MwcCardHeader, HTMLStencilElement { + } + var HTMLMwcCardHeaderElement: { + prototype: HTMLMwcCardHeaderElement; + new (): HTMLMwcCardHeaderElement; + }; + interface HTMLMwcCardMediaElement extends Components.MwcCardMedia, HTMLStencilElement { + } + var HTMLMwcCardMediaElement: { + prototype: HTMLMwcCardMediaElement; + new (): HTMLMwcCardMediaElement; + }; + interface HTMLMwcCheckboxElement extends Components.MwcCheckbox, HTMLStencilElement { + } + var HTMLMwcCheckboxElement: { + prototype: HTMLMwcCheckboxElement; + new (): HTMLMwcCheckboxElement; + }; + interface HTMLMwcContainerElement extends Components.MwcContainer, HTMLStencilElement { + } + var HTMLMwcContainerElement: { + prototype: HTMLMwcContainerElement; + new (): HTMLMwcContainerElement; + }; + interface HTMLMwcContentForToolbarElement extends Components.MwcContentForToolbar, HTMLStencilElement { + } + var HTMLMwcContentForToolbarElement: { + prototype: HTMLMwcContentForToolbarElement; + new (): HTMLMwcContentForToolbarElement; + }; + interface HTMLMwcDialogElement extends Components.MwcDialog, HTMLStencilElement { + } + var HTMLMwcDialogElement: { + prototype: HTMLMwcDialogElement; + new (): HTMLMwcDialogElement; + }; + interface HTMLMwcDialogBodyElement extends Components.MwcDialogBody, HTMLStencilElement { + } + var HTMLMwcDialogBodyElement: { + prototype: HTMLMwcDialogBodyElement; + new (): HTMLMwcDialogBodyElement; + }; + interface HTMLMwcDialogFooterElement extends Components.MwcDialogFooter, HTMLStencilElement { + } + var HTMLMwcDialogFooterElement: { + prototype: HTMLMwcDialogFooterElement; + new (): HTMLMwcDialogFooterElement; + }; + interface HTMLMwcDialogHeaderElement extends Components.MwcDialogHeader, HTMLStencilElement { + } + var HTMLMwcDialogHeaderElement: { + prototype: HTMLMwcDialogHeaderElement; + new (): HTMLMwcDialogHeaderElement; + }; + interface HTMLMwcDrawerElement extends Components.MwcDrawer, HTMLStencilElement { + } + var HTMLMwcDrawerElement: { + prototype: HTMLMwcDrawerElement; + new (): HTMLMwcDrawerElement; + }; + interface HTMLMwcFabElement extends Components.MwcFab, HTMLStencilElement { + } + var HTMLMwcFabElement: { + prototype: HTMLMwcFabElement; + new (): HTMLMwcFabElement; + }; + interface HTMLMwcGridListElement extends Components.MwcGridList, HTMLStencilElement { + } + var HTMLMwcGridListElement: { + prototype: HTMLMwcGridListElement; + new (): HTMLMwcGridListElement; + }; + interface HTMLMwcGridListTileElement extends Components.MwcGridListTile, HTMLStencilElement { + } + var HTMLMwcGridListTileElement: { + prototype: HTMLMwcGridListTileElement; + new (): HTMLMwcGridListTileElement; + }; + interface HTMLMwcIconToggleElement extends Components.MwcIconToggle, HTMLStencilElement { + } + var HTMLMwcIconToggleElement: { + prototype: HTMLMwcIconToggleElement; + new (): HTMLMwcIconToggleElement; + }; + interface HTMLMwcListElement extends Components.MwcList, HTMLStencilElement { + } + var HTMLMwcListElement: { + prototype: HTMLMwcListElement; + new (): HTMLMwcListElement; + }; + interface HTMLMwcListItemElement extends Components.MwcListItem, HTMLStencilElement { + } + var HTMLMwcListItemElement: { + prototype: HTMLMwcListItemElement; + new (): HTMLMwcListItemElement; + }; + interface HTMLMwcMenuElement extends Components.MwcMenu, HTMLStencilElement { + } + var HTMLMwcMenuElement: { + prototype: HTMLMwcMenuElement; + new (): HTMLMwcMenuElement; + }; + interface HTMLMwcMenuItemElement extends Components.MwcMenuItem, HTMLStencilElement { + } + var HTMLMwcMenuItemElement: { + prototype: HTMLMwcMenuItemElement; + new (): HTMLMwcMenuItemElement; + }; + interface HTMLMwcPaperElement extends Components.MwcPaper, HTMLStencilElement { + } + var HTMLMwcPaperElement: { + prototype: HTMLMwcPaperElement; + new (): HTMLMwcPaperElement; + }; + interface HTMLMwcProgressElement extends Components.MwcProgress, HTMLStencilElement { + } + var HTMLMwcProgressElement: { + prototype: HTMLMwcProgressElement; + new (): HTMLMwcProgressElement; + }; + interface HTMLMwcRadioElement extends Components.MwcRadio, HTMLStencilElement { + } + var HTMLMwcRadioElement: { + prototype: HTMLMwcRadioElement; + new (): HTMLMwcRadioElement; + }; + interface HTMLMwcSelectElement extends Components.MwcSelect, HTMLStencilElement { + } + var HTMLMwcSelectElement: { + prototype: HTMLMwcSelectElement; + new (): HTMLMwcSelectElement; + }; + interface HTMLMwcSliderElement extends Components.MwcSlider, HTMLStencilElement { + } + var HTMLMwcSliderElement: { + prototype: HTMLMwcSliderElement; + new (): HTMLMwcSliderElement; + }; + interface HTMLMwcSnackbarElement extends Components.MwcSnackbar, HTMLStencilElement { + } + var HTMLMwcSnackbarElement: { + prototype: HTMLMwcSnackbarElement; + new (): HTMLMwcSnackbarElement; + }; + interface HTMLMwcSwitchElement extends Components.MwcSwitch, HTMLStencilElement { + } + var HTMLMwcSwitchElement: { + prototype: HTMLMwcSwitchElement; + new (): HTMLMwcSwitchElement; + }; + interface HTMLMwcTabbarElement extends Components.MwcTabbar, HTMLStencilElement { + } + var HTMLMwcTabbarElement: { + prototype: HTMLMwcTabbarElement; + new (): HTMLMwcTabbarElement; + }; + interface HTMLMwcTextfieldElement extends Components.MwcTextfield, HTMLStencilElement { + } + var HTMLMwcTextfieldElement: { + prototype: HTMLMwcTextfieldElement; + new (): HTMLMwcTextfieldElement; + }; + interface HTMLMwcThemeElement extends Components.MwcTheme, HTMLStencilElement { + } + var HTMLMwcThemeElement: { + prototype: HTMLMwcThemeElement; + new (): HTMLMwcThemeElement; + }; + interface HTMLMwcToolbarElement extends Components.MwcToolbar, HTMLStencilElement { + } + var HTMLMwcToolbarElement: { + prototype: HTMLMwcToolbarElement; + new (): HTMLMwcToolbarElement; + }; + interface HTMLMwcToolbarIconElement extends Components.MwcToolbarIcon, HTMLStencilElement { + } + var HTMLMwcToolbarIconElement: { + prototype: HTMLMwcToolbarIconElement; + new (): HTMLMwcToolbarIconElement; + }; + interface HTMLMwcToolbarSectionElement extends Components.MwcToolbarSection, HTMLStencilElement { + } + var HTMLMwcToolbarSectionElement: { + prototype: HTMLMwcToolbarSectionElement; + new (): HTMLMwcToolbarSectionElement; + }; + interface HTMLMwcToolbarTitleElement extends Components.MwcToolbarTitle, HTMLStencilElement { + } + var HTMLMwcToolbarTitleElement: { + prototype: HTMLMwcToolbarTitleElement; + new (): HTMLMwcToolbarTitleElement; + }; + interface HTMLMwcTypographyElement extends Components.MwcTypography, HTMLStencilElement { + } + var HTMLMwcTypographyElement: { + prototype: HTMLMwcTypographyElement; + new (): HTMLMwcTypographyElement; + }; + interface HTMLMwcViewportElement extends Components.MwcViewport, HTMLStencilElement { + } + var HTMLMwcViewportElement: { + prototype: HTMLMwcViewportElement; + new (): HTMLMwcViewportElement; + }; + interface HTMLMyComponentElement extends Components.MyComponent, HTMLStencilElement { + } + var HTMLMyComponentElement: { + prototype: HTMLMyComponentElement; + new (): HTMLMyComponentElement; + }; + interface HTMLElementTagNameMap { + "mwc-button": HTMLMwcButtonElement; + "mwc-card": HTMLMwcCardElement; + "mwc-card-actions": HTMLMwcCardActionsElement; + "mwc-card-content": HTMLMwcCardContentElement; + "mwc-card-header": HTMLMwcCardHeaderElement; + "mwc-card-media": HTMLMwcCardMediaElement; + "mwc-checkbox": HTMLMwcCheckboxElement; + "mwc-container": HTMLMwcContainerElement; + "mwc-content-for-toolbar": HTMLMwcContentForToolbarElement; + "mwc-dialog": HTMLMwcDialogElement; + "mwc-dialog-body": HTMLMwcDialogBodyElement; + "mwc-dialog-footer": HTMLMwcDialogFooterElement; + "mwc-dialog-header": HTMLMwcDialogHeaderElement; + "mwc-drawer": HTMLMwcDrawerElement; + "mwc-fab": HTMLMwcFabElement; + "mwc-grid-list": HTMLMwcGridListElement; + "mwc-grid-list-tile": HTMLMwcGridListTileElement; + "mwc-icon-toggle": HTMLMwcIconToggleElement; + "mwc-list": HTMLMwcListElement; + "mwc-list-item": HTMLMwcListItemElement; + "mwc-menu": HTMLMwcMenuElement; + "mwc-menu-item": HTMLMwcMenuItemElement; + "mwc-paper": HTMLMwcPaperElement; + "mwc-progress": HTMLMwcProgressElement; + "mwc-radio": HTMLMwcRadioElement; + "mwc-select": HTMLMwcSelectElement; + "mwc-slider": HTMLMwcSliderElement; + "mwc-snackbar": HTMLMwcSnackbarElement; + "mwc-switch": HTMLMwcSwitchElement; + "mwc-tabbar": HTMLMwcTabbarElement; + "mwc-textfield": HTMLMwcTextfieldElement; + "mwc-theme": HTMLMwcThemeElement; + "mwc-toolbar": HTMLMwcToolbarElement; + "mwc-toolbar-icon": HTMLMwcToolbarIconElement; + "mwc-toolbar-section": HTMLMwcToolbarSectionElement; + "mwc-toolbar-title": HTMLMwcToolbarTitleElement; + "mwc-typography": HTMLMwcTypographyElement; + "mwc-viewport": HTMLMwcViewportElement; + "my-component": HTMLMyComponentElement; + } +} +declare namespace LocalJSX { + interface MwcButton { + "backgroundcolor"?: string; + "color"?: colorType; + "compact"?: boolean; + "dense"?: boolean; + "disabled"?: boolean; + "fab"?: boolean; + "href"?: string; + "icon"?: string; + "mini"?: boolean; + "onOnClick"?: (event: CustomEvent) => void; + "raised"?: boolean; + "ripple"?: boolean; + "stroked"?: boolean; + "unelevated"?: boolean; + } + interface MwcCard { + "height"?: string; + "radius"?: number; + "raised"?: boolean; + "width"?: string; + } + interface MwcCardActions { + } + interface MwcCardContent { + } + interface MwcCardHeader { + "maintitle"?: string; + "subtitle"?: string; + } + interface MwcCardMedia { + "mediaheight"?: string; + "src"?: string; + } + interface MwcCheckbox { + "alignlabel"?: string; + "checkcolor"?: string; + "checked"?: boolean; + "disabled"?: boolean; + "indeterminate"?: boolean; + "label"?: string; + "name"?: string; + "onChangeHandler"?: (event: CustomEvent) => void; + "ripple"?: boolean; + "value"?: string; + } + interface MwcContainer { + "aligncontent"?: string; + "alignitems"?: string; + "backgroundcolor"?: string; + "flexdirection"?: string; + "flexwrap"?: string; + "height"?: string; + "justifycontent"?: string; + "width"?: string; + } + interface MwcContentForToolbar { + } + interface MwcDialog { + "height"?: string; + "onAccepted"?: (event: CustomEvent) => void; + "onCanceled"?: (event: CustomEvent) => void; + "width"?: string; + } + interface MwcDialogBody { + } + interface MwcDialogFooter { + } + interface MwcDialogHeader { + } + interface MwcDrawer { + "header"?: boolean; + "onOndrawerclose"?: (event: CustomEvent) => void; + "onOndraweropen"?: (event: CustomEvent) => void; + "toolbarspacer"?: boolean; + "type"?: String; + } + interface MwcFab { + "backgroundcolor"?: string; + "color"?: string; + "icon"?: string; + "mini"?: boolean; + "ripple"?: boolean; + } + interface MwcGridList { + "aspectratio"?: string; + "tiletitleposition"?: string; + "tilewidth"?: string; + } + interface MwcGridListTile { + "titlebackgroundcolor"?: string; + } + interface MwcIconToggle { + "color"?: string; + "disabled"?: boolean; + "officon"?: string; + "officonlabel"?: string; + "onOniconchange"?: (event: CustomEvent) => void; + "onicon"?: string; + "oniconlabel"?: string; + "ripple"?: boolean; + "toggleon"?: boolean; + } + interface MwcList { + "borderlist"?: boolean; + "dense"?: boolean; + } + interface MwcListItem { + "interactive"?: boolean; + "ripple"?: boolean; + } + interface MwcMenu { + "onSelected"?: (event: CustomEvent) => void; + "open"?: boolean; + } + interface MwcMenuItem { + "disabled"?: boolean; + "role"?: string; + } + interface MwcPaper { + "elevation"?: number; + "height"?: string; + "radius"?: number; + "width"?: string; + } + interface MwcProgress { + "bufferbarcolor"?: string; + "height"?: string; + "progressbarcolor"?: string; + "reversed"?: boolean; + "show"?: boolean; + "type"?: string; + "width"?: string; + } + interface MwcRadio { + "borderlist"?: boolean; + "checked"?: boolean; + "color"?: 'default' | 'primary' | 'secondary'; + "dense"?: boolean; + "name"?: string; + "ripple"?: boolean; + } + interface MwcSelect { + "borderlist"?: boolean; + "checked"?: boolean; + "dense"?: boolean; + "name"?: string; + "radiocolor"?: string; + "ripple"?: boolean; + } + interface MwcSlider { + "disabled"?: boolean; + "discrete"?: boolean; + "max"?: number; + "min"?: number; + "onChangeHandler"?: (event: CustomEvent) => void; + "onInputchange"?: (event: CustomEvent) => void; + "slidercolor"?: string; + "step"?: number; + "value"?: number; + } + interface MwcSnackbar { + "actioncolor"?: string; + "actiononbutton"?: boolean; + "actiontext"?: string; + "backgroundcolor"?: string; + "dismissesonaction"?: boolean; + "message"?: string; + "messagecolor"?: string; + "multiline"?: boolean; + "onActionhandler"?: (event: CustomEvent) => void; + "onSelected"?: (event: CustomEvent) => void; + "timeout"?: number; + } + interface MwcSwitch { + "checked"?: boolean; + "disabled"?: boolean; + "label"?: string; + "labelposition"?: string; + "onSelected"?: (event: CustomEvent) => void; + "switchcolor"?: string; + } + interface MwcTabbar { + "activeindex"?: number; + "onChange"?: (event: CustomEvent) => void; + "scroller"?: boolean; + "tabs"?: Array; + } + interface MwcTextfield { + "dense"?: boolean; + "disabled"?: boolean; + "focused"?: boolean; + "fullwidth"?: boolean; + "helpertext"?: string; + "icon"?: string; + "iconposition"?: string; + "label"?: string; + "labelposition"?: string; + "minlength"?: number; + "onSelected"?: (event: CustomEvent) => void; + "outlined"?: boolean; + "required"?: boolean; + "showbox"?: boolean; + "textarea"?: boolean; + "type"?: string; + "value"?: string; + } + interface MwcTheme { + "fonts"?: Array; + "icons"?: Array; + "theme"?: object; + } + interface MwcToolbar { + "type"?: string; + } + interface MwcToolbarIcon { + } + interface MwcToolbarSection { + "align"?: string; + } + interface MwcToolbarTitle { + } + interface MwcTypography { + "align"?: alignType; + "color"?: string; + "display"?: displayType; + "gutterbottom"?: boolean; + "nowrap"?: boolean; + "styles"?: any; + "type"?: typographyType; + } + interface MwcViewport { + "backgroundcolor"?: string; + } + interface MyComponent { + /** + * The first name + */ + "first"?: string; + /** + * The last name + */ + "last"?: string; + /** + * The middle name + */ + "middle"?: string; + } + interface IntrinsicElements { + "mwc-button": MwcButton; + "mwc-card": MwcCard; + "mwc-card-actions": MwcCardActions; + "mwc-card-content": MwcCardContent; + "mwc-card-header": MwcCardHeader; + "mwc-card-media": MwcCardMedia; + "mwc-checkbox": MwcCheckbox; + "mwc-container": MwcContainer; + "mwc-content-for-toolbar": MwcContentForToolbar; + "mwc-dialog": MwcDialog; + "mwc-dialog-body": MwcDialogBody; + "mwc-dialog-footer": MwcDialogFooter; + "mwc-dialog-header": MwcDialogHeader; + "mwc-drawer": MwcDrawer; + "mwc-fab": MwcFab; + "mwc-grid-list": MwcGridList; + "mwc-grid-list-tile": MwcGridListTile; + "mwc-icon-toggle": MwcIconToggle; + "mwc-list": MwcList; + "mwc-list-item": MwcListItem; + "mwc-menu": MwcMenu; + "mwc-menu-item": MwcMenuItem; + "mwc-paper": MwcPaper; + "mwc-progress": MwcProgress; + "mwc-radio": MwcRadio; + "mwc-select": MwcSelect; + "mwc-slider": MwcSlider; + "mwc-snackbar": MwcSnackbar; + "mwc-switch": MwcSwitch; + "mwc-tabbar": MwcTabbar; + "mwc-textfield": MwcTextfield; + "mwc-theme": MwcTheme; + "mwc-toolbar": MwcToolbar; + "mwc-toolbar-icon": MwcToolbarIcon; + "mwc-toolbar-section": MwcToolbarSection; + "mwc-toolbar-title": MwcToolbarTitle; + "mwc-typography": MwcTypography; + "mwc-viewport": MwcViewport; + "my-component": MyComponent; + } +} +export { LocalJSX as JSX }; +declare module "@stencil/core" { + export namespace JSX { + interface IntrinsicElements { + "mwc-button": LocalJSX.MwcButton & JSXBase.HTMLAttributes; + "mwc-card": LocalJSX.MwcCard & JSXBase.HTMLAttributes; + "mwc-card-actions": LocalJSX.MwcCardActions & JSXBase.HTMLAttributes; + "mwc-card-content": LocalJSX.MwcCardContent & JSXBase.HTMLAttributes; + "mwc-card-header": LocalJSX.MwcCardHeader & JSXBase.HTMLAttributes; + "mwc-card-media": LocalJSX.MwcCardMedia & JSXBase.HTMLAttributes; + "mwc-checkbox": LocalJSX.MwcCheckbox & JSXBase.HTMLAttributes; + "mwc-container": LocalJSX.MwcContainer & JSXBase.HTMLAttributes; + "mwc-content-for-toolbar": LocalJSX.MwcContentForToolbar & JSXBase.HTMLAttributes; + "mwc-dialog": LocalJSX.MwcDialog & JSXBase.HTMLAttributes; + "mwc-dialog-body": LocalJSX.MwcDialogBody & JSXBase.HTMLAttributes; + "mwc-dialog-footer": LocalJSX.MwcDialogFooter & JSXBase.HTMLAttributes; + "mwc-dialog-header": LocalJSX.MwcDialogHeader & JSXBase.HTMLAttributes; + "mwc-drawer": LocalJSX.MwcDrawer & JSXBase.HTMLAttributes; + "mwc-fab": LocalJSX.MwcFab & JSXBase.HTMLAttributes; + "mwc-grid-list": LocalJSX.MwcGridList & JSXBase.HTMLAttributes; + "mwc-grid-list-tile": LocalJSX.MwcGridListTile & JSXBase.HTMLAttributes; + "mwc-icon-toggle": LocalJSX.MwcIconToggle & JSXBase.HTMLAttributes; + "mwc-list": LocalJSX.MwcList & JSXBase.HTMLAttributes; + "mwc-list-item": LocalJSX.MwcListItem & JSXBase.HTMLAttributes; + "mwc-menu": LocalJSX.MwcMenu & JSXBase.HTMLAttributes; + "mwc-menu-item": LocalJSX.MwcMenuItem & JSXBase.HTMLAttributes; + "mwc-paper": LocalJSX.MwcPaper & JSXBase.HTMLAttributes; + "mwc-progress": LocalJSX.MwcProgress & JSXBase.HTMLAttributes; + "mwc-radio": LocalJSX.MwcRadio & JSXBase.HTMLAttributes; + "mwc-select": LocalJSX.MwcSelect & JSXBase.HTMLAttributes; + "mwc-slider": LocalJSX.MwcSlider & JSXBase.HTMLAttributes; + "mwc-snackbar": LocalJSX.MwcSnackbar & JSXBase.HTMLAttributes; + "mwc-switch": LocalJSX.MwcSwitch & JSXBase.HTMLAttributes; + "mwc-tabbar": LocalJSX.MwcTabbar & JSXBase.HTMLAttributes; + "mwc-textfield": LocalJSX.MwcTextfield & JSXBase.HTMLAttributes; + "mwc-theme": LocalJSX.MwcTheme & JSXBase.HTMLAttributes; + "mwc-toolbar": LocalJSX.MwcToolbar & JSXBase.HTMLAttributes; + "mwc-toolbar-icon": LocalJSX.MwcToolbarIcon & JSXBase.HTMLAttributes; + "mwc-toolbar-section": LocalJSX.MwcToolbarSection & JSXBase.HTMLAttributes; + "mwc-toolbar-title": LocalJSX.MwcToolbarTitle & JSXBase.HTMLAttributes; + "mwc-typography": LocalJSX.MwcTypography & JSXBase.HTMLAttributes; + "mwc-viewport": LocalJSX.MwcViewport & JSXBase.HTMLAttributes; + "my-component": LocalJSX.MyComponent & JSXBase.HTMLAttributes; + } + } +} diff --git a/packages/mc-wc-ui-components/src/components/button/mwc-button-style.ts b/packages/mc-wc-ui-components/src/components/button/mwc-button-style.ts new file mode 100644 index 00000000..5d1f5622 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/button/mwc-button-style.ts @@ -0,0 +1,217 @@ +import {getTheme} from '../util/mwc-util' +import setupJss from '../styles/setup-jss' +import deepmerge from 'deepmerge' +import createTheme from '../styles/create-theme' +import {fade} from '../styles/color-manipulator' +const formatMs = (milliseconds: number) => `${Math.round(milliseconds)}ms`; + +export const rippleColors = { + default: '', + primary: '', + secondary: '', + white:'' +} +const theme = createTheme(getTheme()) +class ButtonStyle{ + defaultStyle: object = { + root: { + ...theme.typography.button, + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative', + lineHeight: '1.4em', + boxSizing: 'border-box', + minWidth: 88, + minHeight: 36, + padding: `${theme.spacing.unit}px ${theme.spacing.unit * 2}px`, + borderRadius: 2, + color: theme.palette.text.primary, + WebkitTapHighlightColor: theme.palette.common.transparent, + backgroundColor: 'transparent', // Reset default value + outline: 'none', + border: 0, + cursor: 'pointer', + userSelect: 'none', + verticalAlign: 'middle', + appearance: 'none', + textDecoration: 'none', + '&::-moz-focus-inner': { + borderStyle: 'none', // Remove Firefox dotted outline. + }, + transition: `background-color ${formatMs(theme.transitions.duration.short)}, box-shadow ${formatMs(theme.transitions.duration.short)}`, + '&:hover': { + textDecoration: 'none', + // Reset on mouse devices + backgroundColor: fade(theme.palette.text.primary, 0.12), + '@media (hover: none)': { + backgroundColor: 'transparent', + }, + '&$disabled': { + backgroundColor: 'transparent', + }, + }, + '&:active':{ + outline: 'none' + } + }, + disabled: { + pointerEvents: 'none', // Disable link interactions + cursor: 'default', + backgroundColor: 'transparent', + color: theme.palette.action.disabled, + }, + dense: { + padding: `${theme.spacing.unit - 1}px ${theme.spacing.unit}px`, + minWidth: 64, + minHeight: 32, + fontSize: theme.typography.pxToRem(theme.typography.fontSize - 1), + }, + label: { + width: '100%', + display: 'inherit', + alignItems: 'inherit', + justifyContent: 'inherit', + }, + flatPrimary: { + color: theme.palette.primary[500], + '&:hover': { + backgroundColor: fade(theme.palette.primary[500], 0.12), + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: 'transparent', + }, + }, + }, + flatSecondary: { + color: theme.palette.secondary['A200'], + '&:hover': { + backgroundColor: fade(theme.palette.secondary['A200'], 0.12), + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: 'transparent', + }, + }, + }, + flatContrast: { + color: theme.palette.getContrastText(theme.palette.primary[500]), + '&:hover': { + backgroundColor: fade(theme.palette.getContrastText(theme.palette.primary[500]), 0.12), + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: 'transparent', + }, + }, + }, + colorInherit: { + color: 'inherit', + }, + stroked:{ + borderStyle: 'solid', + borderColor: theme.palette.grey[300], + borderWidth : '2px' + }, + strokedPrimary:{ + borderStyle: 'solid', + borderColor: theme.palette.primary[500], + borderWidth : '2px' + }, + strokedSecondary:{ + borderStyle: 'solid', + borderColor: theme.palette.secondary['A200'], + borderWidth : '2px' + }, + strokedContrast:{ + borderStyle: 'solid', + borderColor: fade(theme.palette.getContrastText(theme.palette.primary[500]), 0.12), + borderWidth : '2px' + }, + raised: { + color: theme.palette.getContrastText(theme.palette.grey[300]), + backgroundColor: theme.palette.grey[300], + boxShadow: theme.shadows[2], + '&$keyboardFocused': { + boxShadow: theme.shadows[6], + }, + '&:active': { + boxShadow: theme.shadows[8], + }, + '&$disabled': { + boxShadow: theme.shadows[0], + color: theme.palette.action.disabled, + backgroundColor: theme.palette.text.divider, + }, + '&:hover': { + backgroundColor: theme.palette.grey.A100, + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: theme.palette.grey[300], + }, + '&$disabled': { + backgroundColor: theme.palette.text.divider, + color: theme.palette.action.disabled, + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: theme.palette.grey[300], + }, + }, + }, + }, + keyboardFocused: {}, + raisedPrimary: { + color: theme.palette.getContrastText(theme.palette.primary[500]), + backgroundColor: theme.palette.primary[500], + '&:hover': { + backgroundColor: theme.palette.primary[700], + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: theme.palette.primary[500], + }, + }, + }, + raisedSecondary: { + color: theme.palette.getContrastText(theme.palette.secondary['A200']), + backgroundColor: theme.palette.secondary['A200'], + '&:hover': { + backgroundColor: theme.palette.secondary['A400'], + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: theme.palette.secondary['A200'], + }, + }, + }, + raisedContrast: { + color: theme.palette.getContrastText(theme.palette.primary[500]), + }, + + fab: { + borderRadius: '50%', + padding: 0, + minWidth: 0, + width: 56, + height: 56, + boxShadow: theme.shadows[6], + '&:active': { + boxShadow: theme.shadows[12], + }, + }, + mini: { + width: 40, + height: 40, + }, + } + jss:any; + setup(style:object){ + const mergedStyles = deepmerge.all([this.defaultStyle,style]) + rippleColors.default = fade(theme.palette.text.primary, 0.30) + rippleColors.primary = fade(theme.palette.primary[500], 0.30) + rippleColors.secondary = fade(theme.palette.secondary['A200'], 0.30) + rippleColors.white = fade('#ffffff', 0.50) + this.jss = new setupJss() + this.jss.attachStyleSheet(mergedStyles) + } + getClassName(type:Array):string{ + return this.jss.getClassName(type) + } +} +export default ButtonStyle \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/button/mwc-button-types.ts b/packages/mc-wc-ui-components/src/components/button/mwc-button-types.ts new file mode 100644 index 00000000..14cf59a2 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/button/mwc-button-types.ts @@ -0,0 +1,7 @@ +export type colorType = 'default'|'inherit'|'primary'|'secondary'|'contrast' + +export const buttonColor = { + primary: 'Primary', + secondary: 'Secondary', + contrast: 'Contrast' +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx b/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx new file mode 100644 index 00000000..01cd138b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx @@ -0,0 +1,134 @@ +import { Component, Prop, Element, Event, EventEmitter, h } from '@stencil/core'; + +import ButtonStyle, {rippleColors} from './mwc-button-style' +import tmripple from '../util/ripple' +import {colorType, buttonColor} from './mwc-button-types' + +@Component({ + tag: 'mwc-button', + shadow: false +}) +export class MWCButton{ + + @Prop() icon: string; + @Prop() raised: boolean = false; + @Prop() unelevated: boolean = false; + @Prop() stroked: boolean = false; + @Prop() dense: boolean = false; + @Prop() compact: boolean = false; + @Prop() color:colorType = "default" + @Prop() backgroundcolor: string = "#ff0000"; + @Prop() disabled: boolean = false; + @Prop() ripple: boolean = true; + @Prop() fab: boolean = false; + @Prop() mini: boolean = false; + @Prop() href: string; + + @Event() onClick: EventEmitter; + + buttonRipple: any; + mwcButton:any; + + @Element() btnEl : HTMLButtonElement; + classes: any; + + componentWillLoad(){ + const buttonStyle = new ButtonStyle() + let changeStyle: object = { + + } + buttonStyle.setup(changeStyle) + this.btnEl.disabled = this.disabled + + /* Object.getOwnPropertyNames(this).forEach((key) => { + console.log(typeof this[key]) + }) */ + this.btnEl.className = buttonStyle.getClassName(this.getClassNames()) + + this.btnEl.addEventListener('click',(evt)=>{ + + this.onClick.emit({...evt, alex:'kuku'}); + }); + } + getClassNames(): Array{ + let classNames:Array = ['root'] + if(this.disabled){ + classNames.push('disabled') + } + if(this.raised){ + classNames.push('raised') + if(this.color !== 'default'){ + classNames.push(`raised${buttonColor[this.color]}`) + } + } + if(!this.raised && !this.stroked && !this.unelevated){ + if(this.color !== 'default'){ + classNames.push(`flat${buttonColor[this.color]}`) + } + } + if(this.dense){ + classNames.push('dense') + } + if(this.fab){ + classNames.push('fab') + } + if(this.mini){ + classNames.push('mini') + } + return classNames; + } + componentDidLoad(){ + if(this.ripple){ + const rippleColor = (this.raised && (this.color === 'primary' || this.color === 'secondary')) ? rippleColors.white : rippleColors[this.color] + tmripple.attachToSelectors({ + selectors: this.btnEl, + color: rippleColor, + eventListener: 'mousedown' + }); + } + } + renderIcon(){ + if(this.icon){ + return( + {this.icon} + ) + } + return null; + } + renderButton(){ + if(this.href){ + return( + + + + ) + } + return ( + + ) + /* return ( + + ) */ + } + + render() { + // return (this.href) ? + // ( + // + // + // + // ) + // : + // ( + // + // ) + + return (); + }; + + + +} diff --git a/packages/mc-wc-ui-components/src/components/button/readme.md b/packages/mc-wc-ui-components/src/components/button/readme.md new file mode 100644 index 00000000..d5820b68 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/button/readme.md @@ -0,0 +1,36 @@ +# mwc-button + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ----------------- | ----------------- | ----------- | ------------------------------------------------------------------ | ----------- | +| `backgroundcolor` | `backgroundcolor` | | `string` | `"#ff0000"` | +| `color` | `color` | | `"contrast" \| "default" \| "inherit" \| "primary" \| "secondary"` | `"default"` | +| `compact` | `compact` | | `boolean` | `false` | +| `dense` | `dense` | | `boolean` | `false` | +| `disabled` | `disabled` | | `boolean` | `false` | +| `fab` | `fab` | | `boolean` | `false` | +| `href` | `href` | | `string` | `undefined` | +| `icon` | `icon` | | `string` | `undefined` | +| `mini` | `mini` | | `boolean` | `false` | +| `raised` | `raised` | | `boolean` | `false` | +| `ripple` | `ripple` | | `boolean` | `true` | +| `stroked` | `stroked` | | `boolean` | `false` | +| `unelevated` | `unelevated` | | `boolean` | `false` | + + +## Events + +| Event | Description | Type | +| --------- | ----------- | ------------------ | +| `onClick` | | `CustomEvent` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.scss b/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.scss new file mode 100644 index 00000000..744c830b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.scss @@ -0,0 +1 @@ +@import "@material/card/mdc-card"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.tsx b/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.tsx new file mode 100644 index 00000000..387a2f48 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.tsx @@ -0,0 +1,16 @@ +import { Component, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-card-actions', + styleUrl: 'mwc-card-actions.scss', + shadow: false +}) +export class MWCCardActions{ + render() { + return ( +
+ +
+ ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-content-style.ts b/packages/mc-wc-ui-components/src/components/card/mwc-card-content-style.ts new file mode 100644 index 00000000..3dabe6ca --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-content-style.ts @@ -0,0 +1,30 @@ +import {getTheme} from '../util/mwc-util' +import setupJss from '../styles/setup-jss' +import deepmerge from 'deepmerge' +import createTheme from '../styles/create-theme' + +const theme = createTheme(getTheme()) + +class CardContentStyle{ + defaultStyle: object = { + root: { + padding: theme.spacing.unit * 2, + '&:last-child': { + paddingBottom: theme.spacing.unit * 3, + }, + }, + } + + jss:any; + setup(style:object){ + const mergedStyles = deepmerge.all([this.defaultStyle,style]) + this.jss = new setupJss() + this.jss.attachStyleSheet(mergedStyles) + } + getClassName(type:Array):string{ + return this.jss.getClassName(type) + } + +} + +export default CardContentStyle; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-content.tsx b/packages/mc-wc-ui-components/src/components/card/mwc-card-content.tsx new file mode 100644 index 00000000..26d54af4 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-content.tsx @@ -0,0 +1,27 @@ +import { Component, h } from '@stencil/core'; +import CardContentStyle from './mwc-card-content-style' + +@Component({ + tag: 'mwc-card-content', + shadow: false +}) +export class MWCCardContent{ + cardContentStyle:any; + componentWillLoad(){ + this.cardContentStyle = new CardContentStyle() + let changeStyle: object = { + } + this.cardContentStyle.setup(changeStyle) + } + getClassNames():Array{ + let classNames:Array = ['root'] + return classNames + } + render() { + return ( +
+ +
+ ); + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-header.scss b/packages/mc-wc-ui-components/src/components/card/mwc-card-header.scss new file mode 100644 index 00000000..4f11e1f5 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-header.scss @@ -0,0 +1 @@ +@import "@material/card/mdc-card.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-header.tsx b/packages/mc-wc-ui-components/src/components/card/mwc-card-header.tsx new file mode 100644 index 00000000..5223fb57 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-header.tsx @@ -0,0 +1,46 @@ +import { Component, Prop, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-card-header', + styleUrl: 'mwc-card-header.scss', + shadow: false +}) +export class MWCCardHeader{ + + @Prop() maintitle: string; + @Prop() subtitle : string; + + renderTitle(){ + if(this.maintitle){ + return( +

+ {this.maintitle} +

+ ) + } + return null; + } + renderSubTitle(){ + if(this.subtitle){ + return( +

+ {this.subtitle} +

+ ) + } + return null; + } + render() { + return ( +
+ { + this.renderTitle() + } + { + this.renderSubTitle() + } + +
+ ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-media-style.ts b/packages/mc-wc-ui-components/src/components/card/mwc-card-media-style.ts new file mode 100644 index 00000000..917ee462 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-media-style.ts @@ -0,0 +1,31 @@ +import {getTheme} from '../util/mwc-util' +import setupJss from '../styles/setup-jss' +import deepmerge from 'deepmerge' +import createTheme from '../styles/create-theme' + +const theme = createTheme(getTheme()) + +class CardMediaStyle{ + defaultStyle: object = { + root: { + backgroundSize: 'cover', + backgroundRepeat: 'no-repeat', + backgroundPosition: 'center', + }, + rootMedia: { + width: '100%', + }, + } + jss:any; + setup(style:object){ + const mergedStyles = deepmerge.all([this.defaultStyle,style]) + this.jss = new setupJss() + this.jss.attachStyleSheet(mergedStyles) + } + getClassName(type:Array):string{ + return this.jss.getClassName(type) + } + +} + +export default CardMediaStyle; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-media.scss b/packages/mc-wc-ui-components/src/components/card/mwc-card-media.scss new file mode 100644 index 00000000..4f11e1f5 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-media.scss @@ -0,0 +1 @@ +@import "@material/card/mdc-card.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-media.tsx b/packages/mc-wc-ui-components/src/components/card/mwc-card-media.tsx new file mode 100644 index 00000000..02e35440 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card-media.tsx @@ -0,0 +1,44 @@ +import { Component, Prop, h } from '@stencil/core'; +import CardMediaStyle from './mwc-card-media-style' + +@Component({ + tag: 'mwc-card-media', + // styleUrl: 'mwc-card-media.scss', + shadow: false +}) +export class MWCCardMedia{ + @Prop() src: string; + @Prop() mediaheight: string = 'auto'; + + cardMediaStyle:any; + componentWillLoad(){ + this.cardMediaStyle = new CardMediaStyle() + let changeStyle: object = { + rootMedia:{ + height: this.mediaheight + } + } + this.cardMediaStyle.setup(changeStyle) + } + getClassNames():Array{ + let classNames:Array = ['root','rootMedia'] + return classNames + } + + getMediaClass(){ + let mediaClass = 'mdc-card__media-item'; + if(this.mediaheight){ + let mediaheight = this.mediaheight; + if(this.mediaheight === '1x'){ + mediaheight = '1dot5x' + } + mediaClass = `${mediaClass} mdc-card__media-item--${mediaheight}` + } + return mediaClass; + } + render() { + return ( + + ); + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card.scss b/packages/mc-wc-ui-components/src/components/card/mwc-card.scss new file mode 100644 index 00000000..4f11e1f5 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card.scss @@ -0,0 +1 @@ +@import "@material/card/mdc-card.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card.tsx b/packages/mc-wc-ui-components/src/components/card/mwc-card.tsx new file mode 100644 index 00000000..fada126f --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/mwc-card.tsx @@ -0,0 +1,46 @@ +import { Component, Prop, Element, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-card', + //styleUrl: 'mwc-card.scss', + shadow: false +}) +export class MWCCard{ + + @Element() cardEl : HTMLElement; + @Prop() width: string = "auto"; + @Prop() height : string = "auto"; + @Prop() raised : boolean = false; + @Prop() radius : number = 4; + + componentDidLoad(){ + /* let cardStyles = ''; + if(this.width){ + cardStyles = `width:${this.width}; `; + } + if(this.height){ + cardStyles = `${cardStyles}height:${this.height}; `; + } + if(cardStyles.length>0){ + this.mwcCard.setAttribute('style',cardStyles); + } + Array.from(this.cardEl.getElementsByTagName("button")).forEach((eachButton)=>{ + eachButton.className = `${eachButton.className} mdc-card__action`; + }) */ + } + getElevation():number{ + return this.raised ? 8 : 2 + } + + render() { + return ( + + + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/card/readme.md b/packages/mc-wc-ui-components/src/components/card/readme.md new file mode 100644 index 00000000..e48a0584 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/card/readme.md @@ -0,0 +1,18 @@ +# mwc-card-media + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------- | ------------- | ----------- | -------- | ----------- | +| `mediaheight` | `mediaheight` | | `string` | `'auto'` | +| `src` | `src` | | `string` | `undefined` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.scss b/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.scss new file mode 100644 index 00000000..c0415a5c --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.scss @@ -0,0 +1,2 @@ +@import "@material/checkbox/mdc-checkbox.scss"; +@import "@material/form-field/mdc-form-field.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.tsx b/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.tsx new file mode 100644 index 00000000..805f4681 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.tsx @@ -0,0 +1,107 @@ +import { Component, Element, Prop, Event, EventEmitter, h } from '@stencil/core'; +import {MDCCheckbox} from '@material/checkbox'; + +@Component({ + tag: 'mwc-checkbox', + styleUrl: 'mwc-checkbox.scss', + shadow: false +}) +export class MWCCheckbox{ + + @Element() checkBoxEl : HTMLElement; + @Prop() ripple: boolean = true; + @Prop() disabled: boolean = false; + @Prop() checkcolor: string; + @Prop() name: string; + @Prop() value: string; + @Prop() checked: boolean = false; + @Prop() indeterminate: boolean = false; + @Prop() label : string; + @Prop() alignlabel: string = 'left'; + @Event() changeHandler: EventEmitter; + inputComp : any; + checkRipple: any; + innerStyles:any ; + checkboxDiv: any; + elStyleNode: any; + formFieldDiv: any; + componentWillLoad(){ + if(this.checkcolor){ + this.checkBoxEl.style.setProperty('--mdc-theme-secondary',`#${this.checkcolor}`); + } + } + + componentDidLoad(){ + if(this.ripple){ + this.checkRipple = MDCCheckbox.attachTo(this.checkboxDiv); + } + if(this.indeterminate){ + this.checkRipple.indeterminate = this.indeterminate; + } + if(this.formFieldDiv && this.alignlabel === 'right'){ + this.formFieldDiv.style.setProperty('flex-direction','row-reverse') + } + } + getStyleNode(){ + var styleNode = document.createElement('style'); + styleNode.type = "text/css"; + var styleText = document.createTextNode(`.mdc-checkbox::before, .mdc-checkbox::after{ + background-color: #${this.checkcolor}20 !important; + }`); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.checkBoxEl.appendChild(this.elStyleNode); + } + onFocus(){ + if(this.checkcolor){ + this.getStyleNode() + } + } + onBlur(){ + if(this.checkcolor){ + this.checkBoxEl.removeChild(this.elStyleNode) + } + } + componentDidUnload(){ + if(this.ripple){ + this.checkRipple.destroy() + } + } + renderCheckbox(){ + return( +
{ this.checkboxDiv = cbDiv; }}> + { this.inputComp = input; }} + disabled={this.disabled} + checked={this.checked} + onFocus = {(evt)=> this.onFocus()} + onBlur = {(evt)=> this.onBlur()} + onChange= {(evt)=> this.changeHandler.emit(evt)} + class="mdc-checkbox__native-control"/> +
+ + + +
+
+
+ ) + } + renderCheckboxWithLabel(){ + return( +
{this.formFieldDiv = formFieldDiv}}> + + {this.renderCheckbox()} +
+ ) + } + render() { + if(this.label){ + return this.renderCheckboxWithLabel() + } + return this.renderCheckbox() + } +} diff --git a/packages/mc-wc-ui-components/src/components/checkbox/readme.md b/packages/mc-wc-ui-components/src/components/checkbox/readme.md new file mode 100644 index 00000000..dc2fad09 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/checkbox/readme.md @@ -0,0 +1,32 @@ +# mwc-checkbox + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| --------------- | --------------- | ----------- | --------- | ----------- | +| `alignlabel` | `alignlabel` | | `string` | `'left'` | +| `checkcolor` | `checkcolor` | | `string` | `undefined` | +| `checked` | `checked` | | `boolean` | `false` | +| `disabled` | `disabled` | | `boolean` | `false` | +| `indeterminate` | `indeterminate` | | `boolean` | `false` | +| `label` | `label` | | `string` | `undefined` | +| `name` | `name` | | `string` | `undefined` | +| `ripple` | `ripple` | | `boolean` | `true` | +| `value` | `value` | | `string` | `undefined` | + + +## Events + +| Event | Description | Type | +| --------------- | ----------- | ------------------ | +| `changeHandler` | | `CustomEvent` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/container/mwc-container.tsx b/packages/mc-wc-ui-components/src/components/container/mwc-container.tsx new file mode 100644 index 00000000..645c87bd --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/container/mwc-container.tsx @@ -0,0 +1,55 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +@Component({ + tag: 'mwc-container', + shadow: false +}) +export class MWCContainer{ + @Element() containerEl : HTMLDivElement; + @Prop() backgroundcolor: string = ""; + @Prop() height: string; + @Prop() width: string; + @Prop() flexdirection: string = "row"; + //row-reverse,column,column-reverse,row + @Prop() flexwrap: string="nowrap"; + //wrap,wrap-reverse + @Prop() justifycontent: string="flex-start"; + //flex-end,center,space-between,space-around,space-evenly + @Prop() alignitems: string="flex-start"; + //flex-start,flex-end,center,baseline,stretch + @Prop() aligncontent: string="flex-start"; + //flex-start,flex-end,center,space-between,space-around,stretch + componentWillLoad(){ + let containerStyle = `display : flex;` + if(this.height){ + containerStyle = `${containerStyle} height:${this.height};` + } + if(this.width){ + containerStyle = `${containerStyle} width:${this.width};` + } + if(this.flexdirection){ + containerStyle = `${containerStyle} flex-direction:${this.flexdirection};` + } + if(this.flexwrap){ + containerStyle = `${containerStyle} flex-wrap:${this.flexwrap};` + } + if(this.justifycontent){ + containerStyle = `${containerStyle} justify-content:${this.justifycontent};` + } + if(this.alignitems){ + containerStyle = `${containerStyle} align-items:${this.alignitems};` + } + if(this.aligncontent){ + containerStyle = `${containerStyle} align-content:${this.aligncontent};` + } + if(this.backgroundcolor){ + containerStyle = `${containerStyle} background-color:${this.backgroundcolor};` + } + this.containerEl.setAttribute('style',containerStyle) + } + + render() { + return ( + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/container/readme.md b/packages/mc-wc-ui-components/src/components/container/readme.md new file mode 100644 index 00000000..ea7a9c9a --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/container/readme.md @@ -0,0 +1,24 @@ +# mwc-container + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ----------------- | ----------------- | ----------- | -------- | -------------- | +| `aligncontent` | `aligncontent` | | `string` | `"flex-start"` | +| `alignitems` | `alignitems` | | `string` | `"flex-start"` | +| `backgroundcolor` | `backgroundcolor` | | `string` | `""` | +| `flexdirection` | `flexdirection` | | `string` | `"row"` | +| `flexwrap` | `flexwrap` | | `string` | `"nowrap"` | +| `height` | `height` | | `string` | `undefined` | +| `justifycontent` | `justifycontent` | | `string` | `"flex-start"` | +| `width` | `width` | | `string` | `undefined` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.scss b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.scss new file mode 100644 index 00000000..81fe225e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.scss @@ -0,0 +1 @@ +@import "@material/dialog/mdc-dialog.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.tsx b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.tsx new file mode 100644 index 00000000..69f0bbb2 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.tsx @@ -0,0 +1,16 @@ +import { Component, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-dialog-body', + styleUrl: 'mwc-dialog-body.scss', + shadow: false +}) +export class MWCDialogBody{ + render() { + return ( +
+ +
+ ); + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.scss b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.scss new file mode 100644 index 00000000..c0c2917b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.scss @@ -0,0 +1 @@ +@import "@material/dialog/mdc-dialog.scss"; diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx new file mode 100644 index 00000000..8c1a045f --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx @@ -0,0 +1,31 @@ +import { Component, Element, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-dialog-footer', + styleUrl: 'mwc-dialog-footer.scss', + shadow: false +}) + +export class MWCDialogFooter{ + + @Element() dialogFooterEl: HTMLElement; + + componentDidLoad(){ + Array.from(this.dialogFooterEl.children[0].children).forEach((item,index)=>{ + item.classList.add('mdc-dialog__footer__button') + if(item.getAttribute('type') == "accept"){ + item.classList.add('mdc-dialog__footer__button--accept') + } + if(item.getAttribute('type') == "cancel"){ + item.classList.add('mdc-dialog__footer__button--cancel') + } + }) + } + render() { + return ( +
+ +
+ ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.scss b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.scss new file mode 100644 index 00000000..81fe225e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.scss @@ -0,0 +1 @@ +@import "@material/dialog/mdc-dialog.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.tsx b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.tsx new file mode 100644 index 00000000..1a2b9448 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.tsx @@ -0,0 +1,19 @@ +import { Component, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-dialog-header', + styleUrl: 'mwc-dialog-header.scss', + shadow: false +}) + +export class MWCDialogHeader{ + render() { + return ( +
+

+ +

+
+ ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.scss b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.scss new file mode 100644 index 00000000..81fe225e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.scss @@ -0,0 +1 @@ +@import "@material/dialog/mdc-dialog.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.tsx b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.tsx new file mode 100644 index 00000000..1a84458e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.tsx @@ -0,0 +1,66 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCDialog} from '@material/dialog'; + +@Component({ + tag: 'mwc-dialog', + styleUrl: 'mwc-dialog.scss', + shadow: false +}) +export class MWCDialog{ + + @Element() dialogEl : HTMLElement; + @Prop() width: string; + @Prop() height : string; + dialogDiv: any; + mdcDialog: any; + + @Event() accepted: EventEmitter; + @Event() canceled: EventEmitter; + + @Method() + async show(){ + this.mdcDialog.show(); + } + + @Method() + async close(){ + this.mdcDialog.close() + } + + componentDidLoad(){ + this.mdcDialog = MDCDialog.attachTo(this.dialogDiv); + this.mdcDialog.listen('MDCDialog:accept', ()=> { + this.accepted.emit(); + }) + this.mdcDialog.listen('MDCDialog:cancel', ()=> { + this.canceled.emit(); + }) + let cardStyles = ''; + if(this.width){ + cardStyles = `max-width:${this.width} !important; width:${this.width} !important; min-width:${this.width} !important;`; + } + if(this.height){ + cardStyles = `${cardStyles}height:${this.height}; `; + } + if(cardStyles.length>0){ + this.dialogEl.getElementsByTagName("div")[0].setAttribute('style',cardStyles) + } + } + componentDidUnload(){ + this.mdcDialog.destroy(); + } + render() { + return ( + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/dialog/readme.md b/packages/mc-wc-ui-components/src/components/dialog/readme.md new file mode 100644 index 00000000..84e8d6dc --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/dialog/readme.md @@ -0,0 +1,10 @@ +# mwc-dialog-header + + + + + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.scss b/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.scss new file mode 100644 index 00000000..6a04920e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.scss @@ -0,0 +1,8 @@ +@import "@material/drawer/mdc-drawer.scss"; +.drawer-body { + padding: 0; + margin: 0; + box-sizing: border-box; + height: 100%; + overflow-y: auto; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.tsx b/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.tsx new file mode 100644 index 00000000..44ec4483 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.tsx @@ -0,0 +1,115 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCPersistentDrawer, MDCTemporaryDrawer} from '@material/drawer'; + +@Component({ + tag: 'mwc-drawer', + styleUrl: 'mwc-drawer.scss', + shadow: false +}) +export class MWCDrawer{ + + @Element() drawerEl : HTMLElement; + + @Event() ondraweropen: EventEmitter; + @Event() ondrawerclose: EventEmitter; + + @Prop() type: String = 'persistent'; //permanent,temporary + @Prop() toolbarspacer: boolean = true; + @Prop() header: boolean = true; + + mdcDrawer:any; + drawerDIV:any; + + @Method() + async open(){ + if(this.type !== 'permanent'){ + this.mdcDrawer.open = true; + } + } + @Method() + async close(){ + if(this.type !== 'permanent'){ + this.mdcDrawer.open = false; + } + } + + componentDidLoad(){ + if(this.type === 'persistent') + { + this.mdcDrawer = MDCPersistentDrawer.attachTo(this.drawerDIV) + this.mdcDrawer.listen('MDCPersistentDrawer:open',()=>{ + this.ondraweropen.emit(); + }) + this.mdcDrawer.listen('MDCPersistentDrawer:close',()=>{ + this.ondrawerclose.emit(); + }) + }else if(this.type === 'temporary'){ + this.mdcDrawer = MDCTemporaryDrawer.attachTo(this.drawerDIV) + this.mdcDrawer.listen('MDCTemporaryDrawer:open',()=>{ + this.ondraweropen.emit(); + }) + this.mdcDrawer.listen('MDCTemporaryDrawer:close',()=>{ + this.ondrawerclose.emit(); + }) + } + } + componentDidUnload(){ + if(this.type !== 'permanent'){ + this.mdcDrawer.destroy(); + } + } + renderToolbarSpacer(){ + if(this.toolbarspacer){ + return ( +
+ +
+ ) + } + return null; + } + renderHeader(){ + if(this.header && this.type !== 'permanent'){ + return ( +
+
+ +
+
+ ) + } + return null; + } + renderPermanentDrawer(){ + return ( + + ) + } + renderOtherDrawers(){ + return( + + ) + } + render() { + if(this.type === 'permanent'){ + return this.renderPermanentDrawer() + } + return this.renderOtherDrawers() + } +} diff --git a/packages/mc-wc-ui-components/src/components/drawer/readme.md b/packages/mc-wc-ui-components/src/components/drawer/readme.md new file mode 100644 index 00000000..779cc1b3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/drawer/readme.md @@ -0,0 +1,50 @@ +# mwc-drawer + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| --------------- | --------------- | ----------- | --------- | -------------- | +| `header` | `header` | | `boolean` | `true` | +| `toolbarspacer` | `toolbarspacer` | | `boolean` | `true` | +| `type` | -- | | `String` | `'persistent'` | + + +## Events + +| Event | Description | Type | +| --------------- | ----------- | ------------------ | +| `ondrawerclose` | | `CustomEvent` | +| `ondraweropen` | | `CustomEvent` | + + +## Methods + +### `close() => Promise` + + + +#### Returns + +Type: `Promise` + + + +### `open() => Promise` + + + +#### Returns + +Type: `Promise` + + + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/fab/mwc-fab.scss b/packages/mc-wc-ui-components/src/components/fab/mwc-fab.scss new file mode 100644 index 00000000..95ed80a7 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/fab/mwc-fab.scss @@ -0,0 +1 @@ +@import "@material/fab/mdc-fab.scss"; diff --git a/packages/mc-wc-ui-components/src/components/fab/mwc-fab.tsx b/packages/mc-wc-ui-components/src/components/fab/mwc-fab.tsx new file mode 100644 index 00000000..dec9d49c --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/fab/mwc-fab.tsx @@ -0,0 +1,59 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +import {MDCRipple} from '@material/ripple'; + +@Component({ + tag: 'mwc-fab', + styleUrl: 'mwc-fab.scss', + shadow: false +}) +export class MWCFab{ + + @Prop() icon: string; + @Prop() mini: boolean = false; + @Prop() backgroundcolor: string; + @Prop() color: string; + @Prop() ripple: boolean = true; + + buttonRipple: any; + fab:any; + @Element() fabEl : HTMLElement; + + componentWillLoad(){ + + if(this.color){ + this.fabEl.style.setProperty('--mdc-theme-text-primary-on-secondary',this.color); + } + if(this.backgroundcolor){ + this.fabEl.style.setProperty('--mdc-theme-secondary',this.backgroundcolor); + } + } + componentDidLoad(){ + if(this.ripple){ + this.buttonRipple = MDCRipple.attachTo(this.fab); + } + } + componentDidUnload(){ + if(this.ripple){ + this.buttonRipple.destroy() + } + } + getFabClassName():string{ + let className: string = 'mdc-fab material-icons'; + + if(this.mini){ + className = ` ${className} mdc-fab--mini`; + } + return className; + } + + + render() { + return ( + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/fab/readme.md b/packages/mc-wc-ui-components/src/components/fab/readme.md new file mode 100644 index 00000000..ebca83ac --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/fab/readme.md @@ -0,0 +1,21 @@ +# mwc-fab + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ----------------- | ----------------- | ----------- | --------- | ----------- | +| `backgroundcolor` | `backgroundcolor` | | `string` | `undefined` | +| `color` | `color` | | `string` | `undefined` | +| `icon` | `icon` | | `string` | `undefined` | +| `mini` | `mini` | | `boolean` | `false` | +| `ripple` | `ripple` | | `boolean` | `true` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss new file mode 100644 index 00000000..ee46d6c1 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss @@ -0,0 +1 @@ +@import "@material/grid-list/mdc-grid-list.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx new file mode 100644 index 00000000..898c0bf2 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx @@ -0,0 +1,37 @@ +import { Component, Prop, Element, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-grid-list-tile', + styleUrl: 'mwc-grid-list-tile.scss', + shadow: false +}) +export class MWCGridListTile{ + + @Element() gridListTileEl : HTMLElement; + @Prop() titlebackgroundcolor : string; + tileTitle:any; + + componentWillLoad(){ + if(this.titlebackgroundcolor){ + this.gridListTileEl.style.setProperty('--mdc-theme-primary', `${this.titlebackgroundcolor}`); + } + } + componentDidLoad(){ + this.tileTitle.style.setProperty('height', 'auto'); + } + + render() { + return ( +
  • +
    +
    + +
    +
    + { this.tileTitle = tileTitle; }}> + + +
  • + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.scss b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.scss new file mode 100644 index 00000000..ee46d6c1 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.scss @@ -0,0 +1 @@ +@import "@material/grid-list/mdc-grid-list.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.tsx b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.tsx new file mode 100644 index 00000000..f99765ee --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.tsx @@ -0,0 +1,49 @@ +import { Component, Prop, Element, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-grid-list', + styleUrl: 'mwc-grid-list.scss', + shadow: false +}) +export class MWCGridList{ + + @Element() gridListEl : HTMLElement; + @Prop() tilewidth : string; + @Prop() tiletitleposition : string; + @Prop() aspectratio : string; + /* + 1x1 + 16x9 + 2x3 + 3x2 + 4x3 + 3x4 + */ + componentWillLoad(){ + if(this.tilewidth){ + this.gridListEl.style.setProperty('--mdc-grid-list-tile-width', this.tilewidth); + } + } + + getGridListClassName(){ + let className: string = 'mdc-grid-list'; + if(this.aspectratio){ + className = ` ${className} mdc-grid-list--tile-aspect-${this.aspectratio}`; + } + if(this.tiletitleposition === "top"){ + className = ` ${className} mdc-grid-list--header-caption`; + } + return className; + } + + + render() { + return ( +
    +
      + +
    +
    + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/grid-list/readme.md b/packages/mc-wc-ui-components/src/components/grid-list/readme.md new file mode 100644 index 00000000..6e106df5 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/grid-list/readme.md @@ -0,0 +1,17 @@ +# mwc-grid-list-tile + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ---------------------- | ---------------------- | ----------- | -------- | ----------- | +| `titlebackgroundcolor` | `titlebackgroundcolor` | | `string` | `undefined` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss b/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss new file mode 100644 index 00000000..94a33426 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss @@ -0,0 +1 @@ +@import "@material/icon-toggle/mdc-icon-toggle.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx b/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx new file mode 100644 index 00000000..8fd304ab --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx @@ -0,0 +1,98 @@ +import { Component, Prop, Element, Event, EventEmitter, h } from '@stencil/core'; +import {MDCIconToggle} from '@material/icon-toggle'; + +@Component({ + tag: 'mwc-icon-toggle', + styleUrl: 'mwc-icon-toggle.scss', + shadow: false +}) +export class MWCIconToggle{ + + @Prop() onicon: string; + @Prop() oniconlabel: string = ' '; + @Prop() officon: string; + @Prop() officonlabel: string = ' '; + @Prop() color: string; + @Prop() ripple: boolean = true; + @Prop() disabled: boolean = false; + @Prop() toggleon:boolean = false; + + @Event() oniconchange: EventEmitter; + + mdcIconToggle: any; + iconToggle:any; + elStyleNode: any; + @Element() iconToggleEl : HTMLElement; + + componentWillLoad(){ + if(this.color){ + this.iconToggleEl.style.setProperty('--mdc-theme-text-secondary-on-light',this.color); + } + } + componentDidLoad(){ + if(this.ripple){ + const me = this; + this.mdcIconToggle = MDCIconToggle.attachTo(this.iconToggle); + this.mdcIconToggle.listen('MDCIconToggle:change',({detail})=>{ + console.log(detail) + me.oniconchange.emit(detail) + }) + } + } + componentDidUnload(){ + if(this.ripple){ + this.mdcIconToggle.destroy() + } + } + getStyleNode(){ + var styleNode = document.createElement('style'); + styleNode.type = "text/css"; + var styleText = document.createTextNode(`.mdc-icon-toggle::before, .mdc-icon-toggle::after { + background-color: ${this.color}20 !important; + }`); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.iconToggleEl.appendChild(this.elStyleNode); + } + onFocus(){ + if(this.color){ + this.getStyleNode() + } + } + onBlur(){ + if(this.color){ + this.iconToggleEl.removeChild(this.elStyleNode) + } + } + + getToggleOn(){ + return `{ "content": "${this.onicon}"}`; + } + getToggleOff(){ + return `{ "content": "${this.officon}"}`; + } + getIconClassName():string{ + let className: string = "mdc-icon-toggle material-icons"; + + if(this.disabled){ + className = `${className} mdc-icon-toggle--disabled`; + } + return className; + } + + render() { + return ( + { this.iconToggle = iconToggle; }} + role="button" tabindex="-1" + aria-pressed={this.toggleon} + aria-disabled={this.disabled} + onFocus = {(evt)=> this.onFocus()} + onBlur = {(evt)=> this.onBlur()} + data-toggle-on={this.getToggleOn()} + data-toggle-off={this.getToggleOff()}> + {this.officon} + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/icon-toggle/readme.md b/packages/mc-wc-ui-components/src/components/icon-toggle/readme.md new file mode 100644 index 00000000..127b48b4 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/icon-toggle/readme.md @@ -0,0 +1,31 @@ +# mwc-icon-toggle + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| -------------- | -------------- | ----------- | --------- | ----------- | +| `color` | `color` | | `string` | `undefined` | +| `disabled` | `disabled` | | `boolean` | `false` | +| `officon` | `officon` | | `string` | `undefined` | +| `officonlabel` | `officonlabel` | | `string` | `' '` | +| `onicon` | `onicon` | | `string` | `undefined` | +| `oniconlabel` | `oniconlabel` | | `string` | `' '` | +| `ripple` | `ripple` | | `boolean` | `true` | +| `toggleon` | `toggleon` | | `boolean` | `false` | + + +## Events + +| Event | Description | Type | +| -------------- | ----------- | ------------------ | +| `oniconchange` | | `CustomEvent` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list-item.scss b/packages/mc-wc-ui-components/src/components/list/mwc-list-item.scss new file mode 100644 index 00000000..68edb62a --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/list/mwc-list-item.scss @@ -0,0 +1,18 @@ +@import "@material/list/mdc-list.scss"; +@import "@material/ripple/mdc-ripple.scss"; + + .mwc-list-item{ + &:hover { + cursor: pointer; + background-color: rgba(0, 0, 0, .08); + } + } +.mdc-list-item.mdc-ripple-upgraded{ + left: auto !important; + right: auto !important; + width: auto !important; +} +.mdc-list-item{ + min-height: 48px; + height: auto; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list-item.tsx b/packages/mc-wc-ui-components/src/components/list/mwc-list-item.tsx new file mode 100644 index 00000000..bc511211 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/list/mwc-list-item.tsx @@ -0,0 +1,51 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +import {MDCRipple} from '@material/ripple'; + +@Component({ + tag: 'mwc-list-item', + styleUrl: 'mwc-list-item.scss', + shadow: false +}) +export class MWCListItem{ + + @Element() listItemEl : HTMLElement; + @Prop() ripple: boolean = true; + @Prop() interactive: boolean = true; + + listItemRipple:any; + listItem:any; + + componentWillLoad(){ + // if(this.tilewidth){ + // this.gridListEl.style.setProperty('--mdc-grid-list-tile-width', this.tilewidth); + // } + } + + componentDidLoad(){ + if(this.ripple){ + this.listItemRipple = MDCRipple.attachTo(this.listItem); + // this.listItemRipple.unbounded = true + } + } + componentDidUnload(){ + if(this.ripple){ + this.listItemRipple.destroy() + } + } + + getListItemClassName(){ + let className: string = 'mdc-list-item'; + if(this.interactive){ + className = ` ${className} mwc-list-item`; + } + return className; + } + + render() { + return ( +
  • { this.listItem = listItem; }}> + +
  • + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list-style.ts b/packages/mc-wc-ui-components/src/components/list/mwc-list-style.ts new file mode 100644 index 00000000..f52397d5 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/list/mwc-list-style.ts @@ -0,0 +1,42 @@ +import {getTheme} from '../util/mwc-util' +import setupJss from '../styles/setup-jss' +import deepmerge from 'deepmerge' +import createTheme from '../styles/create-theme' + +const theme = createTheme(getTheme()) + +class ListStyle{ + defaultStyle: object = { + root: { + flex: '1 1 auto', + listStyle: 'none', + margin: 0, + padding: 0, + position: 'relative', + }, + padding: { + paddingTop: theme.spacing.unit, + paddingBottom: theme.spacing.unit, + }, + dense: { + paddingTop: theme.spacing.unit / 2, + paddingBottom: theme.spacing.unit / 2, + }, + subheader: { + paddingTop: 0, + }, + } + + jss:any; + setup(style:object){ + const mergedStyles = deepmerge.all([this.defaultStyle,style]) + this.jss = new setupJss() + this.jss.attachStyleSheet(mergedStyles) + } + getClassName(type:Array):string{ + return this.jss.getClassName(type) + } + +} + +export default ListStyle; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list.scss b/packages/mc-wc-ui-components/src/components/list/mwc-list.scss new file mode 100644 index 00000000..cc1cbde3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/list/mwc-list.scss @@ -0,0 +1,13 @@ +@import "@material/list/mdc-list.scss"; +@import "@material/ripple/mdc-ripple.scss"; + + + .mwc-bordered-list { + padding: 0; + border-top: 1px solid rgba(0, 0, 0, .12); + } + .mwc-bordered-list .mdc-list-item { + padding: 0 16px; + border: 1px solid rgba(0, 0, 0, .12); + border-top: none; + } diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list.tsx b/packages/mc-wc-ui-components/src/components/list/mwc-list.tsx new file mode 100644 index 00000000..cebb1f13 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/list/mwc-list.tsx @@ -0,0 +1,35 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +import ListStyle from './mwc-list-style' + +@Component({ + tag: 'mwc-list', + //styleUrl: 'mwc-list.scss', + shadow: false +}) +export class MWCList{ + + @Element() listEl : HTMLElement; + @Prop() borderlist : boolean = true; + @Prop() dense: boolean = false; + listStyle : any; + + componentWillLoad(){ + this.listStyle = new ListStyle() + let changeStyle: object = { + + } + this.listStyle.setup(changeStyle) + } + getClassNames():Array{ + let classNames:Array = ['root'] + return classNames + } + + render() { + return ( +
      + +
    + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/list/readme.md b/packages/mc-wc-ui-components/src/components/list/readme.md new file mode 100644 index 00000000..d485aaf5 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/list/readme.md @@ -0,0 +1,18 @@ +# mwc-list-item + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------- | ------------- | ----------- | --------- | ------- | +| `interactive` | `interactive` | | `boolean` | `true` | +| `ripple` | `ripple` | | `boolean` | `true` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.scss b/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.scss new file mode 100644 index 00000000..7ebce725 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.scss @@ -0,0 +1 @@ +@import "@material/list/mdc-list.scss"; diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.tsx b/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.tsx new file mode 100644 index 00000000..fed88330 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.tsx @@ -0,0 +1,22 @@ +import { Component, Prop, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-menu-item', + styleUrl: 'mwc-menu-item.scss', + shadow: false +}) +export class MWCMenuItem{ + @Prop() disabled: boolean = false; + @Prop() role: string = "menuitem"; //option + + render() { + return ( +
  • + +
  • + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu.scss b/packages/mc-wc-ui-components/src/components/menu/mwc-menu.scss new file mode 100644 index 00000000..e05189b7 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/menu/mwc-menu.scss @@ -0,0 +1,6 @@ +@import "@material/list/mdc-list.scss"; +@import "@material/menu/mdc-menu.scss"; +.menuPos{ + left:0; + top:0; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu.tsx b/packages/mc-wc-ui-components/src/components/menu/mwc-menu.tsx new file mode 100644 index 00000000..faacb5d0 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/menu/mwc-menu.tsx @@ -0,0 +1,57 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCSimpleMenu} from '@material/menu'; + +@Component({ + tag: 'mwc-menu', + styleUrl: 'mwc-menu.scss', + shadow: false +}) +export class MWCMenu{ + + @Element() menuEl : HTMLElement; + @Prop() open : boolean = false; + + @Method() + async show(focusIndex:number){ + if(focusIndex){ + this.mdcMenuComponent.show({focusIndex}) + }else{ + this.mdcMenuComponent.show() + } + } + + @Method() + async hide(){ + this.mdcMenuComponent.hide() + } + + @Event() selected: EventEmitter; + + mdcMenuComponent:any; + mdcMenu: any; + + componentDidLoad(){ + this.mdcMenuComponent = MDCSimpleMenu.attachTo(this.mdcMenu) + if(this.open){ + this.mdcMenuComponent.open = true; + } + this.mdcMenu.addEventListener('MDCSimpleMenu:selected', (evt) => { + this.selected.emit(evt) + }); + } + componentDidUnload(){ + this.mdcMenuComponent.destroy() + } + + render() { + return ( +
    { this.mdcMenu = mdcMenu; }}> + +
    + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/menu/readme.md b/packages/mc-wc-ui-components/src/components/menu/readme.md new file mode 100644 index 00000000..b6e8200b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/menu/readme.md @@ -0,0 +1,18 @@ +# mwc-menu-item + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ---------- | ---------- | ----------- | --------- | ------------ | +| `disabled` | `disabled` | | `boolean` | `false` | +| `role` | `role` | | `string` | `"menuitem"` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.css b/packages/mc-wc-ui-components/src/components/my-component/my-component.css new file mode 100644 index 00000000..5d4e87f3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/my-component/my-component.css @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.e2e.ts b/packages/mc-wc-ui-components/src/components/my-component/my-component.e2e.ts new file mode 100644 index 00000000..d7ff311a --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/my-component/my-component.e2e.ts @@ -0,0 +1,32 @@ +import { newE2EPage } from '@stencil/core/testing'; + +describe('my-component', () => { + it('renders', async () => { + const page = await newE2EPage(); + + await page.setContent(''); + const element = await page.find('my-component'); + expect(element).toHaveClass('hydrated'); + }); + + it('renders changes to the name data', async () => { + const page = await newE2EPage(); + + await page.setContent(''); + const component = await page.find('my-component'); + const element = await page.find('my-component >>> div'); + expect(element.textContent).toEqual(`Hello, World! I'm `); + + component.setProperty('first', 'James'); + await page.waitForChanges(); + expect(element.textContent).toEqual(`Hello, World! I'm James`); + + component.setProperty('last', 'Quincy'); + await page.waitForChanges(); + expect(element.textContent).toEqual(`Hello, World! I'm James Quincy`); + + component.setProperty('middle', 'Earl'); + await page.waitForChanges(); + expect(element.textContent).toEqual(`Hello, World! I'm James Earl Quincy`); + }); +}); diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.spec.ts b/packages/mc-wc-ui-components/src/components/my-component/my-component.spec.ts new file mode 100644 index 00000000..90f76d48 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/my-component/my-component.spec.ts @@ -0,0 +1,36 @@ +import { newSpecPage } from '@stencil/core/testing'; +import { MyComponent } from './my-component'; + +describe('my-component', () => { + it('renders', async () => { + const {root} = await newSpecPage({ + components: [MyComponent], + html: '' + }); + expect(root).toEqualHtml(` + + +
    + Hello, World! I'm +
    +
    +
    + `); + }); + + it('renders with values', async () => { + const {root} = await newSpecPage({ + components: [MyComponent], + html: `` + }); + expect(root).toEqualHtml(` + + +
    + Hello, World! I'm Stencil 'Don't call me a framework' JS +
    +
    +
    + `); + }); +}); diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.tsx b/packages/mc-wc-ui-components/src/components/my-component/my-component.tsx new file mode 100644 index 00000000..7efc5599 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/my-component/my-component.tsx @@ -0,0 +1,32 @@ +import { Component, Prop, h } from '@stencil/core'; +import { format } from '../../utils/utils'; + +@Component({ + tag: 'my-component', + styleUrl: 'my-component.css', + shadow: true +}) +export class MyComponent { + /** + * The first name + */ + @Prop() first: string; + + /** + * The middle name + */ + @Prop() middle: string; + + /** + * The last name + */ + @Prop() last: string; + + private getText(): string { + return format(this.first, this.middle, this.last); + } + + render() { + return
    Hello, World! I'm {this.getText()}
    ; + } +} diff --git a/packages/mc-wc-ui-components/src/components/my-component/readme.md b/packages/mc-wc-ui-components/src/components/my-component/readme.md new file mode 100644 index 00000000..06b58648 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/my-component/readme.md @@ -0,0 +1,19 @@ +# my-component + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| -------- | --------- | --------------- | -------- | ----------- | +| `first` | `first` | The first name | `string` | `undefined` | +| `last` | `last` | The last name | `string` | `undefined` | +| `middle` | `middle` | The middle name | `string` | `undefined` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/paper/mwc-paper-style.ts b/packages/mc-wc-ui-components/src/components/paper/mwc-paper-style.ts new file mode 100644 index 00000000..97ef4fbd --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/paper/mwc-paper-style.ts @@ -0,0 +1,38 @@ +import {getTheme} from '../util/mwc-util' +import setupJss from '../styles/setup-jss' +import deepmerge from 'deepmerge' +import createTheme from '../styles/create-theme' + +const theme = createTheme(getTheme()) + +const shadows = {}; + theme.shadows.forEach((shadow, index) => { + shadows[`shadow${index}`] = { + boxShadow: shadow, + }; +}); + +class PaperStyle{ + defaultStyle: object = { + root: { + backgroundColor: theme.palette.background.paper, + }, + rounded: { + borderRadius: 2, + }, + ...shadows + } + + jss:any; + setup(style:object){ + const mergedStyles = deepmerge.all([this.defaultStyle,style]) + this.jss = new setupJss() + this.jss.attachStyleSheet(mergedStyles) + } + getClassName(type:Array):string{ + return this.jss.getClassName(type) + } + +} + +export default PaperStyle; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/paper/mwc-paper.tsx b/packages/mc-wc-ui-components/src/components/paper/mwc-paper.tsx new file mode 100644 index 00000000..08bb5b6c --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/paper/mwc-paper.tsx @@ -0,0 +1,40 @@ +import { Component, Prop, h } from '@stencil/core'; +import PaperStyle from './mwc-paper-style' + +@Component({ + tag: 'mwc-paper', + shadow: false +}) +export class MWCPaper{ + + @Prop() width: string = 'auto'; + @Prop() height : string = 'auto'; + @Prop() elevation : number = 2; + @Prop() radius : number = 4; + + paperStyle:any; + + componentWillLoad(){ + this.paperStyle = new PaperStyle() + let changeStyle: object = { + rounded:{ + borderRadius: this.radius, + width : this.width, + height: this.height, + } + } + this.paperStyle.setup(changeStyle) + } + getClassNames():Array{ + let classNames:Array = ['root',`shadow${this.elevation}`, 'rounded'] + return classNames + } + + render() { + return ( +
    + +
    + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/paper/readme.md b/packages/mc-wc-ui-components/src/components/paper/readme.md new file mode 100644 index 00000000..b3c6ebcc --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/paper/readme.md @@ -0,0 +1,33 @@ +# mwc-paper + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ----------- | ----------- | ----------- | -------- | -------- | +| `elevation` | `elevation` | | `number` | `2` | +| `height` | `height` | | `string` | `'auto'` | +| `radius` | `radius` | | `number` | `4` | +| `width` | `width` | | `string` | `'auto'` | + + +## Dependencies + +### Used by + + - [mwc-card](../card) + +### Graph +```mermaid +graph TD; + mwc-card --> mwc-paper + style mwc-paper fill:#f9f,stroke:#333,stroke-width:4px +``` + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/progress/mwc-progress.scss b/packages/mc-wc-ui-components/src/components/progress/mwc-progress.scss new file mode 100644 index 00000000..9567298d --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/progress/mwc-progress.scss @@ -0,0 +1 @@ +@import "@material/linear-progress/mdc-linear-progress.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/progress/mwc-progress.tsx b/packages/mc-wc-ui-components/src/components/progress/mwc-progress.tsx new file mode 100644 index 00000000..cec3f2df --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/progress/mwc-progress.tsx @@ -0,0 +1,102 @@ +import { Component, Prop, Element, Method, h } from '@stencil/core'; +import {MDCLinearProgress} from '@material/linear-progress' +@Component({ + tag: 'mwc-progress', + styleUrl: 'mwc-progress.scss', + shadow: false +}) +export class MWCProgress{ + + @Element() progressEl : HTMLElement; + @Prop() width: string; + @Prop() height : string; + @Prop() show : boolean = true; + @Prop() type : string = 'indeterminate'; + @Prop() reversed: boolean = false; + @Prop() progressbarcolor : string; + @Prop() bufferbarcolor: string ; + + @Method() + async progress(value){ + this.mdcProgress.progress= value; + } + @Method() + async buffer(value){ + this.mdcProgress.buffer= value; + } + /* + determinate + indeterminate + buffer + reversed + indeterminatereversed + bufferreversed + */ + + progressBar:any; + mdcProgress:any; + innerProgressBar:any; + bufferProgressBar:any; + + componentWillLoad(){ + if(this.progressbarcolor){ + this.progressEl.style.setProperty('--mdc-theme-primary',this.progressbarcolor); + } + } + + componentDidLoad(){ + let progressStyle = ''; + let bufferStyle = ''; + if(this.progressbarcolor){ + progressStyle = `background-color: ${this.progressbarcolor};` + } + if(this.bufferbarcolor){ + bufferStyle = `background-color: ${this.bufferbarcolor};` + } + + if(progressStyle.length>0){ + this.innerProgressBar.setAttribute('style',progressStyle) + } + if(bufferStyle.length>0){ + this.bufferProgressBar.setAttribute('style',bufferStyle) + } + + this.mdcProgress = MDCLinearProgress.attachTo(this.progressBar) + this.mdcProgress.progress= 0; + this.mdcProgress.buffer = 0; + } + componentDidUnload(){ + this.mdcProgress.destroy() + } + + getProgressClassName(){ + let className: string = "mdc-linear-progress"; + + if(this.type === "indeterminate"){ + className = `${className} mdc-linear-progress--indeterminate`; + } + if(this.reversed){ + className = ` ${className} mdc-linear-progress--reversed`; + } + if(!this.show){ + className = ` ${className} mdc-linear-progress--closed`; + } + return className; + } + + render() { + return ( +
    { this.progressBar = progressBar; }} + class={this.getProgressClassName()}> +
    +
    { this.bufferProgressBar = bufferProgressBar;}}>
    +
    + { this.innerProgressBar = innerProgressBar;}}> +
    +
    + +
    +
    + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/progress/readme.md b/packages/mc-wc-ui-components/src/components/progress/readme.md new file mode 100644 index 00000000..d3e677ef --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/progress/readme.md @@ -0,0 +1,46 @@ +# mwc-progress + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------------ | ------------------ | ----------- | --------- | ----------------- | +| `bufferbarcolor` | `bufferbarcolor` | | `string` | `undefined` | +| `height` | `height` | | `string` | `undefined` | +| `progressbarcolor` | `progressbarcolor` | | `string` | `undefined` | +| `reversed` | `reversed` | | `boolean` | `false` | +| `show` | `show` | | `boolean` | `true` | +| `type` | `type` | | `string` | `'indeterminate'` | +| `width` | `width` | | `string` | `undefined` | + + +## Methods + +### `buffer(value: any) => Promise` + + + +#### Returns + +Type: `Promise` + + + +### `progress(value: any) => Promise` + + + +#### Returns + +Type: `Promise` + + + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/radio/mwc-radio.scss b/packages/mc-wc-ui-components/src/components/radio/mwc-radio.scss new file mode 100644 index 00000000..1c7838db --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/radio/mwc-radio.scss @@ -0,0 +1 @@ +@import "@material/radio/mdc-radio.scss"; diff --git a/packages/mc-wc-ui-components/src/components/radio/mwc-radio.tsx b/packages/mc-wc-ui-components/src/components/radio/mwc-radio.tsx new file mode 100644 index 00000000..6aac62c0 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/radio/mwc-radio.tsx @@ -0,0 +1,96 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +import {MDCRadio} from '@material/radio'; +import createTheme from '../styles/create-theme'; +import { getTheme } from '../util/mwc-util'; + +@Component({ + tag: 'mwc-radio', + styleUrl: 'mwc-radio.scss', + shadow: false +}) +export class MWCRadio{ + + @Element() radioEl : HTMLElement; + @Prop() borderlist : boolean = true; + @Prop() checked : boolean = false; + @Prop() dense: boolean = false; + @Prop() ripple: boolean = true; + @Prop() name: string; + @Prop() color: 'default' | 'primary' | 'secondary'; //Alex + + + radioRipple:any; + mdcRadio: any; + elStyleNode: any; + + private theme = createTheme(getTheme()); + + componentWillLoad(){ + if(this.color){ //Alex + this.radioEl.style.setProperty('--mdc-theme-secondary',this.theme.palette[this.color][500]); + // this.radioEl.style.setProperty('color',this.theme.palette[this.color][500]); + } + + + } + + componentDidLoad(){ + if(this.ripple){ + this.radioRipple = MDCRadio.attachTo(this.mdcRadio); + // this.radioRipple.unbounded = true + } + } + componentDidUnload(){ + if(this.ripple){ + this.radioRipple.destroy() + } + } + + getListClassName(){ + let className: string = 'mdc-list'; + if(this.borderlist){ + className = ` ${className} webmd-bordered-list`; + } + if(this.dense){ + className = ` ${className} mdc-list--dense`; + } + return className; + } + + getStyleNode(){ + var styleNode = document.createElement('style'); + styleNode.type = "text/css"; + var styleText = document.createTextNode(`.mdc-radio::before, .mdc-radio::after{ + background-color: ${this.color}20 !important; + }`); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.radioEl.appendChild(this.elStyleNode); + } + onFocus(){ + if(this.color){ + this.getStyleNode() + } + } + onBlur(){ + if(this.color){ + this.radioEl.removeChild(this.elStyleNode) + } + } + + render() { + return ( +
    { this.mdcRadio = mdcRadio; }}> + this.onFocus()} + onBlur = {(evt)=> this.onBlur()}/> +
    +
    +
    +
    +
    + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/radio/readme.md b/packages/mc-wc-ui-components/src/components/radio/readme.md new file mode 100644 index 00000000..13701d18 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/radio/readme.md @@ -0,0 +1,22 @@ +# mwc-radio + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------ | ------------ | ----------- | --------------------------------------- | ----------- | +| `borderlist` | `borderlist` | | `boolean` | `true` | +| `checked` | `checked` | | `boolean` | `false` | +| `color` | `color` | | `"default" \| "primary" \| "secondary"` | `undefined` | +| `dense` | `dense` | | `boolean` | `false` | +| `name` | `name` | | `string` | `undefined` | +| `ripple` | `ripple` | | `boolean` | `true` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/select/mwc-select.scss b/packages/mc-wc-ui-components/src/components/select/mwc-select.scss new file mode 100644 index 00000000..c1eb20ef --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/select/mwc-select.scss @@ -0,0 +1,8 @@ +@import "@material/select/mdc-select.scss"; +@import "@material/list/mdc-list.scss"; +@import "@material/menu/mdc-menu.scss"; + +.webmd-select{ + height: auto; + width: auto !important; +} diff --git a/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx b/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx new file mode 100644 index 00000000..eda581e4 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx @@ -0,0 +1,120 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +import {MDCSelect} from '@material/select'; + +@Component({ + tag: 'mwc-select', + styleUrl: 'mwc-select.scss', + shadow: false +}) +export class MWCSelect{ + + @Element() selectEl : HTMLElement; + @Prop() borderlist : boolean = true; + @Prop() checked : boolean = false; + @Prop() dense: boolean = false; + @Prop() ripple: boolean = true; + @Prop() radiocolor: string; + @Prop() name: string; + + mdcSelectComponent:any; + mdcSelect: any; + elStyleNode: any; + + componentWillLoad(){ + if(this.radiocolor){ + // this.radioEl.style.setProperty('--mdc-theme-secondary',this.radiocolor); + } + } + + componentDidLoad(){ + this.mdcSelectComponent = MDCSelect.attachTo(this.mdcSelect) + if(this.ripple){ + // this.radioRipple = MDCRadio.attachTo(this.mdcRadio); + // this.radioRipple.unbounded = true + } + } + componentDidUnload(){ + this.mdcSelectComponent.destroy() + if(this.ripple){ + } + } + + getListClassName(){ + let className: string = 'mdc-list'; + if(this.borderlist){ + className = ` ${className} webmd-bordered-list`; + } + if(this.dense){ + className = ` ${className} mdc-list--dense`; + } + return className; + } + + getStyleNode(){ + var styleNode = document.createElement('style'); + styleNode.type = "text/css"; + var styleText = document.createTextNode(`.mdc-radio::before, .mdc-radio::after{ + background-color: ${this.radiocolor}20 !important; + }`); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + // this.radioEl.appendChild(this.elStyleNode); + } + onFocus(){ + if(this.radiocolor){ + this.getStyleNode() + } + } + onBlur(){ + if(this.radiocolor){ + // this.radioEl.removeChild(this.elStyleNode) + {/*
    { this.mdcRadio = mdcRadio; }}> + this.onFocus()} + onBlur = {(evt)=> this.onBlur()}/> +
    +
    +
    +
    +
    */} + } + } + + render() { + return ( +
    { this.mdcSelect = mdcSelect; }}> +
    +
    Pick a Food Group
    +
    +
    +
    +
    +
      + + {/*
    • + Bread, Cereal, Rice, and Pasta +
    • +
    • + Vegetables +
    • +
    • + Fruit +
    • +
    • + Milk, Yogurt, and Cheese +
    • +
    • + Meat, Poultry, Fish, Dry Beans, Eggs, and Nuts +
    • +
    • + Fats, Oils, and Sweets +
    • */} +
    +
    +
    + + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/select/readme.md b/packages/mc-wc-ui-components/src/components/select/readme.md new file mode 100644 index 00000000..ad0cd068 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/select/readme.md @@ -0,0 +1,22 @@ +# mwc-select + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------ | ------------ | ----------- | --------- | ----------- | +| `borderlist` | `borderlist` | | `boolean` | `true` | +| `checked` | `checked` | | `boolean` | `false` | +| `dense` | `dense` | | `boolean` | `false` | +| `name` | `name` | | `string` | `undefined` | +| `radiocolor` | `radiocolor` | | `string` | `undefined` | +| `ripple` | `ripple` | | `boolean` | `true` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/slider/mwc-slider.scss b/packages/mc-wc-ui-components/src/components/slider/mwc-slider.scss new file mode 100644 index 00000000..6e66b572 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/slider/mwc-slider.scss @@ -0,0 +1 @@ +@import "@material/slider/mdc-slider.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/slider/mwc-slider.tsx b/packages/mc-wc-ui-components/src/components/slider/mwc-slider.tsx new file mode 100644 index 00000000..19c5d75a --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/slider/mwc-slider.tsx @@ -0,0 +1,102 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCSlider} from '@material/slider'; + +@Component({ + tag: 'mwc-slider', + styleUrl: 'mwc-slider.scss', + shadow: false +}) +export class MWCSlider{ + + @Element() sliderEl : HTMLElement; + @Prop() value : number = 50; + @Prop() min : number = 0; + @Prop() max : number = 100; + @Prop() step : number = 0; + @Prop() disabled : boolean = false; + @Prop() discrete : boolean = false; + @Prop() slidercolor : string = "#000000"; + + @Method() + async stepup(amount:number = 1){ + this.mdcSlider.stepUp(amount) + } + + @Method() + async stepdown(amount:number = 1){ + this.mdcSlider.stepDown(amount) + } + + @Event() changeHandler: EventEmitter; + @Event() inputchange: EventEmitter; + + mdcSlider: any; + elStyleNode:any; + + getStyleNode(){ + var styleNode = document.createElement('style'); + styleNode.type = "text/css"; + var styleText = document.createTextNode(`.mdc-slider:not(.mdc-slider--disabled) .mdc-slider__track-container{ + background-color: ${this.slidercolor}20 !important; + }`); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.sliderEl.appendChild(this.elStyleNode); + } + + componentWillLoad(){ + if(this.slidercolor){ + this.sliderEl.style.setProperty('--mdc-theme-secondary',this.slidercolor); + } + } + + componentDidLoad(){ + this.mdcSlider = MDCSlider.attachTo(this.mdcSlider) + this.mdcSlider.listen('MDCSlider:change', () => { + this.changeHandler.emit(this.mdcSlider.value); + }); + this.mdcSlider.listen('MDCSlider:input', () => { + this.inputchange.emit(this.mdcSlider.value); + }); + this.getStyleNode() + } + componentDidUnload(){ + this.mdcSlider.destroy() + this.sliderEl.removeChild(this.elStyleNode) + } + + // Todo Discrete // mdc-slider--display-markers + + getGridListClassName(){ + let className: string = 'mdc-grid-list'; + if(this.discrete){ + className = ` ${className} mdc-grid-list--tile-aspect-${this.discrete}`; + } + return className; + } + + render() { + return ( +
    { this.mdcSlider = mdcSlider; }} + aria-valuemin={this.min} + aria-valuemax={this.max} + aria-valuenow={this.value} + data-step= {this.step} + aria-label="Select Value"> +
    +
    +
    +
    +
    + +
    + + + +
    +
    +
    + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/slider/readme.md b/packages/mc-wc-ui-components/src/components/slider/readme.md new file mode 100644 index 00000000..01cadf0c --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/slider/readme.md @@ -0,0 +1,54 @@ +# mwc-slider + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------- | ------------- | ----------- | --------- | ----------- | +| `disabled` | `disabled` | | `boolean` | `false` | +| `discrete` | `discrete` | | `boolean` | `false` | +| `max` | `max` | | `number` | `100` | +| `min` | `min` | | `number` | `0` | +| `slidercolor` | `slidercolor` | | `string` | `"#000000"` | +| `step` | `step` | | `number` | `0` | +| `value` | `value` | | `number` | `50` | + + +## Events + +| Event | Description | Type | +| --------------- | ----------- | ------------------ | +| `changeHandler` | | `CustomEvent` | +| `inputchange` | | `CustomEvent` | + + +## Methods + +### `stepdown(amount?: number) => Promise` + + + +#### Returns + +Type: `Promise` + + + +### `stepup(amount?: number) => Promise` + + + +#### Returns + +Type: `Promise` + + + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.scss b/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.scss new file mode 100644 index 00000000..3902e8a8 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.scss @@ -0,0 +1 @@ +@import "@material/snackbar/mdc-snackbar.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.tsx b/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.tsx new file mode 100644 index 00000000..89179083 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.tsx @@ -0,0 +1,100 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCSnackbar} from '@material/snackbar'; + +@Component({ + tag: 'mwc-snackbar', + styleUrl: 'mwc-snackbar.scss', + shadow: false +}) +export class MWCSnackbar{ + + @Element() snackBarEl : HTMLElement; + @Prop() message : string = ''; + @Prop() timeout : number = 1000; + @Prop() actiontext : string = ''; + @Prop() multiline : boolean = false; + @Prop() actiononbutton : boolean = false; + @Prop() dismissesonaction: boolean = true; + @Prop() backgroundcolor: string = "#000000"; + @Prop() actioncolor: string = "#ff0ff0"; + @Prop() messagecolor: string = "#ffffff"; + + @Event() actionhandler: EventEmitter; + + @Method() + show(){ + const dataObj = { + message: this.message, + actionText: this.actiontext, + multiline: this.multiline, + timeout: this.timeout, + actionOnBottom : this.multiline && this.actiononbutton , + actionHandler: () => { + this.actionhandler.emit() + } + }; + this.mdcSnackComponent.show(dataObj) + + } + + @Event() selected: EventEmitter; + + mdcSnackComponent:any; + mdcSnackBar: any; + elStyleNode:any; + + + getStyleNode(){ + var styleNode = document.createElement('style'); + styleNode.type = "text/css"; + let bgClass; + if(this.backgroundcolor){ + bgClass = `.webmd-snackbar{ + background-color: ${this.backgroundcolor} !important; + }` + } + if(this.messagecolor){ + bgClass = `${bgClass} .mdc-snackbar__text{ + color: ${this.messagecolor} !important + }` + } + var styleText = document.createTextNode(bgClass); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.snackBarEl.appendChild(this.elStyleNode); + } + + componentWillLoad(){ + if(this.actioncolor){ + this.snackBarEl.style.setProperty('--mdc-theme-secondary',this.actioncolor); + } + } + + componentDidLoad(){ + this.mdcSnackComponent = MDCSnackbar.attachTo(this.mdcSnackBar) + this.mdcSnackComponent.dismissesOnAction = this.dismissesonaction; + if(this.backgroundcolor || this.messagecolor){ + this.getStyleNode() + } + } + componentDidUnload(){ + if(this.backgroundcolor || this.messagecolor){ + this.snackBarEl.removeChild(this.elStyleNode); + } + } + + render() { + return ( + + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/snackbar/readme.md b/packages/mc-wc-ui-components/src/components/snackbar/readme.md new file mode 100644 index 00000000..61fa6b82 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/snackbar/readme.md @@ -0,0 +1,46 @@ +# mwc-snackbar + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------------- | ------------------- | ----------- | --------- | ----------- | +| `actioncolor` | `actioncolor` | | `string` | `"#ff0ff0"` | +| `actiononbutton` | `actiononbutton` | | `boolean` | `false` | +| `actiontext` | `actiontext` | | `string` | `''` | +| `backgroundcolor` | `backgroundcolor` | | `string` | `"#000000"` | +| `dismissesonaction` | `dismissesonaction` | | `boolean` | `true` | +| `message` | `message` | | `string` | `''` | +| `messagecolor` | `messagecolor` | | `string` | `"#ffffff"` | +| `multiline` | `multiline` | | `boolean` | `false` | +| `timeout` | `timeout` | | `number` | `1000` | + + +## Events + +| Event | Description | Type | +| --------------- | ----------- | ------------------ | +| `actionhandler` | | `CustomEvent` | +| `selected` | | `CustomEvent` | + + +## Methods + +### `show() => Promise` + + + +#### Returns + +Type: `Promise` + + + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/styles/breakpoints.d.ts b/packages/mc-wc-ui-components/src/components/styles/breakpoints.d.ts new file mode 100644 index 00000000..91baf6e2 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/breakpoints.d.ts @@ -0,0 +1,20 @@ +export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; +export type BreakpointValues = { [key in Breakpoint]: number }; +export const keys: Breakpoint[]; + +export interface Breakpoints { + keys: Breakpoint[]; + values: BreakpointValues; + up: (key: Breakpoint | number) => string; + down: (key: Breakpoint | number) => string; + between: (start: Breakpoint, end: Breakpoint) => string; + only: (key: Breakpoint) => string; + width: (key: Breakpoint) => number; +} + +export type BreakpointsOptions = Partial< + { + unit: string; + step: number; + } & Breakpoints +>; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/color-manipulator.ts b/packages/mc-wc-ui-components/src/components/styles/color-manipulator.ts new file mode 100644 index 00000000..8c61b5a7 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/color-manipulator.ts @@ -0,0 +1,204 @@ +import warning from 'warning'; + +function clamp(value, min, max) { + warning( + value >= min && value <= max, + `Material-UI: the value provided ${value} is out of range [${min}, ${max}].`, + ); + + if (value < min) { + return min; + } + if (value > max) { + return max; + } + return value; +} + +export function convertColorToString(color: any) { + const { type, values } = color; + + if (type.indexOf('rgb') > -1) { + // Only convert the first 3 values to int (i.e. not alpha) + for (let i = 0; i < 3; i += 1) { + values[i] = parseInt(values[i], 10); + } + } + + let colorString; + + if (type.indexOf('hsl') > -1) { + colorString = `${color.type}(${values[0]}, ${values[1]}%, ${values[2]}%`; + } else { + colorString = `${color.type}(${values[0]}, ${values[1]}, ${values[2]}`; + } + + if (values.length === 4) { + colorString += `, ${color.values[3]})`; + } else { + colorString += ')'; + } + + return colorString; +} + +/** + * Converts a color from CSS hex format to CSS rgb format. + * + * @param {string} color - Hex color, i.e. #nnn or #nnnnnn + * @returns {string} A CSS rgb color string + */ +export function convertHexToRGB(color: string) { + if (color.length === 4) { + let extendedColor = '#'; + for (let i = 1; i < color.length; i += 1) { + extendedColor += color.charAt(i) + color.charAt(i); + } + color = extendedColor; + } + + const values = { + r: parseInt(color.substr(1, 2), 16), + g: parseInt(color.substr(3, 2), 16), + b: parseInt(color.substr(5, 2), 16), + }; + + return `rgb(${values.r}, ${values.g}, ${values.b})`; +} + +/** + * Returns an object with the type and values of a color. + * + * Note: Does not support rgb % values. + * + * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @returns {{type: string, values: number[]}} A MUI color object + */ +export function decomposeColor(color: string) { + if (color.charAt(0) === '#') { + return decomposeColor(convertHexToRGB(color)); + } + + const marker = color.indexOf('('); + const type = color.substring(0, marker); + let values:any[] = color.substring(marker + 1, color.length - 1).split(','); + values = values.map(value => parseFloat(value)); + + return { type, values }; +} + +/** + * Calculates the contrast ratio between two colors. + * + * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests + * + * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @returns {number} A contrast ratio value in the range 0 - 21. + */ +export function getContrastRatio(foreground: string, background: string) { + const lumA = getLuminance(foreground); + const lumB = getLuminance(background); + return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05); +} + +/** + * The relative brightness of any point in a color space, + * normalized to 0 for darkest black and 1 for lightest white. + * + * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests + * + * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @returns {number} The relative brightness of the color in the range 0 - 1 + */ +export function getLuminance(color: string) { + const decomposedColor = decomposeColor(color); + + if (decomposedColor.type.indexOf('rgb') > -1) { + const rgb = decomposedColor.values.map(val => { + val /= 255; // normalized + return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4); + }); + // Truncate at 3 digits + return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3)); + } else if (decomposedColor.type.indexOf('hsl') > -1) { + return decomposedColor.values[2] / 100; + } + + throw new Error(`Material-UI: unsupported \`${color}\` color.`); +} + +/** + * Darken or lighten a colour, depending on its luminance. + * Light colors are darkened, dark colors are lightened. + * + * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @param {number} coefficient=0.15 - multiplier in the range 0 - 1 + * @returns {string} A CSS color string. Hex input values are returned as rgb + */ +export function emphasize(color: string, coefficient: number = 0.15) { + return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient); +} + +/** + * Set the absolute transparency of a color. + * Any existing alpha values are overwritten. + * + * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @param {number} value - value to set the alpha channel to in the range 0 -1 + * @returns {string} A CSS color string. Hex input values are returned as rgb + */ +export function fade(color: any, value: number) { + color = decomposeColor(color); + value = clamp(value, 0, 1); + + if (color.type === 'rgb' || color.type === 'hsl') { + color.type += 'a'; + } + color.values[3] = value; + + return convertColorToString(color); +} + +/** + * Darkens a color. + * + * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @param {number} coefficient - multiplier in the range 0 - 1 + * @returns {string} A CSS color string. Hex input values are returned as rgb + */ +export function darken(color: any, coefficient: number) { + color = decomposeColor(color); + coefficient = clamp(coefficient, 0, 1); + + if (color.type.indexOf('hsl') > -1) { + color.values[2] *= 1 - coefficient; + } else if (color.type.indexOf('rgb') > -1) { + for (let i = 0; i < 3; i += 1) { + color.values[i] *= 1 - coefficient; + } + } + return convertColorToString(color); +} + +/** + * Lightens a color. + * + * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla() + * @param {number} coefficient - multiplier in the range 0 - 1 + * @returns {string} A CSS color string. Hex input values are returned as rgb + */ +export function lighten(color: any, coefficient: number) { + color = decomposeColor(color); + coefficient = clamp(coefficient, 0, 1); + + if (color.type.indexOf('hsl') > -1) { + color.values[2] += (100 - color.values[2]) * coefficient; + } else if (color.type.indexOf('rgb') > -1) { + for (let i = 0; i < 3; i += 1) { + color.values[i] += (255 - color.values[i]) * coefficient; + } + } + + return convertColorToString(color); +} diff --git a/packages/mc-wc-ui-components/src/components/styles/create-breakpoints.ts b/packages/mc-wc-ui-components/src/components/styles/create-breakpoints.ts new file mode 100644 index 00000000..3fcd0bfe --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-breakpoints.ts @@ -0,0 +1,75 @@ +// Sorted ASC by size. That's important. +// It can't be configured as it's used statically for propTypes. +import {BreakpointsOptions, Breakpoints, Breakpoint } from './breakpoints' + +export const keys: Breakpoint[] = ['xs', 'sm', 'md', 'lg', 'xl']; + +export default function createBreakpoints(breakpoints: BreakpointsOptions): Breakpoints{ + const { + // The breakpoint **start** at this value. + // For instance with the first breakpoint xs: [xs, sm[. + values = { + xs: 0, + sm: 600, + md: 960, + lg: 1280, + xl: 1920, + }, + unit = 'px', + step = 5, + ...other + } = breakpoints; + + function up(key) { + const value = typeof values[key] === 'number' ? values[key] : key; + return `@media (min-width:${value}${unit})`; + } + + function down(key) { + const endIndex = keys.indexOf(key) + 1; + const upperbound = values[keys[endIndex]]; + + if (endIndex === keys.length) { + // xl down applies to all sizes + return up('xs'); + } + + const value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key; + return `@media (max-width:${value - step / 100}${unit})`; + } + + function between(start, end) { + const endIndex = keys.indexOf(end) + 1; + + if (endIndex === keys.length) { + return up(start); + } + + return ( + `@media (min-width:${values[start]}${unit}) and ` + + `(max-width:${values[keys[endIndex]] - step / 100}${unit})` + ); + } + + function only(key) { + return between(key, key); + } + + function width(key) { + return values[key]; + } + + let bp: Breakpoints = { + keys, + values, + up, + down, + between, + only, + width, + ...other, + + } + + return bp; +} diff --git a/packages/mc-wc-ui-components/src/components/styles/create-mixins.ts b/packages/mc-wc-ui-components/src/components/styles/create-mixins.ts new file mode 100644 index 00000000..465bb213 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-mixins.ts @@ -0,0 +1,35 @@ +import { Breakpoints } from './breakpoints'; +import { Mixins, MixinsOptions } from './mixins' +import { Spacing } from './spacing' + +export default function createMixins( + breakpoints: Breakpoints, + spacing: Spacing, + mixins: MixinsOptions, +): Mixins{ + + return { + gutters: (styles: Object) => { + return { + paddingLeft: spacing.unit * 2, + paddingRight: spacing.unit * 2, + ...styles, + [breakpoints.up('sm')]: { + paddingLeft: spacing.unit * 3, + paddingRight: spacing.unit * 3, + ...styles[breakpoints.up('sm')], + }, + }; + }, + toolbar: { + minHeight: 56, + [`${breakpoints.up('xs')} and (orientation: landscape)`]: { + minHeight: 48, + }, + [breakpoints.up('sm')]: { + minHeight: 64, + }, + }, + ...mixins, + }; +} diff --git a/packages/mc-wc-ui-components/src/components/styles/create-palette.ts b/packages/mc-wc-ui-components/src/components/styles/create-palette.ts new file mode 100644 index 00000000..ed12ccf1 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-palette.ts @@ -0,0 +1,127 @@ +import deepmerge from 'deepmerge'; // < 1kb payload overhead when lodash/merge is > 3kb. +import indigo from './types/colors/indigo'; +import pink from './types/colors/pink'; +import grey from './types/colors/grey'; +import red from './types/colors/red'; +import common from './types/colors/common'; +import { getContrastRatio, darken, lighten } from './color-manipulator'; +import { PaletteOptions } from './types/palette' + +export const light = { + text: { + primary: 'rgba(0, 0, 0, 0.87)', + secondary: 'rgba(0, 0, 0, 0.54)', + disabled: 'rgba(0, 0, 0, 0.38)', + hint: 'rgba(0, 0, 0, 0.38)', + icon: 'rgba(0, 0, 0, 0.38)', + divider: 'rgba(0, 0, 0, 0.12)', + lightDivider: 'rgba(0, 0, 0, 0.075)', + }, + input: { + bottomLine: 'rgba(0, 0, 0, 0.42)', + helperText: 'rgba(0, 0, 0, 0.54)', + labelText: 'rgba(0, 0, 0, 0.54)', + inputText: 'rgba(0, 0, 0, 0.87)', + disabled: 'rgba(0, 0, 0, 0.42)', + }, + action: { + active: 'rgba(0, 0, 0, 0.54)', + disabled: 'rgba(0, 0, 0, 0.26)', + }, + background: { + paper: common.white, + default: grey[50], + appBar: grey[100], + contentFrame: grey[200], + chip: grey[300], + avatar: grey[400], + }, + line: { + stepper: grey[400], + }, +}; + +export const dark = { + text: { + primary: 'rgba(255, 255, 255, 1)', + secondary: 'rgba(255, 255, 255, 0.7)', + disabled: 'rgba(255, 255, 255, 0.5)', + hint: 'rgba(255, 255, 255, 0.5)', + icon: 'rgba(255, 255, 255, 0.5)', + divider: 'rgba(255, 255, 255, 0.12)', + lightDivider: 'rgba(255, 255, 255, 0.075)', + }, + input: { + bottomLine: 'rgba(255, 255, 255, 0.7)', + helperText: 'rgba(255, 255, 255, 0.7)', + labelText: 'rgba(255, 255, 255, 0.7)', + inputText: 'rgba(255, 255, 255, 1)', + disabled: 'rgba(255, 255, 255, 0.5)', + }, + action: { + active: 'rgba(255, 255, 255, 1)', + disabled: 'rgba(255, 255, 255, 0.3)', + }, + background: { + paper: grey[800], + default: '#303030', + appBar: grey[900], + contentFrame: grey[900], + chip: grey[700], + avatar: grey[600], + }, + line: { + stepper: grey[600], + }, +}; + +export default function createPalette(palette: PaletteOptions) { + const { + primary = indigo, + secondary = pink, + error = red, + type = 'light', + // Same value used by material-components-web + // https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L49 + ...other + } = palette; + const contrastThreshold = 3.1; + const shades = { dark, light }; + + function getContrastText(background) { + // Use the same logic as + // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59 + // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54 + const contrastText = + getContrastRatio(background, dark.text.primary) >= contrastThreshold + ? dark.text.primary + : light.text.primary; + + return contrastText; + } + + const paletteOutput = deepmerge( + { + common, + type, + primary, + secondary, + error, + grey, + shades, + text: shades[type].text, + input: shades[type].input, + action: shades[type].action, + background: shades[type].background, + line: shades[type].line, + contrastThreshold, + getContrastText, + }, + other, + { + clone: false, // No need to clone deep + }, + ); + + return paletteOutput; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/create-shadows.ts b/packages/mc-wc-ui-components/src/components/styles/create-shadows.ts new file mode 100644 index 00000000..f34ca238 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-shadows.ts @@ -0,0 +1,43 @@ +import {Shadows} from './shadows' + +const shadowKeyUmbraOpacity = 0.2; +const shadowKeyPenumbraOpacity = 0.14; +const shadowAmbientShadowOpacity = 0.12; + +function createShadow(...px) { + return [ + `${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0, 0, 0, ${shadowKeyUmbraOpacity})`, + `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0, 0, 0, ${shadowKeyPenumbraOpacity})`, + `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0, 0, 0, ${shadowAmbientShadowOpacity})`, + ].join(','); +} + +const shadows:Shadows = [ + 'none', + createShadow(0, 1, 3, 0, 0, 1, 1, 0, 0, 2, 1, -1), + createShadow(0, 1, 5, 0, 0, 2, 2, 0, 0, 3, 1, -2), + createShadow(0, 1, 8, 0, 0, 3, 4, 0, 0, 3, 3, -2), + createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), + createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), + createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), + createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), + createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), + createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), + createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), + createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), + createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), + createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), + createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), + createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), + createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), + createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), + createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), + createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), + createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), + createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), + createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), + createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), + createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8), +]; + +export default shadows; diff --git a/packages/mc-wc-ui-components/src/components/styles/create-spacing.ts b/packages/mc-wc-ui-components/src/components/styles/create-spacing.ts new file mode 100644 index 00000000..299894a3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-spacing.ts @@ -0,0 +1,7 @@ +import {Spacing} from './spacing' + +const spacing:Spacing = { + unit: 8 +} + +export default spacing \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/create-theme.ts b/packages/mc-wc-ui-components/src/components/styles/create-theme.ts new file mode 100644 index 00000000..1685241c --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-theme.ts @@ -0,0 +1,50 @@ + +import deepmerge from 'deepmerge'; +import createTypography from './create-typography'; +import createBreakpoints from './create-breakpoints'; +import createPalette from './create-palette'; +import createMixins from './create-mixins'; +import shadows from './create-shadows'; +import transitions from './create-transitions'; +import zIndex from './create-zindex'; +import spacing from './create-spacing'; +import {ThemeOptions, Theme} from './theme' + +function createTheme(options?: any):Theme { + const { + palette: paletteInput = {}, + breakpoints: breakpointsInput = {}, + mixins: mixinsInput = {}, + typography: typographyInput = {}, + shadows: shadowsInput, + ...other + } = options; + + console.log(options) + + // let shadows:Shadows = options['shadows'] + + const palette = createPalette(paletteInput); + const breakpoints = createBreakpoints(breakpointsInput); + + const muiTheme = { + direction: 'ltr', + palette, + typography: createTypography(palette, typographyInput), + mixins: createMixins(breakpoints, spacing, mixinsInput), + breakpoints, + shadows: shadowsInput || shadows, + ...deepmerge( + { + transitions, + spacing, + zIndex, + }, + other, + ), + }; + + return muiTheme; +} + +export default createTheme; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/create-transitions.ts b/packages/mc-wc-ui-components/src/components/styles/create-transitions.ts new file mode 100644 index 00000000..c3f4d18d --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-transitions.ts @@ -0,0 +1,74 @@ +import { Easing, Duration } from './transition' + +export const easing: Easing = { + // This is the most common easing curve. + easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)', + // Objects enter the screen at full velocity from off-screen and + // slowly decelerate to a resting point. + easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)', + // Objects leave the screen at full velocity. They do not decelerate when off-screen. + easeIn: 'cubic-bezier(0.4, 0, 1, 1)', + // The sharp curve is used by objects that may return to the screen at any time. + sharp: 'cubic-bezier(0.4, 0, 0.6, 1)', +}; + +// Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations +// to learn when use what timing +export const duration: Duration = { + shortest: 150, + shorter: 200, + short: 250, + // most basic recommended timing + standard: 300, + // this is to be used in complex animations + complex: 375, + // recommended when something is entering screen + enteringScreen: 225, + // recommended when something is leaving screen + leavingScreen: 195, +}; + +export const formatMs = (milliseconds: number) => `${Math.round(milliseconds)}ms`; +export const isString = (value: any) => typeof value === 'string'; +export const isNumber = (value: any) => !Number.isNaN(parseFloat(value)); + +/** + * @param {string|Array} props + * @param {object} param + * @param {string} param.prop + * @param {number} param.duration + * @param {string} param.easing + * @param {number} param.delay + */ +export default { + easing, + duration, + create( + props: string | Array = ['all'], + options: { prop?: string, duration?: number, easing?: string, delay?: number } = {}, + ) { + const { + duration: durationOption = duration.standard, + easing: easingOption = easing.easeInOut, + delay = 0, + ...other + } = options; + + return (Array.isArray(props) ? props : [props]) + .map( + animatedProp => + `${animatedProp} ${formatMs(durationOption)} ${easingOption} ${formatMs(delay)}`, + ) + .join(','); + }, + getAutoHeightDuration(height?: number) { + if (!height) { + return 0; + } + + const constant = height / 36; + + // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10 + return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10); + }, +}; diff --git a/packages/mc-wc-ui-components/src/components/styles/create-typography.ts b/packages/mc-wc-ui-components/src/components/styles/create-typography.ts new file mode 100644 index 00000000..f1c8f66b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-typography.ts @@ -0,0 +1,124 @@ +import deepmerge from 'deepmerge' +import { Palette } from './types/palette' +import { TypographyOptions, Typography } from './typography' + +function round(value) { + return Math.round(value * 1e5) / 1e5; +} + +export default function createTypography( + palette: Palette, + typography: TypographyOptions | ((palette: Palette) => TypographyOptions), +): Typography{ + const { + fontFamily = '"Roboto", "Helvetica", "Arial", sans-serif', + fontSize = 14, // px + fontWeightLight = 300, + fontWeightRegular = 400, + fontWeightMedium = 500, + htmlFontSize = 16, // 16px is the default font-size used by browsers on the html element. + ...other + } = typeof typography === 'function' ? typography(palette) : typography; + + function pxToRem(value) { + return `${value / htmlFontSize}rem`; + } + return deepmerge( + { + pxToRem, + round, + fontFamily, + fontSize, + fontWeightLight, + fontWeightRegular, + fontWeightMedium, + display4: { + fontSize: pxToRem(112), + fontWeight: fontWeightLight, + fontFamily, + letterSpacing: '-.04em', + lineHeight: `${round(128 / 112)}em`, + marginLeft: '-.06em', + color: palette.text.secondary, + }, + display3: { + fontSize: pxToRem(56), + fontWeight: fontWeightRegular, + fontFamily, + letterSpacing: '-.02em', + lineHeight: `${round(73 / 56)}em`, + marginLeft: '-.04em', + color: palette.text.secondary, + }, + display2: { + fontSize: pxToRem(45), + fontWeight: fontWeightRegular, + fontFamily, + lineHeight: `${round(48 / 45)}em`, + marginLeft: '-.04em', + color: palette.text.secondary, + }, + display1: { + fontSize: pxToRem(34), + fontWeight: fontWeightRegular, + fontFamily, + lineHeight: `${round(41 / 34)}em`, + marginLeft: '-.04em', + color: palette.text.secondary, + }, + headline: { + fontSize: pxToRem(24), + fontWeight: fontWeightRegular, + fontFamily, + lineHeight: `${round(32.5 / 24)}em`, + color: palette.text.primary, + }, + title: { + fontSize: pxToRem(21), + fontWeight: fontWeightMedium, + fontFamily, + lineHeight: `${round(24.5 / 21)}em`, + color: palette.text.primary, + }, + subheading: { + fontSize: pxToRem(16), + fontWeight: fontWeightRegular, + fontFamily, + lineHeight: `${round(24 / 16)}em`, + color: palette.text.primary, + }, + body2: { + fontSize: pxToRem(14), + fontWeight: fontWeightMedium, + fontFamily, + lineHeight: `${round(24 / 14)}em`, + color: palette.text.primary, + }, + body1: { + fontSize: pxToRem(14), + fontWeight: fontWeightRegular, + fontFamily, + lineHeight: `${round(20.5 / 14)}em`, + color: palette.text.primary, + }, + caption: { + fontSize: pxToRem(12), + fontWeight: fontWeightRegular, + fontFamily, + lineHeight: `${round(16.5 / 12)}em`, + color: palette.text.secondary, + }, + button: { + fontSize: pxToRem(fontSize), + textTransform: 'uppercase', + fontWeight: fontWeightMedium, + fontFamily, + }, + }, + other, + { + clone: false, // No need to clone deep + }, + ); + +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/create-zindex.ts b/packages/mc-wc-ui-components/src/components/styles/create-zindex.ts new file mode 100644 index 00000000..ff44fb99 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/create-zindex.ts @@ -0,0 +1,13 @@ +import {ZIndex} from './zindex' +// We need to centralize the zIndex definitions as they work +// like global values in the browser. +const zIndex:ZIndex = { + mobileStepper: 1000, + appBar: 1100, + drawer: 1200, + modal: 1300, + snackbar: 1400, + tooltip: 1500, +}; + +export default zIndex; diff --git a/packages/mc-wc-ui-components/src/components/styles/cssproperties.d.ts b/packages/mc-wc-ui-components/src/components/styles/cssproperties.d.ts new file mode 100644 index 00000000..850d21c0 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/cssproperties.d.ts @@ -0,0 +1,1631 @@ +type CSSWideKeyword = "initial" | "inherit" | "unset"; +type CSSPercentage = string; +type CSSLength = number | string; + + // This interface is not complete. Only properties accepting + // unitless numbers are listed here (see CSSProperty.js in React) + export interface CSSProperties { + /** + * Aligns a flex container's lines within the flex container when there is extra space in the cross-axis, similar to how justify-content aligns individual items within the main-axis. + */ + alignContent?: CSSWideKeyword | "flex-start" | "flex-end" | "center" | "space-between" | "space-around" | "stretch"; + + /** + * Sets the default alignment in the cross axis for all of the flex container's items, including anonymous flex items, similarly to how justify-content aligns items along the main axis. + */ + alignItems?: CSSWideKeyword | "flex-start" | "flex-end" | "center" | "baseline" | "stretch"; + + /** + * Allows the default alignment to be overridden for individual flex items. + */ + alignSelf?: CSSWideKeyword | "auto" | "flex-start" | "flex-end" | "center" | "baseline" | "stretch"; + + /** + * This property allows precise alignment of elements, such as graphics, + * that do not have a baseline-table or lack the desired baseline in their baseline-table. + * With the alignment-adjust property, the position of the baseline identified by the alignment-baseline + * can be explicitly determined. It also determines precisely the alignment point for each glyph within a textual element. + */ + alignmentAdjust?: CSSWideKeyword | any; + + alignmentBaseline?: CSSWideKeyword | any; + + /** + * Defines a length of time to elapse before an animation starts, allowing an animation to begin execution some time after it is applied. + */ + animationDelay?: CSSWideKeyword | any; + + /** + * Defines whether an animation should run in reverse on some or all cycles. + */ + animationDirection?: CSSWideKeyword | any; + + /** + * Specifies how many times an animation cycle should play. + */ + animationIterationCount?: CSSWideKeyword | any; + + /** + * Defines the list of animations that apply to the element. + */ + animationName?: CSSWideKeyword | any; + + /** + * Defines whether an animation is running or paused. + */ + animationPlayState?: CSSWideKeyword | any; + + /** + * Allows changing the style of any element to platform-based interface elements or vice versa. + */ + appearance?: CSSWideKeyword | any; + + /** + * Determines whether or not the “back” side of a transformed element is visible when facing the viewer. + */ + backfaceVisibility?: CSSWideKeyword | any; + + /** + * Shorthand property to set the values for one or more of: + * background-clip, background-color, background-image, + * background-origin, background-position, background-repeat, + * background-size, and background-attachment. + */ + background?: CSSWideKeyword | any; + + /** + * If a background-image is specified, this property determines + * whether that image's position is fixed within the viewport, + * or scrolls along with its containing block. + * See CSS 3 background-attachment property https://drafts.csswg.org/css-backgrounds-3/#the-background-attachment + */ + backgroundAttachment?: CSSWideKeyword | "scroll" | "fixed" | "local"; + + /** + * This property describes how the element's background images should blend with each other and the element's background color. + * The value is a list of blend modes that corresponds to each background image. Each element in the list will apply to the + * corresponding element of background-image. If a property doesn’t have enough comma-separated values to match the number of layers, + * the UA must calculate its used value by repeating the list of values until there are enough. + */ + backgroundBlendMode?: CSSWideKeyword | any; + + /** + * Sets the background color of an element. + */ + backgroundColor?: CSSWideKeyword | any; + + backgroundComposite?: CSSWideKeyword | any; + + /** + * Applies one or more background images to an element. These can be any valid CSS image, including url() paths to image files or CSS gradients. + */ + backgroundImage?: CSSWideKeyword | any; + + /** + * Specifies what the background-position property is relative to. + */ + backgroundOrigin?: CSSWideKeyword | any; + + /** + * Sets the position of a background image. + */ + backgroundPosition?: CSSWideKeyword | any; + + /** + * Background-repeat defines if and how background images will be repeated after they have been sized and positioned + */ + backgroundRepeat?: CSSWideKeyword | any; + + /** + * Defines the size of the background images + */ + backgroundSize?: CSSWideKeyword | any; + + /** + * Obsolete - spec retired, not implemented. + */ + baselineShift?: CSSWideKeyword | any; + + /** + * Non standard. Sets or retrieves the location of the Dynamic HTML (DHTML) behavior. + */ + behavior?: CSSWideKeyword | any; + + /** + * Shorthand property that defines the different properties of all four sides of an element's border in a single declaration. + * It can be used to set border-width, border-style and border-color, or a subset of these. + */ + border?: CSSWideKeyword | any; + + /** + * Shorthand that sets the values of border-bottom-color, + * border-bottom-style, and border-bottom-width. + */ + borderBottom?: CSSWideKeyword | any; + + /** + * Sets the color of the bottom border of an element. + */ + borderBottomColor?: CSSWideKeyword | any; + + /** + * Defines the shape of the border of the bottom-left corner. + */ + borderBottomLeftRadius?: CSSWideKeyword | CSSLength; + + /** + * Defines the shape of the border of the bottom-right corner. + */ + borderBottomRightRadius?: CSSWideKeyword | CSSLength; + + /** + * Sets the line style of the bottom border of a box. + */ + borderBottomStyle?: CSSWideKeyword | any; + + /** + * Sets the width of an element's bottom border. To set all four borders, + * use the border-width shorthand property which sets the values simultaneously for border-top-width, + * border-right-width, border-bottom-width, and border-left-width. + */ + borderBottomWidth?: CSSWideKeyword | any; + + /** + * Border-collapse can be used for collapsing the borders between table cells + */ + borderCollapse?: CSSWideKeyword | any; + + /** + * The CSS border-color property sets the color of an element's four borders. + * This property can have from one to four values, made up of the elementary properties: + * • border-top-color + * • border-right-color + * • border-bottom-color + * • border-left-color The default color is the currentColor of each of these values. + * If you provide one value, it sets the color for the element. Two values set the horizontal and vertical values, + * respectively. Providing three values sets the top, vertical, and bottom values, in that order. + * Four values set all for sides: top, right, bottom, and left, in that order. + */ + borderColor?: CSSWideKeyword | any; + + /** + * Specifies different corner clipping effects, such as scoop (inner curves), bevel (straight cuts) or notch (cut-off rectangles). + * Works along with border-radius to specify the size of each corner effect. + */ + borderCornerShape?: CSSWideKeyword | any; + + /** + * The property border-image-source is used to set the image to be used instead of the border style. + * If this is set to none the border-style is used instead. + */ + borderImageSource?: CSSWideKeyword | any; + + /** + * The border-image-width CSS property defines the offset to use for dividing the border image in nine parts, + * the top-left corner, central top edge, top-right-corner, central right edge, bottom-right corner, central bottom edge, + * bottom-left corner, and central right edge. They represent inward distance from the top, right, bottom, and left edges. + */ + borderImageWidth?: CSSWideKeyword | any; + + /** + * Shorthand property that defines the border-width, border-style and border-color of an element's left border in a single declaration. + * Note that you can use the corresponding longhand properties to set specific individual properties of the left border — border-left-width, + * border-left-style and border-left-color. + */ + borderLeft?: CSSWideKeyword | any; + + /** + * The CSS border-left-color property sets the color of an element's left border. This page explains the border-left-color value, + * but often you will find it more convenient to fix the border's left color as part of a shorthand set, either border-left or border-color. + * Colors can be defined several ways. For more information, see Usage. + */ + borderLeftColor?: CSSWideKeyword | any; + + /** + * Sets the style of an element's left border. To set all four borders, use the shorthand property, border-style. + * Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style. + */ + borderLeftStyle?: CSSWideKeyword | any; + + /** + * Sets the width of an element's left border. To set all four borders, + * use the border-width shorthand property which sets the values simultaneously for border-top-width, + * border-right-width, border-bottom-width, and border-left-width. + */ + borderLeftWidth?: CSSWideKeyword | any; + + /** + * Shorthand property that sets the rounding of all four corners. + */ + borderRadius?: CSSWideKeyword | CSSLength; + + /** + * Shorthand property that defines the border-width, border-style and border-color of an element's right border + * in a single declaration. Note that you can use the corresponding longhand properties to set specific + * individual properties of the right border — border-right-width, border-right-style and border-right-color. + */ + borderRight?: CSSWideKeyword | any; + + /** + * Sets the color of an element's right border. This page explains the border-right-color value, + * but often you will find it more convenient to fix the border's right color as part of a shorthand set, + * either border-right or border-color. + * Colors can be defined several ways. For more information, see Usage. + */ + borderRightColor?: CSSWideKeyword | any; + + /** + * Sets the style of an element's right border. To set all four borders, use the shorthand property, + * border-style. Otherwise, you can set the borders individually with border-top-style, border-right-style, + * border-bottom-style, border-left-style. + */ + borderRightStyle?: CSSWideKeyword | any; + + /** + * Sets the width of an element's right border. To set all four borders, + * use the border-width shorthand property which sets the values simultaneously for border-top-width, + * border-right-width, border-bottom-width, and border-left-width. + */ + borderRightWidth?: CSSWideKeyword | any; + + /** + * Specifies the distance between the borders of adjacent cells. + */ + borderSpacing?: CSSWideKeyword | any; + + /** + * Sets the style of an element's four borders. This property can have from one to four values. + * With only one value, the value will be applied to all four borders; + * otherwise, this works as a shorthand property for each of border-top-style, border-right-style, + * border-bottom-style, border-left-style, where each border style may be assigned a separate value. + */ + borderStyle?: CSSWideKeyword | any; + + /** + * Shorthand property that defines the border-width, border-style and border-color of an element's top border + * in a single declaration. Note that you can use the corresponding longhand properties to set specific + * individual properties of the top border — border-top-width, border-top-style and border-top-color. + */ + borderTop?: CSSWideKeyword | any; + + /** + * Sets the color of an element's top border. This page explains the border-top-color value, + * but often you will find it more convenient to fix the border's top color as part of a shorthand set, + * either border-top or border-color. + * Colors can be defined several ways. For more information, see Usage. + */ + borderTopColor?: CSSWideKeyword | any; + + /** + * Sets the rounding of the top-left corner of the element. + */ + borderTopLeftRadius?: CSSWideKeyword | CSSLength; + + /** + * Sets the rounding of the top-right corner of the element. + */ + borderTopRightRadius?: CSSWideKeyword | CSSLength; + + /** + * Sets the style of an element's top border. To set all four borders, use the shorthand property, border-style. + * Otherwise, you can set the borders individually with border-top-style, border-right-style, border-bottom-style, border-left-style. + */ + borderTopStyle?: CSSWideKeyword | any; + + /** + * Sets the width of an element's top border. To set all four borders, + * use the border-width shorthand property which sets the values simultaneously for border-top-width, + * border-right-width, border-bottom-width, and border-left-width. + */ + borderTopWidth?: CSSWideKeyword | any; + + /** + * Sets the width of an element's four borders. This property can have from one to four values. + * This is a shorthand property for setting values simultaneously for border-top-width, + * border-right-width, border-bottom-width, and border-left-width. + */ + borderWidth?: CSSWideKeyword | any; + + /** + * This property specifies how far an absolutely positioned box's bottom margin edge + * is offset above the bottom edge of the box's containing block. For relatively positioned boxes, + * the offset is with respect to the bottom edges of the box itself + * (i.e., the box is given a position in the normal flow, then offset from that position according to these properties). + */ + bottom?: CSSWideKeyword | any; + + /** + * Obsolete. + */ + boxAlign?: CSSWideKeyword | any; + + /** + * Breaks a box into fragments creating new borders, + * padding and repeating backgrounds or lets it stay as a continuous box on a page break, + * column break, or, for inline elements, at a line break. + */ + boxDecorationBreak?: CSSWideKeyword | any; + + /** + * Deprecated + */ + boxDirection?: CSSWideKeyword | any; + + /** + * Do not use. This property has been replaced by the flex-wrap property. + * Gets or sets a value that specifies the direction to add successive rows or columns when the value of box-lines is set to multiple. + */ + boxLineProgression?: CSSWideKeyword | any; + + /** + * Do not use. This property has been replaced by the flex-wrap property. + * Gets or sets a value that specifies whether child elements wrap onto multiple lines or columns based on the space available in the object. + */ + boxLines?: CSSWideKeyword | any; + + /** + * Do not use. This property has been replaced by flex-order. + * Specifies the ordinal group that a child element of the object belongs to. + * This ordinal value identifies the display order (along the axis defined by the box-orient property) for the group. + */ + boxOrdinalGroup?: CSSWideKeyword | any; + + /** + * Deprecated. + */ + boxFlex?: CSSWideKeyword | number; + + /** + * Deprecated. + */ + boxFlexGroup?: CSSWideKeyword | number; + + /** + * Cast a drop shadow from the frame of almost any element. + * MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow + */ + boxShadow?: CSSWideKeyword | any; + + /** + * The CSS break-after property allows you to force a break on multi-column layouts. + * More specifically, it allows you to force a break after an element. + * It allows you to determine if a break should occur, and what type of break it should be. + * The break-after CSS property describes how the page, column or region break behaves after the generated box. + * If there is no generated box, the property is ignored. + */ + breakAfter?: CSSWideKeyword | any; + + /** + * Control page/column/region breaks that fall above a block of content + */ + breakBefore?: CSSWideKeyword | any; + + /** + * Control page/column/region breaks that fall within a block of content + */ + breakInside?: CSSWideKeyword | any; + + /** + * The clear CSS property specifies if an element can be positioned next to + * or must be positioned below the floating elements that precede it in the markup. + */ + clear?: CSSWideKeyword | any; + + /** + * Deprecated; see clip-path. + * Lets you specify the dimensions of an absolutely positioned element that should be visible, + * and the element is clipped into this shape, and displayed. + */ + clip?: CSSWideKeyword | any; + + /** + * Clipping crops an graphic, so that only a portion of the graphic is rendered, or filled. + * This clip-rule property, when used with the clip-path property, defines which clip rule, or algorithm, + * to use when filling the different parts of a graphics. + */ + clipRule?: CSSWideKeyword | any; + + /** + * The color property sets the color of an element's foreground content (usually text), + * accepting any standard CSS color from keywords and hex values to RGB(a) and HSL(a). + */ + color?: CSSWideKeyword | any; + + /** + * Describes the number of columns of the element. + * See CSS 3 column-count property https://www.w3.org/TR/css3-multicol/#cc + */ + columnCount?: CSSWideKeyword | number | "auto"; + + /** + * Specifies how to fill columns (balanced or sequential). + */ + columnFill?: CSSWideKeyword | any; + + /** + * The column-gap property controls the width of the gap between columns in multi-column elements. + */ + columnGap?: CSSWideKeyword | any; + + /** + * Sets the width, style, and color of the rule between columns. + */ + columnRule?: CSSWideKeyword | any; + + /** + * Specifies the color of the rule between columns. + */ + columnRuleColor?: CSSWideKeyword | any; + + /** + * Specifies the width of the rule between columns. + */ + columnRuleWidth?: CSSWideKeyword | any; + + /** + * The column-span CSS property makes it possible for an element to span across all columns when its value is set to all. + * An element that spans more than one column is called a spanning element. + */ + columnSpan?: CSSWideKeyword | any; + + /** + * Specifies the width of columns in multi-column elements. + */ + columnWidth?: CSSWideKeyword | any; + + /** + * This property is a shorthand property for setting column-width and/or column-count. + */ + columns?: CSSWideKeyword | any; + + /** + * The counter-increment property accepts one or more names of counters (identifiers), + * each one optionally followed by an integer which specifies the value by which the counter should be incremented + * (e.g. if the value is 2, the counter increases by 2 each time it is invoked). + */ + counterIncrement?: CSSWideKeyword | any; + + /** + * The counter-reset property contains a list of one or more names of counters, + * each one optionally followed by an integer (otherwise, the integer defaults to 0.). + * Each time the given element is invoked, the counters specified by the property are set to the given integer. + */ + counterReset?: CSSWideKeyword | any; + + /** + * The cue property specifies sound files (known as an "auditory icon") to be played by speech media agents + * before and after presenting an element's content; if only one file is specified, it is played both before and after. + * The volume at which the file(s) should be played, relative to the volume of the main element, may also be specified. + * The icon files may also be set separately with the cue-before and cue-after properties. + */ + cue?: CSSWideKeyword | any; + + /** + * The cue-after property specifies a sound file (known as an "auditory icon") to be played by speech media agents + * after presenting an element's content; the volume at which the file should be played may also be specified. + * The shorthand property cue sets cue sounds for both before and after the element is presented. + */ + cueAfter?: CSSWideKeyword | any; + + /** + * Specifies the mouse cursor displayed when the mouse pointer is over an element. + */ + cursor?: CSSWideKeyword | any; + + /** + * The direction CSS property specifies the text direction/writing direction. The rtl is used for Hebrew or Arabic text, the ltr is for other languages. + */ + direction?: CSSWideKeyword | any; + + /** + * This property specifies the type of rendering box used for an element. It is a shorthand property for many other display properties. + */ + display?: CSSWideKeyword | any; + + /** + * The ‘fill’ property paints the interior of the given graphical element. + * The area to be painted consists of any areas inside the outline of the shape. + * To determine the inside of the shape, all subpaths are considered, + * and the interior is determined according to the rules associated with the current value of the ‘fill-rule’ property. + * The zero-width geometric outline of a shape is included in the area to be painted. + */ + fill?: CSSWideKeyword | any; + + /** + * SVG: Specifies the opacity of the color or the content the current object is filled with. + * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#FillOpacityProperty + */ + fillOpacity?: CSSWideKeyword | number; + + /** + * The ‘fill-rule’ property indicates the algorithm which is to be used to determine what parts of the canvas are included inside the shape. + * For a simple, non-intersecting path, it is intuitively clear what region lies "inside"; + * however, for a more complex path, such as a path that intersects itself or where one subpath encloses another, + * the interpretation of "inside" is not so obvious. + * The ‘fill-rule’ property provides two options for how the inside of a shape is determined: + */ + fillRule?: CSSWideKeyword | any; + + /** + * Applies various image processing effects. This property is largely unsupported. See Compatibility section for more information. + */ + filter?: CSSWideKeyword | any; + + /** + * Shorthand for `flex-grow`, `flex-shrink`, and `flex-basis`. + */ + flex?: CSSWideKeyword | number | string; + + /** + * Obsolete, do not use. This property has been renamed to align-items. + * Specifies the alignment (perpendicular to the layout axis defined by the flex-direction property) of child elements of the object. + */ + flexAlign?: CSSWideKeyword | any; + + /** + * The flex-basis CSS property describes the initial main size of the flex item + * before any free space is distributed according to the flex factors described in the flex property (flex-grow and flex-shrink). + */ + flexBasis?: CSSWideKeyword | any; + + /** + * The flex-direction CSS property describes how flex items are placed in the flex container, by setting the direction of the flex container's main axis. + */ + flexDirection?: CSSWideKeyword | "row" | "row-reverse" | "column" | "column-reverse"; + + /** + * The flex-flow CSS property defines the flex container's main and cross axis. It is a shorthand property for the flex-direction and flex-wrap properties. + */ + flexFlow?: CSSWideKeyword | string; + + /** + * Specifies the flex grow factor of a flex item. + * See CSS flex-grow property https://drafts.csswg.org/css-flexbox-1/#flex-grow-property + */ + flexGrow?: CSSWideKeyword | number; + + /** + * Do not use. This property has been renamed to align-self + * Specifies the alignment (perpendicular to the layout axis defined by flex-direction) of child elements of the object. + */ + flexItemAlign?: CSSWideKeyword | any; + + /** + * Do not use. This property has been renamed to align-content. + * Specifies how a flexbox's lines align within the flexbox when there is extra space along the axis that is perpendicular to the axis defined by the flex-direction property. + */ + flexLinePack?: CSSWideKeyword | any; + + /** + * Gets or sets a value that specifies the ordinal group that a flexbox element belongs to. This ordinal value identifies the display order for the group. + */ + flexOrder?: CSSWideKeyword | any; + + /** + * Specifies the flex shrink factor of a flex item. + * See CSS flex-shrink property https://drafts.csswg.org/css-flexbox-1/#flex-shrink-property + */ + flexShrink?: CSSWideKeyword | number; + + /** + * Specifies whether flex items are forced into a single line or can be wrapped onto multiple lines. + * If wrapping is allowed, this property also enables you to control the direction in which lines are stacked. + * See CSS flex-wrap property https://drafts.csswg.org/css-flexbox-1/#flex-wrap-property + */ + flexWrap?: CSSWideKeyword | "nowrap" | "wrap" | "wrap-reverse"; + + /** + * Elements which have the style float are floated horizontally. + * These elements can move as far to the left or right of the containing element. + * All elements after the floating element will flow around it, but elements before the floating element are not impacted. + * If several floating elements are placed after each other, they will float next to each other as long as there is room. + */ + float?: CSSWideKeyword | any; + + /** + * Flows content from a named flow (specified by a corresponding flow-into) through selected elements to form a dynamic chain of layout regions. + */ + flowFrom?: CSSWideKeyword | any; + + /** + * The font property is shorthand that allows you to do onfonte of two things: you can either set up six of the most mature font properties in one line, + * or you can set one of a choice of keywords to adopt a system font setting. + */ + font?: CSSWideKeyword | any; + + /** + * The font-family property allows one or more font family names and/or generic family names to be specified for usage on the selected element(s)' text. + * The browser then goes through the list; for each character in the selection it applies the first font family that has an available glyph for that character. + */ + fontFamily?: CSSWideKeyword | any; + + /** + * The font-kerning property allows contextual adjustment of inter-glyph spacing, i.e. the spaces between the characters in text. + * This property controls metric kerning - that utilizes adjustment data contained in the font. Optical Kerning is not supported as yet. + */ + fontKerning?: CSSWideKeyword | any; + + /** + * Specifies the size of the font. Used to compute em and ex units. + * See CSS 3 font-size property https://www.w3.org/TR/css-fonts-3/#propdef-font-size + */ + fontSize?: CSSWideKeyword | + "xx-small" | "x-small" | "small" | "medium" | "large" | "x-large" | "xx-large" | + "larger" | "smaller" | + CSSLength | CSSPercentage; + + /** + * The font-size-adjust property adjusts the font-size of the fallback fonts defined with font-family, + * so that the x-height is the same no matter what font is used. + * This preserves the readability of the text when fallback happens. + * See CSS 3 font-size-adjust property https://www.w3.org/TR/css-fonts-3/#propdef-font-size-adjust + */ + fontSizeAdjust?: CSSWideKeyword | "none" | number; + + /** + * Allows you to expand or condense the widths for a normal, condensed, or expanded font face. + * See CSS 3 font-stretch property https://drafts.csswg.org/css-fonts-3/#propdef-font-stretch + */ + fontStretch?: CSSWideKeyword | + "normal" | "ultra-condensed" | "extra-condensed" | "condensed" | "semi-condensed" | + "semi-expanded" | "expanded" | "extra-expanded" | "ultra-expanded"; + + /** + * The font-style property allows normal, italic, or oblique faces to be selected. + * Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face. + * Oblique faces can be simulated by artificially sloping the glyphs of the regular face. + * See CSS 3 font-style property https://www.w3.org/TR/css-fonts-3/#propdef-font-style + */ + fontStyle?: CSSWideKeyword | "normal" | "italic" | "oblique"; + + /** + * This value specifies whether the user agent is allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces. + */ + fontSynthesis?: CSSWideKeyword | any; + + /** + * The font-variant property enables you to select the small-caps font within a font family. + */ + fontVariant?: CSSWideKeyword | any; + + /** + * Fonts can provide alternate glyphs in addition to default glyph for a character. This property provides control over the selection of these alternate glyphs. + */ + fontVariantAlternates?: CSSWideKeyword | any; + + /** + * Specifies the weight or boldness of the font. + * See CSS 3 'font-weight' property https://www.w3.org/TR/css-fonts-3/#propdef-font-weight + */ + fontWeight?: CSSWideKeyword | "normal" | "bold" | "bolder" | "lighter" | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900; + + /** + * Lays out one or more grid items bound by 4 grid lines. Shorthand for setting grid-column-start, grid-column-end, grid-row-start, and grid-row-end in a single declaration. + */ + gridArea?: CSSWideKeyword | any; + + /** + * Controls a grid item's placement in a grid area, particularly grid position and a grid span. Shorthand for setting grid-column-start and grid-column-end in a single declaration. + */ + gridColumn?: CSSWideKeyword | any; + + /** + * Controls a grid item's placement in a grid area as well as grid position and a grid span. + * The grid-column-end property (with grid-row-start, grid-row-end, and grid-column-start) determines a grid item's placement by specifying the grid lines of a grid item's grid area. + */ + gridColumnEnd?: CSSWideKeyword | any; + + /** + * Determines a grid item's placement by specifying the starting grid lines of a grid item's grid area. + * A grid item's placement in a grid area consists of a grid position and a grid span. + * See also ( grid-row-start, grid-row-end, and grid-column-end) + */ + gridColumnStart?: CSSWideKeyword | any; + + /** + * Gets or sets a value that indicates which row an element within a Grid should appear in. Shorthand for setting grid-row-start and grid-row-end in a single declaration. + */ + gridRow?: CSSWideKeyword | any; + + /** + * Determines a grid item’s placement by specifying the block-end. A grid item's placement in a grid area consists of a grid position and a grid span. + * The grid-row-end property (with grid-row-start, grid-column-start, and grid-column-end) determines a grid item's placement by specifying the grid lines of a grid item's grid area. + */ + gridRowEnd?: CSSWideKeyword | any; + + /** + * Specifies a row position based upon an integer location, string value, or desired row size. + * css/properties/grid-row is used as short-hand for grid-row-position and grid-row-position + */ + gridRowPosition?: CSSWideKeyword | any; + + gridRowSpan?: CSSWideKeyword | any; + + /** + * Specifies named grid areas which are not associated with any particular grid item, but can be referenced from the grid-placement properties. + * The syntax of the grid-template-areas property also provides a visualization of the structure of the grid, making the overall layout of the grid container easier to understand. + */ + gridTemplateAreas?: CSSWideKeyword | any; + + /** + * Specifies (with grid-template-rows) the line names and track sizing functions of the grid. + * Each sizing function can be specified as a length, a percentage of the grid container’s size, + * a measurement of the contents occupying the column or row, or a fraction of the free space in the grid. + */ + gridTemplateColumns?: CSSWideKeyword | any; + + /** + * Specifies (with grid-template-columns) the line names and track sizing functions of the grid. + * Each sizing function can be specified as a length, a percentage of the grid container’s size, + * a measurement of the contents occupying the column or row, or a fraction of the free space in the grid. + */ + gridTemplateRows?: CSSWideKeyword | any; + + /** + * Sets the height of an element. The content area of the element height does not include the padding, border, and margin of the element. + */ + height?: CSSWideKeyword | any; + + /** + * Specifies the minimum number of characters in a hyphenated word + */ + hyphenateLimitChars?: CSSWideKeyword | any; + + /** + * Indicates the maximum number of successive hyphenated lines in an element. The ‘no-limit’ value means that there is no limit. + */ + hyphenateLimitLines?: CSSWideKeyword | any; + + /** + * Specifies the maximum amount of trailing whitespace (before justification) that may be left in a line before hyphenation is triggered + * to pull part of a word from the next line back up into the current one. + */ + hyphenateLimitZone?: CSSWideKeyword | any; + + /** + * Specifies whether or not words in a sentence can be split by the use of a manual or automatic hyphenation mechanism. + */ + hyphens?: CSSWideKeyword | any; + + imeMode?: CSSWideKeyword | any; + + /** + * Defines how the browser distributes space between and around flex items + * along the main-axis of their container. + * See CSS justify-content property https://www.w3.org/TR/css-flexbox-1/#justify-content-property + */ + justifyContent?: CSSWideKeyword | "flex-start" | "flex-end" | "center" | "space-between" | "space-around" | "space-evenly"; + + layoutGrid?: CSSWideKeyword | any; + + layoutGridChar?: CSSWideKeyword | any; + + layoutGridLine?: CSSWideKeyword | any; + + layoutGridMode?: CSSWideKeyword | any; + + layoutGridType?: CSSWideKeyword | any; + + /** + * Sets the left edge of an element + */ + left?: CSSWideKeyword | any; + + /** + * The letter-spacing CSS property specifies the spacing behavior between text characters. + */ + letterSpacing?: CSSWideKeyword | any; + + /** + * Deprecated. Gets or sets line-breaking rules for text in selected languages such as Japanese, Chinese, and Korean. + */ + lineBreak?: CSSWideKeyword | any; + + lineClamp?: CSSWideKeyword | number; + + /** + * Specifies the height of an inline block level element. + * See CSS 2.1 line-height property https://www.w3.org/TR/CSS21/visudet.html#propdef-line-height + */ + lineHeight?: CSSWideKeyword | "normal" | number | CSSLength | CSSPercentage; + + /** + * Shorthand property that sets the list-style-type, list-style-position and list-style-image properties in one declaration. + */ + listStyle?: CSSWideKeyword | any; + + /** + * This property sets the image that will be used as the list item marker. When the image is available, + * it will replace the marker set with the 'list-style-type' marker. That also means that if the image is not available, + * it will show the style specified by list-style-property + */ + listStyleImage?: CSSWideKeyword | any; + + /** + * Specifies if the list-item markers should appear inside or outside the content flow. + */ + listStylePosition?: CSSWideKeyword | any; + + /** + * Specifies the type of list-item marker in a list. + */ + listStyleType?: CSSWideKeyword | any; + + /** + * The margin property is shorthand to allow you to set all four margins of an element at once. + * Its equivalent longhand properties are margin-top, margin-right, margin-bottom and margin-left. + * Negative values are also allowed. + */ + margin?: CSSWideKeyword | any; + + /** + * margin-bottom sets the bottom margin of an element. + */ + marginBottom?: CSSWideKeyword | any; + + /** + * margin-left sets the left margin of an element. + */ + marginLeft?: CSSWideKeyword | any; + + /** + * margin-right sets the right margin of an element. + */ + marginRight?: CSSWideKeyword | any; + + /** + * margin-top sets the top margin of an element. + */ + marginTop?: CSSWideKeyword | any; + + /** + * The marquee-direction determines the initial direction in which the marquee content moves. + */ + marqueeDirection?: CSSWideKeyword | any; + + /** + * The 'marquee-style' property determines a marquee's scrolling behavior. + */ + marqueeStyle?: CSSWideKeyword | any; + + /** + * This property is shorthand for setting mask-image, mask-mode, mask-repeat, mask-position, mask-clip, mask-origin, mask-composite and mask-size. + * Omitted values are set to their original properties' initial values. + */ + mask?: CSSWideKeyword | any; + + /** + * This property is shorthand for setting mask-border-source, mask-border-slice, mask-border-width, mask-border-outset, and mask-border-repeat. + * Omitted values are set to their original properties' initial values. + */ + maskBorder?: CSSWideKeyword | any; + + /** + * This property specifies how the images for the sides and the middle part of the mask image are scaled and tiled. + * The first keyword applies to the horizontal sides, the second one applies to the vertical ones. + * If the second keyword is absent, it is assumed to be the same as the first, similar to the CSS border-image-repeat property. + */ + maskBorderRepeat?: CSSWideKeyword | any; + + /** + * This property specifies inward offsets from the top, right, bottom, and left edges of the mask image, + * dividing it into nine regions: four corners, four edges, and a middle. + * The middle image part is discarded and treated as fully transparent black unless the fill keyword is present. + * The four values set the top, right, bottom and left offsets in that order, similar to the CSS border-image-slice property. + */ + maskBorderSlice?: CSSWideKeyword | any; + + /** + * Specifies an image to be used as a mask. An image that is empty, fails to download, is non-existent, or cannot be displayed is ignored and does not mask the element. + */ + maskBorderSource?: CSSWideKeyword | any; + + /** + * This property sets the width of the mask box image, similar to the CSS border-image-width property. + */ + maskBorderWidth?: CSSWideKeyword | any; + + /** + * Determines the mask painting area, which defines the area that is affected by the mask. + * The painted content of an element may be restricted to this area. + */ + maskClip?: CSSWideKeyword | any; + + /** + * For elements rendered as a single box, specifies the mask positioning area. + * For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) + * specifies which boxes box-decoration-break operates on to determine the mask positioning area(s). + */ + maskOrigin?: CSSWideKeyword | any; + + /** + * This property must not be used. It is no longer included in any standard or standard track specification, + * nor is it implemented in any browser. It is only used when the text-align-last property is set to size. + * It controls allowed adjustments of font-size to fit line content. + */ + maxFontSize?: CSSWideKeyword | any; + + /** + * Sets the maximum height for an element. It prevents the height of the element to exceed the specified value. + * If min-height is specified and is greater than max-height, max-height is overridden. + */ + maxHeight?: CSSWideKeyword | any; + + /** + * Sets the maximum width for an element. It limits the width property to be larger than the value specified in max-width. + */ + maxWidth?: CSSWideKeyword | any; + + /** + * Sets the minimum height for an element. It prevents the height of the element to be smaller than the specified value. + * The value of min-height overrides both max-height and height. + */ + minHeight?: CSSWideKeyword | any; + + /** + * Sets the minimum width of an element. It limits the width property to be not smaller than the value specified in min-width. + */ + minWidth?: CSSWideKeyword | any; + + /** + * Specifies the transparency of an element. + * See CSS 3 opacity property https://drafts.csswg.org/css-color-3/#opacity + */ + opacity?: CSSWideKeyword | number; + + /** + * Specifies the order used to lay out flex items in their flex container. + * Elements are laid out in the ascending order of the order value. + * See CSS order property https://drafts.csswg.org/css-flexbox-1/#order-property + */ + order?: CSSWideKeyword | number; + + /** + * In paged media, this property defines the minimum number of lines in + * a block container that must be left at the bottom of the page. + * See CSS 3 orphans, widows properties https://drafts.csswg.org/css-break-3/#widows-orphans + */ + orphans?: CSSWideKeyword | number; + + /** + * The CSS outline property is a shorthand property for setting one or more of the individual outline properties outline-style, + * outline-width and outline-color in a single rule. In most cases the use of this shortcut is preferable and more convenient. + * Outlines differ from borders in the following ways: + * • Outlines do not take up space, they are drawn above the content. + * • Outlines may be non-rectangular. They are rectangular in Gecko/Firefox. + * Internet Explorer attempts to place the smallest contiguous outline around all elements or shapes that are indicated to have an outline. + * Opera draws a non-rectangular shape around a construct. + */ + outline?: CSSWideKeyword | any; + + /** + * The outline-color property sets the color of the outline of an element. An outline is a line that is drawn around elements, outside the border edge, to make the element stand out. + */ + outlineColor?: CSSWideKeyword | any; + + /** + * The outline-offset property offsets the outline and draw it beyond the border edge. + */ + outlineOffset?: CSSWideKeyword | any; + + /** + * The overflow property controls how extra content exceeding the bounding box of an element is rendered. + * It can be used in conjunction with an element that has a fixed width and height, to eliminate text-induced page distortion. + */ + overflow?: CSSWideKeyword | "auto" | "hidden" | "scroll" | "visible"; + + /** + * Specifies the preferred scrolling methods for elements that overflow. + */ + overflowStyle?: CSSWideKeyword | any; + + /** + * Controls how extra content exceeding the x-axis of the bounding box of an element is rendered. + */ + overflowX?: CSSWideKeyword | "auto" | "hidden" | "scroll" | "visible"; + + /** + * Controls how extra content exceeding the y-axis of the bounding box of an element is rendered. + */ + overflowY?: CSSWideKeyword | "auto" | "hidden" | "scroll" | "visible"; + + /** + * The padding optional CSS property sets the required padding space on one to four sides of an element. + * The padding area is the space between an element and its border. Negative values are not allowed but decimal values are permitted. + * The element size is treated as fixed, and the content of the element shifts toward the center as padding is increased. + * The padding property is a shorthand to avoid setting each side separately (padding-top, padding-right, padding-bottom, padding-left). + */ + padding?: CSSWideKeyword | any; + + /** + * The padding-bottom CSS property of an element sets the padding space required on the bottom of an element. + * The padding area is the space between the content of the element and its border. + * Contrary to margin-bottom values, negative values of padding-bottom are invalid. + */ + paddingBottom?: CSSWideKeyword | any; + + /** + * The padding-left CSS property of an element sets the padding space required on the left side of an element. + * The padding area is the space between the content of the element and its border. + * Contrary to margin-left values, negative values of padding-left are invalid. + */ + paddingLeft?: CSSWideKeyword | any; + + /** + * The padding-right CSS property of an element sets the padding space required on the right side of an element. + * The padding area is the space between the content of the element and its border. + * Contrary to margin-right values, negative values of padding-right are invalid. + */ + paddingRight?: CSSWideKeyword | any; + + /** + * The padding-top CSS property of an element sets the padding space required on the top of an element. + * The padding area is the space between the content of the element and its border. + * Contrary to margin-top values, negative values of padding-top are invalid. + */ + paddingTop?: CSSWideKeyword | any; + + /** + * The page-break-after property is supported in all major browsers. With CSS3, page-break-* properties are only aliases of the break-* properties. + * The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation. + */ + pageBreakAfter?: CSSWideKeyword | any; + + /** + * The page-break-before property sets the page-breaking behavior before an element. + * With CSS3, page-break-* properties are only aliases of the break-* properties. + * The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation. + */ + pageBreakBefore?: CSSWideKeyword | any; + + /** + * Sets the page-breaking behavior inside an element. With CSS3, page-break-* properties are only aliases of the break-* properties. + * The CSS3 Fragmentation spec defines breaks for all CSS box fragmentation. + */ + pageBreakInside?: CSSWideKeyword | any; + + /** + * The pause property determines how long a speech media agent should pause before and after presenting an element. + * It is a shorthand for the pause-before and pause-after properties. + */ + pause?: CSSWideKeyword | any; + + /** + * The pause-after property determines how long a speech media agent should pause after presenting an element. + * It may be replaced by the shorthand property pause, which sets pause time before and after. + */ + pauseAfter?: CSSWideKeyword | any; + + /** + * The pause-before property determines how long a speech media agent should pause before presenting an element. + * It may be replaced by the shorthand property pause, which sets pause time before and after. + */ + pauseBefore?: CSSWideKeyword | any; + + /** + * The perspective property defines how far an element is placed from the view on the z-axis, from the screen to the viewer. + * Perspective defines how an object is viewed. In graphic arts, perspective is the representation on a flat surface of what the viewer's eye would see in a 3D space. + * (See Wikipedia for more information about graphical perspective and for related illustrations.) + * The illusion of perspective on a flat surface, such as a computer screen, + * is created by projecting points on the flat surface as they would appear if the flat surface were a window + * through which the viewer was looking at the object. In discussion of virtual environments, this flat surface is called a projection plane. + */ + perspective?: CSSWideKeyword | any; + + /** + * The perspective-origin property establishes the origin for the perspective property. + * It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element. + * When used with perspective, perspective-origin changes the appearance of an object, + * as if a viewer were looking at it from a different origin. + * An object appears differently if a viewer is looking directly at it versus looking at it from below, above, or from the side. + * Thus, the perspective-origin is like a vanishing point. + * The default value of perspective-origin is 50% 50%. + * This displays an object as if the viewer's eye were positioned directly at the center of the screen, both top-to-bottom and left-to-right. + * A value of 0% 0% changes the object as if the viewer was looking toward the top left angle. + * A value of 100% 100% changes the appearance as if viewed toward the bottom right angle. + */ + perspectiveOrigin?: CSSWideKeyword | any; + + /** + * The pointer-events property allows you to control whether an element can be the target for the pointing device (e.g, mouse, pen) events. + */ + pointerEvents?: CSSWideKeyword | any; + + /** + * The position property controls the type of positioning used by an element within its parent elements. + * The effect of the position property depends on a lot of factors, for example the position property of parent elements. + */ + position?: CSSWideKeyword | "static" | "relative" | "absolute" | "fixed" | "sticky"; + + /** + * Obsolete: unsupported. + * This property determines whether or not a full-width punctuation mark character should be trimmed if it appears at the beginning of a line, + * so that its "ink" lines up with the first glyph in the line above and below. + */ + punctuationTrim?: CSSWideKeyword | any; + + /** + * Sets the type of quotation marks for embedded quotations. + */ + quotes?: CSSWideKeyword | any; + + /** + * Controls whether the last region in a chain displays additional 'overset' content according its default overflow property, + * or if it displays a fragment of content as if it were flowing into a subsequent region. + */ + regionFragment?: CSSWideKeyword | any; + + /** + * The rest-after property determines how long a speech media agent should pause after presenting an element's main content, + * before presenting that element's exit cue sound. It may be replaced by the shorthand property rest, which sets rest time before and after. + */ + restAfter?: CSSWideKeyword | any; + + /** + * The rest-before property determines how long a speech media agent should pause after presenting an intro cue sound for an element, + * before presenting that element's main content. It may be replaced by the shorthand property rest, which sets rest time before and after. + */ + restBefore?: CSSWideKeyword | any; + + /** + * Specifies the position an element in relation to the right side of the containing element. + */ + right?: CSSWideKeyword | any; + + rubyAlign?: CSSWideKeyword | any; + + rubyPosition?: CSSWideKeyword | any; + + /** + * Defines the alpha channel threshold used to extract a shape from an image. Can be thought of as a "minimum opacity" threshold; + * that is, a value of 0.5 means that the shape will enclose all the pixels that are more than 50% opaque. + */ + shapeImageThreshold?: CSSWideKeyword | any; + + /** + * A future level of CSS Shapes will define a shape-inside property, which will define a shape to wrap content within the element. + * See Editor's Draft and CSSWG wiki page on next-level plans + */ + shapeInside?: CSSWideKeyword | any; + + /** + * Adds a margin to a shape-outside. In effect, defines a new shape that is the smallest contour around all the points + * that are the shape-margin distance outward perpendicular to each point on the underlying shape. + * For points where a perpendicular direction is not defined (e.g., a triangle corner), + * takes all points on a circle centered at the point and with a radius of the shape-margin distance. + * This property accepts only non-negative values. + */ + shapeMargin?: CSSWideKeyword | any; + + /** + * Declares a shape around which text should be wrapped, with possible modifications from the shape-margin property. + * The shape defined by shape-outside and shape-margin changes the geometry of a float element's float area. + */ + shapeOutside?: CSSWideKeyword | any; + + /** + * The speak property determines whether or not a speech synthesizer will read aloud the contents of an element. + */ + speak?: CSSWideKeyword | any; + + /** + * The speak-as property determines how the speech synthesizer interprets the content: words as whole words or as a sequence of letters, + * numbers as a numerical value or a sequence of digits, punctuation as pauses in speech or named punctuation characters. + */ + speakAs?: CSSWideKeyword | any; + + /** + * SVG: Specifies the opacity of the outline on the current object. + * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#StrokeOpacityProperty + */ + strokeOpacity?: CSSWideKeyword | number; + + /** + * SVG: Specifies the width of the outline on the current object. + * See SVG 1.1 https://www.w3.org/TR/SVG/painting.html#StrokeWidthProperty + */ + strokeWidth?: CSSWideKeyword | CSSPercentage | CSSLength; + + /** + * The tab-size CSS property is used to customise the width of a tab (U+0009) character. + */ + tabSize?: CSSWideKeyword | any; + + /** + * The 'table-layout' property controls the algorithm used to lay out the table cells, rows, and columns. + */ + tableLayout?: CSSWideKeyword | any; + + /** + * The text-align CSS property describes how inline content like text is aligned in its parent block element. + * text-align does not control the alignment of block elements itself, only their inline content. + */ + textAlign?: CSSWideKeyword | any; + + /** + * The text-align-last CSS property describes how the last line of a block element or a line before line break is aligned in its parent block element. + */ + textAlignLast?: CSSWideKeyword | any; + + /** + * The text-decoration CSS property is used to set the text formatting to underline, overline, line-through or blink. + * underline and overline decorations are positioned under the text, line-through over it. + */ + textDecoration?: CSSWideKeyword | any; + + /** + * Sets the color of any text decoration, such as underlines, overlines, and strike throughs. + */ + textDecorationColor?: CSSWideKeyword | any; + + /** + * Sets what kind of line decorations are added to an element, such as underlines, overlines, etc. + */ + textDecorationLine?: CSSWideKeyword | any; + + textDecorationLineThrough?: CSSWideKeyword | any; + + textDecorationNone?: CSSWideKeyword | any; + + textDecorationOverline?: CSSWideKeyword | any; + + /** + * Specifies what parts of an element’s content are skipped over when applying any text decoration. + */ + textDecorationSkip?: CSSWideKeyword | any; + + /** + * This property specifies the style of the text decoration line drawn on the specified element. + * The intended meaning for the values are the same as those of the border-style-properties. + */ + textDecorationStyle?: CSSWideKeyword | any; + + textDecorationUnderline?: CSSWideKeyword | any; + + /** + * The text-emphasis property will apply special emphasis marks to the elements text. + * Slightly similar to the text-decoration property only that this property can have affect on the line-height. + * It also is noted that this is shorthand for text-emphasis-style and for text-emphasis-color. + */ + textEmphasis?: CSSWideKeyword | any; + + /** + * The text-emphasis-color property specifies the foreground color of the emphasis marks. + */ + textEmphasisColor?: CSSWideKeyword | any; + + /** + * The text-emphasis-style property applies special emphasis marks to an element's text. + */ + textEmphasisStyle?: CSSWideKeyword | any; + + /** + * This property helps determine an inline box's block-progression dimension, + * derived from the text-height and font-size properties for non-replaced elements, + * the height or the width for replaced elements, and the stacked block-progression dimension for inline-block elements. + * The block-progression dimension determines the position of the padding, border and margin for the element. + */ + textHeight?: CSSWideKeyword | any; + + /** + * Specifies the amount of space horizontally that should be left on the first line of the text of an element. + * This horizontal spacing is at the beginning of the first line and is in respect to the left edge of the containing block box. + */ + textIndent?: CSSWideKeyword | any; + + textJustifyTrim?: CSSWideKeyword | any; + + textKashidaSpace?: CSSWideKeyword | any; + + /** + * The text-line-through property is a shorthand property for text-line-through-style, text-line-through-color and text-line-through-mode. + * (Considered obsolete; use text-decoration instead.) + */ + textLineThrough?: CSSWideKeyword | any; + + /** + * Specifies the line colors for the line-through text decoration. + * (Considered obsolete; use text-decoration-color instead.) + */ + textLineThroughColor?: CSSWideKeyword | any; + + /** + * Sets the mode for the line-through text decoration, determining whether the text decoration affects the space characters or not. + * (Considered obsolete; use text-decoration-skip instead.) + */ + textLineThroughMode?: CSSWideKeyword | any; + + /** + * Specifies the line style for line-through text decoration. + * (Considered obsolete; use text-decoration-style instead.) + */ + textLineThroughStyle?: CSSWideKeyword | any; + + /** + * Specifies the line width for the line-through text decoration. + */ + textLineThroughWidth?: CSSWideKeyword | any; + + /** + * The text-overflow shorthand CSS property determines how overflowed content that is not displayed is signaled to the users. + * It can be clipped, display an ellipsis ('…', U+2026 HORIZONTAL ELLIPSIS) or a Web author-defined string. + * It covers the two long-hand properties text-overflow-mode and text-overflow-ellipsis + */ + textOverflow?: CSSWideKeyword | any; + + /** + * The text-overline property is the shorthand for the text-overline-style, text-overline-width, text-overline-color, and text-overline-mode properties. + */ + textOverline?: CSSWideKeyword | any; + + /** + * Specifies the line color for the overline text decoration. + */ + textOverlineColor?: CSSWideKeyword | any; + + /** + * Sets the mode for the overline text decoration, determining whether the text decoration affects the space characters or not. + */ + textOverlineMode?: CSSWideKeyword | any; + + /** + * Specifies the line style for overline text decoration. + */ + textOverlineStyle?: CSSWideKeyword | any; + + /** + * Specifies the line width for the overline text decoration. + */ + textOverlineWidth?: CSSWideKeyword | any; + + /** + * The text-rendering CSS property provides information to the browser about how to optimize when rendering text. + * Options are: legibility, speed or geometric precision. + */ + textRendering?: CSSWideKeyword | any; + + /** + * Obsolete: unsupported. + */ + textScript?: CSSWideKeyword | any; + + /** + * The CSS text-shadow property applies one or more drop shadows to the text and of an element. + * Each shadow is specified as an offset from the text, along with optional color and blur radius values. + */ + textShadow?: CSSWideKeyword | any; + + /** + * This property transforms text for styling purposes. (It has no effect on the underlying content.) + */ + textTransform?: CSSWideKeyword | any; + + /** + * Unsupported. + * This property will add a underline position value to the element that has an underline defined. + */ + textUnderlinePosition?: CSSWideKeyword | any; + + /** + * After review this should be replaced by text-decoration should it not? + * This property will set the underline style for text with a line value for underline, overline, and line-through. + */ + textUnderlineStyle?: CSSWideKeyword | any; + + /** + * This property specifies how far an absolutely positioned box's top margin edge is offset below the top edge of the box's containing block. + * For relatively positioned boxes, the offset is with respect to the top edges of the box itself (i.e., the box is given a position in the normal flow, + * then offset from that position according to these properties). + */ + top?: CSSWideKeyword | any; + + /** + * Determines whether touch input may trigger default behavior supplied by the user agent, such as panning or zooming. + */ + touchAction?: CSSWideKeyword | any; + + /** + * CSS transforms allow elements styled with CSS to be transformed in two-dimensional or three-dimensional space. + * Using this property, elements can be translated, rotated, scaled, and skewed. The value list may consist of 2D and/or 3D transform values. + */ + transform?: CSSWideKeyword | any; + + /** + * This property defines the origin of the transformation axes relative to the element to which the transformation is applied. + */ + transformOrigin?: CSSWideKeyword | any; + + /** + * This property allows you to define the relative position of the origin of the transformation grid along the z-axis. + */ + transformOriginZ?: CSSWideKeyword | any; + + /** + * This property specifies how nested elements are rendered in 3D space relative to their parent. + */ + transformStyle?: CSSWideKeyword | any; + + /** + * The transition CSS property is a shorthand property for transition-property, transition-duration, transition-timing-function, + * and transition-delay. It allows to define the transition between two states of an element. + */ + transition?: CSSWideKeyword | any; + + /** + * Defines when the transition will start. A value of ‘0s’ means the transition will execute as soon as the property is changed. + * Otherwise, the value specifies an offset from the moment the property is changed, and the transition will delay execution by that offset. + */ + transitionDelay?: CSSWideKeyword | any; + + /** + * The 'transition-duration' property specifies the length of time a transition animation takes to complete. + */ + transitionDuration?: CSSWideKeyword | any; + + /** + * The 'transition-property' property specifies the name of the CSS property to which the transition is applied. + */ + transitionProperty?: CSSWideKeyword | any; + + /** + * Sets the pace of action within a transition + */ + transitionTimingFunction?: CSSWideKeyword | any; + + /** + * The unicode-bidi CSS property specifies the level of embedding with respect to the bidirectional algorithm. + */ + unicodeBidi?: CSSWideKeyword | any; + + /** + * unicode-range allows you to set a specific range of characters to be downloaded from a font (embedded using @font-face) and made available for use on the current page. + */ + unicodeRange?: CSSWideKeyword | any; + + /** + * This is for all the high level UX stuff. + */ + userFocus?: CSSWideKeyword | any; + + /** + * For inputing user content + */ + userInput?: CSSWideKeyword | any; + + /** + * The vertical-align property controls how inline elements or text are vertically aligned compared to the baseline. + * If this property is used on table-cells it controls the vertical alignment of content of the table cell. + */ + verticalAlign?: CSSWideKeyword | any; + + /** + * The visibility property specifies whether the boxes generated by an element are rendered. + */ + visibility?: CSSWideKeyword | any; + + /** + * The voice-balance property sets the apparent position (in stereo sound) of the synthesized voice for spoken media. + */ + voiceBalance?: CSSWideKeyword | any; + + /** + * The voice-duration property allows the author to explicitly set the amount of time it should take a speech synthesizer to read an element's content, + * for example to allow the speech to be synchronized with other media. + * With a value of auto (the default) the length of time it takes to read the content is determined by the content itself and the voice-rate property. + */ + voiceDuration?: CSSWideKeyword | any; + + /** + * The voice-family property sets the speaker's voice used by a speech media agent to read an element. + * The speaker may be specified as a named character (to match a voice option in the speech reading software) + * or as a generic description of the age and gender of the voice. + * Similar to the font-family property for visual media, + * a comma-separated list of fallback options may be given in case the speech reader does not recognize the character name + * or cannot synthesize the requested combination of generic properties. + */ + voiceFamily?: CSSWideKeyword | any; + + /** + * The voice-pitch property sets pitch or tone (high or low) for the synthesized speech when reading an element; + * the pitch may be specified absolutely or relative to the normal pitch for the voice-family used to read the text. + */ + voicePitch?: CSSWideKeyword | any; + + /** + * The voice-range property determines how much variation in pitch or tone will be created by the speech synthesize when reading an element. + * Emphasized text, grammatical structures and punctuation may all be rendered as changes in pitch, + * this property determines how strong or obvious those changes are; + * large ranges are associated with enthusiastic or emotional speech, + * while small ranges are associated with flat or mechanical speech. + */ + voiceRange?: CSSWideKeyword | any; + + /** + * The voice-rate property sets the speed at which the voice synthesized by a speech media agent will read content. + */ + voiceRate?: CSSWideKeyword | any; + + /** + * The voice-stress property sets the level of vocal emphasis to be used for synthesized speech reading the element. + */ + voiceStress?: CSSWideKeyword | any; + + /** + * The voice-volume property sets the volume for spoken content in speech media. It replaces the deprecated volume property. + */ + voiceVolume?: CSSWideKeyword | any; + + /** + * The white-space property controls whether and how white space inside the element is collapsed, and whether lines may wrap at unforced "soft wrap" opportunities. + */ + whiteSpace?: CSSWideKeyword | any; + + /** + * Obsolete: unsupported. + */ + whiteSpaceTreatment?: CSSWideKeyword | any; + + /** + * In paged media, this property defines the mimimum number of lines + * that must be left at the top of the second page. + * See CSS 3 orphans, widows properties https://drafts.csswg.org/css-break-3/#widows-orphans + */ + widows?: CSSWideKeyword | number; + + /** + * Specifies the width of the content area of an element. The content area of the element width does not include the padding, border, and margin of the element. + */ + width?: CSSWideKeyword | any; + + /** + * The word-break property is often used when there is long generated content that is strung together without and spaces or hyphens to beak apart. + * A common case of this is when there is a long URL that does not have any hyphens. This case could potentially cause the breaking of the layout as it could extend past the parent element. + */ + wordBreak?: CSSWideKeyword | any; + + /** + * The word-spacing CSS property specifies the spacing behavior between "words". + */ + wordSpacing?: CSSWideKeyword | any; + + /** + * An alias of css/properties/overflow-wrap, word-wrap defines whether to break words when the content exceeds the boundaries of its container. + */ + wordWrap?: CSSWideKeyword | any; + + /** + * Specifies how exclusions affect inline content within block-level elements. Elements lay out their inline content in their content area but wrap around exclusion areas. + */ + wrapFlow?: CSSWideKeyword | any; + + /** + * Set the value that is used to offset the inner wrap shape from other shapes. Inline content that intersects a shape with this property will be pushed by this shape's margin. + */ + wrapMargin?: CSSWideKeyword | any; + + /** + * Obsolete and unsupported. Do not use. + * This CSS property controls the text when it reaches the end of the block in which it is enclosed. + */ + wrapOption?: CSSWideKeyword | any; + + /** + * writing-mode specifies if lines of text are laid out horizontally or vertically, and the direction which lines of text and blocks progress. + */ + writingMode?: CSSWideKeyword | any; + + /** + * The z-index property specifies the z-order of an element and its descendants. + * When elements overlap, z-order determines which one covers the other. + * See CSS 2 z-index property https://www.w3.org/TR/CSS2/visuren.html#z-index + */ + zIndex?: CSSWideKeyword | "auto" | number; + + /** + * Sets the initial zoom factor of a document defined by @viewport. + * See CSS zoom descriptor https://drafts.csswg.org/css-device-adapt/#zoom-desc + */ + zoom?: CSSWideKeyword | "auto" | number | CSSPercentage; + + [propertyName: string]: any; + } \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/mixins.d.ts b/packages/mc-wc-ui-components/src/components/styles/mixins.d.ts new file mode 100644 index 00000000..03266fa0 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/mixins.d.ts @@ -0,0 +1,19 @@ +import { Breakpoints } from './breakpoints'; +import { CSSProperties } from './cssproperties' +import { Spacing } from './spacing'; + +export interface Mixins { + gutters: (styles: CSSProperties) => CSSProperties; + toolbar: CSSProperties; + // ... use interface declaration merging to add custom mixins +} + +export interface MixinsOptions extends Partial { + // ... use interface declaration merging to add custom mixin options +} + +export default function createMixins( + breakpoints: Breakpoints, + spacing: Spacing, + mixins: MixinsOptions, +): Mixins; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/setup-jss.ts b/packages/mc-wc-ui-components/src/components/styles/setup-jss.ts new file mode 100644 index 00000000..006cc7ce --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/setup-jss.ts @@ -0,0 +1,22 @@ +import {create} from 'jss' +import preset from 'jss-preset-default' + +class SetupJss{ + jss: any; + sheet: any; + constructor(){ + this.jss = create(preset()) + } + attachStyleSheet(styles){ + this.sheet = this.jss.createStyleSheet(styles).attach() + } + getClassName(style: string | Array){ + if(typeof style === 'string'){ + return this.sheet.classes[style] + } + let cNames = '' + style.map((val)=> cNames += ` ${this.sheet.classes[val]}`) + return cNames + } +} +export default SetupJss \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/shadows.d.ts b/packages/mc-wc-ui-components/src/components/styles/shadows.d.ts new file mode 100644 index 00000000..f7671476 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/shadows.d.ts @@ -0,0 +1,29 @@ +export type Shadows = [ + 'none', + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string, + string +]; +/* declare const shadows: Shadows; +export default shadows; */ diff --git a/packages/mc-wc-ui-components/src/components/styles/spacing.d.ts b/packages/mc-wc-ui-components/src/components/styles/spacing.d.ts new file mode 100644 index 00000000..650353b8 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/spacing.d.ts @@ -0,0 +1,9 @@ +export interface Spacing { + unit: number; +} + +export type SpacingOptions = Partial; + +/* declare const spacing: Spacing; + +export default spacing; */ \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/theme.d.ts b/packages/mc-wc-ui-components/src/components/styles/theme.d.ts new file mode 100644 index 00000000..285cda8c --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/theme.d.ts @@ -0,0 +1,34 @@ +import { Palette, PaletteOptions } from './types/palette' +import { Typography, TypographyOptions } from './typography' +import { Mixins, MixinsOptions } from './mixins' +import { Breakpoints, BreakpointsOptions } from './breakpoints' +import { Shadows } from './shadows' +import { Transitions, TransitionsOptions } from './transition' +import { Spacing, SpacingOptions } from './spacing' +import { ZIndex, ZIndexOptions } from './zindex' + +export type Direction = 'ltr' | 'rtl' + +export interface ThemeOptions { + direction?: Direction; + palette?: PaletteOptions; + typography?: TypographyOptions | ((palette: Palette) => TypographyOptions); + mixins?: MixinsOptions; + breakpoints?: BreakpointsOptions; + shadows?: Shadows; + transitions?: TransitionsOptions; + spacing?: SpacingOptions; + zIndex?: ZIndexOptions; +} + +export interface Theme { + direction: Direction; + palette: Palette; + typography: Typography; + mixins: Mixins; + breakpoints: Breakpoints; + shadows: Shadows; + transitions: Transitions; + spacing: Spacing; + zIndex: ZIndex; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/transition.d.ts b/packages/mc-wc-ui-components/src/components/styles/transition.d.ts new file mode 100644 index 00000000..1963ecbd --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/transition.d.ts @@ -0,0 +1,45 @@ +export interface Easing { + easeInOut: string; + easeOut: string; + easeIn: string; + sharp: string; +} +// export const easing: Easing; + +export interface Duration { + shortest: number; + shorter: number; + short: number; + standard: number; + complex: number; + enteringScreen: number; + leavingScreen: number; +} +// export const duration: Duration; + +export function formatMs(milliseconds: number): string; + +export interface Transitions { + easing: Easing; + duration: Duration; + create( + props: string | string[], + options?: Partial<{ duration: number; easing: string; delay: number }>, + ): string; + getAutoHeightDuration(height: number): number; +} + +export interface TransitionsOptions { + easing?: Partial; + duration?: Partial; + create?: ( + props: string | string[], + options?: Partial<{ duration: number; easing: string; delay: number }>, + ) => string; + getAutoHeightDuration?: (height: number) => number; +} + +//export type TransitionsOptions = DeepPartial; + +/* declare const transitions: Transitions; +export default transitions; */ diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/amber.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/amber.ts new file mode 100644 index 00000000..00c4c4c7 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/amber.ts @@ -0,0 +1,20 @@ +import {Color} from './color' + +const amber:Color = { + 50: '#fff8e1', + 100: '#ffecb3', + 200: '#ffe082', + 300: '#ffd54f', + 400: '#ffca28', + 500: '#ffc107', + 600: '#ffb300', + 700: '#ffa000', + 800: '#ff8f00', + 900: '#ff6f00', + A100: '#ffe57f', + A200: '#ffd740', + A400: '#ffc400', + A700: '#ffab00', +}; + +export default amber; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/blue.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/blue.ts new file mode 100644 index 00000000..2caf5087 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/blue.ts @@ -0,0 +1,20 @@ +import {Color} from './color' + +const blue:Color = { + 50: '#e3f2fd', + 100: '#bbdefb', + 200: '#90caf9', + 300: '#64b5f6', + 400: '#42a5f5', + 500: '#2196f3', + 600: '#1e88e5', + 700: '#1976d2', + 800: '#1565c0', + 900: '#0d47a1', + A100: '#82b1ff', + A200: '#448aff', + A400: '#2979ff', + A700: '#2962ff', +}; + +export default blue; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/blueGrey.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/blueGrey.ts new file mode 100644 index 00000000..5238548f --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/blueGrey.ts @@ -0,0 +1,20 @@ +import {Color} from './color' + +const blueGrey:Color = { + 50: '#eceff1', + 100: '#cfd8dc', + 200: '#b0bec5', + 300: '#90a4ae', + 400: '#78909c', + 500: '#607d8b', + 600: '#546e7a', + 700: '#455a64', + 800: '#37474f', + 900: '#263238', + A100: '#cfd8dc', + A200: '#b0bec5', + A400: '#78909c', + A700: '#455a64', +}; + +export default blueGrey; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/brown.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/brown.ts new file mode 100644 index 00000000..19f9bfe3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/brown.ts @@ -0,0 +1,20 @@ +import {Color} from './color' + +const brown:Color = { + 50: '#efebe9', + 100: '#d7ccc8', + 200: '#bcaaa4', + 300: '#a1887f', + 400: '#8d6e63', + 500: '#795548', + 600: '#6d4c41', + 700: '#5d4037', + 800: '#4e342e', + 900: '#3e2723', + A100: '#d7ccc8', + A200: '#bcaaa4', + A400: '#8d6e63', + A700: '#5d4037', +}; + +export default brown; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/color.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/color.ts new file mode 100644 index 00000000..a71bc386 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/color.ts @@ -0,0 +1,16 @@ +export interface Color { + 50: string; + 100: string; + 200: string; + 300: string; + 400: string; + 500: string; + 600: string; + 700: string; + 800: string; + 900: string; + A100: string; + A200: string; + A400: string; + A700: string; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/common.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/common.ts new file mode 100644 index 00000000..426668a0 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/common.ts @@ -0,0 +1,30 @@ + +export interface CommonColors { + black:string; + white: string; + transparent: string; + fullBlack: string; + darkBlack: string; + lightBlack: string; + minBlack: string; + faintBlack: string; + fullWhite: string; + darkWhite: string; + lightWhite: string; +} + +const common:CommonColors = { + black: '#000', + white: '#fff', + transparent: 'rgba(0, 0, 0, 0)', + fullBlack: 'rgba(0, 0, 0, 1)', + darkBlack: 'rgba(0, 0, 0, 0.87)', + lightBlack: 'rgba(0, 0, 0, 0.54)', + minBlack: 'rgba(0, 0, 0, 0.26)', + faintBlack: 'rgba(0, 0, 0, 0.12)', + fullWhite: 'rgba(255, 255, 255, 1)', + darkWhite: 'rgba(255, 255, 255, 0.87)', + lightWhite: 'rgba(255, 255, 255, 0.54)', +}; + +export default common; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/cyan.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/cyan.ts new file mode 100644 index 00000000..407da8e0 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/cyan.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const cyan:Color = { + 50: '#e0f7fa', + 100: '#b2ebf2', + 200: '#80deea', + 300: '#4dd0e1', + 400: '#26c6da', + 500: '#00bcd4', + 600: '#00acc1', + 700: '#0097a7', + 800: '#00838f', + 900: '#006064', + A100: '#84ffff', + A200: '#18ffff', + A400: '#00e5ff', + A700: '#00b8d4', +}; + +export default cyan; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/deepOrange.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/deepOrange.ts new file mode 100644 index 00000000..1598c812 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/deepOrange.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const deepOrange:Color = { + 50: '#fbe9e7', + 100: '#ffccbc', + 200: '#ffab91', + 300: '#ff8a65', + 400: '#ff7043', + 500: '#ff5722', + 600: '#f4511e', + 700: '#e64a19', + 800: '#d84315', + 900: '#bf360c', + A100: '#ff9e80', + A200: '#ff6e40', + A400: '#ff3d00', + A700: '#dd2c00', +}; + +export default deepOrange; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/deepPurple.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/deepPurple.ts new file mode 100644 index 00000000..1531bb08 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/deepPurple.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const deepPurple: Color = { + 50: '#ede7f6', + 100: '#d1c4e9', + 200: '#b39ddb', + 300: '#9575cd', + 400: '#7e57c2', + 500: '#673ab7', + 600: '#5e35b1', + 700: '#512da8', + 800: '#4527a0', + 900: '#311b92', + A100: '#b388ff', + A200: '#7c4dff', + A400: '#651fff', + A700: '#6200ea', +}; + +export default deepPurple; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/green.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/green.ts new file mode 100644 index 00000000..ebd8a5a9 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/green.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const green: Color = { + 50: '#e8f5e9', + 100: '#c8e6c9', + 200: '#a5d6a7', + 300: '#81c784', + 400: '#66bb6a', + 500: '#4caf50', + 600: '#43a047', + 700: '#388e3c', + 800: '#2e7d32', + 900: '#1b5e20', + A100: '#b9f6ca', + A200: '#69f0ae', + A400: '#00e676', + A700: '#00c853', +}; + +export default green; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/grey.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/grey.ts new file mode 100644 index 00000000..344b062b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/grey.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const grey:Color = { + 50: '#fafafa', + 100: '#f5f5f5', + 200: '#eeeeee', + 300: '#e0e0e0', + 400: '#bdbdbd', + 500: '#9e9e9e', + 600: '#757575', + 700: '#616161', + 800: '#424242', + 900: '#212121', + A100: '#d5d5d5', + A200: '#aaaaaa', + A400: '#303030', + A700: '#616161', +}; + +export default grey; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/index.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/index.ts new file mode 100644 index 00000000..3e34f7ab --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/index.ts @@ -0,0 +1,20 @@ +export { default as commonColors } from './common'; +export { default as red } from './red'; +export { default as pink } from './pink'; +export { default as purple } from './purple'; +export { default as deepPurple } from './deepPurple'; +export { default as indigo } from './indigo'; +export { default as blue } from './blue'; +export { default as lightBlue } from './lightBlue'; +export { default as cyan } from './cyan'; +export { default as teal } from './teal'; +export { default as green } from './green'; +export { default as lightGreen } from './lightGreen'; +export { default as lime } from './lime'; +export { default as yellow } from './yellow'; +export { default as amber } from './amber'; +export { default as orange } from './orange'; +export { default as deepOrange } from './deepOrange'; +export { default as brown } from './brown'; +export { default as grey } from './grey'; +export { default as blueGrey } from './blueGrey'; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/indigo.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/indigo.ts new file mode 100644 index 00000000..15ed8659 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/indigo.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const indigo:Color = { + 50: '#e8eaf6', + 100: '#c5cae9', + 200: '#9fa8da', + 300: '#7986cb', + 400: '#5c6bc0', + 500: '#3f51b5', + 600: '#3949ab', + 700: '#303f9f', + 800: '#283593', + 900: '#1a237e', + A100: '#8c9eff', + A200: '#536dfe', + A400: '#3d5afe', + A700: '#304ffe', +}; + +export default indigo; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/lightBlue.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/lightBlue.ts new file mode 100644 index 00000000..4d962d41 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/lightBlue.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const lightBlue: Color = { + 50: '#e1f5fe', + 100: '#b3e5fc', + 200: '#81d4fa', + 300: '#4fc3f7', + 400: '#29b6f6', + 500: '#03a9f4', + 600: '#039be5', + 700: '#0288d1', + 800: '#0277bd', + 900: '#01579b', + A100: '#80d8ff', + A200: '#40c4ff', + A400: '#00b0ff', + A700: '#0091ea', +}; + +export default lightBlue; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/lightGreen.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/lightGreen.ts new file mode 100644 index 00000000..36cd719e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/lightGreen.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const lightGreen:Color = { + 50: '#f1f8e9', + 100: '#dcedc8', + 200: '#c5e1a5', + 300: '#aed581', + 400: '#9ccc65', + 500: '#8bc34a', + 600: '#7cb342', + 700: '#689f38', + 800: '#558b2f', + 900: '#33691e', + A100: '#ccff90', + A200: '#b2ff59', + A400: '#76ff03', + A700: '#64dd17', +}; + +export default lightGreen; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/lime.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/lime.ts new file mode 100644 index 00000000..b5b181ec --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/lime.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const lime:Color = { + 50: '#f9fbe7', + 100: '#f0f4c3', + 200: '#e6ee9c', + 300: '#dce775', + 400: '#d4e157', + 500: '#cddc39', + 600: '#c0ca33', + 700: '#afb42b', + 800: '#9e9d24', + 900: '#827717', + A100: '#f4ff81', + A200: '#eeff41', + A400: '#c6ff00', + A700: '#aeea00', +}; + +export default lime; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/orange.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/orange.ts new file mode 100644 index 00000000..5eea490d --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/orange.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const orange:Color = { + 50: '#fff3e0', + 100: '#ffe0b2', + 200: '#ffcc80', + 300: '#ffb74d', + 400: '#ffa726', + 500: '#ff9800', + 600: '#fb8c00', + 700: '#f57c00', + 800: '#ef6c00', + 900: '#e65100', + A100: '#ffd180', + A200: '#ffab40', + A400: '#ff9100', + A700: '#ff6d00', +}; + +export default orange; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/pink.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/pink.ts new file mode 100644 index 00000000..e499d3c2 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/pink.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const pink:Color = { + 50: '#fce4ec', + 100: '#f8bbd0', + 200: '#f48fb1', + 300: '#f06292', + 400: '#ec407a', + 500: '#e91e63', + 600: '#d81b60', + 700: '#c2185b', + 800: '#ad1457', + 900: '#880e4f', + A100: '#ff80ab', + A200: '#ff4081', + A400: '#f50057', + A700: '#c51162', +}; + +export default pink; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/purple.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/purple.ts new file mode 100644 index 00000000..bb7fda33 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/purple.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const purple:Color = { + 50: '#f3e5f5', + 100: '#e1bee7', + 200: '#ce93d8', + 300: '#ba68c8', + 400: '#ab47bc', + 500: '#9c27b0', + 600: '#8e24aa', + 700: '#7b1fa2', + 800: '#6a1b9a', + 900: '#4a148c', + A100: '#ea80fc', + A200: '#e040fb', + A400: '#d500f9', + A700: '#aa00ff', +}; + +export default purple; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/red.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/red.ts new file mode 100644 index 00000000..a708a503 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/red.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const red:Color = { + 50: '#ffebee', + 100: '#ffcdd2', + 200: '#ef9a9a', + 300: '#e57373', + 400: '#ef5350', + 500: '#f44336', + 600: '#e53935', + 700: '#d32f2f', + 800: '#c62828', + 900: '#b71c1c', + A100: '#ff8a80', + A200: '#ff5252', + A400: '#ff1744', + A700: '#d50000', +}; + +export default red; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/teal.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/teal.ts new file mode 100644 index 00000000..e859c513 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/teal.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const teal:Color = { + 50: '#e0f2f1', + 100: '#b2dfdb', + 200: '#80cbc4', + 300: '#4db6ac', + 400: '#26a69a', + 500: '#009688', + 600: '#00897b', + 700: '#00796b', + 800: '#00695c', + 900: '#004d40', + A100: '#a7ffeb', + A200: '#64ffda', + A400: '#1de9b6', + A700: '#00bfa5', +}; + +export default teal; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/yellow.ts b/packages/mc-wc-ui-components/src/components/styles/types/colors/yellow.ts new file mode 100644 index 00000000..9abba2de --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/colors/yellow.ts @@ -0,0 +1,19 @@ +import {Color} from './color' +const yellow: Color = { + 50: '#fffde7', + 100: '#fff9c4', + 200: '#fff59d', + 300: '#fff176', + 400: '#ffee58', + 500: '#ffeb3b', + 600: '#fdd835', + 700: '#fbc02d', + 800: '#f9a825', + 900: '#f57f17', + A100: '#ffff8d', + A200: '#ffff00', + A400: '#ffea00', + A700: '#ffd600', +}; + +export default yellow; diff --git a/packages/mc-wc-ui-components/src/components/styles/types/palette.d.ts b/packages/mc-wc-ui-components/src/components/styles/types/palette.d.ts new file mode 100644 index 00000000..46f43610 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/types/palette.d.ts @@ -0,0 +1,100 @@ +import { Color } from './colors/color' +import {CommonColors} from './colors/common' + +interface ShadeText { + primary: string; + secondary: string; + disabled: string; + hint: string; + icon: string; + divider: string; + lightDivider: string; +} + +interface ShadeInput { + bottomLine: string; + helperText: string; + labelText: string; + inputText: string; + disabled: string; +} + +interface ShadeAction { + active: string; + disabled: string; +} + +interface ShadeBackground { + default: string; + paper: string; + appBar: string; + contentFrame: string; + status: string; + avatar: string; +} + +type PaletteType = 'light' | 'dark' + +type PaletteColor = Partial< + | { + light?: string; + main: string; + dark?: string; + contrastText?: string; + } + | Color +>; + + +export interface Shade { + text: ShadeText; + input: ShadeInput; + action: ShadeAction; + background: ShadeBackground; +} + +export const light: Shade; +export const dark: Shade; + +export interface Palette { + common: CommonColors; + type: PaletteType; + tonalOffset: number; + primary: PaletteColor; + secondary: PaletteColor; + error: PaletteColor; + grey: Color; + shades: { + dark: Shade; + light: Shade; + }; + text: ShadeText; + input: ShadeInput; + action: ShadeAction; + background: ShadeBackground; + getContrastText: (color: string) => string; +} + +type PartialShade = { [P in keyof Shade]?: Partial }; +type ColorPartial = Partial; + +export interface PaletteOptions { + common?: Partial; + type?: PaletteType; + primary?: PaletteColor; + secondary?: PaletteColor; + error?: PaletteColor; + grey?: ColorPartial; + shades?: { + dark?: PartialShade; + light?: PartialShade; + }; + text?: Partial; + input?: Partial; + action?: Partial; + background?: Partial; + getContrastText?: (color: string) => string; +} + +//export type PaletteOptions = DeepPartial; +//export default function createPalette(palette: PaletteOptions): Palette; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/styles/typography.d.ts b/packages/mc-wc-ui-components/src/components/styles/typography.d.ts new file mode 100644 index 00000000..8b3116ad --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/typography.d.ts @@ -0,0 +1,53 @@ +import { Palette } from './types/palette'; + +export type TextStyle = + | 'display1' + | 'display2' + | 'display3' + | 'display4' + | 'headline' + | 'title' + | 'subheading' + | 'body1' + | 'body2' + | 'caption'; + +export type Style = TextStyle | 'button'; +export type FontWeight = "normal" | "bold" | "bolder" | "lighter" | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 +type CSSPercentage = string; +type CSSLength = number | string; +type LineHeight = "normal" | CSSLength | CSSPercentage + +export interface FontStyle { + fontFamily: any; + fontSize: any; + fontWeightLight: FontWeight; + fontWeightRegular: FontWeight; + fontWeightMedium: FontWeight; + htmlFontSize?: number; +} + +export interface TypographyStyle { + color?: any; + fontFamily: any; + fontSize: any; + fontWeight: FontWeight; + letterSpacing?: any; + lineHeight?: LineHeight; + textTransform?: any; +} + +export interface TypographyUtils { + pxToRem: (px: number) => string; +} + +export type Typography = Record & FontStyle & TypographyUtils; + +export type TypographyOptions = Partial> & FontStyle>; + +/* //export type TypographyOptions = DeepPartial; + +export default function createTypography( + palette: Palette, + typography: TypographyOptions | ((palette: Palette) => TypographyOptions), +): Typography; */ diff --git a/packages/mc-wc-ui-components/src/components/styles/zindex.d.ts b/packages/mc-wc-ui-components/src/components/styles/zindex.d.ts new file mode 100644 index 00000000..08e73fa7 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/styles/zindex.d.ts @@ -0,0 +1,12 @@ +export interface ZIndex { + mobileStepper: number; + appBar: number; + drawer: number; + modal: number; + snackbar: number; + tooltip: number; +} + +export type ZIndexOptions = Partial; +/* declare const zIndex: ZIndex; +export default zIndex; */ diff --git a/packages/mc-wc-ui-components/src/components/switch/mwc-switch.scss b/packages/mc-wc-ui-components/src/components/switch/mwc-switch.scss new file mode 100644 index 00000000..7ca0e298 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/switch/mwc-switch.scss @@ -0,0 +1,15 @@ +@import "@material/switch/mdc-switch.scss"; + +.mdc-switch{ + display: flex; + flex-direction: row; + align-items: center; +} +.mdc-switch-reverse{ + display: flex; + flex-direction: row-reverse; + align-items: center; +} +.mdc-switch-label{ + margin: 0px 5px; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/switch/mwc-switch.tsx b/packages/mc-wc-ui-components/src/components/switch/mwc-switch.tsx new file mode 100644 index 00000000..9f2d5418 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/switch/mwc-switch.tsx @@ -0,0 +1,65 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-switch', + styleUrl: 'mwc-switch.scss', + shadow: false +}) +export class MWCSwitch{ + + @Element() switchEl : HTMLElement; + @Prop() checked : boolean = false; + @Prop() switchcolor : string = ''; + @Prop() label: string = 'on/off'; + @Prop() labelposition: string = 'right'; + @Prop() disabled: boolean = false; + + @Event() selected: EventEmitter; + + mdcMenuComponent:any; + mdcSwitch: any; + + componentWillLoad(){ + if(this.switchcolor){ + this.switchEl.style.setProperty('--mdc-theme-secondary',this.switchcolor); + } + } + renderLabel(){ + if(this.label){ + return + } + return null; + } + getDivClassName(){ + let className = ''; + if(this.labelposition == "left"){ + className = "mdc-switch-reverse" + }else{ + className = "mdc-switch" + } + return className; + } + getSwitchClassName(){ + let className = 'mdc-switch'; + if(this.disabled){ + className = `${className} mdc-switch--disabled` + } + return className; + } + + render() { + return ( +
    +
    { this.mdcSwitch = mdcSwitch; }}> + +
    +
    +
    +
    + {this.renderLabel()} +
    + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/switch/readme.md b/packages/mc-wc-ui-components/src/components/switch/readme.md new file mode 100644 index 00000000..dd1efeb1 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/switch/readme.md @@ -0,0 +1,28 @@ +# mwc-switch + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| --------------- | --------------- | ----------- | --------- | ---------- | +| `checked` | `checked` | | `boolean` | `false` | +| `disabled` | `disabled` | | `boolean` | `false` | +| `label` | `label` | | `string` | `'on/off'` | +| `labelposition` | `labelposition` | | `string` | `'right'` | +| `switchcolor` | `switchcolor` | | `string` | `''` | + + +## Events + +| Event | Description | Type | +| ---------- | ----------- | ------------------ | +| `selected` | | `CustomEvent` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.scss b/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.scss new file mode 100644 index 00000000..ed871e2b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.scss @@ -0,0 +1 @@ +@import "@material/tabs/mdc-tabs.scss"; diff --git a/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.tsx b/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.tsx new file mode 100644 index 00000000..1f5748c8 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.tsx @@ -0,0 +1,132 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCTabBar, MDCTabBarScroller} from '@material/tabs' + +@Component({ + tag: 'mwc-tabbar', + styleUrl: 'mwc-tabbar.scss', + shadow: false +}) +export class MWCTabbar{ + + @Element() tabBarEl : HTMLElement; + @Prop() activeindex: number = 0; + @Prop() scroller: boolean = false; + @Prop() tabs: Array = [ + {label:'Recents',icon:'phone'}, + {label:'Favorites',icon:'favorite'}, + {label:'Nearby',icon:'person_pin'} + ] + + @Event() change: EventEmitter; + + mdcTabBarComponent:any; + mdcTabBar: any; + mdcTabBarScroller: any; + iconTabBar: boolean = false; + textTabBar: boolean = false; + + componentWillLoad(){ + if(this.tabs[0].icon){ + this.iconTabBar = true; + } + if(this.tabs[0].label){ + this.textTabBar = true; + } + + } + componentDidLoad(){ + if(this.scroller){ + this.mdcTabBarComponent = MDCTabBarScroller.attachTo(this.mdcTabBarScroller) + }else{ + this.mdcTabBarComponent = MDCTabBar.attachTo(this.mdcTabBar) + } + this.mdcTabBarComponent.listen('MDCTabBar:change', ({detail: tabs}) => { + this.change.emit(tabs) + }); + } + getTabBarClassName(){ + let className = 'mdc-tab-bar'; + if(this.iconTabBar){ + className = `${className} mdc-tab-bar--icons-with-text` + } + if(this.scroller){ + className = `${className} mdc-tab-bar-scroller__scroll-frame__tabs` + } + return className; + } + getTabClassName(index){ + let className = 'mdc-tab'; + if(this.iconTabBar && this.textTabBar){ + className = `${className} mdc-tab--with-icon-and-text` + }else if(this.iconTabBar){ + className = `${className} mdc-tab-bar--icon-tab-bar` + } + if(index === this.activeindex){ + className = `${className} mdc-tab--active` + } + + return className; + } + renderText(tab){ + if(this.iconTabBar){ + return( + {tab.label} + ) + } + return tab.label; + } + renderIcon(tab){ + if(this.iconTabBar){ + return( + + ) + } + return null; + } + + renderNavigation(){ + return( + + ) + } + + renderScrollerNavigation(){ + if(this.scroller){ + return( +
    { this.mdcTabBarScroller = mdcTabBarScroller; }}> + +
    + {this.renderNavigation()} +
    + +
    + ) + } + return this.renderNavigation(); + } + + render() { + return this.renderScrollerNavigation() + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/tabbar/readme.md b/packages/mc-wc-ui-components/src/components/tabbar/readme.md new file mode 100644 index 00000000..8fa12a86 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/tabbar/readme.md @@ -0,0 +1,26 @@ +# mwc-tabbar + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ------------- | ------------- | ----------- | --------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `activeindex` | `activeindex` | | `number` | `0` | +| `scroller` | `scroller` | | `boolean` | `false` | +| `tabs` | -- | | `any[]` | `[ {label:'Recents',icon:'phone'}, {label:'Favorites',icon:'favorite'}, {label:'Nearby',icon:'person_pin'} ]` | + + +## Events + +| Event | Description | Type | +| -------- | ----------- | ------------------ | +| `change` | | `CustomEvent` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.scss b/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.scss new file mode 100644 index 00000000..12ca13c2 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.scss @@ -0,0 +1 @@ +@import "@material/textfield/mdc-text-field.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.tsx b/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.tsx new file mode 100644 index 00000000..f7ef0e19 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.tsx @@ -0,0 +1,159 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCTextField} from '@material/textfield' +@Component({ + tag: 'mwc-textfield', + styleUrl: 'mwc-textfield.scss', + shadow: false +}) +export class MWCTextfield{ + + // TODO - styling + + @Element() switchEl : HTMLElement; + @Prop() type : string = 'text'; //password + @Prop() required: boolean = false; + @Prop() minlength: number = 0; + @Prop() label: string = 'Password'; + @Prop() value: string = ''; + @Prop() labelposition: string = 'right'; + @Prop() helpertext: string = ''; + @Prop() disabled: boolean = false; + @Prop() showbox: boolean = false; + @Prop() fullwidth: boolean = false; + @Prop() textarea: boolean = false; + @Prop() outlined: boolean = true; + @Prop() dense: boolean = false; + @Prop() focused: boolean = true; + @Prop() icon : string = ''; + @Prop() iconposition : string = 'leading'; //trailing + + @Event() selected: EventEmitter; + + mdcTextfieldComponent:any; + mdcTextfield: any; + + componentWillLoad(){ + // if(this.switchcolor){ + // this.switchEl.style.setProperty('--mdc-theme-secondary',this.switchcolor); + // } + } + + componentDidLoad(){ + this.mdcTextfieldComponent = MDCTextField.attachTo(this.mdcTextfield) + } + renderLabel(){ + if(this.label){ + return + } + return null; + } + getDivClassName(){ + let className = ''; + if(this.labelposition == "left"){ + className = "mdc-switch-reverse" + }else{ + className = "mdc-switch" + } + return className; + } + getTextfieldClassName(){ + let className = 'mdc-text-field mdc-text-field--upgraded'; + if(this.showbox){ + className = `${className} mdc-text-field--box` + } + if(this.fullwidth){ + className = `${className} mdc-text-field--fullwidth` + } + if(this.textarea){ + className = `${className} mdc-text-field--textarea` + } + if(this.disabled){ + className = `${className} mdc-text-field--disabled` + } + if(this.outlined){ + className = `${className} mdc-text-field--outlined` + } + if(this.dense){ + className = `${className} mdc-text-field--dense` + } + if(this.focused){ + className = `${className} mdc-text-field--focused` + } + if(this.icon && this.iconposition === "leading"){ + className = `${className} mdc-text-field--with-leading-icon` + } + if(this.icon && this.iconposition === "trailing"){ + className = `${className} mdc-text-field--with-trailing-icon` + } + return className; + } + renderInputOrTextarea(){ + if(this.textarea){ + return( + + ) + } + return ( + + ) + } + renderOutlined(){ + if(this.outlined){ + return( +
    +
    + + + +
    +
    +
    + ) + } + } + renderHelperText(){ + if(this.helpertext){ + return ( + + ) + } + return null; + } + renderIcon(){ + if(this.icon){ + return ( + + {this.icon} + + ) + } + return null; + } + + render() { + return ( +
    +
    { this.mdcTextfield = mdcTextfield; }}> + {this.renderIcon()} + {this.renderInputOrTextarea()} + +
    +
    + {this.renderHelperText()} +
    + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/textfield/readme.md b/packages/mc-wc-ui-components/src/components/textfield/readme.md new file mode 100644 index 00000000..f6baf285 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/textfield/readme.md @@ -0,0 +1,39 @@ +# mwc-textfield + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| --------------- | --------------- | ----------- | --------- | ------------ | +| `dense` | `dense` | | `boolean` | `false` | +| `disabled` | `disabled` | | `boolean` | `false` | +| `focused` | `focused` | | `boolean` | `true` | +| `fullwidth` | `fullwidth` | | `boolean` | `false` | +| `helpertext` | `helpertext` | | `string` | `''` | +| `icon` | `icon` | | `string` | `''` | +| `iconposition` | `iconposition` | | `string` | `'leading'` | +| `label` | `label` | | `string` | `'Password'` | +| `labelposition` | `labelposition` | | `string` | `'right'` | +| `minlength` | `minlength` | | `number` | `0` | +| `outlined` | `outlined` | | `boolean` | `true` | +| `required` | `required` | | `boolean` | `false` | +| `showbox` | `showbox` | | `boolean` | `false` | +| `textarea` | `textarea` | | `boolean` | `false` | +| `type` | `type` | | `string` | `'text'` | +| `value` | `value` | | `string` | `''` | + + +## Events + +| Event | Description | Type | +| ---------- | ----------- | ------------------ | +| `selected` | | `CustomEvent` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/theme/mwc-theme.scss b/packages/mc-wc-ui-components/src/components/theme/mwc-theme.scss new file mode 100644 index 00000000..9a92d70d --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/theme/mwc-theme.scss @@ -0,0 +1,9 @@ +$mdc-theme-primary: #607D8B; +$mdc-theme-primary-light: #CFD8DC; +$mdc-theme-primary-dark: #455A64; +$mdc-theme-secondary: #CDDC39; +$mdc-theme-primary-text: #212121; +$mdc-theme-secondary-text: #757575; +$mdc-theme--background: #BDBDBD; + +@import "@material/theme/mdc-theme"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/theme/mwc-theme.style.ts b/packages/mc-wc-ui-components/src/components/theme/mwc-theme.style.ts new file mode 100644 index 00000000..02ad3208 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/theme/mwc-theme.style.ts @@ -0,0 +1,11 @@ +export default { + display4:{ + 'font-size': '7rem', /* 112sp */ + 'line-height': '7rem', /* 112sp */ + 'font-weight': '300', + 'letter-spacing': '-.04em', + 'margin': '-1rem 0 3.5rem -.085em '/* -16sp 0 56sp -.085em */, + 'text-decoration': 'inherit', + 'text-transform': 'inherit' + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/theme/mwc-theme.tsx b/packages/mc-wc-ui-components/src/components/theme/mwc-theme.tsx new file mode 100644 index 00000000..c28f9074 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/theme/mwc-theme.tsx @@ -0,0 +1,56 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +import theme from '../util/theme' +import {setTheme, getTheme} from '../util/mwc-util' +@Component({ + tag: 'mwc-theme', + //styleUrl: 'mwc-theme.scss', + shadow: false +}) +export class MWCTheme{ + @Element() themeEl : HTMLElement; + @Prop() theme: object = {}; + @Prop() fonts: Array = [] ; + @Prop() icons: Array = [] ; + fontsAndIcons: Array = ['https://fonts.googleapis.com/css?family=Roboto:300,400,500','https://fonts.googleapis.com/icon?family=Material+Icons'] + /* + { + "primary" : "#8BC34A", + "primary-light": '#DCEDC8', + "primary-dark": '#689F38', + "secondary": '#7C4DFF', + "secondary-light": '#757575', + "secondary-dark": '#212121', + "background": '#BDBDBD' + }; + */ + constructor(){ + setTheme(theme) + } + + setLinkNode(fontUrl){ + var linkNode = document.createElement('link'); + linkNode.type = "text/css"; + linkNode.rel = "stylesheet"; + linkNode.href = fontUrl; + document.head.appendChild(linkNode); + } + + componentWillLoad(){ + const urls = [...this.fonts,...this.fontsAndIcons, ...this.icons] + urls.forEach((font)=>{ + this.setLinkNode(font); + }) + // if(this.theme){ + // Object.keys(this.theme).forEach((key)=>{ + // this.themeEl.style.setProperty(`--mdc-theme-${key}`,this.theme[key]); + // }) + // } + // console.log(getTheme()) + } + + render() { + return ( + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/theme/readme.md b/packages/mc-wc-ui-components/src/components/theme/readme.md new file mode 100644 index 00000000..755db3e3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/theme/readme.md @@ -0,0 +1,19 @@ +# mwc-theme + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| -------- | --------- | ----------- | ---------- | ------- | +| `fonts` | -- | | `string[]` | `[]` | +| `icons` | -- | | `string[]` | `[]` | +| `theme` | -- | | `object` | `{}` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx b/packages/mc-wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx new file mode 100644 index 00000000..6ae1b1d1 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx @@ -0,0 +1,25 @@ +import { Component, Element, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-content-for-toolbar', + shadow: false +}) +export class MWCContentForToolbar{ + + @Element() contentToolbarEl : HTMLElement; //HTMLMainElement + + componentWillLoad(){ + this.contentToolbarEl.className = this.getIconClassName() + } + + getIconClassName(){ + let className = 'mdc-toolbar-fixed-adjust'; + return className; + } + + render() { + return ( + + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss new file mode 100644 index 00000000..42686a83 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss @@ -0,0 +1,3 @@ +.mwc-menu-icon{ + padding: 20px !important; +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx new file mode 100644 index 00000000..15e0e0a1 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx @@ -0,0 +1,26 @@ +import { Component, Prop, Element, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-toolbar-icon', + styleUrl: 'mwc-toolbar-icon.scss', + shadow: false +}) +export class MWCToolbarIcon { + + @Element() toolbarIconEl : HTMLAnchorElement; + + componentWillLoad(){ + this.toolbarIconEl.className = this.getIconClassName() + } + + getIconClassName(){ + let className = 'mdc-toolbar__menu-icon material-icons mwc-menu-icon'; + return className; + } + + render() { + return ( + + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx new file mode 100644 index 00000000..5ee95fd3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx @@ -0,0 +1,31 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; + +@Component({ + tag: 'mwc-toolbar-section', + shadow: false +}) +export class MWCToolbarSection{ + + @Element() toolbarSectionEl : HTMLElement; + @Prop() align: string; + + componentWillLoad(){ + this.toolbarSectionEl.className = this.getSectionClassName() + } + + getSectionClassName(){ + let className = 'mdc-toolbar__section'; + if(this.align === "start"){ + className = `${className} mdc-toolbar__section--align-start` + }else if(this.align === "end"){ + className = `${className} mdc-toolbar__section--align-end` + } + return className; + } + + render() { + return ( + + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx new file mode 100644 index 00000000..a35a3731 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx @@ -0,0 +1,20 @@ +import { Component, Prop, Element, h} from '@stencil/core'; + +@Component({ + tag: 'mwc-toolbar-title', + shadow: false +}) +export class MWCToolbarTitle{ + + @Element() toolbarTitleEl : HTMLElement; + + componentWillLoad(){ + this.toolbarTitleEl.className = 'mdc-toolbar__title' + } + + render() { + return ( + + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.scss b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.scss new file mode 100644 index 00000000..b4fb2171 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.scss @@ -0,0 +1 @@ +@import "@material/toolbar/mdc-toolbar.scss"; \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.tsx b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.tsx new file mode 100644 index 00000000..656bdfe3 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.tsx @@ -0,0 +1,37 @@ +import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; +import {MDCToolbar} from '@material/toolbar' + +@Component({ + tag: 'mwc-toolbar', + styleUrl: 'mwc-toolbar.scss', + shadow: false +}) +export class MWCToolbar { + + @Element() toolbarEl : HTMLDivElement; + @Prop() type : string; + //fixed,waterfall,flexible, fixed-lastrow-only + toolbarComponent: any; + + componentWillLoad(){ + this.toolbarEl.className = this.getToolBarClassName() + } + componentDidLoad(){ + this.toolbarComponent = MDCToolbar.attachTo(this.toolbarEl) + } + getToolBarClassName(){ + let className = 'mdc-toolbar'; + if(this.type !== undefined){ + className = `${className} mdc-toolbar--fixed` + } + return className; + } + + render() { + return ( +
    + +
    + ) + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/toolbar/readme.md b/packages/mc-wc-ui-components/src/components/toolbar/readme.md new file mode 100644 index 00000000..d934a919 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/toolbar/readme.md @@ -0,0 +1,10 @@ +# mwc-toolbar-title + + + + + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/typography/mwc-typography.style.ts b/packages/mc-wc-ui-components/src/components/typography/mwc-typography.style.ts new file mode 100644 index 00000000..5604f605 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/typography/mwc-typography.style.ts @@ -0,0 +1,54 @@ +import {getTheme} from '../util/mwc-util' +import setupJss from '../styles/setup-jss' +import deepmerge from 'deepmerge' + +const typography = getTheme()['typography'] +class TypographyStyle{ + defaultStyle: object = { + root: { + display: 'block', + margin: 0, + }, + display4: typography['display4'], + display3: typography['display3'], + display2: typography['display2'], + display1: typography['display1'], + headline: typography['headline'], + title: typography['title'], + subheading: typography['subheading'], + body2: typography['body2'], + body1: typography['body1'], + caption: typography['caption'], + button: typography['button'], + alignleft: { + textAlign: 'left', + }, + aligncenter: { + textAlign: 'center', + }, + alignright: { + textAlign: 'right', + }, + alignjustify: { + textAlign: 'justify', + }, + nowrap: { + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + }, + gutterbottom: { + marginBottom: '0.35em', + }, + } + jss:any; + setup(style:object){ + const mergedStyles = deepmerge.all([this.defaultStyle,style]) + this.jss = new setupJss() + this.jss.attachStyleSheet(mergedStyles) + } + getClassName(type:Array):string{ + return this.jss.getClassName(type) + } +} +export default TypographyStyle \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/typography/mwc-typography.tsx b/packages/mc-wc-ui-components/src/components/typography/mwc-typography.tsx new file mode 100644 index 00000000..5f505f04 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/typography/mwc-typography.tsx @@ -0,0 +1,59 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +import TypographyStyle from './mwc-typography.style' +import { typographyType, displayType, alignType } from './mwc-typograpy-types' +import deepmerge from 'deepmerge' + +@Component({ + tag: 'mwc-typography', + shadow: false +}) + +export class MWCTypography { + @Element() typographyEl : HTMLElement; + @Prop() type: typographyType = "display1" + @Prop() color: string; + @Prop() display: displayType = 'block' + @Prop() align: alignType = 'left' + @Prop() nowrap : boolean = false + @Prop() gutterbottom : boolean = false + @Prop() styles : any + + componentWillLoad(){ + const typeStyle = new TypographyStyle(); + let changeStyle:object = { + root:{ + display : this.display + } + } + if(this.color){ + changeStyle[this.type] = {'color': this.color}; + } + if(this.styles){ + if(changeStyle[this.type]) + { + changeStyle[this.type] = deepmerge.all([changeStyle[this.type],this.styles]) + }else{ + changeStyle[this.type] = this.styles + } + } + + typeStyle.setup(changeStyle) + let classNames: Array = [] + classNames.push('root') + classNames.push(this.type) + classNames.push(`align${this.align}`) + if(this.nowrap){ + classNames.push('nowrap') + } + if(this.gutterbottom){ + classNames.push('gutterbottom') + } + this.typographyEl.className = typeStyle.getClassName(classNames) + } + + render() { + return ( + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/typography/mwc-typograpy-types.ts b/packages/mc-wc-ui-components/src/components/typography/mwc-typograpy-types.ts new file mode 100644 index 00000000..30406c5b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/typography/mwc-typograpy-types.ts @@ -0,0 +1,3 @@ +export type displayType = 'block' | 'inherit' +export type typographyType = 'display1' | 'display2' | 'display3' | 'display4' | 'headline' | 'title' | 'subheading1' | 'subheading2' | 'body1' | 'body2' | 'caption' | 'button' +export type alignType = 'left' | 'right' | 'center' | 'justify' \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/typography/readme.md b/packages/mc-wc-ui-components/src/components/typography/readme.md new file mode 100644 index 00000000..6a66f2ee --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/typography/readme.md @@ -0,0 +1,23 @@ +# mwc-typography + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| -------------- | -------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | +| `align` | `align` | | `"center" \| "justify" \| "left" \| "right"` | `'left'` | +| `color` | `color` | | `string` | `undefined` | +| `display` | `display` | | `"block" \| "inherit"` | `'block'` | +| `gutterbottom` | `gutterbottom` | | `boolean` | `false` | +| `nowrap` | `nowrap` | | `boolean` | `false` | +| `styles` | `styles` | | `any` | `undefined` | +| `type` | `type` | | `"body1" \| "body2" \| "button" \| "caption" \| "display1" \| "display2" \| "display3" \| "display4" \| "headline" \| "subheading1" \| "subheading2" \| "title"` | `"display1"` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/components/util/mwc-util.ts b/packages/mc-wc-ui-components/src/components/util/mwc-util.ts new file mode 100644 index 00000000..cfbf599b --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/util/mwc-util.ts @@ -0,0 +1,15 @@ +import theme from './theme' +export function setTheme(data){ + try{ + localStorage.setItem('theme',JSON.stringify(data)) + }catch(err){ + console.log(err) + } + } +export function getTheme():Object{ + const themeData = localStorage.getItem('theme'); + if(themeData){ + return JSON.parse(themeData) + } + return theme +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/util/ripple.ts b/packages/mc-wc-ui-components/src/components/util/ripple.ts new file mode 100644 index 00000000..9785c997 --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/util/ripple.ts @@ -0,0 +1,159 @@ +const touchMyRipple = () => { + let mouseMove = false; + const defaultSettings = { + area: '', + color: 'rgba(255, 255, 255, 0.4)', + offsetEl: null, + eventListener: 'click', + }; + + function onDrag(eventListener) { + if (eventListener === 'touchend') { + document.getElementsByTagName('body')[0].addEventListener('touchmove', () => { + mouseMove = true; + }); + } + } + + function ripple(els, rippleColor, eventListener) { + // for (let i = 0; i < els.length; i += 1) { + const currentBtn = els; + + currentBtn.addEventListener(eventListener, function (e) { + let PageX; + let PageY; + + if (eventListener.match(/touch/) && eventListener.match(/touch/)[0].length > 0) { + PageX = e.changedTouches[0].pageX; + PageY = e.changedTouches[0].pageY; + } else { + PageX = e.x; + PageY = e.y; + } + + const el = this.getBoundingClientRect(); + const btnWidth = this.clientWidth; + const rippleOffset = defaultSettings.offsetEl; + const headerHeight = rippleOffset ? rippleOffset.clientHeight : 0; + const btnOffsetTop = el.top + headerHeight; + const btnOffsetLeft = el.left; + const posMouseX = PageX; + const posMouseY = PageY + headerHeight; + const rippleX = posMouseX - btnOffsetLeft; + const rippleY = posMouseY - btnOffsetTop; + + const baseCSS = `position: absolute; + width: ${btnWidth * 2}px; + height: ${btnWidth * 2}px; + border-radius: 50%; + transition: transform 700ms, opacity 700ms; + transition-timing-function: cubic-bezier(0.250, 0.460, 0.450, 0.940); + background: ${rippleColor}; + background-position: center; + background-repeat: no-repeat; + background-size: 100%; + top: ${rippleY - btnWidth}px; + left: ${rippleX - btnWidth}px; + transform: scale(0); + pointer-events: none;`; + + // Prepare the dom + const rippleEffect = document.createElement('span'); + rippleEffect.style.cssText = baseCSS; + + // Add some css for prevent errors + this.style.overflow = 'hidden'; + + if (window.getComputedStyle(this).position !== 'fixed' && window.getComputedStyle(this).position !== 'absolute') { + this.style.position = 'relative'; + } + + if (mouseMove) { + mouseMove = false; + return; + } + + this.appendChild(rippleEffect); + + // start animation + setTimeout(() => { + rippleEffect.style.cssText = `${baseCSS} transform: scale(1); opacity: 0;`; + }, 50); + + setTimeout(() => { + rippleEffect.remove(); + }, 700); + }); + // } + } + + function attachRippleToAttribute(area, rippleColor, eventListener) { + const attributeEl = document.querySelectorAll(`${area} [data-animation='ripple']`); + + if (attributeEl.length > 0) { + ripple(attributeEl, rippleColor, eventListener); + } else { + throw new Error('not found any element with data-animation="ripple"'); + } + } + + function attachRippleToSelectors(selectorsEl, rippleColor, eventListener) { + // let selectorsEl; + + /* if (selectors) { + selectorsEl = document.querySelectorAll(selectors); + } else { + throw new Error('You have to enter at least 1 selector'); + } */ + + // if (selectorsEl.length > 0) { + ripple(selectorsEl, rippleColor, eventListener); + /* } else { + console.warn('No element found with this selector: ', selectors); + } */ + } + + const tmripple = { + + init(data) { + try { + defaultSettings.area = (data && data.area) + ? data.area + : defaultSettings.area; + defaultSettings.color = (data && data.color) + ? data.color + : defaultSettings.color; + defaultSettings.offsetEl = (data && data.offsetEl) + ? this.setOffsetEl(data.offsetEl) + : defaultSettings.offsetEl; + defaultSettings.eventListener = (data && data.eventListener) + ? data.eventListener + : defaultSettings.eventListener; + + onDrag(defaultSettings.eventListener); + attachRippleToAttribute(defaultSettings.area, defaultSettings.color, defaultSettings.eventListener); + } catch (e) { + console.warn(e.message); + } + }, + + attachToSelectors(data) { + try { + const rippleColor = data.color || defaultSettings.color; + const eventListener = data.eventListener || defaultSettings.eventListener; + + attachRippleToSelectors(data.selectors, rippleColor, eventListener); + } catch (e) { + console.warn(e.message); + } + }, + + setOffsetEl(el) { + defaultSettings.offsetEl = document.querySelector(el); + }, + }; + return tmripple; +}; + +export default touchMyRipple(); +export const tmripple = touchMyRipple(); \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/util/theme.ts b/packages/mc-wc-ui-components/src/components/util/theme.ts new file mode 100644 index 00000000..17be05aa --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/util/theme.ts @@ -0,0 +1,357 @@ +export default { + "direction": "ltr", + "palette": { + "common": { + "black": "#000", + "white": "#fff", + "transparent": "rgba(0, 0, 0, 0)", + "fullBlack": "rgba(0, 0, 0, 1)", + "darkBlack": "rgba(0, 0, 0, 0.87)", + "lightBlack": "rgba(0, 0, 0, 0.54)", + "minBlack": "rgba(0, 0, 0, 0.26)", + "faintBlack": "rgba(0, 0, 0, 0.12)", + "fullWhite": "rgba(255, 255, 255, 1)", + "darkWhite": "rgba(255, 255, 255, 0.87)", + "lightWhite": "rgba(255, 255, 255, 0.54)" + }, + "type": "light", + "primary": { + "50": "#e3f2fd", + "100": "#bbdefb", + "200": "#90caf9", + "300": "#64b5f6", + "400": "#42a5f5", + "500": "#2196f3", + "600": "#1e88e5", + "700": "#1976d2", + "800": "#1565c0", + "900": "#0d47a1", + "A100": "#82b1ff", + "A200": "#448aff", + "A400": "#2979ff", + "A700": "#2962ff", + "contrastDefaultColor": "light" + }, + "secondary": { + "50": "#fce4ec", + "100": "#f8bbd0", + "200": "#f48fb1", + "300": "#f06292", + "400": "#ec407a", + "500": "#e91e63", + "600": "#d81b60", + "700": "#c2185b", + "800": "#ad1457", + "900": "#880e4f", + "A100": "#ff80ab", + "A200": "#ff4081", + "A400": "#f50057", + "A700": "#c51162", + "contrastDefaultColor": "light" + }, + "error": { + "50": "#ffebee", + "100": "#ffcdd2", + "200": "#ef9a9a", + "300": "#e57373", + "400": "#ef5350", + "500": "#f44336", + "600": "#e53935", + "700": "#d32f2f", + "800": "#c62828", + "900": "#b71c1c", + "A100": "#ff8a80", + "A200": "#ff5252", + "A400": "#ff1744", + "A700": "#d50000", + "contrastDefaultColor": "light" + }, + "grey": { + "50": "#fafafa", + "100": "#f5f5f5", + "200": "#eeeeee", + "300": "#e0e0e0", + "400": "#bdbdbd", + "500": "#9e9e9e", + "600": "#757575", + "700": "#616161", + "800": "#424242", + "900": "#212121", + "A100": "#d5d5d5", + "A200": "#aaaaaa", + "A400": "#303030", + "A700": "#616161", + "contrastDefaultColor": "dark" + }, + "shades": { + "dark": { + "text": { + "primary": "rgba(255, 255, 255, 1)", + "secondary": "rgba(255, 255, 255, 0.7)", + "disabled": "rgba(255, 255, 255, 0.5)", + "hint": "rgba(255, 255, 255, 0.5)", + "icon": "rgba(255, 255, 255, 0.5)", + "divider": "rgba(255, 255, 255, 0.12)", + "lightDivider": "rgba(255, 255, 255, 0.075)" + }, + "input": { + "bottomLine": "rgba(255, 255, 255, 0.7)", + "helperText": "rgba(255, 255, 255, 0.7)", + "labelText": "rgba(255, 255, 255, 0.7)", + "inputText": "rgba(255, 255, 255, 1)", + "disabled": "rgba(255, 255, 255, 0.5)" + }, + "action": { + "active": "rgba(255, 255, 255, 1)", + "disabled": "rgba(255, 255, 255, 0.3)" + }, + "background": { + "default": "#303030", + "paper": "#424242", + "appBar": "#212121", + "contentFrame": "#212121", + "chip": "#424242" + }, + "line": { + "stepper": "#bdbdbd" + } + }, + "light": { + "text": { + "primary": "rgba(0, 0, 0, 0.87)", + "secondary": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.38)", + "hint": "rgba(0, 0, 0, 0.38)", + "icon": "rgba(0, 0, 0, 0.38)", + "divider": "rgba(0, 0, 0, 0.12)", + "lightDivider": "rgba(0, 0, 0, 0.075)" + }, + "input": { + "bottomLine": "rgba(0, 0, 0, 0.42)", + "helperText": "rgba(0, 0, 0, 0.54)", + "labelText": "rgba(0, 0, 0, 0.54)", + "inputText": "rgba(0, 0, 0, 0.87)", + "disabled": "rgba(0, 0, 0, 0.42)" + }, + "action": { + "active": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.26)" + }, + "background": { + "default": "#fafafa", + "paper": "#fff", + "appBar": "#f5f5f5", + "contentFrame": "#eeeeee", + "chip": "#e0e0e0" + }, + "line": { + "stepper": "#bdbdbd" + } + } + }, + "text": { + "primary": "rgba(0, 0, 0, 0.87)", + "secondary": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.38)", + "hint": "rgba(0, 0, 0, 0.38)", + "icon": "rgba(0, 0, 0, 0.38)", + "divider": "rgba(0, 0, 0, 0.12)", + "lightDivider": "rgba(0, 0, 0, 0.075)" + }, + "input": { + "bottomLine": "rgba(0, 0, 0, 0.42)", + "helperText": "rgba(0, 0, 0, 0.54)", + "labelText": "rgba(0, 0, 0, 0.54)", + "inputText": "rgba(0, 0, 0, 0.87)", + "disabled": "rgba(0, 0, 0, 0.42)" + }, + "action": { + "active": "rgba(0, 0, 0, 0.54)", + "disabled": "rgba(0, 0, 0, 0.26)" + }, + "background": { + "default": "#fafafa", + "paper": "#fff", + "appBar": "#f5f5f5", + "contentFrame": "#eeeeee", + "chip": "#e0e0e0" + }, + "line": { + "stepper": "#bdbdbd" + } + }, + "typography": { + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "fontSize": 14, + "fontWeightThin": 100, + "fontWeightLight": 300, + "fontWeightRegular": 400, + "fontWeightMedium": 500, + "fontWeightBold": 700, + "fontWeightBlack": 900, + "display4": { + "fontSize": "7rem", + "fontWeight": 300, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "letterSpacing": "-.04em", + "lineHeight": "1.14286em", + "marginLeft": "-.06em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "display3": { + "fontSize": "3.5rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "letterSpacing": "-.02em", + "lineHeight": "1.30357em", + "marginLeft": "-.04em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "display2": { + "fontSize": "2.8125rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.06667em", + "marginLeft": "-.04em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "display1": { + "fontSize": "2.125rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.20588em", + "marginLeft": "-.04em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "headline": { + "fontSize": "1.5rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.35417em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "title": { + "fontSize": "1.3125rem", + "fontWeight": 500, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.16667em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "subheading": { + "fontSize": "1rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.5em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "body2": { + "fontSize": "0.875rem", + "fontWeight": 500, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.71429em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "body1": { + "fontSize": "0.875rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.46429em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "caption": { + "fontSize": "0.75rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.375em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "button": { + "fontSize": "0.875rem", + "textTransform": "uppercase", + "fontWeight": 500, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif" + } + }, + "mixins": { + "toolbar": { + "minHeight": 56, + "@media (min-width:0px) and (orientation: landscape)": { + "minHeight": 48 + }, + "@media (min-width:600px)": { + "minHeight": 64 + } + } + }, + "breakpoints": { + "keys": [ + "xs", + "sm", + "md", + "lg", + "xl" + ], + "values": { + "xs": 0, + "sm": 600, + "md": 960, + "lg": 1280, + "xl": 1920 + } + }, + "shadows": [ + "none", + "0px 1px 3px 0px rgba(0, 0, 0, 0.2),0px 1px 1px 0px rgba(0, 0, 0, 0.14),0px 2px 1px -1px rgba(0, 0, 0, 0.12)", + "0px 1px 5px 0px rgba(0, 0, 0, 0.2),0px 2px 2px 0px rgba(0, 0, 0, 0.14),0px 3px 1px -2px rgba(0, 0, 0, 0.12)", + "0px 1px 8px 0px rgba(0, 0, 0, 0.2),0px 3px 4px 0px rgba(0, 0, 0, 0.14),0px 3px 3px -2px rgba(0, 0, 0, 0.12)", + "0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0, 0, 0, 0.12)", + "0px 3px 5px -1px rgba(0, 0, 0, 0.2),0px 5px 8px 0px rgba(0, 0, 0, 0.14),0px 1px 14px 0px rgba(0, 0, 0, 0.12)", + "0px 3px 5px -1px rgba(0, 0, 0, 0.2),0px 6px 10px 0px rgba(0, 0, 0, 0.14),0px 1px 18px 0px rgba(0, 0, 0, 0.12)", + "0px 4px 5px -2px rgba(0, 0, 0, 0.2),0px 7px 10px 1px rgba(0, 0, 0, 0.14),0px 2px 16px 1px rgba(0, 0, 0, 0.12)", + "0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0, 0, 0, 0.12)", + "0px 5px 6px -3px rgba(0, 0, 0, 0.2),0px 9px 12px 1px rgba(0, 0, 0, 0.14),0px 3px 16px 2px rgba(0, 0, 0, 0.12)", + "0px 6px 6px -3px rgba(0, 0, 0, 0.2),0px 10px 14px 1px rgba(0, 0, 0, 0.14),0px 4px 18px 3px rgba(0, 0, 0, 0.12)", + "0px 6px 7px -4px rgba(0, 0, 0, 0.2),0px 11px 15px 1px rgba(0, 0, 0, 0.14),0px 4px 20px 3px rgba(0, 0, 0, 0.12)", + "0px 7px 8px -4px rgba(0, 0, 0, 0.2),0px 12px 17px 2px rgba(0, 0, 0, 0.14),0px 5px 22px 4px rgba(0, 0, 0, 0.12)", + "0px 7px 8px -4px rgba(0, 0, 0, 0.2),0px 13px 19px 2px rgba(0, 0, 0, 0.14),0px 5px 24px 4px rgba(0, 0, 0, 0.12)", + "0px 7px 9px -4px rgba(0, 0, 0, 0.2),0px 14px 21px 2px rgba(0, 0, 0, 0.14),0px 5px 26px 4px rgba(0, 0, 0, 0.12)", + "0px 8px 9px -5px rgba(0, 0, 0, 0.2),0px 15px 22px 2px rgba(0, 0, 0, 0.14),0px 6px 28px 5px rgba(0, 0, 0, 0.12)", + "0px 8px 10px -5px rgba(0, 0, 0, 0.2),0px 16px 24px 2px rgba(0, 0, 0, 0.14),0px 6px 30px 5px rgba(0, 0, 0, 0.12)", + "0px 8px 11px -5px rgba(0, 0, 0, 0.2),0px 17px 26px 2px rgba(0, 0, 0, 0.14),0px 6px 32px 5px rgba(0, 0, 0, 0.12)", + "0px 9px 11px -5px rgba(0, 0, 0, 0.2),0px 18px 28px 2px rgba(0, 0, 0, 0.14),0px 7px 34px 6px rgba(0, 0, 0, 0.12)", + "0px 9px 12px -6px rgba(0, 0, 0, 0.2),0px 19px 29px 2px rgba(0, 0, 0, 0.14),0px 7px 36px 6px rgba(0, 0, 0, 0.12)", + "0px 10px 13px -6px rgba(0, 0, 0, 0.2),0px 20px 31px 3px rgba(0, 0, 0, 0.14),0px 8px 38px 7px rgba(0, 0, 0, 0.12)", + "0px 10px 13px -6px rgba(0, 0, 0, 0.2),0px 21px 33px 3px rgba(0, 0, 0, 0.14),0px 8px 40px 7px rgba(0, 0, 0, 0.12)", + "0px 10px 14px -6px rgba(0, 0, 0, 0.2),0px 22px 35px 3px rgba(0, 0, 0, 0.14),0px 8px 42px 7px rgba(0, 0, 0, 0.12)", + "0px 11px 14px -7px rgba(0, 0, 0, 0.2),0px 23px 36px 3px rgba(0, 0, 0, 0.14),0px 9px 44px 8px rgba(0, 0, 0, 0.12)", + "0px 11px 15px -7px rgba(0, 0, 0, 0.2),0px 24px 38px 3px rgba(0, 0, 0, 0.14),0px 9px 46px 8px rgba(0, 0, 0, 0.12)" + ], + "transitions": { + "easing": { + "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)", + "easeOut": "cubic-bezier(0.0, 0, 0.2, 1)", + "easeIn": "cubic-bezier(0.4, 0, 1, 1)", + "sharp": "cubic-bezier(0.4, 0, 0.6, 1)" + }, + "duration": { + "shortest": 150, + "shorter": 200, + "short": 250, + "standard": 300, + "complex": 375, + "enteringScreen": 225, + "leavingScreen": 195 + } + }, + "spacing": { + "unit": 8 + }, + "zIndex": { + "mobileStepper": 1000, + "appBar": 1100, + "drawer": 1200, + "modal": 1300, + "snackbar": 1400, + "tooltip": 1500 + } +} \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/util/theme_dark.ts b/packages/mc-wc-ui-components/src/components/util/theme_dark.ts new file mode 100644 index 00000000..7434151a --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/util/theme_dark.ts @@ -0,0 +1,245 @@ +export default { + "breakpoints":{ + "keys":[ + "xs", + "sm", + "md", + "lg", + "xl" + ], + "values":{ + "xs":0, + "sm":600, + "md":960, + "lg":1280, + "xl":1920 + } + }, + "direction":"ltr", + "mixins":{ + "toolbar":{ + "minHeight":56, + "@media (min-width:0px) and (orientation: landscape)":{ + "minHeight":48 + }, + "@media (min-width:600px)":{ + "minHeight":64 + } + } + }, + "overrides":{ + + }, + "palette":{ + "common":{ + "black":"#000", + "white":"#fff" + }, + "type":"dark", + "primary":{ + "light":"#7986cb", + "main":"#3f51b5", + "dark":"#303f9f", + "contrastText":"#fff", + "500": "#3f51b5", + }, + "secondary":{ + "light":"#ff4081", + "main":"#f50057", + "dark":"#c51162", + "contrastText":"#fff", + "A200": "#f50057", + }, + "error":{ + "light":"#e57373", + "main":"#f44336", + "dark":"#d32f2f", + "contrastText":"#fff" + }, + "grey":{ + "50":"#fafafa", + "100":"#f5f5f5", + "200":"#eeeeee", + "300":"#e0e0e0", + "400":"#bdbdbd", + "500":"#9e9e9e", + "600":"#757575", + "700":"#616161", + "800":"#424242", + "900":"#212121", + "A100":"#d5d5d5", + "A200":"#aaaaaa", + "A400":"#303030", + "A700":"#616161" + }, + "contrastThreshold":3, + "tonalOffset":0.2, + "text":{ + "primary":"#fff", + "secondary":"rgba(255, 255, 255, 0.7)", + "disabled":"rgba(255, 255, 255, 0.5)", + "hint":"rgba(255, 255, 255, 0.5)", + "icon":"rgba(255, 255, 255, 0.5)" + }, + "divider":"rgba(255, 255, 255, 0.12)", + "background":{ + "paper":"#424242", + "default":"#303030" + }, + "action":{ + "active":"#fff", + "hover":"rgba(255, 255, 255, 0.1)", + "hoverOpacity":0.1, + "selected":"rgba(255, 255, 255, 0.2)", + "disabled":"rgba(255, 255, 255, 0.3)", + "disabledBackground":"rgba(255, 255, 255, 0.12)" + } + }, + "shadows":[ + "none", + "0px 1px 3px 0px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 2px 1px -1px rgba(0,0,0,0.12)", + "0px 1px 5px 0px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 3px 1px -2px rgba(0,0,0,0.12)", + "0px 1px 8px 0px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 3px 3px -2px rgba(0,0,0,0.12)", + "0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)", + "0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)", + "0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)", + "0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)", + "0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)", + "0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)", + "0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)", + "0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)", + "0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)", + "0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)", + "0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)", + "0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)", + "0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)", + "0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)", + "0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)", + "0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)", + "0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)", + "0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)" + ], + "typography": { + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "fontSize": 14, + "fontWeightThin": 100, + "fontWeightLight": 300, + "fontWeightRegular": 400, + "fontWeightMedium": 500, + "fontWeightBold": 700, + "fontWeightBlack": 900, + "display4": { + "fontSize": "7rem", + "fontWeight": 300, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "letterSpacing": "-.04em", + "lineHeight": "1.14286em", + "marginLeft": "-.06em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "display3": { + "fontSize": "3.5rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "letterSpacing": "-.02em", + "lineHeight": "1.30357em", + "marginLeft": "-.04em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "display2": { + "fontSize": "2.8125rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.06667em", + "marginLeft": "-.04em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "display1": { + "fontSize": "2.125rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.20588em", + "marginLeft": "-.04em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "headline": { + "fontSize": "1.5rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.35417em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "title": { + "fontSize": "1.3125rem", + "fontWeight": 500, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.16667em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "subheading": { + "fontSize": "1rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.5em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "body2": { + "fontSize": "0.875rem", + "fontWeight": 500, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.71429em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "body1": { + "fontSize": "0.875rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.46429em", + "color": "rgba(0, 0, 0, 0.87)" + }, + "caption": { + "fontSize": "0.75rem", + "fontWeight": 400, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif", + "lineHeight": "1.375em", + "color": "rgba(0, 0, 0, 0.54)" + }, + "button": { + "fontSize": "0.875rem", + "textTransform": "uppercase", + "fontWeight": 500, + "fontFamily": "\"Roboto\", \"Helvetica\", \"Arial\", sans-serif" + } + }, + "shape":{ + "borderRadius":4 + }, + "transitions":{ + "easing":{ + "easeInOut":"cubic-bezier(0.4, 0, 0.2, 1)", + "easeOut":"cubic-bezier(0.0, 0, 0.2, 1)", + "easeIn":"cubic-bezier(0.4, 0, 1, 1)", + "sharp":"cubic-bezier(0.4, 0, 0.6, 1)" + }, + "duration":{ + "shortest":150, + "shorter":200, + "short":250, + "standard":300, + "complex":375, + "enteringScreen":225, + "leavingScreen":195 + } + }, + "zIndex":{ + "mobileStepper":1000, + "appBar":1100, + "drawer":1200, + "modal":1300, + "snackbar":1400, + "tooltip":1500 + } + } \ No newline at end of file diff --git a/packages/mc-wc-ui-components/src/components/viewport/mwc-viewport.tsx b/packages/mc-wc-ui-components/src/components/viewport/mwc-viewport.tsx new file mode 100644 index 00000000..a12f739e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/viewport/mwc-viewport.tsx @@ -0,0 +1,28 @@ +import { Component, Prop, Element, h } from '@stencil/core'; +@Component({ + tag: 'mwc-viewport', + shadow: false +}) +export class MWCViewport{ + @Element() viewportEl : HTMLDivElement; + @Prop() backgroundcolor: string = ""; + mwcTypograpyDiv: any; + componentWillLoad(){ + let viewportStyle = ` + height : 100vh; + width : 100vw; + display : block; + overflow: hidden; + ` + if(this.backgroundcolor){ + viewportStyle = `${viewportStyle} background-color : ${this.backgroundcolor}` + } + this.viewportEl.setAttribute('style',viewportStyle) + } + + render() { + return ( + + ) + } +} diff --git a/packages/mc-wc-ui-components/src/components/viewport/readme.md b/packages/mc-wc-ui-components/src/components/viewport/readme.md new file mode 100644 index 00000000..1918272e --- /dev/null +++ b/packages/mc-wc-ui-components/src/components/viewport/readme.md @@ -0,0 +1,17 @@ +# mwc-viewport + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ----------------- | ----------------- | ----------- | -------- | ------- | +| `backgroundcolor` | `backgroundcolor` | | `string` | `""` | + + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/mc-wc-ui-components/src/index.html b/packages/mc-wc-ui-components/src/index.html new file mode 100644 index 00000000..c4073f43 --- /dev/null +++ b/packages/mc-wc-ui-components/src/index.html @@ -0,0 +1,87 @@ + + + + + + Stencil Component Starter + + + + + + + + + + + + Typography + + + Typography + + + Typography + + + Typography + + + First + Sec + + First + Sec + + + Default + Primary + S + + s + Secondary + Disabled + Dense + + + + + + + + + Header + + + + + + + + + Ok + Cancel + + + + Open Dialog + + + + + diff --git a/packages/mc-wc-ui-components/src/index.ts b/packages/mc-wc-ui-components/src/index.ts new file mode 100644 index 00000000..07635cbb --- /dev/null +++ b/packages/mc-wc-ui-components/src/index.ts @@ -0,0 +1 @@ +export * from './components'; diff --git a/packages/mc-wc-ui-components/src/utils/utils.spec.ts b/packages/mc-wc-ui-components/src/utils/utils.spec.ts new file mode 100644 index 00000000..77ef54a2 --- /dev/null +++ b/packages/mc-wc-ui-components/src/utils/utils.spec.ts @@ -0,0 +1,21 @@ +import { format } from './utils'; + +describe('format', () => { + it('returns empty string for no names defined', () => { + expect(format(undefined, undefined, undefined)).toEqual(''); + }); + + it('formats just first names', () => { + expect(format('Joseph', undefined, undefined)).toEqual('Joseph'); + }); + + it('formats first and last names', () => { + expect(format('Joseph', undefined, 'Publique')).toEqual('Joseph Publique'); + }); + + it('formats first, middle and last names', () => { + expect(format('Joseph', 'Quincy', 'Publique')).toEqual( + 'Joseph Quincy Publique' + ); + }); +}); diff --git a/packages/mc-wc-ui-components/src/utils/utils.ts b/packages/mc-wc-ui-components/src/utils/utils.ts new file mode 100644 index 00000000..35db500f --- /dev/null +++ b/packages/mc-wc-ui-components/src/utils/utils.ts @@ -0,0 +1,8 @@ + +export function format(first: string, middle: string, last: string): string { + return ( + (first || '') + + (middle ? ` ${middle}` : '') + + (last ? ` ${last}` : '') + ); +} diff --git a/packages/mc-wc-ui-components/stencil.config.ts b/packages/mc-wc-ui-components/stencil.config.ts new file mode 100644 index 00000000..1258955e --- /dev/null +++ b/packages/mc-wc-ui-components/stencil.config.ts @@ -0,0 +1,40 @@ +import { Config } from '@stencil/core'; +import { sass } from '@stencil/sass'; +import { reactOutputTarget } from '@stencil/react-output-target'; + + +export const config: Config = { + namespace: 'mc-wc-ui-components', + taskQueue: 'async', + outputTargets: [ + reactOutputTarget({ + componentCorePackage: '@map-colonies/ui-components/dist/types', + proxiesFile: '../mc-wc-ui-components-react/src/components.ts', + }), + { + type: 'dist', + esmLoaderPath: '../loader', + // dir: '../../dist/libs/mc-wc-ui-components/dist', + }, + { + type: 'docs-readme', + }, + { + type: 'www', + // dir: '../../dist/libs/mc-wc-ui-components/www', + serviceWorker: null, // disable service workers + }, + ], + + + + + plugins: [ + sass({ + includePaths: [ + "./node_modules", + "../../node_modules" + ] + }) + ] +}; diff --git a/packages/mc-wc-ui-components/tsconfig.json b/packages/mc-wc-ui-components/tsconfig.json new file mode 100644 index 00000000..68c1867c --- /dev/null +++ b/packages/mc-wc-ui-components/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "allowUnreachableCode": false, + "declaration": false, + "experimentalDecorators": true, + "lib": [ + "dom", + "es2017" + ], + "moduleResolution": "node", + "module": "esnext", + "target": "es2017", + "noUnusedLocals": false, + "noUnusedParameters": false, + "jsx": "react", + "jsxFactory": "h" + }, + "include": [ + "src", + "types/jsx.d.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/yarn.lock b/yarn.lock index 06809107..4aedfeec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1142,6 +1142,80 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@evocateur/libnpmaccess@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" + integrity sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + +"@evocateur/libnpmpublish@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a" + integrity sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + semver "^5.5.1" + ssri "^6.0.1" + +"@evocateur/npm-registry-fetch@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66" + integrity sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.1.2" + +"@evocateur/pacote@^9.6.3": + version "9.6.5" + resolved "https://registry.yarnpkg.com/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5" + integrity sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + bluebird "^3.5.3" + cacache "^12.0.3" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.5.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.4.4" + npm-pick-manifest "^3.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.3" + safe-buffer "^5.2.0" + semver "^5.7.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -1332,6 +1406,691 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@lerna/add@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" + integrity sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/bootstrap" "3.21.0" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + npm-package-arg "^6.1.0" + p-map "^2.1.0" + semver "^6.2.0" + +"@lerna/bootstrap@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6" + integrity sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/has-npm-version" "3.16.5" + "@lerna/npm-install" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/symlink-binary" "3.17.0" + "@lerna/symlink-dependencies" "3.17.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + get-port "^4.2.0" + multimatch "^3.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + read-package-tree "^5.1.6" + semver "^6.2.0" + +"@lerna/changed@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b" + integrity sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/check-working-tree@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa" + integrity sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ== + dependencies: + "@lerna/collect-uncommitted" "3.16.5" + "@lerna/describe-ref" "3.16.5" + "@lerna/validation-error" "3.13.0" + +"@lerna/child-process@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2" + integrity sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg== + dependencies: + chalk "^2.3.1" + execa "^1.0.0" + strong-log-transformer "^2.0.0" + +"@lerna/clean@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d" + integrity sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + +"@lerna/cli@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242" + integrity sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA== + dependencies: + "@lerna/global-options" "3.13.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^14.2.2" + +"@lerna/collect-uncommitted@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63" + integrity sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg== + dependencies: + "@lerna/child-process" "3.16.5" + chalk "^2.3.1" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/collect-updates@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1" + integrity sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/describe-ref" "3.16.5" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^2.0.0" + +"@lerna/command@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7" + integrity sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/project" "3.21.0" + "@lerna/validation-error" "3.13.0" + "@lerna/write-log-file" "3.13.0" + clone-deep "^4.0.1" + dedent "^0.7.0" + execa "^1.0.0" + is-ci "^2.0.0" + npmlog "^4.1.2" + +"@lerna/conventional-commits@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz#2798f4881ee2ef457bdae027ab7d0bf0af6f1e09" + integrity sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA== + dependencies: + "@lerna/validation-error" "3.13.0" + conventional-changelog-angular "^5.0.3" + conventional-changelog-core "^3.1.6" + conventional-recommended-bump "^5.0.0" + fs-extra "^8.1.0" + get-stream "^4.0.0" + lodash.template "^4.5.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + semver "^6.2.0" + +"@lerna/create-symlink@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967" + integrity sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw== + dependencies: + "@zkochan/cmd-shim" "^3.1.0" + fs-extra "^8.1.0" + npmlog "^4.1.2" + +"@lerna/create@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.22.0.tgz#d6bbd037c3dc5b425fe5f6d1b817057c278f7619" + integrity sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + camelcase "^5.0.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + globby "^9.2.0" + init-package-json "^1.10.3" + npm-package-arg "^6.1.0" + p-reduce "^1.0.0" + pify "^4.0.1" + semver "^6.2.0" + slash "^2.0.0" + validate-npm-package-license "^3.0.3" + validate-npm-package-name "^3.0.0" + whatwg-url "^7.0.0" + +"@lerna/describe-ref@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0" + integrity sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw== + dependencies: + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + +"@lerna/diff@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d" + integrity sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + +"@lerna/exec@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26" + integrity sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/filter-options@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b" + integrity sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/filter-packages" "3.18.0" + dedent "^0.7.0" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/filter-packages@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70" + integrity sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ== + dependencies: + "@lerna/validation-error" "3.13.0" + multimatch "^3.0.0" + npmlog "^4.1.2" + +"@lerna/get-npm-exec-opts@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" + integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== + dependencies: + npmlog "^4.1.2" + +"@lerna/get-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff" + integrity sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw== + dependencies: + fs-extra "^8.1.0" + ssri "^6.0.1" + tar "^4.4.8" + +"@lerna/github-client@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.22.0.tgz#5d816aa4f76747ed736ae64ff962b8f15c354d95" + integrity sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg== + dependencies: + "@lerna/child-process" "3.16.5" + "@octokit/plugin-enterprise-rest" "^6.0.1" + "@octokit/rest" "^16.28.4" + git-url-parse "^11.1.2" + npmlog "^4.1.2" + +"@lerna/gitlab-client@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6" + integrity sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q== + dependencies: + node-fetch "^2.5.0" + npmlog "^4.1.2" + whatwg-url "^7.0.0" + +"@lerna/global-options@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" + integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== + +"@lerna/has-npm-version@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326" + integrity sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q== + dependencies: + "@lerna/child-process" "3.16.5" + semver "^6.2.0" + +"@lerna/import@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.22.0.tgz#1a5f0394f38e23c4f642a123e5e1517e70d068d2" + integrity sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + p-map-series "^1.0.0" + +"@lerna/info@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f" + integrity sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/output" "3.13.0" + envinfo "^7.3.1" + +"@lerna/init@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c" + integrity sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + write-json-file "^3.2.0" + +"@lerna/link@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b" + integrity sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/package-graph" "3.18.5" + "@lerna/symlink-dependencies" "3.17.0" + p-map "^2.1.0" + slash "^2.0.0" + +"@lerna/list@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2" + integrity sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/listable@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a" + integrity sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg== + dependencies: + "@lerna/query-graph" "3.18.5" + chalk "^2.3.1" + columnify "^1.5.4" + +"@lerna/log-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16" + integrity sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ== + dependencies: + byte-size "^5.0.1" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" + +"@lerna/npm-conf@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827" + integrity sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA== + dependencies: + config-chain "^1.1.11" + pify "^4.0.1" + +"@lerna/npm-dist-tag@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55" + integrity sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + "@lerna/otplease" "3.18.5" + figgy-pudding "^3.5.1" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + +"@lerna/npm-install@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3" + integrity sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.2" + write-pkg "^3.1.0" + +"@lerna/npm-publish@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af" + integrity sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg== + dependencies: + "@evocateur/libnpmpublish" "^1.2.2" + "@lerna/otplease" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + read-package-json "^2.0.13" + +"@lerna/npm-run-script@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15" + integrity sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + npmlog "^4.1.2" + +"@lerna/otplease@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231" + integrity sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog== + dependencies: + "@lerna/prompt" "3.18.5" + figgy-pudding "^3.5.1" + +"@lerna/output@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" + integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== + dependencies: + npmlog "^4.1.2" + +"@lerna/pack-directory@3.16.4": + version "3.16.4" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693" + integrity sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng== + dependencies: + "@lerna/get-packed" "3.16.0" + "@lerna/package" "3.16.0" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + npm-packlist "^1.4.4" + npmlog "^4.1.2" + tar "^4.4.10" + temp-write "^3.4.0" + +"@lerna/package-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b" + integrity sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA== + dependencies: + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/validation-error" "3.13.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + semver "^6.2.0" + +"@lerna/package@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" + integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw== + dependencies: + load-json-file "^5.3.0" + npm-package-arg "^6.1.0" + write-pkg "^3.1.0" + +"@lerna/prerelease-id-from-version@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1" + integrity sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA== + dependencies: + semver "^6.2.0" + +"@lerna/profiler@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051" + integrity sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg== + dependencies: + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npmlog "^4.1.2" + upath "^1.2.0" + +"@lerna/project@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" + integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A== + dependencies: + "@lerna/package" "3.16.0" + "@lerna/validation-error" "3.13.0" + cosmiconfig "^5.1.0" + dedent "^0.7.0" + dot-prop "^4.2.0" + glob-parent "^5.0.0" + globby "^9.2.0" + load-json-file "^5.3.0" + npmlog "^4.1.2" + p-map "^2.1.0" + resolve-from "^4.0.0" + write-json-file "^3.2.0" + +"@lerna/prompt@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1" + integrity sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ== + dependencies: + inquirer "^6.2.0" + npmlog "^4.1.2" + +"@lerna/publish@3.22.1": + version "3.22.1" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.22.1.tgz#b4f7ce3fba1e9afb28be4a1f3d88222269ba9519" + integrity sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw== + dependencies: + "@evocateur/libnpmaccess" "^3.1.2" + "@evocateur/npm-registry-fetch" "^4.0.0" + "@evocateur/pacote" "^9.6.3" + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/describe-ref" "3.16.5" + "@lerna/log-packed" "3.16.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/npm-dist-tag" "3.18.5" + "@lerna/npm-publish" "3.18.5" + "@lerna/otplease" "3.18.5" + "@lerna/output" "3.13.0" + "@lerna/pack-directory" "3.16.4" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + "@lerna/version" "3.22.1" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-pipe "^1.2.0" + semver "^6.2.0" + +"@lerna/pulse-till-done@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" + integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== + dependencies: + npmlog "^4.1.2" + +"@lerna/query-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86" + integrity sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA== + dependencies: + "@lerna/package-graph" "3.18.5" + figgy-pudding "^3.5.1" + +"@lerna/resolve-symlink@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386" + integrity sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ== + dependencies: + fs-extra "^8.1.0" + npmlog "^4.1.2" + read-cmd-shim "^1.0.1" + +"@lerna/rimraf-dir@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09" + integrity sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA== + dependencies: + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + path-exists "^3.0.0" + rimraf "^2.6.2" + +"@lerna/run-lifecycle@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00" + integrity sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A== + dependencies: + "@lerna/npm-conf" "3.16.0" + figgy-pudding "^3.5.1" + npm-lifecycle "^3.1.2" + npmlog "^4.1.2" + +"@lerna/run-topologically@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3" + integrity sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg== + dependencies: + "@lerna/query-graph" "3.18.5" + figgy-pudding "^3.5.1" + p-queue "^4.0.0" + +"@lerna/run@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891" + integrity sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-run-script" "3.16.5" + "@lerna/output" "3.13.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/timer" "3.13.0" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/symlink-binary@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a" + integrity sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/package" "3.16.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + +"@lerna/symlink-dependencies@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a" + integrity sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/resolve-symlink" "3.16.0" + "@lerna/symlink-binary" "3.17.0" + fs-extra "^8.1.0" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + +"@lerna/timer@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" + integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== + +"@lerna/validation-error@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" + integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== + dependencies: + npmlog "^4.1.2" + +"@lerna/version@3.22.1": + version "3.22.1" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.22.1.tgz#9805a9247a47ee62d6b81bd9fa5fb728b24b59e2" + integrity sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g== + dependencies: + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/conventional-commits" "3.22.0" + "@lerna/github-client" "3.22.0" + "@lerna/gitlab-client" "3.15.0" + "@lerna/output" "3.13.0" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + chalk "^2.3.1" + dedent "^0.7.0" + load-json-file "^5.3.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^2.1.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + p-waterfall "^1.0.0" + semver "^6.2.0" + slash "^2.0.0" + temp-write "^3.4.0" + write-json-file "^3.2.0" + +"@lerna/write-log-file@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" + integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== + dependencies: + npmlog "^4.1.2" + write-file-atomic "^2.3.0" + "@mapbox/jsonlint-lines-primitives@~2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" @@ -1444,6 +2203,293 @@ prop-types "^15.7.2" react-is "^16.8.0" +"@material/animation@^0.25.0": + version "0.25.0" + resolved "https://registry.yarnpkg.com/@material/animation/-/animation-0.25.0.tgz#b252ac3d0b628e79a79f0c406d7470fb56352a80" + integrity sha512-4RzlpMwJtMnQ3/rNf4zpG9qnoQcCkYiRs6U515MRQzv7qFl1eCZx3U3dGaUu7UVf3Hwx4RskUB/fBxGc0b61CQ== + +"@material/auto-init@^0.25.0": + version "0.25.0" + resolved "https://registry.yarnpkg.com/@material/auto-init/-/auto-init-0.25.0.tgz#4e1bd1e3d1ca05fd937130dd1f17f5ce2f4584a5" + integrity sha512-5nZOslGcZUczKXfMPBze5fgAb3OAmoeGxm3h6x3QLZP7FMXgyRpofH6AGw5oDIiXmvSM8r2+sduwW9OfgMlTMA== + +"@material/base@^0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@material/base/-/base-0.24.0.tgz#888a61e5b6580e35a66384a9f8823091b4fe7c55" + integrity sha512-RG1SbHl6M8a0fdrMAoMm7Fc8jkuj3HhZd0f8Dy5kfUtQk3I7PyzD+MLCrmCHgUAlKbcK2J9VxJWpd4isZr3x9w== + +"@material/button@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/button/-/button-0.27.0.tgz#546e1887324043b2607ecd3ba661b029ef6c909b" + integrity sha512-K48NRs4QtVRqTsPGHEo/5eiOBf5VVHOMTB7MA5ZvtH+uMcqtpea7LQe2mbOE+LXHQafCoRw1PHEi2nCdGa95IA== + dependencies: + "@material/elevation" "^0.25.0" + "@material/ripple" "^0.27.0" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/card@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/card/-/card-0.27.0.tgz#0513fe8f23430faeadb12611763122a901b3aaf7" + integrity sha512-cit86kCLOLPx2gxOOePLyRAr2Zgt82udt7e+eyb/qMkfWXlAidd0IEqX/yaq4izAnBfcdGB3AfyseS5STLiEmA== + dependencies: + "@material/elevation" "^0.25.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/checkbox@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/checkbox/-/checkbox-0.27.0.tgz#5fb1e2646bffc793828a614d2e0010f5263c050d" + integrity sha512-/tZ19dSHEN/oRI33m1EV5cvXjsKChjBDXNkOCpEbanMVzTzYTOPnNWO96veB++wNk4sKc4qCEoDFoklo+ip21w== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/ripple" "^0.27.0" + "@material/rtl" "^0.1.8" + "@material/selection-control" "^0.27.0" + "@material/theme" "^0.27.0" + +"@material/dialog@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/dialog/-/dialog-0.27.0.tgz#b67702e9653e20a446ac1e47ed3a7e2cfd28752f" + integrity sha512-ly0+VVxsemfH5ut2zYsj+g8rnPaK4lpcC9vCX96gdjLnZZyjt63/k/nf0bjBJoBd5jF/fpMjUpxvd03zFV6KZA== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/elevation" "^0.25.0" + "@material/ripple" "^0.27.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.1.1" + focus-trap "^2.3.0" + +"@material/drawer@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/drawer/-/drawer-0.27.0.tgz#23fe6b676407b7e31aa706a58eb82099f479ac76" + integrity sha512-glg3IG7G9Autc9Yjf7qUm8cuT1T/Z/oeg3WHESvRAvX/lLgX95ZKVmkKhS0Odsk+F2iC7zksFJWoyZdzgLqlJg== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/elevation" "^0.25.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/elevation@^0.25.0": + version "0.25.0" + resolved "https://registry.yarnpkg.com/@material/elevation/-/elevation-0.25.0.tgz#ab1b22cdc6d0c840e2c389e334c39466a8397c9b" + integrity sha512-3TU+Far+D7qo8UqghRIRPp2riXV457L2bULiv+KY9WglWR5eyX3l1BfApgEbza+ltZCVcbrtiTcRVpCI18zIqA== + dependencies: + "@material/animation" "^0.25.0" + "@material/theme" "^0.4.0" + +"@material/fab@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/fab/-/fab-0.27.0.tgz#2ee4b47d4248731fe6065fcbb6423c36eb1c5fb3" + integrity sha512-7UTBa4M1YIq6wkseQ7kjx7FR3bxnJoV8V+wZXet/GZBlG3KhYTXIxazwqMGU2WnuwDXvquq2rhNxG9ZXj028jQ== + dependencies: + "@material/animation" "^0.25.0" + "@material/elevation" "^0.25.0" + "@material/ripple" "^0.27.0" + "@material/theme" "^0.27.0" + +"@material/form-field@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/form-field/-/form-field-0.27.0.tgz#8a3cb86f47d2cc7c2ad7587d1834314153f431ab" + integrity sha512-KBO2BpKLnMxlG/RjkZLBv7DvW7NVFUIlEcbirLKcxGpa3KW1PuzVl6Pe0jfSXxGl5O0YzExONb6jZk5pOE9Rhw== + dependencies: + "@material/base" "^0.24.0" + "@material/rtl" "^0.1.8" + "@material/selection-control" "^0.27.0" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/grid-list@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/grid-list/-/grid-list-0.27.0.tgz#d0ead89555a9a7aff4d3fc7cff60a221ab577483" + integrity sha512-hEKGoDGu/7eIjitDZrA7oQGdrBXIPLZCR6rKgW/dRIVtjKKI8ZjMN5RkzZ2gmHyZyxAL7iTRq6KTtLfdnpWprg== + dependencies: + "@material/base" "^0.24.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/icon-toggle@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/icon-toggle/-/icon-toggle-0.27.0.tgz#ac024cf4bca99947d74a1ff5bc761348f3c94981" + integrity sha512-TMNyyjrLDs9d73Nvtq4U7guAFO0Lw1gmwmtIFemMgmx0Zz4qMztGamIe/G72Ue3OSPG4RNGOgQYRgVr5zh3OPg== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/ripple" "^0.27.0" + "@material/theme" "^0.27.0" + +"@material/layout-grid@^0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@material/layout-grid/-/layout-grid-0.24.0.tgz#223d771d755d887807998d96f5996e182ceb640d" + integrity sha512-38Si5CQgRkQwTSVb+lfCZkH8QEe1/HWfj2yNmK5OIFRMBFbSjQRsvf3p+aU1R7fM4TDjNKcgUWqRtBnKuUjNCQ== + +"@material/linear-progress@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/linear-progress/-/linear-progress-0.27.0.tgz#0607dfb9b579a11e0fe5ea940af3784145f45c40" + integrity sha512-XitcSts6MU0pDnkg54rovFlHgfNJuhhWM0kgEtMIicCurEGbS0Ptg5H+B5DVejBimeZQBZtnl53y0+Q1b/TSMA== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/theme" "^0.27.0" + +"@material/list@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/list/-/list-0.27.0.tgz#842a6c945b65ac6f5e4f1dea55b10f015ac8b15c" + integrity sha512-F/eTyB1mFR/MzkgkeIeEC7tNxKLh3+zn20KX7PGiRY1P+j30jzk3M7O7Zp+5OS4SEOBFUZLbff9qWpxUvUvolg== + dependencies: + "@material/ripple" "^0.27.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/menu@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/menu/-/menu-0.27.0.tgz#56d1abc130013aacc33b40c1d4d2ba8dd0a5ae32" + integrity sha512-JV485C66qIjJ3O7Fleox8vI3lWyKoF8gTDNaMv1fnND5XXYqlSIBsdE5QP6/8HQcEZTTozfsv7N6VZC/F5pwEw== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/elevation" "^0.25.0" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/radio@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/radio/-/radio-0.27.0.tgz#c342a2bf35eca7ba0cd2583e10eb9ca046c1a50c" + integrity sha512-0pfsAyJcHjl5b4mcJFDeXifATvAfx93qQrVu0x7TYaDswzl5omOiLMeaVmlcPjDuueiD0gJxz+IDVnDM7fKsaA== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/ripple" "^0.27.0" + "@material/selection-control" "^0.27.0" + "@material/theme" "^0.27.0" + +"@material/ripple@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/ripple/-/ripple-0.27.0.tgz#174ef823434e51662dec7b4ba9f1d7bc7905d79b" + integrity sha512-RhN6B7+r+m+YY+T0HjBGabs1DmCXkR9n/TJPKO4DvFJ7Cck03/sjMtdg7WSqIemP+9xDv6u8lhUMaW9d3Fu2Pw== + dependencies: + "@material/base" "^0.24.0" + "@material/theme" "^0.27.0" + +"@material/rtl@^0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@material/rtl/-/rtl-0.1.8.tgz#2462db15e2d4e041666485559c028382872b01fb" + integrity sha512-NzBobwxvhJg+dch99pVO+Z9HL1DM+esuIy5WYXgM7trfOVh8n9DkVo5vD/NKnDy6F5wCaRnJOI5T19Tev6c9Zw== + +"@material/select@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/select/-/select-0.27.0.tgz#419b7de0ead29efdfea90153a5ec37b12a01d328" + integrity sha512-hi2PpkuyIFkfwq5mbac3NocsN3sqH/6eMUemQFRrjrLbbWvRxt2NvoADAg0MR6GdkzKOW6EhiuDoETUDzziFlg== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/list" "^0.27.0" + "@material/menu" "^0.27.0" + "@material/ripple" "^0.27.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/selection-control@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/selection-control/-/selection-control-0.27.0.tgz#4df7d56ed89dba9d041f016661ef819f7a1c1f06" + integrity sha512-qHXAmDlRwIgzc1bA9T4BK1JudkqdphaLggI0S9kBBfSpI2NFfE02F29ldTHl0WX9lvzcLKPswIcHkqbp5z0Oug== + dependencies: + "@material/ripple" "^0.27.0" + +"@material/slider@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/slider/-/slider-0.27.0.tgz#e624fb1b9d5d30f25e7d74ad836d9995a2efaabc" + integrity sha512-RVZTEI+KHuDVSbs234hr0FHBYYtuCaZpI2YhDEUrkdD57iVKPqLNCROmCtoxvuselVanho3awAKUJZw6Jj6ovA== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + +"@material/snackbar@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/snackbar/-/snackbar-0.27.0.tgz#09722c95f9a58030821016a118cdacbadcc6266f" + integrity sha512-BKlfrUJbAn4VU/VpJ9XBOehJxdzk790nEod6Qd2jXr50NsSXdGvSMRBb5Oo1vW4qaBjIq64zVkuqWi2zBAJ7og== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/switch@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/switch/-/switch-0.27.0.tgz#e9390b706d2522f033e1541e3c4e78da91bd878b" + integrity sha512-3lpnimQtARUwT2jB3Zp1h1lViA4pKqktFYThQe8s+6BJRyW7BGWMLH3c+pJ7TuRXYmJ+xPGM7yuPG2N8Vo8G5A== + dependencies: + "@material/animation" "^0.25.0" + "@material/elevation" "^0.25.0" + "@material/theme" "^0.27.0" + +"@material/tabs@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/tabs/-/tabs-0.27.0.tgz#d88a2073f940755b1b7165a22a91be46f0015702" + integrity sha512-icAzVT6sBEA+vsCnobzantJiZdzOcMNAquBIupswBqkb5zPDShDg5BkCvi6CiLHijqDMRMofg4shqq5UdUqDDw== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/ripple" "^0.27.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/textfield@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/textfield/-/textfield-0.27.0.tgz#fbc58495b966ae020b05bb727bb14f26e542de4e" + integrity sha512-nrru1z3P+tSteQoqb8qJ109oZW9oK2OEjRFTvfeNgJtz6/QJEsAMDKDlGZ/7jX7PTVPMYeakEgbHyDyGD0x9HA== + dependencies: + "@material/animation" "^0.25.0" + "@material/base" "^0.24.0" + "@material/ripple" "^0.27.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/theme@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/theme/-/theme-0.27.0.tgz#32fd72addfec09bf22e83f66f36a7ebbdc123461" + integrity sha512-H41/AgCfuCN6jziasTiuNnRtASUBAUOwWAVyWHrcUBSyoUgYMsVpalrMk3goVDMiVPVrxL+yjg8uE6t0zemmbw== + +"@material/theme@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@material/theme/-/theme-0.4.0.tgz#0aef1a0279b65c15990584fb8b8eca095c734641" + integrity sha1-Cu8aAnm2XBWZBYT7i47KCVxzRkE= + +"@material/toolbar@^0.27.0": + version "0.27.0" + resolved "https://registry.yarnpkg.com/@material/toolbar/-/toolbar-0.27.0.tgz#5fa6192225d605c4a9f5d5cd2e3b882d7d52cbae" + integrity sha512-n+NDsT+gW0ko7Z7EBu5j5aoJTTPKkYIz/GanmbYr2Voimyo+IEkTE7Rk14EL+ZPUmIHjSVrMmdO90SgKCz7RkQ== + dependencies: + "@material/base" "^0.24.0" + "@material/elevation" "^0.25.0" + "@material/rtl" "^0.1.8" + "@material/theme" "^0.27.0" + "@material/typography" "^0.3.0" + +"@material/typography@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@material/typography/-/typography-0.1.1.tgz#fb2e3437bd3284d39e9fb91485767ade6b2bd0c1" + integrity sha1-+y40N70yhNOen7kUhXZ63msr0ME= + +"@material/typography@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@material/typography/-/typography-0.3.0.tgz#f828c2d3215bfd66c58072709b4260c64125390a" + integrity sha1-+CjC0yFb/WbFgHJwm0JgxkElOQo= + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1452,16 +2498,175 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@octokit/auth-token@^2.4.0": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a" + integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ== + dependencies: + "@octokit/types" "^5.0.0" + +"@octokit/endpoint@^6.0.1": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.5.tgz#43a6adee813c5ffd2f719e20cfd14a1fee7c193a" + integrity sha512-70K5u6zd45ItOny6aHQAsea8HHQjlQq85yqOMe+Aj8dkhN2qSJ9T+Q3YjUjEYfPRBcuUWNgMn62DQnP/4LAIiQ== + dependencies: + "@octokit/types" "^5.0.0" + is-plain-object "^4.0.0" + universal-user-agent "^6.0.0" + +"@octokit/plugin-enterprise-rest@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + +"@octokit/plugin-paginate-rest@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" + integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== + dependencies: + "@octokit/types" "^2.0.1" + +"@octokit/plugin-request-log@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" + integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== + +"@octokit/plugin-rest-endpoint-methods@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" + integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== + dependencies: + "@octokit/types" "^2.0.1" + deprecation "^2.3.1" + +"@octokit/request-error@^1.0.2": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" + integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request-error@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.2.tgz#0e76b83f5d8fdda1db99027ea5f617c2e6ba9ed0" + integrity sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw== + dependencies: + "@octokit/types" "^5.0.1" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^5.2.0": + version "5.4.7" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.7.tgz#fd703ee092e0463ceba49ff7a3e61cb4cf8a0fde" + integrity sha512-FN22xUDP0i0uF38YMbOfx6TotpcENP5W8yJM1e/LieGXn6IoRxDMnBf7tx5RKSW4xuUZ/1P04NFZy5iY3Rax1A== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^5.0.0" + deprecation "^2.0.0" + is-plain-object "^4.0.0" + node-fetch "^2.3.0" + once "^1.4.0" + universal-user-agent "^6.0.0" + +"@octokit/rest@^16.28.4": + version "16.43.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" + integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== + dependencies: + "@octokit/auth-token" "^2.4.0" + "@octokit/plugin-paginate-rest" "^1.1.1" + "@octokit/plugin-request-log" "^1.0.0" + "@octokit/plugin-rest-endpoint-methods" "2.4.0" + "@octokit/request" "^5.2.0" + "@octokit/request-error" "^1.0.2" + atob-lite "^2.0.0" + before-after-hook "^2.0.0" + btoa-lite "^1.0.0" + deprecation "^2.0.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lodash.uniq "^4.5.0" + octokit-pagination-methods "^1.1.0" + once "^1.4.0" + universal-user-agent "^4.0.0" + +"@octokit/types@^2.0.0", "@octokit/types@^2.0.1": + version "2.16.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" + integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== + dependencies: + "@types/node" ">= 8" + +"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.2.0.tgz#d075dc23bf293f540739250b6879e2c1be2fc20c" + integrity sha512-XjOk9y4m8xTLIKPe1NFxNWBdzA2/z3PFFA/bwf4EoH6oS8hM0Y46mEa4Cb+KCyj/tFDznJFahzQ0Aj3o1FYq4A== + dependencies: + "@types/node" ">= 8" + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + dependencies: + any-observable "^0.3.0" + "@sheerun/mutationobserver-shim@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@stencil/core@^1.12.2": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@stencil/core/-/core-1.17.1.tgz#d6496723a3a1ab8e6af2162843bfb16e6e7e59a0" + integrity sha512-1OsRAMP9wo79mmZc4kz2DGnN/hqXLjdrTNGzqXd8K8K/6Mdua3Te+Zb3gmKMGP7ZaIzqIHbWDvCD2XZ4Sb0dFw== + dependencies: + typescript "3.9.7" + +"@stencil/react-output-target@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@stencil/react-output-target/-/react-output-target-0.0.7.tgz#47e0b52336bdebd8e74680dd4b49c80b557c173a" + integrity sha512-Z3w+Mj3cyNutltrkEs1FMW0ABWTWQXJn1nxmFmvDmMknAtAgKl0qrazdVS5+uQ0XneiCp5lfYgqMcKfP5CM9Yw== + +"@stencil/sass@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@stencil/sass/-/sass-1.3.2.tgz#9fe99f2cdbb800e03ea36b05e645ae4bb57e1d01" + integrity sha512-w6rkOsRIPY1rBa/13Wf+rMZrOzc6z86/Mkp3inzaYGsxBmLkf4PeP1rfaUB4SFDVRfMduP7FTd4ZJi/+FVrsMw== + "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" @@ -1565,7 +2770,14 @@ "@svgr/plugin-svgo" "^4.3.1" loader-utils "^1.2.3" -"@testing-library/dom@*": +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@testing-library/dom@*", "@testing-library/dom@^7.17.1": version "7.21.5" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.21.5.tgz#d87312efc5039313f9ea246ed722d808f2ffcbb3" integrity sha512-zZqC5T/9Upjs0/3hyrYNpGxw75dr/bLLD27pUdb3WWJ50JHwutvnQ1FJNHbVth9f2hLzEnh7hBdZ9pD++8pJ8g== @@ -1604,7 +2816,7 @@ pretty-format "^24.0.0" redent "^3.0.0" -"@testing-library/react@^9.3.2", "@testing-library/react@^9.5.0": +"@testing-library/react@^9.3.2": version "9.5.0" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e" integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== @@ -1613,7 +2825,7 @@ "@testing-library/dom" "^6.15.0" "@types/testing-library__react" "^9.1.2" -"@testing-library/user-event@^7.1.2", "@testing-library/user-event@^7.2.1": +"@testing-library/user-event@^7.1.2": version "7.2.1" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-7.2.1.tgz#2ad4e844175a3738cb9e7064be5ea070b8863a1c" integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== @@ -1776,7 +2988,7 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^24.0.0", "@types/jest@^24.9.1": +"@types/jest@^24.0.0": version "24.9.1" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== @@ -1793,16 +3005,26 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*": +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + +"@types/node@*", "@types/node@>= 8": version "14.0.26" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.26.tgz#22a3b8a46510da8944b67bfc27df02c34a35331c" integrity sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA== -"@types/node@^12.0.0", "@types/node@^12.12.44": +"@types/node@^12.0.0": version "12.12.53" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.53.tgz#be0d375933c3d15ef2380dafb3b0350ea7021129" integrity sha512-51MYTDTyCziHb70wtGNFRwB4l+5JNvdqzFSkbDvpbftEgVUBEE+T5f7pROhWMp/fxp07oNIEQZd5bbfAH22ohQ== +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + "@types/ol@^6.3.1": version "6.3.1" resolved "https://registry.yarnpkg.com/@types/ol/-/ol-6.3.1.tgz#cff923a0d5433f3db66946234f3e65238185ca02" @@ -1827,7 +3049,7 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/react-dom@*", "@types/react-dom@^16.9.0", "@types/react-dom@^16.9.8": +"@types/react-dom@*", "@types/react-dom@^16.9.0": version "16.9.8" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== @@ -1848,7 +3070,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.9.0", "@types/react@^16.9.35": +"@types/react@*", "@types/react@^16.9.0": version "16.9.43" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b" integrity sha512-PxshAFcnJqIWYpJbLPriClH53Z2WlJcVZE+NP2etUtWQs2s7yIMj3/LDKZT/5CHJ/F62iyjVCDu2H3jHEXIxSg== @@ -2116,11 +3338,33 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zkochan/cmd-shim@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" + integrity sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg== + dependencies: + is-windows "^1.0.0" + mkdirp-promise "^5.0.1" + mz "^2.5.0" + +JSONStream@^1.0.4, JSONStream@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== +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== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -2178,6 +3422,27 @@ adjust-sourcemap-loader@2.0.0: object-path "0.11.4" regex-parser "2.2.10" +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -2226,12 +3491,19 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= + dependencies: + string-width "^2.0.0" + ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.0.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -2288,6 +3560,16 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + +any-promise@^1.0.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" @@ -2304,11 +3586,24 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.1.1: +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== +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2352,6 +3647,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" + integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== + array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -2362,6 +3662,11 @@ array-filter@^1.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -2372,6 +3677,11 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= + array-includes@^3.0.3, array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -2381,13 +3691,18 @@ array-includes@^3.0.3, array-includes@^3.1.1: es-abstract "^1.17.0" is-string "^1.0.5" -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: 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-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -2419,7 +3734,12 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@~2.0.6: +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@^2.0.0, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -2497,6 +3817,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +atob-lite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" + integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2525,13 +3850,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== -axios@^0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - axobject-query@^2.0.2: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -2722,6 +4040,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +before-after-hook@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" + integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2744,7 +4067,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bluebird@^3.5.5: +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -2792,6 +4115,19 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== + 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" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2816,7 +4152,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -2928,6 +4264,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2957,6 +4298,21 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + +byte-size@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" + integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2967,7 +4323,7 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.2: +cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== @@ -3027,6 +4383,19 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -3064,6 +4433,32 @@ camel-case@^4.1.1: pascal-case "^3.1.1" tslib "^1.10.0" +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + camelcase@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" @@ -3074,6 +4469,21 @@ camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" + integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -3096,6 +4506,11 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" +capture-stack-trace@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + case-sensitive-paths-webpack-plugin@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" @@ -3106,7 +4521,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3115,7 +4530,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -3142,6 +4557,11 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -3205,6 +4625,11 @@ chrome-trace-event@^1.0.2: 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== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -3233,6 +4658,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@^2.2.5: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" @@ -3245,6 +4675,18 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= + +cli-cursor@^2.0.0, cli-cursor@^2.1.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: + restore-cursor "^2.0.0" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -3252,6 +4694,14 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -3309,6 +4759,18 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + clsx@^1.0.2, clsx@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" @@ -3386,6 +4848,14 @@ colorette@^1.2.0: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== +columnify@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -3413,6 +4883,14 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compare-func@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.4.tgz#6b07c4c5e8341119baf44578085bda0f4a823516" + integrity sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q== + dependencies: + array-ify "^1.0.0" + dot-prop "^3.0.0" + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -3460,6 +4938,36 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== + 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" + confusing-browser-globals@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" @@ -3475,6 +4983,11 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +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" @@ -3497,6 +5010,89 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +conventional-changelog-angular@^5.0.3: + version "5.0.10" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.10.tgz#5cf7b00dd315b6a6a558223c80d5ef24ddb34205" + integrity sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA== + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-core@^3.1.6: + version "3.2.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" + integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== + dependencies: + conventional-changelog-writer "^4.0.6" + conventional-commits-parser "^3.0.3" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^2.0.3" + lodash "^4.2.1" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^3.0.0" + +conventional-changelog-preset-loader@^2.1.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-writer@^4.0.6: + version "4.0.16" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz#ca10f2691a8ea6d3c2eb74bd35bcf40aa052dda5" + integrity sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ== + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^2.0.6" + dateformat "^3.0.0" + handlebars "^4.7.6" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^7.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^3.0.0" + +conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c" + integrity sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4" + integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^7.0.0" + split2 "^2.0.0" + through2 "^3.0.0" + trim-off-newlines "^1.0.0" + +conventional-recommended-bump@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" + integrity sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.1.1" + conventional-commits-filter "^2.0.2" + conventional-commits-parser "^3.0.3" + git-raw-commits "2.0.0" + git-semver-tags "^2.0.3" + meow "^4.0.0" + q "^1.5.1" + convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -3576,7 +5172,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -3605,6 +5201,13 @@ create-ecdh@^4.0.0: 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" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= + dependencies: + capture-stack-trace "^1.0.0" + create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -3644,6 +5247,15 @@ cross-spawn@7.0.1: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^5.0.1: + 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" + which "^1.2.9" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3681,6 +5293,11 @@ 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" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" @@ -3775,6 +5392,13 @@ css-tree@1.0.0-alpha.39: mdn-data "2.0.6" source-map "^0.6.1" +css-vendor@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-0.3.8.tgz#6421cfd3034ce664fe7673972fd0119fc28941fa" + integrity sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo= + dependencies: + is-in-browser "^1.0.2" + css-vendor@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" @@ -3920,6 +5544,13 @@ csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5, csstype@^2.6.7: resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -3938,6 +5569,13 @@ damerau-levenshtein@^1.0.4: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= + dependencies: + number-is-nan "^1.0.0" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -3954,11 +5592,21 @@ data-urls@^1.0.0, data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + date-fns@^2.14.0: version "2.15.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f" integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ== +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3966,14 +5614,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@=3.1.0: +debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -debug@^3.1.1, debug@^3.2.5: +debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3987,7 +5635,20 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize@^1.2.0: +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= + +decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -3997,6 +5658,18 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-equal-ident@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal-ident/-/deep-equal-ident-1.1.1.tgz#06f4b89e53710cd6cea4a7781c7a956642de8dc9" @@ -4016,11 +5689,21 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -4029,6 +5712,18 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -4058,6 +5753,26 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +del-cli@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-3.0.1.tgz#2d27ff260204b5104cadeda86f78f180a4ebe89a" + integrity sha512-BLHItGr82rUbHhjMu41d+vw9Md49i81jmZSV00HdTq4t+RTHywmEht/23mNFpUl2YeLYJZJyGz4rdlMAyOxNeg== + dependencies: + del "^5.1.0" + meow "^6.1.1" + +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" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -4071,16 +5786,40 @@ del@^4.1.1: pify "^4.0.1" rimraf "^2.6.3" +del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.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.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -4094,6 +5833,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -4112,6 +5856,14 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" +dezalgo@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + dependencies: + asap "^2.0.0" + wrappy "1" + diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" @@ -4134,6 +5886,20 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" @@ -4275,6 +6041,20 @@ dot-case@^3.0.3: no-case "^3.0.3" tslib "^1.10.0" +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= + dependencies: + is-obj "^1.0.0" + +dot-prop@^4.1.0, dot-prop@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + dot-prop@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" @@ -4292,6 +6072,11 @@ dotenv@8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -4325,6 +6110,11 @@ electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.488: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.509.tgz#830fcb89cd66dc2984d18d794973b99e3f00584c" integrity sha512-cN4lkjNRuTG8rtAqTOVgwpecEC2kbKA04PG6YijcKGHK/kD0xLjiqExcAOmLUwtXZRF8cBeam2I0VZcih919Ug== +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + elliptic@^6.0.0, elliptic@^6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" @@ -4363,6 +6153,13 @@ encodeurl@~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.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -4389,6 +6186,16 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== +env-paths@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" + integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== + +envinfo@^7.3.1: + version "7.7.2" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.2.tgz#098f97a0e902f8141f9150553c92dbb282c4cabe" + integrity sha512-k3Eh5bKuQnZjm49/L7H4cHzs2FlL5QjbTB3JrPxoTI8aJG7hVMe4uKyJxSYH4ahseby2waUwk5OaKX/nAsaYgg== + enzyme-adapter-react-16@^1.15.2: version "1.15.2" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz#b16db2f0ea424d58a808f9df86ab6212895a4501" @@ -4468,6 +6275,11 @@ enzyme@^3.11.0: rst-selector-parser "^2.2.3" string.prototype.trim "^1.2.1" +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -4526,6 +6338,18 @@ es6-iterator@2.0.3, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" @@ -4789,6 +6613,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + eventemitter3@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" @@ -4819,6 +6648,32 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== + dependencies: + cross-spawn "^6.0.0" + 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" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + 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" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -4925,6 +6780,15 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^2.0.4, external-editor@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -4963,7 +6827,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^2.0.2: +fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -4975,6 +6839,18 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" +fast-glob@^3.0.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -4985,6 +6861,13 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -5006,11 +6889,26 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figgy-pudding@^3.5.1: +figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +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" + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5157,12 +7055,12 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== +focus-trap@^2.3.0: + version "2.4.6" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-2.4.6.tgz#332b475b317cec6a4a129f5307ce7ebc0da90b40" + integrity sha512-vWZTPtBU6pBoyWZDRZJHkXsyP2ZCZBHE3DRVXnSVdQKH/mcDtu9S5Kz8CUDyIqpfZfLEyI9rjKJLnc4Y40BRBg== dependencies: - debug "=3.1.0" + tabbable "^1.0.3" follow-redirects@^1.0.0: version "1.12.1" @@ -5266,6 +7164,13 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -5330,6 +7235,25 @@ functions-have-names@^1.2.0: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== +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" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -5350,13 +7274,46 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-stream@^4.0.0: +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + 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" @@ -5369,6 +7326,60 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-raw-commits@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" + integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^4.0.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" + integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== + dependencies: + meow "^4.0.0" + semver "^6.0.0" + +git-up@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +git-url-parse@^11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" + integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== + dependencies: + git-up "^4.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= + dependencies: + ini "^1.3.2" + +github-url-from-git@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0" + integrity sha1-+YX+3MCpqledyI16/waNVcxiUaA= + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -5377,7 +7388,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== @@ -5401,6 +7412,13 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl 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" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + global-modules@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -5442,6 +7460,20 @@ globby@8.0.2: pify "^3.0.0" slash "^1.0.0" +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -5453,6 +7485,54 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= + 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" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -5476,6 +7556,18 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +handlebars@^4.7.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -5489,6 +7581,11 @@ har-validator@~5.1.3: ajv "^6.5.5" har-schema "^2.0.0" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + harmony-reflect@^1.4.6: version "1.6.1" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" @@ -5501,6 +7598,11 @@ has-ansi@^2.0.0: 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" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -5516,6 +7618,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-unicode@^2.0.0, has-unicode@^2.0.1: + 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" @@ -5547,6 +7654,11 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has-yarn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" + integrity sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac= + has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -5597,7 +7709,7 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -hosted-git-info@^2.1.4: +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== @@ -5688,6 +7800,16 @@ htmlparser2@^3.3.0, htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -5730,6 +7852,14 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -5763,18 +7893,40 @@ https-browserify@^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.3: +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + +hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -5799,16 +7951,28 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.6: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.1: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + immer@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" @@ -5844,6 +8008,11 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" +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-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -5857,6 +8026,18 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -5895,11 +8076,25 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, 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== +init-package-json@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + inquirer@7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" @@ -5919,6 +8114,64 @@ inquirer@7.0.4: strip-ansi "^5.1.0" through "^2.3.6" +inquirer@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^6.2.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + inquirer@^7.0.0: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -5972,7 +8225,12 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@^1.1.0, ip@^1.1.5: +ip-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" + integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== + +ip@1.1.5, ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= @@ -6050,6 +8308,13 @@ is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.0: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== +is-ci@^1.0.10: + 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-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -6133,6 +8398,11 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + 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" @@ -6174,6 +8444,19 @@ is-in-browser@^1.0.2, is-in-browser@^1.1.3: resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= +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" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + 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" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= + is-number-object@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" @@ -6191,7 +8474,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.1: +is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= @@ -6201,11 +8484,30 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-cwd@^2.0.0: +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.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-cwd@^2.0.0, is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + is-path-in-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" @@ -6213,6 +8515,13 @@ is-path-in-cwd@^2.0.0: dependencies: is-path-inside "^2.1.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-path-inside@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" @@ -6220,7 +8529,12 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-plain-obj@^1.0.0: +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -6232,6 +8546,21 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-4.1.1.tgz#1a14d6452cbd50790edc7fdaa0aed5a40a35ebb5" + integrity sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA== + +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= + is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" @@ -6249,12 +8578,38 @@ is-resolvable@^1.0.0: resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + is-root@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-stream@^1.1.0: +is-scoped@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" + integrity sha1-RJypgpnnEwOCViieyytUDcQ3yzA= + dependencies: + scoped-regex "^1.0.0" + +is-scoped@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-2.1.0.tgz#fef0713772658bdf5bee418608267ddae6d3566d" + integrity sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ== + dependencies: + scoped-regex "^2.0.0" + +is-ssh@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + dependencies: + protocols "^1.1.0" + +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -6283,12 +8638,31 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= + dependencies: + text-extensions "^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: +is-url-superb@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-3.0.0.tgz#b9a1da878a1ac73659047d1e6f4ef22c209d3e25" + integrity sha512-3faQP+wHCGDQT1qReM5zCPx2mxoal6DzbzquFlCYJLWyy4WPTved33ea2xFbX37z4NoriEwZGIYhFtx8RUB5wQ== + dependencies: + url-regex "^5.0.0" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.0, 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== @@ -6337,6 +8711,11 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +issue-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/issue-regex/-/issue-regex-2.0.0.tgz#bb1802490394f8083c7a6787247cbf975638ef5d" + integrity sha512-flaQ/45dMqCYSMzBQI/h3bcto6T70uN7kjNnI8n3gQU6no5p+QcnMWBNXkraED0YvbUymxKaqdvgPa09RZQM5A== + istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" @@ -6882,7 +9261,12 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, 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== @@ -6914,7 +9298,7 @@ json-stringify-pretty-compact@^2.0.0: resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885" integrity sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ== -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, 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= @@ -6950,6 +9334,11 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -6960,6 +9349,49 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jss-camel-case@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jss-camel-case/-/jss-camel-case-6.1.0.tgz#ccb1ff8d6c701c02a1fed6fb6fb6b7896e11ce44" + integrity sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ== + dependencies: + hyphenate-style-name "^1.0.2" + +jss-compose@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/jss-compose/-/jss-compose-5.0.0.tgz#ce01b2e4521d65c37ea42cf49116e5f7ab596484" + integrity sha512-YofRYuiA0+VbeOw0VjgkyO380sA4+TWDrW52nSluD9n+1FWOlDzNbgpZ/Sb3Y46+DcAbOS21W5jo6SAqUEiuwA== + dependencies: + warning "^3.0.0" + +jss-default-unit@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/jss-default-unit/-/jss-default-unit-8.0.2.tgz#cc1e889bae4c0b9419327b314ab1c8e2826890e6" + integrity sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg== + +jss-expand@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/jss-expand/-/jss-expand-5.3.0.tgz#02be076efe650125c842f5bb6fb68786fe441ed6" + integrity sha512-NiM4TbDVE0ykXSAw6dfFmB1LIqXP/jdd0ZMnlvlGgEMkMt+weJIl8Ynq1DsuBY9WwkNyzWktdqcEW2VN0RAtQg== + +jss-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/jss-extend/-/jss-extend-6.2.0.tgz#4af09d0b72fb98ee229970f8ca852fec1ca2a8dc" + integrity sha512-YszrmcB6o9HOsKPszK7NeDBNNjVyiW864jfoiHoMlgMIg2qlxKw70axZHqgczXHDcoyi/0/ikP1XaHDPRvYtEA== + dependencies: + warning "^3.0.0" + +jss-global@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jss-global/-/jss-global-3.0.0.tgz#e19e5c91ab2b96353c227e30aa2cbd938cdaafa2" + integrity sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q== + +jss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jss-nested/-/jss-nested-6.0.1.tgz#ef992b79d6e8f63d939c4397b9d99b5cbbe824ca" + integrity sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA== + dependencies: + warning "^3.0.0" + jss-plugin-camel-case@^10.0.3: version "10.3.0" resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.3.0.tgz#ae4da53b39a6e3ea94b70a20fc41c11f0b87386a" @@ -7020,6 +9452,41 @@ jss-plugin-vendor-prefixer@^10.0.3: css-vendor "^2.0.8" jss "^10.3.0" +jss-preset-default@^4.0.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/jss-preset-default/-/jss-preset-default-4.5.0.tgz#d3a457012ccd7a551312014e394c23c4b301cadd" + integrity sha512-qZbpRVtHT7hBPpZEBPFfafZKWmq3tA/An5RNqywDsZQGrlinIF/mGD9lmj6jGqu8GrED2SMHZ3pPKLmjCZoiaQ== + dependencies: + jss-camel-case "^6.1.0" + jss-compose "^5.0.0" + jss-default-unit "^8.0.2" + jss-expand "^5.3.0" + jss-extend "^6.2.0" + jss-global "^3.0.0" + jss-nested "^6.0.1" + jss-props-sort "^6.0.0" + jss-template "^1.0.1" + jss-vendor-prefixer "^7.0.0" + +jss-props-sort@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/jss-props-sort/-/jss-props-sort-6.0.0.tgz#9105101a3b5071fab61e2d85ea74cc22e9b16323" + integrity sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g== + +jss-template@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jss-template/-/jss-template-1.0.1.tgz#09aed9d86cc547b07f53ef355d7e1777f7da430a" + integrity sha512-m5BqEWha17fmIVXm1z8xbJhY6GFJxNB9H68GVnCWPyGYfxiAgY9WTQyvDAVj+pYRgrXSOfN5V1T4+SzN1sJTeg== + dependencies: + warning "^3.0.0" + +jss-vendor-prefixer@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz#0166729650015ef19d9f02437c73667231605c71" + integrity sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA== + dependencies: + css-vendor "^0.3.8" + jss@^10.0.3, jss@^10.3.0: version "10.3.0" resolved "https://registry.yarnpkg.com/jss/-/jss-10.3.0.tgz#2cf7be265f72b59c1764d816fdabff1c5dd18326" @@ -7030,6 +9497,15 @@ jss@^10.0.3, jss@^10.3.0: is-in-browser "^1.1.3" tiny-warning "^1.0.2" +jss@^9.5.0: + version "9.8.7" + resolved "https://registry.yarnpkg.com/jss/-/jss-9.8.7.tgz#ed9763fc0f2f0260fc8260dac657af61e622ce05" + integrity sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ== + dependencies: + is-in-browser "^1.1.3" + symbol-observable "^1.1.0" + warning "^3.0.0" + jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: version "2.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" @@ -7038,6 +9514,13 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: array-includes "^3.1.1" object.assign "^4.1.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -7069,7 +9552,7 @@ kind-of@^5.0.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: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -7087,6 +9570,13 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= + dependencies: + package-json "^4.0.0" + lazy-cache@^0.2.3: version "0.2.7" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" @@ -7109,6 +9599,30 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== +lerna@^3.22.1: + version "3.22.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" + integrity sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg== + dependencies: + "@lerna/add" "3.21.0" + "@lerna/bootstrap" "3.21.0" + "@lerna/changed" "3.21.0" + "@lerna/clean" "3.21.0" + "@lerna/cli" "3.18.5" + "@lerna/create" "3.22.0" + "@lerna/diff" "3.21.0" + "@lerna/exec" "3.21.0" + "@lerna/import" "3.22.0" + "@lerna/info" "3.21.0" + "@lerna/init" "3.21.0" + "@lerna/link" "3.21.0" + "@lerna/list" "3.21.0" + "@lerna/publish" "3.22.1" + "@lerna/run" "3.21.0" + "@lerna/version" "3.22.1" + import-local "^2.0.0" + npmlog "^4.1.2" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7134,6 +9648,70 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +listr-input@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/listr-input/-/listr-input-0.1.3.tgz#0c313967b6d179ebe964a81e9363ce2a5a39d25c" + integrity sha512-dvjSD1MrWGXxxPixpMQlSBmkyqhJrPxGo30un25k/vlvFOWZj70AauU+YkEh7CA8vmpkE6Wde37DJDmqYqF39g== + dependencies: + inquirer "^3.3.0" + rxjs "^5.5.2" + through "^2.3.8" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.1: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.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" @@ -7151,8 +9729,19 @@ load-json-file@^4.0.0: dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" - pify "^3.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +load-json-file@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== + dependencies: + graceful-fs "^4.1.15" + parse-json "^4.0.0" + pify "^4.0.1" strip-bom "^3.0.0" + type-fest "^0.3.0" loader-fs-cache@^1.0.2: version "1.0.3" @@ -7232,6 +9821,11 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.escape@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" @@ -7242,6 +9836,11 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -7265,6 +9864,11 @@ lodash.isequal@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + lodash.istypedarray@^3.0.0: version "3.0.6" resolved "https://registry.yarnpkg.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62" @@ -7284,12 +9888,17 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.4.0, lodash.template@^4.5.0: +lodash.template@^4.0.2, lodash.template@^4.4.0, lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -7309,11 +9918,39 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5: +lodash.zip@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" + integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= + +"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +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" + loglevel@^1.6.6: version "1.6.8" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" @@ -7326,6 +9963,14 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + lower-case@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" @@ -7333,6 +9978,24 @@ lower-case@^2.0.1: dependencies: tslib "^1.10.0" +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7340,6 +10003,18 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +macos-release@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" + integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg== + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -7355,6 +10030,23 @@ make-dir@^3.0.2: dependencies: semver "^6.0.0" +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -7379,6 +10071,21 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + +map-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7391,6 +10098,42 @@ mapbox-to-css-font@^2.4.0: resolved "https://registry.yarnpkg.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.0.tgz#a23b51664a1ee839beaefade013f2655bee9a390" integrity sha512-v674D0WtpxCXlA6E+sBlG1QJWdUkz/s9qAD91bJSXBGuBL5lL4tJXpoJEftecphCh2SVQCjWMS2vhylc3AIQTg== +material-components-web@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/material-components-web/-/material-components-web-0.27.0.tgz#605055f7003cc786d9eb7e76c439111bef35e39e" + integrity sha512-uwMz7Q3KwjPelHvmCykv+uKyeVPZuiRlNyK3Fu6Xd397AdK0Kk0PKzKn1/ujRV+SFYB+8w/EVrYCvSI/QKJb1w== + dependencies: + "@material/animation" "^0.25.0" + "@material/auto-init" "^0.25.0" + "@material/base" "^0.24.0" + "@material/button" "^0.27.0" + "@material/card" "^0.27.0" + "@material/checkbox" "^0.27.0" + "@material/dialog" "^0.27.0" + "@material/drawer" "^0.27.0" + "@material/elevation" "^0.25.0" + "@material/fab" "^0.27.0" + "@material/form-field" "^0.27.0" + "@material/grid-list" "^0.27.0" + "@material/icon-toggle" "^0.27.0" + "@material/layout-grid" "^0.24.0" + "@material/linear-progress" "^0.27.0" + "@material/list" "^0.27.0" + "@material/menu" "^0.27.0" + "@material/radio" "^0.27.0" + "@material/ripple" "^0.27.0" + "@material/rtl" "^0.1.8" + "@material/select" "^0.27.0" + "@material/selection-control" "^0.27.0" + "@material/slider" "^0.27.0" + "@material/snackbar" "^0.27.0" + "@material/switch" "^0.27.0" + "@material/tabs" "^0.27.0" + "@material/textfield" "^0.27.0" + "@material/theme" "^0.27.0" + "@material/toolbar" "^0.27.0" + "@material/typography" "^0.3.0" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -7440,6 +10183,88 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +meow@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist "^1.1.3" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + +meow@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" + integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" + +meow@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc" + integrity sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw== + dependencies: + "@types/minimist" "^1.2.0" + arrify "^2.0.1" + camelcase "^6.0.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "^4.0.2" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" + merge-deep@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" @@ -7459,7 +10284,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -7493,6 +10318,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -7523,11 +10356,21 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -7560,7 +10403,24 @@ minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + +minimist-options@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -7586,6 +10446,14 @@ minipass-pipeline@^1.2.2: dependencies: minipass "^3.0.0" +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + minipass@^3.0.0, minipass@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" @@ -7593,6 +10461,13 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -7625,32 +10500,29 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= dependencies: - minimist "^1.2.5" + mkdirp "*" -mkdirp@^1.0.4: +mkdirp@*, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mobx-react-lite@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-2.0.7.tgz#1bfb3b4272668e288047cf0c7940b14e91cba284" - integrity sha512-YKAh2gThC6WooPnVZCoC+rV1bODAKFwkhxikzgH18wpBjkgTkkR9Sb0IesQAH5QrAEH/JQVmy47jcpQkf2Au3Q== - -mobx-state-tree@^3.16.0: - version "3.17.2" - resolved "https://registry.yarnpkg.com/mobx-state-tree/-/mobx-state-tree-3.17.2.tgz#130ab4d450fc4dd6e2571b7385af1350c82def37" - integrity sha512-X0+xO7yEvBvPmLU2Z6cp81sD0xQaMXgLD4lGZoKSasOhNJSQPyKlu/LFxJTS6Wgw7J3gkWq9MMfQ4pO6wGMVfw== +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" -mobx@^5.15.4: - version "5.15.4" - resolved "https://registry.yarnpkg.com/mobx/-/mobx-5.15.4.tgz#9da1a84e97ba624622f4e55a0bf3300fb931c2ab" - integrity sha512-xRFJxSU2Im3nrGCdjSuOTFmxVDGeqOHL+TyADCGbT0k4HHqGmx5u2yaHNryvoORpI4DfbzjJ5jPmuv+d7sioFw== +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moo@^0.5.0: version "0.5.1" @@ -7679,7 +10551,7 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -7697,11 +10569,35 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.8: +multimatch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== + dependencies: + array-differ "^2.0.3" + array-union "^1.0.2" + arrify "^1.0.1" + minimatch "^3.0.4" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mz@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -7745,7 +10641,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -7768,11 +10664,42 @@ no-case@^3.0.3: lower-case "^2.0.1" tslib "^1.10.0" +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-fetch@^2.3.0, node-fetch@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-forge@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== +node-gyp@^5.0.2: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" + integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -7836,7 +10763,15 @@ noms@0.0.0: inherits "^2.0.1" readable-stream "~1.0.31" -normalize-package-data@^2.3.2: +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7873,11 +10808,111 @@ normalize-url@1.9.1: query-string "^4.1.0" sort-keys "^1.0.0" -normalize-url@^3.0.0: +normalize-url@^3.0.0, normalize-url@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +np@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/np/-/np-3.1.0.tgz#f83437459164c529fad801937c201488e319931d" + integrity sha512-3HTje97SzbsvK9g61C72PpDk9AloaaTn0K7xHbx7jMrs9vJtCZqu7TWUGxrcYGiKRO/uFRn5SiRZfYB/gpL9Iw== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + any-observable "^0.3.0" + chalk "^2.3.0" + del "^3.0.0" + execa "^0.10.0" + github-url-from-git "^1.5.0" + has-yarn "^1.0.0" + inquirer "^5.2.0" + is-scoped "^1.0.0" + issue-regex "^2.0.0" + listr "^0.14.1" + listr-input "^0.1.1" + log-symbols "^2.1.0" + meow "^5.0.0" + npm-name "^5.0.0" + p-timeout "^2.0.1" + read-pkg-up "^3.0.0" + rxjs "^6.2.0" + semver "^5.2.0" + split "^1.0.0" + terminal-link "^1.1.0" + update-notifier "^2.1.0" + +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-lifecycle@^3.1.2: + version "3.1.5" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" + integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" + +npm-name@^5.0.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/npm-name/-/npm-name-5.5.0.tgz#3a73adbcb0488a41a44ff820ed51dcc32c72bd09" + integrity sha512-l7/uyVfEi2e3ho+ovaJZC0xlbwzXNUz3RxkxpfcnLuoGKAuYoo9YoJ/uy18PsTD8IziugGHks4t/mGmBJEZ4Qg== + dependencies: + got "^9.6.0" + is-scoped "^2.1.0" + is-url-superb "^3.0.0" + lodash.zip "^4.2.0" + registry-auth-token "^4.0.0" + registry-url "^5.1.0" + validate-npm-package-name "^3.0.0" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.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" @@ -7885,6 +10920,16 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npmlog@^4.1.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" + gauge "~2.7.3" + set-blocking "~2.0.0" + nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -8020,6 +11065,11 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +octokit-pagination-methods@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" + integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== + ol-mapbox-style@^6.1.1: version "6.1.2" resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-6.1.2.tgz#611f918c2b713fb66de0ee85bc688aebbbb290af" @@ -8057,6 +11107,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: 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" + onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -8111,6 +11168,11 @@ os-browserify@^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@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -8120,11 +11182,32 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@~1.0.2: +os-name@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: 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, osenv@^0.1.5: + 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-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -8182,7 +11265,19 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.0.0: +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= + dependencies: + p-reduce "^1.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-map@^2.0.0, p-map@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== @@ -8194,6 +11289,18 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-pipe@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= + +p-queue@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" + integrity sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg== + dependencies: + eventemitter3 "^3.1.0" + p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" @@ -8206,6 +11313,13 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -8216,6 +11330,23 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-waterfall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA= + dependencies: + p-reduce "^1.0.0" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -8257,6 +11388,11 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-github-repo-url@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -8282,6 +11418,24 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" +parse-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" @@ -8349,7 +11503,7 @@ path-is-absolute@^1.0.0: 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.2: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -8374,6 +11528,15 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -8417,12 +11580,12 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.0.0: +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= @@ -9188,11 +12351,16 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0: +prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + pretty-bytes@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" @@ -9246,6 +12414,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + promise@^8.0.3: version "8.1.0" resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" @@ -9261,6 +12437,13 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= + dependencies: + read "1" + 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" @@ -9279,11 +12462,28 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + protocol-buffers-schema@^3.3.1: version "3.4.0" resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz#2f0ea31ca96627d680bf2fefae7ebfa2b6453eae" integrity sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA== +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -9297,6 +12497,11 @@ prr@~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= + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -9354,7 +12559,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: +q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -9392,6 +12597,16 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + quickselect@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" @@ -9454,6 +12669,16 @@ rbush@^3.0.1: dependencies: quickselect "^2.0.0" +rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-app-polyfill@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" @@ -9605,6 +12830,42 @@ react@^16.13.1: object-assign "^4.1.1" prop-types "^15.6.2" +read-cmd-shim@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== + dependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: + version "2.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@^5.1.6: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.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" @@ -9613,13 +12874,39 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" read-pkg@^2.0.0: version "2.0.0" @@ -9639,7 +12926,24 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +read@1, read@~1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9652,7 +12956,7 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9671,6 +12975,16 @@ readable-stream@~1.0.31: isarray "0.0.1" string_decoder "~0.10.x" +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -9701,6 +13015,22 @@ recursive-readdir@2.2.2: dependencies: minimatch "3.0.4" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -9786,6 +13116,35 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +registry-auth-token@^3.0.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" + integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-auth-token@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" + integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== + dependencies: + rc "^1.2.8" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + dependencies: + rc "^1.0.1" + +registry-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" @@ -9829,6 +13188,13 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + request-promise-core@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" @@ -9955,6 +13321,21 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3 dependencies: path-parse "^1.0.6" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +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" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -9968,11 +13349,21 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rework-visit@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" @@ -10010,14 +13401,14 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@3.0.2: +rimraf@3.0.2, rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -10050,6 +13441,11 @@ run-async@^2.2.0, run-async@^2.4.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + 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" @@ -10062,7 +13458,26 @@ rw@^1.3.3: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= -rxjs@^6.5.3, rxjs@^6.6.0: +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +rxjs@^5.5.2: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + +rxjs@^6.2.0, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== @@ -10086,7 +13501,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -10160,6 +13575,16 @@ schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6 ajv "^6.12.2" ajv-keywords "^3.4.1" +scoped-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" + integrity sha1-o0a7Gs1CB65wvXwMfKnlZra63bg= + +scoped-regex@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-2.1.0.tgz#7b9be845d81fd9d21d1ec97c61a0b7cf86d2015f" + integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -10172,7 +13597,14 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10246,7 +13678,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -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= @@ -10375,6 +13807,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -10384,6 +13821,16 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slide@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -10434,6 +13881,22 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== + dependencies: + agent-base "~4.2.1" + socks "~2.3.2" + +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" + sort-asc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.1.0.tgz#ab799df61fc73ea0956c79c4b531ed1e9e7727e9" @@ -10451,6 +13914,13 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + sort-object@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-0.3.2.tgz#98e0d199ede40e07c61a84403c61d6c3b290f9e2" @@ -10554,6 +14024,20 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== + dependencies: + through2 "^2.0.2" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -10574,7 +14058,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: +ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== @@ -10679,7 +14163,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.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== @@ -10798,6 +14282,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -10816,6 +14307,18 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -10828,6 +14331,20 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +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= + +strong-log-transformer@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + style-loader@0.23.1: version "0.23.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" @@ -10850,7 +14367,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^5.3.0: +supports-color@^5.0.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -10871,6 +14388,14 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-hyperlinks@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" + integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== + dependencies: + has-flag "^2.0.0" + supports-color "^5.0.0" + svg-parser@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" @@ -10895,11 +14420,26 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +tabbable@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-1.1.3.tgz#0e4ee376f3631e42d7977a074dbd2b3827843081" + integrity sha512-nOWwx35/JuDI4ONuF0ZTo6lYvI0fY0tZCH1ErzY2EXfu4az50ZyiUX8X073FLiZtmWUVlkRnuXsehjJgCw9tYg== + table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -10915,6 +14455,51 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +temp-write@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= + dependencies: + graceful-fs "^4.1.2" + is-stream "^1.1.0" + make-dir "^1.0.0" + pify "^3.0.0" + temp-dir "^1.0.0" + uuid "^3.0.1" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= + dependencies: + execa "^0.7.0" + +terminal-link@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-1.3.0.tgz#3e9a308289e13340053aaf40e8f1a06d1335646e" + integrity sha512-nFaWG/gs3brGi3opgWU2+dyFGbQ7tueSRYOBOD8URdDXCbAGqDEZzuskCc+okCClYcJFDPwn8e2mbv4FqAnWFA== + dependencies: + ansi-escapes "^3.2.0" + supports-hyperlinks "^1.0.1" + terser-webpack-plugin@2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" @@ -10964,17 +14549,36 @@ test-exclude@^5.2.3: read-pkg-up "^4.0.0" require-main-filename "^2.0.0" +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= -through2@^2.0.0, through2@^2.0.1: +through2@^2.0.0, through2@^2.0.1, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -10982,7 +14586,15 @@ through2@^2.0.0, through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: +through2@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -10992,6 +14604,11 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +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-8y6srFoXW+ol1/q1Zas+2HQe9W8= + timers-browserify@^2.0.4: version "2.0.11" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" @@ -11009,6 +14626,11 @@ tiny-warning@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tlds@^1.203.0: + version "1.207.0" + resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.207.0.tgz#459264e644cf63ddc0965fece3898913286b1afd" + integrity sha512-k7d7Q1LqjtAvhtEOs3yN14EabsNO8ZCoY6RESSJDB9lst3bTx3as/m1UuAeCKzYxiyhR1qq72ZPhpSf+qlqiwg== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -11038,6 +14660,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + 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" @@ -11083,6 +14710,26 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + +trim-newlines@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= + ts-pnp@1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" @@ -11134,6 +14781,21 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -11162,7 +14824,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.7.5: +typescript@3.9.7: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== @@ -11172,6 +14834,21 @@ typescript@~3.7.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== +uglify-js@^3.1.4: + version "3.10.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7" + integrity sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA== + +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= + +umask@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= + 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" @@ -11229,6 +14906,25 @@ unique-slug@^2.0.0: 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" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +universal-user-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" + integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== + dependencies: + os-name "^3.1.0" + +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -11252,11 +14948,32 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1: +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= + +upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-notifier@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + 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" @@ -11278,6 +14995,20 @@ url-loader@2.3.0: mime "^2.4.4" schema-utils "^2.5.0" +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" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + url-parse@^1.4.3: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" @@ -11286,6 +15017,14 @@ url-parse@^1.4.3: querystringify "^2.1.1" requires-port "^1.0.0" +url-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-5.0.0.tgz#8f5456ab83d898d18b2f91753a702649b873273a" + integrity sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g== + dependencies: + ip-regex "^4.1.0" + tlds "^1.203.0" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -11304,6 +15043,13 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -11356,7 +15102,7 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== -validate-npm-package-license@^3.0.1: +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -11364,6 +15110,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -11416,6 +15169,13 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" +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-chokidar2@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" @@ -11441,6 +15201,13 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + webfont-matcher@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/webfont-matcher/-/webfont-matcher-1.1.0.tgz#98ce95097b29e31fbe733053e10e571642d1c6c7" @@ -11624,11 +15391,37 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +widest-line@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== + dependencies: + string-width "^2.1.1" + +windows-release@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.1.tgz#cb4e80385f8550f709727287bf71035e209c4ace" + integrity sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A== + dependencies: + execa "^1.0.0" + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + workbox-background-sync@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" @@ -11786,6 +15579,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +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 "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -11818,6 +15619,47 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-json-file@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + pify "^3.0.0" + sort-keys "^2.0.0" + write-file-atomic "^2.0.0" + +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-pkg@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== + dependencies: + sort-keys "^2.0.0" + write-json-file "^2.2.0" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -11839,6 +15681,11 @@ ws@^6.1.2, ws@^6.2.1: dependencies: async-limiter "~1.0.0" +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -11866,7 +15713,12 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.2: +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -11881,6 +15733,13 @@ yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -11897,7 +15756,15 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.2: +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -11939,6 +15806,23 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^14.2.2: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" + yargs@^15.3.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" From b333cbccf04b29290dd54bca9092429f16d95391 Mon Sep 17 00:00:00 2001 From: alebinson Date: Tue, 28 Jul 2020 16:45:02 +0300 Subject: [PATCH 02/35] few task are added in package.json --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 267d9ae6..ac589f81 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "build:react": "lerna exec --scope @map-colonies/react-components -- yarn build", "build:stencil": "lerna exec --scope @map-colonies/ui-components -- yarn build", "build:stencil-react": "lerna exec --scope @map-colonies/ui-components-react -- yarn build", - "build": "yarn build:react && yarn build:stencil && build:stencil-react", + "build:all": "lerna run build --npm-client=yarn", + "publish": "lerna publish --contents dist", + "start:reactdemo": "cd demoapp && yarn start" }, "devDependencies": { From cb033efa90505ef2bdbe1cc925a6e3e9ee3ccb49 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 3 Aug 2020 17:19:30 +0300 Subject: [PATCH 03/35] Material React wrappers --- conflicts-ui/.github/workflows/Lint.yml | 29 + conflicts-ui/.gitignore | 21 + conflicts-ui/CHANGELOG.md | 9 + conflicts-ui/README.md | 43 + conflicts-ui/commitlint.config.js | 1 + conflicts-ui/package.json | 105 + conflicts-ui/public/conflicts.json | 208 + conflicts-ui/public/favicon.ico | Bin 0 -> 3150 bytes conflicts-ui/public/index.html | 43 + conflicts-ui/public/logo192.png | Bin 0 -> 5347 bytes conflicts-ui/public/logo512.png | Bin 0 -> 9664 bytes conflicts-ui/public/manifest.json | 25 + conflicts-ui/public/robots.txt | 3 + conflicts-ui/src/.eslintrc | 42 + conflicts-ui/src/App.css | 0 conflicts-ui/src/App.test.tsx | 9 + conflicts-ui/src/App.tsx | 29 + .../src/common/models/ResponseState.ts | 5 + .../src/common/models/api-response.ts | 13 + .../src/common/models/pagination-result.ts | 17 + .../__snapshots__/conflict-item.spec.tsx.snap | 20 + .../components/conflict-item.spec.tsx | 28 + .../conflicts/components/conflict-item.tsx | 21 + .../components/conflicts-table.spec.tsx | 82 + .../conflicts/components/conflicts-table.tsx | 92 + .../src/conflicts/components/date-filter.tsx | 61 + .../components/has-resolved-filter.tsx | 51 + .../conflicts/components/keywords-filter.tsx | 20 + .../models/conflict-search-params.spec.ts | 97 + .../models/conflict-search-params.ts | 46 + conflicts-ui/src/conflicts/models/conflict.ts | 21 + .../conflicts/models/conflictStore.spec.ts | 86 + .../src/conflicts/models/conflictStore.ts | 119 + .../src/conflicts/models/pagination.ts | 25 + .../src/conflicts/models/rootStore.spec.ts | 40 + .../src/conflicts/models/rootStore.ts | 50 + .../src/conflicts/views/conflicts-view.tsx | 35 + conflicts-ui/src/index.css | 13 + conflicts-ui/src/index.tsx | 38 + conflicts-ui/src/logo.svg | 7 + conflicts-ui/src/react-app-env.d.ts | 1 + conflicts-ui/src/serviceWorker.ts | 149 + conflicts-ui/src/setupTests.ts | 14 + conflicts-ui/tsconfig.json | 25 + package.json | 7 +- packages/mc-react-ui-components/.gitignore | 21 + packages/mc-react-ui-components/README.md | 18 + packages/mc-react-ui-components/package.json | 74 + .../mc-react-ui-components/public/favicon.ico | Bin 0 -> 3150 bytes .../mc-react-ui-components/public/index.html | 43 + .../mc-react-ui-components/public/logo192.png | Bin 0 -> 5347 bytes .../mc-react-ui-components/public/logo512.png | Bin 0 -> 9664 bytes .../public/manifest.json | 25 + .../mc-react-ui-components/public/robots.txt | 3 + packages/mc-react-ui-components/src/index.tsx | 9 + .../src/lib/@types/markdown.d.ts | 4 + .../src/lib/avatar/README.md | 190 + .../src/lib/avatar/avatar-ssr.spec.tsx | 14 + .../src/lib/avatar/avatar.css | 132 + .../src/lib/avatar/avatar.spec.tsx | 17 + .../src/lib/avatar/generated-examples.json | 1 + .../src/lib/avatar/generated-props.json | 398 + .../src/lib/avatar/index.tsx | 189 + .../src/lib/avatar/styles.tsx | 3 + .../src/lib/badge/README.md | 161 + .../src/lib/badge/badge-ssr.spec.tsx | 16 + .../src/lib/badge/badge.css | 66 + .../src/lib/badge/badge.spec.tsx | 38 + .../src/lib/badge/generated-examples.json | 1 + .../src/lib/badge/generated-props.json | 152 + .../src/lib/badge/index.tsx | 61 + .../src/lib/badge/styles.tsx | 1 + .../src/lib/base/README.md | 3 + .../src/lib/base/base.story.tsx | 14 + .../src/lib/base/bugs.story.tsx | 180 + .../src/lib/base/component.tsx | 104 + .../src/lib/base/foundation-component.tsx | 308 + .../src/lib/base/index.spec.tsx | 210 + .../src/lib/base/index.tsx | 10 + .../src/lib/base/portal.tsx | 54 + .../src/lib/base/test-polyfill.tsx | 35 + .../src/lib/base/utils/apply-passive.tsx | 59 + .../src/lib/base/utils/data-table-context.tsx | 13 + .../src/lib/base/utils/debounce.tsx | 15 + .../src/lib/base/utils/deprecation.tsx | 56 + .../src/lib/base/utils/emitter.tsx | 46 + .../src/lib/base/utils/empty-client-rect.tsx | 8 + .../src/lib/base/utils/events-map.tsx | 88 + .../src/lib/base/utils/focus-trap.tsx | 46 + .../src/lib/base/utils/get-display-name.tsx | 12 + .../src/lib/base/utils/hooks.tsx | 15 + .../src/lib/base/utils/index.tsx | 16 + .../src/lib/base/utils/ponyfills.tsx | 30 + .../src/lib/base/utils/raf.tsx | 14 + .../src/lib/base/utils/random-id.tsx | 11 + .../src/lib/base/utils/strings.tsx | 6 + .../src/lib/base/utils/test-utils.tsx | 23 + .../lib/base/utils/trigger-window-resize.tsx | 3 + .../src/lib/base/utils/use-knob.tsx | 25 + .../src/lib/base/utils/wrap-child.tsx | 12 + .../src/lib/base/with-theme.tsx | 42 + .../src/lib/button/README.md | 86 + .../src/lib/button/button-ssr.spec.tsx | 13 + .../src/lib/button/button.spec.tsx | 53 + .../src/lib/button/button.story.tsx | 20 + .../src/lib/button/generated-examples.json | 1 + .../src/lib/button/generated-props.json | 315 + .../src/lib/button/index.tsx | 122 + .../src/lib/button/styles.tsx | 3 + .../src/lib/card/README.md | 256 + .../src/lib/card/card-ssr.spec.tsx | 48 + .../src/lib/card/card.spec.tsx | 63 + .../src/lib/card/card.story.tsx | 161 + .../src/lib/card/generated-examples.json | 1 + .../src/lib/card/generated-props.json | 793 ++ .../src/lib/card/index.tsx | 145 + .../src/lib/card/styles.tsx | 3 + .../src/lib/checkbox/README.md | 63 + .../src/lib/checkbox/checkbox-ssr.spec.tsx | 12 + .../src/lib/checkbox/checkbox.spec.tsx | 67 + .../src/lib/checkbox/checkbox.story.tsx | 35 + .../src/lib/checkbox/foundation.tsx | 77 + .../src/lib/checkbox/generated-examples.json | 1 + .../src/lib/checkbox/generated-props.json | 292 + .../src/lib/checkbox/index.tsx | 143 + .../src/lib/checkbox/styles.tsx | 3 + .../src/lib/chip/README.md | 168 + .../src/lib/chip/chip-ssr.spec.tsx | 17 + .../src/lib/chip/chip.spec.tsx | 90 + .../src/lib/chip/chip.story.tsx | 79 + .../src/lib/chip/foundation.tsx | 142 + .../src/lib/chip/generated-examples.json | 1 + .../src/lib/chip/generated-props.json | 468 + .../src/lib/chip/index.tsx | 212 + .../src/lib/chip/styles.tsx | 3 + .../src/lib/circular-progress/README.md | 70 + .../circular-progress-ssr.spec.tsx | 13 + .../circular-progress/circular-progress.css | 89 + .../circular-progress.spec.tsx | 28 + .../circular-progress/generated-examples.json | 1 + .../circular-progress/generated-props.json | 127 + .../src/lib/circular-progress/index.tsx | 87 + .../src/lib/circular-progress/styles.tsx | 1 + .../src/lib/data-table/README.md | 287 + .../lib/data-table/data-table-ssr.spec.tsx | 69 + .../src/lib/data-table/data-table.css | 181 + .../src/lib/data-table/data-table.spec.tsx | 301 + .../src/lib/data-table/data-table.story.tsx | 169 + .../lib/data-table/generated-examples.json | 1 + .../src/lib/data-table/generated-props.json | 783 ++ .../src/lib/data-table/index.tsx | 287 + .../src/lib/data-table/styles.tsx | 3 + .../src/lib/dialog/README.md | 341 + .../src/lib/dialog/dialog-queue.tsx | 210 + .../src/lib/dialog/dialog-ssr.spec.tsx | 40 + .../src/lib/dialog/dialog.spec.tsx | 234 + .../src/lib/dialog/dialog.story.tsx | 98 + .../src/lib/dialog/dialog.tsx | 243 + .../src/lib/dialog/foundation.tsx | 181 + .../src/lib/dialog/generated-examples.json | 1 + .../src/lib/dialog/generated-props.json | 2461 ++++ .../src/lib/dialog/index.tsx | 2 + .../src/lib/dialog/styles.tsx | 3 + .../src/lib/drawer/README.md | 189 + .../src/lib/drawer/drawer-ssr.spec.tsx | 62 + .../src/lib/drawer/drawer.spec.tsx | 80 + .../src/lib/drawer/drawer.story.tsx | 60 + .../src/lib/drawer/foundation.tsx | 139 + .../src/lib/drawer/generated-examples.json | 1 + .../src/lib/drawer/generated-props.json | 341 + .../src/lib/drawer/index.tsx | 163 + .../src/lib/drawer/styles.tsx | 1 + .../src/lib/elevation/README.md | 63 + .../src/lib/elevation/elevation-ssr.spec.tsx | 9 + .../src/lib/elevation/elevation.spec.tsx | 24 + .../src/lib/elevation/elevation.story.tsx | 71 + .../src/lib/elevation/generated-examples.json | 1 + .../src/lib/elevation/generated-props.json | 103 + .../src/lib/elevation/index.tsx | 34 + .../src/lib/elevation/styles.tsx | 1 + .../src/lib/fab/README.md | 57 + .../src/lib/fab/fab-ssr.spec.tsx | 9 + .../src/lib/fab/fab.spec.tsx | 35 + .../src/lib/fab/fab.story.tsx | 22 + .../src/lib/fab/generated-examples.json | 1 + .../src/lib/fab/generated-props.json | 202 + .../src/lib/fab/index.tsx | 73 + .../src/lib/fab/styles.tsx | 3 + .../floating-label-ssr.spec.tsx | 9 + .../floating-label/floating-label.spec.tsx | 9 + .../src/lib/floating-label/foundation.tsx | 58 + .../floating-label/generated-examples.json | 1 + .../lib/floating-label/generated-props.json | 94 + .../src/lib/floating-label/index.tsx | 27 + .../src/lib/floating-label/styles.tsx | 1 + .../src/lib/formfield/README.md | 30 + .../src/lib/formfield/form-field-ssr.spec.tsx | 17 + .../src/lib/formfield/form-field.spec.tsx | 14 + .../src/lib/formfield/foundation.tsx | 29 + .../src/lib/formfield/generated-examples.json | 1 + .../src/lib/formfield/generated-props.json | 79 + .../src/lib/formfield/index.tsx | 31 + .../src/lib/formfield/styles.tsx | 1 + .../src/lib/grid-list/README.md | 129 + .../src/lib/grid-list/generated-examples.json | 1 + .../src/lib/grid-list/generated-props.json | 354 + .../src/lib/grid-list/grid-list-ssr.spec.tsx | 33 + .../src/lib/grid-list/grid-list.spec.tsx | 66 + .../src/lib/grid-list/grid-list.story.tsx | 48 + .../src/lib/grid-list/index.tsx | 135 + .../src/lib/grid-list/styles.tsx | 1 + .../src/lib/grid/README.md | 67 + .../src/lib/grid/generated-examples.json | 1 + .../src/lib/grid/generated-props.json | 298 + .../src/lib/grid/grid-ssr.spec.tsx | 17 + .../src/lib/grid/grid.spec.tsx | 66 + .../src/lib/grid/grid.story.tsx | 24 + .../src/lib/grid/index.tsx | 89 + .../src/lib/grid/styles.tsx | 1 + .../src/lib/icon-button/README.md | 111 + .../src/lib/icon-button/foundation.tsx | 41 + .../lib/icon-button/generated-examples.json | 1 + .../src/lib/icon-button/generated-props.json | 267 + .../lib/icon-button/icon-button-ssr.spec.tsx | 16 + .../src/lib/icon-button/icon-button.spec.tsx | 58 + .../src/lib/icon-button/icon-button.story.tsx | 14 + .../src/lib/icon-button/index.tsx | 146 + .../src/lib/icon-button/styles.tsx | 3 + .../src/lib/icon/README.md | 260 + .../src/lib/icon/generated-examples.json | 1 + .../src/lib/icon/generated-props.json | 72 + .../src/lib/icon/icon.css | 52 + .../src/lib/icon/icon.spec.tsx | 131 + .../src/lib/icon/icon.story.tsx | 100 + .../src/lib/icon/index.tsx | 211 + .../src/lib/icon/styles.tsx | 1 + .../src/lib/image-list/README.md | 127 + .../lib/image-list/generated-examples.json | 1 + .../src/lib/image-list/generated-props.json | 204 + .../lib/image-list/image-list-ssr.spec.tsx | 56 + .../src/lib/image-list/image-list.spec.tsx | 64 + .../src/lib/image-list/image-list.story.tsx | 71 + .../src/lib/image-list/index.tsx | 85 + .../src/lib/image-list/styles.tsx | 1 + .../mc-react-ui-components/src/lib/index.ts | 41 + .../src/lib/line-ripple/foundation.tsx | 55 + .../lib/line-ripple/generated-examples.json | 1 + .../src/lib/line-ripple/generated-props.json | 58 + .../src/lib/line-ripple/index.tsx | 28 + .../lib/line-ripple/line-ripple-ssr.spec.tsx | 13 + .../src/lib/line-ripple/line-ripple.spec.tsx | 9 + .../src/lib/line-ripple/styles.tsx | 1 + .../src/lib/linear-progress/README.md | 42 + .../src/lib/linear-progress/foundation.tsx | 69 + .../linear-progress/generated-examples.json | 1 + .../lib/linear-progress/generated-props.json | 151 + .../src/lib/linear-progress/index.tsx | 74 + .../linear-progress-ssr.spec.tsx | 12 + .../linear-progress/linear-progress.spec.tsx | 33 + .../linear-progress/linear-progress.story.tsx | 15 + .../src/lib/linear-progress/styles.tsx | 1 + .../src/lib/list/README-COLLAPSIBLE.md | 133 + .../src/lib/list/README-VARIANTS.md | 290 + .../src/lib/list/README.md | 177 + .../src/lib/list/collapsible-list.css | 61 + .../src/lib/list/collapsible-list.tsx | 253 + .../src/lib/list/foundation.tsx | 261 + .../list/generated-examples-collapsible.json | 1 + .../lib/list/generated-examples-variants.json | 1 + .../src/lib/list/generated-examples.json | 1 + .../src/lib/list/generated-props.json | 2622 ++++ .../src/lib/list/index.tsx | 3 + .../src/lib/list/list-item.tsx | 204 + .../src/lib/list/list-ssr.spec.tsx | 34 + .../src/lib/list/list.spec.tsx | 185 + .../src/lib/list/list.story.tsx | 41 + .../src/lib/list/list.tsx | 72 + .../src/lib/list/styles.tsx | 4 + .../src/lib/menu/README.md | 285 + .../src/lib/menu/generated-examples.json | 1 + .../src/lib/menu/generated-props.json | 1760 +++ .../src/lib/menu/index.tsx | 2 + .../src/lib/menu/menu-ssr.spec.tsx | 32 + .../src/lib/menu/menu-surface/foundation.tsx | 327 + .../src/lib/menu/menu-surface/index.tsx | 100 + .../src/lib/menu/menu.spec.tsx | 146 + .../src/lib/menu/menu.story.tsx | 172 + .../src/lib/menu/menu/foundation.tsx | 130 + .../src/lib/menu/menu/index.tsx | 210 + .../src/lib/menu/styles.tsx | 3 + .../src/lib/notched-outline/foundation.tsx | 50 + .../notched-outline/generated-examples.json | 1 + .../lib/notched-outline/generated-props.json | 41 + .../src/lib/notched-outline/index.tsx | 52 + .../notched-outline-ssr.spec.tsx | 12 + .../notched-outline/notched-outline.spec.tsx | 9 + .../src/lib/notched-outline/styles.tsx | 1 + .../src/lib/provider/README.md | 63 + .../src/lib/provider/generated-examples.json | 1 + .../src/lib/provider/generated-props.json | 151 + .../src/lib/provider/index.tsx | 100 + .../src/lib/provider/provider-ssr.spec.tsx | 17 + .../src/lib/provider/provider.spec.tsx | 35 + .../src/lib/radio/README.md | 97 + .../src/lib/radio/foundation.tsx | 29 + .../src/lib/radio/generated-examples.json | 1 + .../src/lib/radio/generated-props.json | 268 + .../src/lib/radio/index.tsx | 94 + .../src/lib/radio/radio-ssr.spec.tsx | 12 + .../src/lib/radio/radio.spec.tsx | 37 + .../src/lib/radio/radio.story.tsx | 31 + .../src/lib/radio/styles.tsx | 3 + .../src/lib/ripple/README.md | 53 + .../src/lib/ripple/foundation.tsx | 200 + .../src/lib/ripple/generated-examples.json | 1 + .../src/lib/ripple/generated-props.json | 228 + .../src/lib/ripple/index.tsx | 199 + .../src/lib/ripple/ripple-ssr.spec.tsx | 16 + .../src/lib/ripple/ripple.spec.tsx | 43 + .../src/lib/ripple/ripple.story.tsx | 25 + .../src/lib/ripple/styles.tsx | 1 + .../src/lib/rmwc/docs/common/doc-versions.tsx | 1 + .../src/lib/rmwc/docs/common/history.tsx | 5 + .../src/lib/rmwc/docs/common/menu-content.tsx | 427 + .../src/lib/rmwc/docs/index.tsx | 44 + .../rmwc/docs/markdown/README-INSTALLATION.md | 164 + .../markdown/README-LIBRARY-INTEGRATIONS.md | 30 + .../rmwc/docs/markdown/README-METHODOLOGY.md | 85 + .../docs/markdown/README-STYLING-THEMING.md | 249 + .../lib/rmwc/docs/markdown/README-TYPES.md | 131 + .../lib/rmwc/docs/markdown/README-USAGE.md | 88 + .../src/lib/rmwc/docs/styles/docs.css | 800 ++ .../src/lib/rmwc/docs/styles/index.tsx | 3 + .../src/lib/rmwc/docs/views/app/index.tsx | 276 + .../lib/rmwc/docs/views/app/theme-picker.tsx | 335 + .../lib/rmwc/docs/views/home/home.module.css | 193 + .../src/lib/rmwc/docs/views/home/index.tsx | 179 + .../lib/rmwc/docs/views/resources/index.tsx | 261 + .../docs/views/resources/resources.module.css | 51 + .../lib/rmwc/docs/views/site-search/index.tsx | 209 + .../views/site-search/site-search.module.css | 60 + .../src/lib/rmwc/index.tsx | 41 + .../src/lib/rmwc/styles.tsx | 31 + .../src/lib/select/README.md | 235 + .../src/lib/select/generated-examples.json | 1 + .../src/lib/select/generated-props.json | 637 + .../src/lib/select/index.tsx | 1 + .../src/lib/select/select-icon/foundation.tsx | 47 + .../src/lib/select/select-icon/index.tsx | 32 + .../src/lib/select/select-ssr.spec.tsx | 17 + .../src/lib/select/select.css | 15 + .../src/lib/select/select.spec.tsx | 246 + .../src/lib/select/select.story.tsx | 384 + .../src/lib/select/select/foundation.tsx | 413 + .../src/lib/select/select/index.tsx | 472 + .../src/lib/select/styles.tsx | 8 + .../src/lib/slider/README.md | 65 + .../src/lib/slider/foundation.tsx | 215 + .../src/lib/slider/generated-examples.json | 1 + .../src/lib/slider/generated-props.json | 322 + .../src/lib/slider/index.tsx | 153 + .../src/lib/slider/slider-ssr.spec.tsx | 28 + .../src/lib/slider/slider.spec.tsx | 82 + .../src/lib/slider/slider.story.tsx | 43 + .../src/lib/slider/styles.tsx | 1 + .../src/lib/snackbar/README.md | 223 + .../src/lib/snackbar/foundation.tsx | 98 + .../src/lib/snackbar/generated-examples.json | 1 + .../src/lib/snackbar/generated-props.json | 1376 ++ .../src/lib/snackbar/index.tsx | 2 + .../src/lib/snackbar/snackbar-queue.tsx | 140 + .../src/lib/snackbar/snackbar-ssr.spec.tsx | 19 + .../src/lib/snackbar/snackbar.spec.tsx | 137 + .../src/lib/snackbar/snackbar.story.tsx | 156 + .../src/lib/snackbar/snackbar.tsx | 192 + .../src/lib/snackbar/styles.tsx | 3 + .../src/lib/switch/README.md | 63 + .../src/lib/switch/foundation.tsx | 70 + .../src/lib/switch/generated-examples.json | 1 + .../src/lib/switch/generated-props.json | 268 + .../src/lib/switch/index.tsx | 110 + .../src/lib/switch/styles.tsx | 3 + .../src/lib/switch/switch-ssr.spec.tsx | 12 + .../src/lib/switch/switch.spec.tsx | 71 + .../src/lib/switch/switch.story.tsx | 31 + .../src/lib/tabs/README.md | 193 + .../src/lib/tabs/generated-examples.json | 1 + .../src/lib/tabs/generated-props.json | 581 + .../src/lib/tabs/index.tsx | 5 + .../src/lib/tabs/styles.tsx | 6 + .../src/lib/tabs/tab-bar-context.tsx | 15 + .../src/lib/tabs/tab-bar-foundation.tsx | 183 + .../src/lib/tabs/tab-bar.tsx | 65 + .../src/lib/tabs/tab-foundation.tsx | 89 + .../src/lib/tabs/tab-indicator-foundation.tsx | 57 + .../src/lib/tabs/tab-indicator.tsx | 49 + .../src/lib/tabs/tab-scroller-foundation.tsx | 86 + .../src/lib/tabs/tab-scroller.tsx | 30 + .../src/lib/tabs/tab.tsx | 123 + .../src/lib/tabs/tabs-ssr.spec.tsx | 16 + .../src/lib/tabs/tabs.spec.tsx | 152 + .../src/lib/tabs/tabs.story.tsx | 197 + .../src/lib/textfield/README.md | 140 + .../src/lib/textfield/generated-examples.json | 1 + .../src/lib/textfield/generated-props.json | 841 ++ .../src/lib/textfield/index.tsx | 325 + .../src/lib/textfield/styles.tsx | 6 + .../textfield-character-count-foundation.tsx | 36 + .../lib/textfield/textfield-foundation.tsx | 190 + .../textfield/textfield-icon-foundation.tsx | 49 + .../src/lib/textfield/textfield-ssr.spec.tsx | 12 + .../src/lib/textfield/textfield.spec.tsx | 168 + .../src/lib/textfield/textfield.story.tsx | 69 + .../src/lib/theme/README.md | 169 + .../src/lib/theme/generated-examples.json | 1 + .../src/lib/theme/generated-props.json | 201 + .../src/lib/theme/index.tsx | 95 + .../src/lib/theme/styles.tsx | 2 + .../src/lib/theme/theme-options.tsx | 28 + .../src/lib/theme/theme-ssr.spec.tsx | 27 + .../src/lib/theme/theme.css | 108 + .../src/lib/theme/theme.spec.tsx | 75 + .../src/lib/theme/theme.story.tsx | 48 + .../src/lib/theme/utils.tsx | 240 + .../src/lib/toggleable/README.md | 3 + .../lib/toggleable/generated-examples.json | 1 + .../src/lib/toggleable/generated-props.json | 233 + .../src/lib/toggleable/index.tsx | 71 + .../src/lib/tooltip/README.md | 186 + .../src/lib/tooltip/generated-examples.json | 1 + .../src/lib/tooltip/generated-props.json | 281 + .../src/lib/tooltip/index.tsx | 80 + .../src/lib/tooltip/styles.tsx | 1 + .../src/lib/tooltip/tooltip-ssr.spec.tsx | 16 + .../src/lib/tooltip/tooltip.css | 225 + .../src/lib/tooltip/tooltip.spec.tsx | 72 + .../src/lib/tooltip/tooltip.story.tsx | 27 + .../src/lib/top-app-bar/README.md | 259 + .../src/lib/top-app-bar/foundation.tsx | 99 + .../lib/top-app-bar/generated-examples.json | 1 + .../src/lib/top-app-bar/generated-props.json | 1284 ++ .../src/lib/top-app-bar/index.tsx | 241 + .../src/lib/top-app-bar/styles.tsx | 4 + .../lib/top-app-bar/top-app-bar-ssr.spec.tsx | 36 + .../src/lib/top-app-bar/top-app-bar.spec.tsx | 148 + .../src/lib/top-app-bar/top-app-bar.story.tsx | 98 + .../src/lib/types/generated-examples.json | 1 + .../src/lib/types/generated-props.json | 444 + .../src/lib/types/index.tsx | 133 + .../src/lib/typography/README.md | 76 + .../lib/typography/generated-examples.json | 1 + .../src/lib/typography/generated-props.json | 89 + .../src/lib/typography/index.tsx | 50 + .../src/lib/typography/styles.tsx | 1 + .../lib/typography/typography-ssr.spec.tsx | 12 + .../src/lib/typography/typography.spec.tsx | 65 + .../src/lib/typography/typography.story.tsx | 71 + .../src/react-app-env.d.ts | 1 + .../mc-react-ui-components/src/setupTests.ts | 14 + .../mc-react-ui-components/tsbuildconfig.json | 35 + packages/mc-react-ui-components/tsconfig.json | 20 + packages/mc-react-ui-components/yarn.lock | 10755 ++++++++++++++++ .../src/components/button/mwc-button.tsx | 13 +- .../src/components/select/mwc-select.tsx | 56 +- yarn.lock | 1143 +- 465 files changed, 61642 insertions(+), 108 deletions(-) create mode 100644 conflicts-ui/.github/workflows/Lint.yml create mode 100644 conflicts-ui/.gitignore create mode 100644 conflicts-ui/CHANGELOG.md create mode 100644 conflicts-ui/README.md create mode 100644 conflicts-ui/commitlint.config.js create mode 100644 conflicts-ui/package.json create mode 100644 conflicts-ui/public/conflicts.json create mode 100644 conflicts-ui/public/favicon.ico create mode 100644 conflicts-ui/public/index.html create mode 100644 conflicts-ui/public/logo192.png create mode 100644 conflicts-ui/public/logo512.png create mode 100644 conflicts-ui/public/manifest.json create mode 100644 conflicts-ui/public/robots.txt create mode 100644 conflicts-ui/src/.eslintrc create mode 100644 conflicts-ui/src/App.css create mode 100644 conflicts-ui/src/App.test.tsx create mode 100644 conflicts-ui/src/App.tsx create mode 100644 conflicts-ui/src/common/models/ResponseState.ts create mode 100644 conflicts-ui/src/common/models/api-response.ts create mode 100644 conflicts-ui/src/common/models/pagination-result.ts create mode 100644 conflicts-ui/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap create mode 100644 conflicts-ui/src/conflicts/components/conflict-item.spec.tsx create mode 100644 conflicts-ui/src/conflicts/components/conflict-item.tsx create mode 100644 conflicts-ui/src/conflicts/components/conflicts-table.spec.tsx create mode 100644 conflicts-ui/src/conflicts/components/conflicts-table.tsx create mode 100644 conflicts-ui/src/conflicts/components/date-filter.tsx create mode 100644 conflicts-ui/src/conflicts/components/has-resolved-filter.tsx create mode 100644 conflicts-ui/src/conflicts/components/keywords-filter.tsx create mode 100644 conflicts-ui/src/conflicts/models/conflict-search-params.spec.ts create mode 100644 conflicts-ui/src/conflicts/models/conflict-search-params.ts create mode 100644 conflicts-ui/src/conflicts/models/conflict.ts create mode 100644 conflicts-ui/src/conflicts/models/conflictStore.spec.ts create mode 100644 conflicts-ui/src/conflicts/models/conflictStore.ts create mode 100644 conflicts-ui/src/conflicts/models/pagination.ts create mode 100644 conflicts-ui/src/conflicts/models/rootStore.spec.ts create mode 100644 conflicts-ui/src/conflicts/models/rootStore.ts create mode 100644 conflicts-ui/src/conflicts/views/conflicts-view.tsx create mode 100644 conflicts-ui/src/index.css create mode 100644 conflicts-ui/src/index.tsx create mode 100644 conflicts-ui/src/logo.svg create mode 100644 conflicts-ui/src/react-app-env.d.ts create mode 100644 conflicts-ui/src/serviceWorker.ts create mode 100644 conflicts-ui/src/setupTests.ts create mode 100644 conflicts-ui/tsconfig.json create mode 100644 packages/mc-react-ui-components/.gitignore create mode 100644 packages/mc-react-ui-components/README.md create mode 100644 packages/mc-react-ui-components/package.json create mode 100644 packages/mc-react-ui-components/public/favicon.ico create mode 100644 packages/mc-react-ui-components/public/index.html create mode 100644 packages/mc-react-ui-components/public/logo192.png create mode 100644 packages/mc-react-ui-components/public/logo512.png create mode 100644 packages/mc-react-ui-components/public/manifest.json create mode 100644 packages/mc-react-ui-components/public/robots.txt create mode 100644 packages/mc-react-ui-components/src/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/@types/markdown.d.ts create mode 100644 packages/mc-react-ui-components/src/lib/avatar/README.md create mode 100644 packages/mc-react-ui-components/src/lib/avatar/avatar-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/avatar/avatar.css create mode 100644 packages/mc-react-ui-components/src/lib/avatar/avatar.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/avatar/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/avatar/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/avatar/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/avatar/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/badge/README.md create mode 100644 packages/mc-react-ui-components/src/lib/badge/badge-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/badge/badge.css create mode 100644 packages/mc-react-ui-components/src/lib/badge/badge.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/badge/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/badge/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/badge/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/badge/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/README.md create mode 100644 packages/mc-react-ui-components/src/lib/base/base.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/bugs.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/component.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/foundation-component.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/index.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/portal.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/test-polyfill.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/apply-passive.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/data-table-context.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/debounce.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/deprecation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/emitter.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/empty-client-rect.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/events-map.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/focus-trap.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/get-display-name.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/hooks.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/ponyfills.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/raf.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/random-id.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/strings.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/test-utils.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/trigger-window-resize.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/use-knob.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/utils/wrap-child.tsx create mode 100644 packages/mc-react-ui-components/src/lib/base/with-theme.tsx create mode 100644 packages/mc-react-ui-components/src/lib/button/README.md create mode 100644 packages/mc-react-ui-components/src/lib/button/button-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/button/button.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/button/button.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/button/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/button/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/button/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/button/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/card/README.md create mode 100644 packages/mc-react-ui-components/src/lib/card/card-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/card/card.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/card/card.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/card/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/card/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/card/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/card/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/README.md create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/checkbox-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/checkbox.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/checkbox/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/chip/README.md create mode 100644 packages/mc-react-ui-components/src/lib/chip/chip-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/chip/chip.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/chip/chip.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/chip/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/chip/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/chip/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/chip/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/chip/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/README.md create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/circular-progress-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/circular-progress.css create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/circular-progress.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/circular-progress/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/data-table/README.md create mode 100644 packages/mc-react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/data-table/data-table.css create mode 100644 packages/mc-react-ui-components/src/lib/data-table/data-table.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/data-table/data-table.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/data-table/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/data-table/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/data-table/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/data-table/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/README.md create mode 100644 packages/mc-react-ui-components/src/lib/dialog/dialog-queue.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/dialog.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/dialog.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/dialog/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/dialog/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/dialog/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/drawer/README.md create mode 100644 packages/mc-react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/drawer/drawer.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/drawer/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/drawer/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/drawer/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/drawer/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/drawer/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/elevation/README.md create mode 100644 packages/mc-react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/elevation/elevation.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/elevation/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/elevation/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/elevation/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/elevation/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/fab/README.md create mode 100644 packages/mc-react-ui-components/src/lib/fab/fab-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/fab/fab.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/fab/fab.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/fab/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/fab/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/fab/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/fab/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/floating-label/floating-label.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/floating-label/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/floating-label/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/floating-label/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/floating-label/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/floating-label/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/formfield/README.md create mode 100644 packages/mc-react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/formfield/form-field.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/formfield/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/formfield/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/formfield/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/formfield/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/formfield/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/README.md create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/grid-list.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/grid-list.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid-list/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid/README.md create mode 100644 packages/mc-react-ui-components/src/lib/grid/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/grid/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/grid/grid-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid/grid.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid/grid.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/grid/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/README.md create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/icon-button-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/icon-button.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/icon-button.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon-button/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon/README.md create mode 100644 packages/mc-react-ui-components/src/lib/icon/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/icon/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/icon/icon.css create mode 100644 packages/mc-react-ui-components/src/lib/icon/icon.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon/icon.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/icon/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/image-list/README.md create mode 100644 packages/mc-react-ui-components/src/lib/image-list/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/image-list/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/image-list/image-list.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/image-list/image-list.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/image-list/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/image-list/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/index.ts create mode 100644 packages/mc-react-ui-components/src/lib/line-ripple/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/line-ripple/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/line-ripple/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/line-ripple/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/line-ripple/line-ripple-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/line-ripple/line-ripple.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/line-ripple/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/README.md create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/linear-progress-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/linear-progress/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/README-COLLAPSIBLE.md create mode 100644 packages/mc-react-ui-components/src/lib/list/README-VARIANTS.md create mode 100644 packages/mc-react-ui-components/src/lib/list/README.md create mode 100644 packages/mc-react-ui-components/src/lib/list/collapsible-list.css create mode 100644 packages/mc-react-ui-components/src/lib/list/collapsible-list.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/generated-examples-collapsible.json create mode 100644 packages/mc-react-ui-components/src/lib/list/generated-examples-variants.json create mode 100644 packages/mc-react-ui-components/src/lib/list/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/list/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/list/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/list-item.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/list-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/list.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/list.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/list.tsx create mode 100644 packages/mc-react-ui-components/src/lib/list/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/README.md create mode 100644 packages/mc-react-ui-components/src/lib/menu/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/menu/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/menu/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/menu-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/menu-surface/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/menu-surface/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/menu.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/menu.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/menu/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/menu/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/menu/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/notched-outline/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/notched-outline/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/notched-outline/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/notched-outline/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/notched-outline/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/provider/README.md create mode 100644 packages/mc-react-ui-components/src/lib/provider/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/provider/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/provider/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/provider/provider-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/provider/provider.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/radio/README.md create mode 100644 packages/mc-react-ui-components/src/lib/radio/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/radio/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/radio/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/radio/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/radio/radio-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/radio/radio.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/radio/radio.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/radio/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/ripple/README.md create mode 100644 packages/mc-react-ui-components/src/lib/ripple/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/ripple/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/ripple/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/ripple/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/ripple/ripple-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/ripple/ripple.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/ripple/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/common/doc-versions.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/common/history.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/common/menu-content.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-INSTALLATION.md create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-STYLING-THEMING.md create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-TYPES.md create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-USAGE.md create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/rmwc/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/README.md create mode 100644 packages/mc-react-ui-components/src/lib/select/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/select/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/select/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/select-icon/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/select-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/select.css create mode 100644 packages/mc-react-ui-components/src/lib/select/select.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/select.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/select/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/select/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/select/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/slider/README.md create mode 100644 packages/mc-react-ui-components/src/lib/slider/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/slider/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/slider/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/slider/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/slider/slider-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/slider/slider.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/slider/slider.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/slider/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/README.md create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/snackbar-queue.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/snackbar.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/snackbar.tsx create mode 100644 packages/mc-react-ui-components/src/lib/snackbar/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/switch/README.md create mode 100644 packages/mc-react-ui-components/src/lib/switch/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/switch/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/switch/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/switch/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/switch/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/switch/switch-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/switch/switch.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/switch/switch.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/README.md create mode 100644 packages/mc-react-ui-components/src/lib/tabs/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/tabs/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/tabs/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-bar-context.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-bar-foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-bar.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-indicator.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab-scroller.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tab.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tabs-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tabs.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/README.md create mode 100644 packages/mc-react-ui-components/src/lib/textfield/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/textfield/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/textfield/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/textfield.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/theme/README.md create mode 100644 packages/mc-react-ui-components/src/lib/theme/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/theme/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/theme/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/theme/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/theme/theme-options.tsx create mode 100644 packages/mc-react-ui-components/src/lib/theme/theme-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/theme/theme.css create mode 100644 packages/mc-react-ui-components/src/lib/theme/theme.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/theme/theme.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/theme/utils.tsx create mode 100644 packages/mc-react-ui-components/src/lib/toggleable/README.md create mode 100644 packages/mc-react-ui-components/src/lib/toggleable/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/toggleable/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/toggleable/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/README.md create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/tooltip-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/tooltip.css create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/tooltip.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/README.md create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx create mode 100644 packages/mc-react-ui-components/src/lib/types/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/types/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/types/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/typography/README.md create mode 100644 packages/mc-react-ui-components/src/lib/typography/generated-examples.json create mode 100644 packages/mc-react-ui-components/src/lib/typography/generated-props.json create mode 100644 packages/mc-react-ui-components/src/lib/typography/index.tsx create mode 100644 packages/mc-react-ui-components/src/lib/typography/styles.tsx create mode 100644 packages/mc-react-ui-components/src/lib/typography/typography-ssr.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/typography/typography.spec.tsx create mode 100644 packages/mc-react-ui-components/src/lib/typography/typography.story.tsx create mode 100644 packages/mc-react-ui-components/src/react-app-env.d.ts create mode 100644 packages/mc-react-ui-components/src/setupTests.ts create mode 100644 packages/mc-react-ui-components/tsbuildconfig.json create mode 100644 packages/mc-react-ui-components/tsconfig.json create mode 100644 packages/mc-react-ui-components/yarn.lock diff --git a/conflicts-ui/.github/workflows/Lint.yml b/conflicts-ui/.github/workflows/Lint.yml new file mode 100644 index 00000000..b69105ce --- /dev/null +++ b/conflicts-ui/.github/workflows/Lint.yml @@ -0,0 +1,29 @@ + +name: Lint + +on: [pull_request] + +jobs: + eslint: + name: Run eslint + runs-on: ubuntu-latest + + steps: + - name: Check out Git repository + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: 12 + + # ESLint and Prettier must be in `package.json` + - name: Install Node.js dependencies + run: npm install + + - name: Run linters + uses: samuelmeuli/lint-action@v1 + with: + github_token: ${{ secrets.github_token }} + # Enable linters + eslint: true diff --git a/conflicts-ui/.gitignore b/conflicts-ui/.gitignore new file mode 100644 index 00000000..2b394efa --- /dev/null +++ b/conflicts-ui/.gitignore @@ -0,0 +1,21 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env* +!.env.example + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/conflicts-ui/CHANGELOG.md b/conflicts-ui/CHANGELOG.md new file mode 100644 index 00000000..34ddbd1b --- /dev/null +++ b/conflicts-ui/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## 0.1.0 (2020-07-30) + +### Features + +* **conflicts:** created conflicts previewer with date and geospatial filters ([25ff61](https://github.com/MapColonies/conflicts-ui/commit/25ff613419a1669d01a59b838a0a06a093e9d2ca)) \ No newline at end of file diff --git a/conflicts-ui/README.md b/conflicts-ui/README.md new file mode 100644 index 00000000..60e45e8f --- /dev/null +++ b/conflicts-ui/README.md @@ -0,0 +1,43 @@ + +# conflicts-ui +React app written in typescript to display, filter, and resolve conflicts.
    + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `yarn start` + +Runs the app in the development mode.
    +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +**Make sure to build all the dependencies before running this command (mc-react-components)** + +Any relative request is proxied to the backend.
    +you can control the host by editing the package.json file. +```json +{ + "proxy": "http://localhost:8000" +} +``` + +The page will reload if you make edits.
    +You will also see any lint errors in the console. + +### `yarn test` + +Launches the test runner in the interactive watch mode.
    +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `yarn run build` + +Builds the app for production to the `build` folder.
    +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
    +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + diff --git a/conflicts-ui/commitlint.config.js b/conflicts-ui/commitlint.config.js new file mode 100644 index 00000000..422b1944 --- /dev/null +++ b/conflicts-ui/commitlint.config.js @@ -0,0 +1 @@ +module.exports = { extends: ['@commitlint/config-conventional'] }; diff --git a/conflicts-ui/package.json b/conflicts-ui/package.json new file mode 100644 index 00000000..5700112d --- /dev/null +++ b/conflicts-ui/package.json @@ -0,0 +1,105 @@ +{ + "proxy": "http://localhost:8000", + "name": "conflicts-ui", + "version": "0.1.0", + "bugs": { + "url": "https://github.com/MapColonies/conflicts-ui/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/MapColonies/conflicts-ui.git" + }, + "license": "MIT", + "husky": { + "hooks": { + "pre-commit": "lint-staged", + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "lint-staged": { + "src/**/*.{ts,tsx}": [ + "eslint --fix" + ] + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "release": "standard-version" + }, + "jest": { + "transformIgnorePatterns": [ + "/node_modules/(?!(ol)/).*/" + ] + }, + "eslintConfig": { + "extends": [ + "react-app", + "./eslintrc" + ] + }, + "private": true, + "dependencies": { + "@commitlint/cli": "^9.1.1", + "@commitlint/config-conventional": "^9.1.1", + "@map-colonies/react-components": "^0.1.0", + "@map-colonies/ui-components": "^0.0.1", + "@map-colonies/ui-components-react": "^0.0.1", + "@material-ui/core": "^4.11.0", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.5.0", + "@testing-library/user-event": "^7.2.1", + "@turf/helpers": "^6.1.4", + "@types/geojson": "^7946.0.7", + "@types/jest": "^24.9.1", + "@types/node": "^12.12.44", + "@types/react": "^16.9.35", + "@types/react-dom": "^16.9.8", + "axios": "^0.19.2", + "date-fns": "^2.14.0", + "mobx": "^5.15.4", + "mobx-react-lite": "^2.0.7", + "mobx-state-tree": "^3.16.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-scripts": "3.4.1", + "typescript": "^3.7.5" + }, + "devDependencies": { + "standard-version": "^8.0.2", + "commitlint": "^9.1.0", + "cz-conventional-changelog": "^3.2.0", + "@types/enzyme": "^3.10.5", + "@types/enzyme-adapter-react-16": "^1.0.6", + "@types/ol": "^6.3.1", + "@types/react-test-renderer": "^16.9.2", + "@typescript-eslint/eslint-plugin": "^3.7.1", + "@typescript-eslint/parser": "^3.7.1", + "enzyme": "^3.11.0", + "enzyme-adapter-react-16": "^1.15.2", + "eslint": "^7.5.0", + "eslint-plugin-import": "^2.22.0", + "jest-enzyme": "^7.1.2", + "lint-staged": "^10.2.11", + "react-test-renderer": "^16.13.1", + "husky": "^4.2.5" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/conflicts-ui/public/conflicts.json b/conflicts-ui/public/conflicts.json new file mode 100644 index 00000000..4231fb90 --- /dev/null +++ b/conflicts-ui/public/conflicts.json @@ -0,0 +1,208 @@ +{ + "data": { + "currentPage": 1, + "perPage": 10, + "offset": 0, + "total": 3, + "lastPage": 1, + "data": [ + { + "id": "7e73d05b-8159-4e51-a302-78aa6b8fbd97", + "source_server": "server1", + "target_server": "server2", + "source_entity": { + "glossary": { + "title": "example glossary", + "GlossDiv": { + "title": "S", + "GlossList": { + "GlossEntry": { + "ID": "SGML", + "Abbrev": "ISO 8879:1986", + "SortAs": "SGML", + "Acronym": "SGML", + "GlossDef": { + "para": "A meta-markup language, used to create markup languages such as DocBook.", + "GlossSeeAlso": ["GML", "XML"] + }, + "GlossSee": "markup", + "GlossTerm": "Standard Generalized Markup Language" + } + } + } + } + }, + "target_entity": { + "license": "http://opendatacommons.org/licenses/odbl/1-0/", + "version": "0.6", + "elements": [ + { + "id": 35352001, + "lat": 50.2106234, + "lon": 8.5856189, + "uid": 75317, + "type": "node", + "user": "HoloDuke", + "version": 6, + "changeset": 14206963, + "timestamp": "2012-12-08T23:04:02Z" + }, + { + "id": 35352063, + "lat": 50.2121617, + "lon": 8.5867523, + "uid": 4433367, + "type": "node", + "user": "Jonaes", + "version": 4, + "changeset": 64755187, + "timestamp": "2018-11-21T20:52:44Z" + }, + { + "id": 6772305769, + "lat": 50.2106895, + "lon": 8.5857061, + "uid": 4433367, + "tags": { + "ref": "OU.425.1", + "bicycle": "yes", + "tourism": "information", + "information": "guidepost" + }, + "type": "node", + "user": "Jonaes", + "version": 1, + "changeset": 74092935, + "timestamp": "2019-09-04T15:05:00Z" + }, + { + "id": 5123563, + "uid": 4433367, + "tags": { + "lcn": "yes", + "foot": "yes", + "horse": "yes", + "bicycle": "yes", + "highway": "track", + "surface": "asphalt", + "tracktype": "grade1", + "traffic_sign": "DE:260,DE:1026-36", + "motor_vehicle": "agricultural;forestry" + }, + "type": "way", + "user": "Jonaes", + "nodes": [ + 35352060, + 35352061, + 35352062, + 35352063, + 2056819178, + 35352001 + ], + "version": 7, + "changeset": 74092935, + "timestamp": "2019-09-04T15:05:00Z" + }, + { + "id": 10000000, + "uid": 75317, + "tags": { + "type": "destination_sign", + "bicycle": "yes", + "distance": "8.0;4.6", + "colour:back": "white", + "colour:text": "green", + "destination": "Friedrichsdorf;Bad Homburg", + "colour:arrow": "green", + "destination:symbol": ";train_station" + }, + "type": "relation", + "user": "HoloDuke", + "members": [ + { + "ref": 6772305769, + "role": "sign", + "type": "node" + }, + { + "ref": 35352001, + "role": "intersection", + "type": "node" + }, + { + "ref": 5123563, + "role": "to", + "type": "way" + } + ], + "version": 2, + "changeset": 74641141, + "timestamp": "2019-09-18T18:21:44Z" + } + ], + "copyright": "OpenStreetMap and contributors", + "generator": "CGImap 0.8.1 (6263 thorn-01.openstreetmap.org)", + "attribution": "http://www.openstreetmap.org/copyright" + }, + "description": "some desc 1", + "has_resolved": false, + "resolved_at": "2020-06-07T07:21:36.072Z", + "location": { + "type": "Point", + "coordinates": [35.2137, 31.7683] + }, + "resolution_id": null, + "created_at": "2020-06-07T07:21:36.072Z", + "updated_at": "2020-06-10T10:18:29.206Z", + "deleted_at": "2020-06-07T07:21:36.072Z" + }, + { + "id": "ba2b69bd-66f7-4da0-97d3-1da154e8cb26", + "source_server": "server3", + "target_server": "server4", + "source_entity": { + "numnum": "123" + }, + "target_entity": { + "numnum": "777" + }, + "description": "some desc 2", + "has_resolved": true, + "resolved_at": null, + "location": { + "type": "Point", + "coordinates": [34.7818, 32.0853] + }, + "resolution_id": null, + "created_at": "2020-06-07T07:21:36.072Z", + "updated_at": "2020-06-10T10:19:15.921Z", + "deleted_at": null + }, + { + "id": "374be6cc-e065-4614-a06b-89eb7b067fc1", + "source_server": "server4", + "target_server": "server1", + "source_entity": { + "numnum": "444" + }, + "target_entity": { + "numnum": "111" + }, + "description": "some desc 3", + "has_resolved": false, + "resolved_at": null, + "location": { + "type": "Point", + "coordinates": [34.9896, 32.794] + }, + "resolution_id": null, + "created_at": "2020-06-07T07:21:36.072Z", + "updated_at": "2020-06-10T10:43:09.828Z", + "deleted_at": null + } + ], + "from": 0, + "to": 3 + }, + "success": true +} diff --git a/conflicts-ui/public/favicon.ico b/conflicts-ui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcd5dfd67cd0361b78123e95c2dd96031f27f743 GIT binary patch literal 3150 zcmaKtc{Ei0AIGn;MZ^<@lHD*OV;K7~W1q3jSjJcqNywTkMOhP*k~Oj?GO|6{m(*C2 zC7JA+hN%%Bp7T4;J@?%2_x=5zbI<2~->=X60stMr0B~{wzpi9D0MG|# zyuANt7z6;uz%?PEfAnimLl^)6h5ARwGXemG2>?hqQv-I^Gpyh$JH}Ag92}3{$a#z& zd`il2Sb#$U&e&4#^4R|GTgk!Qs+x*PCL{2+`uB5mqtnqLaaw`*H2oqJ?XF(zUACc2 zSibBrdQzcidqv*TK}rpEv1ie&;Famq2IK5%4c}1Jt2b1x_{y1C!?EU)@`_F)yN*NK z)(u03@%g%uDawwXGAMm%EnP9FgoucUedioDwL~{6RVO@A-Q$+pwVRR%WYR>{K3E&Q zzqzT!EEZ$_NHGYM6&PK#CGUV$pTWsiI5#~m>htoJ!vbc0=gm3H8sz8KzIiVN5xdCT z%;}`UH2Pc8))1VS-unh?v4*H*NIy5On{MRKw7BTmOO9oE2UApwkCl9Z?^dod9M^#w z51tEZhf+#dpTo#GDDy#kuzoIjMjZ?%v*h$ z*vwUMOjGc?R0(FjLWkMD)kca4z6~H45FIzQ!Zzu&-yWyMdCBsDr2`l}Q{8fH$H@O< z$&snNzbqLk?(GIe?!PVh?F~2qk4z^rMcp$P^hw^rUPjyCyoNTRw%;hNOwrCoN?G0E z!wT^=4Loa9@O{t;Wk(Nj=?ms1Z?UN_;21m%sUm?uib=pg&x|u)8pP#l--$;B9l47n zUUnMV0sXLe*@Gvy>XWjRoqc2tOzgYn%?g@Lb8C&WsxV1Kjssh^ZBs*Ysr+E6%tsC_ zCo-)hkYY=Bn?wMB4sqm?WS>{kh<6*DO)vXnQpQ9`-_qF6!#b;3Nf@;#B>e2j$yokl6F|9p1<($2 z=WSr%)Z?^|r6njhgbuMrIN>8JE05u0x5t@_dEfbGn9r0hK4c2vp>(*$GXsjeLL_uz zWpyfUgdv!~-2N;llVzik#s2*XB*%7u8(^sJv&T3pzaR&<9({17Zs~UY>#ugZZkHBs zD+>0_an$?}utGp$dcXtyFHnTQZJ}SF=oZ}X07dz~K>^o(vjTzw8ZQc!Fw1W=&Z?9% zv63|~l}70sJbY?H8ON8j)w5=6OpXuaZ}YT03`2%u8{;B0Vafo_iY7&BiQTbRkdJBYL}?%ATfmc zLG$uXt$@3j#OIjALdT&Ut$=9F8cgV{w_f5eS)PjoVi z&oemp-SKJ~UuGuCP1|iY?J^S&P z)-IG?O-*=z6kfZrX5H*G=aQ{ZaqnOqP@&+_;nq@mA>EcjgxrYX8EK|Iq4&E&rxR?R z8N$QOdRwY zr{P`O)=87>YLHtFfGXW z6P)ucrhj~It_9w<^v5>T6N1U}+BkS))=WX*2JY=}^b2czGhH<`?`(}}qMcpPx_%>M zM|fs(+I1m&_h(zqp-HgP>re$2O^o$q)xu#fl0ivOJE({duU)a*OD(eYgSi^cdTn}pqcPM(;S)2%1By^Wh%-CaC%>d9hi`7J zaxL7@;nhA>PE%s99&;z{8>VFgf{u!(-B-x7Of6ueme+ScryL`h(^qKE)DtieWY>-7 zgB)VJESQS4*1LU(2&@pgLvSt{(((C?K_V(rQk``i&5}ZPG;G^FiPlZ$7|-vEmMWlU z5lQ%iK2nu=h2wd_7>gK@vX=*AG+u~rQP$NwPC`ZA?4nh{3tui1x@bT6-;Rk3yDQ>d z?3qRD#+PeV7#FAa>s`Xwxsx_oRFcN$StW2=CW`=qObsT?SD^#^jM1Yk}PSPxJ zG@-_mnNU_)vM|iLRSI>UMp|hatyS}17R{10IuL0TLlupt>9dRs_SPQbv7BLYyC#qv16E-y@XZ= z-!p7I%#r-BVi$nQq3&ssRc_IC%R6$tA&^s_l46880~Wst3@>(|EO<}T4~ci~#!=e; zD)B>o%1+$ksURD1p7I-<3ehlFyVkqrySf&gg>Bp0Z9?JaG|gyTZ{Cb8SdvAWVmFX7v2ohs!OCc!Udk zUITUpmZ33rKLI#(&lDj}cKA#dpL4Fil=$5pu_wi1XJR!llw` zSItPBDEdMHk2>c7#%lBxZHHvtVUOZ$}v?=?AT~9!Jcqa@IJGuMg(s^7r>pcTrd)pS`{5Cu8WPey` z9)!!OUUY@L%9Q+bZa*S5`3f_|lFCPN6kdp_M2>{le8;cn^XUsPa+TUk47qd6)IBR% zk*&Ip?!Ge_gmmdj)BX}P_5o@VI2*wbZ^>UhFju}0gQZh!pP%4XT9{@w;G#b3XK8sN zF(7i$Jv(IM$8Akys9dhP^^~H2(7BfJp}yDW1#@!CL-!mGcSCnJ599WK9MV@yo_u$v MDeX2GIKR{Qf5okjU;qFB literal 0 HcmV?d00001 diff --git a/conflicts-ui/public/index.html b/conflicts-ui/public/index.html new file mode 100644 index 00000000..aa069f27 --- /dev/null +++ b/conflicts-ui/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
    + + + diff --git a/conflicts-ui/public/logo192.png b/conflicts-ui/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/conflicts-ui/public/manifest.json b/conflicts-ui/public/manifest.json new file mode 100644 index 00000000..080d6c77 --- /dev/null +++ b/conflicts-ui/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/conflicts-ui/public/robots.txt b/conflicts-ui/public/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/conflicts-ui/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/conflicts-ui/src/.eslintrc b/conflicts-ui/src/.eslintrc new file mode 100644 index 00000000..d0f0366b --- /dev/null +++ b/conflicts-ui/src/.eslintrc @@ -0,0 +1,42 @@ +{ + "extends": ["react-app"], + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint", "import"], + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + }, + "project": "./tsconfig.json" + }, + "rules": { + "no-var": "error", + "camelcase": "error", + "space-before-blocks": "error", + "eol-last": "error" + }, + "overrides": [ + { + "files": ["**/*ts?(x)"], + "rules": { + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/quotes": ["error", "single", "avoid-escape"], + "@typescript-eslint/indent": ["error", 2], + "@typescript-eslint/semi": ["error", "always"], + "@typescript-eslint/space-before-function-paren": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/explicit-module-boundary-types": "error", + "@typescript-eslint/member-delimiter-style": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "@typescript-eslint/restrict-template-expressions": "error", + "import/order": "error", + } + } + ] +} diff --git a/conflicts-ui/src/App.css b/conflicts-ui/src/App.css new file mode 100644 index 00000000..e69de29b diff --git a/conflicts-ui/src/App.test.tsx b/conflicts-ui/src/App.test.tsx new file mode 100644 index 00000000..ee7dfef5 --- /dev/null +++ b/conflicts-ui/src/App.test.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +// import App from './App'; + +test('renders learn react link', () => { + // const { getByText } = render(); + // const linkElement = getByText(/learn react/i); + // expect(linkElement).toBeInTheDocument(); +}); diff --git a/conflicts-ui/src/App.tsx b/conflicts-ui/src/App.tsx new file mode 100644 index 00000000..3fae3c1a --- /dev/null +++ b/conflicts-ui/src/App.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import './App.css'; +import useMediaQuery from '@material-ui/core/useMediaQuery'; +import { ThemeProvider, createMuiTheme } from '@material-ui/core/styles'; +import { CssBaseline } from '@material-ui/core'; +import ConflictsView from './conflicts/views/conflicts-view'; + +const App: React.FC = () => { + const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); + + const theme = React.useMemo( + () => + createMuiTheme({ + palette: { + type: prefersDarkMode ? 'dark' : 'light', + }, + }), + [prefersDarkMode] + ); + + return ( + + + + + ); +}; + +export default App; diff --git a/conflicts-ui/src/common/models/ResponseState.ts b/conflicts-ui/src/common/models/ResponseState.ts new file mode 100644 index 00000000..0fe67b8f --- /dev/null +++ b/conflicts-ui/src/common/models/ResponseState.ts @@ -0,0 +1,5 @@ +export enum ResponseState { + PENDING = 'pending', + DONE = 'done', + ERROR = 'error', +} diff --git a/conflicts-ui/src/common/models/api-response.ts b/conflicts-ui/src/common/models/api-response.ts new file mode 100644 index 00000000..4f3c5f6e --- /dev/null +++ b/conflicts-ui/src/common/models/api-response.ts @@ -0,0 +1,13 @@ +export interface ApiHttpError { + statusCode: number; + + message: string; +} + +export interface ApiHttpResponse { + success: boolean; + + data: T; + + error: ApiHttpError | {}; +} diff --git a/conflicts-ui/src/common/models/pagination-result.ts b/conflicts-ui/src/common/models/pagination-result.ts new file mode 100644 index 00000000..eb0cd9c8 --- /dev/null +++ b/conflicts-ui/src/common/models/pagination-result.ts @@ -0,0 +1,17 @@ +export interface PaginationResult { + currentPage: number; + + perPage: number; + + offset: number; + + total: number; + + lastPage?: number; + + data: T; + + from?: number; + + to?: number; +} diff --git a/conflicts-ui/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap b/conflicts-ui/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap new file mode 100644 index 00000000..aad2a2f6 --- /dev/null +++ b/conflicts-ui/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders correctly 1`] = ` +
    +
    + #7e73d05b-8159-4e51-a302-78aa6b8fbd97 +
    +
    + server1 +
    +
    + server2 +
    +
    + some desc 1 +
    +
    +`; diff --git a/conflicts-ui/src/conflicts/components/conflict-item.spec.tsx b/conflicts-ui/src/conflicts/components/conflict-item.spec.tsx new file mode 100644 index 00000000..e71a0cec --- /dev/null +++ b/conflicts-ui/src/conflicts/components/conflict-item.spec.tsx @@ -0,0 +1,28 @@ +/* eslint-disable camelcase */ +import React from 'react'; +import renderer from 'react-test-renderer'; + +import { IConflict } from '../models/conflict'; +import ConflictItem from './conflict-item'; + +const conflict: IConflict = { + id: '7e73d05b-8159-4e51-a302-78aa6b8fbd97', + source_server: 'server1', + target_server: 'server2', + source_entity: {}, + target_entity: {}, + description: 'some desc 1', + has_resolved: false, + resolved_at: null, + location: { type: 'Point', coordinates: [35.2137, 31.7683] }, + resolution_id: null, + created_at: new Date(1234567890), + updated_at: new Date(1234567891), + deleted_at: null, +}; + +it('renders correctly', () => { + // const store = rootStore.create({}, { fetch: conflictFetcher }) + const tree = renderer.create().toJSON(); + expect(tree).toMatchSnapshot(); +}); diff --git a/conflicts-ui/src/conflicts/components/conflict-item.tsx b/conflicts-ui/src/conflicts/components/conflict-item.tsx new file mode 100644 index 00000000..654b5595 --- /dev/null +++ b/conflicts-ui/src/conflicts/components/conflict-item.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import Typography from '@material-ui/core/Typography'; + +import { IConflict } from '../models/conflict'; + +interface ConflictItemProps { + conflict: IConflict; +} + +const ConflictItem: React.FC = ({ conflict }) => { + return ( +
    + {'#' + conflict.id} +
    {conflict.source_server}
    +
    {conflict.target_server}
    +
    {conflict.description}
    +
    + ); +}; + +export default ConflictItem; diff --git a/conflicts-ui/src/conflicts/components/conflicts-table.spec.tsx b/conflicts-ui/src/conflicts/components/conflicts-table.spec.tsx new file mode 100644 index 00000000..77b95326 --- /dev/null +++ b/conflicts-ui/src/conflicts/components/conflicts-table.spec.tsx @@ -0,0 +1,82 @@ +import * as fs from 'fs'; +import React from 'react'; +import { mount } from 'enzyme'; +import { when } from 'mobx'; +import { act } from 'react-dom/test-utils'; +import { Typography, CircularProgress } from '@material-ui/core'; + +import { baseRootStore, StoreProvider } from '../models/rootStore'; +import { ResponseState } from '../../common/models/ResponseState'; +import ConflictItem from './conflict-item'; +import { ConflictsTable } from './conflicts-table'; + +console.error = jest.fn(); + +const originalWarn = console.warn.bind(console.warn); +beforeAll(() => { + console.warn = (msg:string) => + !msg.toString().includes('observer batching') && originalWarn(msg); +}); +afterAll(() => { + console.warn = originalWarn; +}); +const conflicts = JSON.parse( + fs.readFileSync('./public/conflicts.json').toString() +); +const conflictFetcher = () => Promise.resolve(conflicts); + +it('render correctly and switch between status messages and content', async () => { + expect.assertions(2); + + const mockStore = baseRootStore.create({}, { fetch: conflictFetcher }); + const wrapper = mount( + + + + ); + expect(wrapper.find(CircularProgress)).toHaveLength(1); + await act(() => mockStore.conflictsStore.fetchConflicts()); + await when(() => mockStore.conflictsStore.state === ResponseState.DONE); + wrapper.update(); + expect(wrapper.exists(ConflictsTable)).toBeTruthy(); +}); + +it("renders correctly and doesn't show any item if conflicts is empty", async () => { + const mockStore = baseRootStore.create( + {}, + { fetch: () => Promise.resolve({ data: { data: [] } }) } + ); + + mockStore.conflictsStore.fetchConflicts(); + + await when(() => mockStore.conflictsStore.state === ResponseState.DONE); + const wrapper = mount( + + + + ); + expect(wrapper.findWhere((n) => n.type() === ConflictItem).length).toEqual(0); +}); + +it('shows an error message when there is an error fetching the conflicts', async () => { + const mockStore = baseRootStore.create( + {}, + { + fetch: () => Promise.reject(new Error()), + } + ); + + mockStore.conflictsStore.fetchConflicts(); + + await when(() => mockStore.conflictsStore.state === ResponseState.ERROR); + const wrapper = mount( + + + + ); + expect(wrapper.findWhere((n) => n.type() === ConflictItem).length).toEqual(0); + expect(wrapper.find(Typography).props()).toHaveProperty( + 'children', + 'Something went horribly wrong, please try again later' + ); +}); diff --git a/conflicts-ui/src/conflicts/components/conflicts-table.tsx b/conflicts-ui/src/conflicts/components/conflicts-table.tsx new file mode 100644 index 00000000..4161b09f --- /dev/null +++ b/conflicts-ui/src/conflicts/components/conflicts-table.tsx @@ -0,0 +1,92 @@ +import React from 'react'; +import { observer } from 'mobx-react-lite'; +import CircularProgress from '@material-ui/core/CircularProgress'; +import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; +import { Typography } from '@material-ui/core'; +import { CellMetadata, SmartTable } from '@map-colonies/react-components'; +import { useStore } from '../models/rootStore'; + +import { IConflict } from '../models/conflict'; +import { ResponseState } from '../../common/models/ResponseState'; +import ConflictItem from './conflict-item'; + +const useStyle = makeStyles((theme: Theme) => + createStyles({ + infoContainer: { + padding: theme.spacing(2), + }, + infoContent: { + display: 'block', + marginRight: 'auto', + marginLeft: 'auto', + }, + }) +); + +const cellsMetaData: CellMetadata[] = [ + { + disablePadding: false, + id: 'source_server', + label: 'Source Server', + numeric: false, + }, + { + disablePadding: false, + id: 'target_server', + label: 'Target Server', + numeric: false, + }, + { + disablePadding: false, + id: 'created_at', + label: 'Created at', + numeric: false, + transform: (c: Date) => c.toLocaleString(), + }, +]; + +export const ConflictsTable: React.FC = observer(() => { + const classes = useStyle(); + const { conflictsStore } = useStore(); + + if (conflictsStore.state === ResponseState.PENDING) { + return ( +
    + +
    + ); + } else if (conflictsStore.state === ResponseState.ERROR) { + return ( +
    + + Something went horribly wrong, please try again later + +
    + ); + } else { + return ( +
    + { + + conflictsStore.pagination.setPage(page) + } + handleChangeRowsPerPage={(e) => + conflictsStore.pagination.setItemsPerPage(+e.target.value) + } + page={conflictsStore.pagination.page} + count={conflictsStore.pagination.totalItemsCount} + items={conflictsStore.conflicts as IConflict[]} + isCollapseable={true} + collapsedElement={(item) => } + onRequestSort={() => {}} + cellsMetadata={cellsMetaData} + onRowSelected={() => {}} + isDense={true} + /> + } +
    + ); + } +}); diff --git a/conflicts-ui/src/conflicts/components/date-filter.tsx b/conflicts-ui/src/conflicts/components/date-filter.tsx new file mode 100644 index 00000000..f74fb22f --- /dev/null +++ b/conflicts-ui/src/conflicts/components/date-filter.tsx @@ -0,0 +1,61 @@ +import React from 'react'; +// import { Button, Popover } from '@material-ui/core'; +import { Popover } from '@material-ui/core'; +import { MwcButton as Button } from '@map-colonies/ui-components-react/dist'; + +import { observer } from 'mobx-react-lite'; +import { DateTimeRangePicker } from '@map-colonies/react-components'; +import { useStore } from '../models/rootStore'; + +export const DateFilter: React.FC = observer(() => { + const { conflictsStore } = useStore(); + const [anchorEl, setAnchorEl] = React.useState( + null + ); + // const handleClick = (event: React.MouseEvent) => { + // setAnchorEl(event.currentTarget); + // }; + + const handleClick = (event: any) => { + setAnchorEl(event.currentTarget); + }; + + + const handleClose = () => { + setAnchorEl(null); + }; + + const { from, to } = conflictsStore.searchParams; + + const open = Boolean(anchorEl); + return ( + <> + {/* */} + + +{/* unelevated={true} */} + + + + { + conflictsStore.searchParams.setDateRange(from, to); + handleClose(); + }} + /> + + + ); +}); diff --git a/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx b/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx new file mode 100644 index 00000000..d6bc0ca8 --- /dev/null +++ b/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx @@ -0,0 +1,51 @@ +import React from 'react'; +// import { Select, MenuItem } from '@material-ui/core'; +import { MwcSelect as Select, MwcMenuItem as MenuItem} from '@map-colonies/ui-components-react/dist'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '../models/rootStore'; + +const options: { [key: string]: boolean | undefined } = { + all: undefined, + resolved: true, + open: false, +}; + +export const HasResolvedFilter: React.FC = observer(() => { + const { conflictsStore } = useStore(); + const { searchParams } = conflictsStore; + + const onChange = (option: string) => { + const resolveStatus = options[option]; + searchParams.setResolved(resolveStatus); + }; + + return ( + // + // resolve status + + + + // + + // + ); +}); diff --git a/conflicts-ui/src/conflicts/components/keywords-filter.tsx b/conflicts-ui/src/conflicts/components/keywords-filter.tsx new file mode 100644 index 00000000..3b8bf8e1 --- /dev/null +++ b/conflicts-ui/src/conflicts/components/keywords-filter.tsx @@ -0,0 +1,20 @@ +import React, { useState } from 'react'; +import { useStore } from '../models/rootStore'; + +export const KeywordsFilter: React.FC = () => { + const { conflictsStore } = useStore(); + const [keywords, setKeywords] = useState(''); + const onClick = () => { + conflictsStore.searchParams.setKeywords(keywords.split(',')); + }; + return ( +
    + setKeywords(e.target.value)} + type='text' + /> + +
    + ); +}; diff --git a/conflicts-ui/src/conflicts/models/conflict-search-params.spec.ts b/conflicts-ui/src/conflicts/models/conflict-search-params.spec.ts new file mode 100644 index 00000000..14c4a12f --- /dev/null +++ b/conflicts-ui/src/conflicts/models/conflict-search-params.spec.ts @@ -0,0 +1,97 @@ +import { Geometry } from 'geojson'; +import { ConflictSearchParams } from './conflict-search-params'; + +const geom: Geometry = { + type: 'Polygon', + coordinates: [ + [ + [0, 0], + [0, 1], + [1, 1], + [1, 0], + [0, 0], + ], + ], +}; + +it('isDateRangeValid returns true when both dates are undefined', () => { + const store = ConflictSearchParams.create({}); + + expect(store.isDateRangeValid).toEqual(true); +}); + +it('isDateRangeValid returns true if only one date is defined', () => { + const store = ConflictSearchParams.create({ from: new Date() }); + + expect(store.isDateRangeValid).toEqual(true); +}); + +it('isDateRangeValid returns false if both dates are defined, but from > to', () => { + const epochTimestamp = 1595222000; + const fromDate = new Date(epochTimestamp); + const toDate = new Date(epochTimestamp); + toDate.setDate(toDate.getDate() - 5); + const store = ConflictSearchParams.create({ + from: fromDate, + to: toDate, + }); + + expect(store.isDateRangeValid).toBe(false); +}); + +it('isDateRangeValid returns false if both dates are defined, and from is before to', () => { + const epochTimestamp = 1595222000; + const fromDate = new Date(epochTimestamp); + const toDate = new Date(epochTimestamp); + toDate.setDate(toDate.getDate() + 5); + const store = ConflictSearchParams.create({ + from: fromDate, + to: toDate, + }); + + expect(store.isDateRangeValid).toBe(true); +}); + +it('setLocation updates the geojson in the store', () => { + const store = ConflictSearchParams.create({}); + + store.setLocation(geom); + + expect(store.geojson).toEqual(geom); +}); + +it('setDateRange updates the dates in the store', () => { + const store = ConflictSearchParams.create({}); + const from = new Date(); + const to = new Date(); + + store.setDateRange(from, to); + + expect(store.from).toBe(from); + expect(store.to).toBe(to); +}); + +it('setResolved updates resolved in the store', () => { + const store = ConflictSearchParams.create({}); + + store.setResolved(true); + + expect(store.resolved).toBe(true); +}); + +it('setKeywords replaces the keywords in the store', () => { + const store = ConflictSearchParams.create({}); + const keywords = ['a', 'b', 'c']; + + store.setKeywords(keywords); + + expect(store.keywords).toEqual(keywords); +}); + +it('resetLocation sets geojson to be undefined', () => { + const store = ConflictSearchParams.create({ geojson: geom }); + + store.resetLocation(); + + expect(store.geojson).toBeUndefined(); +}); diff --git a/conflicts-ui/src/conflicts/models/conflict-search-params.ts b/conflicts-ui/src/conflicts/models/conflict-search-params.ts new file mode 100644 index 00000000..be28d1b2 --- /dev/null +++ b/conflicts-ui/src/conflicts/models/conflict-search-params.ts @@ -0,0 +1,46 @@ +import { types, Instance } from 'mobx-state-tree'; +import { Geometry } from 'geojson'; +import { isBefore } from 'date-fns'; + +export const ConflictSearchParams = types + .model({ + geojson: types.maybe(types.frozen()), + from: types.maybe(types.Date), + to: types.maybe(types.Date), + resolved: types.maybe(types.boolean), + keywords: types.array(types.string), + }) + .views((self) => ({ + get isDateRangeValid (): boolean { + return ( + !self.from || + !self.to || + (!!self.from && !!self.to && isBefore(self.from, self.to)) + ); + }, + })) + .actions((self) => ({ + setLocation: function setLocation (geometry: Geometry): void { + self.geojson = geometry; + }, + + setDateRange (from?: Date, to?: Date): void { + self.from = from; + self.to = to; + }, + + setResolved (isResolved?: boolean): void { + self.resolved = isResolved; + }, + + setKeywords (keywords: string[]): void { + self.keywords.replace(keywords); + }, + + resetLocation (): void { + self.geojson = undefined; + }, + })); + +export interface IConflictSearchParams + extends Instance {} diff --git a/conflicts-ui/src/conflicts/models/conflict.ts b/conflicts-ui/src/conflicts/models/conflict.ts new file mode 100644 index 00000000..c11580f3 --- /dev/null +++ b/conflicts-ui/src/conflicts/models/conflict.ts @@ -0,0 +1,21 @@ +/* eslint-disable camelcase */ +import { types, Instance } from 'mobx-state-tree'; +import { Geometry } from 'geojson'; + +export const Conflict = types.model({ + id: types.identifier, + source_server: types.string, + target_server: types.string, + source_entity: types.frozen(), + target_entity: types.frozen(), + description: types.string, + location: types.frozen(), + has_resolved: types.boolean, + resolved_at: types.maybeNull(types.Date), + resolution_id: types.maybeNull(types.string), + created_at: types.Date, + updated_at: types.Date, + deleted_at: types.maybeNull(types.Date), +}); + +export interface IConflict extends Instance {} diff --git a/conflicts-ui/src/conflicts/models/conflictStore.spec.ts b/conflicts-ui/src/conflicts/models/conflictStore.spec.ts new file mode 100644 index 00000000..a1bcaedb --- /dev/null +++ b/conflicts-ui/src/conflicts/models/conflictStore.spec.ts @@ -0,0 +1,86 @@ +import * as fs from 'fs'; +import { when } from 'mobx'; +import { rootStore } from './rootStore'; + +console.error = jest.fn(); + +const locations = [ + { + properties: {}, + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [35.2137, 31.7683], + }, + }, + { + properties: {}, + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [34.7818, 32.0853], + }, + }, + { + properties: {}, + type: 'Feature', + geometry: { + type: 'Point', + coordinates: [34.9896, 32.794], + }, + }, +]; + +const conflicts = JSON.parse( + fs.readFileSync('./public/conflicts.json').toString() +); +const conflictFetcher = () => Promise.resolve(conflicts); + +it('return an array of features of the conflicts location', async () => { + const { conflictsStore } = rootStore.create({}, { fetch: conflictFetcher }); + + await when(() => conflictsStore.state === 'done'); + const result = conflictsStore.conflictLocations; + + expect(result).toEqual(locations); +}); + +it('sets the selected conflict to the correct value', () => { + const { conflictsStore } = rootStore.create({}, { fetch: conflictFetcher }); + conflictsStore.selectConflict(conflicts[0]); + + conflictsStore.resetSelectedConflict(); + + expect(conflictsStore.selectedConflict).toBeUndefined(); +}); + +it('resetSelection set the selected conflict to undefined', () => { + const { conflictsStore } = rootStore.create({}, { fetch: conflictFetcher }); + conflictsStore.selectConflict(conflicts[0]); + + conflictsStore.resetSelectedConflict(); + + expect(conflictsStore.selectedConflict).toBeUndefined(); +}); + +it('format and set the conflicts, and set state to done on fetch', async () => { + expect.assertions(2); + const { conflictsStore } = rootStore.create({}, { fetch: conflictFetcher }); + + await conflictsStore.fetchConflicts(); + + expect(conflictsStore.state).toEqual('done'); + expect(conflictsStore.conflicts.length).toEqual(3); +}); + +it('set state to error when there is an error fetching the conflicts', async () => { + expect.assertions(1); + const { conflictsStore } = rootStore.create( + {}, + { fetch: () => Promise.reject(new Error()) } + ); + + await conflictsStore.fetchConflicts(); + + expect(conflictsStore.state).toEqual('error'); +}); diff --git a/conflicts-ui/src/conflicts/models/conflictStore.ts b/conflicts-ui/src/conflicts/models/conflictStore.ts new file mode 100644 index 00000000..6299196f --- /dev/null +++ b/conflicts-ui/src/conflicts/models/conflictStore.ts @@ -0,0 +1,119 @@ +/* eslint-disable camelcase */ +import { + types, + Instance, + flow, + cast, + getParent, + onSnapshot, + getSnapshot, +} from 'mobx-state-tree'; +import { feature } from '@turf/helpers'; +import { Feature, Geometry } from 'geojson'; +import { ApiHttpResponse } from '../../common/models/api-response'; +import { PaginationResult } from '../../common/models/pagination-result'; +import { ResponseState } from '../../common/models/ResponseState'; +import { + ConflictSearchParams, +} from './conflict-search-params'; +import { IRootStore } from './rootStore'; +import { pagination } from './pagination'; +import { Conflict, IConflict } from './conflict'; + +export type conflictResponse = ApiHttpResponse>; + +const conflictFormatter = (conflict: IConflict) => { + const newConflict = { ...conflict }; + newConflict.created_at = new Date(conflict.created_at); + newConflict.updated_at = new Date(conflict.updated_at); + newConflict.resolved_at = conflict.resolved_at + ? new Date(conflict.resolved_at) + : null; + newConflict.deleted_at = conflict.deleted_at + ? new Date(conflict.deleted_at) + : null; + return newConflict; +}; + +export const ConflictStore = types + .model({ + conflicts: types.array(Conflict), + state: types.enumeration( + 'State', + Object.values(ResponseState) + ), + selectedConflict: types.safeReference(Conflict), + searchParams: types.optional(ConflictSearchParams, {}), + pagination: types.optional(pagination, {}), + }) + .views((self) => ({ + get conflictLocations (): Feature[] { + return self.conflicts.map((conflict) => + feature(conflict.location, {}) + ); + }, + get root (): IRootStore { + return getParent(self); + }, + })) + .actions((self) => { + const resetSelectedConflict = () => { + self.selectedConflict = undefined; + }; + + const selectConflict = (conflict: IConflict) => { + self.selectedConflict = conflict; + }; + + const fetchConflicts = flow(function* fetchConflicts (): Generator< + Promise, + void, + conflictResponse + > { + self.conflicts = cast([]); + self.state = ResponseState.PENDING; + const snapshot = getSnapshot(self.searchParams); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const params: any = {}; + if (snapshot.from) { + params.from = Math.floor(snapshot.from / 1000); + } + if (snapshot.to) { + params.to = Math.floor(snapshot.to / 1000); + } + params.geojson = snapshot.geojson; + params.resolved = snapshot.resolved; + params.page = self.pagination.page + 1; + params.limit = self.pagination.itemsPerPage; + + try { + const result = yield self.root.fetch('/conflicts', params); + const conflicts = result.data.data; + resetSelectedConflict(); + self.conflicts.replace(conflicts.map(conflictFormatter)); + self.pagination.setTotalItems(result.data.total); + self.state = ResponseState.DONE; + } catch (error) { + console.error(error); + self.state = ResponseState.ERROR; + } + }); + + const afterCreate = () => { + onSnapshot(self.searchParams, () => { + if (self.searchParams.isDateRangeValid) { + // @ts-ignore + self.fetchConflicts(); + } + }); + }; + + return { + fetchConflicts, + selectConflict, + resetSelectedConflict, + afterCreate, + }; + }); + +export interface IConflictsStore extends Instance {} diff --git a/conflicts-ui/src/conflicts/models/pagination.ts b/conflicts-ui/src/conflicts/models/pagination.ts new file mode 100644 index 00000000..d01447cd --- /dev/null +++ b/conflicts-ui/src/conflicts/models/pagination.ts @@ -0,0 +1,25 @@ +import { types, Instance } from 'mobx-state-tree'; + +export const pagination = types + .model({ + page: types.optional(types.number, 0), + itemsPerPage: types.optional(types.number, 5), + totalItemsCount: types.optional(types.number, 0), + }) + .actions((self) => ({ + reset () { + self.page = 0; + }, + setPage (page: number) { + self.page = page; + }, + setItemsPerPage (itemsPerPage: number) { + self.itemsPerPage = itemsPerPage; + self.page = 0; + }, + setTotalItems (count: number) { + self.totalItemsCount = count; + }, + })); + +export interface IPaginationStore extends Instance {} diff --git a/conflicts-ui/src/conflicts/models/rootStore.spec.ts b/conflicts-ui/src/conflicts/models/rootStore.spec.ts new file mode 100644 index 00000000..22b1ce82 --- /dev/null +++ b/conflicts-ui/src/conflicts/models/rootStore.spec.ts @@ -0,0 +1,40 @@ +import { useContext } from 'react'; +import { useStore, rootStore } from './rootStore'; +jest.mock('react', () => { + return { + useContext: jest.fn(), + createContext: jest.fn().mockImplementation(() => ({ provider: {} })), + }; +}); + +const contextMock = useContext as jest.Mock; + +afterEach(() => { + contextMock.mockReset(); +}); + +it('useStore works correctly if store is defined', () => { + const context = {}; + contextMock.mockImplementation(() => context); + + const result = useStore(); + + expect(contextMock).toHaveBeenCalledTimes(1); + expect(result).toBe(context); +}); + +it('useStore throws an error if store is undefined', () => { + contextMock.mockImplementation(() => null); + // eslint-disable-next-line react-hooks/rules-of-hooks + const action = () => useStore(); + + expect(action).toThrow(); +}); + +it('root store should call fetchConflicts on init', () => { + const mockFetch = jest.fn().mockResolvedValue({ data: { data: [] } }); + + rootStore.create({}, { fetch: mockFetch }); + + expect(mockFetch).toHaveBeenCalledTimes(1); +}); diff --git a/conflicts-ui/src/conflicts/models/rootStore.ts b/conflicts-ui/src/conflicts/models/rootStore.ts new file mode 100644 index 00000000..d0359865 --- /dev/null +++ b/conflicts-ui/src/conflicts/models/rootStore.ts @@ -0,0 +1,50 @@ +import { types, Instance, getEnv, onAction } from 'mobx-state-tree'; +import { useContext, createContext } from 'react'; +import { ResponseState } from '../../common/models/ResponseState'; +import { ConflictStore, conflictResponse } from './conflictStore'; + +type fetchConflicts = (url:string, params:object) => Promise; + +export const baseRootStore = types + .model({ + conflictsStore: types.optional(ConflictStore, { + state: ResponseState.PENDING, + searchParams: {}, + }), + // mapStore: types.optional(ConflictMapState, {}) + }) + .views((self) => ({ + get fetch (): fetchConflicts { + return getEnv(self).fetch as fetchConflicts; + }, + })); + +export const rootStore = baseRootStore.actions((self) => ({ + afterCreate (): void { + self.conflictsStore.fetchConflicts(); + + onAction( + self, + (call) => { + if (call.name === 'setItemsPerPage' || call.name === 'setPage') { + self.conflictsStore.fetchConflicts(); + } + }, + true + ); + }, +})); +export interface IBaseRootStore extends Instance {} +export interface IRootStore extends Instance {} +const RootStoreContext = createContext( + null +); + +export const StoreProvider = RootStoreContext.Provider; +export const useStore = (): IRootStore | IBaseRootStore => { + const store = useContext(RootStoreContext); + if (store === null) { + throw new Error('Store cannot be null, please add a context provider'); + } + return store; +}; diff --git a/conflicts-ui/src/conflicts/views/conflicts-view.tsx b/conflicts-ui/src/conflicts/views/conflicts-view.tsx new file mode 100644 index 00000000..2139053f --- /dev/null +++ b/conflicts-ui/src/conflicts/views/conflicts-view.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { + VectorLayer, + VectorSource, + MapFilterContainer, + GeoJSONFeature, +} from '@map-colonies/react-components'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '../models/rootStore'; +import { DateFilter } from '../components/date-filter'; +import { HasResolvedFilter } from '../components/has-resolved-filter'; +import { ConflictsTable } from '../components/conflicts-table'; + +const ConflictsView: React.FC = observer(() => { + const { conflictsStore } = useStore(); + return ( + } + filters={[, ]} + mapContent={ + + + {conflictsStore.conflicts.map((conflict, index) => ( + + ))} + + + } + /> + ); +}); + +export default ConflictsView; diff --git a/conflicts-ui/src/index.css b/conflicts-ui/src/index.css new file mode 100644 index 00000000..ec2585e8 --- /dev/null +++ b/conflicts-ui/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/conflicts-ui/src/index.tsx b/conflicts-ui/src/index.tsx new file mode 100644 index 00000000..8235bb80 --- /dev/null +++ b/conflicts-ui/src/index.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import 'mobx-react-lite/batchingForReactDom'; +import './index.css'; +import Axios from 'axios'; +import App from './App'; +import * as serviceWorker from './serviceWorker'; +import { StoreProvider, rootStore } from './conflicts/models/rootStore'; +import { conflictResponse } from './conflicts/models/conflictStore'; + +import { applyPolyfills, defineCustomElements } from '@map-colonies/ui-components/loader'; + +const store = rootStore.create( + {}, + { + fetch: (url: string, params: object) => + Axios.post(url, params).then((res) => res.data as conflictResponse), + } +); +ReactDOM.render( + + + + + , + document.getElementById('root') +); + +// If you want your app to work offline and load faster, you can change +// unregister() to register() below. Note this comes with some pitfalls. +// Learn more about service workers: https://bit.ly/CRA-PWA +serviceWorker.unregister(); + + +applyPolyfills().then(() => { + defineCustomElements(); +}); + diff --git a/conflicts-ui/src/logo.svg b/conflicts-ui/src/logo.svg new file mode 100644 index 00000000..6b60c104 --- /dev/null +++ b/conflicts-ui/src/logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/conflicts-ui/src/react-app-env.d.ts b/conflicts-ui/src/react-app-env.d.ts new file mode 100644 index 00000000..6431bc5f --- /dev/null +++ b/conflicts-ui/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/conflicts-ui/src/serviceWorker.ts b/conflicts-ui/src/serviceWorker.ts new file mode 100644 index 00000000..b09523f1 --- /dev/null +++ b/conflicts-ui/src/serviceWorker.ts @@ -0,0 +1,149 @@ +// This optional code is used to register a service worker. +// register() is not called by default. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on subsequent visits to a page, after all the +// existing tabs open on the page have been closed, since previously cached +// resources are updated in the background. + +// To learn more about the benefits of this model and instructions on how to +// opt-in, read https://bit.ly/CRA-PWA + +const isLocalhost = Boolean( + window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.0/8 are considered localhost for IPv4. + window.location.hostname.match( + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ + ) +); + +type Config = { + onSuccess?: (registration: ServiceWorkerRegistration) => void; + onUpdate?: (registration: ServiceWorkerRegistration) => void; +}; + +export function register(config?: Config) { + if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + // The URL constructor is available in all browsers that support SW. + const publicUrl = new URL( + process.env.PUBLIC_URL, + window.location.href + ); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + return; + } + + window.addEventListener('load', () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Let's check if a service worker still exists or not. + checkValidServiceWorker(swUrl, config); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + 'This web app is being served cache-first by a service ' + + 'worker. To learn more, visit https://bit.ly/CRA-PWA' + ); + }); + } else { + // Is not localhost. Just register service worker + registerValidSW(swUrl, config); + } + }); + } +} + +function registerValidSW(swUrl: string, config?: Config) { + navigator.serviceWorker + .register(swUrl) + .then(registration => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker == null) { + return; + } + installingWorker.onstatechange = () => { + if (installingWorker.state === 'installed') { + if (navigator.serviceWorker.controller) { + // At this point, the updated precached content has been fetched, + // but the previous service worker will still serve the older + // content until all client tabs are closed. + console.log( + 'New content is available and will be used when all ' + + 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' + ); + + // Execute callback + if (config && config.onUpdate) { + config.onUpdate(registration); + } + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // "Content is cached for offline use." message. + console.log('Content is cached for offline use.'); + + // Execute callback + if (config && config.onSuccess) { + config.onSuccess(registration); + } + } + } + }; + }; + }) + .catch(error => { + console.error('Error during service worker registration:', error); + }); +} + +function checkValidServiceWorker(swUrl: string, config?: Config) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl, { + headers: { 'Service-Worker': 'script' } + }) + .then(response => { + // Ensure service worker exists, and that we really are getting a JS file. + const contentType = response.headers.get('content-type'); + if ( + response.status === 404 || + (contentType != null && contentType.indexOf('javascript') === -1) + ) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then(registration => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl, config); + } + }) + .catch(() => { + console.log( + 'No internet connection found. App is running in offline mode.' + ); + }); +} + +export function unregister() { + if ('serviceWorker' in navigator) { + navigator.serviceWorker.ready + .then(registration => { + registration.unregister(); + }) + .catch(error => { + console.error(error.message); + }); + } +} diff --git a/conflicts-ui/src/setupTests.ts b/conflicts-ui/src/setupTests.ts new file mode 100644 index 00000000..df373484 --- /dev/null +++ b/conflicts-ui/src/setupTests.ts @@ -0,0 +1,14 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom/extend-expect'; + +import Enzyme from 'enzyme'; +import Adapter from 'enzyme-adapter-react-16'; + +Enzyme.configure({ adapter: new Adapter() }); + +// Mocked as those are used by openlayers +global.URL.createObjectURL = jest.fn(); +HTMLCanvasElement.prototype.getContext = jest.fn(); diff --git a/conflicts-ui/tsconfig.json b/conflicts-ui/tsconfig.json new file mode 100644 index 00000000..f2850b71 --- /dev/null +++ b/conflicts-ui/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react" + }, + "include": [ + "src" + ] +} diff --git a/package.json b/package.json index ac589f81..881becdb 100644 --- a/package.json +++ b/package.json @@ -7,18 +7,21 @@ "private": true, "workspaces": [ "packages/*", - "demoapp" + "demoapp", + "conflicts-ui" ], "scripts": { "del-dist": "lerna exec --parallel -- del-cli dist", "prebuild": "yarn del-dist", + "build:react-core": "lerna exec --scope @map-colonies/react-core -- yarn build", "build:react": "lerna exec --scope @map-colonies/react-components -- yarn build", "build:stencil": "lerna exec --scope @map-colonies/ui-components -- yarn build", "build:stencil-react": "lerna exec --scope @map-colonies/ui-components-react -- yarn build", "build:all": "lerna run build --npm-client=yarn", "publish": "lerna publish --contents dist", - "start:reactdemo": "cd demoapp && yarn start" + "start:reactdemo": "cd demoapp && yarn start", + "start:conflicts": "cd conflicts-ui && yarn start" }, "devDependencies": { "del-cli": "^3.0.1", diff --git a/packages/mc-react-ui-components/.gitignore b/packages/mc-react-ui-components/.gitignore new file mode 100644 index 00000000..a4d94e6c --- /dev/null +++ b/packages/mc-react-ui-components/.gitignore @@ -0,0 +1,21 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +dist +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env* +!.env.example + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/packages/mc-react-ui-components/README.md b/packages/mc-react-ui-components/README.md new file mode 100644 index 00000000..f01a604c --- /dev/null +++ b/packages/mc-react-ui-components/README.md @@ -0,0 +1,18 @@ +# mc-react-components + +This is a library contains react components for use by other apps. All the components are written using typescript. The project was bootstrapped using create-react-app, and modified to enable exporting of components. + +## Using the package + +* Run `yarn run build`. This will compile the `src/lib` folder, and copy all the other files into the dist folder. +* Add the package as a dependency to your project. +* Import the required component, and use it in your code. + +## Developing new components + +* Create a new folder for your component under src/lib. +* Develop your component (you can use `src/index.tsx` with `yarn start` to help you in the process). +* Import the component into `src/lib/index.ts`. +* Rebuild the package using `yarn run build`. +* Use the new component in different apps. + diff --git a/packages/mc-react-ui-components/package.json b/packages/mc-react-ui-components/package.json new file mode 100644 index 00000000..7a755eca --- /dev/null +++ b/packages/mc-react-ui-components/package.json @@ -0,0 +1,74 @@ +{ + "name": "@map-colonies/react-core", + "version": "0.1.0", + "module": "dist/index.js", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "homepage": "https://github.com/MapColonies/shared-components/tree/master/mc-react-ui-components#readme", + "bugs": { + "url": "https://github.com/MapColonies/shared-components/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/MapColonies/shared-components.git" + }, + "license": "MIT", + "dependencies": { + "cross-env": "7.0.2", + "classnames": "^2.2.6", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "@types/jest": "^24.0.0", + "@types/node": "^12.0.0", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-scripts": "3.4.1", + "typescript": "~3.7.2", + "date-fns": "^2.14.0", + "ol": "^6.3.1", + "@turf/helpers": "^6.1.4", + "@turf/rewind": "^5.1.5", + "@types/geojson": "^7946.0.7", + "@date-io/date-fns": "^1.3.13", + "@material-ui/core": "^4.11.0", + "@material-ui/icons": "^4.9.1", + "@material-ui/pickers": "^3.2.10", + "@types/ol": "^6.3.1", + "rimraf": "3.0.2", + "copyfiles": "2.3.0" + }, + "scripts": { + "start": "react-scripts start", + "build": "rimraf dist && tsc --project tsbuildconfig.json", + "test": "react-scripts test", + "eject": "react-scripts eject", + "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@types/enzyme": "^3.10.5", + "@types/enzyme-adapter-react-16": "^1.0.6", + "@types/react-test-renderer": "^16.9.2", + "enzyme": "^3.11.0", + "enzyme-adapter-react-16": "^1.15.2", + "jest-enzyme": "^7.1.2", + "react-test-renderer": "^16.13.1" + } +} diff --git a/packages/mc-react-ui-components/public/favicon.ico b/packages/mc-react-ui-components/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcd5dfd67cd0361b78123e95c2dd96031f27f743 GIT binary patch literal 3150 zcmaKtc{Ei0AIGn;MZ^<@lHD*OV;K7~W1q3jSjJcqNywTkMOhP*k~Oj?GO|6{m(*C2 zC7JA+hN%%Bp7T4;J@?%2_x=5zbI<2~->=X60stMr0B~{wzpi9D0MG|# zyuANt7z6;uz%?PEfAnimLl^)6h5ARwGXemG2>?hqQv-I^Gpyh$JH}Ag92}3{$a#z& zd`il2Sb#$U&e&4#^4R|GTgk!Qs+x*PCL{2+`uB5mqtnqLaaw`*H2oqJ?XF(zUACc2 zSibBrdQzcidqv*TK}rpEv1ie&;Famq2IK5%4c}1Jt2b1x_{y1C!?EU)@`_F)yN*NK z)(u03@%g%uDawwXGAMm%EnP9FgoucUedioDwL~{6RVO@A-Q$+pwVRR%WYR>{K3E&Q zzqzT!EEZ$_NHGYM6&PK#CGUV$pTWsiI5#~m>htoJ!vbc0=gm3H8sz8KzIiVN5xdCT z%;}`UH2Pc8))1VS-unh?v4*H*NIy5On{MRKw7BTmOO9oE2UApwkCl9Z?^dod9M^#w z51tEZhf+#dpTo#GDDy#kuzoIjMjZ?%v*h$ z*vwUMOjGc?R0(FjLWkMD)kca4z6~H45FIzQ!Zzu&-yWyMdCBsDr2`l}Q{8fH$H@O< z$&snNzbqLk?(GIe?!PVh?F~2qk4z^rMcp$P^hw^rUPjyCyoNTRw%;hNOwrCoN?G0E z!wT^=4Loa9@O{t;Wk(Nj=?ms1Z?UN_;21m%sUm?uib=pg&x|u)8pP#l--$;B9l47n zUUnMV0sXLe*@Gvy>XWjRoqc2tOzgYn%?g@Lb8C&WsxV1Kjssh^ZBs*Ysr+E6%tsC_ zCo-)hkYY=Bn?wMB4sqm?WS>{kh<6*DO)vXnQpQ9`-_qF6!#b;3Nf@;#B>e2j$yokl6F|9p1<($2 z=WSr%)Z?^|r6njhgbuMrIN>8JE05u0x5t@_dEfbGn9r0hK4c2vp>(*$GXsjeLL_uz zWpyfUgdv!~-2N;llVzik#s2*XB*%7u8(^sJv&T3pzaR&<9({17Zs~UY>#ugZZkHBs zD+>0_an$?}utGp$dcXtyFHnTQZJ}SF=oZ}X07dz~K>^o(vjTzw8ZQc!Fw1W=&Z?9% zv63|~l}70sJbY?H8ON8j)w5=6OpXuaZ}YT03`2%u8{;B0Vafo_iY7&BiQTbRkdJBYL}?%ATfmc zLG$uXt$@3j#OIjALdT&Ut$=9F8cgV{w_f5eS)PjoVi z&oemp-SKJ~UuGuCP1|iY?J^S&P z)-IG?O-*=z6kfZrX5H*G=aQ{ZaqnOqP@&+_;nq@mA>EcjgxrYX8EK|Iq4&E&rxR?R z8N$QOdRwY zr{P`O)=87>YLHtFfGXW z6P)ucrhj~It_9w<^v5>T6N1U}+BkS))=WX*2JY=}^b2czGhH<`?`(}}qMcpPx_%>M zM|fs(+I1m&_h(zqp-HgP>re$2O^o$q)xu#fl0ivOJE({duU)a*OD(eYgSi^cdTn}pqcPM(;S)2%1By^Wh%-CaC%>d9hi`7J zaxL7@;nhA>PE%s99&;z{8>VFgf{u!(-B-x7Of6ueme+ScryL`h(^qKE)DtieWY>-7 zgB)VJESQS4*1LU(2&@pgLvSt{(((C?K_V(rQk``i&5}ZPG;G^FiPlZ$7|-vEmMWlU z5lQ%iK2nu=h2wd_7>gK@vX=*AG+u~rQP$NwPC`ZA?4nh{3tui1x@bT6-;Rk3yDQ>d z?3qRD#+PeV7#FAa>s`Xwxsx_oRFcN$StW2=CW`=qObsT?SD^#^jM1Yk}PSPxJ zG@-_mnNU_)vM|iLRSI>UMp|hatyS}17R{10IuL0TLlupt>9dRs_SPQbv7BLYyC#qv16E-y@XZ= z-!p7I%#r-BVi$nQq3&ssRc_IC%R6$tA&^s_l46880~Wst3@>(|EO<}T4~ci~#!=e; zD)B>o%1+$ksURD1p7I-<3ehlFyVkqrySf&gg>Bp0Z9?JaG|gyTZ{Cb8SdvAWVmFX7v2ohs!OCc!Udk zUITUpmZ33rKLI#(&lDj}cKA#dpL4Fil=$5pu_wi1XJR!llw` zSItPBDEdMHk2>c7#%lBxZHHvtVUOZ$}v?=?AT~9!Jcqa@IJGuMg(s^7r>pcTrd)pS`{5Cu8WPey` z9)!!OUUY@L%9Q+bZa*S5`3f_|lFCPN6kdp_M2>{le8;cn^XUsPa+TUk47qd6)IBR% zk*&Ip?!Ge_gmmdj)BX}P_5o@VI2*wbZ^>UhFju}0gQZh!pP%4XT9{@w;G#b3XK8sN zF(7i$Jv(IM$8Akys9dhP^^~H2(7BfJp}yDW1#@!CL-!mGcSCnJ599WK9MV@yo_u$v MDeX2GIKR{Qf5okjU;qFB literal 0 HcmV?d00001 diff --git a/packages/mc-react-ui-components/public/index.html b/packages/mc-react-ui-components/public/index.html new file mode 100644 index 00000000..aa069f27 --- /dev/null +++ b/packages/mc-react-ui-components/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
    + + + diff --git a/packages/mc-react-ui-components/public/logo192.png b/packages/mc-react-ui-components/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/packages/mc-react-ui-components/public/manifest.json b/packages/mc-react-ui-components/public/manifest.json new file mode 100644 index 00000000..080d6c77 --- /dev/null +++ b/packages/mc-react-ui-components/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/packages/mc-react-ui-components/public/robots.txt b/packages/mc-react-ui-components/public/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/packages/mc-react-ui-components/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/packages/mc-react-ui-components/src/index.tsx b/packages/mc-react-ui-components/src/index.tsx new file mode 100644 index 00000000..8a0410f0 --- /dev/null +++ b/packages/mc-react-ui-components/src/index.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; + +ReactDOM.render( + +
    Hello world
    +
    , + document.getElementById('root') +); diff --git a/packages/mc-react-ui-components/src/lib/@types/markdown.d.ts b/packages/mc-react-ui-components/src/lib/@types/markdown.d.ts new file mode 100644 index 00000000..4bd0b4b3 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/@types/markdown.d.ts @@ -0,0 +1,4 @@ +declare module '*.md' { + const content: any; + export default content; +} diff --git a/packages/mc-react-ui-components/src/lib/avatar/README.md b/packages/mc-react-ui-components/src/lib/avatar/README.md new file mode 100644 index 00000000..fe5820a7 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/avatar/README.md @@ -0,0 +1,190 @@ +# Avatars `RMWC ADDON` + +Avatars are virtual representations of users in a system. + +- Module **@rmwc/avatar** +- Import styles: + - Using CSS Loader + - import '@rmwc/avatar/styles'; + - Or include stylesheets + - **'@rmwc/avatar/avatar.css'** + - **'@rmwc/icon/icon.css'** + - **'@material/ripple/dist/mdc.ripple.css'** + + +```jsx +<> + + + + + + +``` + +```jsx +<> + + + + + + +``` + +```jsx + +``` + +```jsx + +``` + +## Avatar Groups + +This is for Avatars that are displayed in a corellated grouping or list. + +```jsx + + + + + +``` + +```jsx + + + + + +``` + +## Usage with other components + +The avatar component has been designed to work nicely in any of the places you would use an icon. + +```jsx + +// setOpen(false)}> +// Test +// +// +// +// +// +// ); +// } + +// function Bug515() { +// const [disabled, setDisabled] = React.useState(false); + +// function switchDisabled() { +// setDisabled(!disabled); +// } + +// return ( +// +// RMWC Sandbox +// +// Buttons using state for disabled remain focused when enabled. Steps to +// reproduce: +// +// +//
      +//
    • Cick each button.
    • +//
    • Buttons 3 and 4 remain selected when they are enabled.
    • +//
    • Buttons 1 and 2 do not.
    • +//
    • +// Only difference is the disabled flag being set by state: disabled. +//
    • +//
    +//
    +// +// +//
    +// ); +// } + +// function Bug567() { +// return ( +// +// +// Expected: red text here. Actual: black. +// +// +// ); +// } + +// function Bug594() { +// const [value, setValue] = React.useState(''); + +// return ( +//
    +// +// Cookies, +// value: 'Cookies' +// }, +// { +// label: Span, +// value: 'Pizza' +// }, +// { +// label: Icecream, +// value: 'Icecream' +// } +// ]} +// /> +// +// ); +// } + +// storiesOf('Bugs', module) +// .add('#538', Bug538) +// .add('#515', Bug515) +// .add('#560', Bug560) +// .add('#567', Bug567) +// .add('#594', Bug594) +// .add('Hz8pr', Hz8pr); diff --git a/packages/mc-react-ui-components/src/lib/base/component.tsx b/packages/mc-react-ui-components/src/lib/base/component.tsx new file mode 100644 index 00000000..7e894274 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/component.tsx @@ -0,0 +1,104 @@ +import * as RMWC from '../types'; +import React from 'react'; +import classNamesFunc from 'classnames'; +import { parseThemeOptions } from './with-theme'; +import { FoundationElement } from './foundation-component'; + +type ClassNamesInputT = + | undefined + | (( + props: Props + ) => Array< + | string + | undefined + | null + | { [className: string]: boolean | undefined | string | number } + >) + | string[] + | Array< + | string + | undefined + | null + | { [className: string]: boolean | undefined | string | number } + >; + +export const Tag = React.forwardRef< + any, + { + element?: FoundationElement; + } & RMWC.HTMLProps +>(function Tag({ tag: TagEl = 'div', theme, element, ...rest }, ref) { + const finalProps = element ? element.props(rest) : rest; + const finalRef = element ? mergeRefs(ref, element.setRef) : ref; + + return ; +}); + +export const useClassNames = ( + props: Props, + classNames: ClassNamesInputT +) => { + return classNamesFunc( + props.className, + ...(!!props.theme ? parseThemeOptions(props.theme) : []), + ...(typeof classNames === 'function' ? classNames(props) : classNames) + ); +}; + +export const mergeRefs = ( + ...refs: Array | undefined | null> +) => (el: any) => { + for (const ref of refs) { + if (typeof ref === 'function') { + ref(el); + } else if (ref && 'current' in ref) { + // @ts-ignore + ref.current = el; + } + } +}; + +export const handleRef = ( + ref: React.Ref | null | undefined, + value: T +) => { + if (typeof ref === 'function') { + ref(value); + } else if (ref && 'current' in ref) { + // @ts-ignore + ref.current = value; + } +}; + +export function createComponent< + P extends {}, + ElementP extends {} = React.HTMLProps +>(Component: React.RefForwardingComponent) { + const ForwardComponent = React.forwardRef< + any, + RMWC.ComponentProps + >(Component); + + // Interestingly enough, we only need this declaration + // for a generic placeholder for typescript inference, + // we don't actually have to pay the penalty for using it at runtime :) + const WrappedComponent = ( + props: RMWC.ComponentProps, + ref: any + ) => { + return <>; + }; + + WrappedComponent.displayName = Component.constructor.name || 'RMWCComponent'; + ForwardComponent.displayName = WrappedComponent.displayName; + + return ForwardComponent as typeof WrappedComponent; +} + +export function createMemoComponent< + P extends {}, + ElementP extends {} = React.HTMLProps +>(Component: React.RefForwardingComponent) { + const Comp = createComponent(Component); + return React.memo(Comp) as typeof Comp; +} diff --git a/packages/mc-react-ui-components/src/lib/base/foundation-component.tsx b/packages/mc-react-ui-components/src/lib/base/foundation-component.tsx new file mode 100644 index 00000000..9e578c2d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/foundation-component.tsx @@ -0,0 +1,308 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +// import { SpecificEventListener } from '@material/base/types'; +import React, { useEffect, useState, useRef, useMemo } from 'react'; +import classNames from 'classnames'; +import { eventsMap } from './utils/events-map'; +import { toCamel } from './utils/strings'; +import { MDCFoundation } from '@material/base'; +import { handleRef } from './component'; + +const reactPropFromEventName = (evtName: string) => + (eventsMap as { [key: string]: string })[evtName] || evtName; + +export class FoundationElement { + private _classes = new Set(); + private _events: { [key: string]: (evt: Event) => void } = {}; + private _style: { [key: string]: string | number | null } = {}; + private _props: Partial = {}; + private _ref = null; + _onChange: (() => void) | null = null; + + constructor(onChange: () => void) { + this._onChange = onChange; + this.onChange = this.onChange.bind(this); + this.addClass = this.addClass.bind(this); + this.removeClass = this.removeClass.bind(this); + this.hasClass = this.hasClass.bind(this); + this.setProp = this.setProp.bind(this); + this.getProp = this.getProp.bind(this); + this.removeProp = this.removeProp.bind(this); + this.setStyle = this.setStyle.bind(this); + this.addEventListener = this.addEventListener.bind(this); + this.removeEventListener = this.removeEventListener.bind(this); + this.setRef = this.setRef.bind(this); + } + + onChange() { + this._onChange && this._onChange(); + } + + destroy() { + this._onChange = null; + this._events = {}; + this._style = {}; + this._props = {}; + this._classes = new Set(); + + setTimeout(() => { + this._ref = null; + }); + } + + /************************************************** + * Classes + **************************************************/ + addClass(className: string) { + if (!this._classes.has(className)) { + this._classes.add(className); + this.onChange(); + } + } + + removeClass(className: string) { + if (this._classes.has(className)) { + this._classes.delete(className); + this.onChange(); + } + } + + hasClass(className: string) { + return this._classes.has(className); + } + + /************************************************** + * Props + **************************************************/ + setProp(propName: keyof Props, value: any, silent: boolean = false) { + if (this._props[propName] !== value) { + this._props[propName] = value; + !silent && this.onChange(); + } + } + + getProp(propName: keyof Props) { + return this._props[propName]; + } + + removeProp(propName: keyof Props) { + if (this._props[propName] !== undefined) { + delete this._props[propName]; + this.onChange(); + } + } + + props(propsToMerge: { [key: string]: any }) { + const { className = '', style = {} } = propsToMerge; + + // handle merging events + // the foundation should be able to pass something onClick as well as a user + // This wraps them in a function that calls both + const mergedEvents = Object.entries(propsToMerge).reduce( + (acc: any, [key, possibleCallback]) => { + const existingCallback = this._events[key]; + if ( + typeof possibleCallback === 'function' && + typeof existingCallback === 'function' + ) { + const wrappedCallback = (evt: any) => { + existingCallback(evt); + return possibleCallback(evt); + }; + + acc[key] = wrappedCallback; + } + return acc; + }, + { ...this._events } + ); + + // handle className + const mergedClasses = classNames(className, [...this._classes]); + + // handle styles + const mergedStyles = { + ...this._style, + ...style + }; + + return { + ...propsToMerge, + ...this._props, + ...mergedEvents, + style: mergedStyles, + className: mergedClasses + }; + } + + /************************************************** + * Styles + **************************************************/ + setStyle(propertyName: string, value: number | string | null) { + propertyName = propertyName.startsWith('--') + ? propertyName + : toCamel(propertyName); + + if (this._style[propertyName] !== value) { + this._style[propertyName] = value; + this.onChange(); + } + } + + /************************************************** + * Events + **************************************************/ + addEventListener(evtName: string, callback: any/*SpecificEventListener*/) { + const propName = reactPropFromEventName(evtName); + if (this._events[propName] !== callback) { + this._events[propName] = callback; + this.onChange(); + } + } + + removeEventListener(evtName: string, callback: any/*SpecificEventListener*/) { + const propName = reactPropFromEventName(evtName); + if (this._events[propName]) { + delete this._events[propName]; + this.onChange(); + } + } + + /************************************************** + * Refs + **************************************************/ + setRef(el: any) { + if (el) { + this._ref = el; + } + } + + get ref(): ElementType | null { + return this._ref; + } +} + +const emitFactory = (props: { [key: string]: any }) => ( + evtType: string, + evtData: any, + shouldBubble: boolean = false +) => { + let evt; + + evt = new CustomEvent(evtType, { + detail: evtData, + bubbles: shouldBubble + }); + + // bugfix for events coming from form elements + // and also fits with reacts form pattern better... + // This should always otherwise be null since there is no target + // for Custom Events + Object.defineProperty(evt, 'target', { + value: evtData, + writable: false + }); + + Object.defineProperty(evt, 'currentTarget', { + value: evtData, + writable: false + }); + + // Custom handling for React + const propName = evtType; + + props[propName] && props[propName](evt); + + return evt; +}; + +export const useFoundation = < + Foundation extends MDCFoundation, + Elements extends { [key: string]: true }, + Api extends ( + params: { + [key in keyof Elements]: FoundationElement; + } & { foundation: any } + ) => any, + Props extends { + [key: string]: any; + foundationRef?: React.Ref; + apiRef?: (ref: ReturnType | null) => void; + } +>({ + foundation: foundationFactory, + props: inputProps, + elements: elementsInput, + api +}: { + foundation: ( + elements: { + [key in keyof Elements]: FoundationElement; + } & { + getProps: () => Props; + emit: ( + evtType: string, + evtData: any, + shouldBubble?: boolean + ) => CustomEvent; + } + ) => Foundation; + props: Props; + elements: Elements; + api?: Api; +}) => { + const [, setIteration] = useState(0); + + const props = useRef(inputProps); + props.current = inputProps; + + const elements = useMemo( + () => + Object.keys(elementsInput).reduce< + { + [key in keyof Elements]: FoundationElement; + } + >((acc, key: keyof Elements) => { + acc[key] = new FoundationElement(() => { + setIteration((val) => val + 1); + }); + return acc; + }, {} as any), + // eslint-disable-next-line react-hooks/exhaustive-deps + [] + ); + + const foundation = useMemo(() => { + // init foundation + const f = foundationFactory({ + ...elements, + getProps: () => props.current, + emit: (...args) => emitFactory(props.current)(...args) + }); + + // handle apiRefs + api && handleRef(props.current.apiRef, api({ foundation: f, ...elements })); + + return f; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + useEffect(() => { + const f = foundation; + f.init(); + api && handleRef(props.current.apiRef, api({ foundation: f, ...elements })); + handleRef(props.current.foundationRef, f); + + return () => { + f.destroy(); + handleRef(props.current.apiRef, null); + handleRef(props.current.foundationRef, null); + Object.values(elements).map((element) => element.destroy()); + // @ts-ignore + props.current = {}; + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [foundation, elements]); + + return { foundation: foundation, ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/base/index.spec.tsx b/packages/mc-react-ui-components/src/lib/base/index.spec.tsx new file mode 100644 index 00000000..90eb229e --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/index.spec.tsx @@ -0,0 +1,210 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { mount } from 'enzyme'; +import { + withTheme, + randomId, + wrapChild, + debounce, + toCamel, + toDashCase, + closest +} from './'; +import { FoundationElement } from './foundation-component'; +import { wait } from './utils/test-utils'; + +jest.spyOn(console, 'warn'); + +describe('RMWC', () => { + it('works', () => {}); +}); + +describe('FoundationElement', () => { + it('FoundationElement: handles classNames', () => { + const inst = { + root: new FoundationElement(() => {}) + }; + + inst.root.addClass('foo'); + inst.root.addClass('foo'); + expect(inst.root.props({}).className.includes('foo')).toBe(true); + expect(inst.root.hasClass('foo')).toBe(true); + + inst.root.removeClass('foo'); + inst.root.removeClass('foo'); + expect(inst.root.props({}).className.includes('foo')).toBe(false); + expect(inst.root.hasClass('foo')).toBe(false); + }); + + it('FoundationElement: handles ref', () => { + const inst = { + root: new FoundationElement(() => {}) + }; + + mount(
    ); + + expect(inst.root.ref instanceof HTMLDivElement).toBe(true); + }); + + it('FoundationElement: handles addEventListener / removeEventListener', () => { + const inst = { + root: new FoundationElement(() => {}) + }; + + // double up on the adds to check that it doesnt add a second time + const changeHandler = () => {}; + inst.root.addEventListener('change', changeHandler); + inst.root.addEventListener('change', changeHandler); + expect(inst.root.props({}).onChange).toBe(changeHandler); + + // double up on the removes to check that it doesnt remove a second time + inst.root.removeEventListener('change', changeHandler); + inst.root.removeEventListener('change', changeHandler); + expect(inst.root.props({}).onChange).toBe(undefined); + + // Check to make sure we can add a bogus one + inst.root.addEventListener('onChange', changeHandler); + }); + + it('FoundationElement: handles setStyle', () => { + const inst = { + root: new FoundationElement(() => {}) + }; + + inst.root.setStyle('color', 'red'); + inst.root.setStyle('color', 'red'); + inst.root.setStyle('--myvar', 'red'); + expect(inst.root.props({}).style).toEqual({ + color: 'red', + '--myvar': 'red' + }); + + inst.root.setStyle('color', 'blue'); + + expect(inst.root.props({}).style).toEqual({ + color: 'blue', + '--myvar': 'red' + }); + }); + + it('FoundationElement: handles prop setters / getters', () => { + const inst = { + root: new FoundationElement(() => {}) + }; + + inst.root.setProp('title', 'red'); + inst.root.setProp('title', 'red'); + expect(inst.root.props({}).title).toBe('red'); + expect(inst.root.getProp('title')).toBe('red'); + expect(inst.root.removeProp('title')); + expect(inst.root.removeProp('title')); + expect(inst.root.getProp('title')).toBe(undefined); + }); + + it('FoundationElement: handles prop merging', async (done) => { + let blueChangeCalled = false; + let redChangeCalled = false; + const el = mount( +
    (blueChangeCalled = true)} + /> + ); + const inst = { + root: new FoundationElement(() => {}) + }; + + inst.root.addClass('red'); + inst.root.setStyle('color', 'red'); + inst.root.addEventListener('change', () => (redChangeCalled = true)); + el.update(); + + await wait(100); + const mergedProps = inst.root.props(el.props()); + mergedProps.onChange(); + expect(mergedProps.className).toBe('blue red'); + expect(mergedProps.style).toEqual({ color: 'red', background: 'blue' }); + expect(blueChangeCalled).toBe(true); + expect(redChangeCalled).toBe(true); + done(); + }); +}); + +describe('Utils', () => { + it('randomId', () => { + // @ts-ignore + process.env.NODE_ENV = 'production'; + randomId(); + // @ts-ignore + process.env.NODE_ENV = 'test'; + }); + + it('debounce', (done) => { + let val = 0; + const foo = () => val++; + const debouncedFoo = debounce(foo, 100); + debouncedFoo(); + setTimeout(() => { + expect(val).toBe(1); + done(); + }, 150); + }); + + it('closest', () => { + const parent = document.createElement('div'); + const child = document.createElement('div'); + parent.classList.add('foo'); + + parent.appendChild(child); + + expect(closest(child, '.foo')).toBe(parent); + expect(closest(null, '.foo')).toBe(null); + }); + + it('wrapChild', () => { + const Foo = (props: any) => { + return wrapChild({ ...props, className: 'foo' }); + }; + + const el = mount( + +
    + + ); + + expect(el.html().includes('foo child')).toBe(true); + }); + + it('toCamel', () => { + expect(toCamel('test-foo')).toBe('testFoo'); + }); + + it('toDashCase', () => { + expect(toDashCase('testFoo')).toBe('test-foo'); + }); +}); + +describe('withTheme', () => { + it('works with and without classnames', () => { + const Component = withTheme(({ ...rest }) =>
    ); + const el = mount(); + expect(el.html().includes('test')); + + mount(); + expect(el.html().includes('test')); + }); + + it('works with arrays', () => { + const Component = withTheme(({ ...rest }) =>
    ); + const el = mount(); + expect(el.html().includes('mdc-theme-primary')); + }); + + it('handles deprecations', () => { + const Component = withTheme(({ ...rest }) =>
    ); + // @ts-ignore + mount(); + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/base/index.tsx b/packages/mc-react-ui-components/src/lib/base/index.tsx new file mode 100644 index 00000000..69748397 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/index.tsx @@ -0,0 +1,10 @@ +import { WithThemeProps as _WithThemeProps } from './with-theme'; + +export { default as classNames } from 'classnames'; +export * from './with-theme'; +export * from './utils'; +export * from './foundation-component'; +export * from './component'; +export * from './portal'; + +export type WithThemeProps = _WithThemeProps; diff --git a/packages/mc-react-ui-components/src/lib/base/portal.tsx b/packages/mc-react-ui-components/src/lib/base/portal.tsx new file mode 100644 index 00000000..9c7225fa --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/portal.tsx @@ -0,0 +1,54 @@ +import React, { useRef, useEffect, useState } from 'react'; +import ReactDOM from 'react-dom'; + +const PORTAL_ID = 'rmwcPortal'; + +export type PortalPropT = Element | string | boolean | undefined | null; + +export function Portal() { + const el = useRef(document.createElement('div')); + + return
    ; +} + +export function PortalChild({ + children, + renderTo +}: { + children: React.ReactNode; + renderTo?: PortalPropT; +}) { + const [portalEl, setPortalEl] = useState(); + + useEffect(() => { + let element: Element | undefined = undefined; + + if (renderTo === true) { + element = document.getElementById(PORTAL_ID) || undefined; + + !element && + console.warn( + 'No default Portal found. Did you forget to include it in the root of your app? `import { Portal } from "@rmwc/base";`' + ); + } else if (typeof renderTo === 'string') { + element = document.querySelector(renderTo) || undefined; + + !element && + console.warn( + `The selector you provided for renderToPortal "${renderTo}" didn't find any elements.` + ); + } else if (renderTo instanceof Element) { + element = renderTo; + } + + if (element !== portalEl) { + setPortalEl(element); + } + }, [renderTo, portalEl]); + + if (portalEl) { + return ReactDOM.createPortal(children, portalEl); + } + + return <>{children}; +} diff --git a/packages/mc-react-ui-components/src/lib/base/test-polyfill.tsx b/packages/mc-react-ui-components/src/lib/base/test-polyfill.tsx new file mode 100644 index 00000000..ba9bad43 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/test-polyfill.tsx @@ -0,0 +1,35 @@ +export default () => { + if ((global as any)['window']) { + const hyperform = require('hyperform'); + hyperform(window); + + Object.defineProperty((window as any)['HTMLElement'].prototype, 'dataset', { + writable: true, + value: {} + }); + + if (!(window as any)['HTMLCanvasElement']) { + Object.defineProperty( + (window as any)['HTMLCanvasElement'].prototype, + 'getContext', + { + writable: true, + value: () => ({ + font: '', + measureText: () => ({ width: 0 }) + }) + } + ); + } + + if (!(window as any).scrollTo) { + Object.defineProperty(window as any, 'scrollTo', { + writable: true, + value: () => {} + }); + } + + (window as any)['MutationObserver'] = + (window as any)['MutationObserver'] || require('mutation-observer'); + } +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/apply-passive.tsx b/packages/mc-react-ui-components/src/lib/base/utils/apply-passive.tsx new file mode 100644 index 00000000..cb6ac128 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/apply-passive.tsx @@ -0,0 +1,59 @@ +/** + * @license + * Copyright 2019 Google Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +/** + * Stores result from applyPassive to avoid redundant processing to detect + * passive event listener support. + */ +var supportsPassive_: boolean; +/** + * Determine whether the current browser supports passive event listeners, and + * if so, use them. + */ +export function applyPassive(globalObj?: any, forceRefresh?: any) { + if (globalObj === void 0) { + globalObj = window; + } + if (forceRefresh === void 0) { + forceRefresh = false; + } + if (supportsPassive_ === undefined || forceRefresh) { + var isSupported_1 = false; + try { + globalObj.document.addEventListener( + 'test', + function() { + return undefined; + }, + { + get passive() { + isSupported_1 = true; + return isSupported_1; + } + } + ); + } catch (e) {} // tslint:disable-line:no-empty cannot throw error due to tests. tslint also disables console.log. + supportsPassive_ = isSupported_1; + } + return supportsPassive_ ? { passive: true } : false; +} +//# sourceMappingURL=events.js.map diff --git a/packages/mc-react-ui-components/src/lib/base/utils/data-table-context.tsx b/packages/mc-react-ui-components/src/lib/base/utils/data-table-context.tsx new file mode 100644 index 00000000..03f1e4f2 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/data-table-context.tsx @@ -0,0 +1,13 @@ +/** + * This module is exported from base so it doesn't create a dependency on data table to modules that might consume it + */ +import React from 'react'; + +/** Are we inside of a data table */ +export const DataTableContext = React.createContext(false); + +/** + * Context to allow us to let our rows in the header know to use the right classes. + * This method is being used to avoid a breaking change from RMWC to MDC tables and also to inform other components of styles needed. + */ +export const DataTableHeadContext = React.createContext(false); diff --git a/packages/mc-react-ui-components/src/lib/base/utils/debounce.tsx b/packages/mc-react-ui-components/src/lib/base/utils/debounce.tsx new file mode 100644 index 00000000..27f966cb --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/debounce.tsx @@ -0,0 +1,15 @@ +export const debounce = function(func: Function, wait: number) { + var timeout: NodeJS.Timeout | null; + return function() { + // @ts-ignore + var context = this, + args = arguments; + var later = function() { + timeout = null; + func.apply(context, args); + }; + + timeout !== null && clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/deprecation.tsx b/packages/mc-react-ui-components/src/lib/base/utils/deprecation.tsx new file mode 100644 index 00000000..66cd96b9 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/deprecation.tsx @@ -0,0 +1,56 @@ +export type DeprecateT = { + [oldPropName: string]: string | [string, (value: any) => void]; +}; + +export const deprecationWarning = (message: string) => { + if (process && process.env && process.env.NODE_ENV !== 'production') { + console.warn(`RMWC Deprecation Warning: ${message}`); + } +} + +export const handleDeprecations = ( + props: any, + deprecate: DeprecateT, + displayName: string +) => { + props = { ...props }; + for (const oldPropName in deprecate) { + const newProp = deprecate[oldPropName]; + let newPropName; + let transformProp = (value: any) => value; + + if (Array.isArray(newProp)) { + newPropName = newProp[0]; + transformProp = newProp[1]; + } else { + newPropName = newProp; + } + + if (props[oldPropName] !== undefined) { + if (newPropName === '') { + /* istanbul ignore next */ + deprecationWarning( + `${displayName || + ''} component prop '${oldPropName}' has been removed from and is no longer a valid prop.` + ); + } else { + props[newPropName] = transformProp(props[oldPropName]); + let propTransformMessage = ''; + if (props[newPropName] !== props[oldPropName]) { + propTransformMessage = ` The old value has also been converted from '${ + props[oldPropName] + }' to '${props[newPropName]}'`; + } + + /* istanbul ignore next */ + deprecationWarning( + `${displayName || + ''} component prop '${oldPropName}' has been replaced with '${newPropName}'. ${propTransformMessage}` + ); + } + + delete props[oldPropName]; + } + } + return props; +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/emitter.tsx b/packages/mc-react-ui-components/src/lib/base/utils/emitter.tsx new file mode 100644 index 00000000..4e6a3c1a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/emitter.tsx @@ -0,0 +1,46 @@ +export class EventEmitter { + events_: { [evtName: string]: Array } = {}; + on(event: string, cb: Function) { + this.events_ = this.events_ || {}; + this.events_[event] = this.events_[event] || []; + this.events_[event].push(cb); + } + off(event: string, cb: Function) { + this.events_ = this.events_ || {}; + if (event in this.events_ === false) return; + this.events_[event].splice(this.events_[event].indexOf(cb), 1); + } + trigger(event: string, ...args: any) { + this.events_ = this.events_ || {}; + if (event in this.events_ === false) return; + for (var i = 0; i < this.events_[event].length; i++) { + this.events_[event][i].apply( + this, + Array.prototype.slice.call(arguments, 1) + ); + } + } +} + +export class ArrayEmitter extends EventEmitter { + array: T[] = []; + push(...items: T[]) { + const rVal = this.array.push(...items); + this.trigger('change'); + return rVal; + } + empty() { + this.array.length = 0; + this.trigger('change'); + } + remove(item: T) { + const index = this.array.indexOf(item); + + if (index > -1) { + this.array.splice(index, 1); + this.trigger('change'); + return true; + } + return false; + } +} diff --git a/packages/mc-react-ui-components/src/lib/base/utils/empty-client-rect.tsx b/packages/mc-react-ui-components/src/lib/base/utils/empty-client-rect.tsx new file mode 100644 index 00000000..24a3de20 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/empty-client-rect.tsx @@ -0,0 +1,8 @@ +export const emptyClientRect: ClientRect = { + bottom: 0, + height: 0, + left: 0, + right: 0, + top: 0, + width: 0 +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/events-map.tsx b/packages/mc-react-ui-components/src/lib/base/utils/events-map.tsx new file mode 100644 index 00000000..47f12099 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/events-map.tsx @@ -0,0 +1,88 @@ +/* istanbul ignore file */ + +export const eventsMap = { + blur: 'onBlur', + cancel: 'onCancel', + click: 'onClick', + close: 'onClose', + contextmenu: 'onContextMenu', + copy: 'onCopy', + cut: 'onCut', + auxclick: 'onAuxClick', + doubleclick: 'onDoubleClick', + dragend: 'onDragEnd', + dragstart: 'onDragStart', + drop: 'onDrop', + focus: 'onFocus', + input: 'onInput', + invalid: 'onInvalid', + keydown: 'onKeyDown', + keypress: 'onKeyPress', + keyup: 'onKeyUp', + mousedown: 'onMouseDown', + mouseup: 'onMouseUp', + paste: 'onPaste', + pause: 'onPause', + play: 'onPlay', + pointercancel: 'onPointerCancel', + pointerdown: 'onPointerDown', + pointerup: 'onPointerUp', + ratechange: 'onRateChange', + reset: 'onReset', + seeked: 'onSeeked', + submit: 'onSubmit', + touchcancel: 'onTouchCancel', + touchend: 'onTouchEnd', + touchstart: 'onTouchStart', + volumechange: 'onVolumeChange', + abort: 'onAbort', + animationend: 'onAnimationEnd', + animationiteration: 'onAnimationIteration', + animationstart: 'onAnimationStart', + canplay: 'onCanPlay', + canplaythrough: 'onCanPlayThrough', + drag: 'onDrag', + dragenter: 'onDragEnter', + dragexit: 'onDragExit', + dragleave: 'onDragLeave', + dragover: 'onDragOver', + durationchange: 'onDurationChange', + emptied: 'onEmptied', + encrypted: 'onEncrypted', + ended: 'onEnded', + error: 'onError', + gotpointercapture: 'onGotPointerCapture', + load: 'onLoad', + loadeddata: 'onLoadedData', + loadedmetadata: 'onLoadedMetadata', + loadstart: 'onLoadStart', + lostpointercapture: 'onLostPointerCapture', + mousemove: 'onMouseMove', + mouseout: 'onMouseOut', + mouseover: 'onMouseOver', + playing: 'onPlaying', + pointermove: 'onPointerMove', + pointerout: 'onPointerOut', + pointerover: 'onPointerOver', + progress: 'onProgress', + scroll: 'onScroll', + seeking: 'onSeeking', + stalled: 'onStalled', + suspend: 'onSuspend', + timeupdate: 'onTimeUpdate', + toggle: 'onToggle', + touchmove: 'onTouchMove', + transitionend: 'onTransitionEnd', + waiting: 'onWaiting', + wheel: 'onWheel', + mouseenter: 'onMouseEnter', + mouseleave: 'onMouseLeave', + pointerenter: 'onPointerEnter', + pointerleave: 'onPointerLeave', + change: 'onChange', + select: 'onSelect', + beforeinput: 'onBeforeInput', + compositionend: 'onCompositionEnd', + compositionstart: 'onCompositionStart', + compositionupdate: 'onCompositionUpdate' +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/focus-trap.tsx b/packages/mc-react-ui-components/src/lib/base/utils/focus-trap.tsx new file mode 100644 index 00000000..df88d7cb --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/focus-trap.tsx @@ -0,0 +1,46 @@ +// @ts-ignore MDC botched ES5 importing +import * as domUtils from '@material/dom/dist/mdc.dom.js'; + +export interface FocusOptions { + initialFocusEl?: HTMLElement; + skipInitialFocus?: boolean; +} + +export declare class FocusTrap { + private readonly root; + private readonly options; + private elFocusedBeforeTrapFocus; + constructor(root: HTMLElement, options?: FocusOptions); + /** + * Traps focus in `root`. Also focuses on either `initialFocusEl` if set; + * otherwises sets initial focus to the first focusable child element. + */ + trapFocus(): void; + /** + * Releases focus from `root`. Also restores focus to the previously focused + * element. + */ + releaseFocus(): void; + /** + * Wraps tab focus within `el` by adding two hidden sentinel divs which are + * used to mark the beginning and the end of the tabbable region. When + * focused, these sentinel elements redirect focus to the first/last + * children elements of the tabbable region, ensuring that focus is trapped + * within that region. + */ + private wrapTabFocus; + /** + * Focuses on `initialFocusEl` if defined and a child of the root element. + * Otherwise, focuses on the first focusable child element of the root. + */ + private focusInitialElement; + private getFocusableElements; + private createSentinel; +} + +const _FocusTrap = domUtils.focusTrap.FocusTrap; + +export const focusTrapFactory = ( + el: HTMLElement, + focusOptions?: FocusOptions +): FocusTrap => new _FocusTrap(el, focusOptions); diff --git a/packages/mc-react-ui-components/src/lib/base/utils/get-display-name.tsx b/packages/mc-react-ui-components/src/lib/base/utils/get-display-name.tsx new file mode 100644 index 00000000..730b4013 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/get-display-name.tsx @@ -0,0 +1,12 @@ +export const getDisplayName = (childInput: any): string => { + const child: any = Array.isArray(childInput) ? childInput[0] : childInput; + const displayName = + child?.type?.displayName || + child?.constructor?.displayName || + child?.displayName || + child?.name || + child?.constructor?.name || + 'Unknown'; + + return displayName; +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/hooks.tsx b/packages/mc-react-ui-components/src/lib/base/utils/hooks.tsx new file mode 100644 index 00000000..ff6453a5 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/hooks.tsx @@ -0,0 +1,15 @@ +import { useState } from 'react'; +import { randomId } from './random-id'; + +export const useId = ( + prefix: string, + props: { [key: string]: any } +): string => { + const idToUse = props.id + ? props.id + : props.label + ? `${prefix}-${props.label}` + : randomId(prefix); + const [id] = useState(idToUse); + return id; +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/index.tsx b/packages/mc-react-ui-components/src/lib/base/utils/index.tsx new file mode 100644 index 00000000..79b56d21 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/index.tsx @@ -0,0 +1,16 @@ +export * from './debounce'; +export * from './deprecation'; +export * from './events-map'; +export * from './focus-trap'; +export * from './hooks'; +export * from './ponyfills'; +export * from './random-id'; +export * from './strings'; +export * from './wrap-child'; +export * from './emitter'; +export * from './apply-passive'; +export * from './get-display-name'; +export * from './empty-client-rect'; +export * from './data-table-context'; +export * from './trigger-window-resize'; +export * from './raf'; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/ponyfills.tsx b/packages/mc-react-ui-components/src/lib/base/utils/ponyfills.tsx new file mode 100644 index 00000000..44a16954 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/ponyfills.tsx @@ -0,0 +1,30 @@ +export const closest = ( + element: HTMLElement | EventTarget | null, + selector: string +): HTMLElement | null => { + if (element instanceof Element) { + /* istanbul ignore else */ + if (element && element.closest) { + return element.closest(selector) as HTMLElement | null; + } else { + let el: HTMLElement | null = element; + while (el) { + if (matches(el, selector)) { + return el; + } + el = el.parentElement; + } + } + } + return null; +}; + +export const matches = (element: HTMLElement, selector: string) => { + /* istanbul ignore next */ + const nativeMatches = + element.matches || + element.webkitMatchesSelector || + // @ts-ignore + element.msMatchesSelector; + return nativeMatches.call(element, selector); +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/raf.tsx b/packages/mc-react-ui-components/src/lib/base/utils/raf.tsx new file mode 100644 index 00000000..261fe3ed --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/raf.tsx @@ -0,0 +1,14 @@ +/** + * A helper for when we have multiple requestion animation frames + * Usage: + * raf(() => doSomething, 3); + */ +export const raf = ( + callback: () => void, + frames: number = 1, + _iteration = 1 +) => { + window.requestAnimationFrame(() => { + _iteration >= frames ? callback() : raf(callback, frames, _iteration + 1); + }); +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/random-id.tsx b/packages/mc-react-ui-components/src/lib/base/utils/random-id.tsx new file mode 100644 index 00000000..ff64f751 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/random-id.tsx @@ -0,0 +1,11 @@ +/** + * Generates a pseudo random string for DOM ids + * Will return 'test' in the NODE test-env so things like storyshots doesnt break. + */ +export const randomId = (prefix?: string): string => { + const id = + process.env.NODE_ENV === 'test' + ? 'test' + : (Math.random() + Math.random() + 1).toString(36).substring(2); + return `${prefix}-${id}`; +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/strings.tsx b/packages/mc-react-ui-components/src/lib/base/utils/strings.tsx new file mode 100644 index 00000000..38f7f639 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/strings.tsx @@ -0,0 +1,6 @@ +export const toCamel = (str: string) => + str.replace(/(-[a-z])/g, $1 => $1.toUpperCase().replace('-', '')); + +export const toDashCase = (str: string) => { + return str.replace(/([A-Z])/g, $1 => '-' + $1.toLowerCase()); +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/test-utils.tsx b/packages/mc-react-ui-components/src/lib/base/utils/test-utils.tsx new file mode 100644 index 00000000..072e12e2 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/test-utils.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { act } from 'react-dom/test-utils'; + +export const mountHook = (hook: () => void) => { + mount(); +}; + +function HookWrapper({ hook }: { hook: () => void }) { + hook(); + return <>; +} + +export const wait = (timeout = 0) => + new Promise(resolve => { + setTimeout(resolve, timeout); + }); + +export const actWait = async (timeout = 0) => { + await act(async () => { + await wait(timeout); + }); +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/trigger-window-resize.tsx b/packages/mc-react-ui-components/src/lib/base/utils/trigger-window-resize.tsx new file mode 100644 index 00000000..3ef7e38c --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/trigger-window-resize.tsx @@ -0,0 +1,3 @@ +export const triggerWindowResize = () => { + window.dispatchEvent(new Event('resize')); +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/use-knob.tsx b/packages/mc-react-ui-components/src/lib/base/utils/use-knob.tsx new file mode 100644 index 00000000..87fef532 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/use-knob.tsx @@ -0,0 +1,25 @@ +/* istanbul ignore file */ +import { useState } from 'react'; +import * as knobTypes from '@storybook/addon-knobs'; + +import { manager } from '@storybook/addon-knobs/dist/registerKnobs'; + +export const useKnob = ( + knobType: keyof typeof knobTypes, + name: string, + defaultValue: any +) => { + const knobFunc = knobTypes[knobType] as any; + const [stateValue, _stateSetter] = useState(defaultValue); + const knobValue = knobFunc(name, stateValue); + + const stateSetter = (value: any) => { + _stateSetter(value); + manager.knob(name, stateValue); + }; + + if (knobValue !== stateValue) { + stateSetter(knobValue); + } + return [stateValue, stateSetter]; +}; diff --git a/packages/mc-react-ui-components/src/lib/base/utils/wrap-child.tsx b/packages/mc-react-ui-components/src/lib/base/utils/wrap-child.tsx new file mode 100644 index 00000000..7fb43e6b --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/utils/wrap-child.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import classNames from 'classnames'; + +export const wrapChild = (props: { [key: string]: any }) => { + const child = React.Children.only(props.children); + return React.cloneElement(child, { + ...props, + ...child.props, + className: classNames(props.className, child.props.className), + style: { ...child.props.style, ...props.style } + }); +}; diff --git a/packages/mc-react-ui-components/src/lib/base/with-theme.tsx b/packages/mc-react-ui-components/src/lib/base/with-theme.tsx new file mode 100644 index 00000000..d82e8e71 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/base/with-theme.tsx @@ -0,0 +1,42 @@ +import * as RMWC from '../types'; +import React from 'react'; + +import classNames from 'classnames'; +import { toDashCase } from './utils/strings'; + +export interface WithThemeProps { + theme?: RMWC.ThemePropT; + className?: string; +} + +/** + * Actually parses the theme options + */ +export const parseThemeOptions = ( + theme: undefined | string | Array +): string[] => { + const themeItems = Array.isArray(theme) ? theme : [theme]; + return themeItems + .filter((v) => !!v) + .map((v) => `mdc-theme--${toDashCase(v!)}`); +}; + +/** + * HOC that adds themeability to any component + */ +export const withTheme =

    ( + Component: React.ComponentType +): React.ComponentType

    => { + const HOC = ({ theme, className, ...rest }: WithThemeProps) => { + if (theme) { + const classes = classNames(className, parseThemeOptions(theme)); + return ; + } + + return ; + }; + + HOC.displayName = 'withTheme'; + + return HOC; +}; diff --git a/packages/mc-react-ui-components/src/lib/button/README.md b/packages/mc-react-ui-components/src/lib/button/README.md new file mode 100644 index 00000000..3fa0c4d7 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/button/README.md @@ -0,0 +1,86 @@ +# Buttons + +Buttons communicate the action that will occur when the user touches them. + +- Module **@rmwc/button** +- Import styles: + - Using CSS Loader + - import '@rmwc/button/styles'; + - Or include stylesheets + - **'@material/button/dist/mdc.button.css'** + - **'@rmwc/@rmwc/icon/icon.css'** + - **'@material/ripple/dist/mdc.ripple.css'** +- MDC Docs: [https://material.io/develop/web/components/buttons/](https://material.io/develop/web/components/buttons/) + +```jsx + +``` + +## Button +The Button component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `children` | `React.ReactNode` | Content specified as children. | +| `danger` | `undefined \| false \| true` | Used to indicate a dangerous action. | +| `dense` | `undefined \| false \| true` | Make the Button dense. | +| `disabled` | `undefined \| false \| true` | Make the button disabled | +| `icon` | `RMWC.IconPropT` | An Icon for the Button | +| `label` | `React.ReactNode \| any` | Content specified as a label prop. | +| `outlined` | `undefined \| false \| true` | Make the button outlined. | +| `raised` | `undefined \| false \| true` | Make the Button raised. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | +| `trailingIcon` | `RMWC.IconPropT` | A trailing icon for the Button | +| `unelevated` | `undefined \| false \| true` | Make the button unelevated. | + + diff --git a/packages/mc-react-ui-components/src/lib/button/button-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/button/button-ssr.spec.tsx new file mode 100644 index 00000000..3cb1e6d4 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/button/button-ssr.spec.tsx @@ -0,0 +1,13 @@ +/** + * @jest-environment node + */ + +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Button } from './'; + +describe('Button SSR', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/button/button.spec.tsx b/packages/mc-react-ui-components/src/lib/button/button.spec.tsx new file mode 100644 index 00000000..7828f656 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/button/button.spec.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { Button } from './'; + +describe('Button', () => { + it('renders', () => { + const btn = mount(); + }); + + it('can be raised', () => { + const btn = mount( +// )); diff --git a/packages/mc-react-ui-components/src/lib/button/generated-examples.json b/packages/mc-react-ui-components/src/lib/button/generated-examples.json new file mode 100644 index 00000000..f6de7eee --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/button/generated-examples.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/button/generated-props.json b/packages/mc-react-ui-components/src/lib/button/generated-props.json new file mode 100644 index 00000000..71e06abc --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/button/generated-props.json @@ -0,0 +1,315 @@ +{ + "npm": {}, + "typescript": { + "ButtonProps": { + "documentation": { + "contents": [ + "

    The Button component.

    \n" + ], + "contentsRaw": "The Button component.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "ButtonProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L20", + "extends": [ + "WithRippleProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Content specified as children.

    \n" + ], + "contentsRaw": "Content specified as children.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L36", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Used to indicate a dangerous action.

    \n" + ], + "contentsRaw": "Used to indicate a dangerous action.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "danger", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L32", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button dense.

    \n" + ], + "contentsRaw": "Make the Button dense.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L22", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the button disabled

    \n" + ], + "contentsRaw": "Make the button disabled", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L30", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    An Icon for the Button

    \n" + ], + "contentsRaw": "An Icon for the Button", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L38", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Content specified as a label prop.

    \n" + ], + "contentsRaw": "Content specified as a label prop.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L34", + "type": "React.ReactNode | any" + }, + { + "documentation": { + "contents": [ + "

    Make the button outlined.

    \n" + ], + "contentsRaw": "Make the button outlined.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "outlined", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L28", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button raised.

    \n" + ], + "contentsRaw": "Make the Button raised.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "raised", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L24", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/button/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + }, + { + "documentation": { + "contents": [ + "

    A trailing icon for the Button

    \n" + ], + "contentsRaw": "A trailing icon for the Button", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "trailingIcon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L40", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Make the button unelevated.

    \n" + ], + "contentsRaw": "Make the button unelevated.", + "metadata": {} + }, + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "unelevated", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L26", + "type": "undefined | false | true" + } + ] + }, + "ButtonHTMLProps": { + "fileName": "src/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "ButtonHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/button/index.tsx#L43", + "type": "RMWC.HTMLProps" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/button/index.tsx b/packages/mc-react-ui-components/src/lib/button/index.tsx new file mode 100644 index 00000000..294b7570 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/button/index.tsx @@ -0,0 +1,122 @@ +import * as RMWC from '../types'; +import React from 'react'; + +import { withRipple } from '../ripple'; +import { Icon, IconProps } from '../icon'; +import { + Tag, + useClassNames, + createComponent, + createMemoComponent +} from '../base'; + +/********************************************************************* + * Button + *********************************************************************/ + +/** + * The Button component. + */ +export interface ButtonProps extends RMWC.WithRippleProps { + /** Make the Button dense. */ + dense?: boolean; + /** Make the Button raised. */ + raised?: boolean; + /** Make the button unelevated. */ + unelevated?: boolean; + /** Make the button outlined. */ + outlined?: boolean; + /** Make the button disabled */ + disabled?: boolean; + /** Used to indicate a dangerous action. */ + danger?: boolean; + /** Content specified as a label prop. */ + label?: React.ReactNode | any; + /** Content specified as children. */ + children?: React.ReactNode; + /** An Icon for the Button */ + icon?: RMWC.IconPropT; + /** A trailing icon for the Button */ + trailingIcon?: RMWC.IconPropT; +} + +export type ButtonHTMLProps = RMWC.HTMLProps; + +/** + * The Button component. + */ +export const Button: RMWC.ComponentType< + ButtonProps, + ButtonHTMLProps, + 'button' +> = withRipple({ + surface: false +})( + createComponent(function Button(props, ref) { + const { + dense, + raised, + unelevated, + outlined, + danger, + icon, + label, + trailingIcon, + children, + ...rest + } = props; + + const className = useClassNames(props, [ + 'mdc-button', + { + 'mdc-button--dense': dense, + 'mdc-button--raised': raised, + 'mdc-button--unelevated': unelevated, + 'mdc-button--outlined': outlined + } + ]); + + if (danger) { + const existingStyle = rest.style || {}; + const dangerStyle = { + '--mdc-theme-primary': 'var(--mdc-theme-error)', + '--mdc-theme-on-primary': 'var(--mdc-theme-on-error)' + }; + rest.style = { + ...dangerStyle, + ...existingStyle + }; + } + + return ( + + + {!!icon && } + + {label} + {children} + + {!!trailingIcon && } + + ); + }) +); + +/********************************************************************* + * Bits + *********************************************************************/ + +const ButtonRipple = React.memo(function ButtonRipple() { + return
    ; +}); + +interface ButtonIconProps extends IconProps {} + +/** An icon that goes inside of buttons. This is an instance of the Icon component. */ +const ButtonIcon = createMemoComponent(function ButtonIcon( + props, + ref +) { + const className = useClassNames(props, ['mdc-button__icon']); + return ; +}); diff --git a/packages/mc-react-ui-components/src/lib/button/styles.tsx b/packages/mc-react-ui-components/src/lib/button/styles.tsx new file mode 100644 index 00000000..3008733d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/button/styles.tsx @@ -0,0 +1,3 @@ +import '@material/button/dist/mdc.button.css'; +import '../icon/styles'; +import '../ripple/styles'; diff --git a/packages/mc-react-ui-components/src/lib/card/README.md b/packages/mc-react-ui-components/src/lib/card/README.md new file mode 100644 index 00000000..642b7e39 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/card/README.md @@ -0,0 +1,256 @@ +# Cards + +Cards contain content and actions about a single subject. + +- Module **@rmwc/card** +- Import styles: + - Using CSS Loader + - import '@rmwc/card/styles'; + - Or include stylesheets + - **'@material/card/dist/mdc.card.css'** + - **'@material/button/dist/mdc.button.css'** + - **'@material/icon-button/dist/mdc.icon-button.css'** +- MDC Docs: [https://material.io/develop/web/components/cards/](https://material.io/develop/web/components/cards/) + +## Fully Featured Example + +```jsx + + + +
    + + Our Changing Planet + + + by Kurt Wagner + + + Visit ten places on our planet that are undergoing the biggest + changes today. + +
    +
    + + + Read + Bookmark + + + + + + + +
    +``` + +## Article Preview Example + +```jsx + + + Headlines + + + + + +
    + + Copper on the rise + + + Copper price soars amid global market optimism and increased + demand. + +
    +
    + + + + +
    + + U.S. tech startups rebound + + + Favorable business conditions have allowed startups to secure + more fundraising deals compared to last year. + +
    +
    + + + + +
    + + Asia's clean energy ambitions + + + China plans to invest billions of dollars for the development of + over 300 clean energy projects in Southeast Asia. + +
    +
    + + + + + + +
    +``` + +## Mini Card Example + +```jsx + + + + + + Vacation Photos + + + + + + + + + + + + +``` + +## Card +A Card Component + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `outlined` | `undefined \| false \| true` | Removes the shadow and displays a hairline outline instead | + + +## CardPrimaryAction +The main clickable area for the primary content of the card + + + +## CardMedia +Media area that displays a custom background-image with background-size: cover + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `sixteenByNine` | `undefined \| false \| true` | Automatically scales the media area’s height according to its width, maintaining a 16:9 aspect ratio | +| `square` | `undefined \| false \| true` | Automatically scales the media area’s height to equal its width | + + +## CardMediaContent +An absolutely-positioned box the same size as the media area, for displaying a title or icon on top of the background-image + + + +## CardActions +Row containing action buttons and/or icons + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `fullBleed` | `undefined \| false \| true` | Removes the action area’s padding and causes its only child (an mdc-card__action element) to consume 100% of the action area’s width | + + +## CardActionButtons +A group of action buttons, displayed on the left side of the card (in LTR), adjacent to CardActionIcons + + + +## CardActionIcons +A group of supplemental action icons, displayed on the right side of the card (in LTR), adjacent to CardActionButtons + + + +## CardActionIcon +A card action Icon + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `checked` | `undefined \| false \| true` | Controls the on / off state of the a toggleable button. | +| `disabled` | `undefined \| false \| true` | Makes the button disabled | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. Only for Toggleable buttons. | +| `icon` | `RMWC.IconPropT` | Icon for the button | +| `label` | `undefined \| string` | Apply an aria label. | +| `onChange` | `undefined \| (evt: IconButtonOnChangeEventT) => void` | An onChange callback that receives a custom event. evt.detail = { isOn: boolean } | +| `onIcon` | `RMWC.IconPropT` | If specified, renders a toggle with this icon as the on state. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | + + +## CardActionButton +A card action Button + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `children` | `React.ReactNode` | Content specified as children. | +| `danger` | `undefined \| false \| true` | Used to indicate a dangerous action. | +| `dense` | `undefined \| false \| true` | Make the Button dense. | +| `disabled` | `undefined \| false \| true` | Make the button disabled | +| `icon` | `RMWC.IconPropT` | An Icon for the Button | +| `label` | `React.ReactNode \| any` | Content specified as a label prop. | +| `outlined` | `undefined \| false \| true` | Make the button outlined. | +| `raised` | `undefined \| false \| true` | Make the Button raised. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | +| `trailingIcon` | `RMWC.IconPropT` | A trailing icon for the Button | +| `unelevated` | `undefined \| false \| true` | Make the button unelevated. | + + diff --git a/packages/mc-react-ui-components/src/lib/card/card-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/card/card-ssr.spec.tsx new file mode 100644 index 00000000..9e9d7df1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/card/card-ssr.spec.tsx @@ -0,0 +1,48 @@ +/** + * @jest-environment node + */ + +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { + Card, + CardPrimaryAction, + CardMedia, + CardMediaContent, + CardActions, + CardActionButtons, + CardActionIcons, + CardActionButton, + CardActionIcon +} from './'; + +describe('Card', () => { + it('renders', () => { + mount( + + + +
    +

    Our Changing Planet

    +

    by Kurt Wagner

    +
    + Visit ten places on our planet that are undergoing the biggest + changes today. +
    +
    +
    + + + Read + Bookmark + + + + + + + +
    + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/card/card.spec.tsx b/packages/mc-react-ui-components/src/lib/card/card.spec.tsx new file mode 100644 index 00000000..ca20a1e4 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/card/card.spec.tsx @@ -0,0 +1,63 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { + Card, + CardPrimaryAction, + CardMedia, + CardMediaContent, + CardActions, + CardActionButtons, + CardActionIcons, + CardActionButton, + CardActionIcon +} from './'; + +describe('Card', () => { + it('renders', () => { + mount( + + + +
    +

    Our Changing Planet

    +

    by Kurt Wagner

    +
    + Visit ten places on our planet that are undergoing the biggest + changes today. +
    +
    +
    + + + Read + Bookmark + Foo + + + + + + + + +
    + ); + }); + + it('can have custom classes', () => { + [ + Card, + CardMedia, + CardMediaContent, + CardActionButtons, + CardActionIcons, + CardActions, + CardActionButton, + CardActionIcon, + CardPrimaryAction + ].forEach((Component: any) => { + const el = mount(); + expect(!!~el.html().search('my-custom-classname')).toEqual(true); + }); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/card/card.story.tsx b/packages/mc-react-ui-components/src/lib/card/card.story.tsx new file mode 100644 index 00000000..11b5e3f9 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/card/card.story.tsx @@ -0,0 +1,161 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { +// Card, +// CardPrimaryAction, +// CardMedia, +// CardMediaContent, +// CardActions, +// CardActionButtons, +// CardActionIcons, +// CardActionIcon, +// CardActionButton +// } from './'; + +// import { Typography } from '../typography'; +// import { ListDivider } from '../list'; +// import { Icon } from '../icon'; + +// storiesOf('Cards', module) +// .add('Full Featured', () => ( +// +// +// +//
    +// +// Our Changing Planet +// +// +// by Kurt Wagner +// +// +// Visit ten places on our planet that are undergoing the biggest +// changes today. +// +//
    +//
    +// +// +// Read +// Bookmark +// +// +// +// +// +// +// +//
    +// )) +// .add('Article', () => ( +// +// +// Headlines +// + +// + +// +//
    +// +// Copper on the rise +// +// +// Copper price soars amid global market optimism and increased demand. +// +//
    +//
    + +// + +// +//
    +// +// U.S. tech startups rebound +// +// +// Favorable business conditions have allowed startups to secure more +// fundraising deals compared to last year. +// +//
    +//
    + +// + +// +//
    +// +// Asia's clean energy ambitions +// +// +// China plans to invest billions of dollars for the development of +// over 300 clean energy projects in Southeast Asia. +// +//
    +//
    + +// + +// +// +// All Business Headlines +// +// +//
    +// )) +// .add('Mini', () => ( +// +// +// +// +// +// Vacation Photos +// +// +// +// +// +// +// +// +// +// +// +// +// )); diff --git a/packages/mc-react-ui-components/src/lib/card/generated-examples.json b/packages/mc-react-ui-components/src/lib/card/generated-examples.json new file mode 100644 index 00000000..b5315177 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/card/generated-examples.json @@ -0,0 +1 @@ +["\n \n \n
    \n \n Our Changing Planet\n \n \n by Kurt Wagner\n \n \n Visit ten places on our planet that are undergoing the biggest\n changes today.\n \n
    \n
    \n \n \n Read\n Bookmark\n \n \n \n \n \n \n \n
    ","\n \n Headlines\n \n\n \n\n \n
    \n \n Copper on the rise\n \n \n Copper price soars amid global market optimism and increased\n demand.\n \n
    \n
    \n\n \n\n \n
    \n \n U.S. tech startups rebound\n \n \n Favorable business conditions have allowed startups to secure\n more fundraising deals compared to last year.\n \n
    \n
    \n\n \n\n \n
    \n \n Asia's clean energy ambitions\n \n \n China plans to invest billions of dollars for the development of\n over 300 clean energy projects in Southeast Asia.\n \n
    \n
    \n\n \n\n \n \n \n
    ","\n \n \n \n \n Vacation Photos\n \n \n \n \n \n \n \n \n \n \n \n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/card/generated-props.json b/packages/mc-react-ui-components/src/lib/card/generated-props.json new file mode 100644 index 00000000..1a8bea46 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/card/generated-props.json @@ -0,0 +1,793 @@ +{ + "npm": {}, + "typescript": { + "CardProps": { + "documentation": { + "contents": [ + "

    A Card Component

    \n" + ], + "contentsRaw": "A Card Component", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L11", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Removes the shadow and displays a hairline outline instead

    \n" + ], + "contentsRaw": "Removes the shadow and displays a hairline outline instead", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "outlined", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L13", + "type": "undefined | false | true" + } + ] + }, + "CardMediaProps": { + "documentation": { + "contents": [ + "

    Media area that displays a custom background-image with background-size: cover

    \n" + ], + "contentsRaw": "Media area that displays a custom background-image with background-size: cover", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardMediaProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L29", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Automatically scales the media area’s height according to its width, maintaining a 16:9 aspect ratio

    \n" + ], + "contentsRaw": "Automatically scales the media area’s height according to its width, maintaining a 16:9 aspect ratio", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "sixteenByNine", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L33", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Automatically scales the media area’s height to equal its width

    \n" + ], + "contentsRaw": "Automatically scales the media area’s height to equal its width", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "square", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L31", + "type": "undefined | false | true" + } + ] + }, + "CardMediaContentProps": { + "documentation": { + "contents": [ + "

    An absolutely-positioned box the same size as the media area, for displaying a title or icon on top of the background-image

    \n" + ], + "contentsRaw": "An absolutely-positioned box the same size as the media area, for displaying a title or icon on top of the background-image", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardMediaContentProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L53", + "methods": [], + "properties": [] + }, + "CardPrimaryActionProps": { + "documentation": { + "contents": [ + "

    The main clickable area for the primary content of the card

    \n" + ], + "contentsRaw": "The main clickable area for the primary content of the card", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardPrimaryActionProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L64", + "methods": [], + "properties": [] + }, + "CardActionsProps": { + "documentation": { + "contents": [ + "

    Row containing action buttons and/or icons

    \n" + ], + "contentsRaw": "Row containing action buttons and/or icons", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardActionsProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L80", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Removes the action area’s padding and causes its only child (an mdc-card__action element) to consume 100% of the action area’s width

    \n" + ], + "contentsRaw": "Removes the action area’s padding and causes its only child (an mdc-card__action element) to consume 100% of the action area’s width", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "fullBleed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L82", + "type": "undefined | false | true" + } + ] + }, + "CardActionButtonsProps": { + "documentation": { + "contents": [ + "

    A group of action buttons, displayed on the left side of the card (in LTR), adjacent to CardActionIcons

    \n" + ], + "contentsRaw": "A group of action buttons, displayed on the left side of the card (in LTR), adjacent to CardActionIcons", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardActionButtonsProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L98", + "methods": [], + "properties": [] + }, + "CardActionIconsProps": { + "documentation": { + "contents": [ + "

    A group of supplemental action icons, displayed on the right side of the card (in LTR), adjacent to CardActionButtons

    \n" + ], + "contentsRaw": "A group of supplemental action icons, displayed on the right side of the card (in LTR), adjacent to CardActionButtons", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardActionIconsProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L109", + "methods": [], + "properties": [] + }, + "CardActionIconProps": { + "documentation": { + "contents": [ + "

    A card action Icon

    \n" + ], + "contentsRaw": "A card action Icon", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardActionIconProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L120", + "extends": [ + "IconButtonProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Controls the on / off state of the a toggleable button.

    \n" + ], + "contentsRaw": "Controls the on / off state of the a toggleable button.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "checked", + "inheritedFrom": "IconButtonProps.checked", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Makes the button disabled

    \n" + ], + "contentsRaw": "Makes the button disabled", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "inheritedFrom": "IconButtonProps.disabled", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation. Only for Toggleable buttons.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation. Only for Toggleable buttons.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "inheritedFrom": "IconButtonProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Icon for the button

    \n" + ], + "contentsRaw": "Icon for the button", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "IconButtonProps.icon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Apply an aria label.

    \n" + ], + "contentsRaw": "Apply an aria label.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "inheritedFrom": "IconButtonProps.label", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    An onChange callback that receives a custom event. evt.detail = { isOn: boolean }

    \n" + ], + "contentsRaw": "An onChange callback that receives a custom event. evt.detail = { isOn: boolean }", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onChange", + "inheritedFrom": "IconButtonProps.onChange", + "type": "undefined | (evt: IconButtonOnChangeEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    If specified, renders a toggle with this icon as the on state.

    \n" + ], + "contentsRaw": "If specified, renders a toggle with this icon as the on state.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onIcon", + "inheritedFrom": "IconButtonProps.onIcon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + } + ] + }, + "CardActionButtonProps": { + "documentation": { + "contents": [ + "

    A card action Button

    \n" + ], + "contentsRaw": "A card action Button", + "metadata": {} + }, + "fileName": "src/card/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "CardActionButtonProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/card/index.tsx#L134", + "extends": [ + "ButtonProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Content specified as children.

    \n" + ], + "contentsRaw": "Content specified as children.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "inheritedFrom": "ButtonProps.children", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Used to indicate a dangerous action.

    \n" + ], + "contentsRaw": "Used to indicate a dangerous action.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "danger", + "inheritedFrom": "ButtonProps.danger", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button dense.

    \n" + ], + "contentsRaw": "Make the Button dense.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "inheritedFrom": "ButtonProps.dense", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the button disabled

    \n" + ], + "contentsRaw": "Make the button disabled", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "inheritedFrom": "ButtonProps.disabled", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    An Icon for the Button

    \n" + ], + "contentsRaw": "An Icon for the Button", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "ButtonProps.icon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Content specified as a label prop.

    \n" + ], + "contentsRaw": "Content specified as a label prop.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "inheritedFrom": "ButtonProps.label", + "type": "React.ReactNode | any" + }, + { + "documentation": { + "contents": [ + "

    Make the button outlined.

    \n" + ], + "contentsRaw": "Make the button outlined.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "outlined", + "inheritedFrom": "ButtonProps.outlined", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button raised.

    \n" + ], + "contentsRaw": "Make the Button raised.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "raised", + "inheritedFrom": "ButtonProps.raised", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + }, + { + "documentation": { + "contents": [ + "

    A trailing icon for the Button

    \n" + ], + "contentsRaw": "A trailing icon for the Button", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "trailingIcon", + "inheritedFrom": "ButtonProps.trailingIcon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Make the button unelevated.

    \n" + ], + "contentsRaw": "Make the button unelevated.", + "metadata": {} + }, + "fileName": "src/card/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "unelevated", + "inheritedFrom": "ButtonProps.unelevated", + "type": "undefined | false | true" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/card/index.tsx b/packages/mc-react-ui-components/src/lib/card/index.tsx new file mode 100644 index 00000000..2586e486 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/card/index.tsx @@ -0,0 +1,145 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +import React from 'react'; + +import { withRipple } from '../ripple'; +import { Button, ButtonProps } from '../button'; +import { IconButton, IconButtonProps } from '../icon-button'; +import { useClassNames, Tag, createComponent } from '../base'; + +/** A Card Component */ +export interface CardProps { + /** Removes the shadow and displays a hairline outline instead */ + outlined?: boolean; +} + +/** A Card Component */ +export const Card = createComponent(function Card(props, ref) { + const { outlined, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-card', + { + 'mdc-card--outlined': outlined + } + ]); + return ; +}); + +/** Media area that displays a custom background-image with background-size: cover */ +export interface CardMediaProps { + /** Automatically scales the media area’s height to equal its width */ + square?: boolean; + /** Automatically scales the media area’s height according to its width, maintaining a 16:9 aspect ratio */ + sixteenByNine?: boolean; +} + +/** Media area that displays a custom background-image with background-size: cover */ +export const CardMedia = createComponent(function CardMedia( + props, + ref +) { + const { square, sixteenByNine, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-card__media', + { + 'mdc-card__media--square': square, + 'mdc-card__media--16-9': sixteenByNine + } + ]); + return ; +}); + +/** An absolutely-positioned box the same size as the media area, for displaying a title or icon on top of the background-image */ +export interface CardMediaContentProps {} + +/** An absolutely-positioned box the same size as the media area, for displaying a title or icon on top of the background-image */ +export const CardMediaContent = createComponent( + function CardMediaContent(props, ref) { + const className = useClassNames(props, ['mdc-card__media-content']); + return ; + } +); + +/** The main clickable area for the primary content of the card */ +export interface CardPrimaryActionProps {} + +/** The main clickable area for the primary content of the card */ +export const CardPrimaryAction = withRipple({ + surface: false +})( + createComponent(function CardPrimaryAction( + props, + ref + ) { + const className = useClassNames(props, ['mdc-card__primary-action']); + return ; + }) +); + +/** Row containing action buttons and/or icons */ +export interface CardActionsProps { + /** Removes the action area’s padding and causes its only child (an mdc-card__action element) to consume 100% of the action area’s width */ + fullBleed?: boolean; +} + +/** Row containing action buttons and/or icons */ +export const CardActions = createComponent( + function CardActions(props, ref) { + const { fullBleed, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-card__actions', + { 'mdc-card__actions--full-bleed': fullBleed } + ]); + return ; + } +); + +/** A group of action buttons, displayed on the left side of the card (in LTR), adjacent to CardActionIcons */ +export interface CardActionButtonsProps {} + +/** A group of action buttons, displayed on the left side of the card (in LTR), adjacent to CardActionIcons */ +export const CardActionButtons = createComponent( + function CardActionButtons(props, ref) { + const className = useClassNames(props, ['mdc-card__action-buttons']); + return ; + } +); + +/** A group of supplemental action icons, displayed on the right side of the card (in LTR), adjacent to CardActionButtons */ +export interface CardActionIconsProps {} + +/** A group of supplemental action icons, displayed on the right side of the card (in LTR), adjacent to CardActionButtons */ +export const CardActionIcons = createComponent( + function CardActionIcons(props, ref) { + const className = useClassNames(props, ['mdc-card__action-icons']); + return ; + } +); + +/** A card action Icon */ +export interface CardActionIconProps extends IconButtonProps {} + +/** A card action Icon */ +export const CardActionIcon = createComponent( + function CardActionIcon(props, ref) { + const className = useClassNames(props, [ + 'mdc-card__action', + 'mdc-card__action--icon' + ]); + return ; + } +); + +/** A card action Button */ +export interface CardActionButtonProps extends ButtonProps {} + +/** A card action Button */ +export const CardActionButton = createComponent( + function CardActionIcon(props, ref) { + const className = useClassNames(props, [ + 'mdc-card__action', + 'mdc-card__action--button' + ]); + return + + ); +} +``` + +## Simplified Usage + +Material Dialogs are a complex component. RMWC contains an additional `SimpleDialog` component for ease of use that internally contains the default structure already built out. Illustrated below is both the standard and simple dialog usage. + +```jsx +function Example() { + const [open, setOpen] = React.useState(false); + return ( + <> + { + console.log(evt.detail.action); + setOpen(false); + }} + /> + + + + ); +} +``` + +## Usage with DialogQueue + +Some dialog interactions are complex, but a lot of the time you just need a simple alert or confirm dialog. `DialogQueue` allows you to open dialogs from anywhere in your app and emulates the browsers built in `alert`, `confirm` and `prompt` dialogs. If you've used the `SnackbarQueue`, the `DialogQueue` is very similar. + +Setup is nice and easy, create a queue object you can pass around in your code base, pass the queues `dialogs` to the `DialogQueue`component, and then use the `alert`, `prompt` or `confirm` api to open dialogs. + +```jsx + +// Create a file that exports your queue +// myQueue.js +import { createDialogQueue } from '@rmwc/dialog'; + +export const queue = createDialogQueue() +``` + +```jsx + +// Somewhere at the top level of your app +// Render the DialogQueue +import React from 'react'; +import { queue } from './myQueue'; + +export default function App() { + return ( +
    + ... + +
    + ) +} +``` + +The `alert`, `confirm`, and `prompt` functions were designed to mimic the the built-in browser methods with a couple of small difference. First, they all return a promise. The promise will always resolve successfully with the response indicating the appropriate action. `alert` the response will be `accept` for clicking the ok button, or `close`. `confirm` will resolve `true` or `false`, and `prompt` will resolve with the value entered into the input, or `null` if the closed the dialog. Second, all methods the methods accept any valid prop for `SimpleDialog`. + +```jsx + +// Somewhere else in your app +// Could be a view, your redux store, anywhere you want... +import { queue } from './myQueue'; + +queue.alert({ + title: 'Hi there', + body: 'Whats going on?' +}); + +queue.confirm({ + title: Are you positive?, + body: 'You have selected pizza instead icecream!', + acceptLabel: 'CONFIRM' +}); + +queue.prompt({ + title: 'Whats your name?', + body: 'Anything will do', + acceptLabel: 'Submit', + cancelLabel: 'Skip', + // For prompts only, you can pass props to the input + inputProps: { + outlined: true + } +}) +``` + +```jsx +() => { + const { dialogs, alert, confirm, prompt } = createDialogQueue(); + + function App() { + const [response, setResponse] = React.useState('____________'); + + const fireAlert = () => + alert({ title: 'Hello!' }).then(res => setResponse(res)); + + const fireConfirm = () => confirm({}).then(res => setResponse(res)); + + const firePrompt = () => + prompt({ inputProps: { outlined: true } }).then(res => + setResponse(res) + ); + + return ( +
    +
    + ); + } + return ; +} +``` + +## Rendering through Portals + +Occasionally, you may find your dialog being cut off from being inside a container that is styled to be `overflow:hidden`. RMWC provides a `renderToPortal` prop that lets you use React's portal functionality to render the menu dropdown in a different container. + +You can specify any element or selector you want, but the simplest method is to pass `true` and use RMWC's built in `Portal` component. + +```jsx + + // Somewhere at the top level of your app + // Render the RMWC Portal + // You only have to do this once + import React from 'react'; + import { Portal } from '@rmwc/base'; + + export default function App() { + return ( +
    + ... + +
    + ) + } + +``` + +Now you can use the `renderToPortal` prop. Below is a contrived example of a dialog being cut off due to `overflow: hidden`. + +```jsx +function Example() { + const [renderToPortal, setRenderToPortal] = React.useState(true); + const [open, setOpen] = React.useState(false); + return ( + <> +
    + { + console.log(evt.detail.action); + setOpen(false); + }} + /> + + + + +
    + + ); +} +``` + +## Dialog +A Dialog component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `onClose` | `undefined \| (evt: DialogOnCloseEventT) => void` | Callback for when the Dialog beings to close. evt.detail = { action?: string } | +| `onClosed` | `undefined \| (evt: DialogOnCloseEventT) => void` | Callback for when the Dialog finishes closing. evt.detail = { action?: string } | +| `onOpen` | `undefined \| (evt: DialogOnOpenEventT) => void` | Callback for when the Dialog opens. | +| `onOpened` | `undefined \| (evt: DialogOnOpenedEventT) => void` | Callback for when the Dialog finishes opening | +| `open` | `undefined \| false \| true` | Whether or not the Dialog is showing. | +| `preventOutsideDismiss` | `undefined \| false \| true` | Prevent the dialog from closing when the scrim is clicked or escape key is pressed. | +| `renderToPortal` | `PortalPropT` | Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal. | + + +## DialogTitle +The Dialog title. + + + +## DialogContent +The Dialog content. + + + +## DialogActions +Actions container for the Dialog. + + + +## DialogButton +Action buttons for the Dialog. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `action` | `undefined \| string` | An action returned in evt.detail.action to the onClose handler. | +| `children` | `React.ReactNode` | Content specified as children. | +| `danger` | `undefined \| false \| true` | Used to indicate a dangerous action. | +| `dense` | `undefined \| false \| true` | Make the Button dense. | +| `disabled` | `undefined \| false \| true` | Make the button disabled | +| `icon` | `RMWC.IconPropT` | An Icon for the Button | +| `isDefaultAction` | `undefined \| false \| true` | Indicates this is the default selected action when pressing enter | +| `label` | `React.ReactNode \| any` | Content specified as a label prop. | +| `outlined` | `undefined \| false \| true` | Make the button outlined. | +| `raised` | `undefined \| false \| true` | Make the Button raised. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | +| `trailingIcon` | `RMWC.IconPropT` | A trailing icon for the Button | +| `unelevated` | `undefined \| false \| true` | Make the button unelevated. | + + +## SimpleDialog +A SimpleDialog component for ease of use. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `acceptLabel` | `React.ReactNode` | Creates an accept button for the default Dialog template with a given label. You can pass `null` to remove the button. | +| `body` | `React.ReactNode` | Body content for the default Dialog template, rendered before children. | +| `cancelLabel` | `React.ReactNode` | Creates an cancel button for the default Dialog with a given label. You can pass `null` to remove the button. | +| `children` | `React.ReactNode` | Any children will be rendered in the body of the default Dialog template. | +| `footer` | `React.ReactNode` | Additional footer content for the default Dialog template, rendered before any buttons. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `header` | `React.ReactNode` | Additional Dialog header content for the default Dialog template. | +| `onClose` | `undefined \| (evt: DialogOnCloseEventT) => void` | Callback for when the Dialog beings to close. evt.detail = { action?: string } | +| `onClosed` | `undefined \| (evt: DialogOnCloseEventT) => void` | Callback for when the Dialog finishes closing. evt.detail = { action?: string } | +| `onOpen` | `undefined \| (evt: DialogOnOpenEventT) => void` | Callback for when the Dialog opens. | +| `onOpened` | `undefined \| (evt: DialogOnOpenedEventT) => void` | Callback for when the Dialog finishes opening | +| `open` | `undefined \| false \| true` | Whether or not the Dialog is showing. | +| `preventOutsideDismiss` | `undefined \| false \| true` | Prevent the dialog from closing when the scrim is clicked or escape key is pressed. | +| `renderToPortal` | `PortalPropT` | Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal. | +| `title` | `React.ReactNode` | A title for the default Dialog template. | + + diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog-queue.tsx b/packages/mc-react-ui-components/src/lib/dialog/dialog-queue.tsx new file mode 100644 index 00000000..93a7f51d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/dialog/dialog-queue.tsx @@ -0,0 +1,210 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +import React, { useState, useEffect } from 'react'; +import { + SimpleDialog, + SimpleDialogProps, + SimpleDialogHTMLProps, + DialogOnCloseEventT +} from './dialog'; +import { ArrayEmitter, randomId } from '../base'; +import { TextField, TextFieldProps, TextFieldHTMLProps } from '../textfield'; + +export interface DialogQueueInput + extends SimpleDialogProps, + SimpleDialogHTMLProps { + id?: string; + /** Props for the input when using the prompt dialog. Only applies to prompt. */ + inputProps?: TextFieldProps & TextFieldHTMLProps; +} + +export interface DialogQueueSpec extends DialogQueueInput { + id: string; + resolve: (response: any) => void; + reject: (reason: any) => void; +} + +/** A snackbar queue for rendering messages */ +export interface DialogQueueProps extends SimpleDialogProps { + dialogs: ArrayEmitter; +} + +/** A snackbar queue for rendering messages */ +export function DialogQueue({ + dialogs, + ...defaultDialogProps +}: DialogQueueProps) { + const [, setIteration] = useState(0); + const [closingDialogs, setClosingDialogs] = useState<{ [key: string]: true }>( + {} + ); + + useEffect(() => { + const forceUpdate = () => setIteration(val => val + 1); + dialogs.on('change', forceUpdate); + return () => { + dialogs.off('change', forceUpdate); + }; + }, [dialogs]); + + const removeDialog = (evt: DialogOnCloseEventT, dialog: DialogQueueSpec) => { + setClosingDialogs({ + ...closingDialogs, + [dialog.id]: true + }); + + dialog.resolve(evt); + setTimeout(() => { + // remove the dialog from our array + const index = dialogs.array.indexOf(dialog); + !!~index && dialogs.array.splice(index, 1); + + // remove it from the closing state + const newClosingDialogs = { ...closingDialogs }; + delete newClosingDialogs[dialog.id]; + setClosingDialogs(newClosingDialogs); + }, 150); + }; + + // A simple way to show only one at a time + // We loop through until we find a dialog thats not closing + // When one is closing, we flip this flag and render all of the other ones in a closed state + // This ensures we get the proper animations for closing dialogs + let foundOpen = false; + + return ( + <> + {dialogs.array.map(dialog => { + const { resolve, reject, id, inputProps, ...rest } = dialog; + + const rendered = ( + { + removeDialog(evt, dialog); + dialog.onClose && dialog.onClose(evt); + }} + /> + ); + + if (!closingDialogs[id]) { + foundOpen = true; + } + + return rendered; + })} + + ); +} + +/** + * A base dialog factory that handle setting up the promise + * With some consistent behavior + */ +const dialogFactory = ( + factory: (dialog: DialogQueueSpec) => DialogQueueSpec, + queue: ArrayEmitter +) => (dialog: DialogQueueInput) => { + return new Promise((resolve, reject) => { + const d = factory({ id: randomId(), ...dialog, resolve, reject }); + queue.push(d); + }); +}; + +/** + * Handle prompt dialogs + * We have to jump through a few hoops to get the value back out + */ +function PromptBody({ + body, + inputProps, + apiRef +}: { + body?: React.ReactNode; + inputProps?: DialogQueueInput['inputProps']; + apiRef: (getValue: () => string) => void; +}) { + const [value, setValue] = useState(''); + + useEffect(() => { + apiRef(() => value); + }, [apiRef, value]); + + return ( +
    + {!!body &&
    {body}
    } + { + setValue(evt.currentTarget.value); + }} + /> +
    + ); +} + +const promptFactory = (dialog: DialogQueueSpec): DialogQueueSpec => { + let getValue: any = () => ''; + + const body = ( + (getValue = _getValue)} + /> + ); + + return { + title: 'Prompt', + ...dialog, + body, + resolve: (evt: DialogOnCloseEventT) => { + dialog.resolve(evt.detail.action === 'accept' ? getValue() : null); + getValue = undefined; + } + }; +}; + +/** Alerts */ +const alertFactory = (dialog: DialogQueueSpec): DialogQueueSpec => ({ + title: 'Alert', + body: 'You have been alerted!', + acceptLabel: 'OK', + cancelLabel: null, + ...dialog, + resolve: (evt: DialogOnCloseEventT) => dialog.resolve(evt.detail.action) +}); + +/** Confirm */ +const confirmFactory = (dialog: DialogQueueSpec): DialogQueueSpec => ({ + title: 'Confirm', + body: 'Are you sure you want do that?', + acceptLabel: 'OK', + cancelLabel: 'Cancel', + ...dialog, + resolve: (evt: DialogOnCloseEventT) => + dialog.resolve(evt.detail.action === 'accept') +}); + +/** Creates a snackbar queue */ +export const createDialogQueue = (): { + dialogs: ArrayEmitter; + alert: (dialog: DialogQueueInput) => Promise; + confirm: (dialog: DialogQueueInput) => Promise; + prompt: (dialog: DialogQueueInput) => Promise; +} => { + const dialogs = new ArrayEmitter(); + + return { + dialogs, + alert: dialogFactory(alertFactory, dialogs), + confirm: dialogFactory(confirmFactory, dialogs), + prompt: dialogFactory(promptFactory, dialogs) + }; +}; diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx new file mode 100644 index 00000000..76bd3c7d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx @@ -0,0 +1,40 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { + Dialog, + DialogTitle, + DialogContent, + DialogActions, + DialogButton, + SimpleDialog +} from './'; + +describe('Dialog', () => { + it('simple Dialog renders', () => { + mount( + {}} + /> + ); + }); + + it('standard Dialog renders', () => { + mount( + {}}> + Dialog Title + This is a custom dialog. + + Cancel + Sweet! + + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog.spec.tsx b/packages/mc-react-ui-components/src/lib/dialog/dialog.spec.tsx new file mode 100644 index 00000000..309f665b --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/dialog/dialog.spec.tsx @@ -0,0 +1,234 @@ +import React from 'react'; +import { mount } from 'enzyme'; + +import { + Dialog, + DialogTitle, + DialogContent, + DialogActions, + DialogButton, + SimpleDialog, + createDialogQueue, + DialogQueue +} from './'; +import { wait, actWait } from '../base/utils/test-utils'; +import { act } from 'react-dom/test-utils'; + +describe('Dialog', () => { + it('simple Dialog renders', () => { + mount( + {}} + /> + ); + }); + + it('simple Dialog renders with no children', () => { + mount( + {}} + /> + ); + }); + + it('simple Dialog renders with children', () => { + mount( + {}}> + Hello + + ); + }); + + it('Dialog lifecycle', async (done) => { + let open = 0; + let opened = 0; + let close = 0; + let closed = 0; + + const el = mount( + open++} + onOpened={() => opened++} + onClose={() => { + close++; + el.setProps({ open: false }); + }} + onClosed={() => closed++} + > + Dialog Title + + This is a custom dialog. + + Cancel + Sweet! + + + ); + + el.setProps({ open: true }); + await wait(250); + + const acceptButton = el.find('button.mdc-dialog__button').last(); + acceptButton.simulate('click'); + + await wait(250); + el.setProps({ open: true }); + await wait(250); + const cancelButton = el.find('button.mdc-dialog__button').first(); + cancelButton.simulate('click'); + await wait(250); + expect(open).toBe(2); + expect(opened).toBe(2); + expect(close).toBe(2); + expect(closed).toBe(2); + done(); + }); + + it('standard Dialog renders', () => { + const el = mount( + {}}> + Dialog Title + + This is a custom dialog. + + Cancel + Sweet! + + + ); + + el.unmount(); + }); +}); + +describe('DialogQueue', () => { + it('renders', () => { + const queue = createDialogQueue(); + const el = mount(); + el.unmount(); + }); + + it('alerts and accepts', async (done) => { + const queue = createDialogQueue(); + const el = mount(); + + queue.alert({ title: 'myAlert' }).then(async (resp) => { + expect(resp).toBe('accept'); + + // wait for cleanup + await wait(200); + done(); + }); + + await wait(); + el.update(); + + expect(el.html().includes('myAlert')).toBe(true); + await wait(100); + + el.find('.mdc-dialog__button').first().simulate('click'); + }); + + it('alerts and closes', (done) => { + const queue = createDialogQueue(); + const el = mount(); + queue.alert({ title: 'myAlert' }).then((resp) => { + expect(resp).toBe('close'); + done(); + }); + + setTimeout(() => { + el.update(); + + el.find('.mdc-dialog__scrim').first().simulate('click'); + }); + }); + + it('confirms and returns true', async (done) => { + const queue = createDialogQueue(); + const el = mount(); + queue.confirm({ title: 'myConfirm' }).then((resp) => { + expect(resp).toBe(true); + done(); + }); + + await wait(); + el.update(); + expect(el.html().includes('myConfirm')).toBe(true); + + el.find('[action="accept"]').first().simulate('click'); + }); + + it('confirms and returns false', async (done) => { + const queue = createDialogQueue(); + const el = mount(); + queue.confirm({ title: 'myConfirm' }).then((resp) => { + expect(resp).toBe(false); + done(); + }); + + await wait(); + el.update(); + + el.find('[action="close"]').first().simulate('click'); + }); + + it('prompts and returns value', async (done) => { + const queue = createDialogQueue(); + const el = mount(); + + queue.prompt({ title: 'myPrompt' }).then((resp) => { + expect(resp).toBe('WORKING'); + done(); + }); + + el.update(); + expect(el.html().includes('myPrompt')).toBe(true); + + (el.find('input').prop('onChange') as any)({ + currentTarget: { value: 'WORKING' } + }); + + el.update(); + await wait(); + + el.find('[action="accept"]').first().simulate('click'); + }); + + it('prompts and returns null', (done) => { + const queue = createDialogQueue(); + const el = mount(); + queue.prompt({ title: 'myPrompt', body: 'CUSTOM BODY' }).then((resp) => { + expect(resp).toBe(null); + done(); + }); + + el.update(); + + expect(el.html().includes('CUSTOM BODY')).toBe(true); + + el.find('[action="close"]').first().simulate('click'); + }); + + it('supports onClose', (done) => { + const queue = createDialogQueue(); + const el = mount(); + const onClose = jest.fn(); + queue.alert({ onClose }); + + el.update(); + + setTimeout(() => { + el.find('.mdc-dialog__button').first().simulate('click'); + + expect(onClose).toHaveBeenCalled(); + done(); + }); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx b/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx new file mode 100644 index 00000000..20bfbe78 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx @@ -0,0 +1,98 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { action } from '@storybook/addon-actions'; + +// import { +// Dialog, +// DialogTitle, +// DialogContent, +// DialogActions, +// DialogButton, +// SimpleDialog, +// createDialogQueue, +// DialogQueue +// } from './'; +// import { useKnob } from '@rmwc/base/utils/use-knob'; +// import { Button } from '@rmwc/button'; + +// const DialogStory = function () { +// let [open, setOpen] = useKnob('boolean', 'open', true); + +// return ( +// { +// console.log(evt.detail.action); +// setOpen(false); +// }} +// > +// Dialog Title +// This is a standard dialog. +// +// Cancel +// +// Sweet! +// +// +// +// ); +// }; + +// function SimpleDialogStory() { +// const [open, setOpen] = useKnob('boolean', 'open', true); +// const [title] = useKnob('text', 'title', 'This is a simple dialog'); +// const [body] = useKnob( +// 'text', +// 'body', +// 'You can pass the body prop, or anything you want as children.' +// ); +// const [acceptLabel] = useKnob('text', 'acceptLabel', 'Accept'); +// const [cancelLabel] = useKnob('text', 'cancelLabel', 'Cancel'); + +// return ( +// { +// setOpen(false); +// action('onClose')(); +// }} +// acceptLabel={acceptLabel} +// cancelLabel={cancelLabel} +// /> +// ); +// } + +// const { dialogs, alert, confirm, prompt } = createDialogQueue(); + +// storiesOf('Dialogs', module) +// .add('Dialog', () => ) +// .add('SimpleDialog', () => ) +// .add('DialogQueue', () => { +// const fireAlert = () => alert({}).then((res) => console.log(res)); +// const fireConfirm = () => confirm({}).then((res) => console.log(res)); +// const firePrompt = () => +// prompt({ inputProps: { outlined: true } }).then((res) => +// console.log(res) +// ); + +// return ( +// <> +// \n \n );\n}","function Example() {\n const [open, setOpen] = React.useState(false);\n return (\n <>\n {\n console.log(evt.detail.action);\n setOpen(false);\n }}\n />\n\n \n \n );\n}","\n// Create a file that exports your queue\n// myQueue.js\nimport { createDialogQueue } from '@rmwc/dialog';\n\nexport const queue = createDialogQueue()","\n// Somewhere at the top level of your app\n// Render the DialogQueue\nimport React from 'react';\nimport { queue } from './myQueue';\n\nexport default function App() {\n return (\n
    \n ...\n \n
    \n )\n}","\n// Somewhere else in your app\n// Could be a view, your redux store, anywhere you want...\nimport { queue } from './myQueue';\n\nqueue.alert({\n title: 'Hi there',\n body: 'Whats going on?'\n});\n\nqueue.confirm({\n title: Are you positive?,\n body: 'You have selected pizza instead icecream!',\n acceptLabel: 'CONFIRM'\n});\n\nqueue.prompt({\n title: 'Whats your name?',\n body: 'Anything will do',\n acceptLabel: 'Submit',\n cancelLabel: 'Skip',\n // For prompts only, you can pass props to the input\n inputProps: {\n outlined: true\n }\n})","() => {\n const { dialogs, alert, confirm, prompt } = createDialogQueue();\n\n function App() {\n const [response, setResponse] = React.useState('____________');\n\n const fireAlert = () =>\n alert({ title: 'Hello!' }).then(res => setResponse(res));\n\n const fireConfirm = () => confirm({}).then(res => setResponse(res));\n\n const firePrompt = () =>\n prompt({ inputProps: { outlined: true } }).then(res =>\n setResponse(res)\n );\n\n return (\n
    \n
    \n );\n }\n return ;\n}","\n // Somewhere at the top level of your app\n // Render the RMWC Portal\n // You only have to do this once\n import React from 'react';\n import { Portal } from '@rmwc/base';\n\n export default function App() {\n return (\n
    \n ...\n \n
    \n )\n }\n","function Example() {\n const [renderToPortal, setRenderToPortal] = React.useState(true);\n const [open, setOpen] = React.useState(false);\n return (\n <>\n \n {\n console.log(evt.detail.action);\n setOpen(false);\n }}\n />\n\n {\n setRenderToPortal(false);\n setOpen(true);\n }}\n >\n Open Broken :/\n \n\n {\n setRenderToPortal(true);\n setOpen(true);\n }}\n >\n Open in Portal\n \n
    \n \n );\n}"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/dialog/generated-props.json b/packages/mc-react-ui-components/src/lib/dialog/generated-props.json new file mode 100644 index 00000000..85e0f2f9 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/dialog/generated-props.json @@ -0,0 +1,2461 @@ +{ + "npm": {}, + "typescript": { + "DialogProps": { + "documentation": { + "contents": [ + "

    A Dialog component.

    \n" + ], + "contentsRaw": "A Dialog component.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L30", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L46", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog beings to close. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog beings to close. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L38", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes closing. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes closing. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClosed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L40", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog opens.

    \n" + ], + "contentsRaw": "Callback for when the Dialog opens.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L34", + "type": "undefined | (evt: DialogOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes opening

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes opening", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpened", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L36", + "type": "undefined | (evt: DialogOnOpenedEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Whether or not the Dialog is showing.

    \n" + ], + "contentsRaw": "Whether or not the Dialog is showing.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L32", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Prevent the dialog from closing when the scrim is clicked or escape key is pressed.

    \n" + ], + "contentsRaw": "Prevent the dialog from closing when the scrim is clicked or escape key is pressed.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "preventOutsideDismiss", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L42", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal.

    \n" + ], + "contentsRaw": "Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass \"true\" to render to the default RMWC portal.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "renderToPortal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L44", + "type": "PortalPropT" + } + ] + }, + "SimpleDialogProps": { + "documentation": { + "contents": [ + "

    A SimpleDialog component for ease of use.

    \n" + ], + "contentsRaw": "A SimpleDialog component for ease of use.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SimpleDialogProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L91", + "extends": [ + "DialogProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Creates an accept button for the default Dialog template with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an accept button for the default Dialog template with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "acceptLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L101", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Body content for the default Dialog template, rendered before children.

    \n" + ], + "contentsRaw": "Body content for the default Dialog template, rendered before children.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "body", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L97", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Creates an cancel button for the default Dialog with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an cancel button for the default Dialog with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "cancelLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L103", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Any children will be rendered in the body of the default Dialog template.

    \n" + ], + "contentsRaw": "Any children will be rendered in the body of the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L105", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Additional footer content for the default Dialog template, rendered before any buttons.

    \n" + ], + "contentsRaw": "Additional footer content for the default Dialog template, rendered before any buttons.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "footer", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L99", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L46", + "inheritedFrom": "DialogProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Additional Dialog header content for the default Dialog template.

    \n" + ], + "contentsRaw": "Additional Dialog header content for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "header", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L95", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog beings to close. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog beings to close. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L38", + "inheritedFrom": "DialogProps.onClose", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes closing. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes closing. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClosed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L40", + "inheritedFrom": "DialogProps.onClosed", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog opens.

    \n" + ], + "contentsRaw": "Callback for when the Dialog opens.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L34", + "inheritedFrom": "DialogProps.onOpen", + "type": "undefined | (evt: DialogOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes opening

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes opening", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpened", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L36", + "inheritedFrom": "DialogProps.onOpened", + "type": "undefined | (evt: DialogOnOpenedEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Whether or not the Dialog is showing.

    \n" + ], + "contentsRaw": "Whether or not the Dialog is showing.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L32", + "inheritedFrom": "DialogProps.open", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Prevent the dialog from closing when the scrim is clicked or escape key is pressed.

    \n" + ], + "contentsRaw": "Prevent the dialog from closing when the scrim is clicked or escape key is pressed.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "preventOutsideDismiss", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L42", + "inheritedFrom": "DialogProps.preventOutsideDismiss", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal.

    \n" + ], + "contentsRaw": "Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass \"true\" to render to the default RMWC portal.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "renderToPortal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L44", + "inheritedFrom": "DialogProps.renderToPortal", + "type": "PortalPropT" + }, + { + "documentation": { + "contents": [ + "

    A title for the default Dialog template.

    \n" + ], + "contentsRaw": "A title for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "title", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L93", + "type": "React.ReactNode" + } + ] + }, + "DialogTitleProps": { + "documentation": { + "contents": [ + "

    The Dialog title.

    \n" + ], + "contentsRaw": "The Dialog title.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogTitleProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L184", + "methods": [], + "properties": [] + }, + "DialogContentProps": { + "documentation": { + "contents": [ + "

    The Dialog content.

    \n" + ], + "contentsRaw": "The Dialog content.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogContentProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L195", + "methods": [], + "properties": [] + }, + "DialogActionsProps": { + "documentation": { + "contents": [ + "

    Actions container for the Dialog.

    \n" + ], + "contentsRaw": "Actions container for the Dialog.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogActionsProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L206", + "methods": [], + "properties": [] + }, + "DialogButtonProps": { + "documentation": { + "contents": [ + "

    Action buttons for the Dialog.

    \n" + ], + "contentsRaw": "Action buttons for the Dialog.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogButtonProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L217", + "extends": [ + "ButtonProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    An action returned in evt.detail.action to the onClose handler.

    \n" + ], + "contentsRaw": "An action returned in evt.detail.action to the onClose handler.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "action", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L219", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    Content specified as children.

    \n" + ], + "contentsRaw": "Content specified as children.", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "inheritedFrom": "ButtonProps.children", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Used to indicate a dangerous action.

    \n" + ], + "contentsRaw": "Used to indicate a dangerous action.", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "danger", + "inheritedFrom": "ButtonProps.danger", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button dense.

    \n" + ], + "contentsRaw": "Make the Button dense.", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "inheritedFrom": "ButtonProps.dense", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the button disabled

    \n" + ], + "contentsRaw": "Make the button disabled", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "inheritedFrom": "ButtonProps.disabled", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    An Icon for the Button

    \n" + ], + "contentsRaw": "An Icon for the Button", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "ButtonProps.icon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Indicates this is the default selected action when pressing enter

    \n" + ], + "contentsRaw": "Indicates this is the default selected action when pressing enter", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "isDefaultAction", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L221", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Content specified as a label prop.

    \n" + ], + "contentsRaw": "Content specified as a label prop.", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "inheritedFrom": "ButtonProps.label", + "type": "React.ReactNode | any" + }, + { + "documentation": { + "contents": [ + "

    Make the button outlined.

    \n" + ], + "contentsRaw": "Make the button outlined.", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "outlined", + "inheritedFrom": "ButtonProps.outlined", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button raised.

    \n" + ], + "contentsRaw": "Make the Button raised.", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "raised", + "inheritedFrom": "ButtonProps.raised", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + }, + { + "documentation": { + "contents": [ + "

    A trailing icon for the Button

    \n" + ], + "contentsRaw": "A trailing icon for the Button", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "trailingIcon", + "inheritedFrom": "ButtonProps.trailingIcon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Make the button unelevated.

    \n" + ], + "contentsRaw": "Make the button unelevated.", + "metadata": {} + }, + "fileName": "src/dialog/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "unelevated", + "inheritedFrom": "ButtonProps.unelevated", + "type": "undefined | false | true" + } + ] + }, + "DialogQueueInput": { + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogQueueInput", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L13", + "extends": [ + "SimpleDialogProps", + "any" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Creates an accept button for the default Dialog template with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an accept button for the default Dialog template with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "acceptLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L101", + "inheritedFrom": "SimpleDialogProps.acceptLabel", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Body content for the default Dialog template, rendered before children.

    \n" + ], + "contentsRaw": "Body content for the default Dialog template, rendered before children.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "body", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L97", + "inheritedFrom": "SimpleDialogProps.body", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Creates an cancel button for the default Dialog with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an cancel button for the default Dialog with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "cancelLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L103", + "inheritedFrom": "SimpleDialogProps.cancelLabel", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Any children will be rendered in the body of the default Dialog template.

    \n" + ], + "contentsRaw": "Any children will be rendered in the body of the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L105", + "inheritedFrom": "SimpleDialogProps.children", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Additional footer content for the default Dialog template, rendered before any buttons.

    \n" + ], + "contentsRaw": "Additional footer content for the default Dialog template, rendered before any buttons.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "footer", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L99", + "inheritedFrom": "SimpleDialogProps.footer", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L46", + "inheritedFrom": "DialogProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Additional Dialog header content for the default Dialog template.

    \n" + ], + "contentsRaw": "Additional Dialog header content for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "header", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L95", + "inheritedFrom": "SimpleDialogProps.header", + "type": "React.ReactNode" + }, + { + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "id", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L16", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    Props for the input when using the prompt dialog. Only applies to prompt.

    \n" + ], + "contentsRaw": "Props for the input when using the prompt dialog. Only applies to prompt.", + "metadata": {} + }, + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "inputProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L18", + "type": "TextFieldProps & TextFieldHTMLProps" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog beings to close. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog beings to close. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L38", + "inheritedFrom": "DialogProps.onClose", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes closing. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes closing. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClosed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L40", + "inheritedFrom": "DialogProps.onClosed", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog opens.

    \n" + ], + "contentsRaw": "Callback for when the Dialog opens.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L34", + "inheritedFrom": "DialogProps.onOpen", + "type": "undefined | (evt: DialogOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes opening

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes opening", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpened", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L36", + "inheritedFrom": "DialogProps.onOpened", + "type": "undefined | (evt: DialogOnOpenedEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Whether or not the Dialog is showing.

    \n" + ], + "contentsRaw": "Whether or not the Dialog is showing.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L32", + "inheritedFrom": "DialogProps.open", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Prevent the dialog from closing when the scrim is clicked or escape key is pressed.

    \n" + ], + "contentsRaw": "Prevent the dialog from closing when the scrim is clicked or escape key is pressed.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "preventOutsideDismiss", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L42", + "inheritedFrom": "DialogProps.preventOutsideDismiss", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal.

    \n" + ], + "contentsRaw": "Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass \"true\" to render to the default RMWC portal.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "renderToPortal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L44", + "inheritedFrom": "DialogProps.renderToPortal", + "type": "PortalPropT" + }, + { + "documentation": { + "contents": [ + "

    A title for the default Dialog template.

    \n" + ], + "contentsRaw": "A title for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "title", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L93", + "inheritedFrom": "SimpleDialogProps.title", + "type": "React.ReactNode" + } + ] + }, + "DialogQueueSpec": { + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogQueueSpec", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L21", + "extends": [ + "DialogQueueInput" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Creates an accept button for the default Dialog template with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an accept button for the default Dialog template with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "acceptLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L101", + "inheritedFrom": "SimpleDialogProps.acceptLabel", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Body content for the default Dialog template, rendered before children.

    \n" + ], + "contentsRaw": "Body content for the default Dialog template, rendered before children.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "body", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L97", + "inheritedFrom": "SimpleDialogProps.body", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Creates an cancel button for the default Dialog with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an cancel button for the default Dialog with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "cancelLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L103", + "inheritedFrom": "SimpleDialogProps.cancelLabel", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Any children will be rendered in the body of the default Dialog template.

    \n" + ], + "contentsRaw": "Any children will be rendered in the body of the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L105", + "inheritedFrom": "SimpleDialogProps.children", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Additional footer content for the default Dialog template, rendered before any buttons.

    \n" + ], + "contentsRaw": "Additional footer content for the default Dialog template, rendered before any buttons.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "footer", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L99", + "inheritedFrom": "SimpleDialogProps.footer", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L46", + "inheritedFrom": "DialogProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Additional Dialog header content for the default Dialog template.

    \n" + ], + "contentsRaw": "Additional Dialog header content for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "header", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L95", + "inheritedFrom": "SimpleDialogProps.header", + "type": "React.ReactNode" + }, + { + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "id", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L22", + "type": "string" + }, + { + "documentation": { + "contents": [ + "

    Props for the input when using the prompt dialog. Only applies to prompt.

    \n" + ], + "contentsRaw": "Props for the input when using the prompt dialog. Only applies to prompt.", + "metadata": {} + }, + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "inputProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L18", + "inheritedFrom": "DialogQueueInput.inputProps", + "type": "TextFieldProps & TextFieldHTMLProps" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog beings to close. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog beings to close. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L38", + "inheritedFrom": "DialogProps.onClose", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes closing. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes closing. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClosed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L40", + "inheritedFrom": "DialogProps.onClosed", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog opens.

    \n" + ], + "contentsRaw": "Callback for when the Dialog opens.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L34", + "inheritedFrom": "DialogProps.onOpen", + "type": "undefined | (evt: DialogOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes opening

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes opening", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpened", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L36", + "inheritedFrom": "DialogProps.onOpened", + "type": "undefined | (evt: DialogOnOpenedEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Whether or not the Dialog is showing.

    \n" + ], + "contentsRaw": "Whether or not the Dialog is showing.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L32", + "inheritedFrom": "DialogProps.open", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Prevent the dialog from closing when the scrim is clicked or escape key is pressed.

    \n" + ], + "contentsRaw": "Prevent the dialog from closing when the scrim is clicked or escape key is pressed.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "preventOutsideDismiss", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L42", + "inheritedFrom": "DialogProps.preventOutsideDismiss", + "type": "undefined | false | true" + }, + { + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "reject", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L24", + "type": "(reason: any) => void" + }, + { + "documentation": { + "contents": [ + "

    Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal.

    \n" + ], + "contentsRaw": "Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass \"true\" to render to the default RMWC portal.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "renderToPortal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L44", + "inheritedFrom": "DialogProps.renderToPortal", + "type": "PortalPropT" + }, + { + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "resolve", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L23", + "type": "(response: any) => void" + }, + { + "documentation": { + "contents": [ + "

    A title for the default Dialog template.

    \n" + ], + "contentsRaw": "A title for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "title", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L93", + "inheritedFrom": "SimpleDialogProps.title", + "type": "React.ReactNode" + } + ] + }, + "DialogQueueProps": { + "documentation": { + "contents": [ + "

    A snackbar queue for rendering messages

    \n" + ], + "contentsRaw": "A snackbar queue for rendering messages", + "metadata": {} + }, + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DialogQueueProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L28", + "extends": [ + "SimpleDialogProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Creates an accept button for the default Dialog template with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an accept button for the default Dialog template with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "acceptLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L101", + "inheritedFrom": "SimpleDialogProps.acceptLabel", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Body content for the default Dialog template, rendered before children.

    \n" + ], + "contentsRaw": "Body content for the default Dialog template, rendered before children.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "body", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L97", + "inheritedFrom": "SimpleDialogProps.body", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Creates an cancel button for the default Dialog with a given label. You can pass null to remove the button.

    \n" + ], + "contentsRaw": "Creates an cancel button for the default Dialog with a given label. You can pass `null` to remove the button.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "cancelLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L103", + "inheritedFrom": "SimpleDialogProps.cancelLabel", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Any children will be rendered in the body of the default Dialog template.

    \n" + ], + "contentsRaw": "Any children will be rendered in the body of the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L105", + "inheritedFrom": "SimpleDialogProps.children", + "type": "React.ReactNode" + }, + { + "fileName": "src/dialog/dialog-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dialogs", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog-queue.tsx#L29", + "type": "ArrayEmitter" + }, + { + "documentation": { + "contents": [ + "

    Additional footer content for the default Dialog template, rendered before any buttons.

    \n" + ], + "contentsRaw": "Additional footer content for the default Dialog template, rendered before any buttons.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "footer", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L99", + "inheritedFrom": "SimpleDialogProps.footer", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L46", + "inheritedFrom": "DialogProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Additional Dialog header content for the default Dialog template.

    \n" + ], + "contentsRaw": "Additional Dialog header content for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "header", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L95", + "inheritedFrom": "SimpleDialogProps.header", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog beings to close. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog beings to close. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L38", + "inheritedFrom": "DialogProps.onClose", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes closing. evt.detail = { action?: string }

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes closing. evt.detail = { action?: string }", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClosed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L40", + "inheritedFrom": "DialogProps.onClosed", + "type": "undefined | (evt: DialogOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog opens.

    \n" + ], + "contentsRaw": "Callback for when the Dialog opens.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L34", + "inheritedFrom": "DialogProps.onOpen", + "type": "undefined | (evt: DialogOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the Dialog finishes opening

    \n" + ], + "contentsRaw": "Callback for when the Dialog finishes opening", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpened", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L36", + "inheritedFrom": "DialogProps.onOpened", + "type": "undefined | (evt: DialogOnOpenedEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Whether or not the Dialog is showing.

    \n" + ], + "contentsRaw": "Whether or not the Dialog is showing.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L32", + "inheritedFrom": "DialogProps.open", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Prevent the dialog from closing when the scrim is clicked or escape key is pressed.

    \n" + ], + "contentsRaw": "Prevent the dialog from closing when the scrim is clicked or escape key is pressed.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "preventOutsideDismiss", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L42", + "inheritedFrom": "DialogProps.preventOutsideDismiss", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal.

    \n" + ], + "contentsRaw": "Renders the dialog to a portal. Useful for situations where the dialog might be cutoff by an overflow: hidden container. You can pass \"true\" to render to the default RMWC portal.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "renderToPortal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L44", + "inheritedFrom": "DialogProps.renderToPortal", + "type": "PortalPropT" + }, + { + "documentation": { + "contents": [ + "

    A title for the default Dialog template.

    \n" + ], + "contentsRaw": "A title for the default Dialog template.", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "title", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L93", + "inheritedFrom": "SimpleDialogProps.title", + "type": "React.ReactNode" + } + ] + }, + "DialogOnOpenEventT": { + "documentation": { + "contents": [ + "

    Events

    \n" + ], + "contentsRaw": "Events", + "metadata": {} + }, + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "DialogOnOpenEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L20", + "type": "RMWC.CustomEventT<{}>" + }, + "DialogOnOpenedEventT": { + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "DialogOnOpenedEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L21", + "type": "RMWC.CustomEventT<{}>" + }, + "DialogOnCloseEventT": { + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "DialogOnCloseEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L22", + "type": "RMWC.CustomEventT<>" + }, + "DialogOnClosedEventT": { + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "DialogOnClosedEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L23", + "type": "RMWC.CustomEventT<>" + }, + "SimpleDialogHTMLProps": { + "fileName": "src/dialog/dialog.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SimpleDialogHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/dialog/dialog.tsx#L108", + "type": "RMWC.HTMLProps, \"title\">>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/dialog/index.tsx b/packages/mc-react-ui-components/src/lib/dialog/index.tsx new file mode 100644 index 00000000..833f5b45 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/dialog/index.tsx @@ -0,0 +1,2 @@ +export * from './dialog'; +export * from './dialog-queue'; diff --git a/packages/mc-react-ui-components/src/lib/dialog/styles.tsx b/packages/mc-react-ui-components/src/lib/dialog/styles.tsx new file mode 100644 index 00000000..15b7ade0 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/dialog/styles.tsx @@ -0,0 +1,3 @@ +import '@material/dialog/dist/mdc.dialog.css'; +import '../button/styles'; +import '../ripple/styles'; diff --git a/packages/mc-react-ui-components/src/lib/drawer/README.md b/packages/mc-react-ui-components/src/lib/drawer/README.md new file mode 100644 index 00000000..ff186c00 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/README.md @@ -0,0 +1,189 @@ +# Drawers + +> A navigation drawer slides in from the left and contains the navigation destinations for your app. + +- Module **@rmwc/drawer** +- Import styles: + - Using CSS Loader + - import '@rmwc/drawer/styles'; + - Or include stylesheets + - **'@material/drawer/dist/mdc.drawer.css'** +- MDC Docs: [https://material.io/develop/web/components/drawers/](https://material.io/develop/web/components/drawers/) + +## Permanent + +These are drawers that are permanently fixed inside of a view. + +```jsx + + + DrawerHeader + Subtitle + + + + Cookies + Pizza + Icecream + + + +``` + +## Dismissible + +These are drawers that can be toggled to an open or closed state inside of a view, but still takes up viewable space when closed. + +```jsx +function Example() { + const [open, setOpen] = React.useState(false); + + return ( + <> +
    + + + DrawerHeader + Subtitle + + + + Cookies + Pizza + Icecream + + + + + {/* Optional DrawerAppContent */} + + DrawerAppContent is an optional component that will resize + content when the dismissible drawer is open and closed. It + must be placed directly after the Drawer component. + +
    + +
    + +
    + + ); +} +``` + +## Modal + +These are drawers that can be temporarily displayed fixed on the side of the entire viewport. + +```jsx +function Example() { + const [open, setOpen] = React.useState(false); + + return ( + <> + setOpen(false)}> + + DrawerHeader + Subtitle + + + + Cookies + Pizza + Icecream + + + + + + + ); +} +``` + +## Right Side Drawers + +`material-components-web` doesn't directly support right hand drawers, but it respects the `dir` attribute on DOM elements. This simple hack will allow you to get drawers that appear from the right hand side of your app. As an aside, the `dir` attribute can be used to invert many other behaviors where the element is anchored on the left. + +```jsx +function Example() { + const [open, setOpen] = React.useState(false); + + return ( + <> + {/** Make the drawer appear right-to-left */} + setOpen(false)} + > + {/** Set the content back to left-to-right */} + + Right Drawer + Subtitle + + + + + Cookies + Pizza + Icecream + + + + + + + ); +} +``` + +## Drawer +A Drawer component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `dismissible` | `undefined \| false \| true` | Makes a dismissible drawer. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `modal` | `undefined \| false \| true` | Makes a modal / temporary drawer. | +| `onClose` | `undefined \| (evt: DrawerOnOpenEventT) => void` | Callback that fires when the Drawer is closed. | +| `onOpen` | `undefined \| (evt: DrawerOnCloseEventT) => void` | Callback that fires when the Drawer is opened. | +| `open` | `undefined \| false \| true` | Opens or closes the Drawer. | + + +## DrawerHeader +An optional header for the Drawer. + + + +## DrawerTitle +An title for the DrawerHeader. + + + +## DrawerSubtitle +A subtitle for the DrawerHeader. + + + +## DrawerContent +Content for Drawers. + + + +## DrawerAppContent +For the Dismissible variant only. Sibling element that is resized when the drawer opens/closes. + + + diff --git a/packages/mc-react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx new file mode 100644 index 00000000..df5097b0 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx @@ -0,0 +1,62 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { + Drawer, + DrawerContent, + DrawerHeader, + DrawerTitle, + DrawerSubtitle +} from './'; + +describe('Drawer SSR', () => { + it('Drawer renders', () => { + mount( + + + Title + Subtitle + + + + ); + }); + + it('dismissible Drawer renders', () => { + mount( + + + Title + Subtitle + + + + ); + }); + + it('modal Drawer renders', () => { + if (React.Fragment !== undefined) { + mount( + + + Title + Subtitle + + + + ); + } else { + mount( + + + Title + Subtitle + + + + ); + } + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/drawer/drawer.spec.tsx b/packages/mc-react-ui-components/src/lib/drawer/drawer.spec.tsx new file mode 100644 index 00000000..079a4c76 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/drawer.spec.tsx @@ -0,0 +1,80 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { + Drawer, + DrawerContent, + DrawerHeader, + DrawerTitle, + DrawerSubtitle, + DrawerAppContent +} from './'; + +describe('Drawer', () => { + it('Drawer renders', () => { + mount( + + + Title + Subtitle + + + + ); + }); + + it('dismissible Drawer renders', () => { + mount( + + + + Title + Subtitle + + + + Test + + ); + }); + + it('modal Drawer renders', () => { + mount( + + + + Title + Subtitle + + + + + ); + }); + + it('can open', (done) => { + const el = mount( + + + Title + Subtitle + + + + ); + + el.setProps({ open: true }); + + setTimeout(() => { + expect(el.html().includes('mdc-drawer--open')).toBe(true); + done(); + }); + }); + it('can have custom classnames', () => { + [Drawer, DrawerHeader, DrawerContent, DrawerTitle, DrawerSubtitle].forEach( + (Component: React.ComponentType) => { + const el = mount(); + expect(!!~el.html().search('my-custom-classname')).toEqual(true); + } + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx b/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx new file mode 100644 index 00000000..2d0e1b9a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx @@ -0,0 +1,60 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { action } from '@storybook/addon-actions'; +// import { boolean } from '@storybook/addon-knobs'; +// import { +// Drawer, +// DrawerHeader, +// DrawerContent, +// DrawerTitle, +// DrawerSubtitle +// } from './'; +// import { List, ListItem, ListItemGraphic } from '../list'; +// import { useKnob } from '@rmwc/base/utils/use-knob'; + +// const menuItems = [ +// { displayName: 'Home', icon: 'home' }, +// { displayName: 'Profile', icon: 'account_circle' }, +// { displayName: 'About', icon: 'info' }, +// { displayName: 'Contact', icon: 'phone' } +// ]; + +// const ListItems = (props: any) => ( +// <> +// {menuItems.map((section, i) => ( +// +// {section.icon} +// {section.displayName} +// +// ))} +// +// ); + +// storiesOf('Drawers', module).add('Drawer', function () { +// const [open, setOpen] = useKnob('boolean', 'open', true); +// return ( +//
    +// { +// action('onClose')(); +// setOpen(false); +// }} +// foundationRef={console.log} +// > +// +// DrawerTitle +// DrawerSubtitle +// +// +// +// +// +// +// +//
    +// ); +// }); diff --git a/packages/mc-react-ui-components/src/lib/drawer/foundation.tsx b/packages/mc-react-ui-components/src/lib/drawer/foundation.tsx new file mode 100644 index 00000000..56cc9c20 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/foundation.tsx @@ -0,0 +1,139 @@ +import { + MDCModalDrawerFoundation, + MDCDismissibleDrawerFoundation +} from '@material/drawer'; +import { DrawerProps } from '.'; +import { + useFoundation, + FocusTrap, + focusTrapFactory, + triggerWindowResize +} from '../base'; +import React, { useRef, useEffect, useCallback } from 'react'; + +const useDrawerFoundationFactory = ( + MDCConstructor: + | typeof MDCModalDrawerFoundation + | typeof MDCDismissibleDrawerFoundation +) => + function useDrawerFoundation(props: DrawerProps & React.HTMLProps) { + const focusTrapRef = useRef(); + + const { foundation, ...elements } = useFoundation({ + props, + elements: { + rootEl: true, + scrimEl: true + }, + foundation: ({ rootEl, emit, getProps }) => { + let previousFocusEl: HTMLElement; + + const f = new MDCConstructor({ + addClass: (className: string) => rootEl.addClass(className), + removeClass: (className: string) => rootEl.removeClass(className), + hasClass: (className: string) => rootEl.hasClass(className), + elementHasClass: (element: HTMLElement, className: string) => + element.classList.contains(className), + saveFocus: () => { + previousFocusEl = document.activeElement as HTMLElement; + }, + restoreFocus: () => { + if ( + rootEl.ref && + rootEl.ref.contains(document.activeElement) && + previousFocusEl + ) { + previousFocusEl.focus(); + } + }, + focusActiveNavigationItem: () => { + const activeNavItemEl = rootEl.ref?.querySelector( + `.mdc-list-item--activated` + ); + if (activeNavItemEl) { + (activeNavItemEl as HTMLElement).focus(); + } + }, + notifyClose: () => { + //emit('onClose', {}, true /* shouldBubble */); + }, + notifyOpen: () => { + emit('onOpen', {}, true /* shouldBubble */); + }, + trapFocus: () => { + try { + focusTrapRef.current?.trapFocus(); + } catch (err) {} + }, + releaseFocus: () => { + try { + focusTrapRef.current?.releaseFocus(); + } catch (err) {} + } + }); + + // Fixes a very annoying issue where the menu isn't stateful + // this allows us to keep the menu open based on its controlled prop. + const existingClose = f.close.bind(f); + const newClose = () => { + emit('onClose', {}); + + setTimeout(() => { + if (!getProps().open) { + existingClose(); + } + }); + }; + f.close = newClose; + + return f; + } + }); + + const { rootEl, scrimEl } = elements; + + useEffect(() => { + if (rootEl.ref) { + focusTrapRef.current = focusTrapFactory(rootEl.ref); + } + }, [rootEl.ref]); + + useEffect(() => { + props.open ? foundation.open() : foundation.close(); + }, [props.open, foundation]); + + const handleScrimClick = useCallback(() => { + (foundation as MDCModalDrawerFoundation).handleScrimClick?.(); + }, [foundation]); + + const handleKeyDown = useCallback( + (evt: React.KeyboardEvent & KeyboardEvent) => { + props.onKeyDown?.(evt); + foundation.handleKeydown(evt); + }, + [foundation, props.onKeyDown] + ); + + const handleTransitionEnd = useCallback( + (evt: React.TransitionEvent & TransitionEvent) => { + props.onTransitionEnd?.(evt); + foundation.handleTransitionEnd(evt); + triggerWindowResize(); + }, + [foundation, props.onTransitionEnd] + ); + + rootEl.setProp('onKeyDown', handleKeyDown, true); + rootEl.setProp('onTransitionEnd', handleTransitionEnd, true); + scrimEl.setProp('onClick', handleScrimClick, true); + + return { foundation, ...elements }; + }; + +export const useDismissableDrawerFoundation = useDrawerFoundationFactory( + MDCDismissibleDrawerFoundation +); + +export const useModalDrawerFoundation = useDrawerFoundationFactory( + MDCModalDrawerFoundation +); diff --git a/packages/mc-react-ui-components/src/lib/drawer/generated-examples.json b/packages/mc-react-ui-components/src/lib/drawer/generated-examples.json new file mode 100644 index 00000000..7479c3f8 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/generated-examples.json @@ -0,0 +1 @@ +["\n \n DrawerHeader\n Subtitle\n \n \n \n Cookies\n Pizza\n Icecream\n \n \n","function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n <>\n
    \n \n \n DrawerHeader\n Subtitle\n \n \n \n Cookies\n Pizza\n Icecream\n \n \n \n\n {/* Optional DrawerAppContent */}\n \n DrawerAppContent is an optional component that will resize\n content when the dismissible drawer is open and closed. It\n must be placed directly after the Drawer component.\n \n
    \n\n
    \n \n
    \n \n );\n}","function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n <>\n setOpen(false)}>\n \n DrawerHeader\n Subtitle\n \n \n \n Cookies\n Pizza\n Icecream\n \n \n \n\n \n \n );\n}","function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n <>\n {/** Make the drawer appear right-to-left */}\n setOpen(false)}\n >\n {/** Set the content back to left-to-right */}\n \n Right Drawer\n Subtitle\n \n\n \n \n Cookies\n Pizza\n Icecream\n \n \n \n\n \n \n );\n}"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/drawer/generated-props.json b/packages/mc-react-ui-components/src/lib/drawer/generated-props.json new file mode 100644 index 00000000..a1cdc87f --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/generated-props.json @@ -0,0 +1,341 @@ +{ + "npm": {}, + "typescript": { + "DrawerProps": { + "documentation": { + "contents": [ + "

    A Drawer component.

    \n" + ], + "contentsRaw": "A Drawer component.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DrawerProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L25", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Makes a dismissible drawer.

    \n" + ], + "contentsRaw": "Makes a dismissible drawer.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dismissible", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L33", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L37", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Makes a modal / temporary drawer.

    \n" + ], + "contentsRaw": "Makes a modal / temporary drawer.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "modal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L35", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Callback that fires when the Drawer is closed.

    \n" + ], + "contentsRaw": "Callback that fires when the Drawer is closed.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L29", + "type": "undefined | (evt: DrawerOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback that fires when the Drawer is opened.

    \n" + ], + "contentsRaw": "Callback that fires when the Drawer is opened.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L31", + "type": "undefined | (evt: DrawerOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Opens or closes the Drawer.

    \n" + ], + "contentsRaw": "Opens or closes the Drawer.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L27", + "type": "undefined | false | true" + } + ] + }, + "DrawerHeaderProps": { + "documentation": { + "contents": [ + "

    An optional header for the Drawer.

    \n" + ], + "contentsRaw": "An optional header for the Drawer.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DrawerHeaderProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L104", + "methods": [], + "properties": [] + }, + "DrawerTitleProps": { + "documentation": { + "contents": [ + "

    An title for the DrawerHeader.

    \n" + ], + "contentsRaw": "An title for the DrawerHeader.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DrawerTitleProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L115", + "methods": [], + "properties": [] + }, + "DrawerSubtitleProps": { + "documentation": { + "contents": [ + "

    A subtitle for the DrawerHeader.

    \n" + ], + "contentsRaw": "A subtitle for the DrawerHeader.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DrawerSubtitleProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L126", + "methods": [], + "properties": [] + }, + "DrawerContentProps": { + "documentation": { + "contents": [ + "

    Content for Drawers.

    \n" + ], + "contentsRaw": "Content for Drawers.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DrawerContentProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L137", + "methods": [], + "properties": [] + }, + "DrawerAppContentProps": { + "documentation": { + "contents": [ + "

    For the Dismissible variant only. Sibling element that is resized when the drawer opens/closes.

    \n" + ], + "contentsRaw": "For the Dismissible variant only. Sibling element that is resized when the drawer opens/closes.", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "DrawerAppContentProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L155", + "methods": [], + "properties": [] + }, + "DrawerOnCloseEventT": { + "documentation": { + "contents": [ + "

    Events

    \n" + ], + "contentsRaw": "Events", + "metadata": {} + }, + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "DrawerOnCloseEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L17", + "type": "RMWC.CustomEventT<{}>" + }, + "DrawerOnOpenEventT": { + "fileName": "src/drawer/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "DrawerOnOpenEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/drawer/index.tsx#L18", + "type": "RMWC.CustomEventT<{}>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/drawer/index.tsx b/packages/mc-react-ui-components/src/lib/drawer/index.tsx new file mode 100644 index 00000000..5d9a199a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/index.tsx @@ -0,0 +1,163 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { + MDCModalDrawerFoundation, + MDCDismissibleDrawerFoundation +} from '@material/drawer'; +import { mergeRefs, Tag, useClassNames, createComponent } from '../base'; +import { + useDismissableDrawerFoundation, + useModalDrawerFoundation +} from './foundation'; + +/*************************************************************************************** + * Events + ***************************************************************************************/ + +export type DrawerOnCloseEventT = RMWC.CustomEventT<{}>; +export type DrawerOnOpenEventT = RMWC.CustomEventT<{}>; + +/*************************************************************************************** + * Drawers + ***************************************************************************************/ + +/** A Drawer component. */ +export interface DrawerProps { + /** Opens or closes the Drawer. */ + open?: boolean; + /** Callback that fires when the Drawer is closed. */ + onClose?: (evt: DrawerOnOpenEventT) => void; + /** Callback that fires when the Drawer is opened. */ + onOpen?: (evt: DrawerOnCloseEventT) => void; + /** Makes a dismissible drawer. */ + dismissible?: boolean; + /** Makes a modal / temporary drawer. */ + modal?: boolean; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref< + MDCModalDrawerFoundation | MDCDismissibleDrawerFoundation + >; +} + +/** A Drawer component. */ +export const Drawer = createComponent(function Drawer(props, ref) { + if (props.dismissible) { + return ; + } + + if (props.modal) { + return ; + } + + return ; +}); + +const slidableDrawerFactory = ( + useDrawerFoundation: + | typeof useDismissableDrawerFoundation + | typeof useModalDrawerFoundation +) => { + const DrawerInner = createComponent(function DrawerInner( + props, + ref + ) { + const { rootEl, scrimEl } = useDrawerFoundation(props); + const { onOpen, onClose, open, foundationRef, ...rest } = props; + return ( + <> + + {rest.modal && } + + ); + }); + + return DrawerInner; +}; + +const ModalDrawer = slidableDrawerFactory(useModalDrawerFoundation); +const DismissibleDrawer = slidableDrawerFactory(useDismissableDrawerFoundation); + +const DrawerRoot = createComponent(function DrawerRoot( + props, + ref +) { + const { dismissible, modal, foundationRef, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-drawer', + { + 'mdc-drawer--dismissible': dismissible, + 'mdc-drawer--modal': modal + } + ]); + + return ; +}); + +/*************************************************************************************** + * Bits + ***************************************************************************************/ + +/** An optional header for the Drawer. */ +export interface DrawerHeaderProps {} + +/** An optional header for the Drawer. */ +export const DrawerHeader = createComponent( + function DrawerHeader(props, ref) { + const className = useClassNames(props, ['mdc-drawer__header']); + return ; + } +); + +/** An title for the DrawerHeader. */ +export interface DrawerTitleProps {} + +/** An title for the DrawerHeader. */ +export const DrawerTitle = createComponent( + function DrawerTitle(props, ref) { + const className = useClassNames(props, ['mdc-drawer__title']); + return ; + } +); + +/** A subtitle for the DrawerHeader. */ +export interface DrawerSubtitleProps {} + +/** A subtitle for the DrawerHeader. */ +export const DrawerSubtitle = createComponent( + function DrawerSubtitle(props, ref) { + const className = useClassNames(props, ['mdc-drawer__subtitle']); + return ; + } +); + +/** Content for Drawers. */ +export interface DrawerContentProps {} + +/** Content for Drawers. */ +export const DrawerContent = createComponent( + function DrawerContent(props, ref) { + const className = useClassNames(props, ['mdc-drawer__content']); + return ; + } +); + +/** Protects the app's UI from interactions while a modal drawer is open. */ +const DrawerScrim = ({ + onClick +}: { + onClick: (evt: React.MouseEvent) => void; +}) =>
    ; + +/** For the Dismissible variant only. Sibling element that is resized when the drawer opens/closes. */ +export interface DrawerAppContentProps {} + +/** For the Dismissible variant only. Sibling element that is resized when the drawer opens/closes. */ +export const DrawerAppContent = createComponent( + function DrawerAppContent(props, ref) { + const className = useClassNames(props, ['mdc-drawer-app-content']); + return ; + } +); diff --git a/packages/mc-react-ui-components/src/lib/drawer/styles.tsx b/packages/mc-react-ui-components/src/lib/drawer/styles.tsx new file mode 100644 index 00000000..a0965608 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/drawer/styles.tsx @@ -0,0 +1 @@ +import '@material/drawer/dist/mdc.drawer.css'; diff --git a/packages/mc-react-ui-components/src/lib/elevation/README.md b/packages/mc-react-ui-components/src/lib/elevation/README.md new file mode 100644 index 00000000..48dd032b --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/README.md @@ -0,0 +1,63 @@ +# Elevation + +> Elevation is the relative distance between two surfaces along the z-axis. + +- Module **@rmwc/elevation** +- Import styles: + - Using CSS Loader + - import '@rmwc/elevation/styles'; + - Or include stylesheets + - **'@material/elevation/dist/mdc.elevation.css'** +- MDC Docs: [https://material.io/develop/web/components/elevation/](https://material.io/develop/web/components/elevation/) + +```jsx +<> + {Array(25) + .fill(undefined) + .map((val, i) => ( + + {i}dp + + ))} + +``` + +```jsx +function Example() { + const [elevation, setElevation] = React.useState(0); + + return ( + setElevation(24)} + onMouseOut={() => setElevation(0)} + > + Hover Me {elevation}dp + + ); +} +``` + +## Wrapping Children + +You can avoid adding extra DOM nodes by using the `wrap` prop on elevation. This will apply the classes directly to the child component. Additionally, Elevation is simply a `className`, so you can achieve the same effect by adding `className="mdc-elevation--z15"`. + +```jsx + + Wrapped! + +``` + +## Elevation +The Elevation Component + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `transition` | `undefined \| false \| true` | Allows for smooth transitions between elevations when the z value changes. | +| `wrap` | `undefined \| false \| true` | Allows the elevation classes to be merged onto the child component instead of creating an new DOM node. | +| `z` | `number \| string` | A number from 0 - 24 for different levels of elevation | + + diff --git a/packages/mc-react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx new file mode 100644 index 00000000..909ca47b --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Elevation } from './'; + +describe('Elevation SSR', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/elevation/elevation.spec.tsx b/packages/mc-react-ui-components/src/lib/elevation/elevation.spec.tsx new file mode 100644 index 00000000..356a68a7 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/elevation.spec.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { Elevation } from './'; + +describe('Elevation', () => { + it('renders', () => { + mount(); + }); + + it('can have z value', () => { + const el = mount(); + expect(!!~el.html().search('mdc-elevation--z24')).toBe(true); + }); + + it('can transition', () => { + const el = mount(); + expect(!!~el.html().search('mdc-elevation-transition')).toBe(true); + }); + + it('can have custom classnames', () => { + const el = mount(); + expect(!!~el.html().search('my-custom-classname')).toEqual(true); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx b/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx new file mode 100644 index 00000000..3850ca37 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx @@ -0,0 +1,71 @@ +// import React from 'react'; +// import { storiesOf } from '@storybook/react'; +// import { Elevation } from './'; +// import { Link, BrowserRouter } from 'react-router-dom'; + +// const elevationStyle = { +// padding: '16px', +// margin: '16px', +// display: 'inline-block', +// width: '96px', +// height: '96px', +// verticalAlign: 'top' +// }; + +// class HoverElevation extends React.Component { +// state = { +// elevation: 0 +// }; + +// render() { +// return ( +// this.setState({ elevation: 24 })} +// onMouseOut={() => this.setState({ elevation: 0 })} +// > +// Hover Me {this.state.elevation}dp +// +// ); +// } +// } + +// storiesOf('Elevation', module) +// .add('Elevation', () => ( +//
    +// + +// {Array(25) +// .fill(undefined) +// .map((val, i) => ( +// +// {i}dp +// +// ))} +//
    +// )) +// .add('Component Test', () => { +// return ( +// <> +// +// Box +// + +// console.log(el)} +// > +// Ref +// + +// +// +// Tag +// +// +// +// ); +// }); diff --git a/packages/mc-react-ui-components/src/lib/elevation/generated-examples.json b/packages/mc-react-ui-components/src/lib/elevation/generated-examples.json new file mode 100644 index 00000000..84ff8de3 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/generated-examples.json @@ -0,0 +1 @@ +["<>\n {Array(25)\n .fill(undefined)\n .map((val, i) => (\n \n {i}dp\n \n ))}\n","function Example() {\n const [elevation, setElevation] = React.useState(0);\n\n return (\n setElevation(24)}\n onMouseOut={() => setElevation(0)}\n >\n Hover Me {elevation}dp\n
    \n );\n}","\n Wrapped!\n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/elevation/generated-props.json b/packages/mc-react-ui-components/src/lib/elevation/generated-props.json new file mode 100644 index 00000000..c41d9434 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/generated-props.json @@ -0,0 +1,103 @@ +{ + "npm": {}, + "typescript": { + "ElevationProps": { + "documentation": { + "contents": [ + "

    The Elevation Component

    \n" + ], + "contentsRaw": "The Elevation Component", + "metadata": {} + }, + "fileName": "src/elevation/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "ElevationProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/elevation/index.tsx#L8", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Allows for smooth transitions between elevations when the z value changes.

    \n" + ], + "contentsRaw": "Allows for smooth transitions between elevations when the z value changes.", + "metadata": {} + }, + "fileName": "src/elevation/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "transition", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/elevation/index.tsx#L12", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Allows the elevation classes to be merged onto the child component instead of creating an new DOM node.

    \n" + ], + "contentsRaw": "Allows the elevation classes to be merged onto the child component instead of creating an new DOM node.", + "metadata": {} + }, + "fileName": "src/elevation/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "wrap", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/elevation/index.tsx#L14", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A number from 0 - 24 for different levels of elevation

    \n" + ], + "contentsRaw": "A number from 0 - 24 for different levels of elevation", + "metadata": {} + }, + "fileName": "src/elevation/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "z", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/elevation/index.tsx#L10", + "type": "number | string" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/elevation/index.tsx b/packages/mc-react-ui-components/src/lib/elevation/index.tsx new file mode 100644 index 00000000..c48abac6 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/index.tsx @@ -0,0 +1,34 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +import React from 'react'; +import { wrapChild, createComponent } from '../base'; +import { Tag, useClassNames } from '../base'; + +/** The Elevation Component */ +export interface ElevationProps { + /** A number from 0 - 24 for different levels of elevation */ + z?: number | string; + /** Allows for smooth transitions between elevations when the z value changes. */ + transition?: boolean; + /** Allows the elevation classes to be merged onto the child component instead of creating an new DOM node. */ + wrap?: boolean; +} + +/** The Elevation Component */ +export const Elevation = createComponent(function Elevation( + props, + ref +) { + const { z = 0, transition = false, wrap, ...rest } = props; + + const className = useClassNames(props, [ + `mdc-elevation--z${z}`, + { 'mdc-elevation-transition': transition } + ]); + + if (wrap) { + return wrapChild({ ...rest, className, ref }); + } + + return ; +}); diff --git a/packages/mc-react-ui-components/src/lib/elevation/styles.tsx b/packages/mc-react-ui-components/src/lib/elevation/styles.tsx new file mode 100644 index 00000000..8fbd71f7 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/elevation/styles.tsx @@ -0,0 +1 @@ +import '@material/elevation/dist/mdc.elevation.css'; diff --git a/packages/mc-react-ui-components/src/lib/fab/README.md b/packages/mc-react-ui-components/src/lib/fab/README.md new file mode 100644 index 00000000..125a77c1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/README.md @@ -0,0 +1,57 @@ +# Fabs + +A floating action button (FAB) represents the primary action of a screen. + +- Module **@rmwc/fab** +- Import styles: + - Using CSS Loader + - import '@rmwc/fab/styles'; + - Or include stylesheets + - **'@material/fab/dist/mdc.fab.css'** + - **'@rmwc/icon/icon.css'** + - **'@material/ripple/dist/mdc.ripple.css'** +- MDC Docs: [https://material.io/develop/web/components/buttons/floating-action-buttons/](https://material.io/develop/web/components/buttons/floating-action-buttons/) + +```jsx + +``` + +```jsx + +``` + +```jsx +<> + + + + +``` + +```jsx +<> + + + +``` + +## Fab +A floating action button component + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `children` | `React.ReactNode` | Content specified as children. | +| `exited` | `undefined \| false \| true` | Animates the FAB out of view. When this class is removed, the FAB will return to view. | +| `icon` | `RMWC.IconPropT` | The icon for the FAB | +| `label` | `React.ReactNode & any` | Make the Fab extended with a label. | +| `mini` | `undefined \| false \| true` | Make the Fab smaller. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | +| `trailingIcon` | `RMWC.IconPropT` | A trialing icon for the FAB | + + diff --git a/packages/mc-react-ui-components/src/lib/fab/fab-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/fab/fab-ssr.spec.tsx new file mode 100644 index 00000000..7203c2a2 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/fab-ssr.spec.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Fab } from './'; + +describe('Fab SSR', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/fab/fab.spec.tsx b/packages/mc-react-ui-components/src/lib/fab/fab.spec.tsx new file mode 100644 index 00000000..8949a9e0 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/fab.spec.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { Fab } from './'; + +describe('Fab', () => { + it('renders', () => { + const btn = mount(); + expect(btn.html().includes('mdc-fab')).toEqual(true); + }); + + it('can be mini', () => { + const btn = mount(); + expect(btn.html().includes('mdc-fab--mini')).toEqual(true); + }); + + it('can ripple', () => { + const btn = mount(); + expect(btn.html().includes('mdc-fab')).toEqual(true); + }); + + it('cannot ripple', () => { + const btn = mount(); + expect(btn.html().includes('mdc-ripple-surface')).toEqual(false); + }); + + it('can be extended', () => { + const btn = mount(); + expect(btn.html().includes('test-label')).toEqual(true); + }); + + it('can have custom classnames', () => { + const el = mount(); + expect(el.html().includes('my-custom-classname')).toEqual(true); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx b/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx new file mode 100644 index 00000000..45abaa8d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx @@ -0,0 +1,22 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { action } from '@storybook/addon-actions'; +// import { boolean } from '@storybook/addon-knobs'; +// import { Fab } from './'; + +// storiesOf('Buttons', module) +// .add('Fab', () => ( +// +// favorite +// +// )) +// .add('cssOnly Fab', () => ( +// +// favorite +// +// )); diff --git a/packages/mc-react-ui-components/src/lib/fab/generated-examples.json b/packages/mc-react-ui-components/src/lib/fab/generated-examples.json new file mode 100644 index 00000000..92dc0a48 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/generated-examples.json @@ -0,0 +1 @@ +["","","<>\n \n \n \n","<>\n \n \n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/fab/generated-props.json b/packages/mc-react-ui-components/src/lib/fab/generated-props.json new file mode 100644 index 00000000..bbe01193 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/generated-props.json @@ -0,0 +1,202 @@ +{ + "npm": {}, + "typescript": { + "FabProps": { + "documentation": { + "contents": [ + "

    A floating action button component

    \n" + ], + "contentsRaw": "A floating action button component", + "metadata": {} + }, + "fileName": "src/fab/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "FabProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/fab/index.tsx#L8", + "extends": [ + "WithRippleProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Content specified as children.

    \n" + ], + "contentsRaw": "Content specified as children.", + "metadata": {} + }, + "fileName": "src/fab/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/fab/index.tsx#L18", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Animates the FAB out of view. When this class is removed, the FAB will return to view.

    \n" + ], + "contentsRaw": "Animates the FAB out of view. When this class is removed, the FAB will return to view.", + "metadata": {} + }, + "fileName": "src/fab/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "exited", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/fab/index.tsx#L20", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    The icon for the FAB

    \n" + ], + "contentsRaw": "The icon for the FAB", + "metadata": {} + }, + "fileName": "src/fab/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/fab/index.tsx#L12", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Make the Fab extended with a label.

    \n" + ], + "contentsRaw": "Make the Fab extended with a label.", + "metadata": {} + }, + "fileName": "src/fab/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/fab/index.tsx#L16", + "type": "React.ReactNode & any" + }, + { + "documentation": { + "contents": [ + "

    Make the Fab smaller.

    \n" + ], + "contentsRaw": "Make the Fab smaller.", + "metadata": {} + }, + "fileName": "src/fab/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "mini", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/fab/index.tsx#L10", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/fab/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + }, + { + "documentation": { + "contents": [ + "

    A trialing icon for the FAB

    \n" + ], + "contentsRaw": "A trialing icon for the FAB", + "metadata": {} + }, + "fileName": "src/fab/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "trailingIcon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/fab/index.tsx#L14", + "type": "RMWC.IconPropT" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/fab/index.tsx b/packages/mc-react-ui-components/src/lib/fab/index.tsx new file mode 100644 index 00000000..a0bc79ad --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/index.tsx @@ -0,0 +1,73 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { withRipple } from '../ripple'; +import { Icon, IconProps } from '../icon'; +import { Tag, useClassNames, createComponent } from '../base'; + +/** A floating action button component */ +export interface FabProps extends RMWC.WithRippleProps { + /** Make the Fab smaller. */ + mini?: boolean; + /** The icon for the FAB */ + icon?: RMWC.IconPropT; + /** A trialing icon for the FAB */ + trailingIcon?: RMWC.IconPropT; + /** Make the Fab extended with a label. */ + label?: React.ReactNode & any; + /** Content specified as children. */ + children?: React.ReactNode; + /** Animates the FAB out of view. When this class is removed, the FAB will return to view. */ + exited?: boolean; +} + +/** A floating action button component */ +export const Fab = withRipple({ surface: false })( + createComponent(function Fab(props, ref) { + const { + children, + label, + icon, + trailingIcon, + mini, + exited, + ...rest + } = props; + + const className = useClassNames(props, [ + 'mdc-fab', + { + 'mdc-fab--mini': mini, + 'mdc-fab--exited': exited, + 'mdc-fab--extended': label + } + ]); + + if (trailingIcon && !label) { + console.warn( + `FAB 'trailingIcon' prop should only be used in conjunction with 'label'` + ); + } + + return ( + + + {!!icon && } + {!!label &&
    {label}
    } + {children} + {!!trailingIcon && } +
    + ); + }) +); + +/********************************************************************* + * Bits + *********************************************************************/ + +const FabRipple = React.memo(function FabRipple() { + return
    ; +}); + +const FabIcon = React.memo(function FabIcon(props: IconProps) { + return ; +}); diff --git a/packages/mc-react-ui-components/src/lib/fab/styles.tsx b/packages/mc-react-ui-components/src/lib/fab/styles.tsx new file mode 100644 index 00000000..0cff87f0 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/fab/styles.tsx @@ -0,0 +1,3 @@ +import '@material/fab/dist/mdc.fab.css'; +import '../icon/styles'; +import '../ripple/styles'; diff --git a/packages/mc-react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx new file mode 100644 index 00000000..15e7bc61 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { FloatingLabel } from './'; + +describe('FloatingLabel SSR', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/floating-label/floating-label.spec.tsx b/packages/mc-react-ui-components/src/lib/floating-label/floating-label.spec.tsx new file mode 100644 index 00000000..7a8397ff --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/floating-label/floating-label.spec.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { FloatingLabel } from './'; + +describe('FloatingLabel', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/floating-label/foundation.tsx b/packages/mc-react-ui-components/src/lib/floating-label/foundation.tsx new file mode 100644 index 00000000..4b127a4f --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/floating-label/foundation.tsx @@ -0,0 +1,58 @@ +import { useFoundation } from '../base'; + +import { FloatingLabelProps, FloatingLabelApi } from '.'; +import { + MDCFloatingLabelFoundation, + MDCFloatingLabelAdapter +} from '@material/floating-label'; +import { EventType, SpecificEventListener } from '@material/base/types'; +import React, { useEffect } from 'react'; + +export const useFloatingLabelFoundation = ( + props: FloatingLabelProps & React.HTMLProps +) => { + const { foundation, ...elements } = useFoundation({ + props, + elements: { + rootEl: true + }, + api: ({ + foundation + }: { + foundation: MDCFloatingLabelFoundation; + }): FloatingLabelApi => { + return { + getWidth() { + return foundation.getWidth(); + } + }; + }, + foundation: ({ rootEl }) => { + return new MDCFloatingLabelFoundation({ + addClass: (className: string) => rootEl.addClass(className), + removeClass: (className: string) => rootEl.removeClass(className), + getWidth: () => rootEl.ref?.scrollWidth || 0, + registerInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => rootEl.addEventListener(evtType, handler), + deregisterInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => rootEl.removeEventListener(evtType, handler) + } as MDCFloatingLabelAdapter); + } + }); + + // Shake + useEffect(() => { + foundation.shake(!!props.shake); + }, [props.shake, foundation]); + + // Float + useEffect(() => { + foundation.float(!!props.float); + }, [props.float, foundation]); + + return { foundation, ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/floating-label/generated-examples.json b/packages/mc-react-ui-components/src/lib/floating-label/generated-examples.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/floating-label/generated-examples.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/floating-label/generated-props.json b/packages/mc-react-ui-components/src/lib/floating-label/generated-props.json new file mode 100644 index 00000000..5fbd374a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/floating-label/generated-props.json @@ -0,0 +1,94 @@ +{ + "npm": {}, + "typescript": { + "FloatingLabelProps": { + "fileName": "src/floating-label/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "FloatingLabelProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/floating-label/index.tsx#L7", + "methods": [], + "properties": [ + { + "fileName": "src/floating-label/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "float", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/floating-label/index.tsx#L9", + "type": "undefined | false | true" + }, + { + "fileName": "src/floating-label/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "shake", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/floating-label/index.tsx#L8", + "type": "undefined | false | true" + } + ] + }, + "FloatingLabelApi": { + "fileName": "src/floating-label/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "FloatingLabelApi", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/floating-label/index.tsx#L12", + "methods": [], + "properties": [ + { + "fileName": "src/floating-label/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getWidth", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/floating-label/index.tsx#L13", + "type": "() => number" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/floating-label/index.tsx b/packages/mc-react-ui-components/src/lib/floating-label/index.tsx new file mode 100644 index 00000000..c24f0b85 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/floating-label/index.tsx @@ -0,0 +1,27 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +import React from 'react'; +import { useFloatingLabelFoundation } from './foundation'; +import { createComponent, mergeRefs } from '../base'; + +export interface FloatingLabelProps { + shake?: boolean; + float?: boolean; +} + +export interface FloatingLabelApi { + getWidth: () => number; +} + +export const FloatingLabel = createComponent< + FloatingLabelProps & { apiRef?: (api: FloatingLabelApi | null) => void } +>(function FloatingLabel(props, ref) { + const { rootEl } = useFloatingLabelFoundation(props); + const { shake, float, apiRef, ...rest } = props; + return ( + + ); +}); diff --git a/packages/mc-react-ui-components/src/lib/floating-label/styles.tsx b/packages/mc-react-ui-components/src/lib/floating-label/styles.tsx new file mode 100644 index 00000000..3febbeae --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/floating-label/styles.tsx @@ -0,0 +1 @@ +import '@material/floating-label/dist/mdc.floating-label.css'; diff --git a/packages/mc-react-ui-components/src/lib/formfield/README.md b/packages/mc-react-ui-components/src/lib/formfield/README.md new file mode 100644 index 00000000..eba9fe2c --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/README.md @@ -0,0 +1,30 @@ +# Form Fields + +> MDC Form Field provides an mdc-formfield helper class for easily making theme-aware, RTL-aware form field + label combos. It also provides an MDCFormField class for easily making input ripples respond to label events. + +- Module **@rmwc/formfield** +- Import styles: + - Using CSS Loader + - import '@rmwc/formfield/styles'; + - Or include stylesheets + - **'@material/form-field/dist/mdc.form-field.css'** +- MDC Docs: [https://material.io/develop/web/components/input-controls/form-fields/](https://material.io/develop/web/components/input-controls/form-fields/) + +```jsx + + + + +``` + +## FormField +A FormField component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `alignEnd` | `undefined \| false \| true` | Position the input after the label. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | + + diff --git a/packages/mc-react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx new file mode 100644 index 00000000..61163c0a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx @@ -0,0 +1,17 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { FormField } from './'; + +describe('FormField SSR', () => { + test('renders', () => { + mount( + + + + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/formfield/form-field.spec.tsx b/packages/mc-react-ui-components/src/lib/formfield/form-field.spec.tsx new file mode 100644 index 00000000..5dddd4ad --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/form-field.spec.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { FormField } from './'; + +describe('FormField', () => { + test('renders', () => { + mount( + + + + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/formfield/foundation.tsx b/packages/mc-react-ui-components/src/lib/formfield/foundation.tsx new file mode 100644 index 00000000..f21bc993 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/foundation.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { EventType, SpecificEventListener } from '@material/base/types'; +import { MDCFormFieldFoundation } from '@material/form-field'; +import { useFoundation } from '../base'; +import { FormFieldProps } from '.'; + +export const useFormfieldFoundation = ( + props: FormFieldProps & React.HTMLProps +) => { + useFoundation({ + props, + elements: {}, + foundation: () => + // For RMWC, the entire foundation is a noop. Interactions and ripples are controlled + // on the components themselves + new MDCFormFieldFoundation({ + registerInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => {}, + deregisterInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => {}, + activateInputRipple: () => {}, + deactivateInputRipple: () => {} + }) + }); +}; diff --git a/packages/mc-react-ui-components/src/lib/formfield/generated-examples.json b/packages/mc-react-ui-components/src/lib/formfield/generated-examples.json new file mode 100644 index 00000000..455c0226 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/generated-examples.json @@ -0,0 +1 @@ +["\n \n \n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/formfield/generated-props.json b/packages/mc-react-ui-components/src/lib/formfield/generated-props.json new file mode 100644 index 00000000..1014596c --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/generated-props.json @@ -0,0 +1,79 @@ +{ + "npm": {}, + "typescript": { + "FormFieldProps": { + "documentation": { + "contents": [ + "

    A FormField component.

    \n" + ], + "contentsRaw": "A FormField component.", + "metadata": {} + }, + "fileName": "src/formfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "FormFieldProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/formfield/index.tsx#L9", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Position the input after the label.

    \n" + ], + "contentsRaw": "Position the input after the label.", + "metadata": {} + }, + "fileName": "src/formfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "alignEnd", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/formfield/index.tsx#L11", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/formfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/formfield/index.tsx#L13", + "type": "React.Ref" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/formfield/index.tsx b/packages/mc-react-ui-components/src/lib/formfield/index.tsx new file mode 100644 index 00000000..9e4304d0 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/index.tsx @@ -0,0 +1,31 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +import React from 'react'; +import { MDCFormFieldFoundation } from '@material/form-field'; +import { Tag, useClassNames, createComponent } from '../base'; +import { useFormfieldFoundation } from './foundation'; + +/** A FormField component. */ +export interface FormFieldProps { + /** Position the input after the label. */ + alignEnd?: boolean; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +/** A FormField component. */ +export const FormField = createComponent(function FormField( + props, + ref +) { + useFormfieldFoundation(props); + + const { alignEnd, foundationRef, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-form-field', + { + 'mdc-form-field--align-end': props.alignEnd + } + ]); + return ; +}); diff --git a/packages/mc-react-ui-components/src/lib/formfield/styles.tsx b/packages/mc-react-ui-components/src/lib/formfield/styles.tsx new file mode 100644 index 00000000..db84cda8 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/formfield/styles.tsx @@ -0,0 +1 @@ +import '@material/form-field/dist/mdc.form-field.css'; diff --git a/packages/mc-react-ui-components/src/lib/grid-list/README.md b/packages/mc-react-ui-components/src/lib/grid-list/README.md new file mode 100644 index 00000000..19d7c9e6 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/grid-list/README.md @@ -0,0 +1,129 @@ +# Grid Lists + +Grid lists are an alternative to standard list views. + +- Module **@rmwc/grid-list** +- Import styles: + - Using CSS Loader + - import '@rmwc/grid-list/styles'; + - Or include stylesheets + - **'@material/grid-list/dist/mdc.grid-list.css'** +- MDC Docs: [https://material.io/components/web/catalog/grid-lists/](https://material.io/components/web/catalog/grid-lists/) + +```jsx +function Example() { + const [state, setState] = React.useState({ + tileGutter1: false, + headerCaption: false, + twolineCaption: false, + withIconAlignStart: false, + tileAspect: '1x1' + }); + + return ( + <> + + {Array(8) + .fill(undefined) + .map((val, i) => ( + + + + + + + Tile {i + 1} + + + ))} + + + {[ + 'tileGutter1', + 'headerCaption', + 'twoLineCaption', + 'withIconAlignStart' + ].map(key => ( + + setState({ ...state, [key]: evt.currentTarget.checked }) + } + /> + ))} + + setAnchorCorner(evt.currentTarget.value)} + options={[ + 'topLeft', + 'topRight', + 'bottomLeft', + 'bottomRight', + 'topStart', + 'topEnd', + 'bottomStart', + 'bottomEnd' + ]} + /> + + ); +} +``` + +## Rendering through Portals + +Occasionally, you may find your menu being cut off from being inside a container that is styled to be `overflow:hidden`. RMWC provides a `renderToPortal` prop that lets you use React's portal functionality to render the menu dropdown in a different container. + +You can specify any element or selector you want, but the simplest method is to pass `true` and use RMWC's built in `Portal` component. + +```jsx + + // Somewhere at the top level of your app + // Render the RMWC Portal + // You only have to do this once + import React from 'react'; + import { Portal } from '@rmwc/base'; + + export default function App() { + return ( +
    + ... + +
    + ) + } + +``` + +Now you can use the `renderToPortal` prop. Below is a contrived example of a menu being cut off due to `overflow: hidden`. + +```jsx +function Example() { + const [renderToPortal, setRenderToPortal] = React.useState(true); + const options = ['Cookies', 'Pizza', 'Icecream']; + return ( + <> +
    + + + + {options.map(o => ( + {o} + ))} + + +
    + setRenderToPortal(evt.currentTarget.checked)} + label="renderToPortal" + /> + + ); +} +``` + +## Menu +A menu component for displaying lists items. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `apiRef` | `undefined \| (api: MenuApi \| null) => void` | Internal api reference for cross component communication. | +| `focusOnOpen` | `undefined \| false \| true` | Whether or not to focus the first list item on open. Defaults to true. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `onSelect` | `undefined \| (evt: MenuOnSelectEventT) => void` | Callback that fires when a Menu item is selected. evt.detail = { index: number; item: HTMLElement; } | + + +## MenuItem +This is just the ListItem component exported from the Menu module for convenience. You can use `ListItem` or `SimpleListItem` components from the List section as long as you add `role="menuitem"` and `tabIndex="0"` to the components for accessibility. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `activated` | `undefined \| false \| true` | A modifier for an active state. | +| `disabled` | `undefined \| false \| true` | A modifier for a disabled state. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | +| `selected` | `undefined \| false \| true` | A modifier for a selected state. | + + +## MenuSurface +### Props + +| Name | Type | Description | +|------|------|-------------| +| `anchorCorner` | `AnchorT` | Manually position the menu to one of the corners. | +| `apiRef` | `undefined \| (api: MenuSurfaceApi \| null) => void` | An internal api for cross component communication. | +| `children` | `React.ReactNode` | Children to render. | +| `fixed` | `undefined \| false \| true` | Make the menu position fixed. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `onClose` | `undefined \| (evt: MenuSurfaceOnCloseEventT) => void` | Callback for when the menu is closed. | +| `onOpen` | `undefined \| (evt: MenuSurfaceOnOpenEventT) => void` | Callback for when the menu is opened. | +| `open` | `undefined \| false \| true` | Opens the menu. | +| `renderToPortal` | `PortalPropT` | Renders the menu to a portal. Useful for situations where the content might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal. | + + +## MenuSurfaceAnchor +MenuSurfaceAnchor + + + +## SimpleMenu +A Simplified menu component that allows you to pass a handle element and will automatically control the open state and add a MenuSurfaceAnchor + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `apiRef` | `undefined \| (api: MenuApi \| null) => void` | Internal api reference for cross component communication. | +| `children` | `React.ReactNode` | Children to render | +| `focusOnOpen` | `undefined \| false \| true` | Whether or not to focus the first list item on open. Defaults to true. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `handle` | `ReactElement` | An element that will open the menu when clicked | +| `onSelect` | `undefined \| (evt: MenuOnSelectEventT) => void` | Callback that fires when a Menu item is selected. evt.detail = { index: number; item: HTMLElement; } | +| `rootProps` | `Object` | By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor. | + + +## SimpleMenuSurface +The same as SimpleMenu, but a generic surface. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `anchorCorner` | `AnchorT` | Manually position the menu to one of the corners. | +| `apiRef` | `undefined \| (api: MenuSurfaceApi \| null) => void` | An internal api for cross component communication. | +| `children` | `React.ReactNode` | Children to render | +| `fixed` | `undefined \| false \| true` | Make the menu position fixed. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `handle` | `ReactElement` | An element that will open the menu when clicked | +| `onClose` | `undefined \| (evt: MenuSurfaceOnCloseEventT) => void` | Callback for when the menu is closed. | +| `onOpen` | `undefined \| (evt: MenuSurfaceOnOpenEventT) => void` | Callback for when the menu is opened. | +| `open` | `undefined \| false \| true` | Opens the menu. | +| `renderToPortal` | `PortalPropT` | Renders the menu to a portal. Useful for situations where the content might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal. | +| `rootProps` | `Object` | By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor. | + + diff --git a/packages/mc-react-ui-components/src/lib/menu/generated-examples.json b/packages/mc-react-ui-components/src/lib/menu/generated-examples.json new file mode 100644 index 00000000..e2174930 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/generated-examples.json @@ -0,0 +1 @@ +["function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n \n console.log(evt.detail.index)}\n onClose={evt => setOpen(false)}\n >\n Cookies\n Pizza\n {/** MenuItem is just a ListItem, so you can intermingle other List components */}\n \n Icecream\n \n\n \n \n );\n}","function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n \n setOpen(false)}>\n
    \n Make the content whatever you want.\n
    \n
    \n\n \n
    \n );\n}","function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n \n setOpen(false)}>\n
    Menu
    \n
    \n {/** The handle can be any component you want */}\n setOpen(!open)} />\n
    \n );\n}","Simple Menu}>\n Cookies\n Pizza\n Icecream\n","Simple Menu Surface}>\n
    \n Make the content whatever you want.\n
    \n
    ","function Example() {\n const [anchorCorner, setAnchorCorner] = React.useState(\n 'topLeft'\n );\n\n return (\n <>\n \n \n
    \n anchorCorner: {anchorCorner}\n
    \n
    \n \n \n {options.map(o => (\n {o}\n ))}\n \n
    \n
    \n setRenderToPortal(evt.currentTarget.checked)}\n label=\"renderToPortal\"\n />\n \n );\n}"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/menu/generated-props.json b/packages/mc-react-ui-components/src/lib/menu/generated-props.json new file mode 100644 index 00000000..43629b03 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/generated-props.json @@ -0,0 +1,1760 @@ +{ + "npm": {}, + "typescript": { + "MenuSurfaceApi": { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "MenuSurfaceApi", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L21", + "methods": [], + "properties": [ + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getSurfaceElement", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L26", + "type": "() => HTMLElement | null" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "hoistMenuToBody", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L22", + "type": "() => void" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "setAnchorCorner", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L23", + "type": "(corner: Corner) => void" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "setAnchorElement", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L24", + "type": "(element: HTMLElement) => void" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "setOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L25", + "type": "(open: boolean) => void" + } + ] + }, + "MenuSurfaceProps": { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "MenuSurfaceProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L29", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Manually position the menu to one of the corners.

    \n" + ], + "contentsRaw": "Manually position the menu to one of the corners.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "anchorCorner", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L37", + "type": "AnchorT" + }, + { + "documentation": { + "contents": [ + "

    An internal api for cross component communication.

    \n" + ], + "contentsRaw": "An internal api for cross component communication.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L45", + "type": "undefined | (api: MenuSurfaceApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    Children to render.

    \n" + ], + "contentsRaw": "Children to render.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L43", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Make the menu position fixed.

    \n" + ], + "contentsRaw": "Make the menu position fixed.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "fixed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L33", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L47", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the menu is closed.

    \n" + ], + "contentsRaw": "Callback for when the menu is closed.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L41", + "type": "undefined | (evt: MenuSurfaceOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the menu is opened.

    \n" + ], + "contentsRaw": "Callback for when the menu is opened.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L39", + "type": "undefined | (evt: MenuSurfaceOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Opens the menu.

    \n" + ], + "contentsRaw": "Opens the menu.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L31", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Renders the menu to a portal. Useful for situations where the content might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal.

    \n" + ], + "contentsRaw": "Renders the menu to a portal. Useful for situations where the content might be cutoff by an overflow: hidden container. You can pass \"true\" to render to the default RMWC portal.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "renderToPortal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L35", + "type": "PortalPropT" + } + ] + }, + "MenuSurfaceAnchorProps": { + "documentation": { + "contents": [ + "

    MenuSurfaceAnchor

    \n" + ], + "contentsRaw": "MenuSurfaceAnchor", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "MenuSurfaceAnchorProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L92", + "methods": [], + "properties": [] + }, + "MenuApi": { + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "MenuApi", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L30", + "extends": [ + "ListApi", + "MenuSurfaceApi" + ], + "methods": [], + "properties": [ + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "addClassToElementIndex", + "inheritedFrom": "ListApi.addClassToElementIndex", + "type": "(index: number, className: string) => void" + }, + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "focusItemAtIndex", + "inheritedFrom": "ListApi.focusItemAtIndex", + "type": "(index: number) => void" + }, + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "focusRoot", + "inheritedFrom": "ListApi.focusRoot", + "type": "() => void" + }, + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getClasses", + "inheritedFrom": "ListApi.getClasses", + "type": "() => string" + }, + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getListItemCount", + "inheritedFrom": "ListApi.getListItemCount", + "type": "() => number" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getSurfaceElement", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L26", + "inheritedFrom": "MenuSurfaceApi.getSurfaceElement", + "type": "() => HTMLElement | null" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "hoistMenuToBody", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L22", + "inheritedFrom": "MenuSurfaceApi.hoistMenuToBody", + "type": "() => void" + }, + { + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "items", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L31", + "type": "() => HTMLLIElement[]" + }, + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "listElements", + "inheritedFrom": "ListApi.listElements", + "type": "() => HTMLLIElement[]" + }, + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "removeClassFromElementAtIndex", + "inheritedFrom": "ListApi.removeClassFromElementAtIndex", + "type": "(index: number, className: string) => void" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "setAnchorCorner", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L23", + "inheritedFrom": "MenuSurfaceApi.setAnchorCorner", + "type": "(corner: Corner) => void" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "setAnchorElement", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L24", + "inheritedFrom": "MenuSurfaceApi.setAnchorElement", + "type": "(element: HTMLElement) => void" + }, + { + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "setAttributeForElementIndex", + "inheritedFrom": "ListApi.setAttributeForElementIndex", + "type": "(index: number, attr: string, value: any) => void" + }, + { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "setOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L25", + "inheritedFrom": "MenuSurfaceApi.setOpen", + "type": "(open: boolean) => void" + } + ] + }, + "MenuProps": { + "documentation": { + "contents": [ + "

    A menu component for displaying lists items.

    \n" + ], + "contentsRaw": "A menu component for displaying lists items.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "MenuProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L35", + "extends": [ + "any" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Internal api reference for cross component communication.

    \n" + ], + "contentsRaw": "Internal api reference for cross component communication.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L42", + "type": "undefined | (api: MenuApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    Whether or not to focus the first list item on open. Defaults to true.

    \n" + ], + "contentsRaw": "Whether or not to focus the first list item on open. Defaults to true.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "focusOnOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L40", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L44", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Callback that fires when a Menu item is selected. evt.detail = { index: number; item: HTMLElement; }

    \n" + ], + "contentsRaw": "Callback that fires when a Menu item is selected. evt.detail = { index: number; item: HTMLElement; }", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onSelect", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L38", + "type": "undefined | (evt: MenuOnSelectEventT) => void" + } + ] + }, + "MenuItemsProps": { + "documentation": { + "contents": [ + "

    A wrapper for menu items

    \n" + ], + "contentsRaw": "A wrapper for menu items", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "MenuItemsProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L53", + "extends": [ + "ListProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    An internal api used for cross component communication

    \n" + ], + "contentsRaw": "An internal api used for cross component communication", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "inheritedFrom": "ListProps.apiRef", + "type": "undefined | (api: ListApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    Makes the list start detail circular for avatars.

    \n" + ], + "contentsRaw": "Makes the list start detail circular for avatars.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "avatarList", + "inheritedFrom": "ListProps.avatarList", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Reduces the padding on List items.

    \n" + ], + "contentsRaw": "Reduces the padding on List items.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "inheritedFrom": "ListProps.dense", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "inheritedFrom": "ListProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Makes the list non interactive. In addition, you'll have to set ripple={false} on the individual ListItems.

    \n" + ], + "contentsRaw": "Makes the list non interactive. In addition, you'll have to set `ripple={false}` on the individual ListItems.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "nonInteractive", + "inheritedFrom": "ListProps.nonInteractive", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A callback for when a list item is interacted with. evt.detail = number

    \n" + ], + "contentsRaw": "A callback for when a list item is interacted with. evt.detail = number", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onAction", + "inheritedFrom": "ListProps.onAction", + "type": "undefined | (evt: ListOnActionEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Gives more space for dual lined list items.

    \n" + ], + "contentsRaw": "Gives more space for dual lined list items.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "twoLine", + "inheritedFrom": "ListProps.twoLine", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Sets the lists vertical orientation. Defaults to true

    \n" + ], + "contentsRaw": "Sets the lists vertical orientation. Defaults to true", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "vertical", + "inheritedFrom": "ListProps.vertical", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Sets the list to allow the up arrow on the first element to focus the\nlast element of the list and vice versa. Defaults to true

    \n" + ], + "contentsRaw": "Sets the list to allow the up arrow on the first element to focus the\nlast element of the list and vice versa. Defaults to true", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "wrapFocus", + "inheritedFrom": "ListProps.wrapFocus", + "type": "undefined | false | true" + } + ] + }, + "MenuItemProps": { + "documentation": { + "contents": [ + "

    This is just the ListItem component exported from the Menu module for convenience. You can use ListItem or SimpleListItem components from the List section as long as you add role="menuitem" and tabIndex="0" to the components for accessibility.

    \n" + ], + "contentsRaw": "This is just the ListItem component exported from the Menu module for convenience. You can use `ListItem` or `SimpleListItem` components from the List section as long as you add `role=\"menuitem\"` and `tabIndex=\"0\"` to the components for accessibility.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "MenuItemProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L66", + "extends": [ + "ListItemProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    A modifier for an active state.

    \n" + ], + "contentsRaw": "A modifier for an active state.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list-item.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "activated", + "inheritedFrom": "ListItemProps.activated", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A modifier for a disabled state.

    \n" + ], + "contentsRaw": "A modifier for a disabled state.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list-item.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "inheritedFrom": "ListItemProps.disabled", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + }, + { + "documentation": { + "contents": [ + "

    A modifier for a selected state.

    \n" + ], + "contentsRaw": "A modifier for a selected state.", + "metadata": {} + }, + "fileName": "src/menu/node_modules/@rmwc/list/list-item.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "selected", + "inheritedFrom": "ListItemProps.selected", + "type": "undefined | false | true" + } + ] + }, + "SimpleMenuProps": { + "documentation": { + "contents": [ + "

    A Simplified menu component that allows you to pass a handle element and will automatically control the open state and add a MenuSurfaceAnchor

    \n" + ], + "contentsRaw": "A Simplified menu component that allows you to pass a handle element and will automatically control the open state and add a MenuSurfaceAnchor", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SimpleMenuProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L126", + "extends": [ + "MenuProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Internal api reference for cross component communication.

    \n" + ], + "contentsRaw": "Internal api reference for cross component communication.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L42", + "inheritedFrom": "MenuProps.apiRef", + "type": "undefined | (api: MenuApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    Children to render

    \n" + ], + "contentsRaw": "Children to render", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L132", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Whether or not to focus the first list item on open. Defaults to true.

    \n" + ], + "contentsRaw": "Whether or not to focus the first list item on open. Defaults to true.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "focusOnOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L40", + "inheritedFrom": "MenuProps.focusOnOpen", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L44", + "inheritedFrom": "MenuProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    An element that will open the menu when clicked

    \n" + ], + "contentsRaw": "An element that will open the menu when clicked", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "handle", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L128", + "type": "ReactElement" + }, + { + "documentation": { + "contents": [ + "

    Callback that fires when a Menu item is selected. evt.detail = { index: number; item: HTMLElement; }

    \n" + ], + "contentsRaw": "Callback that fires when a Menu item is selected. evt.detail = { index: number; item: HTMLElement; }", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onSelect", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L38", + "inheritedFrom": "MenuProps.onSelect", + "type": "undefined | (evt: MenuOnSelectEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor.

    \n" + ], + "contentsRaw": "By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "rootProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L130", + "type": "Object" + } + ] + }, + "SimpleMenuSurfaceProps": { + "documentation": { + "contents": [ + "

    The same as SimpleMenu, but a generic surface.

    \n" + ], + "contentsRaw": "The same as SimpleMenu, but a generic surface.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SimpleMenuSurfaceProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L136", + "extends": [ + "MenuSurfaceProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Manually position the menu to one of the corners.

    \n" + ], + "contentsRaw": "Manually position the menu to one of the corners.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "anchorCorner", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L37", + "inheritedFrom": "MenuSurfaceProps.anchorCorner", + "type": "AnchorT" + }, + { + "documentation": { + "contents": [ + "

    An internal api for cross component communication.

    \n" + ], + "contentsRaw": "An internal api for cross component communication.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L45", + "inheritedFrom": "MenuSurfaceProps.apiRef", + "type": "undefined | (api: MenuSurfaceApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    Children to render

    \n" + ], + "contentsRaw": "Children to render", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L142", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Make the menu position fixed.

    \n" + ], + "contentsRaw": "Make the menu position fixed.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "fixed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L33", + "inheritedFrom": "MenuSurfaceProps.fixed", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L47", + "inheritedFrom": "MenuSurfaceProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    An element that will open the menu when clicked

    \n" + ], + "contentsRaw": "An element that will open the menu when clicked", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "handle", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L138", + "type": "ReactElement" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the menu is closed.

    \n" + ], + "contentsRaw": "Callback for when the menu is closed.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L41", + "inheritedFrom": "MenuSurfaceProps.onClose", + "type": "undefined | (evt: MenuSurfaceOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Callback for when the menu is opened.

    \n" + ], + "contentsRaw": "Callback for when the menu is opened.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L39", + "inheritedFrom": "MenuSurfaceProps.onOpen", + "type": "undefined | (evt: MenuSurfaceOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Opens the menu.

    \n" + ], + "contentsRaw": "Opens the menu.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L31", + "inheritedFrom": "MenuSurfaceProps.open", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Renders the menu to a portal. Useful for situations where the content might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal.

    \n" + ], + "contentsRaw": "Renders the menu to a portal. Useful for situations where the content might be cutoff by an overflow: hidden container. You can pass \"true\" to render to the default RMWC portal.", + "metadata": {} + }, + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "renderToPortal", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L35", + "inheritedFrom": "MenuSurfaceProps.renderToPortal", + "type": "PortalPropT" + }, + { + "documentation": { + "contents": [ + "

    By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor.

    \n" + ], + "contentsRaw": "By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor.", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "rootProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L140", + "type": "Object" + } + ] + }, + "SimpleMenuState": { + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SimpleMenuState", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L145", + "methods": [], + "properties": [ + { + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L146", + "type": "boolean" + } + ] + }, + "AnchorT": { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "AnchorT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L8", + "type": "\"bottomEnd\" | \"bottomLeft\" | \"bottomRight\" | \"bottomStart\" | \"topEnd\" | \"topLeft\" | \"topRight\" | \"topStart\"" + }, + "MenuSurfaceOnOpenEventT": { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "MenuSurfaceOnOpenEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L18", + "type": "RMWC.CustomEventT<{}>" + }, + "MenuSurfaceOnCloseEventT": { + "fileName": "src/menu/menu-surface/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "MenuSurfaceOnCloseEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu-surface/index.tsx#L19", + "type": "RMWC.CustomEventT<{}>" + }, + "MenuOnSelectEventT": { + "documentation": { + "contents": [ + "

    Menu

    \n" + ], + "contentsRaw": "Menu", + "metadata": {} + }, + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "MenuOnSelectEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L25", + "type": "RMWC.CustomEventT<>" + }, + "MenuHTMLProps": { + "fileName": "src/menu/menu/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "MenuHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/menu/menu/index.tsx#L47", + "type": "RMWC.HTMLProps, \"onSelect\">>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/menu/index.tsx b/packages/mc-react-ui-components/src/lib/menu/index.tsx new file mode 100644 index 00000000..ab234193 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/index.tsx @@ -0,0 +1,2 @@ +export * from './menu'; +export * from './menu-surface'; diff --git a/packages/mc-react-ui-components/src/lib/menu/menu-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/menu/menu-ssr.spec.tsx new file mode 100644 index 00000000..7cf549f6 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/menu-ssr.spec.tsx @@ -0,0 +1,32 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { MenuSurfaceAnchor, Menu, MenuItem, SimpleMenu } from './'; + +describe('Menu', () => { + it('renders', () => { + mount( + + + + {}}> + Cookies + Pizza + Icecream + + + ); + }); + + it('SimpleMenu renders', () => { + mount( + Test}> + Cookies + Pizza + Icecream + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/menu/menu-surface/foundation.tsx b/packages/mc-react-ui-components/src/lib/menu/menu-surface/foundation.tsx new file mode 100644 index 00000000..ebc3fac3 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/menu-surface/foundation.tsx @@ -0,0 +1,327 @@ +import React, { useCallback, useEffect, useState, useRef } from 'react'; +import { + useFoundation, + closest, + emptyClientRect, + FoundationElement, + raf +} from '../../base'; +import { + MDCMenuSurfaceFoundation, + util, + MDCMenuDimensions, + Corner, + MDCMenuDistance +} from '@material/menu-surface'; +import { MenuSurfaceProps, MenuSurfaceApi } from '.'; + +const ANCHOR_CORNER_MAP: { + [key: string]: keyof typeof MDCMenuSurfaceFoundation.Corner; +} = { + bottomEnd: 'BOTTOM_END', + bottomLeft: 'BOTTOM_LEFT', + bottomRight: 'BOTTOM_RIGHT', + bottomStart: 'BOTTOM_START', + topEnd: 'TOP_END', + topLeft: 'TOP_LEFT', + topRight: 'TOP_RIGHT', + topStart: 'TOP_START' +}; + +const getAnchorCornerFromProp = ( + anchorCorner: keyof typeof ANCHOR_CORNER_MAP +) => MDCMenuSurfaceFoundation.Corner[ANCHOR_CORNER_MAP[anchorCorner]]; + +export const useMenuSurfaceFoundation = ( + props: MenuSurfaceProps & React.HTMLProps +) => { + const [open, setOpen] = useState(props.open); + const firstFocusableElementRef = useRef(null); + const previousFocusRef = useRef(null); + const anchorElementRef = useRef(null); + const timerIdRef = useRef(null); + + const { foundation, ...elements } = useFoundation({ + props, + elements: { rootEl: true }, + api: ({ + foundation, + rootEl + }: { + foundation: MDCMenuSurfaceFoundation; + rootEl: FoundationElement; + }): MenuSurfaceApi => { + return { + hoistMenuToBody: () => { + // this is controlled by the renderToPortal prop + }, + setAnchorCorner: (corner: Corner) => foundation.setAnchorCorner(corner), + setAnchorElement: (element: HTMLElement) => + (anchorElementRef.current = element), + setOpen: (open: boolean) => setOpen(open), + getSurfaceElement: () => rootEl.ref + }; + }, + foundation: ({ rootEl, getProps, emit }) => { + const handleBodyClick = (evt: MouseEvent | TouchEvent) => { + foundation.handleBodyClick(evt as MouseEvent); + }; + + const registerBodyClickListener = () => { + /** + * Corrects issue on mobile devices that don't support fast click + * Causing the menu to close as soon as its open + **/ + setTimeout(() => { + document.body.addEventListener('click', handleBodyClick); + document.body.addEventListener('touchstart', handleBodyClick); + }, 150); + }; + const deregisterBodyClickListener = () => { + document.body.removeEventListener('click', handleBodyClick); + document.body.removeEventListener('touchstart', handleBodyClick); + }; + + const getFocusAdapterMethods = () => { + return { + isFocused: () => document.activeElement === rootEl.ref, + saveFocus: () => { + previousFocusRef.current = document.activeElement as HTMLElement; + }, + restoreFocus: () => { + if (rootEl.ref && rootEl.ref.contains(document.activeElement)) { + if (previousFocusRef.current && previousFocusRef.current.focus) { + previousFocusRef.current.focus(); + } + } + }, + isFirstElementFocused: () => + !!firstFocusableElementRef.current && + firstFocusableElementRef.current === document.activeElement, + isLastElementFocused: () => + !!firstFocusableElementRef.current && + firstFocusableElementRef.current === document.activeElement, + focusFirstElement: () => + !!firstFocusableElementRef.current && + firstFocusableElementRef.current.focus && + firstFocusableElementRef.current.focus(), + focusLastElement: () => + !!firstFocusableElementRef.current && + firstFocusableElementRef.current.focus && + firstFocusableElementRef.current.focus() + }; + }; + + const getDimensionAdapterMethods = () => { + return { + getInnerDimensions: (): MDCMenuDimensions => { + return { + width: rootEl.ref ? rootEl.ref.offsetWidth : 0, + height: rootEl.ref ? rootEl.ref.offsetHeight : 0 + }; + }, + getAnchorDimensions: () => { + return ( + anchorElementRef.current?.getBoundingClientRect() || + emptyClientRect + ); + }, + getWindowDimensions: () => { + return { + width: window.innerWidth, + height: window.innerHeight + }; + }, + getBodyDimensions: () => { + return { + width: document.body.clientWidth, + height: document.body.clientHeight + }; + }, + getWindowScroll: () => { + return { x: window.pageXOffset, y: window.pageYOffset }; + }, + setPosition: (position: Partial) => { + rootEl.setStyle( + 'left', + position.left !== undefined ? position.left : null + ); + rootEl.setStyle( + 'right', + position.right !== undefined ? position.right : null + ); + rootEl.setStyle( + 'top', + position.top !== undefined ? position.top : null + ); + rootEl.setStyle( + 'bottom', + position.bottom !== undefined ? position.bottom : null + ); + }, + setMaxHeight: (height: string) => { + rootEl.setStyle('maxHeight', height); + } + }; + }; + + const f = new MDCMenuSurfaceFoundation({ + addClass: (className: string) => { + rootEl.addClass(className); + }, + removeClass: (className: string) => { + rootEl.removeClass(className); + }, + hasClass: (className: string) => + className === 'mdc-menu-surface' ? true : rootEl.hasClass(className), + hasAnchor: () => !!anchorElementRef.current, + notifyClose: () => { + deregisterBodyClickListener(); + setOpen(false); + }, + notifyOpen: () => { + emit('onOpen', {}); + registerBodyClickListener(); + }, + isElementInContainer: (el: HTMLElement) => + rootEl.ref === el || (!!rootEl.ref && rootEl.ref.contains(el)), + isRtl: () => + !!rootEl.ref && + getComputedStyle(rootEl.ref).getPropertyValue('direction') === 'rtl', + setTransformOrigin: (origin: string) => { + rootEl.setStyle( + `${util.getTransformPropertyName(window)}-origin`, + origin + ); + }, + ...getFocusAdapterMethods(), + ...getDimensionAdapterMethods() + }); + + // Fixes a very annoying issue where the menu isn't stateful + // this allows us to keep the menu open based on its controlled prop. + const existingClose = f.close.bind(f); + const newClose = (skipRestoreFocus = false) => { + emit('onClose', {}); + + timerIdRef.current = window.setTimeout(() => { + if (!getProps().open) { + existingClose(skipRestoreFocus); + } + }); + }; + f.close = newClose; + + // Didn't have another way to hook into the destroy function... + const existingDestroy = f.destroy.bind(f); + f.destroy = () => { + deregisterBodyClickListener(); + existingDestroy(); + }; + + return f; + } + }); + + const { rootEl } = elements; + + const handleKeydown = useCallback( + (evt: React.KeyboardEvent & KeyboardEvent) => { + props.onKeyDown?.(evt); + foundation.handleKeydown(evt); + }, + [props.onKeyDown, foundation] + ); + + rootEl.setProp('onKeyDown', handleKeydown, true); + + // fixed + useEffect(() => { + foundation.setFixedPosition(!!props.fixed); + }, [props.fixed, foundation]); + + // on mount + useEffect(() => { + const el = rootEl.ref; + + if (el) { + const anchor = closest( + el, + `.${MDCMenuSurfaceFoundation.cssClasses.ANCHOR}` + ); + anchor && (anchorElementRef.current = anchor); + } + }, [rootEl.ref]); + + // renderToPortal + useEffect(() => { + props.renderToPortal + ? foundation.setIsHoisted(true) + : foundation.setIsHoisted(false); + + const autoPosition = () => { + try { + // silence this, it blows up loudly occasionally + // @ts-ignore unsafe private variable access + foundation.autoPosition_(); + } catch (err) {} + }; + + // wait an extra frame so that the element is actually + // done being hoisted and painting. Fixes Issue #453 + const handler = props.renderToPortal ? autoPosition : () => {}; + + raf(() => { + foundation.isOpen() && autoPosition(); + }); + + // fix positioning on window resize when renderToPortal is true + window.addEventListener('resize', handler); + return () => { + window.removeEventListener('resize', handler); + }; + }, [props.renderToPortal, foundation]); + + // anchorCorner + useEffect(() => { + const anchorCorner = + props.anchorCorner && getAnchorCornerFromProp(props.anchorCorner); + + if (anchorCorner !== undefined) { + foundation.setAnchorCorner(anchorCorner); + // @ts-ignore unsafe private variable reference + foundation.dimensions_ = foundation.adapter_.getInnerDimensions(); + // @ts-ignore unsafe private variable reference + foundation.autoPosition_(); + } + }, [props.anchorCorner, foundation]); + + // open + useEffect(() => { + if (open) { + const focusableElements = rootEl.ref + ? rootEl.ref.querySelectorAll( + MDCMenuSurfaceFoundation.strings.FOCUSABLE_ELEMENTS + ) + : []; + firstFocusableElementRef.current = + focusableElements.length > 0 ? focusableElements[0] : null; + foundation.open(); + } else if (foundation.isOpen()) { + foundation.close(); + } + }, [open, foundation, rootEl.ref]); + + useEffect(() => { + setOpen(!!props.open); + }, [props.open]); + + // cleanup + useEffect(() => { + return () => { + timerIdRef.current && window.clearTimeout(timerIdRef.current); + }; + }, []); + + return { ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/menu/menu-surface/index.tsx b/packages/mc-react-ui-components/src/lib/menu/menu-surface/index.tsx new file mode 100644 index 00000000..eecee211 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/menu-surface/index.tsx @@ -0,0 +1,100 @@ +import * as RMWC from '../../types'; +import React from 'react'; +import { Corner, MDCMenuSurfaceFoundation } from '@material/menu-surface'; +import { useClassNames, Tag, createComponent } from '../../base'; +import { useMenuSurfaceFoundation } from './foundation'; +import { PortalChild, PortalPropT } from '../../base'; + +export type AnchorT = + | 'bottomEnd' + | 'bottomLeft' + | 'bottomRight' + | 'bottomStart' + | 'topEnd' + | 'topLeft' + | 'topRight' + | 'topStart'; + +export type MenuSurfaceOnOpenEventT = RMWC.CustomEventT<{}>; +export type MenuSurfaceOnCloseEventT = RMWC.CustomEventT<{}>; + +export interface MenuSurfaceApi { + hoistMenuToBody: () => void; + setAnchorCorner: (corner: Corner) => void; + setAnchorElement: (element: HTMLElement) => void; + setOpen: (open: boolean) => void; + getSurfaceElement: () => HTMLElement | null; +} + +export interface MenuSurfaceProps { + /** Opens the menu. */ + open?: boolean; + /** Make the menu position fixed. */ + fixed?: boolean; + /** Renders the menu to a portal. Useful for situations where the content might be cutoff by an overflow: hidden container. You can pass "true" to render to the default RMWC portal. */ + renderToPortal?: PortalPropT; + /** Manually position the menu to one of the corners. */ + anchorCorner?: AnchorT; + /** Callback for when the menu is opened. */ + onOpen?: (evt: MenuSurfaceOnOpenEventT) => void; + /** Callback for when the menu is closed. */ + onClose?: (evt: MenuSurfaceOnCloseEventT) => void; + /** Children to render. */ + children?: React.ReactNode; + /** An internal api for cross component communication. */ + apiRef?: (api: MenuSurfaceApi | null) => void; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +/**************************************************************** + * MenuSurface + ****************************************************************/ + +/** A generic menu component for displaying any type of content. */ +export const MenuSurface = createComponent( + function MenuSurface(props, ref) { + const { + children, + open, + anchorCorner, + onOpen, + onClose, + renderToPortal, + fixed, + apiRef, + foundationRef, + ...rest + } = props; + + const { rootEl } = useMenuSurfaceFoundation(props); + + const className = useClassNames(props, [ + 'mdc-menu-surface', + { + 'mdc-menu-surface--fixed': fixed + } + ]); + + return ( + + + {children} + + + ); + } +); + +/**************************************************************** + * MenuSurfaceAnchor + ****************************************************************/ +export interface MenuSurfaceAnchorProps {} + +/** A Menu Anchor. When using the anchorCorner prop of Menu, you must set MenuSurfaceAnchors css style position to absolute. */ +export const MenuSurfaceAnchor = createComponent( + function MenuSurfaceAnchor(props, ref) { + const className = useClassNames(props, ['mdc-menu-surface--anchor']); + return ; + } +); diff --git a/packages/mc-react-ui-components/src/lib/menu/menu.spec.tsx b/packages/mc-react-ui-components/src/lib/menu/menu.spec.tsx new file mode 100644 index 00000000..4be298ce --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/menu.spec.tsx @@ -0,0 +1,146 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { + MenuSurfaceAnchor, + Menu, + MenuSurface, + MenuItem, + SimpleMenu, + SimpleMenuSurface +} from './'; + +describe('Menu', () => { + it('renders', () => { + const el = mount( + {}}> + Cookies + Pizza + Icecream + + ); + + el.setProps({ open: false, anchorCorner: 'bottomRight' }); + }); + + it('can be fixed', () => { + const el = mount( + + + + + Cookies + Pizza + Icecream + + + ); + + expect(el.html().includes('mdc-menu-surface--fixed')).toBe(true); + }); + + it('dynamically updates aria-hidden based on whether or not the menu is open', () => { + let el = mount(
    ); + + expect(el.find(MenuSurface).prop('aria-hidden')).toBe(false); + + el = mount(); + + expect(el.find(MenuSurface).prop('aria-hidden')).toBe(true); + }); + + it('MenuSurface renders', () => { + mount( + + + + {}}> + Cookies + Pizza + Icecream + + + ); + }); + + it('SimpleMenu renders', (done) => { + let val = 0; + + const el = mount( + Test} open onClose={() => val++}> + Cookies + Pizza + Icecream + + ); + + const item = el.find(MenuItem).first(); + item.simulate('click'); + setTimeout(() => { + expect(val).toBe(1); + done(); + }, 300); + }); + + it('Menu Item can be nested', () => { + let val = null; + + const el = mount( + Test} + open + onSelect={(evt) => (val = evt.detail.index)} + > + + Cookies + + + Pizza + + + Icecream + + + ); + + const item = el.find(MenuItem).first(); + item.simulate('click'); + expect(val).toBe(val); + }); + + it('SimpleMenuSurface renders', (done) => { + let val = 0; + + const el = mount( + {}}>Test} + onClose={() => { + val++; + }} + > +
    Hello
    +
    + ); + + const button = el.find('button').first(); + button.simulate('click'); + + setTimeout(() => { + el.setProps({ anchorCorner: 'bottomRight' }); + button.simulate('click'); + + setTimeout(() => { + expect(val).toBe(1); + }, 200); + done(); + }, 200); + }); + + it('can have custom classnames', () => { + [MenuSurfaceAnchor, Menu, MenuItem].forEach( + (Component: React.ComponentType) => { + const el = mount(); + expect(!!~el.html().search('my-custom-classname')).toEqual(true); + } + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx b/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx new file mode 100644 index 00000000..a613a631 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx @@ -0,0 +1,172 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { select } from '@storybook/addon-knobs'; +// import { Menu, MenuItem, MenuSurfaceAnchor, SimpleMenu, MenuSurface } from './'; +// import { Button } from '../button'; +// import { useKnob } from '../base/utils/use-knob'; + +// class MenuStory extends React.Component { +// state = { +// open: false +// }; +// render() { +// return ( +// +// + +// { +// this.setState({ open: false }); +// }} +// > +// Cookies +// Pizza +// Icecream +// +// +// ); +// } +// } + +// class MenuSurfaceStory extends React.Component { +// state = { +// open: false +// }; +// render() { +// return ( +// +// + +// {}} +// onClose={(evt) => { +// this.setState({ open: false }); +// }} +// > +// This is the new menu surface component +// +// +// ); +// } +// } + +// function MenuHoist() { +// const [selected, setSelected] = useKnob('number', 'Last selected index', -1); +// const [hoisted] = useKnob('boolean', 'hoisted', true); +// const [open, setOpen] = React.useState(true); +// const [options] = useKnob('array', 'options', [ +// 'Cookies', +// 'Pizza', +// 'Icecream' +// ]); + +// return ( +//
    +// +// +// setSelected(evt.detail.index)} +// onClose={() => setOpen(false)} +// > +// {options.map((o: string, index: number) => ( +// +// {o} +// +// ))} +// +// +//
    +// ); +// } + +// storiesOf('Menus', module) +// .add('Menu', () => ) +// .add('MenuSurface', () => ) +// .add('Menu: Always Open', () => { +// const [open] = useKnob('boolean', 'open', true); +// return ( +// +// Cookies +// Pizza +// Icecream +// +// ); +// }) +// .add('Menu: hoistToBody', () => ( +// <> +// +// +// +// )) +// .add('SimpleMenu', () => ( +// Open Simple Menu}> +// Cookies +// Pizza +// Icecream +// +// )); diff --git a/packages/mc-react-ui-components/src/lib/menu/menu/foundation.tsx b/packages/mc-react-ui-components/src/lib/menu/menu/foundation.tsx new file mode 100644 index 00000000..220123bb --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/menu/foundation.tsx @@ -0,0 +1,130 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../../types'; +import React, { useCallback, useRef, useEffect } from 'react'; +import { MDCMenuFoundation } from '@material/menu'; +import { useFoundation, closest } from '../../base'; +import { ListApi } from '../../list'; +import { MenuSurfaceOnOpenEventT, MenuSurfaceApi } from '../menu-surface'; +import { MenuProps } from './'; + +export const useMenuFoundation = (props: MenuProps & React.HTMLProps) => { + const menuSurfaceApi = useRef(); + const listApi = useRef(); + + const setListApi = (api: ListApi | null) => { + listApi.current = api; + }; + + const setMenuSurfaceApi = (api: MenuSurfaceApi) => { + menuSurfaceApi.current = api; + }; + + const items = useCallback(() => { + return listApi.current?.listElements() || []; + }, []); + + const { foundation, ...elements } = useFoundation({ + props: { + ...props, + // we don't want to pass the apiRef all the way through + apiRef: undefined + }, + elements: { + rootEl: true + }, + foundation: ({ emit }) => { + return new MDCMenuFoundation({ + addClassToElementAtIndex: (...args) => + listApi.current?.addClassToElementIndex(...args), + removeClassFromElementAtIndex: (...args) => + listApi.current?.removeClassFromElementAtIndex(...args), + addAttributeToElementAtIndex: (...args) => + listApi.current?.setAttributeForElementIndex(...args), + removeAttributeFromElementAtIndex: (index: number, attr: string) => { + const list = items(); + list[index].removeAttribute(attr); + }, + elementContainsClass: (element: HTMLElement, className: string) => + element.classList.contains(className), + closeSurface: () => { + menuSurfaceApi.current?.setOpen(false); + }, + getElementIndex: (element: HTMLElement) => + items().indexOf(element as HTMLLIElement), + + notifySelected: (evtData: { index: number; item: HTMLElement }) => + emit('onSelect', { + index: evtData.index, + item: items()[evtData.index] + }), + getMenuItemCount: () => listApi.current?.getListItemCount() || 0, + focusItemAtIndex: (...args) => + listApi.current?.focusItemAtIndex(...args), + focusListRoot: () => listApi.current?.focusRoot() + }); + } + }); + + const { rootEl } = elements; + + const handleClick = useCallback( + (evt: React.MouseEvent) => { + props.onClick?.(evt); + // fixes an issue with nested span element on list items + const el = closest(evt.target, '.mdc-list-item'); + el && foundation.handleItemAction(el); + }, + [foundation, props.onClick] + ); + + const handleKeydown = useCallback( + (evt: React.KeyboardEvent & KeyboardEvent) => { + props.onKeyDown?.(evt); + foundation.handleKeydown(evt); + + // Jump through some hoops to find out + // that we are selecting the list item + // This is instead of trying to listen to an event on the list item + // which is what MDC does + if ( + evt.which === 13 && + evt.target instanceof Element && + listApi.current && + evt.target.classList.contains(listApi.current.getClasses()) + ) { + foundation.handleItemAction(evt.target); + } + }, + [foundation, props.onKeyDown] + ); + + const handleOpen = useCallback( + (evt: MenuSurfaceOnOpenEventT) => { + const list = items(); + + if ( + (props.focusOnOpen || props.focusOnOpen === undefined) && + list.length > 0 && + !list.some((el) => el === document.activeElement) + ) { + list[0].focus(); + } + props.onOpen?.(evt); + }, + [props.onOpen, props.focusOnOpen, items] + ); + + rootEl.setProp('onKeyDown', handleKeydown, true); + rootEl.setProp('onClick', handleClick, true); + rootEl.setProp('onOpen', handleOpen, true); + + const canSetApi = listApi.current && menuSurfaceApi.current && props.apiRef; + useEffect(() => { + if (listApi.current && menuSurfaceApi.current && props.apiRef) { + props.apiRef({ ...listApi.current, ...menuSurfaceApi.current, items }); + } + // eslint-disable-next-line + }, [canSetApi, items]); + + return { setListApi, setMenuSurfaceApi, ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/menu/menu/index.tsx b/packages/mc-react-ui-components/src/lib/menu/menu/index.tsx new file mode 100644 index 00000000..9d4c26a8 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/menu/index.tsx @@ -0,0 +1,210 @@ +import * as RMWC from '../../types'; +import React, { useEffect, useState } from 'react'; +import { MDCMenuFoundation } from '@material/menu'; +import { List, ListItem, ListItemProps, ListProps, ListApi } from '../../list'; +import { + getDisplayName, + classNames, + useClassNames, + createComponent +} from '../../base'; + +import { + MenuSurface, + MenuSurfaceAnchor, + MenuSurfaceProps, + MenuSurfaceOnCloseEventT, + MenuSurfaceApi +} from '../menu-surface'; + +import { useMenuFoundation } from './foundation'; + +/**************************************************************** + * Menu + ****************************************************************/ +export type MenuOnSelectEventT = RMWC.CustomEventT<{ + index: number; + item: HTMLElement; +}>; + +export interface MenuApi extends ListApi, MenuSurfaceApi { + items: () => HTMLLIElement[]; +} + +/** A menu component for displaying lists items. */ +export interface MenuProps + extends Omit { + /** Callback that fires when a Menu item is selected. evt.detail = { index: number; item: HTMLElement; } */ + onSelect?: (evt: MenuOnSelectEventT) => void; + /** Whether or not to focus the first list item on open. Defaults to true. */ + focusOnOpen?: boolean; + /** Internal api reference for cross component communication. */ + apiRef?: (api: MenuApi | null) => void; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +export type MenuHTMLProps = RMWC.HTMLProps< + HTMLInputElement, + Omit, 'onSelect'> +>; + +/** A wrapper for menu items */ +export interface MenuItemsProps extends ListProps {} + +/** A wrapper for menu items */ +export const MenuItems = createComponent(function MenuItems( + props, + ref +) { + const className = useClassNames(props, ['mdc-list mdc-menu__items']); + return ; +}); +MenuItems.displayName = 'MenuItems'; + +/** This is just the ListItem component exported from the Menu module for convenience. You can use `ListItem` or `SimpleListItem` components from the List section as long as you add `role="menuitem"` and `tabIndex="0"` to the components for accessibility. */ +export interface MenuItemProps extends ListItemProps {} + +/** This is just the ListItem component exported from the Menu module for convenience. You can use `ListItem` or `SimpleListItem` components from the List section as long as you add `role="menuitem"` and `tabIndex="0"` to the components for accessibility. */ +export const MenuItem = createComponent(function MenuItem( + props, + ref +) { + return ; +}); + +const isMenuItems = (child: React.ReactNode) => + getDisplayName(child) === 'MenuItems'; + +/** A menu component for displaying lists items. */ +export const Menu: RMWC.ComponentType< + MenuProps, + MenuHTMLProps, + 'div' +> = createComponent(function Menu(props, ref) { + const { children, focusOnOpen, onSelect, foundationRef, ...rest } = props; + const { rootEl, setListApi, setMenuSurfaceApi } = useMenuFoundation(props); + + const needsMenuItemsWrapper = ( + React.Children.map(children, isMenuItems) || [] + ).every((val) => val === false); + + const menuItemsProps = { + apiRef: setListApi + }; + + return ( + + {needsMenuItemsWrapper ? ( + {children} + ) : ( + React.Children.map(children, (child) => { + if (isMenuItems(child)) { + return React.cloneElement(child as React.ReactElement, { + ...(React.isValidElement(child) ? (child.props as Object) : {}), + ...menuItemsProps + }); + } + return child; + }) + )} + + ); +}); + +/**************************************************************** + * Simple Menu + ****************************************************************/ + +/** A Simplified menu component that allows you to pass a handle element and will automatically control the open state and add a MenuSurfaceAnchor */ +export interface SimpleMenuProps extends MenuProps { + /** An element that will open the menu when clicked */ + handle: React.ReactElement; + /** By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor. */ + rootProps?: Object; + /** Children to render */ + children?: React.ReactNode; +} + +/** The same as SimpleMenu, but a generic surface. */ +export interface SimpleMenuSurfaceProps extends MenuSurfaceProps { + /** An element that will open the menu when clicked */ + handle: React.ReactElement; + /** By default, props spread to the Menu component. These will spread to the MenuSurfaceAnchor which is useful for things like overall positioning of the anchor. */ + rootProps?: Object; + /** Children to render */ + children?: React.ReactNode; +} + +export interface SimpleMenuState { + open: boolean; +} + +const simpleMenuFactory = < + Props extends SimpleMenuProps | SimpleMenuSurfaceProps +>( + MenuComponent: typeof Menu | typeof MenuSurface +): React.ComponentType => + function (props: Props) { + const [stateOpen, setStateOpen] = useState(!!props.open); + + useEffect(() => { + if (props.open !== undefined && props.open !== stateOpen) { + setStateOpen(!!props.open); + } + }, [props.open, stateOpen]); + + const { + handle, + onClose, + children, + rootProps = {}, + open, + foundationRef, + ...rest + } = props; + + const wrappedHandle = React.cloneElement(handle, { + ...handle.props, + onClick: (evt: React.MouseEvent) => { + setStateOpen(!stateOpen); + if (handle.props.onClick) { + handle.props.onClick(evt); + } + } + }); + + const wrappedOnClose = (evt: MenuSurfaceOnCloseEventT) => { + setStateOpen(!!open || false); + onClose?.(evt); + }; + + const RenderMenuComponent = MenuComponent as React.ComponentType; + + return ( + + + {children} + + {wrappedHandle} + + ); + }; + +/** A Simplified menu component that allows you to pass a handle element and will automatically control the open state and add a MenuSurfaceAnchor */ +export const SimpleMenu = simpleMenuFactory(Menu); + +/** The same as SimpleMenu, but a generic surface. */ +export const SimpleMenuSurface = simpleMenuFactory( + MenuSurface +); diff --git a/packages/mc-react-ui-components/src/lib/menu/styles.tsx b/packages/mc-react-ui-components/src/lib/menu/styles.tsx new file mode 100644 index 00000000..3ba3571f --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/menu/styles.tsx @@ -0,0 +1,3 @@ +import '@material/menu/dist/mdc.menu.css'; +import '@material/menu-surface/dist/mdc.menu-surface.css'; +import '../list/styles'; diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/foundation.tsx b/packages/mc-react-ui-components/src/lib/notched-outline/foundation.tsx new file mode 100644 index 00000000..8665d3e6 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/notched-outline/foundation.tsx @@ -0,0 +1,50 @@ +import React, { useEffect, useRef } from 'react'; +import { NotchedOutlineProps } from '.'; +import { useFoundation } from '../base'; +import { MDCNotchedOutlineFoundation } from '@material/notched-outline'; + +export const useNotchedOutlineFoundation = ( + props: NotchedOutlineProps & React.HTMLProps +) => { + const { foundation, ...elements } = useFoundation({ + props, + elements: { + rootEl: true, + notchedEl: true + }, + foundation: ({ rootEl, notchedEl }) => { + return new MDCNotchedOutlineFoundation({ + addClass: (className: string) => rootEl.addClass(className), + removeClass: (className: string) => rootEl.removeClass(className), + setNotchWidthProperty: (width: number) => + notchedEl.setStyle('width', width + 'px'), + removeNotchWidthProperty: () => notchedEl.setStyle('width', '') + }); + } + }); + + const { rootEl } = elements; + const labelRef = useRef(); + + useEffect(() => { + !!props.notch ? foundation.notch(props.notch) : foundation.closeNotch(); + }, [props.notch, foundation]); + + useEffect(() => { + labelRef.current = + rootEl.ref?.querySelector('.mdc-floating-label') || undefined; + const label = labelRef.current; + + if (label) { + label.style.transitionDuration = '0s'; + rootEl.addClass(MDCNotchedOutlineFoundation.cssClasses.OUTLINE_UPGRADED); + requestAnimationFrame(() => { + label && (label.style.transitionDuration = ''); + }); + } else { + rootEl.addClass(MDCNotchedOutlineFoundation.cssClasses.NO_LABEL); + } + }, [rootEl]); + + return { foundation, ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/generated-examples.json b/packages/mc-react-ui-components/src/lib/notched-outline/generated-examples.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/notched-outline/generated-examples.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/generated-props.json b/packages/mc-react-ui-components/src/lib/notched-outline/generated-props.json new file mode 100644 index 00000000..bfa3c178 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/notched-outline/generated-props.json @@ -0,0 +1,41 @@ +{ + "npm": {}, + "typescript": { + "NotchedOutlineProps": { + "fileName": "src/notched-outline/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "NotchedOutlineProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/notched-outline/index.tsx#L7", + "methods": [], + "properties": [ + { + "fileName": "src/notched-outline/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "notch", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/notched-outline/index.tsx#L8", + "type": "undefined | number" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/index.tsx b/packages/mc-react-ui-components/src/lib/notched-outline/index.tsx new file mode 100644 index 00000000..e78a7ebb --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/notched-outline/index.tsx @@ -0,0 +1,52 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +import React from 'react'; +import { useNotchedOutlineFoundation } from './foundation'; +import { createComponent, Tag } from '../base'; + +export interface NotchedOutlineProps { + notch?: number; +} + +/********************************************************************* + * Notched Outline + *********************************************************************/ + +export const NotchedOutline = createComponent( + function NotchedOutline(props, ref) { + const { children, ...rest } = props; + const { rootEl, notchedEl } = useNotchedOutlineFoundation(props); + + return ( + + +
    + {children} +
    + +
    + ); + } +); + +/********************************************************************* + * Bits + *********************************************************************/ + +const NotchedOutlineLeading = React.memo(function NotchedOutlineLeading() { + return
    ; +}); + +const NotchedOutlineTrailing = React.memo(function NotchedOutlineTrailing() { + return
    ; +}); diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx new file mode 100644 index 00000000..2464f126 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx @@ -0,0 +1,12 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { NotchedOutline } from './'; + +describe('NotchedOutline SSR', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx b/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx new file mode 100644 index 00000000..199efdff --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { NotchedOutline } from './'; + +describe('NotchedOutline', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/styles.tsx b/packages/mc-react-ui-components/src/lib/notched-outline/styles.tsx new file mode 100644 index 00000000..e1f68cb2 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/notched-outline/styles.tsx @@ -0,0 +1 @@ +import '@material/notched-outline/dist/mdc.notched-outline.css'; diff --git a/packages/mc-react-ui-components/src/lib/provider/README.md b/packages/mc-react-ui-components/src/lib/provider/README.md new file mode 100644 index 00000000..f919ce41 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/provider/README.md @@ -0,0 +1,63 @@ +# Provider + +A component that provides global configuration for RMWC. + +- Module **@rmwc/provider** + + +You can wrap your top level App component with RMWC provider to set global configuration options. Just pass the options in as props. + +```jsx + + ` + import React from 'react'; + import * as ReactDOM from 'react-dom'; + import App from './App'; // your main app component + import { RMWCProvider } from '@rmwc/provider'; + + // This example disables ripples globally by default + ReactDOM.render( + + + , + document.getElementById('root'), + ); +` + +``` + +## RMWCProvider +A provider for setting global options in RMWC. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `children` | `React.ReactNode` | Children to render | +| `icon` | `Partial` | Global options for icons | +| `ripple` | `undefined \| false \| true` | Enable / Disable interaction ripples globally | +| `tooltip` | `Partial` | Global tooltip options | +| `typography` | `Partial` | Global typography options | + + diff --git a/packages/mc-react-ui-components/src/lib/provider/generated-examples.json b/packages/mc-react-ui-components/src/lib/provider/generated-examples.json new file mode 100644 index 00000000..10c6da05 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/provider/generated-examples.json @@ -0,0 +1 @@ +["\n `\n import React from 'react';\n import * as ReactDOM from 'react-dom';\n import App from './App'; // your main app component\n import { RMWCProvider } from '@rmwc/provider';\n\n // This example disables ripples globally by default\n ReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n );\n`\n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/provider/generated-props.json b/packages/mc-react-ui-components/src/lib/provider/generated-props.json new file mode 100644 index 00000000..3183e53a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/provider/generated-props.json @@ -0,0 +1,151 @@ +{ + "npm": {}, + "typescript": { + "RMWCProviderProps": { + "documentation": { + "contents": [ + "

    A provider for setting global options in RMWC.

    \n" + ], + "contentsRaw": "A provider for setting global options in RMWC.", + "metadata": {} + }, + "fileName": "src/provider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "RMWCProviderProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/provider/index.tsx#L51", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Children to render

    \n" + ], + "contentsRaw": "Children to render", + "metadata": {} + }, + "fileName": "src/provider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/provider/index.tsx#L61", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Global options for icons

    \n" + ], + "contentsRaw": "Global options for icons", + "metadata": {} + }, + "fileName": "src/provider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/provider/index.tsx#L55", + "type": "Partial" + }, + { + "documentation": { + "contents": [ + "

    Enable / Disable interaction ripples globally

    \n" + ], + "contentsRaw": "Enable / Disable interaction ripples globally", + "metadata": {} + }, + "fileName": "src/provider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/provider/index.tsx#L53", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Global tooltip options

    \n" + ], + "contentsRaw": "Global tooltip options", + "metadata": {} + }, + "fileName": "src/provider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "tooltip", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/provider/index.tsx#L57", + "type": "Partial" + }, + { + "documentation": { + "contents": [ + "

    Global typography options

    \n" + ], + "contentsRaw": "Global typography options", + "metadata": {} + }, + "fileName": "src/provider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "typography", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/provider/index.tsx#L59", + "type": "Partial" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/provider/index.tsx b/packages/mc-react-ui-components/src/lib/provider/index.tsx new file mode 100644 index 00000000..ac24c3b2 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/provider/index.tsx @@ -0,0 +1,100 @@ +import React from 'react'; +import * as RMWC from '../types'; + +// prettier-ignore +// eslint-disable-next-line max-len +type IconStrategyT = 'auto' | 'ligature' | 'className' | 'url' | 'component' | 'custom'; + +type TooltipActivationT = 'hover' | 'click' | 'focus'; + +type TooltipAlignT = + | 'left' + | 'right' + | 'top' + | 'bottom' + | 'topLeft' + | 'topRight' + | 'bottomLeft' + | 'bottomRight'; + +type TooltipOptions = { + /** How to align the tooltip. Defaults to `top`. */ + align?: TooltipAlignT; + /** Activate the tooltip through one or more interactions. Defaults to `['hover', 'focus']`. */ + activateOn?: TooltipActivationT | TooltipActivationT[]; + /** Whether or not to show an arrow on the Tooltip. Defaults to `false`. */ + showArrow?: boolean; + /** Delay in milliseconds before showing the tooltip when interacting via touch or mouse. */ + enterDelay?: number; + /** Delay in milliseconds before hiding the tooltip when interacting via touch or mouse. */ + leaveDelay?: number; +}; + +type TypographyOptions = { + defaultTag?: string | React.ComponentType; + headline1?: string | React.ComponentType; + headline2?: string | React.ComponentType; + headline3?: string | React.ComponentType; + headline4?: string | React.ComponentType; + headline5?: string | React.ComponentType; + headline6?: string | React.ComponentType; + subtitle1?: string | React.ComponentType; + subtitle2?: string | React.ComponentType; + body1?: string | React.ComponentType; + body2?: string | React.ComponentType; + caption?: string | React.ComponentType; + button?: string | React.ComponentType; + overline?: string | React.ComponentType; +}; + +/** A provider for setting global options in RMWC. */ +export interface RMWCProviderProps { + /** Enable / Disable interaction ripples globally */ + ripple?: boolean; + /** Global options for icons */ + icon?: Partial; + /** Global tooltip options */ + tooltip?: Partial; + /** Global typography options */ + typography?: Partial; + /** Children to render */ + children?: React.ReactNode; +} + +// Default provider options +const providerDefaults: RMWCProviderProps = { + ripple: true, + tooltip: { + align: 'top', + showArrow: false, + activateOn: ['hover', 'focus'], + enterDelay: 0, + leaveDelay: 0 + }, + typography: {}, + icon: { + icon: '', + basename: 'material-icons', + prefix: '', + strategy: 'auto', + render: undefined + } +}; + +export const ProviderContext = React.createContext(providerDefaults); + +export const useProviderContext = () => React.useContext(ProviderContext); + +/** A provider for setting global options in RMWC. */ +export const RMWCProvider = ({ children, ...rest }: RMWCProviderProps) => { + return ( + + {children} + + ); +}; diff --git a/packages/mc-react-ui-components/src/lib/provider/provider-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/provider/provider-ssr.spec.tsx new file mode 100644 index 00000000..3ec360ee --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/provider/provider-ssr.spec.tsx @@ -0,0 +1,17 @@ +/** + * @jest-environment node + */ + +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { RMWCProvider } from './'; + +describe('Provider SSR', () => { + it('renders', () => { + const el = mount( + +
    + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/provider/provider.spec.tsx b/packages/mc-react-ui-components/src/lib/provider/provider.spec.tsx new file mode 100644 index 00000000..56d9eaad --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/provider/provider.spec.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { RMWCProvider } from './'; +import { Button } from '../button'; +import { Icon } from '../icon'; + +describe('Provider', () => { + it('renders', () => { + const el = mount( + +
    + + ); + + el.setProps({ ripple: false }); + }); + + it('can set default ripple', () => { + const dom = mount( + + ; +``` + +## Bundle size and Dependency considerations + +To keep your build as trim as possible, it is recommended that you install the components individually as you need them instead of installing all of RMWC. This strategy has several benefits: + +- You will only include the minimal javascript and css to get the component working +- You can insulate yourself from future breaking changes and upgrade components one at a time. +- If you have an existing project you are converting over to RMWC, you can swap out one component at a time. + + +If you decide to go for the convenience to install the entire RMWC library, your app will still reference the individual modules, you just lose the ability to upgrade them independently when a new release comes out. + +```jsx +/** GOOD example, only the `Button` component will be imported. This supports tree shaking. */ +import { Button } from '@rmwc/button'; +``` + +This is for the laziest of lazy, all components are re-exported from the root module if you choose to reference them this way. + +```jsx +/** + * BAD / LAZY example, the `Button` component will be imported, as well as all of RMWC. + * This exists for convenience and for projects that are using the majority of material components. + */ +import { Button } from 'rmwc'; +``` + +The same is true for importing styles into your project. RMWC only ships with minimal styles for its own custom components. The majority of the CSS comes from Google, and you'll need to import them from the [material-components-web](https://github.com/material-components/material-components-web) package. The pre-minified version of this file is around 240kb. If you only want to Import styles for individual components, you can find the css files in `node_modules/@material/COMPONENT_NAME/dist/mdc.COMPONENT_NAME.min.css`. + +```jsx +/** GOOD Only imports the styles for the Button component. */ +import '@material/button/dist/mdc.button.min.css'; +``` + +```jsx +/** BAD / LAZY Imports styles for ALL components */ +import 'material-components-web/dist/material-components-web.min.css'; +``` + +### Tree Shaking Support + +Webpack 4 / Create React App 2 and other build tools like Rollup provider opt in support for tree shaking. As of version 5.1.x, RMWC as well as `material-components-web` both include support for tree shaking behavior out of the box. + +Directions for Webpack / CRA +[https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free](https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free) + +```json +/** Example with Create React App 2. */ +{ + "name": "My Package JSON file", + "sideEffects": false // just add this line +} +``` + + +### Additional configuration when using CSS Modules + +The material components CSS is intended to be a global CSS dependency which is the opposite of what CSS modules do. If you are using CSS modules, the simplest way to get the material CSS loaded is to have two separate CSS loaders in your webpack configuration, one for CSS modules, and another for global CSS. This is a well documented issue when using global CSS in CSS module projects and is not specific to RMWC. + +Please note if you are using Create React App (v2), this is likely not an issue. Files with the .module.css extension automatically use the CSS modules loader. + +```javascript +// An abbreviated example +const path = require('path'); +module.exports = { + module: { + rules: [ + { + test: /\.css$/, + // exclude material css from being loaded by CSS modules + // These paths are specific to your system, so change accordingly + exclude: [ + path.resolve('./node_modules/material-components-web'), + path.resolve('./node_modules/@material') + ], + use: ['style-loader', 'css-loader?modules=true'] + }, + { + test: /\.css$/, + // only turn on standard global CSS loader for the material directories + // These paths are the same as above and specific to your system, so change accordingly + include: [ + path.resolve('./node_modules/material-components-web'), + path.resolve('./node_modules/@material') + ], + use: ['style-loader', 'css-loader'] + } + ] + } +}; +``` + +## Typescript and Flow Setup + +There are no additional steps to get Typescript working for your project. RMWC ships with declarations right alongside the components, so there is no need to install anything from `definitely-typed`. + +Flow types were previously available in versions 4.x.x and below. Some work has been done to convert to Typescript to FlowTypes, but it has been tabled due to the complexities of building and maintaining an automated conversion. If you're intersted in restoring Flow support, please see issue [#407: Support Flow Types](https://github.com/jamesmfriedman/rmwc/issues/407) + +## Testing with RMWC + +RMWC works the best with Jest and Enzyme. material-components-web requires a browser like environment to properly test and a testing library thats supports React Refs. At this time, react-test-renderer is **not** supported. + +Jest uses JSDOM by default which is a browser-like environment. If you are using the full Enzyme mount api, you'll quickly run into errors from the material-components-web library saying things like "Cannot read property 'whatever' of undefined. The quick fix is to monkey patch the missing items onto the fake DOM elements in your setupTests file. + +```javascript +// src/setupTests.js +import Enzyme from 'enzyme'; +import Adapter from 'enzyme-adapter-react-16'; +import rmwcTestPolyfill from '@rmwc/base/dist/test-polyfill'; +Enzyme.configure({ adapter: new Adapter() }); + +//import and run this to fix the the MDC errors +rmwcTestPolyfill(); +``` + +## Known Issues + +* Issue: postcss-cssnext messes up CSS variables. This can cause broken styles and extreme slowdowns when using web developer tools like the Chrome inspector. You'll know if you're having this issue because dev tools and the browser will slow to a crawl. + * Solution: set customProperties to false. This may require ejecting or other workarounds if you are using Create React App. [See issue #65](https://github.com/jamesmfriedman/rmwc/issues/65). + +```javascript +postcss([ + cssnext({ + features: { + customProperties: { + preserve: true + } + } + }) +]); +``` diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md b/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md new file mode 100644 index 00000000..c94e44b4 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md @@ -0,0 +1,30 @@ +# Library Integrations + +> Some interesting ways you can use external libraries with RMWC. + +## React Router + +If you're using React Router, you're probably used to using the `Link` component to navigate around. You may have also experienced problems at some point where you're adding an anchor tag around an element that breaks layout. + +RMWC mitigates this issue by allowing you to "extend" other components. This works because most of the underlying compontents in RMWC are just HTML elements like div, span, etc that you can override using the `tag` prop. You can specify your own tag which can also be another React component. + +A note on using TypeScript and Flow Typed with this strategy. Flow tends to be extremely forgiving and not give you any issues with this approach. Typescript will complain that there are no props of type `x` on this component. Work is being done to mitigate these issues, but see the workaround below. + +```jsx +import { Link } from 'react-router-dom'; +import { Button } from '@rmwc/button'; + +{/* Not what you wanted, you expected the Button to be the anchor. */} + + + + +{/* Also valid, but would require some custom CSS to layout properly */} + + +{/* This would make the button an anchor link, but not use React Routers history.pushState */} + + +{/* Make it all work together! RMWC lets you make the button the link */} + +``` diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md b/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md new file mode 100644 index 00000000..15b164d4 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md @@ -0,0 +1,85 @@ +# Methodology + +> RMWC is intended to be an un-opinionated React wrapper around [material-components-web](https://github.com/material-components/material-components-web/) + +## Project Goals + +* To create the thinnest, lightest, and spec compliant wrapper around Google + Material Design Components for the Web + [https://material.io/components/web/](https://material.io/components/web/) +* To utilize the Foundation javascript classes from material-components-web +* To be as unobtrusive and sensible as possible. +* To fill the gaps in material-components-web with custom React community driven components. + +## Why? + +There are many different Material UI implementations in both Angular and React. The last thing we need is another one... In React land there has been a lot of great work done, but you eventually end up in one of the following situations: + +* The library is heavy or extremely inflexible (crazy api, opinionated styling) +* The library is an opinionated representation of material or it isn't very polished +* The library has been abandoned + +RMWC's goal is to use the Google sanctioned javascript Material Design Components which are designed, developed, and maintained by Google. Where Google doesn't provide a component, RMWC will include its own React driven components. These will be denoted with an "RMWC Addon" label. + +## Breaking Changes + +The goal of the project is to have ZERO breaking changes and rely heavily on deprecations between major versions. While its a novel goal, in practice it is quite difficult. `material-components-web` (in classic Google fashion) was in alpha for 2 years and contained a litany of brekaing changes along the way. Since adopting an official 1.0.0 breaking changes have been reduced, but still exist. + +As of the 5.x.x version RMWC, the apis have stablizied for the foreseeable future and intensive work has been done to make sure that breaking changes are limited in scope and obey semver rules. Where possible, deprecations will be used, and you can count on deprecations being valid until the next major version. If you are using Typescript, your IDE will not tell you the properties are deprecated, but your runtime compiled code, as well as the comments in your IDE will say "DEPRECATED" across the top. + +The good news is, since components are indiviudally packaged and released, you can generally safely upgrade a components one at a time. + +So to sum it up: + +- RMWC works hard to minimize breaking changes between releases +- Deprecations are favored over breaking changes. These will be logged out anytime NODE_ENV !== 'production' +- Any breaking change will honor semver and bump a major version +- Minor versions are used for releases that contain new features but no breaking changes +- Patch versions are for bugfixes + +## Basic Layout + +Material Components web uses BEM syntax to style and script their components. RMWC directly inherits MDC's naming conventions, so if you can read one, you can infer the other. + +Block -> Component +Element -> Components / Children +Modifier -> Props + +Here's a TextField example in raw MDC and with RMWC. + +```jsx +// The example is from material-components-web +
      +
    • + + Two-line item + Secondary text + +
    • +
    +``` + +```jsx +// This is the RMWC version + + + + Two-line item + + Secondary text + + +``` + +## Convenience + +Even though this is meant to be an un-opinionated wrapper, in some areas decisions had to be made to improve utility and the overall developer experience. At the end of the day, if it doesn't make your life easier, what's the point? + +## Something missing from RMWC? + +RMWC wraps the entire [material-components-web](https://github.com/material-components/material-components-web) package in React, but because they are different projects with different maintainers, sometimes things can be missed. A lot of components from [material-components-web](https://github.com/material-components/material-components-web) don't require javascript. For these, you can simply use the classNames in your own project. Of course, RMWC wants to cover the entire codebase, so if you see something missing or incorrect, please [file an issue](https://github.com/jamesmfriedman/rmwc/issues/new). + +```jsx +/** This will give you a CSS only button and skip RMWC all together */ + +); +``` + +```css +/** in your CSS */ +.my-custom-className { +   color: red; +} + +.mdc-button { +   font-weight: bold; +} +``` + +## Using CSS Modules + +Just add your className. If you need to target a node that is not directly exposed by RMWC, you can use the global modifier in your CSS. In this example, you can target the inner wrapper of a DrawerHeader. + +```jsx +/** in your JSX */ +import { DrawerHeader } from '@rmwc/drawer'; +import styles from './my-style-sheet.css'; + +const MyComponent = props => ( + Hello World +); +``` + +```css +/** in your CSS */ +.myDrawerHeader :global(.mdc-drawer__header-content) { +   color: red; +} +``` + +## Using the Styled Components library + +### Basic Styling + +Using RMWC with `styled-components` is a breeze. For most use cases the following code works well. + +```jsx +import styled from 'styled-components'; +import { Button } from '@rmwc/button'; + +const StyledButton = styled(Button)` +  // Your Styles Here. +`; +``` + +### Props Based Styling + +You will eventually want some condition styles based on props passed into the component. + +```jsx +import styled, { css } from 'styled-components'; +import { Button } from '@rmwc/button'; + +const StyledButton = styled(({ isFullWidth, ...otherProps }) => ( + ; +``` + +## API Wide props + +All components in RMWC are generated from a common factory method. This gives them some extra utility and flexibility when being used. The following props are available on (almost) every component. + +### `dir="rtl"` + +material-components-web implements right-to-left support for eastern languages. You can pass this prop to any component, please read [material-components-web rtl docs](https://material.io/components/web/catalog/rtl/) for more information. + +```jsx +import { Drawer, DrawerContent } from '@rmwc/drawer'; + + + +; +``` + +### `tag` + +You can use the `tag` prop to specify the DOM element you would like to render. For advanced cases, you can actually pass a Component to render. + +```jsx +import { Typography } from '@rmwc/typography'; +import { Button } from '@rmwc/button'; +import { Link } from 'react-router-dom'; + +// renders an h1 +const Example1 = props => ( + + Hello World + +); + +// renders an anchor +const Example2 = props => ( + +); + +// Advanced case, extend another component +const Example3 = props => ( + +); +``` + +### `theme` + +The theming functionality from material-components-web is baked into every component. It works identically to the [`Theme` component's `use` prop](theme). + +```jsx +import { Button } from '@rmwc/button'; + +; +``` + +### `ref` + +With the advent of ref forwarding in React 16.3, you can pass the `ref` prop to the majority of components to get access to their DomNodes. This currently only works on Stateless components like Elevation, Typography, and Grid., + +```jsx +import { Elevation } from '@rmwc/elevation'; + +// renders an h1 + +class Example1 extends React.Component { + render() { + return this.textField = el}> + } +} +``` diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css new file mode 100644 index 00000000..5f8b01fb --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css @@ -0,0 +1,800 @@ +html, +body { + padding: 0; + margin: 0; + font-size: 16px; +} + +html { + max-width: 100vw; +} + +img { + vertical-align: top; +} + +p, +ul { + max-width: 56rem; +} + +body, +#root { + display: block; + min-height: 100vh; + -webkit-font-smoothing: antialiased; +} + +#root > div { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +code > .optional { + color: #905; +} + +body ul li { + margin: 0; +} + +.app__root, +.mdc-drawer { + background-color: var(--mdc-theme-background); + color: var(--mdc-theme-on-surface); +} +/** Install Block */ +.app__content { + flex: 1 1 auto; + max-width: 100%; + transition: margin-left 0.3s, max-width 0.3s; + will-change: margin-left; + will-change: max-width; +} + +.docs-setup { + list-style: none; + padding: 3rem 1rem 1rem 1.5rem; + margin: 2rem 0 3rem 0; + position: relative; + overflow: hidden; + border-left: 0.25rem solid var(--mdc-theme-primary); +} + +.docs-setup:after { + content: 'Setup'; + color: var(--mdc-theme-primary); + font-weight: bold; + position: absolute; + font-size: 1.25rem; + padding: 0.5rem 1.5rem; + width: 8rem; + top: 0; + left: 0; + border-bottom-right-radius: 0.75rem; +} + +.docs-setup > li > ul { + list-style: none; + padding-left: 1.5rem; +} + +.docs-setup > li > ul > li > ul { + list-style: circle; +} + +.docs-setup > li { + margin-top: 0.25rem; +} + +.docs-setup:first-of-type strong, +.app__content > div > ul:first-of-type a { + color: var(--mdc-theme-primary); +} + +.mdc-drawer--dismissible.mdc-drawer--open + .app__content { + max-width: calc(100% - 16rem); +} + +.app__content a { + color: inherit; +} + +.app__content > div { + width: 100%; + box-sizing: border-box; +} + +.app__content > div, +.container { + padding: 1.5rem; + margin: 0 auto; + display: block; +} + +@media (min-width: 37.5rem) { + .app__content > div, + .container { + padding: 3rem; + } +} + +.app__content > div p code, +.app__content > div table code, +.app__content > div ul code { + font-family: source-code-pro, Menlo, Consolas, Monaco, Andale Mono, + Courier New, monospace; + line-height: 1.5; + background-color: rgba(0, 0, 0, 0.05); + padding: 2.4px 8px; + border-radius: 0.125rem; +} + +/* page title */ +.app__content > div > h1 { + color: var(--mdc-theme-primary); + font-size: 2.125rem; + font-weight: 400; + line-height: 2.5rem; + margin-bottom: 1.875rem; +} + +/* RMWC Addon*/ +.app__content > div > h1 > code { + font: inherit; + color: var(--mdc-theme-secondary); + font-size: 0.875rem; + font-weight: bold; + text-transform: uppercase; + margin-left: 0.75rem; + border: 1px solid var(--mdc-theme-secondary); + padding: 0.25rem 0.5rem; + vertical-align: middle; + white-space: nowrap; +} + +.app__content > div > h1:first-child { + margin-top: 0.5rem; +} + +/* version # */ +.app__version { + align-self: center; + opacity: 0.87; + margin-left: 0.5rem; + margin-top: 3px; + display: flex; + align-items: center; + padding: 0.5rem 0.25rem 0.5rem 0.5rem; + border-radius: 8px; + cursor: pointer; +} + +.app__version:hover { + background-color: rgba(255, 255, 255, 0.1); +} + +/* code examples */ +.example.render-with-code, +.example.code-only { + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.75rem; + margin: 1.5rem 0; + background-color: var(--mdc-theme-background); +} + +.app__content > div .example + .example { + margin-top: -0.5rem; +} + +.app__content > div .example:last-child { + margin-bottom: 0; +} + +.app__content > div .example:not(.render-only) .run { + padding: 1rem; + background-color: rgba(0, 0, 0, 0.02); + border-radius: 0.75rem 0.75rem 0 0; +} + +.app__content > div .example .run + .source { + border-top: 0.0625rem solid rgba(0, 0, 0, 0.15); +} + +.document-component, +.document-component h2 { + font-size: 14px; +} + +.document-component h3 { + margin-top: 24px; +} + +.app__content > div > h2, +.app__content > div .document-component h2 { + padding-top: 3rem; + font-size: 1.5rem; + font-weight: 400; + line-height: 2rem; + margin-bottom: 1.875rem; + overflow: hidden; + color: var(--mdc-theme-primary); +} + +.app__content > div hr { + border: 0; + border-top: 0.0625rem solid rgba(0, 0, 0, 0.12); + margin: 5rem 0; +} + +p, +ul { + line-height: 1.5; + font-size: 1rem; +} + +.app__content > div blockquote { + opacity: 0.87; + font-size: 1.25rem; + font-weight: 400; + line-height: 2rem; + margin: 0; + margin-bottom: 1.25rem; + max-width: 58.75rem; +} + +.app__content > div blockquote p { + font-size: inherit; +} + +.app__content > div > h3 { + opacity: 0.87; + font-size: 1.25rem; + font-weight: 400; + line-height: 2rem; + margin-bottom: 1.25rem; + max-width: 58.75rem; +} + +.app__top-app-bar { + z-index: 7; + max-width: 100vw; +} + +.app__top-app-bar .mdc-top-app-bar__title { + color: inherit; + text-decoration: none; + font-weight: bold; + text-shadow: 0 0 0 rgba(255, 255, 255, 0.5); + transition: text-shadow 0.3s; +} + +.app__top-app-bar .mdc-top-app-bar__title:hover { + text-shadow: 0 0 10px rgba(255, 255, 255, 0.5); +} + +#main-nav.mdc-drawer--dismissible { + position: fixed; + top: 64px; + left: 0; + height: calc(100vh - 64px); + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: auto; +} + +#main-nav .mdc-drawer__drawer { + overflow-y: auto; +} + +#main-nav .mdc-drawer__content { + padding-bottom: 88px; + padding-top: 0.5rem; + -webkit-overflow-scrolling: touch; + height: calc(100vh - 15rem); +} + +#main-nav .mdc-list-item:before { + pointer-events: none; +} + +#main-nav .mdc-list-item { + box-sizing: border-box; +} + +ul li { + margin: 0.5rem 0; +} + +.demo-content { + display: flex; + flex: 1; + position: relative; +} + +/* made by */ +.made-by { + padding: 1rem; + margin: 1rem 1rem 2rem 1rem; + box-sizing: border-box; + border-radius: 0.75rem; + border: 1px solid rgba(0, 0, 0, 0.2); + display: flex; + align-items: center; + color: var(--mdc-theme-on-surface); +} + +.made-by .rmwc-icon { + border-radius: 50%; + width: 1.5rem; + height: 1.5rem; + margin-right: 0.5rem; +} +.made-by__link { + color: var(--mdc-theme-primary); +} + +/* page badges */ +#page-badges .live-preview .rmwc-badge-anchor { + margin-right: 1.5rem; +} + +/* page cards */ +#page-cards .live-preview { + justify-content: center; +} + +/* page menus */ +#page-menus .live-preview { + justify-content: center; +} + +#page-menus .live-preview .mdc-select { + margin-top: 4rem; +} + +/* page icons */ +#page-icons .live-preview > div > div > i, +#page-icons .live-preview > div > div > .material-icons, +#page-icons .live-preview > div > div > img { + margin: 1rem; + vertical-align: middle; +} + +/* page icon-buttons */ +#page-icon-buttons .live-example .mdc-icon-button { + vertical-align: top; + margin: 1rem; +} + +/* page buttons */ +#page-buttons .live-example .mdc-button { + margin: 0.5rem; +} + +/* page drawers */ +#page-drawers .live-preview { + position: relative; + justify-content: center; +} + +#page-drawers .live-preview .mdc-drawer--modal { + z-index: 999; + top: 0; +} + +/* page dialogs */ +#page-dialogs .live-preview { + justify-content: center; +} + +#page-dialogs #dialog-portal-example { + display: flex; + align-items: center; + width: 100%; +} + +#page-dialogs #dialog-portal-example > * { + margin: 1rem; +} + +/* page ripples */ +#page-ripples .live-preview { + justify-content: center; +} + +#page-ripples .live-preview p { + width: 140px; + height: 140px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.5rem; +} + +#page-ripples .live-example:nth-of-type(4) p { + border: 0; +} + +/* page elevation */ +#page-elevation .live-example [class*='mdc-elevation--'] { + padding: 1rem; + margin: 1rem; + display: inline-flex; + width: 6rem; + height: 6rem; + vertical-align: top; + align-items: center; + justify-content: center; + border-radius: 0.5rem; + background-color: white; +} + +/** Page Radios */ +#page-radio-buttons .live-preview { + justify-content: center; +} + +#page-radio-buttons .live-preview .mdc-form-field { + margin: 1rem; +} + +/* page sliders */ +#page-sliders .live-preview { + justify-content: center; +} + +#page-sliders .live-preview > div { + width: 80%; +} + +/* page snackbars */ +#page-snackbars .live-preview { + justify-content: center; +} + +/* page layout-grid */ +#page-layout-grid .live-preview .mdc-layout-grid__cell { + background: rgba(0, 0, 0, 0.1); + padding: 1rem 0; + text-align: center; +} + +/* page linear-progress */ +#page-linear-progress .live-preview > div { + width: 100%; +} + +#page-linear-progress .live-preview .mdc-linear-progress { + margin: 2rem 0; +} + +/* page list */ +#page-lists .live-preview > div { + width: 100%; +} + +/* page lists-collapsible */ +#page-lists-collapsible .live-example:first-of-type .live-preview > div { + width: 100%; +} + +#page-lists-collapsible .live-preview { + justify-content: center; +} + +/* page list-variants */ +#page-lists-variants .live-preview > div { + width: 100%; +} + +/* page circular-progress */ +#page-circular-progress .live-preview > div > div > .rmwc-circular-progress { + margin: 1rem; + vertical-align: middle; +} + +#page-typography .live-preview [class*='mdc-typography--'] { + margin: 1rem 0; + display: block; +} + +#page-switches .live-example .mdc-form-field { + margin: 1rem 1rem 1rem 0; +} + +#page-fabs .live-example .mdc-fab { + margin: 1rem; + vertical-align: middle; +} + +#page-grid-lists .example .mdc-form-field { + padding: 1rem; +} + +/** page theme */ +#page-theme .live-preview .mdc-button { + margin-right: 1rem; +} + +#page-theme .live-example:first-of-type .live-preview [class*='mdc-theme--'] { + padding: 1rem; + margin: 0.25rem; + display: inline-block; + width: 6rem; + height: 6rem; + vertical-align: top; + word-break: break-all; +} + +/** page selects */ +#page-select-menus .run .mdc-select { + min-width: 10rem; +} + +#page-select-menus .run > .mdc-select { + float: left; + clear: both; + margin: 0.75rem 0; +} + +#page-select-menus .run > div { + clear: both; +} + +#page-select-menus .run:after { + clear: both; + content: ''; + display: table; +} + +#page-select-menus .example .mdc-select:after { + content: ''; + display: block; +} + +/** page toolbars */ +#page-toolbars .live-preview > div { + width: 100%; +} + +/** page top-app-bar */ +#page-top-app-bar .live-preview > div { + width: 100%; +} + +/** page formfields */ +#page-formfields .example .mdc-form-field { + display: block; + margin-bottom: 1.5rem; +} + +/** Page textfields */ +#page-text-fields .live-preview .mdc-text-field { + margin-top: 1.5rem; + float: left; + clear: left; +} + +#page-text-fields .live-preview > div { + width: 100%; +} + +/** Page data-tables */ +#page-data-tables .live-preview { + justify-content: center; +} + +#page-data-tables .doc-controls { + display: flex; + margin-left: 0.5rem; +} + +#page-data-tables .doc-controls > * { + max-width: 10rem; + flex: 1; + margin: 1rem 0.5rem; +} + +#page-data-tables .example.render-with-code .run .rmwc-data-table { + max-width: 100%; +} + +#page-data-tables .example.render-with-code .run > div > .mdc-select { + margin: 0.5rem; + min-width: 5rem; +} + +/** Page Avatars */ +#page-avatars .live-example:nth-of-type(1) .rmwc-avatar, +#page-avatars .live-example:nth-of-type(2) .rmwc-avatar, +#page-avatars .live-example:nth-of-type(3) .rmwc-avatar, +#page-avatars .live-example:nth-of-type(4) .rmwc-avatar { + margin: 0.5rem; +} + +#page-avatars .live-preview .mdc-chip { + margin: 1rem; +} + +.document-component table th, +.document-component table td { + text-align: left; + padding: 16px; +} + +.document-component table { + margin-left: -16px; + min-width: 37rem; +} + +.document-component table th { + font-weight: bold; +} + +.docs-p + .live-example { + margin-top: 2rem; +} + +.docs-iframe { + border: 1px solid rgba(0, 0, 0, 0.2); + height: 350px; + max-height: 350px; + width: 100%; +} + +/** + * Code Examples + */ + +.live-example { + margin: 0 -1.5rem; + background-color: rgba(0, 0, 100, 0.03); + padding: 0.25rem 0; +} + +.live-example:hover { +} + +.live-example:hover .live-editor { + background: #eaeaef; +} + +.live-preview { + flex: 1; + padding: 0.5rem 1rem; + align-items: center; + display: flex; + position: relative; + box-sizing: border-box; +} + +.live-preview > div { + max-width: 100%; +} + +.live-preview-label { + opacity: 0.5; + margin-bottom: 0.25rem; +} + +.live-editor { + background: #f1f1f5; + font-size: 1rem; + flex: 1; + color: #343c5a; + position: relative; + display: flex; + box-sizing: border-box; +} + +.live-editor > * { + flex: 1; +} + +.live-editor textarea, +.live-editor pre { + padding: 1rem !important; +} + +.live-error { + position: absolute; + background: var(--mdc-theme-error); + color: var(--mdc-theme-on-error); + bottom: 100%; + left: 0; + width: 100%; + margin: 0; + overflow-y: auto; +} + +.live-example-center .live-preview { + justify-content: center; +} + +.live-example-code-only .live-error { + display: none; +} + +@media (min-width: 37.5rem) { + .live-example { + display: flex; + margin: 0 -3rem; + } + + .live-example:not(.live-example-code-only) .live-preview, + .live-example:not(.live-example-code-only) .live-editor { + max-width: 50%; + min-width: 50%; + } + + .live-preview { + padding-left: 3rem; + } + + .live-editor { + margin-right: 1.5rem; + } + + .live-example-code-only .live-editor textarea, + .live-example-code-only .live-editor pre { + padding: 1.5rem 3rem !important; + } +} + +/** + * Code Styles + */ +.live-editor code[class*='language-'], +.live-editor pre[class*='language-'] { + color: #343c5a !important; +} + +.live-editor .token.plain, +.live-editor .token.operator, +.live-editor .token.function-variable, +.live-editor .token.constant { + color: #343c5a !important; +} + +.live-editor .token.atrule, +.live-editor .token.attr-value, +.live-editor .token.keyword { + color: #220a82 !important; +} +.live-editor .token.punctuation, +.token.script-punctuation { + color: #747790 !important; + opacity: 1 !important; +} +.live-editor .token.entity, +.live-editor .token.url { + color: inherit !important; + background: none; +} +.live-editor .token.function, +.live-editor .token.class-name { + color: #e535ab !important; +} + +.live-editor + .token.tag:not(.attr-value):not(.attr-name):not(.punctuation):not(.script-punctuation) { + color: #e535ab !important; +} + +.live-editor .token.selector, +.live-editor .token.attr-name, +.live-editor .token.string, +.live-editor .token.char, +.live-editor .token.builtin, +.live-editor .token.inserted { + color: #009f97 !important; +} +.live-editor .token.comment, +.live-editor .token.prolog, +.live-editor .token.doctype, +.live-editor .token.cdata { + color: #9496aa !important; +} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx new file mode 100644 index 00000000..fcadd9f6 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx @@ -0,0 +1,3 @@ +import '../../styles'; +import 'prismjs/themes/prism.css'; +import './docs.css'; diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx new file mode 100644 index 00000000..d1306c64 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx @@ -0,0 +1,276 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../../../../types'; +import React, { useEffect, useState } from 'react'; +import { Route, Link, Switch as RouterSwitch } from 'react-router-dom'; + +import { menuContent, MenuItemT } from '../../common/menu-content'; + +import { version } from '../../../package.json'; + +import { + TopAppBar, + TopAppBarRow, + TopAppBarSection, + TopAppBarTitle, + TopAppBarNavigationIcon, + TopAppBarActionItem, + TopAppBarFixedAdjust +} from '../../../../top-app-bar'; + +import { Icon } from '../../../../icon'; +import { ThemeProvider } from '../../../../theme'; +import { Typography } from '../../../../typography'; +import { Ripple } from '../../../../ripple'; + +import { + Drawer, + DrawerContent, + DrawerAppContent, + DrawerProps +} from '../../../../drawer'; + +import { ListItem, CollapsibleList, SimpleListItem, List } from '../../../../list'; + +import { SimpleMenu, MenuItem } from '../../../../menu'; +import { Portal } from '../../../../base'; + +import Home from '../home'; +import { SiteSearch } from '../site-search'; +import { DOC_VERSIONS } from '../../common/doc-versions'; +import { ThemePicker, getTheme } from './theme-picker'; +import { history } from '../../common/history'; + +const MainMenuItem = ({ url, label }: { url?: string; label: string }) => { + return ( + window.scrollTo(0, 0)} + activated={ + window.location.pathname.split('/').pop() === url?.split('/').pop() + } + > + {label} + + ); +}; + +const GithubSvg = () => ( + + + +); + +function AppBar({ + onNavClick, + children +}: { + onNavClick: (evt: React.SyntheticEvent) => void; + children: React.ReactNode; +}) { + return ( + <> + + + + + + RMWC + + + {version} + + } + > + {version} + {DOC_VERSIONS.map((v) => ( + + {v} + + ))} + + + + + + {children} + } + /> + + + + + + ); +} + +function Nav(props: DrawerProps) { + return ( + <> + + + + + + + + + +
    +
    + Made with{' '} + + ❤️ + {' '} + in Sunny FL. +
    +
    Donate on Open Collective
    +
    +
    +
    +
    + + ); +} + +export function App() { + const isMobile = window.innerWidth < 640; + const [menuIsOpen, setMenuIsOpen] = useState(!isMobile); + const [pageId, setPageId] = useState( + `page-${window.location.pathname.split('/').pop() || 'home'}` + ); + const [theme, setTheme] = useState( + window.localStorage.getItem('rmwcTheme') || 'Baseline' + ); + + useEffect(() => { + isMobile && setMenuIsOpen(false); + const listener = (evt: any) => { + const _isMobile = window.innerWidth < 640; + if (_isMobile !== isMobile) { + setMenuIsOpen(!_isMobile); + } + }; + window.addEventListener('resize', listener); + return () => window.removeEventListener('resize', listener); + }, [isMobile]); + + useEffect(() => { + history.listen(() => { + setPageId(`page-${window.location.pathname.split('/').pop() || 'home'}`); + }); + }, []); + + return ( + + { + setMenuIsOpen(!menuIsOpen); + }} + > + {!isMobile && ( + { + window.localStorage.setItem('rmwcTheme', themeName); + setTheme(themeName); + }} + /> + )} + + +
    +
    + +
    + ); +} + +function NavItems({ options }: { options: MenuItemT[] }) { + return ( + <> + {options.map((m) => { + if (m.options) { + return ( + + o.url && + window.location.pathname.split('/').pop() === + o.url?.split('/').pop() + ) + } + handle={ + + } + > + + + ); + } + return ; + })} + + ); +} + +function DocRoutes({ options }: { options: MenuItemT[] }) { + return ( + <> + {options.map((m, index) => { + if (m.options) { + return ; + } + + return ( + { + document.title = `RMWC | React Material Web Components | ${m.label}`; + const Component = m.component || <>; + // @ts-ignore + return ; + }} + /> + ); + })} + + ); +} + +export default App; diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx new file mode 100644 index 00000000..1bdc9613 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx @@ -0,0 +1,335 @@ +import * as RMWC from '../../../../types'; +import React from 'react'; +import { TabBar, Tab } from '../../../../tabs'; + +import { + ListItem, + ListGroupSubheader, + ListItemGraphic, + ListItemMeta +} from '../../../../list'; + +import { MenuSurface, MenuSurfaceAnchor } from '../../../../menu'; + +import { Button } from '../../../../button'; +import { toCamel, toDashCase } from '../../../../base'; +import { getAutoColorsForTheme } from '../../../../theme/utils'; +import { TopAppBarActionItem } from '../../../../top-app-bar'; + +const DEFAULT_THEME = { + '--mdc-theme-primary': '#6200ee', + '--mdc-theme-secondary': '#03dac4', + '--mdc-theme-background': '#fff', + '--mdc-theme-surface': '#fff', + '--mdc-theme-error': '#b00020' +}; + +const TEXT_DEFAULTS = { + '--mdc-theme-on-primary': '#fff', + '--mdc-theme-on-secondary': '#fff', + '--mdc-theme-on-surface': '#000', + '--mdc-theme-on-error': '#fff', + '--mdc-theme-text-primary-on-background': 'rgba(0, 0, 0, 0.87)', + '--mdc-theme-text-secondary-on-background': 'rgba(0, 0, 0, 0.54)', + '--mdc-theme-text-hint-on-background': 'rgba(0, 0, 0, 0.38)', + '--mdc-theme-text-disabled-on-background': 'rgba(0, 0, 0, 0.38)', + '--mdc-theme-text-icon-on-background': 'rgba(0, 0, 0, 0.38)', + '--mdc-theme-text-primary-on-light': 'rgba(0, 0, 0, 0.87)', + '--mdc-theme-text-secondary-on-light': 'rgba(0, 0, 0, 0.54)', + '--mdc-theme-text-hint-on-light': 'rgba(0, 0, 0, 0.38)', + '--mdc-theme-text-disabled-on-light': 'rgba(0, 0, 0, 0.38)', + '--mdc-theme-text-icon-on-light': 'rgba(0, 0, 0, 0.38)', + '--mdc-theme-text-primary-on-dark': 'white', + '--mdc-theme-text-secondary-on-dark': 'rgba(255, 255, 255, 0.7)', + '--mdc-theme-text-hint-on-dark': 'rgba(255, 255, 255, 0.5)', + '--mdc-theme-text-disabled-on-dark': 'rgba(255, 255, 255, 0.5)', + '--mdc-theme-text-icon-on-dark': 'rgba(255, 255, 255, 0.5)' +}; + +const THEMES: { [key: string]: { [key: string]: string } } = { + Baseline: { + '--mdc-theme-primary': '#6200ee', + '--mdc-theme-secondary': + '#03dac4' /** Any theme option pointing to a valid CSS value. */ + }, + Crane: { + '--mdc-theme-primary': '#5d1049', + '--mdc-theme-secondary': '#fa3336' + }, + Fortnightly: { + '--mdc-theme-primary': '#303030', + '--mdc-theme-secondary': '#661fff' + }, + Shrine: { + '--mdc-theme-primary': '#ffdbcf', + '--mdc-theme-secondary': '#feeae6' + }, + Dark: { + '--mdc-theme-background': '#212121', + '--mdc-theme-surface': '#37474F', + '--mdc-theme-on-surface': 'rgba(255,255,255,.87)', + '--mdc-theme-primary': '#24aee9', + '--mdc-theme-on-primary': 'rgba(255,255,255,.87)', + '--mdc-theme-secondary': '#e539ff', + '--mdc-theme-on-secondary': 'rgba(0,0,0,0.87)' + } +}; + +export class ThemePicker extends React.Component<{ + selectedThemeName: string; + onThemeClick: (themeName: string) => void; +}> { + state = { + open: false, + activeTabIndex: 0 + }; + + componentDidUpdate() { + window.requestAnimationFrame(() => + window.dispatchEvent(new Event('resize')) + ); + } + + render() { + const { selectedThemeName, onThemeClick } = this.props; + const selectedTheme = getTheme(selectedThemeName); + return ( + + { + this.setState({ open: false }); + }} + > + Themes + {Object.keys(THEMES).map(themeName => { + const theme: { [key: string]: string } = getTheme(themeName); + return ( + ) => { + evt.stopPropagation(); + onThemeClick(themeName); + }} + > +
    + + {themeName} + + + + + + + + ); + })} + this.setState({ open: true })} + style={{ margin: '1rem auto -1rem auto' }} + activeTabIndex={this.state.activeTabIndex} + onActivate={evt => + this.setState({ activeTabIndex: evt.detail.index }) + } + > + ThemeProvider + CSS + + this.setState({ open: true })} + ripple={false} + style={{ + backgroundColor: 'rgba(0,0,0,.05)', + padding: '1rem', + marginTop: '1rem', + display: 'block', + height: 'auto', + userSelect: 'initial', + cursor: 'text' + }} + > + {this.state.activeTabIndex === 0 ? ( +
    +
    + Theme your App! +
    + Place this tag around the root of your App, or anywhere you + want to apply a custom theme. +
    +
    +
    + import {'{'}{' '} + ThemeProvider {'}'} from{' '} + 'rmwc/Theme'; +
    +
    + < + ThemeProvider + options={'{{'} + {Object.entries(selectedTheme).map( + ([t, val]: [string, any], index, arr) => ( +
    + + +    + {toCamel(t.split('--mdc-theme-')[1])}: + {' '} + '{val}'{index < arr.length - 1 ? ',' : ''} + + + +
    + ) + )} + {'}}'} + > +
    +    + < + App + /> +
    + </ + ThemeProvider + > +
    + ) : ( +
    +
    + Theme your App! +
    + Copy and paste these rules into your main css file, or a style + tag in your app and customize to your liking. +
    +
    +
    + :root {'{'} + {Object.entries(selectedTheme).map( + ([t, val]: [string, any]) => ( +
    + + +    + {t}: + {' '} + {val}; + + + +
    + ) + )} + {'}'} +
    + )} +
    +
    + +
    + + this.setState({ open: !this.state.open })} + theme="onPrimary" + icon="color_lens" + /> + + ); + } +} + +export const getTheme = (themeName: string) => { + const theme = { + ...DEFAULT_THEME, + ...(THEMES[themeName] || {}) + }; + + const colors = getAutoColorsForTheme(theme); + const merged: { [key: string]: string } = { + ...TEXT_DEFAULTS, + ...colors + }; + + const order: RMWC.ThemeOptionT[] = [ + 'primary', + 'secondary', + 'error', + 'background', + 'surface', + 'onPrimary', + 'onSecondary', + 'onSurface', + 'onError', + 'textPrimaryOnBackground', + 'textSecondaryOnBackground', + 'textHintOnBackground', + 'textDisabledOnBackground', + 'textIconOnBackground', + 'textPrimaryOnLight', + 'textSecondaryOnLight', + 'textHintOnLight', + 'textDisabledOnLight', + 'textIconOnLight', + 'textPrimaryOnDark', + 'textSecondaryOnDark', + 'textHintOnDark', + 'textDisabledOnDark', + 'textIconOnDark' + ]; + + return order.reduce<{ [key: string]: string }>((acc, key) => { + const newKey = `--mdc-theme-${toDashCase(key!)}`; + acc[newKey] = merged[newKey]; + return acc; + }, {}); +}; + +const ColorBlock = ({ + color, + size = 1.5 +}: { + color: string; + size?: number; +}) => ( +
    +); diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css new file mode 100644 index 00000000..5e6b98d3 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css @@ -0,0 +1,193 @@ +/* page home */ +:global(#page-home .app__content) { + display: flex; + flex-direction: column; +} + +:global(#page-home .mdc-layout-grid) { + padding: 0; +} + +.headline1 { + margin-bottom: 0.5rem; +} + +.headline2 { + margin-top: 0; + margin-bottom: 2rem; + opacity: 0.8; +} + +.header { + display: flex; + align-items: center; + position: relative; + box-sizing: border-box; + flex: 1; + background-color: var(--mdc-theme-primary); +} + +.header a { + text-decoration: none; +} + +.header:before { + content: ''; + background-image: linear-gradient(white, transparent); + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 0.1; + pointer-events: none; +} + +.header .container { + max-width: 720px; + position: relative; +} + +.container { + max-width: 720px; + text-align: center; +} + +.intro { + text-align: center; + margin-bottom: 3rem; +} + +:global(#page-home .mdc-layout-grid__cell) { + display: flex; + flex-direction: column; +} + +.featureGrid { + position: relative; +} + +.featureGrid a { + display: flex; + flex: 1; + flex-direction: column; +} + +.featureGrid a > div { + flex: 1; +} + +.checklist { + text-align: left; + display: inline-block; + margin-top: 1rem; +} + +.checklist > div { + margin: 0.5rem 0; + display: flex; + align-items: center; + line-height: 1.4; +} + +.checklist i { + vertical-align: middle; + margin-right: 1rem; + position: relative; + top: -1px; +} + +.examples { + display: grid !important; + grid-template-columns: 1fr; + width: 100%; + background: rgba(0, 0, 0, 0.05); + padding: 0 !important; + padding-bottom: 3rem !important; +} + +.example { + background: white; + position: relative; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.example:before { + content: ''; + display: block; + padding-top: 100%; +} + +.example:after { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: 0; + background-color: var(--mdc-theme-primary); +} + +.example:hover .exampleInner { + transform: scale(1.2); +} + +.example:hover .exampleName { + transform: translateY(-1rem); + opacity: 1; +} + +.example:hover:after { + opacity: 0.05; +} + +.exampleInner { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + transition: 0.3s; + transform: scale(1); +} + +.exampleName { + padding: 1rem; + text-align: center; + position: absolute; + bottom: 0; + left: 0; + right: 0; + opacity: 0.8; + transform: translateY(0); + transition: 0.3s; +} + +@media (min-width: 37.5rem) { + .examples { + grid-template-columns: 1fr 1fr; + } +} + +@media (min-width: 77.5rem) { + .examples { + grid-template-columns: 1fr 1fr 1fr; + } +} + +@media (min-width: 103.125rem) { + .examples { + grid-template-columns: 1fr 1fr 1fr 1fr; + } +} + +@media (min-width: 135rem) { + .examples { + grid-template-columns: 1fr 1fr 1fr 1fr 1fr; + } +} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx new file mode 100644 index 00000000..2aa14517 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx @@ -0,0 +1,179 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { version } from '../../../package.json'; +import { Typography } from '@rmwc/typography'; + +import { Card, CardMedia } from '@rmwc/card'; +import { Grid, GridCell } from '@rmwc/grid'; +import { Theme } from '@rmwc/theme'; +import { Icon } from '@rmwc/icon'; + +import styles from './home.module.css'; +import { Button } from '@rmwc/button'; + +import { galleryContent } from '../../common/menu-content'; + +const checklist = [ + "Uses Google's official material-components-web library", + 'Includes additional addon components not offered by Google.', + 'Works in React from 16.8.x and up', + 'First class Typescript Support', + 'Server side rendering support', + 'Individually packaged and released components' +]; + +function Example({ + ex, + name, + url +}: { + ex: React.ReactNode; + name: string; + url: string; +}) { + return ( + window.scrollTo(0, 0)} + > +
    +
    {ex}
    +
    +
    + {name} +
    + + ); +} + +export const Home = () => { + return ( + +
    +
    + +
    + + React Material Web Components + + + A React UI Kit built on Google's official Material Components + Web library + + + + + + + v{version} + + +
    + {checklist.map((c) => ( +
    +
    {c}
    +
    + ))} +
    +
    +
    + + + + + +
    + + Simple to Use + + + Get started in 5 minutes. + +
    + +
    + +
    + + + +
    + + Material Accuracy + + + Uses Google's official Material Components Web library. + +
    + + +
    +
    + + + + +
    + + Easy to Customize + + + Integrate with a variety of CSS workflows. + +
    + + +
    + +
    +
    +
    +
    + +
    + {galleryContent.map((ex) => { + return ( + + ); + })} +
    +
    + ); +}; +export default Home; diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx new file mode 100644 index 00000000..ad9a78d7 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx @@ -0,0 +1,261 @@ +import React from 'react'; + +import { + Card, + CardPrimaryAction, + CardMedia, + CardActionButton, + CardActions, + CardActionButtons +} from '@rmwc/card'; + +import { Icon } from '@rmwc/icon'; + +import { Typography } from '@rmwc/typography'; + +import styles from './resources.module.css'; + +type ResourceT = { + name: string; + description: string; + img: string; + url: string; + icon: React.ReactElement; + actions: { label: string; url: string }[]; +}; + +const RESOURCES: ResourceT[] = [ + { + name: 'Visit Github', + description: 'Browse the code, the issues, the changelog.', + img: 'images/backgrounds/mb-bg-fb-02.png', + url: 'https://github.com/jamesmfriedman/rmwc', + icon: ( + + + + ), + actions: [ + { label: 'Visit Github', url: 'https://github.com/jamesmfriedman/rmwc' } + ] + }, + { + name: 'Code Sandbox', + description: + 'Play around with RMWC components in both Javascript and Typescript. Useful for kicking the tires, or reproducing issues.', + url: 'https://codesandbox.io/s/rmwc-sandbox-o0s0d', + img: 'images/backgrounds/mb-bg-fb-09.png', + icon: ( + + + + ), + actions: [ + { + label: 'Javascript', + url: 'https://codesandbox.io/s/rmwc-sandbox-o0s0d' + }, + { + label: 'Typescript', + url: 'https://codesandbox.io/s/rmwc-typescript-sandbox-y7516' + } + ] + }, + { + name: 'Chat on Discord', + description: + 'Join the conversation. Get quicker responses to questions and feedback.', + url: 'https://discord.gg/4BSUxCW', + img: 'images/backgrounds/mb-bg-fb-12.png', + icon: ( + + + + ), + actions: [{ label: 'Start Chatting', url: 'https://discord.gg/4BSUxCW' }] + }, + { + name: 'Donate on OpenCollective', + description: + 'This library is built with Typescript, sweat, and thousands of hours of hard work. Help support Open Source Software!', + url: 'https://opencollective.com/rmwc', + img: 'images/backgrounds/mb-bg-fb-07.png', + icon: ( + + + + ), + actions: [ + { + label: 'Donate', + url: 'https://opencollective.com/rmwc' + } + ] + }, + { + name: 'Share', + description: + "Don't keep letting your friends build software with bad UI libraries. Spread the word about RMWC.", + url: `https://twitter.com/intent/tweet?text=${encodeURIComponent( + 'You should definitely be using RMWC for your next project! https://rmwc.io' + )}`, + img: 'images/backgrounds/mb-bg-fb-15.png', + icon: ( + + + + ), + actions: [ + { + label: 'Tweet', + url: `https://twitter.com/intent/tweet?text=${encodeURIComponent( + 'You should definitely be using RMWC for your next project! https://rmwc.io' + )}` + }, + { + label: 'Star on Github', + url: `https://github.com/jamesmfriedman/rmwc` + } + ] + }, + { + name: 'Updates', + description: + 'Read the change blog and also review auto generated changes between releases.', + url: 'https://opencollective.com/rmwc/updates', + img: 'images/backgrounds/mb-bg-fb-22.png', + icon: ( + + + + ), + actions: [ + { label: 'Blog', url: 'https://opencollective.com/rmwc/updates' }, + { + label: 'Changelog', + url: 'https://github.com/jamesmfriedman/rmwc/blob/master/CHANGELOG.md' + } + ] + }, + { + name: 'Open an Issue', + description: + 'Experiencing a problem or have a feature request? File an issue and let us know how we can help.', + url: 'https://github.com/jamesmfriedman/rmwc/issues/new', + img: 'images/backgrounds/mb-bg-fb-27.png', + icon: ( + + + + ), + actions: [ + { + label: 'New Issue', + url: 'https://github.com/jamesmfriedman/rmwc/issues/new' + } + ] + }, + { + name: 'Contribute', + description: + "This project accepts Pull Requests from the community. Don't be scared, getting started is as easy as running `npm i`.", + url: 'https://github.com/jamesmfriedman/rmwc/blob/master/CONTRIBUTING.md', + img: 'images/backgrounds/mb-bg-fb-30.png', + icon: ( + + + + ), + actions: [ + { + label: 'Read Guidelines', + url: + 'https://github.com/jamesmfriedman/rmwc/blob/master/CONTRIBUTING.md' + } + ] + } +]; + +export default function Resources() { + return ( +
    +

    Resources

    +
    +
    + {RESOURCES.map(r => ( + + ))} +
    +
    +
    + ); +} + +function ResourceCard({ resource }: { resource: ResourceT }) { + return ( + + + + + +
    + + {resource.name} + + + {resource.description} + +
    +
    + + + + {resource.actions.map(a => ( + + ))} + + +
    + ); +} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css new file mode 100644 index 00000000..6cd99e03 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css @@ -0,0 +1,51 @@ +.cardGridInner { + display: grid !important; + grid-gap: 1rem; +} + +.icon { + font-size: 6rem; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(1); + color: white; + fill: currentColor; + transition: 0.3s; + min-width: 1em; + max-width: 1em; +} + +.card .cardMedia { + transition: 0.3s; + background-size: 120%; +} + +.card:hover .cardMedia { + background-size: 100%; +} + +.card:hover .icon { + transform: translate(-50%, -50%) scale(1.2); +} + +@media (min-width: 37.5rem) { +} + +@media (min-width: 48rem) { + .cardGridInner { + grid-template-columns: 1fr 1fr; + } +} + +@media (min-width: 90rem) { + .cardGridInner { + grid-template-columns: 1fr 1fr 1fr; + } +} + +@media (min-width: 100rem) { + .cardGridInner { + grid-template-columns: 1fr 1fr 1fr 1fr; + } +} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx new file mode 100644 index 00000000..00212bb1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx @@ -0,0 +1,209 @@ +import React, { useState, useRef } from 'react'; +import { menuContent, MenuItemT } from '../../common/menu-content'; +import { Menu, MenuItems, MenuSurfaceAnchor } from '../../../../menu'; + +import { SimpleListItem } from '../../../../list'; +import { TextField } from '../../../../textfield'; +import { Link } from 'react-router-dom'; +import { CircularProgress } from '../../../../circular-progress'; + +import { history } from '../../common/history'; +import styles from './site-search.module.css'; +import { IconPropT } from '../../../../types'; + +type SiteSearchItemT = { + cacheId: string; //"-uBq3tnNfuMJ" + displayLink: string; //"rmwc.io" + formattedUrl: string; //"https://rmwc.io/?p=installation" + htmlSnippet: string; //"npm i ../../../../button --save or yarn add ../../../../button; Include the individual
    ↵components stylesheets (listed on their docs page) in your project via your
    ↵method ..." + htmlTitle: string; //"RMWC | React Material Web Components | Installation" + kind: string; //"customsearch#result" + link: string; //"https://rmwc.io/?p=installation" + snippet: string; //"npm i ../../../../button --save or yarn add ../../../../button; Include the individual ↵components stylesheets (listed on their docs page) in your project via your ↵method ..." + title: string; //"RMWC | React Material Web Components | Installation" +}; + +const componentsList = (() => { + const walkOptions = (options: MenuItemT[]) => { + return options.reduce((acc, val) => { + if (val.options) { + acc.push(...walkOptions(val.options!)); + } else { + acc.push(val); + } + return acc; + }, []); + }; + + return walkOptions(menuContent); +})(); + +const searchComponents = (val: string) => + componentsList + .filter(c => { + return c.label.toLowerCase().includes(val.toLowerCase()); + }) + .map(c => ({ + id: c.label, + icon: { + icon: 'code', + theme: 'primary' + }, + sectionName: c.label, + snippet: `View docs for ${c.label}`, + url: c.url! + })); + +const searchGoogle = async (val: string, abortController: AbortController) => { + const { + items = [] + } = await fetch( + `https://www.googleapis.com/customsearch/v1/siterestrict?key=${process.env.REACT_APP_CUSTOM_SEARCH_KEY}&cx=${process.env.REACT_APP_CUSTOM_SEARCH_ID}&q=${val}`, + { signal: abortController.signal } + ).then<{ items?: SiteSearchItemT[] }>(res => res.json()); + + return ( + items + // shitty hack to ignore things in the index that just reference them homepage + .filter(r => !r.snippet.startsWith('RMWC is a React wrapper')) + .map(r => ({ + id: r.cacheId, + icon: { + icon: 'notes', + theme: 'primary' + }, + sectionName: (r.title.split('|').pop() || '').trim(), + snippet: r.snippet, + // resolve from the full url into the page + url: ( + (r.formattedUrl.split('?').pop() || '') + .split('&') + .find(p => p.startsWith('p=')) || '' + ).slice(2) + })) + ); +}; + +export function SiteSearch() { + const [searchVal, _setSearchVal] = useState(''); + const [isSearching, setIsSearching] = useState(false); + const timerIdRef = useRef(); + const abortControllerRef = useRef(); + const [results, setResults] = useState< + Array<{ + id: string; + sectionName: string; + icon: IconPropT; + snippet: string; + url: string; + }> + >([]); + + const doSearch = (val: string) => { + if (abortControllerRef.current) { + abortControllerRef.current.abort(); + abortControllerRef.current = undefined; + } + + if (timerIdRef.current) { + clearTimeout(timerIdRef.current); + } + + const abortController = new AbortController(); + abortControllerRef.current = abortController; + + timerIdRef.current = window.setTimeout(async () => { + const components = searchComponents(val); + setResults(components); + + try { + const searchResults = await searchGoogle(val, abortController); + abortControllerRef.current = undefined; + setResults([...components, ...searchResults]); + } catch (err) { + console.warn(err); + abortControllerRef.current = undefined; + } + }, 200); + }; + + const setSearchVal = (val: string) => { + if (val.length > 2) { + !isSearching && setIsSearching(true); + doSearch(val); + } else { + setResults([]); + } + + _setSearchVal(val); + }; + + return ( + + setSearchVal('') + }} + outlined + className={styles.siteSearch} + value={searchVal} + onChange={evt => setSearchVal(evt.currentTarget.value)} + onFocus={() => setIsSearching(true)} + onKeyDown={evt => { + if (evt.which === 40) { + const listItem = document.querySelector( + `.${styles.siteSearchMenu} a` + ); + + if (isSearching && listItem) { + listItem.focus(); + } + } + }} + /> + 2} + anchorCorner="bottomStart" + focusOnOpen={false} + onFocus={() => setIsSearching(true)} + onClose={() => { + setIsSearching(false); + }} + onSelect={evt => { + window.scrollTo(0, 0); + history.replace( + (evt.detail.item as HTMLAnchorElement).href.split('/').pop() || '/' + ); + document.activeElement && + (document.activeElement as HTMLElement).blur(); + }} + > + + {results.map(r => ( + + ))} + {!!abortControllerRef.current && ( +
    + +
    + )} + + {!abortControllerRef.current && !results.length && ( + + )} +
    +
    +
    + ); +} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css new file mode 100644 index 00000000..0eb3b127 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css @@ -0,0 +1,60 @@ +.siteSearchWrapper { + margin-left: 0.75rem; +} + +.siteSearch { + height: 2.5rem; + color: var(--mdc-theme-on-primary, white) !important; +} + +.siteSearch input { + color: inherit !important; +} + +.siteSearch input::placeholder { + color: inherit !important; + opacity: 0.7 !important; +} + +.siteSearch :global([class*='mdc-notched-outline__']) { + border-color: var(--mdc-theme-on-primary, white) !important; + opacity: 0.6; +} + +.siteSearch:global(.mdc-text-field--focused [class*='mdc-notched-outline__']) { + opacity: 1; +} + +.siteSearchMenu { + width: 40rem; + max-width: 100vw; +} + +.siteSearchMenu :global(.mdc-list-item__text) { + white-space: normal; +} + +.siteSearchMenu :global(.mdc-list-item__secondary-text) { + white-space: normal; + padding-bottom: 1rem; +} + +.siteSearchMenu :global(.mdc-list-item) { + height: auto !important; + min-height: 4.5rem; +} + +.siteSearch :global(.rmwc-icon) { + color: inherit !important; +} + +.loading { + padding: 1rem; + text-align: center; +} + +@media (max-width: 640px) { + .siteSearchWrapper { + display: none; + } +} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/index.tsx new file mode 100644 index 00000000..551b33e8 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/index.tsx @@ -0,0 +1,41 @@ +// export { version } from './base/package.json'; + +export * from '../avatar'; +export * from '../base'; +export * from '../badge'; +export * from '../button'; +export * from '../card'; +export * from '../circular-progress'; +export * from '../checkbox'; +export * from '../chip'; +export * from '../data-table'; +export * from '../dialog'; +export * from '../drawer'; +export * from '../elevation'; +export * from '../fab'; +export * from '../floating-label'; +export * from '../formfield'; +export * from '../grid'; +export * from '../grid-list'; +export * from '../icon'; +export * from '../icon-button'; +export * from '../image-list'; +export * from '../line-ripple'; +export * from '../linear-progress'; +export * from '../list'; +export * from '../menu'; +export * from '../notched-outline'; +export * from '../provider'; +export * from '../radio'; +export * from '../ripple'; +export * from '../select'; +export * from '../slider'; +export * from '../snackbar'; +export * from '../switch'; +export * from '../tabs'; +export * from '../textfield'; +export * from '../theme'; +export * from '../toggleable'; +export * from '../tooltip'; +export * from '../top-app-bar'; +export * from '../typography'; diff --git a/packages/mc-react-ui-components/src/lib/rmwc/styles.tsx b/packages/mc-react-ui-components/src/lib/rmwc/styles.tsx new file mode 100644 index 00000000..6afcf151 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/rmwc/styles.tsx @@ -0,0 +1,31 @@ +import '../theme/styles'; +import '../icon/styles'; +import '../button/styles'; +import '../avatar/styles'; +import '../badge/styles'; +import '../card/styles'; +import '../checkbox/styles'; +import '../chip/styles'; +import '../circular-progress/styles'; +import '../data-table/styles'; +import '../dialog/styles'; +import '../drawer/styles'; +import '../elevation/styles'; +import '../fab/styles'; +import '../grid/styles'; +import '../grid-list/styles'; +import '../icon-button/styles'; +import '../image-list/styles'; +import '../linear-progress/styles'; +import '../list/styles'; +import '../menu/styles'; +import '../radio/styles'; +import '../select/styles'; +import '../slider/styles'; +import '../snackbar/styles'; +import '../switch/styles'; +import '../tabs/styles'; +import '../tooltip/styles'; +import '../top-app-bar/styles'; +import '../textfield/styles'; +import '../typography/styles'; diff --git a/packages/mc-react-ui-components/src/lib/select/README.md b/packages/mc-react-ui-components/src/lib/select/README.md new file mode 100644 index 00000000..58313c5e --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/README.md @@ -0,0 +1,235 @@ +# Select Menus + +Menus display a list of choices on a transient sheet of material. + +- Module **@rmwc/select** +- Import styles: + - Using CSS Loader + - import '@rmwc/select/styles'; + - Or include stylesheets + - **'@rmwc/select/select.css'** + - **'@material/select/dist/mdc.select.css'** + - **'@material/floating-label/dist/mdc.floating-label.css'** + - **'@material/notched-outline/dist/mdc.notched-outline.css'** + - **'@material/line-ripple/dist/mdc.line-ripple.css'** + - **'@material/list/dist/mdc.list.css'** + - **'@material/menu/dist/mdc.menu.css'** + - **'@material/menu-surface/dist/mdc.menu-surface.css'** + - **'@material/ripple/dist/mdc.ripple.css'** +- MDC Docs: [https://material.io/develop/web/components/input-controls/select-menus/](https://material.io/develop/web/components/input-controls/select-menus/) + +## Select Styles + +Selects come in three different styles: standard,outlined, and enhanced. + +```jsx + +``` + +```jsx + +``` + +## Validation + +```jsx + +``` + +```jsx + setValue(evt.currentTarget.value)} + /> + ); +} +``` + +```jsx +; +} +``` + +```jsx + +``` + +## Manually Building the List + +If you want full control over the child `ListItems`, you can manually build the list yourself. + +```jsx + +``` + +## Option Groups + +Both native and enhanced Selects can contain option groups. Just nest additional options arrays in your data. + +```jsx + + + + + + + + + +``` + +## Select +A Select Component + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `disabled` | `undefined \| false \| true` | Makes the Select disabled. | +| `enhanced` | `boolean \| MenuProps` | Renders a non native / enhanced dropdown | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `helpText` | `React.ReactNode \| SelectHelperTextProps` | Adds help text to the field | +| `icon` | `RMWC.IconPropT` | Add a leading icon. | +| `inputRef` | `undefined \| (ref: HTMLSelectElement \| null) => void` | A reference to the native select element. Not applicable when `enhanced` is true. | +| `invalid` | `undefined \| false \| true` | Makes the Select visually invalid. This is sometimes automatically my material-components-web. | +| `label` | `undefined \| string` | A label for the form control. | +| `options` | `FormattedOption[] \| string[] \| { [value: string]: string }` | Options accepts flat arrays, value => label maps, and more. See examples for details. | +| `outlined` | `undefined \| false \| true` | Makes the select outlined. | +| `placeholder` | `undefined \| string` | Placeholder text for the form control. Set to a blank string to create a non-floating placeholder label. | +| `required` | `undefined \| false \| true` | Makes the Select required. | +| `rootProps` | `Object` | Props for the root element. By default, additional props spread to the native select element. | +| `value` | `undefined \| string` | The value for a controlled select. | + + diff --git a/packages/mc-react-ui-components/src/lib/select/generated-examples.json b/packages/mc-react-ui-components/src/lib/select/generated-examples.json new file mode 100644 index 00000000..4d015838 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/generated-examples.json @@ -0,0 +1 @@ +[";\n}","","","","",""] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/select/generated-props.json b/packages/mc-react-ui-components/src/lib/select/generated-props.json new file mode 100644 index 00000000..16be2a66 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/generated-props.json @@ -0,0 +1,637 @@ +{ + "npm": {}, + "typescript": { + "SelectIconApi": { + "fileName": "src/select/select-icon/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SelectIconApi", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select-icon/index.tsx#L8", + "methods": [], + "properties": [ + { + "fileName": "src/select/select-icon/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getFoundation", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select-icon/index.tsx#L9", + "type": "() => MDCSelectIconFoundation" + } + ] + }, + "SelectIconProps": { + "documentation": { + "contents": [ + "

    An Icon in a Select

    \n" + ], + "contentsRaw": "An Icon in a Select", + "metadata": {} + }, + "fileName": "src/select/select-icon/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SelectIconProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select-icon/index.tsx#L13", + "extends": [ + "IconProps" + ], + "methods": [], + "properties": [ + { + "fileName": "src/select/select-icon/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select-icon/index.tsx#L14", + "type": "undefined | (api: SelectIconApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    The icon to use. This can be a string for a font icon, a url, or whatever the selected strategy needs.

    \n" + ], + "contentsRaw": "The icon to use. This can be a string for a font icon, a url, or whatever the selected strategy needs.", + "metadata": {} + }, + "fileName": "src/select/node_modules/@rmwc/menu/node_modules/@rmwc/list/node_modules/@rmwc/icon/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "IconProps.icon", + "type": "RMWC.IconPropT" + } + ] + }, + "FormattedOption": { + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "FormattedOption", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L23", + "extends": [ + "any" + ], + "methods": [], + "properties": [ + { + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L25", + "type": "React.ReactNode" + }, + { + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "options", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L27", + "type": "FormattedOption[]" + }, + { + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "value", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L26", + "type": "undefined | string" + } + ] + }, + "SelectProps": { + "documentation": { + "contents": [ + "

    A Select Component

    \n" + ], + "contentsRaw": "A Select Component", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SelectProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L31", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Makes the Select disabled.

    \n" + ], + "contentsRaw": "Makes the Select disabled.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L47", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Renders a non native / enhanced dropdown

    \n" + ], + "contentsRaw": "Renders a non native / enhanced dropdown", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "enhanced", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L51", + "type": "boolean | MenuProps" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L59", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Adds help text to the field

    \n" + ], + "contentsRaw": "Adds help text to the field", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "helpText", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L35", + "type": "React.ReactNode | SelectHelperTextProps" + }, + { + "documentation": { + "contents": [ + "

    Add a leading icon.

    \n" + ], + "contentsRaw": "Add a leading icon.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L57", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    A reference to the native select element. Not applicable when enhanced is true.

    \n" + ], + "contentsRaw": "A reference to the native select element. Not applicable when `enhanced` is true.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "inputRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L55", + "type": "undefined | (ref: HTMLSelectElement | null) => void" + }, + { + "documentation": { + "contents": [ + "

    Makes the Select visually invalid. This is sometimes automatically my material-components-web.

    \n" + ], + "contentsRaw": "Makes the Select visually invalid. This is sometimes automatically my material-components-web.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "invalid", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L45", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A label for the form control.

    \n" + ], + "contentsRaw": "A label for the form control.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L39", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    Options accepts flat arrays, value => label maps, and more. See examples for details.

    \n" + ], + "contentsRaw": "Options accepts flat arrays, value => label maps, and more. See examples for details.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "options", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L37", + "type": "FormattedOption[] | string[] | { [value: string]: string }" + }, + { + "documentation": { + "contents": [ + "

    Makes the select outlined.

    \n" + ], + "contentsRaw": "Makes the select outlined.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "outlined", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L43", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Placeholder text for the form control. Set to a blank string to create a non-floating placeholder label.

    \n" + ], + "contentsRaw": "Placeholder text for the form control. Set to a blank string to create a non-floating placeholder label.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "placeholder", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L41", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    Makes the Select required.

    \n" + ], + "contentsRaw": "Makes the Select required.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "required", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L49", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Props for the root element. By default, additional props spread to the native select element.

    \n" + ], + "contentsRaw": "Props for the root element. By default, additional props spread to the native select element.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "rootProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L53", + "type": "Object" + }, + { + "documentation": { + "contents": [ + "

    The value for a controlled select.

    \n" + ], + "contentsRaw": "The value for a controlled select.", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "value", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L33", + "type": "undefined | string" + } + ] + }, + "SelectHelperTextProps": { + "documentation": { + "contents": [ + "

    A help text component

    \n" + ], + "contentsRaw": "A help text component", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SelectHelperTextProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L446", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Make the help text always visible

    \n" + ], + "contentsRaw": "Make the help text always visible", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "persistent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L448", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the help a validation message style

    \n" + ], + "contentsRaw": "Make the help a validation message style", + "metadata": {} + }, + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "validationMsg", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L450", + "type": "undefined | false | true" + } + ] + }, + "SelectHTMLProps": { + "fileName": "src/select/select/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SelectHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/select/select/index.tsx#L62", + "type": "RMWC.HTMLProps, \"onSelect\">>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/select/index.tsx b/packages/mc-react-ui-components/src/lib/select/index.tsx new file mode 100644 index 00000000..c7396734 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/index.tsx @@ -0,0 +1 @@ +export * from './select'; diff --git a/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx b/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx new file mode 100644 index 00000000..c87b9530 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { useFoundation } from '@rmwc/base'; +import { IconProps } from '@rmwc/icon'; +import { EventType, SpecificEventListener } from '@material/base/types'; +import { MDCSelectIconFoundation } from '@material/select'; +import { MDCTextFieldIconFoundation } from '@material/textfield'; +import { SelectIconApi } from './'; + +export const useSelectIconFoundation = ( + props: IconProps & React.HTMLProps +) => { + const { foundation, ...elements } = useFoundation({ + props, + elements: { rootEl: true }, + api: ({ + foundation + }: { + foundation: MDCTextFieldIconFoundation; + }): SelectIconApi => { + return { + getFoundation: () => foundation + }; + }, + foundation: ({ rootEl, emit }) => { + return new MDCSelectIconFoundation({ + getAttr: (attr: string) => rootEl.getProp(attr as any) as string | null, + setAttr: (attr: string, value: string) => + rootEl.setProp(attr as any, value), + removeAttr: (attr: string) => rootEl.removeProp(attr as any), + setContent: (content: string) => { + rootEl.ref && (rootEl.ref.textContent = content); + }, + registerInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ) => rootEl.addEventListener(evtType, handler), + deregisterInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ) => rootEl.removeEventListener(evtType, handler), + notifyIconAction: () => emit('onClick', {}, true) + }); + } + }); + + return { ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/select/select-icon/index.tsx b/packages/mc-react-ui-components/src/lib/select/select-icon/index.tsx new file mode 100644 index 00000000..2d92e5be --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/select-icon/index.tsx @@ -0,0 +1,32 @@ +import * as RMWC from '../../types'; +import React from 'react'; +import { MDCSelectIconFoundation } from '@material/select'; +import { Icon, IconProps } from '../../icon'; +import { useClassNames } from '../../base'; +import { useSelectIconFoundation } from './foundation'; + +export interface SelectIconApi { + getFoundation: () => MDCSelectIconFoundation; +} + +/** An Icon in a Select */ +export interface SelectIconProps extends IconProps { + apiRef?: (api: SelectIconApi | null) => void; +} + +export const SelectIcon = function SelectIcon( + props: SelectIconProps & RMWC.HTMLProps +) { + const { apiRef, ...rest } = props; + const { rootEl } = useSelectIconFoundation(props); + const className = useClassNames(props, ['mdc-select__icon']); + + return ( + + ); +}; diff --git a/packages/mc-react-ui-components/src/lib/select/select-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/select/select-ssr.spec.tsx new file mode 100644 index 00000000..ae7c73e5 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/select-ssr.spec.tsx @@ -0,0 +1,17 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Select } from './'; + +describe('Select SSR', () => { + it('renders', () => { + mount( + ); + + const select = container.children[0].querySelector('select'); + + act(() => { + window.requestAnimationFrame(() => { + fireEvent.change(select!); + expect(onChange).toHaveBeenCalled(); + done(); + }); + }); +}); + +describe('Select', () => { + it('renders', () => { + mount( + +
    + ); + + const el2 = mount( +
    + + ); + + // make sure the label is not floating + expect(el.html().includes('mdc-select__label--float-above')).toBe(false); + + // make sure we have 4 options + expect(el.find('option').length).toBe(4); + }); + + it('can accept options array', () => { + mount(); + expect(el.html().includes('mdc-select--outlined')).toBe(true); + }); + + it('can accept formatted options array', () => { + mount( + ); + expect(!!~el.html().search('tabindex="1"')).toEqual(true); + }); + + it('can have custom rootProps', () => { + mount(); + + expect(el.html().includes('mdc-select--disabled')).toBe(false); + el.setProps({ disabled: true }); + + expect(el.html().includes('mdc-select--disabled')).toBe(true); + done(); + }); + + it('can have custom classnames', () => { + const el = mount( + ); + expect(document.activeElement).toBe(el.find('select').getDOMNode()); + }); +}); + +describe('Select: Lifecycle', () => { + const getLabel = (el: ReactWrapper) => + el.find('.mdc-select__selected-text').first().text().trim(); + + it('SelectedText is blank with no value', () => { + const el = mount( + ); + expect(getLabel(el)).toBe(''); + }); + + it('SelectedText is blank with incorrect defaultValue', () => { + const el = mount( + + ); + expect(getLabel(el)).toBe(''); + }); + + it('SelectedText is set to value', () => { + const el = mount( + + ); + expect(getLabel(el)).toBe('Cookies'); + }); + + it('SelectedText is set to default value', () => { + const el = mount( + + ); + expect(getLabel(el)).toBe('Cookies'); + }); + + it('SelectedText is set with async value', (done) => { + const el = mount( + + ); + + setTimeout(() => { + el.setProps({ value: 'Cookies' }); + expect(getLabel(el)).toBe('Cookies'); + done(); + }, 100); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/select/select.story.tsx b/packages/mc-react-ui-components/src/lib/select/select.story.tsx new file mode 100644 index 00000000..3164d5b1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/select.story.tsx @@ -0,0 +1,384 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { action } from '@storybook/addon-actions'; +// import { text, object, array } from '@storybook/addon-knobs'; +// import { Select } from './'; +// import { useKnob } from '@rmwc/base/utils/use-knob'; +// import { MenuItems, MenuItem } from '@rmwc/menu'; +// import { Portal } from '@rmwc/base'; + +// function MutatingSelect(props: any) { +// const [value, setValue] = useKnob('text', 'value', 'Cookies'); +// const [label] = useKnob('text', 'label', 'Label'); +// const [enhanced] = useKnob('boolean', 'enhanced', false); +// const [disabled] = useKnob('boolean', 'disabled', false); +// const [options] = useKnob('array', 'options', [ +// 'Cookies', +// 'Pizza', +// 'Icecream' +// ]); + +// return ( +// +//
    + +//
    +// { +// console.log('onChange', evt.currentTarget.value); +// }} +// /> +//
    +//
    +// +//
    + +// { +// console.log('onChange', evt.currentTarget.value); +// setValue(String(evt.currentTarget.value)); +// }} +// /> + +// +// +// +// +// +// +// +// +// + +// { +// console.log('RMWC Change', evt); +// setValue(String(evt.currentTarget.value)); +// }} +// label="Array" +// options={opts2} +// /> +// { +// console.log('Native Change'); +// setValue(evt.currentTarget.value); +// }} +// > +// {opts2.map((o) => ( +// +// ))} +// + +//
    + +// +// { +// const value = evt.currentTarget.value; +// console.log('onChange', value); +// setValue(value === undefined ? "undefined" : value); +// }} +// options={[ +// 'Cookies', +// 'Pizza', +// 'Icecream' +// ]} +// /> +// +// ); +// } + +// storiesOf('Select', module) +// .add('Select with object', () => ( +// +// )) + +// .add('Select All', () => ) +// .add('Select Enhanced', () => ( +//
    +// +//
    +// )) +// .add('Select Enhanced with Portal', () => ) +// .add('Select without placeholder', () => ( +// action('onChange: ' + evt.currentTarget.value)()} +// /> +// )) +// .add('Select with many values', () => ( +// <> +// Math.random().toString(16))} +// /> +// +// )) +// .add('Select with children', () => ( +// +// )) +// .add('Select with children', () => ( +// +// )) +// .add('Controlled Select', () => { +// return ; +// }) +// .add('Mutating Select', () => ) +// .add('autoFocus', () => ( +// { +// console.log('onChange', evt.currentTarget.value); +// }} +// /> +// )) +// .add('Changing', function () { +// const [value, setValue] = React.useState(''); + +// React.useEffect(() => { +// setInterval(() => { +// setValue((val) => (val === '' ? 'one' : '')); +// }, 2000); +// }, []); + +// return ( +// + {(props.placeholder !== undefined || isEmptyValue) && ( + + )} + {!!selectOptions && + selectOptions.map( + ({ label, options, ...option }: FormattedOption, index: number) => { + if (options) { + return ( + + {options.map(({ label, ...option }, index) => + renderOption({ + label, + option: option as FormattedOption, + index + }) + )} + + ); + } + + return renderOption({ + label, + option: option as FormattedOption, + index + }); + } + )} + {children} + + ); +} + +const SelectedTextEl = withRipple({ surface: false })(function (props: any) { + return ; +}); + +interface EnhancedMenuProps extends MenuProps { + selectOptions: FormattedOption[]; + placeholder?: string; + selectedIndex?: number; + menuApiRef: (api: MenuApi) => void; + value?: string; + defaultValue?: any; + children?: React.ReactNode; +} + +function EnhancedMenu(props: EnhancedMenuProps & SelectHTMLProps) { + const { + selectOptions, + menuApiRef, + value, + placeholder, + children, + selectedIndex, + ...rest + } = props; + + let currentIndex = 0; + + const renderOption = ({ + label, + option + }: { + label: React.ReactNode; + option: FormattedOption; + }) => { + currentIndex += 1; + + return ( + + {label} + + ); + }; + + return ( + + {!!props.placeholder && ( + + {placeholder} + + )} + + {selectOptions.map( + ({ label, options, ...option }: FormattedOption, i: number) => { + if (options) { + return ( + + {label && ( + + {label} + + )} + + {options.map(({ label, ...option }) => + renderOption({ label, option: option as FormattedOption }) + )} + + {i < selectOptions.length - 1 && } + + ); + } + + return renderOption({ label, option: option as FormattedOption }); + } + )} + {children} + + ); +} + +export const Select: RMWC.ComponentType< + SelectProps, + SelectHTMLProps, + 'select' +> = createComponent(function Select(props, ref) { + const { + placeholder, + children, + value, + outlined, + label = '', + options = [], + rootProps = {}, + enhanced, + icon, + onChange, + onFocus, + onBlur, + onKeyDown, + invalid, + inputRef, + helpText, + foundationRef, + ...rest + } = props; + + const selectOptions = createSelectOptions(options); + const { + rootEl, + selectedTextEl, + notchWidth, + menuOpen, + selectedTextContent, + lineRippleActive, + lineRippleCenter, + floatLabel, + setFloatingLabel, + setNativeControl, + setLeadingIcon, + selectedIndex, + setMenu, + handleFocus, + handleBlur, + handleClick, + handleKeydown, + handleMenuClosed, + handleMenuOpened, + handleMenuSelected + } = useSelectFoundation(props); + + const id = useId('select', props); + + const className = useClassNames(props, [ + 'mdc-select', + { + 'mdc-select--outlined': !!outlined, + 'mdc-select--required': !!props.required, + 'mdc-select--invalid': !!invalid, + 'mdc-select--with-leading-icon': !!icon, + 'mdc-select--no-label': !label + } + ]); + + const enhancedMenuProps = typeof enhanced === 'object' ? enhanced : {}; + + const defaultValue = + value !== undefined ? undefined : props.defaultValue || ''; + + const renderedLabel = ( + + {label} + + ); + + const renderHelpText = () => { + const shouldRender = !!helpText; + + if (!shouldRender) { + return null; + } + + const shouldSpread = + typeof helpText === 'object' && !React.isValidElement(helpText); + + return helpText && shouldSpread ? ( + + ) : ( + {helpText} + ); + }; + + return ( + <> + +
    + {!!icon && } + + + {selectedTextContent || <> } + + {outlined ? ( + {renderedLabel} + ) : ( + <> + {renderedLabel} + + + )} + {!enhanced && ( + ) => + handleMenuSelected(evt.currentTarget.selectedIndex) + } + /> + )} +
    + + {enhanced && ( + { + handleMenuSelected(evt.detail.index); + }} + selectOptions={selectOptions} + value={value} + selectedIndex={selectedIndex} + menuApiRef={setMenu} + children={children} + /> + )} +
    + {renderHelpText()} + + ); +}); + +/** A help text component */ +export interface SelectHelperTextProps { + /** Make the help text always visible */ + persistent?: boolean; + /** Make the help a validation message style */ + validationMsg?: boolean; +} + +/** A help text component */ +export const SelectHelperText: RMWC.ComponentType< + SelectHelperTextProps, + RMWC.HTMLProps, + 'div' +> = createComponent(function SelectHelperText( + props: SelectHelperTextProps & RMWC.HTMLProps, + ref: React.Ref +) { + const { persistent, validationMsg, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-select-helper-text', + { + 'mdc-select-helper-text--persistent': persistent, + 'mdc-select-helper-text--validation-msg': validationMsg + } + ]); + + return ; +}); diff --git a/packages/mc-react-ui-components/src/lib/select/styles.tsx b/packages/mc-react-ui-components/src/lib/select/styles.tsx new file mode 100644 index 00000000..5d499fd0 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/select/styles.tsx @@ -0,0 +1,8 @@ +import '@rmwc/select/select.css'; +import '@material/select/dist/mdc.select.css'; +import '@rmwc/floating-label/styles'; +import '@rmwc/notched-outline/styles'; +import '@rmwc/line-ripple/styles'; +import '@rmwc/list/styles'; +import '@rmwc/menu/styles'; +import '@rmwc/ripple/styles'; diff --git a/packages/mc-react-ui-components/src/lib/slider/README.md b/packages/mc-react-ui-components/src/lib/slider/README.md new file mode 100644 index 00000000..e419fce4 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/README.md @@ -0,0 +1,65 @@ +# Sliders + +> Sliders let users select from a range of values by moving the slider thumb. + +- Module **@rmwc/slider** +- Import styles: + - Using CSS Loader + - import '@rmwc/slider/styles'; + - Or include stylesheets + - **'@material/slider/dist/mdc.slider.css'** +- MDC Docs: [https://material.io/develop/web/components/input-controls/sliders/](https://material.io/develop/web/components/input-controls/sliders/) + +Sliders can be both uncontrolled and controlled. When creating a controlled `Slider`, you should be listening to the `onInput` event and use `evt.detail.value` to set your new value. + +Sliders will automatically layout themselves on window resize. If you need to manually trigger a layout because the sliders container size changed, the simplest way is to trigger a resize event `window.dispatchEvent(new Event('resize'));`. + +**Known Issue** `material-components-web` uses pointer events internally. If you are using something below React 16.4, you will see unknown attribute errors, however the slider should still work. + +```jsx + console.log(evt)} + onChange={evt => console.log(evt)} +/> +``` + +```jsx +function Example() { + const [value, setValue] = React.useState(50); + // onInput is required and will fire continuously. + // onChange is optional and fires at the end of the interaction + return ( + setValue(evt.detail.value)} + onInput={evt => setValue(evt.detail.value)} + discrete + step={1} + /> + ); +} +``` + +```jsx + +``` + +## Slider +A Slider component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `disabled` | `undefined \| false \| true` | Disables the control. | +| `discrete` | `undefined \| false \| true` | Displays the exact value of the Slider on the knob. | +| `displayMarkers` | `undefined \| false \| true` | Displays the individual step markers on the Slider track. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `max` | `number \| string` | The maximum value of the Slider. | +| `min` | `number \| string` | The minimum value of the Slider. | +| `onChange` | `undefined \| (evt: SliderOnChangeEventT) => void` | A callback that fires when the Slider stops sliding which takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;} | +| `onInput` | `undefined \| (evt: SliderOnInputEventT) => void` | A callback that fires continuously while the Slider is sliding that takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;} | +| `step` | `number \| string` | A step to quantize values by. | +| `value` | `number \| string` | The value of the Slider. | + + diff --git a/packages/mc-react-ui-components/src/lib/slider/foundation.tsx b/packages/mc-react-ui-components/src/lib/slider/foundation.tsx new file mode 100644 index 00000000..c8c58a00 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/foundation.tsx @@ -0,0 +1,215 @@ +import React, { useRef, useEffect } from 'react'; +import { SliderProps } from '.'; +import { useFoundation, emptyClientRect } from '@rmwc/base'; + +import { EventType, SpecificEventListener } from '@material/base/types'; +import { debounce } from '@rmwc/base'; + +import { MDCSliderFoundation } from '@material/slider'; + +export const useSliderFoundation = ( + props: SliderProps & React.HTMLProps +) => { + const trackRef = useRef(); + const setTrackRef = (element: HTMLElement) => (trackRef.current = element); + + const trackmarkerContainerRef = useRef(); + const setTrackMarkerContainerRef = (element: HTMLElement) => + (trackmarkerContainerRef.current = element); + + const { foundation, ...elements } = useFoundation({ + props, + elements: { + rootEl: true, + thumbContainerEl: true, + sliderPinEl: true + }, + foundation: ({ rootEl, thumbContainerEl, sliderPinEl, emit }) => { + return new MDCSliderFoundation({ + hasClass: (className: string) => rootEl.hasClass(className), + addClass: (className: string) => rootEl.addClass(className), + removeClass: (className: string) => rootEl.removeClass(className), + getAttribute: (name: string) => + rootEl.getProp(name as any) as string | null, + setAttribute: debounce( + (name: string, value: any) => rootEl.setProp(name as any, value), + 300 + ), + removeAttribute: (name: string) => rootEl.removeProp(name as any), + computeBoundingRect: () => + rootEl.ref ? rootEl.ref.getBoundingClientRect() : emptyClientRect, + getTabIndex: () => (rootEl.ref ? rootEl.ref.tabIndex : 0), + registerInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => { + rootEl.addEventListener(evtType, handler); + }, + deregisterInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => { + rootEl.removeEventListener(evtType, handler); + }, + registerThumbContainerInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => { + thumbContainerEl.addEventListener(evtType, handler); + }, + deregisterThumbContainerInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => { + thumbContainerEl.removeEventListener(evtType, handler); + }, + registerBodyInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => { + document.body && document.body.addEventListener(evtType, handler); + }, + deregisterBodyInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => { + document.body && document.body.removeEventListener(evtType, handler); + }, + registerResizeHandler: ( + handler: SpecificEventListener<'resize'> + ): void => { + window.addEventListener('resize', handler); + }, + deregisterResizeHandler: ( + handler: SpecificEventListener<'resize'> + ): void => { + window.removeEventListener('resize', handler); + }, + notifyInput: () => { + emit('onInput', { value: foundation.getValue() }); + }, + notifyChange: () => { + emit('onChange', { value: foundation.getValue() }); + }, + setThumbContainerStyleProperty: (propertyName: string, value: any) => { + thumbContainerEl.setStyle(propertyName, value); + }, + setTrackStyleProperty: (propertyName: string, value: any) => { + trackRef.current?.style.setProperty(propertyName, value); + }, + setMarkerValue: (value: number) => { + sliderPinEl.setProp('value', value); + }, + + setTrackMarkers: (step: number, max: number, min: number) => { + const stepStr = step.toLocaleString(); + const maxStr = max.toLocaleString(); + const minStr = min.toLocaleString(); + // keep calculation in css for better rounding/subpixel behavior + const markerAmount = `((${maxStr} - ${minStr}) / ${stepStr})`; + const markerWidth = `2px`; + const markerBkgdImage = `linear-gradient(to right, currentColor ${markerWidth}, transparent 0)`; + const markerBkgdLayout = `0 center / calc((100% - ${markerWidth}) / ${markerAmount}) 100% repeat-x`; + const markerBkgdShorthand = `${markerBkgdImage} ${markerBkgdLayout}`; + trackmarkerContainerRef.current?.style.setProperty( + 'background', + markerBkgdShorthand + ); + }, + isRTL: () => + !!rootEl.ref && getComputedStyle(rootEl.ref).direction === 'rtl' + }); + } + }); + + // max + useEffect(() => { + props.max !== undefined && foundation.setMax(+props.max); + }, [props.max, foundation]); + + // min + useEffect(() => { + props.min !== undefined && foundation.setMin(+props.min); + }, [props.min, foundation]); + + // value + useEffect(() => { + let value = + props.value !== undefined ? Number(props.value) : foundation.getValue(); + + const min = foundation.getMin(); + const max = foundation.getMax(); + // make value in bounds + if (value < min) { + console.warn( + `Attempted to set slider to ${value} which is less than min: ${min}` + ); + value = min; + } + + if (value > max) { + console.warn( + `Attempted to set slider to ${value} which is greater than max: ${max}` + ); + value = max; + } + + foundation.setValue(value); + }, [props.value, foundation]); + + // step + useEffect(() => { + props.step !== undefined && foundation.setStep(+props.step); + }, [props.step, foundation]); + + // disabled + useEffect(() => { + props.disabled !== undefined && foundation.setDisabled(props.disabled); + }, [props.disabled, foundation]); + + // discrete + useEffect(() => { + if (props.discrete !== undefined) { + // @ts-ignore unsafe private variable access + foundation.isDiscrete_ = props.discrete; + } + + if (props.discrete && foundation.getStep() === 0) { + foundation.setStep(1); + } + }, [props.discrete, foundation]); + + // displayMarkers + useEffect(() => { + // @ts-ignore unsafe private variable access + const hasTrackMarker = foundation.hasTrackMarker_; + if ( + props.displayMarkers !== undefined && + props.displayMarkers !== hasTrackMarker + ) { + // @ts-ignore unsafe private variable access + foundation.hasTrackMarker_ = props.displayMarkers; + window.requestAnimationFrame(() => foundation.setupTrackMarker()); + } + }, [props.displayMarkers, foundation]); + + // bugfix + useEffect(() => { + // Fixes an issue where synthetic events were being + // accessed in the Foundation and causing an error + // @ts-ignore unsafe private access + const existinghandleDown_ = foundation.handleDown_.bind(foundation); + + // @ts-ignore unsafe private access + foundation.handleDown_ = (evt: React.SyntheticEvent) => { + evt.persist(); + existinghandleDown_(evt); + }; + }, [foundation]); + + return { + setTrackRef, + setTrackMarkerContainerRef, + ...elements + }; +}; diff --git a/packages/mc-react-ui-components/src/lib/slider/generated-examples.json b/packages/mc-react-ui-components/src/lib/slider/generated-examples.json new file mode 100644 index 00000000..150eabc1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/generated-examples.json @@ -0,0 +1 @@ +[" console.log(evt)}\n onChange={evt => console.log(evt)}\n/>","function Example() {\n const [value, setValue] = React.useState(50);\n // onInput is required and will fire continuously.\n // onChange is optional and fires at the end of the interaction\n return (\n setValue(evt.detail.value)}\n onInput={evt => setValue(evt.detail.value)}\n discrete\n step={1}\n />\n );\n}",""] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/slider/generated-props.json b/packages/mc-react-ui-components/src/lib/slider/generated-props.json new file mode 100644 index 00000000..824db7c3 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/generated-props.json @@ -0,0 +1,322 @@ +{ + "npm": {}, + "typescript": { + "SliderProps": { + "documentation": { + "contents": [ + "

    A Slider component.

    \n" + ], + "contentsRaw": "A Slider component.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SliderProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L16", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Disables the control.

    \n" + ], + "contentsRaw": "Disables the control.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L34", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Displays the exact value of the Slider on the knob.

    \n" + ], + "contentsRaw": "Displays the exact value of the Slider on the knob.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "discrete", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L30", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Displays the individual step markers on the Slider track.

    \n" + ], + "contentsRaw": "Displays the individual step markers on the Slider track.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "displayMarkers", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L32", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L36", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    The maximum value of the Slider.

    \n" + ], + "contentsRaw": "The maximum value of the Slider.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "max", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L26", + "type": "number | string" + }, + { + "documentation": { + "contents": [ + "

    The minimum value of the Slider.

    \n" + ], + "contentsRaw": "The minimum value of the Slider.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "min", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L24", + "type": "number | string" + }, + { + "documentation": { + "contents": [ + "

    A callback that fires when the Slider stops sliding which takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;}

    \n" + ], + "contentsRaw": "A callback that fires when the Slider stops sliding which takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;}", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onChange", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L18", + "type": "undefined | (evt: SliderOnChangeEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    A callback that fires continuously while the Slider is sliding that takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;}

    \n" + ], + "contentsRaw": "A callback that fires continuously while the Slider is sliding that takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;}", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onInput", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L20", + "type": "undefined | (evt: SliderOnInputEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    A step to quantize values by.

    \n" + ], + "contentsRaw": "A step to quantize values by.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "step", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L28", + "type": "number | string" + }, + { + "documentation": { + "contents": [ + "

    The value of the Slider.

    \n" + ], + "contentsRaw": "The value of the Slider.", + "metadata": {} + }, + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "value", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L22", + "type": "number | string" + } + ] + }, + "SliderOnChangeEventT": { + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SliderOnChangeEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L7", + "type": "RMWC.CustomEventT<>" + }, + "SliderOnInputEventT": { + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SliderOnInputEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L11", + "type": "RMWC.CustomEventT<>" + }, + "SliderHTMLProps": { + "fileName": "src/slider/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SliderHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/slider/index.tsx#L39", + "type": "RMWC.HTMLProps, \"onChange\" | \"onInput\">>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/slider/index.tsx b/packages/mc-react-ui-components/src/lib/slider/index.tsx new file mode 100644 index 00000000..960fb96b --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/index.tsx @@ -0,0 +1,153 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { MDCSliderFoundation } from '@material/slider'; +import { useClassNames, Tag, createComponent } from '../base'; +import { useSliderFoundation } from './foundation'; + +export type SliderOnChangeEventT = RMWC.CustomEventT<{ + value: number; +}>; + +export type SliderOnInputEventT = RMWC.CustomEventT<{ + value: number; +}>; + +/** A Slider component. */ +export interface SliderProps { + /** A callback that fires when the Slider stops sliding which takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;} */ + onChange?: (evt: SliderOnChangeEventT) => void; + /** A callback that fires continuously while the Slider is sliding that takes an event with event.detail.value set to the Slider's value. evt.detail = { value: number;} */ + onInput?: (evt: SliderOnInputEventT) => void; + /** The value of the Slider. */ + value?: number | string; + /** The minimum value of the Slider. */ + min?: number | string; + /** The maximum value of the Slider. */ + max?: number | string; + /** A step to quantize values by. */ + step?: number | string; + /** Displays the exact value of the Slider on the knob. */ + discrete?: boolean; + /** Displays the individual step markers on the Slider track. */ + displayMarkers?: boolean; + /** Disables the control. */ + disabled?: boolean; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +export type SliderHTMLProps = RMWC.HTMLProps< + HTMLDivElement, + Omit, 'onChange' | 'onInput'> +>; + +const SliderTrack = React.memo( + React.forwardRef(function SliderTrack(props: any, ref: React.Ref) { + return
    ; + }) +); + +const SliderTrackMarkerContainer = React.memo( + React.forwardRef(function SliderTrackMarkerContainer( + props: any, + ref: React.Ref + ) { + return
    ; + }) +); + +const SliderPin = React.memo(function SliderPin({ value }: { value: number }) { + return ( +
    + {value} +
    + ); +}); + +const SliderThumb = React.memo(function SliderThumb() { + return ( + + + + ); +}); + +const SliderFocusRing = React.memo(function SliderFocusRing() { + return
    ; +}); + +export const Slider: RMWC.ComponentType< + SliderProps, + SliderHTMLProps, + 'input' +> = createComponent(function Slider(props, ref) { + const { + rootEl, + thumbContainerEl, + sliderPinEl, + setTrackRef, + setTrackMarkerContainerRef + } = useSliderFoundation(props); + + const { + value, + min, + max, + discrete, + displayMarkers, + step, + disabled, + onChange, + onInput, + children, + foundationRef, + ...rest + } = props; + + const className = useClassNames(props, [ + 'mdc-slider', + { + 'mdc-slider--discrete': discrete, + 'mdc-slider--display-markers': displayMarkers && discrete + } + ]); + + const dataStep = step ? { 'data-step': step } : {}; + + if (displayMarkers && !discrete) { + console.warn( + `The 'displayMarkers' prop on rmwc Slider will + only work in conjunction with the 'discrete' prop` + ); + } + + return ( + +
    + + {displayMarkers && ( + + )} +
    + + {discrete && } + + + + {children} +
    + ); +}); diff --git a/packages/mc-react-ui-components/src/lib/slider/slider-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/slider/slider-ssr.spec.tsx new file mode 100644 index 00000000..6c25db97 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/slider-ssr.spec.tsx @@ -0,0 +1,28 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Slider } from './'; + +describe('Slider SSR', () => { + it('renders uncontrolled', () => { + mount(); + }); + + it('renders with all props', () => { + mount( + {}} + onInput={() => {}} + /> + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/slider/slider.spec.tsx b/packages/mc-react-ui-components/src/lib/slider/slider.spec.tsx new file mode 100644 index 00000000..fcc4a63e --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/slider.spec.tsx @@ -0,0 +1,82 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { Slider } from './'; + +jest.spyOn(console, 'warn'); + +describe('Slider', () => { + it('renders uncontrolled', () => { + mount(); + }); + + it('handles prop changes', (done) => { + const el = mount(); + el.setProps({ discrete: true }); + + el.setProps({ displayMarkers: true }); + + el.setProps({ discrete: true }); + + el.setProps({ value: 1 }); + + el.setProps({ max: 1 }); + + el.setProps({ min: 1 }); + + el.setProps({ step: 2 }); + + el.setProps({ disabled: true }); + + setTimeout(done, 200); + }); + + it('warns when not displayMarkers and discrete', () => { + mount(); + expect(console.warn).toHaveBeenCalled(); + }); + + it('renders with all props', () => { + mount( + {}} + onInput={() => {}} + /> + ); + }); + + it('handles onChange', () => { + let value = 0; + const el = mount( value++} />); + el.props().onChange({ detail: { value: 1 } }); + expect(value).toEqual(1); + }); + + it('handles onInput', () => { + let value = 0; + const el = mount( value++} />); + el.props().onInput({ detail: { value: 1 } }); + + expect(value).toEqual(1); + }); + + it('handles min > 100', () => { + mount(); + }); + + it('handles out of bounds', () => { + mount(); + mount(); + }); + + it('can have custom classnames', () => { + const el = mount(); + expect(el.html().includes('my-custom-classname')).toEqual(true); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx b/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx new file mode 100644 index 00000000..d9977415 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx @@ -0,0 +1,43 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { action } from '@storybook/addon-actions'; +// import { Slider } from './'; +// import { useKnob } from '@rmwc/base/utils/use-knob'; + +// function SliderStory() { +// const [value, setValue] = useKnob('number', 'value', 0); +// const [min] = useKnob('number', 'min', 0); +// const [max] = useKnob('number', 'max', 100); +// const [step] = useKnob('number', 'step', 0); +// const [discrete] = useKnob('boolean', 'discrete', false); +// const [displayMarkers] = useKnob('boolean', 'displayMarkers', false); +// const [disabled] = useKnob('boolean', 'disabled', false); + +// return ( +// { +// setValue(evt.detail.value); +// action('onChange')(evt); +// }} +// onInput={(evt) => { +// setValue(evt.detail.value); +// action('onInput')(evt); +// }} +// /> +// ); +// } + +// storiesOf('Inputs and Controls', module) +// .add('Slider', () => ( +// +// )) +// .add('Slider Controlled', () => ); diff --git a/packages/mc-react-ui-components/src/lib/slider/styles.tsx b/packages/mc-react-ui-components/src/lib/slider/styles.tsx new file mode 100644 index 00000000..0952eaa2 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/slider/styles.tsx @@ -0,0 +1 @@ +import '@material/slider/dist/mdc.slider.css'; diff --git a/packages/mc-react-ui-components/src/lib/snackbar/README.md b/packages/mc-react-ui-components/src/lib/snackbar/README.md new file mode 100644 index 00000000..3ea5626d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/README.md @@ -0,0 +1,223 @@ +# Snackbars + +Snackbars provide brief feedback about an operation through a message at the bottom of the screen. + +- Module **@rmwc/snackbar** +- Import styles: + - Using CSS Loader + - import '@rmwc/snackbar/styles'; + - Or include stylesheets + - **'@material/snackbar/dist/mdc.snackbar.css'** + - **'@material/button/dist/mdc.button.css'** + - **'@material/ripple/dist/mdc.ripple.css'** +- MDC Docs: [https://material.io/develop/web/components/snackbars/](https://material.io/develop/web/components/snackbars/) + +## Basic Usage + +You can render a snackbar in your UI and control its open state. + +```jsx +function Example() { + const [open, setOpen] = React.useState(false); + + return ( + <> + setOpen(false)} + message="This is a new message" + dismissesOnAction + action={ + console.log('Click Me')} + /> + } + /> + +
    + ); + } + return ; +} +``` + +## Snackbar +A Snackbar component for notifications. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `action` | `React.ReactNode \| React.ReactNode[]` | One or more actions to add to the snackbar. | +| `dismissIcon` | `boolean \| string` | | +| `dismissesOnAction` | `undefined \| false \| true` | Whether or not your want clicking an action to close the Snackbar. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `icon` | `RMWC.IconPropT` | An icon for the snackbar | +| `leading` | `undefined \| false \| true` | | +| `message` | `React.ReactNode` | A string or other renderable JSX to be used as the message body. | +| `onClose` | `undefined \| (evt: SnackbarOnCloseEventT) => void` | A callback thats fired when the Snackbar hides. evt.detail = { reason?: string } | +| `onOpen` | `undefined \| (evt: SnackbarOnOpenEventT) => void` | A callback thats fired when the Snackbar shows. | +| `open` | `undefined \| false \| true` | Show the Snackbar. | +| `stacked` | `undefined \| false \| true` | Places the action underneath the message text. | +| `timeout` | `undefined \| number` | Milliseconds to show the Snackbar for. Set to -1 to show indefinitely. | + + +## SnackbarAction +A button for a snackbar action. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `action` | `undefined \| string` | An action returned in evt.detail.reason to the onClose handler. | +| `children` | `React.ReactNode` | Content specified as children. | +| `danger` | `undefined \| false \| true` | Used to indicate a dangerous action. | +| `dense` | `undefined \| false \| true` | Make the Button dense. | +| `disabled` | `undefined \| false \| true` | Make the button disabled | +| `icon` | `RMWC.IconPropT` | An Icon for the Button | +| `label` | `React.ReactNode \| any` | Content specified as a label prop. | +| `outlined` | `undefined \| false \| true` | Make the button outlined. | +| `raised` | `undefined \| false \| true` | Make the Button raised. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | +| `trailingIcon` | `RMWC.IconPropT` | A trailing icon for the Button | +| `unelevated` | `undefined \| false \| true` | Make the button unelevated. | + + diff --git a/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx b/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx new file mode 100644 index 00000000..d80efe09 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx @@ -0,0 +1,98 @@ +import React, { useEffect } from 'react'; +import { SnackbarProps } from '.'; +import { MDCSnackbarFoundation, util } from '@material/snackbar'; +import { closest, triggerWindowResize } from '@rmwc/base'; +import { useFoundation } from '@rmwc/base'; + +/** Monkey patch the foundation to accept dynamic reasons rather than just "action" */ +// @ts-ignore +MDCSnackbarFoundation.prototype.handleActionButtonClick = function ( + evt: any, + reason: string +) { + this.close(reason); +}; + +export function useSnackbarFoundation( + props: SnackbarProps & Omit, 'action'> +) { + const { foundation, ...elements } = useFoundation({ + props, + elements: { + rootEl: true, + surfaceEl: true, + labelEl: true + }, + foundation: ({ rootEl, labelEl, emit }) => { + return new MDCSnackbarFoundation({ + addClass: (className: string) => rootEl.addClass(className), + removeClass: (className: string) => rootEl.removeClass(className), + announce: () => labelEl.ref && util.announce(labelEl.ref), + notifyOpening: () => emit('onOpen', {}), + notifyOpened: () => { + triggerWindowResize(); + emit('onOpened', {}); + }, + notifyClosing: (reason: string) => { + emit('onClose', reason ? { reason } : {}); + }, + notifyClosed: (reason: string) => + emit('onClosed', reason ? { reason } : {}) + }); + } + }); + + const { rootEl, surfaceEl } = elements; + + const handleKeyDown = (evt: React.KeyboardEvent & KeyboardEvent) => { + props.onKeyDown && props.onKeyDown(evt); + foundation.handleKeyDown(evt); + }; + + const handleSurfaceClick = (evt: React.MouseEvent | MouseEvent) => { + if (evt.target instanceof Element) { + let el = evt.target; + + const button = closest(el, '.mdc-button') as Element; + if (button) { + el = button; + } + + if ( + props.dismissesOnAction && + el.classList.contains('mdc-snackbar__action') + ) { + foundation.handleActionButtonClick( + evt as MouseEvent, + // @ts-ignore + el.dataset.mdcSnackbarAction + ); + } else if (el.classList.contains('mdc-snackbar__dismiss')) { + foundation.handleActionIconClick(evt as MouseEvent); + } + } + }; + + rootEl.setProp('onKeyDown', handleKeyDown, true); + surfaceEl.setProp('onClick', handleSurfaceClick, true); + + // open + useEffect(() => { + props.open ? foundation.open() : foundation.close(); + }, [props.open, foundation]); + + // timeout + useEffect(() => { + if (props.timeout) { + if (props.timeout === -1) { + foundation.setTimeoutMs(props.timeout); + } else { + // don't tell me what I can cant set my timeout too... + // directly patch over using setTimeoutMs + (foundation as any).autoDismissTimeoutMs_ = props.timeout; + } + } + }, [props.timeout, foundation]); + + return { foundation, ...elements }; +} diff --git a/packages/mc-react-ui-components/src/lib/snackbar/generated-examples.json b/packages/mc-react-ui-components/src/lib/snackbar/generated-examples.json new file mode 100644 index 00000000..dd41640b --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/generated-examples.json @@ -0,0 +1 @@ +["function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n <>\n setOpen(false)}\n message=\"This is a new message\"\n dismissesOnAction\n action={\n console.log('Click Me')}\n />\n }\n />\n\n setOpen(!open)}\n />\n \n );\n}","function Example() {\n const [open, setOpen] = React.useState(false);\n\n return (\n <>\n setOpen(false)}\n message=\"Start aligned, open until dismissed\"\n stacked\n dismissesOnAction\n action={[\n ,\n \n ]}\n leading\n timeout={-1}\n />\n\n setOpen(!open)}\n />\n \n );\n}","\n// Create a file that exports your queue\n// myQueue.js\nimport { createSnackbarQueue } from '@rmwc/snackbar';\n\nexport const queue = createSnackbarQueue()","\n// Somewhere at the top level of your app\n// Render the SnackbarQueue\nimport React from 'react';\nimport { queue } from './myQueue';\n\nexport default function App() {\n return (\n
    \n ...\n \n
    \n )\n}","\n// Somewhere else in your app\n// Could be a view, your redux store, anywhere you want...\nimport { queue } from './myQueue';\n\n// Simple example\nqueue.notify({\n title: 'Hi there'\n});\n\n// With some features\nqueue.notify({\n title: Warning,\n body: 'You have selected pizza instead icecream!',\n icon: 'warning',\n actions: [\n {\n // NotificationAction api format\n title: 'Fix It!',\n icon: 'close',\n action: 'fixit' // action will be available as evt.detail.reason in the onClose event\n },\n {\n // OR SnackbarActionProps format\n label: 'Continue...',\n icon: 'check',\n onClick: () => {}\n },\n ]\n})","() => {\n const { messages, notify } = createSnackbarQueue();\n\n function App() {\n return (\n
    \n \n notify({\n title: Success,\n body: 'You have selected pizza!',\n dismissesOnAction: true,\n icon: 'check',\n actions: [\n {\n title: 'Dismiss'\n }\n ]\n })\n }\n />\n \n
    \n );\n }\n return ;\n}"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/snackbar/generated-props.json b/packages/mc-react-ui-components/src/lib/snackbar/generated-props.json new file mode 100644 index 00000000..26bb1276 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/generated-props.json @@ -0,0 +1,1376 @@ +{ + "npm": {}, + "typescript": { + "SnackbarProps": { + "documentation": { + "contents": [ + "

    A Snackbar component for notifications.

    \n" + ], + "contentsRaw": "A Snackbar component for notifications.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SnackbarProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L22", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    One or more actions to add to the snackbar.

    \n" + ], + "contentsRaw": "One or more actions to add to the snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "action", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L32", + "type": "React.ReactNode | React.ReactNode[]" + }, + { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dismissIcon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L40", + "type": "boolean | string" + }, + { + "documentation": { + "contents": [ + "

    Whether or not your want clicking an action to close the Snackbar.

    \n" + ], + "contentsRaw": "Whether or not your want clicking an action to close the Snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dismissesOnAction", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L42", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L46", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    An icon for the snackbar

    \n" + ], + "contentsRaw": "An icon for the snackbar", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L44", + "type": "RMWC.IconPropT" + }, + { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "leading", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L38", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A string or other renderable JSX to be used as the message body.

    \n" + ], + "contentsRaw": "A string or other renderable JSX to be used as the message body.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "message", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L30", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    A callback thats fired when the Snackbar hides. evt.detail = { reason?: string }

    \n" + ], + "contentsRaw": "A callback thats fired when the Snackbar hides. evt.detail = { reason?: string }", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L28", + "type": "undefined | (evt: SnackbarOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    A callback thats fired when the Snackbar shows.

    \n" + ], + "contentsRaw": "A callback thats fired when the Snackbar shows.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L26", + "type": "undefined | (evt: SnackbarOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Show the Snackbar.

    \n" + ], + "contentsRaw": "Show the Snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L24", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Places the action underneath the message text.

    \n" + ], + "contentsRaw": "Places the action underneath the message text.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "stacked", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L36", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Milliseconds to show the Snackbar for. Set to -1 to show indefinitely.

    \n" + ], + "contentsRaw": "Milliseconds to show the Snackbar for. Set to -1 to show indefinitely.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "timeout", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L34", + "type": "undefined | number" + } + ] + }, + "SnackbarActionProps": { + "documentation": { + "contents": [ + "

    A button for a snackbar action.

    \n" + ], + "contentsRaw": "A button for a snackbar action.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SnackbarActionProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L162", + "extends": [ + "ButtonProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    An action returned in evt.detail.reason to the onClose handler.

    \n" + ], + "contentsRaw": "An action returned in evt.detail.reason to the onClose handler.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "action", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L164", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    Content specified as children.

    \n" + ], + "contentsRaw": "Content specified as children.", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "inheritedFrom": "ButtonProps.children", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Used to indicate a dangerous action.

    \n" + ], + "contentsRaw": "Used to indicate a dangerous action.", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "danger", + "inheritedFrom": "ButtonProps.danger", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button dense.

    \n" + ], + "contentsRaw": "Make the Button dense.", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "inheritedFrom": "ButtonProps.dense", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the button disabled

    \n" + ], + "contentsRaw": "Make the button disabled", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "inheritedFrom": "ButtonProps.disabled", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    An Icon for the Button

    \n" + ], + "contentsRaw": "An Icon for the Button", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "ButtonProps.icon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Content specified as a label prop.

    \n" + ], + "contentsRaw": "Content specified as a label prop.", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "inheritedFrom": "ButtonProps.label", + "type": "React.ReactNode | any" + }, + { + "documentation": { + "contents": [ + "

    Make the button outlined.

    \n" + ], + "contentsRaw": "Make the button outlined.", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "outlined", + "inheritedFrom": "ButtonProps.outlined", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the Button raised.

    \n" + ], + "contentsRaw": "Make the Button raised.", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "raised", + "inheritedFrom": "ButtonProps.raised", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + }, + { + "documentation": { + "contents": [ + "

    A trailing icon for the Button

    \n" + ], + "contentsRaw": "A trailing icon for the Button", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "trailingIcon", + "inheritedFrom": "ButtonProps.trailingIcon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Make the button unelevated.

    \n" + ], + "contentsRaw": "Make the button unelevated.", + "metadata": {} + }, + "fileName": "src/snackbar/node_modules/@rmwc/button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "unelevated", + "inheritedFrom": "ButtonProps.unelevated", + "type": "undefined | false | true" + } + ] + }, + "SnackbarQueueMessage": { + "fileName": "src/snackbar/snackbar-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SnackbarQueueMessage", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar-queue.tsx#L22", + "extends": [ + "SnackbarProps", + "SnackbarQueueMessageBase", + "any" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    One or more actions to add to the snackbar.

    \n" + ], + "contentsRaw": "One or more actions to add to the snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "action", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L32", + "inheritedFrom": "SnackbarProps.action", + "type": "React.ReactNode | React.ReactNode[]" + }, + { + "fileName": "src/snackbar/snackbar-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "actions", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar-queue.tsx#L17", + "inheritedFrom": "SnackbarQueueMessageBase.actions", + "type": "Array" + }, + { + "fileName": "src/snackbar/snackbar-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "body", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar-queue.tsx#L15", + "inheritedFrom": "SnackbarQueueMessageBase.body", + "type": "React.ReactNode" + }, + { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dismissIcon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L40", + "inheritedFrom": "SnackbarProps.dismissIcon", + "type": "boolean | string" + }, + { + "documentation": { + "contents": [ + "

    Whether or not your want clicking an action to close the Snackbar.

    \n" + ], + "contentsRaw": "Whether or not your want clicking an action to close the Snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dismissesOnAction", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L42", + "inheritedFrom": "SnackbarProps.dismissesOnAction", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L46", + "inheritedFrom": "SnackbarProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    An icon for the snackbar

    \n" + ], + "contentsRaw": "An icon for the snackbar", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L44", + "inheritedFrom": "SnackbarProps.icon", + "type": "RMWC.IconPropT" + }, + { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "leading", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L38", + "inheritedFrom": "SnackbarProps.leading", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A string or other renderable JSX to be used as the message body.

    \n" + ], + "contentsRaw": "A string or other renderable JSX to be used as the message body.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "message", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L30", + "inheritedFrom": "SnackbarProps.message", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    A callback thats fired when the Snackbar hides. evt.detail = { reason?: string }

    \n" + ], + "contentsRaw": "A callback thats fired when the Snackbar hides. evt.detail = { reason?: string }", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L28", + "inheritedFrom": "SnackbarProps.onClose", + "type": "undefined | (evt: SnackbarOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    A callback thats fired when the Snackbar shows.

    \n" + ], + "contentsRaw": "A callback thats fired when the Snackbar shows.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L26", + "inheritedFrom": "SnackbarProps.onOpen", + "type": "undefined | (evt: SnackbarOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Show the Snackbar.

    \n" + ], + "contentsRaw": "Show the Snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L24", + "inheritedFrom": "SnackbarProps.open", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Places the action underneath the message text.

    \n" + ], + "contentsRaw": "Places the action underneath the message text.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "stacked", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L36", + "inheritedFrom": "SnackbarProps.stacked", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Milliseconds to show the Snackbar for. Set to -1 to show indefinitely.

    \n" + ], + "contentsRaw": "Milliseconds to show the Snackbar for. Set to -1 to show indefinitely.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "timeout", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L34", + "inheritedFrom": "SnackbarProps.timeout", + "type": "undefined | number" + }, + { + "fileName": "src/snackbar/snackbar-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "title", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar-queue.tsx#L14", + "inheritedFrom": "SnackbarQueueMessageBase.title", + "type": "React.ReactNode" + } + ] + }, + "SnackbarQueueProps": { + "documentation": { + "contents": [ + "

    A snackbar queue for rendering messages

    \n" + ], + "contentsRaw": "A snackbar queue for rendering messages", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SnackbarQueueProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar-queue.tsx#L28", + "extends": [ + "SnackbarProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    One or more actions to add to the snackbar.

    \n" + ], + "contentsRaw": "One or more actions to add to the snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "action", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L32", + "inheritedFrom": "SnackbarProps.action", + "type": "React.ReactNode | React.ReactNode[]" + }, + { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dismissIcon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L40", + "inheritedFrom": "SnackbarProps.dismissIcon", + "type": "boolean | string" + }, + { + "documentation": { + "contents": [ + "

    Whether or not your want clicking an action to close the Snackbar.

    \n" + ], + "contentsRaw": "Whether or not your want clicking an action to close the Snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dismissesOnAction", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L42", + "inheritedFrom": "SnackbarProps.dismissesOnAction", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L46", + "inheritedFrom": "SnackbarProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    An icon for the snackbar

    \n" + ], + "contentsRaw": "An icon for the snackbar", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L44", + "inheritedFrom": "SnackbarProps.icon", + "type": "RMWC.IconPropT" + }, + { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "leading", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L38", + "inheritedFrom": "SnackbarProps.leading", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A string or other renderable JSX to be used as the message body.

    \n" + ], + "contentsRaw": "A string or other renderable JSX to be used as the message body.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "message", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L30", + "inheritedFrom": "SnackbarProps.message", + "type": "React.ReactNode" + }, + { + "fileName": "src/snackbar/snackbar-queue.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "messages", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar-queue.tsx#L29", + "type": "ArrayEmitter" + }, + { + "documentation": { + "contents": [ + "

    A callback thats fired when the Snackbar hides. evt.detail = { reason?: string }

    \n" + ], + "contentsRaw": "A callback thats fired when the Snackbar hides. evt.detail = { reason?: string }", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onClose", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L28", + "inheritedFrom": "SnackbarProps.onClose", + "type": "undefined | (evt: SnackbarOnCloseEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    A callback thats fired when the Snackbar shows.

    \n" + ], + "contentsRaw": "A callback thats fired when the Snackbar shows.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onOpen", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L26", + "inheritedFrom": "SnackbarProps.onOpen", + "type": "undefined | (evt: SnackbarOnOpenEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Show the Snackbar.

    \n" + ], + "contentsRaw": "Show the Snackbar.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "open", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L24", + "inheritedFrom": "SnackbarProps.open", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Places the action underneath the message text.

    \n" + ], + "contentsRaw": "Places the action underneath the message text.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "stacked", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L36", + "inheritedFrom": "SnackbarProps.stacked", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Milliseconds to show the Snackbar for. Set to -1 to show indefinitely.

    \n" + ], + "contentsRaw": "Milliseconds to show the Snackbar for. Set to -1 to show indefinitely.", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "timeout", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L34", + "inheritedFrom": "SnackbarProps.timeout", + "type": "undefined | number" + } + ] + }, + "SnackbarOnOpenEventT": { + "documentation": { + "contents": [ + "

    Events

    \n" + ], + "contentsRaw": "Events", + "metadata": {} + }, + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SnackbarOnOpenEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L14", + "type": "RMWC.CustomEventT<{}>" + }, + "SnackbarOnCloseEventT": { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SnackbarOnCloseEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L15", + "type": "RMWC.CustomEventT<>" + }, + "SnackbarHTMLProps": { + "fileName": "src/snackbar/snackbar.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "SnackbarHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/snackbar/snackbar.tsx#L49", + "type": "RMWC.HTMLProps, \"action\">>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/snackbar/index.tsx b/packages/mc-react-ui-components/src/lib/snackbar/index.tsx new file mode 100644 index 00000000..0be7403e --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/index.tsx @@ -0,0 +1,2 @@ +export * from './snackbar'; +export * from './snackbar-queue'; diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar-queue.tsx b/packages/mc-react-ui-components/src/lib/snackbar/snackbar-queue.tsx new file mode 100644 index 00000000..7a6605a6 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/snackbar-queue.tsx @@ -0,0 +1,140 @@ +import * as RMWC from '../types'; +import React, { useState, useEffect, useCallback } from 'react'; +import { + Snackbar, + SnackbarProps, + SnackbarAction, + SnackbarActionProps, + SnackbarHTMLProps +} from './snackbar'; +import { IconPropT } from '../types'; +import { ArrayEmitter } from '../base'; + +interface SnackbarQueueMessageBase { + title?: React.ReactNode; + body?: React.ReactNode; + icon?: IconPropT; + actions?: Array< + NotificationAction | (SnackbarActionProps & SnackbarHTMLProps) + >; +} + +export interface SnackbarQueueMessage + extends SnackbarProps, + SnackbarQueueMessageBase, + Omit {} + +/** A snackbar queue for rendering messages */ +export interface SnackbarQueueProps extends SnackbarProps { + messages: ArrayEmitter; +} + +/** A snackbar queue for rendering messages */ +export function SnackbarQueue({ + messages, + ...defaultSnackbarProps +}: SnackbarQueueProps & RMWC.HTMLProps) { + const currentMessage = messages.array[0]; + const [, setIteration] = useState(0); + const [message, setMessage] = useState( + messages.array[0] + ); + + const removeMessage = useCallback( + (message?: SnackbarQueueMessage) => { + message && messages.remove(message); + }, + [messages] + ); + + useEffect(() => { + let timerId: number; + const doChange = () => { + if (messages.array[0] !== message) { + setIteration(val => val + 1); + timerId = window.setTimeout(() => setMessage(messages.array[0]), 150); + } + }; + messages.on('change', doChange); + return () => { + timerId && clearTimeout(timerId); + messages.off('change', doChange); + }; + }, [messages, message]); + + const { + body = '', + image, + title = '', + onClose, + actions, + ...messageSnackbarProps + } = message || {}; + + const actionProp = actions + ? actions.map(({ title, label, ...rest }: any) => ( + + )) + : null; + + // We are open if we have a message + // and the current one is the one in state + const open = message && message === currentMessage; + + return ( + + {title} + {!!title && !!body &&
    } + {body} + {!!image && ( +
    + {`${image}`} +
    + )} + + } + onClose={evt => { + onClose?.(evt); + removeMessage(message); + }} + action={actionProp} + /> + ); +} + +/** Creates a snackbar queue */ +export const createSnackbarQueue = (): { + messages: ArrayEmitter; + clearAll: () => void; + notify: (message: SnackbarQueueMessage) => { close: () => void }; +} => { + const messages = new ArrayEmitter(); + + return { + messages, + clearAll: () => messages.empty(), + notify: (message: SnackbarQueueMessage) => { + messages.push(message); + return { + close: () => { + messages.remove(message); + } + }; + } + }; +}; diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx new file mode 100644 index 00000000..dfed8126 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx @@ -0,0 +1,19 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Snackbar } from './snackbar'; + +describe('Snackbar', () => { + it('renders', () => { + mount( + {}} + message="This is a new message" + action={
    } + /> + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.spec.tsx b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.spec.tsx new file mode 100644 index 00000000..8218bbbf --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.spec.tsx @@ -0,0 +1,137 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { + Snackbar, + SnackbarAction, + createSnackbarQueue, + SnackbarQueue +} from './'; +import { wait } from '@rmwc/base/utils/test-utils'; + +describe('Snackbar', () => { + it('renders', (done) => { + const el = mount( + {}} + message="This is a new message" + action={
    } + /> + ); + + setTimeout(() => { + expect(!!~el.html().search('mdc-snackbar')).toBe(true); + done(); + }, 1500); + }); + + it('can be leading', () => { + const el = mount(); + expect(!!~el.html().search('mdc-snackbar--leading')).toBe(true); + }); + + it('can have an icon', () => { + const el = mount( + + ); + expect(!!~el.html().search('favorite')).toBe(true); + }); + + it('can be multiline', () => { + mount(); + }); + + it('can dismissesOnAction', () => { + const el = mount( + + ); + el.setProps({ dismissesOnAction: false }); + }); + + it('can be have JSX', () => { + mount( + +
    Hello World
    +
    + ); + + mount(Hello World
    } />); + }); + + it('handles events', () => { + const el = mount( + {}} + message="This is a new message" + dismissIcon + action={} + /> + ); + + el.simulate('keydown'); + + const surface = el.find('.mdc-snackbar__surface'); + surface.simulate('click'); + + const action = el.find('.mdc-snackbar__action').first(); + action.simulate('click'); + + const dismiss = el.find('.mdc-snackbar__dismiss').first(); + dismiss.simulate('click'); + }); +}); + +describe('SnackbarQueue', () => { + it('renders', () => { + const queue = createSnackbarQueue(); + const el = mount(); + el.unmount(); + }); + + it('notifies', async (done) => { + const queue = createSnackbarQueue(); + const el = mount(); + // check multiple notifications + queue.notify({ + title: 'myNotificationTitle1', + body: 'myNotificationBody1', + timeout: 500, + onClose: () => {} + }); + + queue.notify({ + title: 'myNotificationTitle2', + body: 'myNotificationBody2', + timeout: 500, + image: 'test', + actions: [ + { + // NotificationAction api format + title: 'Fix It!', + icon: 'close', + action: 'fixit' // action will be available as evt.detail.reason in the onClose event + }, + { + // OR SnackbarActionProps format + label: 'Continue...', + icon: 'check', + onClick: () => {} + } + ] + }); + + await wait(500); + + expect(el.html().includes('myNotificationTitle1')).toBe(true); + expect(el.html().includes('myNotificationBody1')).toBe(true); + + setTimeout(() => { + expect(el.html().includes('myNotificationTitle2')).toBe(true); + expect(el.html().includes('myNotificationBody2')).toBe(true); + done(); + }, 800); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx new file mode 100644 index 00000000..d02beeef --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx @@ -0,0 +1,156 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { action } from '@storybook/addon-actions'; +// import { useKnob } from '../base/utils/use-knob'; +// import { +// SnackbarQueue, +// createSnackbarQueue, +// Snackbar, +// SnackbarAction +// } from '.'; +// import { Button } from '../button'; + +// function SnackbarStory() { +// const [open, setOpen] = useKnob('boolean', 'open', true); +// const [leading] = useKnob('boolean', 'leading', false); +// const [message] = useKnob('text', 'message', 'This is a new message'); +// const [actionText] = useKnob('text', 'actionText', 'Action'); +// const [timeout] = useKnob('number', 'timeout', 2750); +// const [stacked] = useKnob('boolean', 'stacked', false); +// const [dismissesOnAction] = useKnob('boolean', 'dismissesOnAction', false); + +// return ( +// console.log('Click Me')} +// /> +// } +// timeout={timeout} +// onClose={() => { +// setOpen(false); +// action('onClose')(); +// }} +// onOpen={() => { +// action('onOpen')(); +// }} +// /> +// ); +// } + +// const { messages, notify, clearAll } = createSnackbarQueue(); + +// storiesOf('Snackbar', module) +// .add('Snackbar', () => ) +// .add('SnackbarQueue', function () { +// return ( +// <> +// +// +// +// ); +// }); diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.tsx b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.tsx new file mode 100644 index 00000000..d3b7bdd1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.tsx @@ -0,0 +1,192 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { MDCSnackbarFoundation } from '@material/snackbar'; +import { Button, ButtonProps } from '../button'; +import { useClassNames, Tag, createComponent } from '../base'; +import { useSnackbarFoundation } from './foundation'; +import { IconButton, IconButtonProps } from '../icon-button'; +import { Icon } from '../icon'; + +/********************************************************************* + * Events + *********************************************************************/ + +export type SnackbarOnOpenEventT = RMWC.CustomEventT<{}>; +export type SnackbarOnCloseEventT = RMWC.CustomEventT<{ reason?: string }>; + +/********************************************************************* + * Snackbar + *********************************************************************/ + +/** A Snackbar component for notifications. */ +export interface SnackbarProps { + /** Show the Snackbar. */ + open?: boolean; + /** A callback thats fired when the Snackbar shows. */ + onOpen?: (evt: SnackbarOnOpenEventT) => void; + /** A callback thats fired when the Snackbar hides. evt.detail = { reason?: string } */ + onClose?: (evt: SnackbarOnCloseEventT) => void; + /** A string or other renderable JSX to be used as the message body. */ + message?: React.ReactNode; + /** One or more actions to add to the snackbar. */ + action?: React.ReactNode | React.ReactNode[]; + /** Milliseconds to show the Snackbar for. Set to -1 to show indefinitely. */ + timeout?: number; + /** Places the action underneath the message text. */ + stacked?: boolean; + /* Aligns the Snackbar to the start of the screen. */ + leading?: boolean; + /* Shows a dismiss icon, */ + dismissIcon?: boolean | string; + /** Whether or not your want clicking an action to close the Snackbar. */ + dismissesOnAction?: boolean; + /** An icon for the snackbar */ + icon?: RMWC.IconPropT; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +export type SnackbarHTMLProps = RMWC.HTMLProps< + HTMLDivElement, + Omit, 'action'> +>; + +/** A Snackbar component for notifications. */ +export const Snackbar: RMWC.ComponentType< + SnackbarProps, + SnackbarHTMLProps, + 'div' +> = createComponent(function Snackbar( + props, + ref +) { + const { rootEl, surfaceEl, labelEl } = useSnackbarFoundation(props); + + const { + open, + message, + timeout, + dismissIcon, + onOpen, + onClose, + children, + action, + icon, + leading, + stacked, + dismissesOnAction, + foundationRef, + ...rest + } = props; + + const className = useClassNames(props, [ + 'mdc-snackbar', + { + 'mdc-snackbar--leading': leading, + 'mdc-snackbar--stacked': stacked + } + ]); + + const actions: SnackbarProps['action'][] = Array.isArray(action) + ? action + : action + ? [action] + : []; + + return ( + +
    + {!!icon && ( + + )} + + {message} + {/** + * Fixes bug https://github.com/jamesmfriedman/rmwc/issues/418 + * Wrapping the content for accessibility so it can be announced for screen readers + */} +
    + + + + {actions.map((a, i) => ( + {a} + ))} + {dismissIcon && ( + + )} + + {children} +
    + + ); +}); + +/********************************************************************* + * Bits + *********************************************************************/ + +function SnackbarLabel(props: { children: React.ReactNode }) { + return ( +
    + ); +} + +function SnackbarActions(props: { children: React.ReactNode }) { + return
    ; +} + +/** A button for a snackbar action. */ +export interface SnackbarActionProps extends ButtonProps { + /** An action returned in evt.detail.reason to the onClose handler. */ + action?: string; +} + +/** A button for a snackbar action. */ +export const SnackbarAction: RMWC.ComponentType< + SnackbarActionProps, + SnackbarHTMLProps, + 'button' +> = createComponent( + function SnackbarAction(props, ref) { + const className = useClassNames(props, ['mdc-snackbar__action']); + const { + action = MDCSnackbarFoundation.strings.REASON_ACTION, + ...rest + } = props; + return ( + {' '} +// {' '} +// {' '} +// { +// this.setState({ activeTabIndex: Number(evt.target.value || 0) }); +// }} +// /> +//
    +// Controlled +// this.onChange(evt)} +// foundationRef={console.log} +// > +// {this.state.tabs.map((label) => ( +// {label} +// ))} +// +//
    +//
    +// Uncontrolled +// +// {this.state.tabs.map((label, index) => ( +// +// ))} +// +//
    +//
    +// Icons +// +// {this.state.tabs.map((label, index) => ( +// +// ))} +// +//
    +//
    +// Always 1 +// +// {this.state.tabs.map((label) => ( +// {label} +// ))} +// +//
    +//
    +//
    +// ); +// } +// } + +// storiesOf('Tabs', module) +// .add('TabBar', () => ) +// .add('TabBar Scrolls', () => { +// const [tabIndex, setTabIndex] = React.useState(0); + +// return ( +// setTabIndex(evt.detail.index)} +// > +// {/* Tabs automatically scroll with lots of content. */} +// Cookies +// Pizza +// Icecream +// Chocolate +// Fishsticks +// Ratatouille +// Bread +// Rolls +// Sushi +// Cupcake +// Cheesecake +// +// ); +// }) +// .add('TabBar', () => ) +// .add('TabBar Icon Indicators', () => ( +// +// +// +// +// +// )) +// .add('TabBar Links', () => ( +// +// +// +// +// +// +// +// )); diff --git a/packages/mc-react-ui-components/src/lib/textfield/README.md b/packages/mc-react-ui-components/src/lib/textfield/README.md new file mode 100644 index 00000000..4183a490 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/README.md @@ -0,0 +1,140 @@ +# Text Fields + +Text fields allow users to input, edit, and select text. + +- Module **@rmwc/textfield** +- Import styles: + - Using CSS Loader + - import '@rmwc/textfield/styles'; + - Or include stylesheets + - **'@material/textfield/dist/mdc.textfield.css'** + - **'@material/floating-label/dist/mdc.floating-label.css'** + - **'@material/notched-outline/dist/mdc.notched-outline.css'** + - **'@material/line-ripple/dist/mdc.line-ripple.css'** + - **'@material/ripple/dist/mdc.ripple.css'** + - **'@rmwc/icon/icon.css'** +- MDC Docs: [https://material.io/develop/web/components/input-controls/text-field/](https://material.io/develop/web/components/input-controls/text-field/) + +## TextField Variants + +```jsx + +``` + +```jsx + +``` + +```jsx + +``` + +```jsx + +``` + +```jsx +<> + {/* Leading and trailing icons can be used.*/} + + {/* If you need full control over the icon, you can pass the icon as options with your own props. Dont forget the TabIndex to make it clickable*/} + console.log('Clear') + }} + /> + +``` + +## Textareas + +You can make the TextField a textarea. Make sure to include `outlined` for proper styling You can optionally make help text always visible by passing an object as props with persistent set to true. Textareas can also have an optional character counter which will work with the maxLength property. + +```jsx + +``` + +## Validation + +```jsx + +``` + +```jsx + +``` + +```jsx + {}} +/> +``` + +```jsx + +``` + +## HTML Input Types + +A preview of how `material-components-web` handles styling input types for your browser. + +```jsx +<> + + + + + + + + + +``` + +## TextField +A TextField component for accepting text input from a user. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `align` | `"start" \| "end"` | How to align the text inside the TextField. Defaults to 'start'. | +| `characterCount` | `undefined \| false \| true` | Shows the character count, must be used in conjunction with maxLength. | +| `disabled` | `undefined \| false \| true` | Makes the Textfield disabled. | +| `floatLabel` | `undefined \| false \| true` | The label floats automatically based on value, but you can use this prop for manual control. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `fullwidth` | `undefined \| false \| true` | Makes the TextField fullwidth. | +| `helpText` | `React.ReactNode \| TextFieldHelperTextProps` | Adds help text to the field | +| `icon` | `RMWC.IconPropT` | Add a leading icon. | +| `inputRef` | `React.Ref` | A reference to the native input or textarea. | +| `invalid` | `undefined \| false \| true` | Makes the TextField visually invalid. This is sometimes automatically applied in cases where required or pattern is used. | +| `label` | `React.ReactNode` | A label for the input. | +| `outlined` | `undefined \| false \| true` | Outline the TextField. | +| `required` | `undefined \| false \| true` | Makes the Textfield required. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | +| `rootProps` | `Object` | By default, props spread to the input. These props are for the component's root container. | +| `textarea` | `undefined \| false \| true` | Makes a multiline TextField. | +| `trailingIcon` | `RMWC.IconPropT` | Add a trailing icon. | +| `type` | `undefined \| string` | The type of input field to render, search, number, etc | +| `value` | `string \| number` | Sets the value for controlled TextFields. | + + diff --git a/packages/mc-react-ui-components/src/lib/textfield/generated-examples.json b/packages/mc-react-ui-components/src/lib/textfield/generated-examples.json new file mode 100644 index 00000000..82d9aac5 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/generated-examples.json @@ -0,0 +1 @@ +["","","","","<>\n {/* Leading and trailing icons can be used.*/}\n \n {/* If you need full control over the icon, you can pass the icon as options with your own props. Dont forget the TabIndex to make it clickable*/}\n console.log('Clear')\n }}\n />\n","","",""," {}}\n/>","","<>\n \n \n \n \n \n \n \n \n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/textfield/generated-props.json b/packages/mc-react-ui-components/src/lib/textfield/generated-props.json new file mode 100644 index 00000000..b3a1e0df --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/generated-props.json @@ -0,0 +1,841 @@ +{ + "npm": {}, + "typescript": { + "TextFieldProps": { + "documentation": { + "contents": [ + "

    A TextField component for accepting text input from a user.

    \n" + ], + "contentsRaw": "A TextField component for accepting text input from a user.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TextFieldProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L26", + "extends": [ + "WithRippleProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    How to align the text inside the TextField. Defaults to 'start'.

    \n" + ], + "contentsRaw": "How to align the text inside the TextField. Defaults to 'start'.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "align", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L42", + "type": "\"start\" | \"end\"" + }, + { + "documentation": { + "contents": [ + "

    Shows the character count, must be used in conjunction with maxLength.

    \n" + ], + "contentsRaw": "Shows the character count, must be used in conjunction with maxLength.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "characterCount", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L32", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Makes the Textfield disabled.

    \n" + ], + "contentsRaw": "Makes the Textfield disabled.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L36", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    The label floats automatically based on value, but you can use this prop for manual control.

    \n" + ], + "contentsRaw": "The label floats automatically based on value, but you can use this prop for manual control.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "floatLabel", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L46", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L62", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Makes the TextField fullwidth.

    \n" + ], + "contentsRaw": "Makes the TextField fullwidth.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "fullwidth", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L50", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds help text to the field

    \n" + ], + "contentsRaw": "Adds help text to the field", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "helpText", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L30", + "type": "React.ReactNode | TextFieldHelperTextProps" + }, + { + "documentation": { + "contents": [ + "

    Add a leading icon.

    \n" + ], + "contentsRaw": "Add a leading icon.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L52", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    A reference to the native input or textarea.

    \n" + ], + "contentsRaw": "A reference to the native input or textarea.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "inputRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L58", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Makes the TextField visually invalid. This is sometimes automatically applied in cases where required or pattern is used.

    \n" + ], + "contentsRaw": "Makes the TextField visually invalid. This is sometimes automatically applied in cases where required or pattern is used.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "invalid", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L34", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    A label for the input.

    \n" + ], + "contentsRaw": "A label for the input.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L44", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Outline the TextField.

    \n" + ], + "contentsRaw": "Outline the TextField.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "outlined", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L40", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Makes the Textfield required.

    \n" + ], + "contentsRaw": "Makes the Textfield required.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "required", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L38", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/textfield/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + }, + { + "documentation": { + "contents": [ + "

    By default, props spread to the input. These props are for the component's root container.

    \n" + ], + "contentsRaw": "By default, props spread to the input. These props are for the component's root container.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "rootProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L56", + "type": "Object" + }, + { + "documentation": { + "contents": [ + "

    Makes a multiline TextField.

    \n" + ], + "contentsRaw": "Makes a multiline TextField.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "textarea", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L48", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Add a trailing icon.

    \n" + ], + "contentsRaw": "Add a trailing icon.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "trailingIcon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L54", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    The type of input field to render, search, number, etc

    \n" + ], + "contentsRaw": "The type of input field to render, search, number, etc", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "type", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L60", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    Sets the value for controlled TextFields.

    \n" + ], + "contentsRaw": "Sets the value for controlled TextFields.", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "value", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L28", + "type": "string | number" + } + ] + }, + "TextFieldCharacterCountApi": { + "documentation": { + "contents": [ + "

    Character Count

    \n" + ], + "contentsRaw": "Character Count", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TextFieldCharacterCountApi", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L244", + "methods": [], + "properties": [ + { + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getFoundation", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L245", + "type": "() => MDCTextFieldCharacterCounterFoundation" + } + ] + }, + "TextFieldCharacterCountProps": { + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TextFieldCharacterCountProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L248", + "extends": [ + "IconProps" + ], + "methods": [], + "properties": [ + { + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L249", + "type": "undefined | (api: TextFieldCharacterCountApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    The icon to use. This can be a string for a font icon, a url, or whatever the selected strategy needs.

    \n" + ], + "contentsRaw": "The icon to use. This can be a string for a font icon, a url, or whatever the selected strategy needs.", + "metadata": {} + }, + "fileName": "src/textfield/node_modules/@rmwc/icon/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "IconProps.icon", + "type": "RMWC.IconPropT" + } + ] + }, + "TextFieldHelperTextProps": { + "documentation": { + "contents": [ + "

    Helper Text

    \n" + ], + "contentsRaw": "Helper Text", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TextFieldHelperTextProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L263", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Content for the help text

    \n" + ], + "contentsRaw": "Content for the help text", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L269", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Make the help text always visible

    \n" + ], + "contentsRaw": "Make the help text always visible", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "persistent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L265", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Make the help a validation message style

    \n" + ], + "contentsRaw": "Make the help a validation message style", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "validationMsg", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L267", + "type": "undefined | false | true" + } + ] + }, + "TextFieldIconApi": { + "documentation": { + "contents": [ + "

    Icon

    \n" + ], + "contentsRaw": "Icon", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TextFieldIconApi", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L292", + "methods": [], + "properties": [ + { + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "getFoundation", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L293", + "type": "() => MDCTextFieldIconFoundation" + } + ] + }, + "TextFieldIconProps": { + "documentation": { + "contents": [ + "

    An Icon in a TextField

    \n" + ], + "contentsRaw": "An Icon in a TextField", + "metadata": {} + }, + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TextFieldIconProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L297", + "extends": [ + "IconProps" + ], + "methods": [], + "properties": [ + { + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "apiRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L298", + "type": "undefined | (api: TextFieldIconApi | null) => void" + }, + { + "documentation": { + "contents": [ + "

    The icon to use. This can be a string for a font icon, a url, or whatever the selected strategy needs.

    \n" + ], + "contentsRaw": "The icon to use. This can be a string for a font icon, a url, or whatever the selected strategy needs.", + "metadata": {} + }, + "fileName": "src/textfield/node_modules/@rmwc/icon/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "IconProps.icon", + "type": "RMWC.IconPropT" + }, + { + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "position", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L299", + "type": "\"leading\" | \"trailing\"" + } + ] + }, + "TextFieldHTMLProps": { + "fileName": "src/textfield/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "TextFieldHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/textfield/index.tsx#L65", + "type": "RMWC.HTMLProps, \"label\">>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/textfield/index.tsx b/packages/mc-react-ui-components/src/lib/textfield/index.tsx new file mode 100644 index 00000000..c8c20444 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/index.tsx @@ -0,0 +1,325 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { IconProps } from '../icon'; +import { + MDCTextFieldCharacterCounterFoundation, + MDCTextFieldIconFoundation, + MDCTextFieldFoundation +} from '@material/textfield'; + +import { useClassNames, Tag, useId, createComponent } from '../base'; +import { Icon } from '../icon'; +import { LineRipple } from '../line-ripple'; +import { FloatingLabel } from '../floating-label'; +import { NotchedOutline } from '../notched-outline'; +import { withRipple } from '../ripple'; + +import { useTextFieldIconFoundation } from './textfield-icon-foundation'; +import { useTextFieldCharacterCountFoundation } from './textfield-character-count-foundation'; +import { useTextFieldFoundation } from './textfield-foundation'; + +/********************************************************************* + * TextField + *********************************************************************/ + +/** A TextField component for accepting text input from a user. */ +export interface TextFieldProps extends RMWC.WithRippleProps { + /** Sets the value for controlled TextFields. */ + value?: string | number; + /** Adds help text to the field */ + helpText?: React.ReactNode | TextFieldHelperTextProps; + /** Shows the character count, must be used in conjunction with maxLength. */ + characterCount?: boolean; + /** Makes the TextField visually invalid. This is sometimes automatically applied in cases where required or pattern is used. */ + invalid?: boolean; + /** Makes the Textfield disabled. */ + disabled?: boolean; + /** Makes the Textfield required. */ + required?: boolean; + /** Outline the TextField. */ + outlined?: boolean; + /** How to align the text inside the TextField. Defaults to 'start'. */ + align?: 'start' | 'end'; + /** A label for the input. */ + label?: React.ReactNode; + /** The label floats automatically based on value, but you can use this prop for manual control. */ + floatLabel?: boolean; + /** Makes a multiline TextField. */ + textarea?: boolean; + /** Makes the TextField fullwidth. */ + fullwidth?: boolean; + /** Add a leading icon. */ + icon?: RMWC.IconPropT; + /** Add a trailing icon. */ + trailingIcon?: RMWC.IconPropT; + /** By default, props spread to the input. These props are for the component's root container. */ + rootProps?: Object; + /** A reference to the native input or textarea. */ + inputRef?: React.Ref; + /** The type of input field to render, search, number, etc */ + type?: string; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +export type TextFieldHTMLProps = RMWC.HTMLProps< + HTMLInputElement, + Omit, 'label'> +>; + +/** A TextField component for accepting text input from a user. */ +export const TextField: RMWC.ComponentType< + TextFieldProps, + TextFieldHTMLProps, + 'input' +> = createComponent(function TextField( + props, + ref +) { + const { + label, + style, + outlined, + align, + fullwidth, + invalid, + disabled, + helpText, + children, + textarea, + inputRef, + characterCount, + icon, + trailingIcon, + rootProps = {}, + foundationRef, + ripple, + floatLabel: userFloatLabel, + ...rest + } = props; + + const { + rootEl, + inputEl, + shakeLabel, + floatLabel, + notchWidth, + lineRippleActive, + lineRippleCenter, + setLeadingIcon, + setTrailingIcon, + setFloatingLabel, + setCharacterCounter + } = useTextFieldFoundation(props); + + const id = useId('textfield', props); + const labelId = id + '-label'; + + const className = useClassNames(props, [ + 'mdc-text-field', + 'mdc-text-field--upgraded', + { + 'mdc-text-field--textarea': textarea, + 'mdc-text-field--fullwidth': fullwidth, + 'mdc-text-field--outlined': outlined, + 'mdc-text-field--invalid': invalid, + 'mdc-text-field--disabled': disabled, + 'mdc-text-field--with-leading-icon': !!icon, + 'mdc-text-field--with-trailing-icon': !!trailingIcon, + 'mdc-text-field--no-label': !label, + 'mdc-text-field--end-aligned': align === 'end' + } + ]); + + // handle leading and trailing icons + const renderIcon = ( + icon: RMWC.IconPropT, + position: 'leading' | 'trailing' + ) => { + return ( + { + position === 'leading' ? setLeadingIcon(api) : setTrailingIcon(api); + }} + position={position} + tabIndex={position === 'trailing' ? 0 : undefined} + icon={icon} + /> + ); + }; + + const renderHelpText = (renderedCharacterCounter?: React.ReactNode) => { + const shouldRender = !!helpText || (characterCount && !textarea); + + if (!shouldRender) { + return null; + } + + const shouldSpread = + typeof helpText === 'object' && !React.isValidElement(helpText); + + return ( +
    + {helpText && shouldSpread ? ( + + ) : ( + {helpText} + )} + {!textarea && renderedCharacterCounter} +
    + ); + }; + + const renderedLabel = label ? ( + + {label} + + ) : null; + + const renderedCharacterCounter = characterCount ? ( + + ) : null; + + return ( + <> + + {!!icon && renderIcon(icon, 'leading')} + {children} + {/** Render character counter in different place for textarea */} + {!!textarea && renderedCharacterCounter} + + + + {!!outlined ? ( + <> + {renderedLabel} + {!!trailingIcon && renderIcon(trailingIcon, 'trailing')} + + ) : ( + <> + {renderedLabel} + {!!trailingIcon && renderIcon(trailingIcon, 'trailing')} + + + )} + + {renderHelpText(renderedCharacterCounter)} + + ); +}); + +const TextFieldRipple = React.memo(function TextFieldRipple() { + return ; +}); + +const TextFieldRoot = withRipple({ surface: false })( + React.forwardRef(function TextFieldRoot(props: any, ref: React.Ref) { + return ; + }) +); + +/********************************************************************* + * Character Count + *********************************************************************/ + +export interface TextFieldCharacterCountApi { + getFoundation: () => MDCTextFieldCharacterCounterFoundation; +} + +export interface TextFieldCharacterCountProps extends IconProps { + apiRef?: (api: TextFieldCharacterCountApi | null) => void; +} + +const TextFieldCharacterCount = React.memo(function TextFieldCharacterCount( + props: TextFieldCharacterCountProps +) { + const { content } = useTextFieldCharacterCountFoundation(props); + return
    {content}
    ; +}); + +/********************************************************************* + * Helper Text + *********************************************************************/ + +export interface TextFieldHelperTextProps { + /** Make the help text always visible */ + persistent?: boolean; + /** Make the help a validation message style */ + validationMsg?: boolean; + /** Content for the help text */ + children: React.ReactNode; +} + +/** A help text component */ +export const TextFieldHelperText = createComponent( + function TextFieldHelperText(props, ref) { + const { persistent, validationMsg, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-text-field-helper-text', + { + 'mdc-text-field-helper-text--persistent': persistent, + 'mdc-text-field-helper-text--validation-msg': validationMsg + } + ]); + + return ; + } +); + +/********************************************************************* + * Icon + *********************************************************************/ + +export interface TextFieldIconApi { + getFoundation: () => MDCTextFieldIconFoundation; +} + +/** An Icon in a TextField */ +export interface TextFieldIconProps extends IconProps { + apiRef?: (api: TextFieldIconApi | null) => void; + position: 'leading' | 'trailing'; +} + +/** An Icon in a TextField */ +const TextFieldIcon = function TextFieldIcon( + props: TextFieldIconProps & RMWC.HTMLProps +) { + const { apiRef, position, ...rest } = props; + const { rootEl } = useTextFieldIconFoundation(props); + const className = useClassNames(props, [ + 'mdc-text-field__icon', + { + 'mdc-text-field__icon--trailing': position === 'trailing', + 'mdc-text-field__icon--leading': position === 'leading' + } + ]); + + return ( + + ); +}; +TextFieldIcon.displayName = 'TextFieldIcon'; diff --git a/packages/mc-react-ui-components/src/lib/textfield/styles.tsx b/packages/mc-react-ui-components/src/lib/textfield/styles.tsx new file mode 100644 index 00000000..6d2d6176 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/styles.tsx @@ -0,0 +1,6 @@ +import '@material/textfield/dist/mdc.textfield.css'; +import '@rmwc/floating-label/styles'; +import '@rmwc/notched-outline/styles'; +import '@rmwc/line-ripple/styles'; +import '@rmwc/ripple/styles'; +import '@rmwc/icon/styles'; diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx new file mode 100644 index 00000000..251344cd --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx @@ -0,0 +1,36 @@ +import { useState } from 'react'; +import { useFoundation } from '@rmwc/base'; +import { TextFieldCharacterCountProps, TextFieldCharacterCountApi } from '.'; +import { MDCTextFieldCharacterCounterFoundation } from '@material/textfield'; + +export const useTextFieldCharacterCountFoundation = ( + props: TextFieldCharacterCountProps +) => { + const [content, setContent] = useState(); + + const { foundation, ...elements } = useFoundation({ + props, + api: ({ + foundation + }: { + foundation: MDCTextFieldCharacterCounterFoundation; + }): TextFieldCharacterCountApi => { + return { + getFoundation: () => foundation + }; + }, + elements: {}, + foundation: () => { + return new MDCTextFieldCharacterCounterFoundation({ + setContent: (content: string) => { + setContent(content); + } + }); + } + }); + + return { + content, + ...elements + }; +}; diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx new file mode 100644 index 00000000..0e16ba27 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx @@ -0,0 +1,190 @@ +import { useState, useRef, useEffect } from 'react'; +import { useFoundation } from '@rmwc/base'; +import { EventType, SpecificEventListener } from '@material/base/types'; +import { MDCTextFieldFoundation } from '@material/textfield'; +import { + TextFieldProps, + TextFieldCharacterCountApi, + TextFieldIconApi +} from '.'; +import { FloatingLabelApi } from '@rmwc/floating-label'; + +export const useTextFieldFoundation = (props: TextFieldProps) => { + const [lineRippleActive, setLineRippleActive] = useState(false); + const [lineRippleCenter, setLineRippleCenter] = useState(0); + const [notchWidth, setNotchWidth] = useState(); + const [shakeLabel, setShakeLabel] = useState(false); + const [floatLabel, setFloatlabel] = useState(false); + + const characterCounter = useRef(); + const setCharacterCounter = (api: TextFieldCharacterCountApi | null) => + (characterCounter.current = api); + + const leadingIcon = useRef(); + const setLeadingIcon = (api: TextFieldIconApi | null) => + (leadingIcon.current = api); + + const trailingIcon = useRef(); + const setTrailingIcon = (api: TextFieldIconApi | null) => + (trailingIcon.current = api); + + const floatingLabel = useRef(); + const setFloatingLabel = (api: FloatingLabelApi | null) => + (floatingLabel.current = api); + + const { foundation, ...elements } = useFoundation({ + props, + elements: { rootEl: true, inputEl: true }, + foundation: ({ rootEl, inputEl, getProps }) => { + const getLabelAdapterMethods = () => { + return { + shakeLabel: (shouldShake: boolean) => setShakeLabel(shouldShake), + floatLabel: (shouldFloat: boolean) => { + setFloatlabel(getProps().floatLabel ?? shouldFloat); + }, + hasLabel: () => { + return !!getProps().label; + }, + getLabelWidth: () => floatingLabel.current?.getWidth() || 0 + }; + }; + + const getLineRippleAdapterMethods = () => { + return { + activateLineRipple: () => { + setLineRippleActive(true); + }, + deactivateLineRipple: () => { + setLineRippleActive(false); + }, + setLineRippleTransformOrigin: (normalizedX: number) => { + setLineRippleCenter(normalizedX); + } + }; + }; + + const getOutlineAdapterMethods = () => { + return { + notchOutline: (labelWidth: number) => { + setNotchWidth(labelWidth); + }, + closeOutline: () => { + getProps().floatLabel ?? setNotchWidth(undefined); + }, + hasOutline: () => { + return !!getProps().outlined; + } + }; + }; + + const getInputAdapterMethods = () => { + return { + registerInputInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => inputEl.addEventListener(evtType, handler), + deregisterInputInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => inputEl.removeEventListener(evtType, handler), + getNativeInput: () => inputEl.ref as any + }; + }; + + const getFoundationMap = () => { + return { + characterCounter: characterCounter.current + ? characterCounter.current.getFoundation() + : undefined, + helperText: undefined, + leadingIcon: leadingIcon.current + ? leadingIcon.current.getFoundation() + : undefined, + trailingIcon: trailingIcon.current + ? trailingIcon.current.getFoundation() + : undefined + }; + }; + + return new MDCTextFieldFoundation( + { + addClass: (className: string) => rootEl.addClass(className), + removeClass: (className: string) => rootEl.removeClass(className), + hasClass: (className: string) => rootEl.hasClass(className), + registerTextFieldInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => rootEl.addEventListener(evtType, handler), + deregisterTextFieldInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ): void => rootEl.removeEventListener(evtType, handler), + registerValidationAttributeChangeHandler: ( + handler: (attributeNames: string[]) => void + ): MutationObserver => { + const getAttributesList = (mutationsList: MutationRecord[]) => + mutationsList.map((mutation) => mutation.attributeName); + if (inputEl.ref) { + const observer = new MutationObserver((mutationsList) => + handler(getAttributesList(mutationsList) as string[]) + ); + const targetNode = inputEl.ref; + const config = { attributes: true }; + targetNode && observer.observe(targetNode, config); + return observer; + } + + return {} as MutationObserver; + }, + deregisterValidationAttributeChangeHandler: ( + observer: MutationObserver + ) => { + observer && observer.disconnect(); + }, + isFocused: () => { + return document.activeElement === inputEl.ref; + }, + ...getInputAdapterMethods(), + ...getLabelAdapterMethods(), + ...getLineRippleAdapterMethods(), + ...getOutlineAdapterMethods() + }, + getFoundationMap() + ); + } + }); + + // Fixes bug #362 + // MDC breaks Reacts unidirectional data flow... + // We have to capture the value before render + // and then compare it to props.value after render in order to set + // the appropriate foundation value without breaking its initial state + const foundationValue = foundation.getValue(); + useEffect(() => { + if (props.value !== undefined && props.value !== foundationValue) { + foundation.setValue(String(props.value)); + } + }, [props.value, foundation, foundationValue]); + + // Allow the user to float the label themselves + useEffect(() => { + if (props.floatLabel !== undefined) { + foundation.notchOutline(props.floatLabel); + // @ts-ignore unsafe adapter access + foundation.adapter_.floatLabel(props.floatLabel); + } + }, [foundation, props.floatLabel]); + + return { + shakeLabel, + floatLabel, + notchWidth, + lineRippleActive, + lineRippleCenter, + setCharacterCounter, + setLeadingIcon, + setTrailingIcon, + setFloatingLabel, + ...elements + }; +}; diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx new file mode 100644 index 00000000..522162da --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { useFoundation } from '@rmwc/base'; +import { IconProps } from '@rmwc/icon'; +import { EventType, SpecificEventListener } from '@material/base/types'; + +import { MDCTextFieldIconFoundation } from '@material/textfield'; +import { TextFieldIconApi } from '.'; + +export const useTextFieldIconFoundation = ( + props: IconProps & React.HTMLProps +) => { + const { foundation, ...elements } = useFoundation({ + props, + elements: { rootEl: true }, + api: ({ + foundation + }: { + foundation: MDCTextFieldIconFoundation; + }): TextFieldIconApi => { + return { + getFoundation: () => foundation + }; + }, + foundation: ({ rootEl, emit }) => { + const f = new MDCTextFieldIconFoundation({ + getAttr: (attr: string) => rootEl.getProp(attr as any) as string | null, + setAttr: (attr: string, value: string) => + rootEl.setProp(attr as any, value), + removeAttr: (attr: string) => rootEl.removeProp(attr as any), + setContent: (content: string) => { + rootEl.setProp('icon', content); + }, + registerInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ) => rootEl.addEventListener(evtType, handler), + deregisterInteractionHandler: ( + evtType: K, + handler: SpecificEventListener + ) => rootEl.removeEventListener(evtType, handler), + notifyIconAction: () => emit('onClick', {}, true) + }); + + return f; + } + }); + + return { ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx new file mode 100644 index 00000000..3139c037 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx @@ -0,0 +1,12 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { TextField } from './'; + +describe('TextField SSR', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield.spec.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield.spec.tsx new file mode 100644 index 00000000..a1efc90e --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield.spec.tsx @@ -0,0 +1,168 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { TextField, TextFieldHelperText } from './'; +import { wait } from '@rmwc/base/utils/test-utils'; + +describe('TextField', () => { + it('renders', () => { + mount(); + }); + + it('can autoFocus', () => { + const el = mount(); + expect(document.activeElement).toBe(el.find('input').getDOMNode()); + }); + + it('can have children', () => { + mount( + +
    Child
    +
    + ); + }); + + it('can have helpText', () => { + const el = mount( +
    + +
    + ); + const el2 = mount( +
    + +
    + ); + + expect(el.contains('textHelpText')).toBe(true); + expect(el2.contains('textHelpText')).toBe(true); + expect( + el2.html().includes('mdc-text-field-helper-text--validation-msg') + ).toBe(true); + expect(el2.html().includes('mdc-text-field-helper-text--persistent')).toBe( + true + ); + }); + + it('can have custom classnames', () => { + const el = mount( + +
    Child
    +
    + ); + + const html = el.html(); + expect( + !!~html.search('mdc-text-field') && !!~html.search('my-custom-classname') + ).toEqual(true); + }); + + it('can be bound', () => { + const el = mount( + {}} + /> + ); + expect((el.find('input').getDOMNode() as HTMLInputElement).value).toBe( + 'hello world' + ); + }); + + it('can be textarea', () => { + const el = mount( + {}} + /> + ); + expect( + (el.find('textarea').getDOMNode() as HTMLTextAreaElement).value + ).toBe('hello world'); + }); + + it('can have custom classnames on input', () => { + const el = mount(); + expect(!!~el.html().search('my-custom-classname')).toEqual(true); + }); + + it('can be invalid', () => { + mount(); + }); + + it('can be outlined', () => { + mount(); + }); + + it('can be disabled', () => { + mount(); + }); + + it('can be required', async (done) => { + const el = mount( {}} required />); + const getValid = () => + el.html().includes('mdc-text-field--invalid') === false; + + // should render valid to start + expect(getValid()).toBe(true); + + el.find('input').first().simulate('focus'); + await wait(20); + el.find('input').first().simulate('blur'); + await wait(20); + + expect(getValid()).toBe(false); + done(); + }); + + it('can be have icon', () => { + mount(); + }); + + it('can be have trailingIcon', () => { + mount(); + }); + + it('supports inputRef as an object reference', () => { + const textObjectRef: any = { current: null }; + mount(); + expect(textObjectRef.current instanceof HTMLInputElement).toBeTruthy(); + + const areaObjectRef: any = { current: null }; + mount(); + expect(areaObjectRef.current instanceof HTMLTextAreaElement).toBeTruthy(); + }); + + it('supports inputRef as a function reference', () => { + let inputObjectRef: any; + const objectRefFunc: any = (el: HTMLInputElement) => { + inputObjectRef = el; + }; + mount(); + expect(inputObjectRef instanceof HTMLInputElement).toBeTruthy(); + }); + + it('label floats on dynamic change', async (done) => { + const el = mount( {}} />); + expect(el.html().includes('mdc-floating-label--float-above')).toBe(false); + el.setProps({ value: 'foo' }); + el.update(); + await wait(100); + expect(el.html().includes('mdc-floating-label--float-above')).toBe(true); + done(); + }); +}); + +describe('TextFieldHelperText', () => { + it('renders', () => { + mount(Hello); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx new file mode 100644 index 00000000..65de8d64 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx @@ -0,0 +1,69 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { boolean, text, number } from '@storybook/addon-knobs'; +// import { TextField } from './'; + +// function TextFieldStory() { +// const [value, setValue] = React.useState(''); + +// return ( +// setValue(evt.currentTarget.value)} +// rows={number('rows', 8)} +// cols={number('cols', 0)} +// icon={text('withLeadingIcon', '')} +// trailingIcon={text('withTrailingIcon', '')} +// textarea={boolean('textarea', false)} +// foundationRef={console.log} +// /> +// ); +// } + +// class TextFieldUncontrolledStory extends React.Component { +// state = { +// counter: 0 +// }; +// render() { +// return ( +//
    +// +// +//
    +// ); +// } +// } + +// storiesOf('TextField', module) +// .add('TextField (Controlled)', () => ) +// .add('TextField (Uncontrolled)', () => ) +// .add('autoFocus', () => ) +// .add('Changing', function () { +// const [value, setValue] = React.useState(''); + +// React.useEffect(() => { +// setInterval(() => { +// setValue((val) => (val === '' ? 'Hello World' : '')); +// }, 2000); +// }, []); + +// return ( +// {}} +// /> +// ); +// }); diff --git a/packages/mc-react-ui-components/src/lib/theme/README.md b/packages/mc-react-ui-components/src/lib/theme/README.md new file mode 100644 index 00000000..923b41ed --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/README.md @@ -0,0 +1,169 @@ +# Theming + +MDC Theme is a foundational module that themes MDC Web components. + +- Module **@rmwc/theme** +- Import styles: + - Using CSS Loader + - import '@rmwc/theme/styles'; + - Or include stylesheets + - **'@material/theme/dist/mdc.theme.css'** + - **'@rmwc/theme/theme.css'** +- MDC Docs: [https://material.io/develop/web/components/theme/](https://material.io/develop/web/components/theme/) + +## Theme Options + +The Theme module fully embraces using CSS variables for runtime theming. This allows for some really powerful usecases like a built in dark mode, custom palettes for your clients, or dynamic configuration for accessibility. + +Support for theming inside of `material-components-web` is not without issue, so RMWC maintains a theme fixes file to correct any anomalies for you. Please make sure you include both! + +**Important** You should include the theme style sheets BEFORE any of your other styles. + +```jsx +<> +
    + {[ + 'primary', + 'secondary', + 'error', + 'background', + 'surface', + 'primaryBg', + 'secondaryBg', + 'textPrimaryOnBackground', + 'textSecondaryOnBackground', + 'textHintOnBackground', + 'textDisabledOnBackground', + 'textIconOnBackground', + 'textPrimaryOnLight', + 'textSecondaryOnLight', + 'textHintOnLight', + 'textDisabledOnLight', + 'textIconOnLight' + ].map((theme, i) => ( + + {theme} + + ))} +
    +
    + {[ + 'onPrimary', + 'onSecondary', + 'onError', + 'textPrimaryOnDark', + 'textSecondaryOnDark', + 'textHintOnDark', + 'textDisabledOnDark', + 'textIconOnDark' + ].map((theme, i) => ( + + {theme} + + ))} +
    + +``` + +## ThemeProvider + +The `ThemeProvider` is an optional component that allows you to specify theme colors and settings for all of its subtree. This is useful to use once at the top of your app, or in parts of your app where the styles or color scheme differ. + +You don't have to pass in all options. The `ThemeProvider` will automatically adjust some of the values like `onSurface` white or black text depending on colors contrast ratio. + +Theming in `material-components-web` isn't perfect, but a few basic options will get you most of the way. Try using the ThemePicker at the top and selecting "Shrine". You'll see that most things are colored appropriately, but the defaults provided for things like Buttons and tabs still have to have their colors overridden. + +```jsx +<> + + + + +``` + +```jsx + + + + + +``` + +```jsx + + + + + +``` + +## Theme Component + +The Theme component allows you to apply theme colors to RMWC components, or components of your own. Almost every component in RMWC has a `theme` prop that you can use that takes the same options as the `Theme` component's `use` prop. + +```jsx + + {/* Add Theme colors to your own components. */} +
    + Cookies +
    +
    +``` + +```jsx +<> + {/* These two examples are roughly equivalent. */} + + + + + + +``` + +```jsx +<> + {/* Text is one of the cases where `wrap` is not required. By default `Theme` will insert `span` tags. */} +

    + I Want{' '} + Icecream +

    + +``` + +## ThemeProvider +A ThemeProvider. This sets theme colors for its child tree. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `children` | `React.ReactNode` | Children to render | +| `options` | `{ [key: string]: string }` | Any theme option pointing to a valid CSS value. | +| `style` | `Object` | Additional standard inline styles that will be merged into the style tag. | +| `wrap` | `undefined \| false \| true` | Instead of injecting a div tag, wrap a child component by merging the theme styles directly onto it. Useful when you don't want to mess with layout. | + + +## Theme +A Theme Component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `use` | `RMWC.ThemePropT` | A theme option as a string, a space separated string for multiple values, or an array of valid theme options. | +| `wrap` | `undefined \| false \| true` | Collapse the styles directly onto the child component. This eliminates the need for a wrapping `span` element and may be required for applying things like background-colors. | + + diff --git a/packages/mc-react-ui-components/src/lib/theme/generated-examples.json b/packages/mc-react-ui-components/src/lib/theme/generated-examples.json new file mode 100644 index 00000000..4304155a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/generated-examples.json @@ -0,0 +1 @@ +["<>\n
    \n {[\n 'primary',\n 'secondary',\n 'error',\n 'background',\n 'surface',\n 'primaryBg',\n 'secondaryBg',\n 'textPrimaryOnBackground',\n 'textSecondaryOnBackground',\n 'textHintOnBackground',\n 'textDisabledOnBackground',\n 'textIconOnBackground',\n 'textPrimaryOnLight',\n 'textSecondaryOnLight',\n 'textHintOnLight',\n 'textDisabledOnLight',\n 'textIconOnLight'\n ].map((theme, i) => (\n \n {theme}\n \n ))}\n
    \n
    \n {[\n 'onPrimary',\n 'onSecondary',\n 'onError',\n 'textPrimaryOnDark',\n 'textSecondaryOnDark',\n 'textHintOnDark',\n 'textDisabledOnDark',\n 'textIconOnDark'\n ].map((theme, i) => (\n \n {theme}\n \n ))}\n
    \n","<>\n \n \n \n","\n \n \n \n","\n \n \n \n","\n {/* Add Theme colors to your own components. */}\n
    \n Cookies\n
    \n
    ","<>\n {/* These two examples are roughly equivalent. */}\n \n \n \n\n \n","<>\n {/* Text is one of the cases where `wrap` is not required. By default `Theme` will insert `span` tags. */}\n

    \n I Want{' '}\n Icecream\n

    \n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/theme/generated-props.json b/packages/mc-react-ui-components/src/lib/theme/generated-props.json new file mode 100644 index 00000000..a5035790 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/generated-props.json @@ -0,0 +1,201 @@ +{ + "npm": {}, + "typescript": { + "ThemeProps": { + "documentation": { + "contents": [ + "

    A Theme Component.

    \n" + ], + "contentsRaw": "A Theme Component.", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "ThemeProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L16", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    A theme option as a string, a space separated string for multiple values, or an array of valid theme options.

    \n" + ], + "contentsRaw": "A theme option as a string, a space separated string for multiple values, or an array of valid theme options.", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "use", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L18", + "type": "RMWC.ThemePropT" + }, + { + "documentation": { + "contents": [ + "

    Collapse the styles directly onto the child component. This eliminates the need for a wrapping span element and may be required for applying things like background-colors.

    \n" + ], + "contentsRaw": "Collapse the styles directly onto the child component. This eliminates the need for a wrapping `span` element and may be required for applying things like background-colors.", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "wrap", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L20", + "type": "undefined | false | true" + } + ] + }, + "ThemeProviderProps": { + "documentation": { + "contents": [ + "

    A ThemeProvider. This sets theme colors for its child tree.

    \n" + ], + "contentsRaw": "A ThemeProvider. This sets theme colors for its child tree.", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "ThemeProviderProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L43", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Children to render

    \n" + ], + "contentsRaw": "Children to render", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "children", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L51", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Any theme option pointing to a valid CSS value.

    \n" + ], + "contentsRaw": "Any theme option pointing to a valid CSS value.", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "options", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L45", + "type": "{ [key: string]: string }" + }, + { + "documentation": { + "contents": [ + "

    Additional standard inline styles that will be merged into the style tag.

    \n" + ], + "contentsRaw": "Additional standard inline styles that will be merged into the style tag.", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "style", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L47", + "type": "Object" + }, + { + "documentation": { + "contents": [ + "

    Instead of injecting a div tag, wrap a child component by merging the theme styles directly onto it. Useful when you don't want to mess with layout.

    \n" + ], + "contentsRaw": "Instead of injecting a div tag, wrap a child component by merging the theme styles directly onto it. Useful when you don't want to mess with layout.", + "metadata": {} + }, + "fileName": "src/theme/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "wrap", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/theme/index.tsx#L49", + "type": "undefined | false | true" + } + ] + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/theme/index.tsx b/packages/mc-react-ui-components/src/lib/theme/index.tsx new file mode 100644 index 00000000..991af048 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/index.tsx @@ -0,0 +1,95 @@ +import * as RMWC from '../types'; +import React, { useMemo } from 'react'; + +import { + toDashCase, + parseThemeOptions, + wrapChild, + createComponent, + Tag, + useClassNames +} from '../base'; + +import { getAutoColorsForTheme } from './utils'; + +/** A Theme Component. */ +export interface ThemeProps { + /** A theme option as a string, a space separated string for multiple values, or an array of valid theme options. */ + use: RMWC.ThemePropT; + /** Collapse the styles directly onto the child component. This eliminates the need for a wrapping `span` element and may be required for applying things like background-colors. */ + wrap?: boolean; +} + +/** A Theme Component. */ +export const Theme = createComponent(function Theme(props, ref) { + const { use, wrap, ...rest } = props; + + const className = useClassNames(props, [parseThemeOptions(use).join(' ')]); + + if (wrap) { + return wrapChild({ + ...rest, + ref, + className + }); + } + + return ( + + ); +}); + +/** A ThemeProvider. This sets theme colors for its child tree. */ +export interface ThemeProviderProps { + /** Any theme option pointing to a valid CSS value. */ + options: { [key: string]: string }; + /** Additional standard inline styles that will be merged into the style tag. */ + style?: Object; + /** Instead of injecting a div tag, wrap a child component by merging the theme styles directly onto it. Useful when you don't want to mess with layout. */ + wrap?: boolean; + /** Children to render */ + children?: React.ReactNode; +} + +/** A ThemeProvider. This sets theme colors for its child tree. */ +export const ThemeProvider = createComponent( + function ThemeProvider(props, ref) { + const parsed = JSON.stringify(props.options); + + const colors = useMemo(() => { + const processedColors = Object.keys(props.options).reduce( + (acc: any, key) => { + const val = props.options[key]; + key = key.startsWith('--') ? key : `--mdc-theme-${toDashCase(key)}`; + acc[key] = val; + return acc; + }, + {} + ); + + return getAutoColorsForTheme(processedColors); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [parsed]); + + const { options, style = {}, wrap, ...rest } = props; + const className = useClassNames(props, [ + wrap && + typeof rest.children === 'object' && + // @ts-ignore + rest.children?.props?.className + ]); + + const themeStyles = { + ...style, + ...colors + } as React.CSSProperties; + + if (wrap && rest.children) { + return wrapChild({ ...rest, style: themeStyles, ref }); + } + + return ( + + ); + } +); diff --git a/packages/mc-react-ui-components/src/lib/theme/styles.tsx b/packages/mc-react-ui-components/src/lib/theme/styles.tsx new file mode 100644 index 00000000..142243ba --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/styles.tsx @@ -0,0 +1,2 @@ +import '@material/theme/dist/mdc.theme.css'; +import '@rmwc/theme/theme.css'; diff --git a/packages/mc-react-ui-components/src/lib/theme/theme-options.tsx b/packages/mc-react-ui-components/src/lib/theme/theme-options.tsx new file mode 100644 index 00000000..9ed95ce5 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/theme-options.tsx @@ -0,0 +1,28 @@ +import * as RMWC from '../types'; + +export const themeOptions: RMWC.ThemeOptionT[] = [ + 'primary', + 'secondary', + 'background', + 'surface', + 'error', + 'onPrimary', + 'onSecondary', + 'onSurface', + 'onError', + 'textPrimaryOnBackground', + 'textSecondaryOnBackground', + 'textHintOnBackground', + 'textDisabledOnBackground', + 'textIconOnBackground', + 'textPrimaryOnLight', + 'textSecondaryOnLight', + 'textHintOnLight', + 'textDisabledOnLight', + 'textIconOnLight', + 'textPrimaryOnDark', + 'textSecondaryOnDark', + 'textHintOnDark', + 'textDisabledOnDark', + 'textIconOnDark' +]; diff --git a/packages/mc-react-ui-components/src/lib/theme/theme-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/theme/theme-ssr.spec.tsx new file mode 100644 index 00000000..05b5196a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/theme-ssr.spec.tsx @@ -0,0 +1,27 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Theme, ThemeProvider } from './'; +import { themeOptions } from './theme-options'; + +describe('Theme SSR', () => { + test('renders', () => { + themeOptions.map((theme, i) => + mount( + + {theme} + + ) + ); + }); + + test('ThemeProvider renders', () => { + mount( + +
    + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/theme/theme.css b/packages/mc-react-ui-components/src/lib/theme/theme.css new file mode 100644 index 00000000..5cce37e1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/theme.css @@ -0,0 +1,108 @@ +/**************************************************************** + * Theme Fixes + ****************************************************************/ + +/**************************************************************** + * Ripples + ****************************************************************/ +/** Corrects issue with ripple surface color on buttons */ +body .mdc-button .mdc-button__ripple:before, +body .mdc-button .mdc-button__ripple:after { + background-color: currentColor; +} + +/** Corrects issue with ripple surface color on fabs */ +body .mdc-fab .mdc-fab__ripple:before, +body .mdc-fab .mdc-fab__ripple:after { + background-color: currentColor; +} + +/**************************************************************** + * Top App Bar + ****************************************************************/ +body .mdc-top-app-bar { + color: var(--mdc-theme-on-primary, white); +} + +/**************************************************************** + * Tabs + ****************************************************************/ + +/** In top app bar */ +.mdc-top-app-bar .mdc-tab-bar { + --mdc-theme-primary: var(--mdc-theme-on-primary); + --mdc-theme-on-surface: var(--mdc-theme-on-primary); + color: var(--mdc-theme-on-primary); +} + +/** Fixes colors for both top app bar and other situations where the text color might be different */ +.mdc-tab, +body .mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label { + color: var(--mdc-theme-on-surface); +} + +.mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label { + opacity: 0.6; +} + +/**************************************************************** + * List Items + ****************************************************************/ +/** Fixes the focus state color */ +body .mdc-drawer .mdc-list-item--activated { + color: var(--mdc-theme-primary); +} + +/** Fixes list item color in drawers */ +body .mdc-drawer .mdc-list-item:not(.mdc-list-item--activated) { + color: var(--mdc-theme-on-surface); +} + +/** Fixes list item graphic activated color in drawers */ +body .mdc-drawer .mdc-list-item--activated .mdc-list-item__graphic { + color: var(--mdc-theme-primary); +} + +/** Fixes an issue where dividers on cards had bullet points */ +body .mdc-list-divider { + list-style: none; +} + +/**************************************************************** + * Select + ****************************************************************/ +/** Correct color of focused label */ +body + .mdc-select:not(.mdc-select--disabled):not(.mdc-select--invalid).mdc-select--focused + .mdc-floating-label { + color: var(--mdc-theme-primary); +} + +/**************************************************************** + * Textfield + ****************************************************************/ +/** Correct color of focused label */ +body + .mdc-text-field:not(.mdc-text-field--disabled):not(.mdc-text-field--invalid).mdc-text-field--focused + .mdc-floating-label { + color: var(--mdc-theme-primary); +} + +/**************************************************************** + * Chips + ****************************************************************/ +/** Corrects focus outline */ +body .mdc-chip__text__primary-action:focus { + outline: none; +} + +/**************************************************************** + * Linear Progress + ****************************************************************/ +/** + * Corrects an issue where anything other than text-align left breaks layout + * https://github.com/jamesmfriedman/rmwc/issues/590 + */ +.mdc-linear-progress { + text-align: left; +} diff --git a/packages/mc-react-ui-components/src/lib/theme/theme.spec.tsx b/packages/mc-react-ui-components/src/lib/theme/theme.spec.tsx new file mode 100644 index 00000000..b37aa737 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/theme.spec.tsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { Theme, ThemeProvider } from './'; +import { themeOptions } from './theme-options'; + +describe('Theme', () => { + test('renders', () => { + themeOptions.map((theme, i) => + mount( + + {theme} + + ) + ); + }); + + test('wraps', () => { + const el = mount( + +
    + + ); + + expect(el.html().includes('test-classname')).toBe(true); + }); + + test('can have custom classnames', () => { + const el = mount(); + expect(!!~el.html().search('my-custom-classname')).toEqual(true); + }); +}); + +describe('ThemeProvider', () => { + test('renders', () => { + const el = mount( + +
    + + ); + + el.setProps({ + options: { + '--mdc-theme-primary': 'blue', + secondary: '#fff', + surface: '#000000' + } + }); + el.update(); + + el.setProps({ + options: { + '--mdc-theme-primary': 'green', + secondary: '#000000', + surface: '#000000' + } + }); + + el.update(); + }); + + test('can wrap', () => { + const el = mount( + + Hello + + ); + + const el2 = mount(); + + expect(el.html().includes('span') && !el.html().includes('div')).toBe(true); + expect(el2.html().includes('div')).toBe(true); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx b/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx new file mode 100644 index 00000000..ed34b7db --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx @@ -0,0 +1,48 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { Theme } from './'; +// import { themeOptions } from './theme-options'; +// import { TopAppBar, TopAppBarRow } from '../top-app-bar'; +// import { TabBar, Tab } from '../tabs'; + +// const themeStyle = { +// padding: '16px', +// margin: '16px', +// display: 'inline-block', +// width: '96px', +// height: '96px', +// verticalAlign: 'top' +// }; + +// storiesOf('Theme', module) +// .add('Theme', () => ( +//
    +//
    +// +// Test +// +// {themeOptions.map((theme, i) => ( +// +// {theme} +// +// ))} +//
    +//
    +// )) +// .add('Theme Fixes', () => ( +//
    +//
    +//
    Tabs should be proper color on top app bar
    +// +// +// +// One +// Two +// Three +// +// +// +//
    +//
    +// )); diff --git a/packages/mc-react-ui-components/src/lib/theme/utils.tsx b/packages/mc-react-ui-components/src/lib/theme/utils.tsx new file mode 100644 index 00000000..cb1baeac --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/theme/utils.tsx @@ -0,0 +1,240 @@ +const colorMap: { [key: string]: string } = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + 'indianred ': '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgrey: '#d3d3d3', + lightgreen: '#90ee90', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370d8', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#d87093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + transparent: '#ffffff', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32' +}; + +const nameToHex = (name: string) => colorMap[name] || name; + +const hexToRgb = (hex: string) => { + if (hex.length === 4) { + hex = hex + hex.slice(1); + } + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result + ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } + : { + r: 0, + g: 0, + b: 0 + }; +}; + +const luminance = (r: number, g: number, b: number) => { + var a = [r, g, b].map(function(v) { + v /= 255; + return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); + }); + return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722; +}; + +const contrast = ( + rgb1: [number, number, number], + rgb2: [number, number, number] +) => { + return ( + (luminance(rgb1[0], rgb1[1], rgb1[2]) + 0.05) / + (luminance(rgb2[0], rgb2[1], rgb2[2]) + 0.05) + ); +}; + +export const getRgb = (color: string) => { + color = nameToHex(color); + return hexToRgb(color); +}; + +export const isDark = (color: string) => { + const { r, g, b } = getRgb(color); + const ratio = contrast([255, 255, 255], [r, g, b]); + return ratio > 3 ? false : true; +}; + +const paletteMap: { [key: string]: Array<[string, number]> } = { + '--mdc-theme-primary': [['--mdc-theme-on-primary', 0]], + '--mdc-theme-surface': [['--mdc-theme-on-surface', 0]], + '--mdc-theme-secondary': [['--mdc-theme-on-secondary', 0]], + '--mdc-theme-background': [ + ['--mdc-theme-text-primary-on-background', 0], + ['--mdc-theme-text-secondary-on-background', 1], + ['--mdc-theme-text-hint-on-background', 2], + ['--mdc-theme-text-disabled-on-background', 2], + ['--mdc-theme-text-icon-on-background', 2] + ] +}; + +const lightTextPalette = [ + 'rgba(0, 0, 0, 0.87)', + 'rgba(0, 0, 0, 0.54)', + 'rgba(0, 0, 0, 0.38)' +]; + +const darkTextPalette = [ + 'rgba(255, 255, 255, 1)', + 'rgba(255, 255, 255, 0.7)', + 'rgba(255, 255, 255, 0.5)' +]; + +export const getAutoColorsForTheme = (colors: { [key: string]: string }) => { + const autoColors = Object.keys(paletteMap).reduce( + (acc: { [key: string]: string }, key) => { + if (colors[key]) { + const palette = isDark(colors[key]) + ? lightTextPalette + : darkTextPalette; + + paletteMap[key].forEach(k => { + acc[k[0]] = palette[k[1]]; + }); + } + return acc; + }, + {} + ); + + return { + ...autoColors, + ...colors + }; +}; diff --git a/packages/mc-react-ui-components/src/lib/toggleable/README.md b/packages/mc-react-ui-components/src/lib/toggleable/README.md new file mode 100644 index 00000000..8dffe698 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/toggleable/README.md @@ -0,0 +1,3 @@ +# Toggleable + +This is an internal module that is used by Checkbox, Switch, and Radio. \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/toggleable/generated-examples.json b/packages/mc-react-ui-components/src/lib/toggleable/generated-examples.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/toggleable/generated-examples.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/toggleable/generated-props.json b/packages/mc-react-ui-components/src/lib/toggleable/generated-props.json new file mode 100644 index 00000000..f478249d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/toggleable/generated-props.json @@ -0,0 +1,233 @@ +{ + "npm": {}, + "typescript": { + "ToggleableProps": { + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "ToggleableProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L6", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Toggle the control on and off.

    \n" + ], + "contentsRaw": "Toggle the control on and off.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "checked", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L12", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Disables the control.

    \n" + ], + "contentsRaw": "Disables the control.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L10", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L22", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    A DOM ID for the toggle.

    \n" + ], + "contentsRaw": "A DOM ID for the toggle.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "id", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L8", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    A reference to the native input.

    \n" + ], + "contentsRaw": "A reference to the native input.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "inputRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L20", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    A label for the control.

    \n" + ], + "contentsRaw": "A label for the control.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L16", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    By default, all props except className and style spread to the input. These are additional props for the root of the checkbox.

    \n" + ], + "contentsRaw": "By default, all props except className and style spread to the input. These are additional props for the root of the checkbox.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "rootProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L18", + "type": "React.HTMLProps" + }, + { + "documentation": { + "contents": [ + "

    The value of the control.

    \n" + ], + "contentsRaw": "The value of the control.", + "metadata": {} + }, + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "value", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L14", + "type": "string | number | string[]" + } + ] + }, + "ToggleHTMLProps": { + "fileName": "src/toggleable/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "ToggleHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/toggleable/index.tsx#L25", + "type": "RMWC.HTMLProps, \"label\">>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/toggleable/index.tsx b/packages/mc-react-ui-components/src/lib/toggleable/index.tsx new file mode 100644 index 00000000..2437fcfc --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/toggleable/index.tsx @@ -0,0 +1,71 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { useId } from '../base'; +import { FormField } from '../formfield'; + +export interface ToggleableProps { + /** A DOM ID for the toggle. */ + id?: string; + /** Disables the control. */ + disabled?: boolean; + /** Toggle the control on and off. */ + checked?: boolean; + /** The value of the control. */ + value?: string | number | string[]; + /** A label for the control. */ + label?: React.ReactNode; + /** By default, all props except className and style spread to the input. These are additional props for the root of the checkbox. */ + rootProps?: React.HTMLProps; + /** A reference to the native input. */ + inputRef?: React.Ref; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +export type ToggleHTMLProps = RMWC.HTMLProps< + HTMLInputElement, + Omit, 'label'> +>; + +export function useToggleFoundation( + props: ToggleableProps & ToggleHTMLProps +) { + const { className, style, rootProps, label, children, disabled } = props; + const hasLabel = props.label || props.children; + const id = useId('toggle-', props); + + const renderToggle = (toggle: React.ReactElement): JSX.Element => { + /** + * We have to conditionally wrap our checkbox in a formfield + * If we have a label + */ + if (hasLabel) { + return ( + + {toggle} + + + ); + } else { + return toggle; + } + }; + + const toggleRootProps: ToggleableProps['rootProps'] = hasLabel + ? { disabled } + : { + className, + style, + disabled, + ...rootProps + }; + + return { + id, + renderToggle, + toggleRootProps + }; +} diff --git a/packages/mc-react-ui-components/src/lib/tooltip/README.md b/packages/mc-react-ui-components/src/lib/tooltip/README.md new file mode 100644 index 00000000..dd771c73 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/tooltip/README.md @@ -0,0 +1,186 @@ +# Tooltips `RMWC ADDON` + +Tooltips display informative text when users hover over, focus on, or tap an element. + +- Module **@rmwc/tooltip** +- Import styles: + - Using CSS Loader + - import '@rmwc/tooltip/styles'; + - Or include stylesheets + - **'@rmwc/tooltip/tooltip.css'** + + +## Basic Usage + +Wrap any component in a `Tooltip` and provide the content attribute. The only requirement is that is has a single React child, and that the child can accept `onMouseEnter`, `onMouseLeave`, `onFocus`, and `onClick` props. + +```jsx +<> + + + + + + + + + + + + +``` + +## Variants + +```jsx + + + +``` + +```jsx + + + +``` + +```jsx + + +
    + Captain America +
    Steve Rogers
    +
    +
    + } +> + S. Rogers + +``` + +```jsx + + Hello World! +
    + } +> + Popover Window + +``` + +```jsx +<> + +
    \n }\n>\n S. Rogers\n","\n Hello World!\n
    \n }\n>\n Popover Window\n","<>\n \n
    +// } +// > +//
    +// Rich Content +// +// +// )); diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/README.md b/packages/mc-react-ui-components/src/lib/top-app-bar/README.md new file mode 100644 index 00000000..7d8a084a --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/README.md @@ -0,0 +1,259 @@ +# Top App Bar + +Top App Bar acts as a container for items such as application title, navigation icon, and action items. + +- Module **@rmwc/top-app-bar** +- Import styles: + - Using CSS Loader + - import '@rmwc/top-app-bar/styles'; + - Or include stylesheets + - **'@material/top-app-bar/dist/mdc.top-app-bar.css'** + - **'@material/icon-button/dist/mdc.icon-button.css'** + - **'@material/ripple/dist/mdc.ripple.css'** + - **'@rmwc/icon/icon.css'** +- MDC Docs: [https://material.io/develop/web/components/top-app-bar/](https://material.io/develop/web/components/top-app-bar/) + +Whats the difference between the TopAppBar and Toolbar? Toolbar is technically deprecated (although it still works just fine). TopAppBar functionality continues to be worked on by the `material-components-web` team. + +## Basic Usage + +```jsx +<> + + + + Default + + + + + +
    Scroll Me
    + +``` + +```jsx +<> + + + + + All Features + + + + + + + + + + Another Row + + + + + +
    Scroll Me
    + +``` + +## Simplified Usage + +You can use the `SimpleTopAppBar` component which contains a default template already laid out for you. Specify any actions you want as an array of props + +```jsx +<> + console.log('Navigate')} + actionItems={[ + { + icon: 'file_download', + onClick: () => console.log('Do Something') + }, + { icon: 'print', onClick: () => console.log('Do Something') }, + { icon: 'bookmark', onClick: () => console.log('Do Something') } + ]} + /> + + +
    Scroll Me
    + +``` + +## Variants + +```jsx +<> + + + + Fixed + + + + + +
    Scroll Me
    + +``` + +```jsx +<> + + + + Dense + + + + + +
    Scroll Me
    + +``` + +```jsx +<> + {/** Additionally you can specify shortCollapsed to have it always minimized */} + + + + + Short + + + + + + + + +
    Scroll Me
    + +``` + +```jsx +<> + + + + Prominent + + + + + +
    Scroll Me
    + +``` + +## TopAppBar +TopAppBar + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `dense` | `undefined \| false \| true` | Styles the top app bar to be dense. | +| `fixed` | `undefined \| false \| true` | Styles the top app bar as a fixed top app bar. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `onNav` | `undefined \| (evt: TopAppBarOnNavEventT) => void` | Emits when the navigation icon is clicked. | +| `prominent` | `undefined \| false \| true` | Styles the top app bar as a prominent top app bar. | +| `scrollTarget` | `Element \| null` | Set a scrollTarget other than the window when you are using the TopAppBar inside of a nested scrolling DOM Element. Please note that you should store your scrollTarget in a stateful variable. See example https://codesandbox.io/s/reverent-austin-16zzi. | +| `short` | `undefined \| false \| true` | Styles the top app bar as a short top app bar. | +| `shortCollapsed` | `undefined \| false \| true` | Styles the top app bar to always be collapsed. | + + +## TopAppBarRow +A row for the app bar. + + + +## TopAppBarSection +A section for the app bar. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `alignEnd` | `undefined \| false \| true` | Aligns the section to the end. | +| `alignStart` | `undefined \| false \| true` | Aligns the section to the start. | + + +## TopAppBarTitle +A title for the top app bar. + + + +## TopAppBarNavigationIcon +A navigation icon for the top app bar. This is an instance of the Icon component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `checked` | `undefined \| false \| true` | Controls the on / off state of the a toggleable button. | +| `disabled` | `undefined \| false \| true` | Makes the button disabled | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. Only for Toggleable buttons. | +| `icon` | `RMWC.IconPropT` | Icon for the button | +| `label` | `undefined \| string` | Apply an aria label. | +| `onChange` | `undefined \| (evt: IconButtonOnChangeEventT) => void` | An onChange callback that receives a custom event. evt.detail = { isOn: boolean } | +| `onIcon` | `RMWC.IconPropT` | If specified, renders a toggle with this icon as the on state. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | + + +## TopAppBarActionItem +Action items for the top app bar. This is an instance of the Icon component. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `checked` | `undefined \| false \| true` | Controls the on / off state of the a toggleable button. | +| `disabled` | `undefined \| false \| true` | Makes the button disabled | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. Only for Toggleable buttons. | +| `icon` | `RMWC.IconPropT` | Icon for the button | +| `label` | `undefined \| string` | Apply an aria label. | +| `onChange` | `undefined \| (evt: IconButtonOnChangeEventT) => void` | An onChange callback that receives a custom event. evt.detail = { isOn: boolean } | +| `onIcon` | `RMWC.IconPropT` | If specified, renders a toggle with this icon as the on state. | +| `ripple` | `RipplePropT` | Adds a ripple effect to the component | + + +## TopAppBarFixedAdjust +An optional component to fill the space when the TopAppBar is fixed. Place it directly after the TopAppBar. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `dense` | `undefined \| false \| true` | Class used to style the content below the dense top app bar to prevent the top app bar from covering it. | +| `denseProminent` | `undefined \| false \| true` | Class used to style the content below the top app bar when styled as both prominent and dense, to prevent the top app bar from covering it. | +| `prominent` | `undefined \| false \| true` | Class used to style the content below the prominent top app bar to prevent the top app bar from covering it. | +| `short` | `undefined \| false \| true` | Class used to style the content below the short top app bar to prevent the top app bar from covering it. | + + +## SimpleTopAppBar +A simplified syntax for creating an AppBar. + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `actionItems` | `Object[]` | An array of props that will be used to create TopAppBarActionItems. | +| `dense` | `undefined \| false \| true` | Styles the top app bar to be dense. | +| `endContent` | `React.ReactNode` | Additional content to place in the end section. | +| `fixed` | `undefined \| false \| true` | Styles the top app bar as a fixed top app bar. | +| `foundationRef` | `React.Ref` | Advanced: A reference to the MDCFoundation. | +| `navigationIcon` | `Object \| boolean` | Props for the NavigationIcon, which is an instance of the Icon component. You can also set this to `true` and use the `onNav` prop to handle interactions. | +| `onNav` | `undefined \| (evt: TopAppBarOnNavEventT) => void` | Emits when the navigation icon is clicked. | +| `prominent` | `undefined \| false \| true` | Styles the top app bar as a prominent top app bar. | +| `scrollTarget` | `Element \| null` | Set a scrollTarget other than the window when you are using the TopAppBar inside of a nested scrolling DOM Element. Please note that you should store your scrollTarget in a stateful variable. See example https://codesandbox.io/s/reverent-austin-16zzi. | +| `short` | `undefined \| false \| true` | Styles the top app bar as a short top app bar. | +| `shortCollapsed` | `undefined \| false \| true` | Styles the top app bar to always be collapsed. | +| `startContent` | `React.ReactNode` | Additional content to place in the start section. | +| `title` | `React.ReactNode` | The title for the App Bar. | + + diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx new file mode 100644 index 00000000..3b725e8d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx @@ -0,0 +1,99 @@ +import React, { useEffect, useRef } from 'react'; +import { TopAppBarProps } from '.'; +import { useFoundation } from '@rmwc/base'; + +import { + MDCTopAppBarFoundation, + MDCFixedTopAppBarFoundation, + MDCShortTopAppBarFoundation, + MDCTopAppBarAdapter +} from '@material/top-app-bar'; + +export const useTopAppBarFoundation = ( + props: TopAppBarProps & React.HTMLProps +) => { + const scrollTargetRef = useRef(null); + const navIconRef = useRef(null); + + const { foundation, ...elements } = useFoundation({ + props, + elements: { + rootEl: true + }, + foundation: ({ rootEl, emit }) => { + const adapter: MDCTopAppBarAdapter = { + hasClass: (className: string) => rootEl.hasClass(className), + addClass: (className: string) => rootEl.addClass(className), + removeClass: (className: string) => rootEl.removeClass(className), + setStyle: (property: string, value: string) => + rootEl.setStyle(property, value), + + getTopAppBarHeight: () => rootEl.ref?.clientHeight || 0, + notifyNavigationIconClicked: () => emit('onNav', {}), + getViewportScrollY: () => { + const target = scrollTargetRef.current as any; + return target + ? target['pageYOffset' in target ? 'pageYOffset' : 'scrollTop'] + : 0; + }, + getTotalActionItems: () => { + return rootEl.ref + ? rootEl.ref.querySelectorAll( + MDCTopAppBarFoundation.strings.ACTION_ITEM_SELECTOR + ).length + : 0; + } + }; + + let foundation; + if (props.short) { + foundation = new MDCShortTopAppBarFoundation(adapter); + } else if (props.fixed) { + foundation = new MDCFixedTopAppBarFoundation(adapter); + } else { + foundation = new MDCTopAppBarFoundation(adapter); + } + + return foundation; + } + }); + + const { rootEl } = elements; + + useEffect(() => { + const target = + props.scrollTarget || rootEl.ref?.ownerDocument?.defaultView || window; + const handleTargetScroll = foundation.handleTargetScroll.bind(foundation); + target.addEventListener('scroll', handleTargetScroll as EventListener); + scrollTargetRef.current = target; + + return () => { + target.removeEventListener('scroll', handleTargetScroll as EventListener); + }; + }, [props.scrollTarget, scrollTargetRef, foundation, rootEl.ref]); + + useEffect(() => { + navIconRef.current = + rootEl.ref?.querySelector( + MDCTopAppBarFoundation.strings.NAVIGATION_ICON_SELECTOR + ) || null; + + const handler = foundation.handleNavigationClick.bind(foundation); + navIconRef.current?.addEventListener('click', handler); + + return () => { + navIconRef.current?.removeEventListener('click', handler); + }; + }, [rootEl.ref, foundation]); + + // The Top App Bar sets these values in its constructor... + // Reinit them after mount + useEffect(() => { + // @ts-ignore + foundation.lastScrollPosition_ = foundation.adapter_.getViewportScrollY(); + // @ts-ignore + foundation.topAppBarHeight_ = foundation.adapter_.getTopAppBarHeight(); + }, [foundation]); + + return { foundation, ...elements }; +}; diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/generated-examples.json b/packages/mc-react-ui-components/src/lib/top-app-bar/generated-examples.json new file mode 100644 index 00000000..0366a17d --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/generated-examples.json @@ -0,0 +1 @@ +["<>\n \n \n \n Default\n \n \n \n \n\n
    Scroll Me
    \n","<>\n \n \n \n \n All Features\n \n \n \n \n \n \n \n \n \n Another Row\n \n \n \n \n\n
    Scroll Me
    \n","<>\n console.log('Navigate')}\n actionItems={[\n {\n icon: 'file_download',\n onClick: () => console.log('Do Something')\n },\n { icon: 'print', onClick: () => console.log('Do Something') },\n { icon: 'bookmark', onClick: () => console.log('Do Something') }\n ]}\n />\n \n\n
    Scroll Me
    \n","<>\n \n \n \n Fixed\n \n \n \n \n\n
    Scroll Me
    \n","<>\n \n \n \n Dense\n \n \n \n \n\n
    Scroll Me
    \n","<>\n {/** Additionally you can specify shortCollapsed to have it always minimized */}\n \n \n \n \n Short\n \n \n \n \n \n \n \n\n
    Scroll Me
    \n","<>\n \n \n \n Prominent\n \n \n \n \n\n
    Scroll Me
    \n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/generated-props.json b/packages/mc-react-ui-components/src/lib/top-app-bar/generated-props.json new file mode 100644 index 00000000..af515f06 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/generated-props.json @@ -0,0 +1,1284 @@ +{ + "npm": {}, + "typescript": { + "TopAppBarProps": { + "documentation": { + "contents": [ + "

    TopAppBar

    \n" + ], + "contentsRaw": "TopAppBar", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TopAppBarProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L18", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Styles the top app bar to be dense.

    \n" + ], + "contentsRaw": "Styles the top app bar to be dense.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L30", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar as a fixed top app bar.

    \n" + ], + "contentsRaw": "Styles the top app bar as a fixed top app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "fixed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L22", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L34", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Emits when the navigation icon is clicked.

    \n" + ], + "contentsRaw": "Emits when the navigation icon is clicked.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onNav", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L20", + "type": "undefined | (evt: TopAppBarOnNavEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar as a prominent top app bar.

    \n" + ], + "contentsRaw": "Styles the top app bar as a prominent top app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "prominent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L24", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Set a scrollTarget other than the window when you are using the TopAppBar inside of a nested scrolling DOM Element. Please note that you should store your scrollTarget in a stateful variable. See example https://codesandbox.io/s/reverent-austin-16zzi.

    \n" + ], + "contentsRaw": "Set a scrollTarget other than the window when you are using the TopAppBar inside of a nested scrolling DOM Element. Please note that you should store your scrollTarget in a stateful variable. See example https://codesandbox.io/s/reverent-austin-16zzi.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "scrollTarget", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L32", + "type": "Element | null" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar as a short top app bar.

    \n" + ], + "contentsRaw": "Styles the top app bar as a short top app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "short", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L26", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar to always be collapsed.

    \n" + ], + "contentsRaw": "Styles the top app bar to always be collapsed.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "shortCollapsed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L28", + "type": "undefined | false | true" + } + ] + }, + "SimpleTopAppBarProps": { + "documentation": { + "contents": [ + "

    A simplified syntax for creating an AppBar.

    \n" + ], + "contentsRaw": "A simplified syntax for creating an AppBar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "SimpleTopAppBarProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L90", + "extends": [ + "TopAppBarProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    An array of props that will be used to create TopAppBarActionItems.

    \n" + ], + "contentsRaw": "An array of props that will be used to create TopAppBarActionItems.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "actionItems", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L94", + "type": "Object[]" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar to be dense.

    \n" + ], + "contentsRaw": "Styles the top app bar to be dense.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L30", + "inheritedFrom": "TopAppBarProps.dense", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Additional content to place in the end section.

    \n" + ], + "contentsRaw": "Additional content to place in the end section.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "endContent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L100", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar as a fixed top app bar.

    \n" + ], + "contentsRaw": "Styles the top app bar as a fixed top app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "fixed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L22", + "inheritedFrom": "TopAppBarProps.fixed", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L34", + "inheritedFrom": "TopAppBarProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Props for the NavigationIcon, which is an instance of the Icon component. You can also set this to true and use the onNav prop to handle interactions.

    \n" + ], + "contentsRaw": "Props for the NavigationIcon, which is an instance of the Icon component. You can also set this to `true` and use the `onNav` prop to handle interactions.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "navigationIcon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L96", + "type": "Object | boolean" + }, + { + "documentation": { + "contents": [ + "

    Emits when the navigation icon is clicked.

    \n" + ], + "contentsRaw": "Emits when the navigation icon is clicked.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onNav", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L20", + "inheritedFrom": "TopAppBarProps.onNav", + "type": "undefined | (evt: TopAppBarOnNavEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar as a prominent top app bar.

    \n" + ], + "contentsRaw": "Styles the top app bar as a prominent top app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "prominent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L24", + "inheritedFrom": "TopAppBarProps.prominent", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Set a scrollTarget other than the window when you are using the TopAppBar inside of a nested scrolling DOM Element. Please note that you should store your scrollTarget in a stateful variable. See example https://codesandbox.io/s/reverent-austin-16zzi.

    \n" + ], + "contentsRaw": "Set a scrollTarget other than the window when you are using the TopAppBar inside of a nested scrolling DOM Element. Please note that you should store your scrollTarget in a stateful variable. See example https://codesandbox.io/s/reverent-austin-16zzi.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "scrollTarget", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L32", + "inheritedFrom": "TopAppBarProps.scrollTarget", + "type": "Element | null" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar as a short top app bar.

    \n" + ], + "contentsRaw": "Styles the top app bar as a short top app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "short", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L26", + "inheritedFrom": "TopAppBarProps.short", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Styles the top app bar to always be collapsed.

    \n" + ], + "contentsRaw": "Styles the top app bar to always be collapsed.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "shortCollapsed", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L28", + "inheritedFrom": "TopAppBarProps.shortCollapsed", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Additional content to place in the start section.

    \n" + ], + "contentsRaw": "Additional content to place in the start section.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "startContent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L98", + "type": "React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    The title for the App Bar.

    \n" + ], + "contentsRaw": "The title for the App Bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "title", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L92", + "type": "React.ReactNode" + } + ] + }, + "TopAppBarRowProps": { + "documentation": { + "contents": [ + "

    A row for the app bar.

    \n" + ], + "contentsRaw": "A row for the app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TopAppBarRowProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L148", + "methods": [], + "properties": [] + }, + "TopAppBarSectionProps": { + "documentation": { + "contents": [ + "

    A section for the app bar.

    \n" + ], + "contentsRaw": "A section for the app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TopAppBarSectionProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L159", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Aligns the section to the end.

    \n" + ], + "contentsRaw": "Aligns the section to the end.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "alignEnd", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L163", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Aligns the section to the start.

    \n" + ], + "contentsRaw": "Aligns the section to the start.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "alignStart", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L161", + "type": "undefined | false | true" + } + ] + }, + "TopAppBarNavigationIconProps": { + "documentation": { + "contents": [ + "

    A navigation icon for the top app bar. This is an instance of the Icon component.

    \n" + ], + "contentsRaw": "A navigation icon for the top app bar. This is an instance of the Icon component.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TopAppBarNavigationIconProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L182", + "extends": [ + "IconButtonProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Controls the on / off state of the a toggleable button.

    \n" + ], + "contentsRaw": "Controls the on / off state of the a toggleable button.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "checked", + "inheritedFrom": "IconButtonProps.checked", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Makes the button disabled

    \n" + ], + "contentsRaw": "Makes the button disabled", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "inheritedFrom": "IconButtonProps.disabled", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation. Only for Toggleable buttons.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation. Only for Toggleable buttons.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "inheritedFrom": "IconButtonProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Icon for the button

    \n" + ], + "contentsRaw": "Icon for the button", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "IconButtonProps.icon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Apply an aria label.

    \n" + ], + "contentsRaw": "Apply an aria label.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "inheritedFrom": "IconButtonProps.label", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    An onChange callback that receives a custom event. evt.detail = { isOn: boolean }

    \n" + ], + "contentsRaw": "An onChange callback that receives a custom event. evt.detail = { isOn: boolean }", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onChange", + "inheritedFrom": "IconButtonProps.onChange", + "type": "undefined | (evt: IconButtonOnChangeEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    If specified, renders a toggle with this icon as the on state.

    \n" + ], + "contentsRaw": "If specified, renders a toggle with this icon as the on state.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onIcon", + "inheritedFrom": "IconButtonProps.onIcon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + } + ] + }, + "TopAppBarActionItemProps": { + "documentation": { + "contents": [ + "

    Action items for the top app bar. This is an instance of the Icon component.

    \n" + ], + "contentsRaw": "Action items for the top app bar. This is an instance of the Icon component.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TopAppBarActionItemProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L193", + "extends": [ + "IconButtonProps" + ], + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Controls the on / off state of the a toggleable button.

    \n" + ], + "contentsRaw": "Controls the on / off state of the a toggleable button.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "checked", + "inheritedFrom": "IconButtonProps.checked", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Makes the button disabled

    \n" + ], + "contentsRaw": "Makes the button disabled", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "disabled", + "inheritedFrom": "IconButtonProps.disabled", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Advanced: A reference to the MDCFoundation. Only for Toggleable buttons.

    \n" + ], + "contentsRaw": "Advanced: A reference to the MDCFoundation. Only for Toggleable buttons.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "foundationRef", + "inheritedFrom": "IconButtonProps.foundationRef", + "type": "React.Ref" + }, + { + "documentation": { + "contents": [ + "

    Icon for the button

    \n" + ], + "contentsRaw": "Icon for the button", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "inheritedFrom": "IconButtonProps.icon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Apply an aria label.

    \n" + ], + "contentsRaw": "Apply an aria label.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "label", + "inheritedFrom": "IconButtonProps.label", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    An onChange callback that receives a custom event. evt.detail = { isOn: boolean }

    \n" + ], + "contentsRaw": "An onChange callback that receives a custom event. evt.detail = { isOn: boolean }", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onChange", + "inheritedFrom": "IconButtonProps.onChange", + "type": "undefined | (evt: IconButtonOnChangeEventT) => void" + }, + { + "documentation": { + "contents": [ + "

    If specified, renders a toggle with this icon as the on state.

    \n" + ], + "contentsRaw": "If specified, renders a toggle with this icon as the on state.", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/icon-button/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "onIcon", + "inheritedFrom": "IconButtonProps.onIcon", + "type": "RMWC.IconPropT" + }, + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/top-app-bar/node_modules/@rmwc/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "inheritedFrom": "WithRippleProps.ripple", + "type": "RipplePropT" + } + ] + }, + "TopAppBarTitleProps": { + "documentation": { + "contents": [ + "

    A title for the top app bar.

    \n" + ], + "contentsRaw": "A title for the top app bar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TopAppBarTitleProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L204", + "methods": [], + "properties": [] + }, + "TopAppBarFixedAdjustProps": { + "documentation": { + "contents": [ + "

    An optional component to fill the space when the TopAppBar is fixed. Place it directly after the TopAppBar.

    \n" + ], + "contentsRaw": "An optional component to fill the space when the TopAppBar is fixed. Place it directly after the TopAppBar.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TopAppBarFixedAdjustProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L215", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Class used to style the content below the dense top app bar to prevent the top app bar from covering it.

    \n" + ], + "contentsRaw": "Class used to style the content below the dense top app bar to prevent the top app bar from covering it.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "dense", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L217", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Class used to style the content below the top app bar when styled as both prominent and dense, to prevent the top app bar from covering it.

    \n" + ], + "contentsRaw": "Class used to style the content below the top app bar when styled as both prominent and dense, to prevent the top app bar from covering it.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "denseProminent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L221", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Class used to style the content below the prominent top app bar to prevent the top app bar from covering it.

    \n" + ], + "contentsRaw": "Class used to style the content below the prominent top app bar to prevent the top app bar from covering it.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "prominent", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L219", + "type": "undefined | false | true" + }, + { + "documentation": { + "contents": [ + "

    Class used to style the content below the short top app bar to prevent the top app bar from covering it.

    \n" + ], + "contentsRaw": "Class used to style the content below the short top app bar to prevent the top app bar from covering it.", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "short", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L223", + "type": "undefined | false | true" + } + ] + }, + "TopAppBarOnNavEventT": { + "documentation": { + "contents": [ + "

    Events

    \n" + ], + "contentsRaw": "Events", + "metadata": {} + }, + "fileName": "src/top-app-bar/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "TopAppBarOnNavEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/top-app-bar/index.tsx#L12", + "type": "RMWC.CustomEventT<{}>" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/index.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/index.tsx new file mode 100644 index 00000000..ad43a676 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/index.tsx @@ -0,0 +1,241 @@ +import * as RMWC from '../types'; +import React from 'react'; +import { MDCTopAppBarFoundation } from '@material/top-app-bar'; +import { useClassNames, Tag, createComponent } from '../base'; +import { IconButton, IconButtonProps } from '../icon-button'; +import { useTopAppBarFoundation } from './foundation'; + +/********************************************************************* + * Events + *********************************************************************/ + +export type TopAppBarOnNavEventT = RMWC.CustomEventT<{}>; + +/********************************************************************* + * TopAppBar + *********************************************************************/ + +export interface TopAppBarProps { + /** Emits when the navigation icon is clicked. */ + onNav?: (evt: TopAppBarOnNavEventT) => void; + /** Styles the top app bar as a fixed top app bar. */ + fixed?: boolean; + /** Styles the top app bar as a prominent top app bar. */ + prominent?: boolean; + /** Styles the top app bar as a short top app bar. */ + short?: boolean; + /** Styles the top app bar to always be collapsed. */ + shortCollapsed?: boolean; + /** Styles the top app bar to be dense. */ + dense?: boolean; + /** Set a scrollTarget other than the window when you are using the TopAppBar inside of a nested scrolling DOM Element. Please note that you should store your scrollTarget in a stateful variable. See example https://codesandbox.io/s/reverent-austin-16zzi.*/ + scrollTarget?: Element | null; + /** Advanced: A reference to the MDCFoundation. */ + foundationRef?: React.Ref; +} + +/** A TopAppBar component */ +export const TopAppBar = createComponent(function TopAppBar( + props, + ref +) { + return ( + + ); +}); + +const TopAppBarBase = createComponent(function TopAppBarBase( + props, + ref +) { + const { rootEl } = useTopAppBarFoundation(props); + const { + onNav, + scrollTarget, + fixed, + prominent, + short, + shortCollapsed, + dense, + foundationRef, + ...rest + } = props; + const className = useClassNames(props, [ + 'mdc-top-app-bar', + { + 'mdc-top-app-bar--fixed': fixed, + 'mdc-top-app-bar--prominent': prominent, + 'mdc-top-app-bar--short': short || shortCollapsed, + 'mdc-top-app-bar--short-collapsed': shortCollapsed, + 'mdc-top-app-bar--dense': dense + } + ]); + + return ( + + ); +}); + +/** A simplified syntax for creating an AppBar. */ +export interface SimpleTopAppBarProps extends TopAppBarProps { + /** The title for the App Bar. */ + title?: React.ReactNode; + /** An array of props that will be used to create TopAppBarActionItems. */ + actionItems?: Object[]; + /** Props for the NavigationIcon, which is an instance of the Icon component. You can also set this to `true` and use the `onNav` prop to handle interactions.*/ + navigationIcon?: Object | boolean; + /** Additional content to place in the start section. */ + startContent?: React.ReactNode; + /** Additional content to place in the end section. */ + endContent?: React.ReactNode; +} + +/** A simplified syntax for creating an AppBar. */ +export const SimpleTopAppBar = createComponent( + function SimpleTopAppBar(props, ref) { + const { + title, + actionItems, + navigationIcon, + startContent, + endContent, + ...rest + } = props; + return ( + + + + {!!navigationIcon && ( + + )} + {!!title && {title}} + {startContent} + + + {(!!actionItems || endContent) && ( + + {endContent} + {!!actionItems && + actionItems.map((actionItemProps, index) => ( + + ))} + + )} + + + ); + } +); + +/********************************************************************* + * Bits + *********************************************************************/ + +/** A row for the app bar. */ +export interface TopAppBarRowProps {} + +/** A row for the app bar. */ +export const TopAppBarRow = createComponent( + function TopAppBarRow(props, ref) { + const className = useClassNames(props, ['mdc-top-app-bar__row']); + return ; + } +); + +/** A section for the app bar. */ +export interface TopAppBarSectionProps { + /** Aligns the section to the start. */ + alignStart?: boolean; + /** Aligns the section to the end. */ + alignEnd?: boolean; +} + +/** A section for the app bar. */ +export const TopAppBarSection = createComponent( + function TopAppBarSection(props, ref) { + const { alignStart, alignEnd, ...rest } = props; + const className = useClassNames(props, [ + 'mdc-top-app-bar__section', + { + 'mdc-top-app-bar__section--align-start': alignStart, + 'mdc-top-app-bar__section--align-end': alignEnd + } + ]); + return ; + } +); + +/** A navigation icon for the top app bar. This is an instance of the Icon component. */ +export interface TopAppBarNavigationIconProps extends IconButtonProps {} + +/** A navigation icon for the top app bar. This is an instance of the IconButton component. */ +export const TopAppBarNavigationIcon = createComponent< + TopAppBarNavigationIconProps +>(function TopAppBarNavigationIcon(props, ref) { + const className = useClassNames(props, ['mdc-top-app-bar__navigation-icon']); + return ; +}); + +/** Action items for the top app bar. This is an instance of the Icon component.*/ +export interface TopAppBarActionItemProps extends IconButtonProps {} + +/** Action items for the top app bar. This is an instance of the IconButton component.*/ +export const TopAppBarActionItem = createComponent( + function TopAppBarActionItem(props, ref) { + const className = useClassNames(props, ['mdc-top-app-bar__action-item']); + return ; + } +); + +/** A title for the top app bar. */ +export interface TopAppBarTitleProps {} + +/** A title for the top app bar. */ +export const TopAppBarTitle = createComponent( + function TopAppBarTitle(props, ref) { + const className = useClassNames(props, ['mdc-top-app-bar__title']); + return ; + } +); + +/** An optional component to fill the space when the TopAppBar is fixed. Place it directly after the TopAppBar. */ +export interface TopAppBarFixedAdjustProps { + /** Class used to style the content below the dense top app bar to prevent the top app bar from covering it. */ + dense?: boolean; + /** Class used to style the content below the prominent top app bar to prevent the top app bar from covering it. */ + prominent?: boolean; + /** Class used to style the content below the top app bar when styled as both prominent and dense, to prevent the top app bar from covering it. */ + denseProminent?: boolean; + /** Class used to style the content below the short top app bar to prevent the top app bar from covering it. */ + short?: boolean; +} + +/** An optional component to fill the space when the TopAppBar is fixed. Place it directly after the TopAppBar. */ +export const TopAppBarFixedAdjust = createComponent( + function TopAppBarFixedAdjust(props, ref) { + const { dense, denseProminent, prominent, short, ...rest } = props; + const className = useClassNames(props, [ + { + 'mdc-top-app-bar--fixed-adjust': !props.dense && !props.denseProminent && !props.prominent && !props.short, + 'mdc-top-app-bar--dense-fixed-adjust': props.dense, + 'mdc-top-app-bar--prominent-fixed-adjust': props.prominent, + 'mdc-top-app-bar--dense-prominent-fixed-adjust': props.denseProminent, + 'mdc-top-app-bar--short-fixed-adjust': props.short + } + ]); + return ; + } +); diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx new file mode 100644 index 00000000..e982ead5 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx @@ -0,0 +1,4 @@ +import '@material/top-app-bar/dist/mdc.top-app-bar.css'; +import '@rmwc/icon-button/styles'; +import '@rmwc/ripple/styles'; +import '@rmwc/icon/styles'; diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx new file mode 100644 index 00000000..ca970c0f --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx @@ -0,0 +1,36 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; + +import { + TopAppBar, + TopAppBarRow, + TopAppBarSection, + TopAppBarNavigationIcon, + TopAppBarActionItem, + TopAppBarTitle +} from './'; + +describe('TopAppBar SSR', () => { + test('renders', () => { + mount( + + + + + Title + + + + + + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx new file mode 100644 index 00000000..31bea22f --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx @@ -0,0 +1,148 @@ +import React from 'react'; +import { mount } from 'enzyme'; + +import { + TopAppBar, + TopAppBarRow, + TopAppBarSection, + TopAppBarNavigationIcon, + TopAppBarActionItem, + TopAppBarTitle, + TopAppBarFixedAdjust, + SimpleTopAppBar +} from './'; + +describe('TopAppBar', () => { + test('renders', () => { + mount( + + + + + Title + + + + + + + ); + }); + + test('can be fixed', () => { + const el = mount( +
    + + + + +
    + ); + expect(el.html().includes('mdc-top-app-bar--fixed')).toBe(true); + }); + + test('can be prominent', () => { + const el = mount( + + + + ); + expect(el.html().includes('mdc-top-app-bar--prominent')).toBe(true); + }); + + test('can be short', () => { + const el = mount( + + + + ); + expect(el.html().includes('mdc-top-app-bar--short')).toBe(true); + }); + + test('can be dense', () => { + const el = mount( + + + + ); + expect(el.html().includes('mdc-top-app-bar--dense')).toBe(true); + }); + + test('can be shortCollapsed', () => { + const el = mount( + + + + ); + expect(el.html().includes('mdc-top-app-bar--short-collapsed')).toBe(true); + }); + + test('SimpleTopAppBar', () => { + const el = mount( + + ); + + mount( + + ); + // has title + expect(el.html().includes('TestTitle')).toBe(true); + + // has the navigation icon + expect(el.html().includes('mdc-top-app-bar__navigation-icon')).toBe(true); + + // has content + expect(el.html().includes('TestStartContent')).toBe(true); + expect(el.html().includes('TestEndContent')).toBe(true); + + // has action item + expect(el.html().includes('star_outline')).toBe(true); + }); +}); + +describe('TopAppBarFixedAdjust', () => { + it('renders', () => { + const el = mount(); + const div = el.find('div'); + const classNames = new Set((div.props().className ?? "").split(" ")); + expect(classNames).toEqual(new Set(['mdc-top-app-bar--fixed-adjust'])); + }); + + it('can be short', () => { + const el = mount(); + const div = el.find('div'); + const classNames = new Set((div.props().className ?? "").split(" ")); + expect(classNames).toEqual(new Set(['mdc-top-app-bar--short-fixed-adjust'])); + }); + + it('can be dense', () => { + const el = mount(); + const div = el.find('div'); + const classNames = new Set((div.props().className ?? "").split(" ")); + expect(classNames).toEqual(new Set(['mdc-top-app-bar--dense-fixed-adjust'])); + }); + + it('can be prominent', () => { + const el = mount(); + const div = el.find('div'); + const classNames = new Set((div.props().className ?? "").split(" ")); + expect(classNames).toEqual(new Set(['mdc-top-app-bar--prominent-fixed-adjust'])); + }); + + it('can be denseProminent', () => { + const el = mount(); + const div = el.find('div'); + const classNames = new Set((div.props().className ?? "").split(" ")); + expect(classNames).toEqual(new Set(['mdc-top-app-bar--dense-prominent-fixed-adjust'])); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx new file mode 100644 index 00000000..5e8386f1 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx @@ -0,0 +1,98 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { action } from '@storybook/addon-actions'; + +// import { +// TopAppBar, +// TopAppBarRow, +// TopAppBarSection, +// TopAppBarNavigationIcon, +// TopAppBarActionItem, +// TopAppBarTitle, +// SimpleTopAppBar, +// TopAppBarProps +// } from './'; + +// const TopAppBarStory = (props: TopAppBarProps) => ( +//
    +// +// +// +// menu +// Title +// +// +// +// file_download +// +// +// print +// +// +// bookmark +// +// +// +// +//
    +//
    +// ); + +// function NestedTopAppBar() { +// const [el, setEl] = React.useState(null); + +// return ( +//
    setEl(el)} +// style={{ +// padding: '4rem', +// height: '300px', +// boxSizing: 'border-box', +// background: 'red', +// overflowY: 'auto' +// }} +// > +// +//
    +// ); +// } + +// storiesOf('TopAppBar', module) +// .add('standard', () => ( +//
    +// +// +// +// +// +// +// +//
    +//
    +// )) +// .add('fixed', () => ) +// .add('dense', () => ) +// .add('short', () => ) +// .add('shortCollapsed', () => ) +// .add('prominent', () => ) +// .add('nested', () => ) +// .add('SimpleTopAppBar', () => ( +//
    +// console.log('Navigate') }} +// actionItems={[ +// { onClick: () => console.log('Do Something'), use: 'file_download' }, +// { onClick: () => console.log('Do Something'), use: 'print' }, +// { onClick: () => console.log('Do Something'), use: 'bookmark' } +// ]} +// /> +//
    +// )); diff --git a/packages/mc-react-ui-components/src/lib/types/generated-examples.json b/packages/mc-react-ui-components/src/lib/types/generated-examples.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/types/generated-examples.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/types/generated-props.json b/packages/mc-react-ui-components/src/lib/types/generated-props.json new file mode 100644 index 00000000..30278243 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/types/generated-props.json @@ -0,0 +1,444 @@ +{ + "npm": {}, + "typescript": { + "WithRippleProps": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "WithRippleProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L46", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    Adds a ripple effect to the component

    \n" + ], + "contentsRaw": "Adds a ripple effect to the component", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "ripple", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L48", + "type": "RipplePropT" + } + ] + }, + "IconOptions": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "IconOptions", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L70", + "indexSignature": { + "documentation": { + "contents": [ + "

    Additional props

    \n" + ], + "contentsRaw": "Additional props", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "kind": "signature", + "name": "__index", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L96", + "parameters": [ + { + "flags": { + "isExported": false, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "parameter", + "name": "key", + "type": "string" + } + ], + "returnType": "any", + "type": "{ [key: string]: any }" + }, + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    A base className for the icon namespace, i.e. material-icons.

    \n" + ], + "contentsRaw": "A base className for the icon namespace, i.e. material-icons.", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "basename", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L89", + "type": "undefined | string" + }, + { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "icon", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L71", + "type": "IconElementT" + }, + { + "documentation": { + "contents": [ + "

    A className prefix to use when using css font icons that use prefixes,\ni.e. font-awesome-, ion-, glyphicons-.\nThis only applies when using the 'className' strategy.

    \n" + ], + "contentsRaw": "A className prefix to use when using css font icons that use prefixes,\ni.e. font-awesome-, ion-, glyphicons-.\nThis only applies when using the 'className' strategy.", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "prefix", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L87", + "type": "undefined | string" + }, + { + "documentation": { + "contents": [ + "

    A render function to use when using the 'custom' strategy.

    \n" + ], + "contentsRaw": "A render function to use when using the 'custom' strategy.", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "render", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L91", + "type": "undefined | (props: ) => React.ReactNode" + }, + { + "documentation": { + "contents": [ + "

    A size to render the icon

    \n" + ], + "contentsRaw": "A size to render the icon", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "size", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L96", + "type": "IconSizeT" + }, + { + "documentation": { + "contents": [ + "

    Handle multiple methods of embedding an icon.\n'ligature' uses ligature style embedding like material-icons,\n'className' adds a class onto the element for libraries like glyphicons and ion icons,\n'url' will load a remote image, and\n'component' will render content as children like SVGs or any other React node.\n'custom' allows you to specify your own render prop.\nIf not set, 'auto' will be used or the defaults set inside of RMWCProvider.

    \n" + ], + "contentsRaw": "Handle multiple methods of embedding an icon.\n'ligature' uses ligature style embedding like material-icons,\n'className' adds a class onto the element for libraries like glyphicons and ion icons,\n'url' will load a remote image, and\n'component' will render content as children like SVGs or any other React node.\n'custom' allows you to specify your own render prop.\nIf not set, 'auto' will be used or the defaults set inside of RMWCProvider.", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": true, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "strategy", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L81", + "type": "IconStrategyT" + } + ] + }, + "ThemeOptionT": { + "documentation": { + "contents": [ + "

    Theming

    \n" + ], + "contentsRaw": "Theming", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "ThemeOptionT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L4", + "type": "\"primary\" | \"secondary\" | \"background\" | \"surface\" | \"error\" | \"primaryBg\" | \"secondaryBg\" | \"onPrimary\" | \"onSecondary\" | \"onSurface\" | \"onError\" | \"textPrimaryOnBackground\" | \"textSecondaryOnBackground\" | \"textHintOnBackground\" | \"textDisabledOnBackground\" | \"textIconOnBackground\" | \"textPrimaryOnLight\" | \"textSecondaryOnLight\" | \"textHintOnLight\" | \"textDisabledOnLight\" | \"textIconOnLight\" | \"textPrimaryOnDark\" | \"textSecondaryOnDark\" | \"textHintOnDark\" | \"textDisabledOnDark\" | \"textIconOnDark\" | undefined" + }, + "ThemePropT": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "ThemePropT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L33", + "type": "ThemeOptionT | ThemeOptionT[]" + }, + "RipplePropT": { + "documentation": { + "contents": [ + "

    Ripples

    \n" + ], + "contentsRaw": "Ripples", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "RipplePropT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L38", + "type": "boolean | " + }, + "TagT": { + "documentation": { + "contents": [ + "

    Components

    \n" + ], + "contentsRaw": "Components", + "metadata": {} + }, + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "TagT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L54", + "type": "string | React.ComponentType" + }, + "CustomEventT": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "CustomEventT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L56", + "type": "CustomEvent & SyntheticEvent" + }, + "IconSizeT": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "IconSizeT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L60", + "type": "\"xsmall\" | \"small\" | \"medium\" | \"large\" | \"xlarge\"" + }, + "IconStrategyT": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "IconStrategyT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L62", + "type": "\"auto\" | \"ligature\" | \"className\" | \"url\" | \"component\" | \"custom\"" + }, + "IconPropT": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "IconPropT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L101", + "type": "IconElementT | IconOptions" + }, + "HTMLProps": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "HTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L103", + "type": "A & ClassAttributes & " + }, + "ComponentProps": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "ComponentProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L110", + "type": "Props & ElementProps | ComponentPropsWithRef & " + }, + "ComponentType": { + "fileName": "src/types/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "ComponentType", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/types/index.tsx#L123", + "type": "(props: ComponentProps, ref: any) => Element" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/types/index.tsx b/packages/mc-react-ui-components/src/lib/types/index.tsx new file mode 100644 index 00000000..a2a1748b --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/types/index.tsx @@ -0,0 +1,133 @@ +/** + * Theming + */ +export type ThemeOptionT = + | 'primary' + | 'secondary' + | 'background' + | 'surface' + | 'error' + | 'primaryBg' + | 'secondaryBg' + | 'onPrimary' + | 'onSecondary' + | 'onSurface' + | 'onError' + | 'textPrimaryOnBackground' + | 'textSecondaryOnBackground' + | 'textHintOnBackground' + | 'textDisabledOnBackground' + | 'textIconOnBackground' + | 'textPrimaryOnLight' + | 'textSecondaryOnLight' + | 'textHintOnLight' + | 'textDisabledOnLight' + | 'textIconOnLight' + | 'textPrimaryOnDark' + | 'textSecondaryOnDark' + | 'textHintOnDark' + | 'textDisabledOnDark' + | 'textIconOnDark' + | undefined; + +export type ThemePropT = ThemeOptionT | ThemeOptionT[]; + +/** + * Ripples + */ +export type RipplePropT = + | boolean + | { + accent?: boolean; + surface?: boolean; + unbounded?: boolean; + }; + +export interface WithRippleProps { + /** Adds a ripple effect to the component */ + ripple?: RipplePropT; +} + +/** + * Components + */ +export type TagT = string | React.ComponentType; + +export type CustomEventT = CustomEvent & + React.SyntheticEvent; + +type IconElementT = React.ReactNode; +export type IconSizeT = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge'; + +export type IconStrategyT = + | 'auto' + | 'ligature' + | 'className' + | 'url' + | 'component' + | 'custom'; + +export interface IconOptions { + icon: IconElementT; + /** + * Handle multiple methods of embedding an icon. + * 'ligature' uses ligature style embedding like material-icons, + * 'className' adds a class onto the element for libraries like glyphicons and ion icons, + * 'url' will load a remote image, and + * 'component' will render content as children like SVGs or any other React node. + * 'custom' allows you to specify your own render prop. + * If not set, 'auto' will be used or the defaults set inside of RMWCProvider. + * */ + strategy?: IconStrategyT; + /** + * A className prefix to use when using css font icons that use prefixes, + * i.e. font-awesome-, ion-, glyphicons-. + * This only applies when using the 'className' strategy. + **/ + prefix?: string; + /** A base className for the icon namespace, i.e. material-icons. */ + basename?: string; + /** A render function to use when using the 'custom' strategy. */ + render?: (props: { + content: IconElementT; + className: string; + }) => React.ReactNode; + /** A size to render the icon */ + size?: IconSizeT; + /** Additional props */ + [key: string]: any; +} + +export type IconPropT = IconElementT | IconOptions; + +export type HTMLProps> = A & + React.ClassAttributes & { + tag?: TagT; + theme?: ThemePropT; + ref?: React.HTMLProps['ref']; + }; + +export type ComponentProps< + Props extends {}, + ElementProps extends {}, + Tag extends React.ElementType +> = Props & + ( + | ElementProps + | (React.ComponentPropsWithRef & { + tag?: Tag; + theme?: ThemePropT; + }) + ); + +export type ComponentType< + Props, + ElementProps, + Element extends React.ElementType +> = { + = Element>( + props: ComponentProps, + ref: any + ): JSX.Element; + displayName?: string; +}; diff --git a/packages/mc-react-ui-components/src/lib/typography/README.md b/packages/mc-react-ui-components/src/lib/typography/README.md new file mode 100644 index 00000000..a02cbcc5 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/README.md @@ -0,0 +1,76 @@ +# Typography + +Material Design’s text sizes and styles were developed to balance content density and reading comfort under typical usage conditions. + +- Module **@rmwc/typography** +- Import styles: + - Using CSS Loader + - import '@rmwc/typography/styles'; + - Or include stylesheets + - **'@material/typography/dist/mdc.typography.css'** +- MDC Docs: [https://material.io/develop/web/components/typography/](https://material.io/develop/web/components/typography/) + +## Basic Usage + +```jsx +<> + headline1 + headline2 + headline3 + headline4 + headline5 + headline6 + subtitle1 + subtitle2 + body1 + body2 + caption + button + overline + +``` + +```jsx + + headline6 + +``` + +## Provider Setup + +You can globally map specify type classes to HTML tags for semantics, or specify a default to be used instead of `span`. + +```jsx + */ + defaultTag: 'div', + /** Make headline5
    */ + headline5: 'h5', + /** Make body2

    */ + body2: 'p', + /** Use your own component */ + body1: ({ children, ...rest }) => ( + + {children}!!! + + ) + }} +> + Rendered default `div` + Rendered with `h5` + Rendered with `p` + Custom rendering + +``` + +## Typography +The Typography Component + +### Props + +| Name | Type | Description | +|------|------|-------------| +| `use` | `TypographyT` | The typography style. | + + diff --git a/packages/mc-react-ui-components/src/lib/typography/generated-examples.json b/packages/mc-react-ui-components/src/lib/typography/generated-examples.json new file mode 100644 index 00000000..ae1941af --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/generated-examples.json @@ -0,0 +1 @@ +["<>\n headline1\n headline2\n headline3\n headline4\n headline5\n headline6\n subtitle1\n subtitle2\n body1\n body2\n caption\n button\n overline\n","\n headline6\n"," */\n defaultTag: 'div',\n /** Make headline5

    */\n headline5: 'h5',\n /** Make body2

    */\n body2: 'p',\n /** Use your own component */\n body1: ({ children, ...rest }) => (\n \n {children}!!!\n \n )\n }}\n>\n Rendered default `div`\n Rendered with `h5`\n Rendered with `p`\n Custom rendering\n"] \ No newline at end of file diff --git a/packages/mc-react-ui-components/src/lib/typography/generated-props.json b/packages/mc-react-ui-components/src/lib/typography/generated-props.json new file mode 100644 index 00000000..bb5d62cd --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/generated-props.json @@ -0,0 +1,89 @@ +{ + "npm": {}, + "typescript": { + "TypographyProps": { + "documentation": { + "contents": [ + "

    The Typography Component

    \n" + ], + "contentsRaw": "The Typography Component", + "metadata": {} + }, + "fileName": "src/typography/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "interface", + "name": "TypographyProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/typography/index.tsx#L23", + "methods": [], + "properties": [ + { + "documentation": { + "contents": [ + "

    The typography style.

    \n" + ], + "contentsRaw": "The typography style.", + "metadata": {} + }, + "fileName": "src/typography/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "property", + "name": "use", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/typography/index.tsx#L25", + "type": "TypographyT" + } + ] + }, + "TypographyT": { + "fileName": "src/typography/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "TypographyT", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/typography/index.tsx#L7", + "type": "\"headline1\" | \"headline2\" | \"headline3\" | \"headline4\" | \"headline5\" | \"headline6\" | \"subtitle1\" | \"subtitle2\" | \"body1\" | \"body2\" | \"caption\" | \"button\" | \"overline\"" + }, + "TypographyHTMLProps": { + "fileName": "src/typography/index.tsx", + "flags": { + "isExported": true, + "isExternal": false, + "isOptional": false, + "isPrivate": false, + "isProtected": false, + "isPublic": false, + "isRest": false, + "isStatic": false + }, + "kind": "type alias", + "name": "TypographyHTMLProps", + "sourceUrl": "https://github.com/jamesmfriedman/rmwc/blob/master/src/typography/index.tsx#L28", + "type": "RMWC.HTMLProps" + } + } +} diff --git a/packages/mc-react-ui-components/src/lib/typography/index.tsx b/packages/mc-react-ui-components/src/lib/typography/index.tsx new file mode 100644 index 00000000..650ce342 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/index.tsx @@ -0,0 +1,50 @@ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import * as RMWC from '../types'; +import React from 'react'; +import { useProviderContext } from '../provider'; +import { Tag, useClassNames, createComponent } from '../base'; + +export type TypographyT = + | 'headline1' + | 'headline2' + | 'headline3' + | 'headline4' + | 'headline5' + | 'headline6' + | 'subtitle1' + | 'subtitle2' + | 'body1' + | 'body2' + | 'caption' + | 'button' + | 'overline'; + +/** The Typography Component */ +export interface TypographyProps { + /** The typography style.*/ + use: TypographyT; +} + +export type TypographyHTMLProps = RMWC.HTMLProps; + +/** The Typography Component */ +export const Typography = createComponent( + function Typography(props, ref) { + const { use, ...rest } = props; + + const providerContext = useProviderContext(); + + const typographyOptions = providerContext.typography; + + const tag = + typographyOptions?.[use] || typographyOptions?.defaultTag || 'span'; + + const className = useClassNames(props, [ + { + [`mdc-typography--${props.use}`]: props.use + } + ]); + + return ; + } +); diff --git a/packages/mc-react-ui-components/src/lib/typography/styles.tsx b/packages/mc-react-ui-components/src/lib/typography/styles.tsx new file mode 100644 index 00000000..f11d49dd --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/styles.tsx @@ -0,0 +1 @@ +import '@material/typography/dist/mdc.typography.css'; diff --git a/packages/mc-react-ui-components/src/lib/typography/typography-ssr.spec.tsx b/packages/mc-react-ui-components/src/lib/typography/typography-ssr.spec.tsx new file mode 100644 index 00000000..2c47f420 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/typography-ssr.spec.tsx @@ -0,0 +1,12 @@ +/** + * @jest-environment node + */ +import React from 'react'; +import { renderToString as mount } from 'react-dom/server'; +import { Typography } from './'; + +describe('Typography SSR', () => { + it('renders', () => { + mount(); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/typography/typography.spec.tsx b/packages/mc-react-ui-components/src/lib/typography/typography.spec.tsx new file mode 100644 index 00000000..cc51f3b6 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/typography.spec.tsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import { Typography } from './'; +import { RMWCProvider } from '../provider'; + +describe('Typography', () => { + it('renders', () => { + mount(); + }); + + it('can have custom classnames', () => { + const el = mount( + + ); + expect(!!~el.html().search('my-custom-classname')).toEqual(true); + }); + + it('supports refs', () => { + let myRef = null; + mount( + { + myRef = el; + }} + > + Hello + + ); + + expect(myRef).toBeTruthy(); + }); + + it('works with RMWCProvider', () => { + mount( + */ + defaultTag: 'div', + /** Make headline5
    */ + headline5: 'h5', + /** Make body2

    */ + body2: 'p', + /** Use your own component */ + body1: ({ children, ...rest }) => ( + + {children}!!! + + ) + }} + > + Rendered default `div` + Rendered with `h5` + Rendered with `p` + Custom rendering + + ); + + mount( + + Rendered default `div` + + ); + }); +}); diff --git a/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx b/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx new file mode 100644 index 00000000..e6dd7492 --- /dev/null +++ b/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx @@ -0,0 +1,71 @@ +// import React from 'react'; + +// import { storiesOf } from '@storybook/react'; +// import { Typography } from './'; + +// function TypographyRef() { +// const ref1 = React.useRef(null); +// const ref2 = React.useRef(null); + +// React.useEffect(() => { +// console.log('ref1', ref1.current); +// console.log('ref2', ref2.current); +// }); + +// return ( +//

    +// +// Headline +// + +// +// Headline +// +//
    +// ); +// } + +// storiesOf('Typography', module) +// .add('Typography', () => ( +//
    +// +// display4 +// +// +// display3 +// +// +// display2 +// +// +// display1 +// +// +// headline +// +// +// title +// +// +// subheading2 +// +// +// subheading1 +// +// +// body2 +// +// +// body1 +// +// +// caption +// +// +// button +// +//
    +// )) +// .add('Typography REF', () => { +// return ; +// }); diff --git a/packages/mc-react-ui-components/src/react-app-env.d.ts b/packages/mc-react-ui-components/src/react-app-env.d.ts new file mode 100644 index 00000000..6431bc5f --- /dev/null +++ b/packages/mc-react-ui-components/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/mc-react-ui-components/src/setupTests.ts b/packages/mc-react-ui-components/src/setupTests.ts new file mode 100644 index 00000000..df373484 --- /dev/null +++ b/packages/mc-react-ui-components/src/setupTests.ts @@ -0,0 +1,14 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom/extend-expect'; + +import Enzyme from 'enzyme'; +import Adapter from 'enzyme-adapter-react-16'; + +Enzyme.configure({ adapter: new Adapter() }); + +// Mocked as those are used by openlayers +global.URL.createObjectURL = jest.fn(); +HTMLCanvasElement.prototype.getContext = jest.fn(); diff --git a/packages/mc-react-ui-components/tsbuildconfig.json b/packages/mc-react-ui-components/tsbuildconfig.json new file mode 100644 index 00000000..fcb8d0af --- /dev/null +++ b/packages/mc-react-ui-components/tsbuildconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react", + "outDir": "dist", + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "rootDir": "src/lib" + }, + "include": [ + "src" + ], + "exclude": [ + "src/index.tsx", + "**/*.spec.ts", + "**/*.spec.tsx", + "src/setupTests.ts" + ] +} \ No newline at end of file diff --git a/packages/mc-react-ui-components/tsconfig.json b/packages/mc-react-ui-components/tsconfig.json new file mode 100644 index 00000000..a5996bdb --- /dev/null +++ b/packages/mc-react-ui-components/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react" + }, + "include": ["src"] +} + diff --git a/packages/mc-react-ui-components/yarn.lock b/packages/mc-react-ui-components/yarn.lock new file mode 100644 index 00000000..d9f1d0ec --- /dev/null +++ b/packages/mc-react-ui-components/yarn.lock @@ -0,0 +1,10755 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/compat-data@^7.8.4", "@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== + dependencies: + browserslist "^4.9.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" + integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.4.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.8.4", "@babel/generator@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.0.tgz#0f67adea4ec39dad6e63345f70eec33014d78c89" + integrity sha512-onl4Oy46oGCzymOXtKMQpI7VXtCbTSHK1kqBydZ6AmzuNcacEVqGk9tZtAS+48IA9IstZcDCgIg8hQKnb7suRw== + dependencies: + "@babel/types" "^7.9.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" + integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.7" + +"@babel/helper-compilation-targets@^7.8.4", "@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.8.4", "@babel/helpers@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.0.tgz#ab2c1bc4821af766cab51d4868a5038874ea5a12" + integrity sha512-/9GvfYTCG1NWCNwDj9e+XlnSCmWW/r9T794Xi58vPF9WCcnZCAZ0kWLSn54oqP40SUvh1T2G6VwKmFO5AOlW3A== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.8.4", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.0.tgz#f821b32313f07ee570976d3f6238e8d2d66e0a8e" + integrity sha512-Iwyp00CZsypoNJcpXCbq3G4tcDgphtlMwMVrMhhZ//XBkqjXF7LW6V511yk0+pBX3ZwwGnPea+pTKNJiqA7pUg== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@7.8.3", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.8.3", "@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.8.3", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.8.3", "@babel/plugin-transform-classes@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.0.tgz#ab89c175ecf5b4c8911194aa8657966615324ce9" + integrity sha512-xt/0CuBRBsBkqfk95ILxf0ge3gnXjEhOHrNxIiS8fdzSWgecuf9Vq2ogLUfaozJgt3LDO49ThMVWiyezGkei7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz#da705a655466b2a9b36046b57bf0cbcd53551bd4" + integrity sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.8.4", "@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.8.3", "@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.8.3", "@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.8.3", "@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.8.3", "@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.4", "@babel/plugin-transform-parameters@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" + integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== + dependencies: + "@babel/helper-call-delegate" "^7.8.7" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.9.0.tgz#a75abc936a3819edec42d3386d9f1c93f28d9d9e" + integrity sha512-wXMXsToAUOxJuBBEHajqKLFWcCkOSLshTI2ChCFFj1zDd7od4IOxiwLCOObNUvOpkxLpjIuaIdBMmNt6ocCPAw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" + integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-self@^7.8.3", "@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.8.3", "@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.8.3", "@babel/plugin-transform-react-jsx@^7.9.1": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.1.tgz#d03af29396a6dc51bfa24eefd8005a9fd381152a" + integrity sha512-+xIZ6fPoix7h57CNO/ZeYADchg1tFyX9NDsnmNFFua8e1JNPln156mzS+8AQe1On2X2GLlANHJWHIXbMCqWDkQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.3", "@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-runtime@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.8.3.tgz#c0153bc0a5375ebc1f1591cb7eea223adea9f169" + integrity sha512-/vqUt5Yh+cgPZXXjmaG9NT8aVfThKk7G4OqkVhrXqwsC5soMn/qTCxs36rZ2QFhpfTJcjw4SNDIZ4RUb8OL4jQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.0.tgz#8b52649c81cb7dee117f760952ab46675a258836" + integrity sha512-GRffJyCu16H3tEhbt9Q4buVFFBqrgS8FzTuhqSxlXNgmqD8aw2xmwtRwrvWXXlw7gHs664uqacsJymHJ9SUE/Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz#9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e" + integrity sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w== + dependencies: + "@babel/compat-data" "^7.8.4" + "@babel/helper-compilation-targets" "^7.8.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.4" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.3" + browserslist "^4.8.5" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.4.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.3.tgz#23dc63f1b5b0751283e04252e78cf1d6589273d2" + integrity sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.8.3" + "@babel/plugin-transform-react-jsx-self" "^7.8.3" + "@babel/plugin-transform-react-jsx-source" "^7.8.3" + +"@babel/preset-react@^7.0.0": + version "7.9.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.1.tgz#b346403c36d58c3bb544148272a0cefd9c28677a" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.1" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-typescript@7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.8.3.tgz#90af8690121beecd9a75d0cc26c6be39d1595d13" + integrity sha512-qee5LgPGui9zQ0jR1TeU5/fP9L+ovoArklEqY12ek8P/wV5ZeM/VYSQYwICeoT6FfpJTekG9Ilay5PhwsOpMHA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.8.3" + +"@babel/runtime-corejs3@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.0.tgz#0d4119c44ad05bfa0ca16f2f4f91cde430056c08" + integrity sha512-Fe3z3yVZNCUTaOFBAofwkEtFiYi7a7Gg2F5S1QX+mqP403i2iKJtyHJYEp/PV2ijUheT0PiKWbmXcqtwLhmBzg== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.0.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.3.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== + +"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== + +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== + +"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== + +"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== + +"@svgr/babel-plugin-transform-svg-component@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== + +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" + "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" + "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" + "@svgr/babel-plugin-transform-svg-component" "^4.2.0" + +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== + dependencies: + "@svgr/plugin-jsx" "^4.3.3" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" + +"@svgr/hast-util-to-babel-ast@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== + dependencies: + "@babel/types" "^7.4.4" + +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== + dependencies: + "@babel/core" "^7.4.5" + "@svgr/babel-preset" "^4.3.3" + "@svgr/hast-util-to-babel-ast" "^4.3.2" + svg-parser "^2.0.0" + +"@svgr/plugin-svgo@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== + dependencies: + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" + +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-transform-react-constant-elements" "^7.0.0" + "@babel/preset-env" "^7.4.5" + "@babel/preset-react" "^7.0.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" + +"@types/babel__core@^7.1.0": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" + integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" + integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "13.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" + integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^2.10.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" + integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== + dependencies: + "@typescript-eslint/experimental-utils" "2.24.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" + integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@^2.10.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" + integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.24.0" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" + integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@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.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +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== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0, acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +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-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +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.2.0, 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" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +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" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +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.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +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-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +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= + +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +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.6: + 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" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +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@1.4.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" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + 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= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +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.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + dependencies: + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.26" + postcss-value-parser "^4.0.2" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axobject-query@^2.0.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-named-asset-import@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" + integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA== + +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" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +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" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-react-app@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.1.tgz#d1ceb47cbe48b285fdd5c562c54c432ed5a41e0e" + integrity sha512-YkWP2UwY//TLltNlEBRngDOrYhvSLb+CA330G7T9M5UhGEMWe+JK/8IXJc5p2fDTSfSiETf+PY0+PYXFMix81Q== + dependencies: + "@babel/core" "7.8.4" + "@babel/plugin-proposal-class-properties" "7.8.3" + "@babel/plugin-proposal-decorators" "7.8.3" + "@babel/plugin-proposal-numeric-separator" "7.8.3" + "@babel/plugin-transform-flow-strip-types" "7.8.3" + "@babel/plugin-transform-react-display-name" "7.8.3" + "@babel/plugin-transform-runtime" "7.8.3" + "@babel/preset-env" "7.8.4" + "@babel/preset-react" "7.8.3" + "@babel/preset-typescript" "7.8.3" + "@babel/runtime" "7.8.4" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +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" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +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.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +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" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +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== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +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" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.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= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +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" + +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" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.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@4.8.6: + version "4.8.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.6.tgz#96406f3f5f0755d272e27a66f4163ca821590a7e" + integrity sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg== + dependencies: + caniuse-lite "^1.0.30001023" + electron-to-chromium "^1.3.341" + node-releases "^1.1.47" + +browserslist@^4.0.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +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-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +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.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +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= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +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" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001023, caniuse-lite@^1.0.30001035: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +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" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^2.0.2, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +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" + +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" + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.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= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +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" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +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.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +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.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +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= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +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" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^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-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.5.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + +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= + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +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" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0, cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +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" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + 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" + +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: + 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" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +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@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +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.2: + 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.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + 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= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.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.341, electron-to-chromium@^1.3.378: + version "1.3.379" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" + integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== + +elliptic@^6.0.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +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= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +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, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.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@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +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= + +escodegen@^1.11.0, escodegen@^1.9.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.0.tgz#135110ba56a9e378f7acfe5f36e2ae76a2317899" + integrity sha512-WrHjoGpKr1kLLiWDD81tme9jMM0hk5cMxasLSdyno6DdPt+IfLOrDJBVo6jN7tn4y1nzhs43TmUaZWO6Sf0blw== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== + dependencies: + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" + +eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz#82b2bd6f21770e0e5deede0228e456cb35308451" + integrity sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ== + dependencies: + lodash "^4.17.15" + +eslint-plugin-import@2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + +eslint-plugin-jsx-a11y@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-react-hooks@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" + integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== + dependencies: + array-includes "^3.1.1" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.15.1" + semver "^6.3.0" + string.prototype.matchall "^4.0.2" + xregexp "^4.3.0" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== + dependencies: + estraverse "^4.0.0" + +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.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.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" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.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" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +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" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +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" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +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" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +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@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +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-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +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@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +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" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.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" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== + dependencies: + debug "^3.0.0" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, 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= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +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= + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +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= + +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" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.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" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +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.2.7: + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + +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== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +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" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +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" + +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-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.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" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +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@^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-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +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" + isobject "^2.0.0" + +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" + isobject "^3.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" + +has@^1.0.0, 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@^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" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +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" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + +html-minifier-terser@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.4.tgz#e8cc02748acb983bd7912ea9660bd31c0702ec32" + integrity sha512-fHwmKQ+GzhlqdxEtwrqLT7MSuheiA+rif5/dZgbz3GjoMXJzcRzy1L9NXoiiyxrnap+q5guSiv8Tz5lrh9g42g== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@4.0.0-beta.11: + version "4.0.0-beta.11" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" + integrity sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg== + dependencies: + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +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= + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +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" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5, 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== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +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-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +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-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +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-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.0.2, 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-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.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.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +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" + kind-of "^5.0.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" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +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" + 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-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +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, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +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@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +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-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +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== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + +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= + +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= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@24.9.0, jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.1" + jest-regex-util "^24.9.0" + jest-watcher "^24.3.0" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^5.0.0" + +jest-watcher@^24.3.0, jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" + integrity sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +"js-tokens@^3.0.0 || ^4.0.0", 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== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +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-parse-better-errors@^1.0.1, 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.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-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +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= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0, json5@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +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" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +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.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +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" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" + integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +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" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.4.0, lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +loglevel@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== + +loose-envify@^1.0.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.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" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +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" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-deep@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" + integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + 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" + +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +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@3.0.4, 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.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" + +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.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.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.1: + 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" + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== + dependencies: + minimist "^1.2.5" + +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" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +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: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" + integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4.4.2" + +node-releases@^1.1.47, node-releases@^1.1.52: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== + dependencies: + semver "^6.3.0" + +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +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" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-packlist@^1.1.6: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^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" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + 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" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +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= + +nwsapi@^2.0.7, nwsapi@^2.1.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +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" + kind-of "^3.0.3" + +object-hash@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + +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.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.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.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" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +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" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, 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@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" + integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +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@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + 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-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^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" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + 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 "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +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= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +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" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.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.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +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@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +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-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +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.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +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" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.7: + version "2.2.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" + integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== + +pify@^2.0.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= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +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= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +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-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 "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" + +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= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz#e094a9df1783e2200b7b19f875dcad3b3aff8b20" + integrity sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA== + dependencies: + postcss "^7.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" + integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + dependencies: + postcss "^7.0.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + +pretty-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +private@^0.1.8: + 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.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +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@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +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= + +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + 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" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +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: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +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: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + 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" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz#890f8d7f2842ce6073f030b117de9130a5f385f0" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== + dependencies: + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" + +react-dev-utils@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.0.tgz#b11cc48aa2be2502fb3c27a50d1dfa95cfa9dfe0" + integrity sha512-MwrvQW2TFjLblhqpDNeqCXHBkz3G5vc7k4wntgutAJZX4ia3o07eGKo6uYGhUOeJ0hfOxcpJFNFk7+4XCc1S8g== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.8.6" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.6" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-error-overlay@^6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.6.tgz#ac4d9dc4c1b5c536c2c312bf66aa2b09bfa384e2" + integrity sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw== + +react-is@^16.8.1, react-is@^16.8.4: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +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" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.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" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.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.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + 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.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +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" + +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +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= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +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" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +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.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.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" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== + dependencies: + is-promise "^2.1.0" + +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" + +rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +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" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +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: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +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-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +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-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.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= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.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= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + 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" + snapdragon-util "^3.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.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + 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.0, 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== + +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= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +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" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +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" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + 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" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +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" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-width@^1.0.1: + 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" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 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" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +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-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +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-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +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= + +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svg-parser@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +terser-webpack-plugin@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" + integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.2.0" + jest-worker "^25.1.0" + p-limit "^2.2.2" + schema-utils "^2.6.4" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.4.3" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.4.3, terser@^4.6.3: + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +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@^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-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +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" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +ts-pnp@1.1.6, ts-pnp@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" + integrity sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +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= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +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" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +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" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.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" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, 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.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +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" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +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" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack@^1.6.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" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.6" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "12.0.5" + +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-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.42.0: + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +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-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.0, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== + dependencies: + workbox-core "^4.3.1" + +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== + dependencies: + workbox-core "^4.3.1" + +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== + dependencies: + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" + +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== + dependencies: + workbox-core "^4.3.1" + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== + dependencies: + workbox-core "^4.3.1" + +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== + dependencies: + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== + dependencies: + workbox-core "^4.3.1" + +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== + dependencies: + workbox-core "^4.3.1" + +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== + dependencies: + workbox-core "^4.3.1" + +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== + dependencies: + workbox-core "^4.3.1" + +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== + dependencies: + workbox-core "^4.3.1" + +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== + dependencies: + workbox-core "^4.3.1" + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== + dependencies: + "@babel/runtime" "^7.0.0" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" + +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== + dependencies: + workbox-core "^4.3.1" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.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.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xregexp@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0", 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@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + dependencies: + "@babel/runtime" "^7.8.7" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.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 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" diff --git a/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx b/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx index 01cd138b..2afba891 100644 --- a/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx +++ b/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx @@ -66,7 +66,10 @@ export class MWCButton{ classNames.push(`flat${buttonColor[this.color]}`) } } - if(this.dense){ + if(this.stroked){ + classNames.push(`stroked${buttonColor[this.color]}`) + } + if(this.dense){ classNames.push('dense') } if(this.fab){ @@ -78,14 +81,14 @@ export class MWCButton{ return classNames; } componentDidLoad(){ - if(this.ripple){ - const rippleColor = (this.raised && (this.color === 'primary' || this.color === 'secondary')) ? rippleColors.white : rippleColors[this.color] - tmripple.attachToSelectors({ + if(this.ripple){ + const rippleColor = (this.raised && (this.color === 'primary' || this.color === 'secondary')) ? rippleColors.white : rippleColors[this.color] + tmripple.attachToSelectors({ selectors: this.btnEl, color: rippleColor, eventListener: 'mousedown' }); - } + } } renderIcon(){ if(this.icon){ diff --git a/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx b/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx index eda581e4..2b5c444f 100644 --- a/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx +++ b/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx @@ -85,34 +85,34 @@ export class MWCSelect{ render() { return (
    { this.mdcSelect = mdcSelect; }}> -
    -
    Pick a Food Group
    -
    -
    -
    -
    -
      - - {/*
    • - Bread, Cereal, Rice, and Pasta -
    • -
    • - Vegetables -
    • -
    • - Fruit -
    • -
    • - Milk, Yogurt, and Cheese -
    • -
    • - Meat, Poultry, Fish, Dry Beans, Eggs, and Nuts -
    • -
    • - Fats, Oils, and Sweets -
    • */} -
    -
    +
    +
    Pick a Food Group
    +
    +
    +
    +
    +
      + + {/*
    • + Bread, Cereal, Rice, and Pasta +
    • +
    • + Vegetables +
    • +
    • + Fruit +
    • +
    • + Milk, Yogurt, and Cheese +
    • +
    • + Meat, Poultry, Fish, Dry Beans, Eggs, and Nuts +
    • +
    • + Fats, Oils, and Sweets +
    • */} +
    +
    ) diff --git a/yarn.lock b/yarn.lock index 4aedfeec..e1a9844d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1074,6 +1074,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.9.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.0.tgz#f10245877042a815e07f7e693faff0ae9d3a2aac" + integrity sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.10.4", "@babel/template@^7.4.0", "@babel/template@^7.8.6": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" @@ -1115,6 +1122,142 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@commitlint/cli@^9.1.0", "@commitlint/cli@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-9.1.1.tgz#24277e6c1e616191a34a7182a1d3e73369a34f98" + integrity sha512-ye9vUZz8Niv77e5ecBWnA2PnuPF+vYy/3BfSZx8sEaNjozJWUolTk/fuqTsoij3bseZBVObd+cVqZgGk8lfEdw== + dependencies: + "@babel/runtime" "^7.9.6" + "@commitlint/format" "^9.1.1" + "@commitlint/lint" "^9.1.1" + "@commitlint/load" "^9.1.1" + "@commitlint/read" "^9.1.1" + chalk "4.1.0" + core-js "^3.6.1" + get-stdin "7.0.0" + lodash "^4.17.15" + meow "5.0.0" + regenerator-runtime "0.13.5" + resolve-from "5.0.0" + resolve-global "1.0.0" + +"@commitlint/config-conventional@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-9.1.1.tgz#c10e6ff8e56bd462fa33e17522b0f98da97daa39" + integrity sha512-t/bvv8ofjj7V4W99eVDyuACaC7Ch4SYaukglBYt/K1Y9Ixg8mCBuFDMGRMhyZn4upUe1ls8l4SO3rjaVbYIjlg== + dependencies: + conventional-changelog-conventionalcommits "4.3.0" + +"@commitlint/ensure@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-9.1.1.tgz#0143f2c34a27fcd7fb91b7a5029de84a0f416b93" + integrity sha512-dCvev16s7pTqM3Qka8WkWkjZ0lKu3cZ8q+EK34gXR90v7rkssVbPvbyttTfTWTvmQTqZY1zNkvMqbOc8V7pXwA== + dependencies: + "@commitlint/types" "^9.1.1" + lodash "^4.17.15" + +"@commitlint/execute-rule@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-9.1.1.tgz#59bfe018d85545881e4bd1a47f9cd155b2df4c2c" + integrity sha512-kCncHMXfVDfmUx1NExl7T+s7udAWEOh039DFGR9R5MWoy+zm2cJsCdsbWFFuNbcPWCKor57ywdIUN2t048P6Yg== + +"@commitlint/format@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-9.1.1.tgz#a1a48bcdcaca304ff33d40bbf2b787600e47082e" + integrity sha512-CLVXltSA8U7Sr+8ad1hBCFFL5GSdVWZsFgttt1hNT6CiOtPHV9e3AeWK0TACFcXWIl+iFKdRNfNrYM77RBJN0A== + dependencies: + chalk "^4.0.0" + +"@commitlint/is-ignored@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-9.1.1.tgz#1f2683897dab03ec00d363486b4b439791a86927" + integrity sha512-A2ernvkAIfkGh53cNSuuMlTVZyJ58BYbkUw8h34pG0uS/GDteUyh7K3hgRqMmrwoL/DNBEp5earRM6nBYgLX1Q== + dependencies: + "@commitlint/types" "^9.1.1" + semver "7.3.2" + +"@commitlint/lint@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-9.1.1.tgz#c947a1b1a68213488450a4c4ce047e46a45c4699" + integrity sha512-2g2OL8J5dfzH3VY004i506DmRbCJR1W49JbYsTGuTAv1y9f0s8ocV2Wbfh7WJ8YZQabSHXTMZFQJjsvMQ+b0Hw== + dependencies: + "@commitlint/is-ignored" "^9.1.1" + "@commitlint/parse" "^9.1.1" + "@commitlint/rules" "^9.1.1" + "@commitlint/types" "^9.1.1" + +"@commitlint/load@>6.1.1", "@commitlint/load@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-9.1.1.tgz#8b1580ab821729bbe197e95f960e7cee966402ae" + integrity sha512-RCIX44M8nq3bW98vuxA6C2rM0wAnZlneFls2OVi5l2BvD/rsQ2R9CZYwPt/MYU6RbwMmlGhkuHdScwK6pJeUqA== + dependencies: + "@commitlint/execute-rule" "^9.1.1" + "@commitlint/resolve-extends" "^9.1.1" + "@commitlint/types" "^9.1.1" + chalk "4.1.0" + cosmiconfig "^6.0.0" + lodash "^4.17.15" + resolve-from "^5.0.0" + +"@commitlint/message@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-9.1.1.tgz#7621e8f194d676d7d747bfdda49c00ca4d1572df" + integrity sha512-52Li4BNSY55I0fAq1s8cnxIK9Jneozdh4oonLlDzqWvgFq8znsHb9LWmi46K0bsCQT3CRUnMU+GPnikghIMRKQ== + +"@commitlint/parse@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-9.1.1.tgz#ec2b9527eb42725591976bedbed5bccfcde529bd" + integrity sha512-WxvsEi7sMBh8vynamTiHvUOsPOUZ5308pi0gJ5q+DnLY+JPx0Bbxdho9pjyVc3S0bymPCbOrk2gTIbmaTokIRQ== + dependencies: + conventional-changelog-angular "^5.0.0" + conventional-commits-parser "^3.0.0" + +"@commitlint/read@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-9.1.1.tgz#de20c32e9f7020ecaf1601c5e06a83c74464b161" + integrity sha512-cg75klW1WNBAJZABxacf2FhxAlP0di7xs/wuTqPNq0OTpblhY5s2BoS7eO0UlQi1K14Unx7b9+Sb7sjuE9Viyw== + dependencies: + "@commitlint/top-level" "^9.1.1" + fs-extra "^8.1.0" + git-raw-commits "^2.0.0" + +"@commitlint/resolve-extends@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-9.1.1.tgz#8ce703fcd2426ab1f5449906442267e18c995430" + integrity sha512-IxxNaSUT+dPhSCQPAMpQyHQlcSVikDxQWJFP6uwGJUU5rQff+0yQTuC3taWI2NWaATukjNWboAbH2vgBDnrDrg== + dependencies: + import-fresh "^3.0.0" + lodash "^4.17.15" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@commitlint/rules@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-9.1.1.tgz#21165c9dc8621a52fa57eec9a66e01c83ec58f90" + integrity sha512-QicTJ9v4g8WbJ71gu2ypvbdEP6Q+cJYlLPrb6ilNhtOMCyn6ndXSlCMpcQNw84d9ORyd28okzhDZZBSqX5hslg== + dependencies: + "@commitlint/ensure" "^9.1.1" + "@commitlint/message" "^9.1.1" + "@commitlint/to-lines" "^9.1.1" + "@commitlint/types" "^9.1.1" + +"@commitlint/to-lines@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-9.1.1.tgz#882631657ea4e14aea8600e7d48c4fbfb3e63c2d" + integrity sha512-JFKfpehPL3Qrlo6DpIsuJvdtR1wSjdbXD3liphvFTAFWo64yYC/jmnTdy0UqWIhrV1jcxP1LzNejIuRt6hsCXQ== + +"@commitlint/top-level@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-9.1.1.tgz#5b825515381d70972189e549b0a9d57542afe996" + integrity sha512-pIgAbGqHbOunTGiUzBPhIKfXrTWdCrVwsimECXy/If5XaZ3GHhxiiA7BxsWFlAN1UZ6PgVMPgymKU0kx2D5A/w== + dependencies: + find-up "^4.0.0" + +"@commitlint/types@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-9.1.1.tgz#d97ebc35d20eed6d8458361cbca5c7cb85d45184" + integrity sha512-SXY8bCQ1qacJ8AUTUxjabY8G6OjSmMPLN9MBCzGaKOjpPNX6z8zbXTbk9oU3GHZLtcxweWLCi2n49IRS4iQlwg== + "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" @@ -2816,7 +2959,7 @@ pretty-format "^24.0.0" redent "^3.0.0" -"@testing-library/react@^9.3.2": +"@testing-library/react@^9.3.2", "@testing-library/react@^9.5.0": version "9.5.0" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e" integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== @@ -2825,7 +2968,7 @@ "@testing-library/dom" "^6.15.0" "@types/testing-library__react" "^9.1.2" -"@testing-library/user-event@^7.1.2": +"@testing-library/user-event@^7.1.2", "@testing-library/user-event@^7.2.1": version "7.2.1" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-7.2.1.tgz#2ad4e844175a3738cb9e7064be5ea070b8863a1c" integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== @@ -2988,7 +3131,7 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^24.0.0": +"@types/jest@^24.0.0", "@types/jest@^24.9.1": version "24.9.1" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== @@ -3000,6 +3143,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -3015,7 +3163,7 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.26.tgz#22a3b8a46510da8944b67bfc27df02c34a35331c" integrity sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA== -"@types/node@^12.0.0": +"@types/node@^12.0.0", "@types/node@^12.12.44": version "12.12.53" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.53.tgz#be0d375933c3d15ef2380dafb3b0350ea7021129" integrity sha512-51MYTDTyCziHb70wtGNFRwB4l+5JNvdqzFSkbDvpbftEgVUBEE+T5f7pROhWMp/fxp07oNIEQZd5bbfAH22ohQ== @@ -3049,7 +3197,7 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/react-dom@*", "@types/react-dom@^16.9.0": +"@types/react-dom@*", "@types/react-dom@^16.9.0", "@types/react-dom@^16.9.8": version "16.9.8" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== @@ -3078,6 +3226,14 @@ "@types/prop-types" "*" csstype "^2.2.0" +"@types/react@^16.9.35": + version "16.9.44" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.44.tgz#da84b179c031aef67dc92c33bd3401f1da2fa3bc" + integrity sha512-BtLoJrXdW8DVZauKP+bY4Kmiq7ubcJq+H/aCpRfvPF7RAT3RwR73Sg8szdc2YasbAlWBDrQ6Q+AFM0KwtQY+WQ== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -3149,6 +3305,18 @@ regexpp "^3.0.0" tsutils "^3.17.1" +"@typescript-eslint/eslint-plugin@^3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz#d144c49a9a0ffe8dd704bb179c243df76c111bc9" + integrity sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg== + dependencies: + "@typescript-eslint/experimental-utils" "3.7.1" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + "@typescript-eslint/experimental-utils@2.34.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" @@ -3159,6 +3327,17 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" +"@typescript-eslint/experimental-utils@3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz#ab036caaed4c870d22531d41f9352f3147364d61" + integrity sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.7.1" + "@typescript-eslint/typescript-estree" "3.7.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + "@typescript-eslint/parser@^2.10.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" @@ -3169,6 +3348,22 @@ "@typescript-eslint/typescript-estree" "2.34.0" eslint-visitor-keys "^1.1.0" +"@typescript-eslint/parser@^3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.7.1.tgz#5d9ccecb116d12d9c6073e9861c57c9b1aa88128" + integrity sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "3.7.1" + "@typescript-eslint/types" "3.7.1" + "@typescript-eslint/typescript-estree" "3.7.1" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/types@3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.7.1.tgz#90375606b2fd73c1224fe9e397ee151e28fa1e0c" + integrity sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg== + "@typescript-eslint/typescript-estree@2.34.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" @@ -3182,6 +3377,27 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz#ce1ffbd0fa53f34d4ce851a7a364e392432f6eb3" + integrity sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA== + dependencies: + "@typescript-eslint/types" "3.7.1" + "@typescript-eslint/visitor-keys" "3.7.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz#b90191e74efdee656be8c5a30f428ed16dda46d1" + integrity sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA== + dependencies: + eslint-visitor-keys "^1.1.0" + "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" @@ -3401,11 +3617,16 @@ acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.1: +acorn@^7.1.1, acorn@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= + address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -3503,12 +3724,17 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== @@ -3795,6 +4021,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -3850,6 +4081,13 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + axobject-query@^2.0.2: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -4396,6 +4634,11 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" +cachedir@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e" + integrity sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ== + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -4530,6 +4773,14 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3. escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4549,14 +4800,6 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" @@ -4658,7 +4901,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: +classnames@^2.2.5, classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -4694,6 +4937,14 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-truncate@2.1.0, cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -4873,6 +5124,38 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commitizen@^4.0.3: + version "4.1.2" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.1.2.tgz#6095eb825fd3f0d3611df88e6803c69b23307e9a" + integrity sha512-LBxTQKHbVgroMz9ohpm86N+GfJobonGyvDc3zBGdZazbwCLz2tqLa48Rf2TnAdKx7/06W1i1R3SXUt5QW97qVQ== + dependencies: + cachedir "2.2.0" + cz-conventional-changelog "3.2.0" + dedent "0.7.0" + detect-indent "6.0.0" + find-node-modules "2.0.0" + find-root "1.1.0" + fs-extra "8.1.0" + glob "7.1.4" + inquirer "6.5.0" + is-utf8 "^0.2.1" + lodash "4.17.15" + minimist "1.2.5" + strip-bom "4.0.0" + strip-json-comments "3.0.1" + +commitlint@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/commitlint/-/commitlint-9.1.0.tgz#86fa5f3b4eaefa31dcc035faaf4695a9a144e76e" + integrity sha512-ZCMwt116JfKjiIsm1rivqveNnqA3Kkwk8FIwoUws+LuVKo3CDVcowXMX/dJVACPMErLGO16uB5U2VIe5hjmCKw== + dependencies: + "@commitlint/cli" "^9.1.0" + common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -4891,6 +5174,11 @@ compare-func@^1.3.1: array-ify "^1.0.0" dot-prop "^3.0.0" +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -5010,7 +5298,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -conventional-changelog-angular@^5.0.3: +conventional-changelog-angular@^5.0.0, conventional-changelog-angular@^5.0.10, conventional-changelog-angular@^5.0.3: version "5.0.10" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.10.tgz#5cf7b00dd315b6a6a558223c80d5ef24ddb34205" integrity sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA== @@ -5018,6 +5306,34 @@ conventional-changelog-angular@^5.0.3: compare-func "^1.3.1" q "^1.5.1" +conventional-changelog-atom@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.7.tgz#221575253a04f77a2fd273eb2bf29a138f710abf" + integrity sha512-7dOREZwzB+tCEMjRTDfen0OHwd7vPUdmU0llTy1eloZgtOP4iSLVzYIQqfmdRZEty+3w5Jz+AbhfTJKoKw1JeQ== + dependencies: + q "^1.5.1" + +conventional-changelog-codemirror@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.7.tgz#d6b6a8ce2707710c5a036e305037547fb9e15bfb" + integrity sha512-Oralk1kiagn3Gb5cR5BffenWjVu59t/viE6UMD/mQa1hISMPkMYhJIqX+CMeA1zXgVBO+YHQhhokEj99GP5xcg== + dependencies: + q "^1.5.1" + +conventional-changelog-config-spec@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz#874a635287ef8b581fd8558532bf655d4fb59f2d" + integrity sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ== + +conventional-changelog-conventionalcommits@4.3.0, conventional-changelog-conventionalcommits@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.3.0.tgz#c4205a659f7ca9d7881f29ee78a4e7d6aeb8b3c2" + integrity sha512-oYHydvZKU+bS8LnGqTMlNrrd7769EsuEHKy4fh1oMdvvDi7fem8U+nvfresJ1IDB8K00Mn4LpiA/lR+7Gs6rgg== + dependencies: + compare-func "^1.3.1" + lodash "^4.17.15" + q "^1.5.1" + conventional-changelog-core@^3.1.6: version "3.2.3" resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" @@ -5037,12 +5353,69 @@ conventional-changelog-core@^3.1.6: read-pkg-up "^3.0.0" through2 "^3.0.0" -conventional-changelog-preset-loader@^2.1.1: +conventional-changelog-core@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.1.7.tgz#6b5cdadda4430895cc4a75a73dd8b36e322ab346" + integrity sha512-UBvSrQR2RdKbSQKh7RhueiiY4ZAIOW3+CSWdtKOwRv+KxIMNFKm1rOcGBFx0eA8AKhGkkmmacoTWJTqyz7Q0VA== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^4.0.16" + conventional-commits-parser "^3.1.0" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.0.0" + lodash "^4.17.15" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + shelljs "^0.8.3" + through2 "^3.0.0" + +conventional-changelog-ember@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz#f0f04eb7ff3c885af97db100865ab95dcfa9917f" + integrity sha512-JEMEcUAMg4Q9yxD341OgWlESQ4gLqMWMXIWWUqoQU8yvTJlKnrvcui3wk9JvnZQyONwM2g1MKRZuAjKxr8hAXA== + dependencies: + q "^1.5.1" + +conventional-changelog-eslint@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.8.tgz#f8b952b7ed7253ea0ac0b30720bb381f4921b46c" + integrity sha512-5rTRltgWG7TpU1PqgKHMA/2ivjhrB+E+S7OCTvj0zM/QGg4vmnVH67Vq/EzvSNYtejhWC+OwzvDrLk3tqPry8A== + dependencies: + q "^1.5.1" + +conventional-changelog-express@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.5.tgz#6e93705acdad374516ca125990012a48e710f8de" + integrity sha512-pW2hsjKG+xNx/Qjof8wYlAX/P61hT5gQ/2rZ2NsTpG+PgV7Rc8RCfITvC/zN9K8fj0QmV6dWmUefCteD9baEAw== + dependencies: + q "^1.5.1" + +conventional-changelog-jquery@^3.0.10: + version "3.0.10" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.10.tgz#fe8eb6aff322aa980af5eb68497622a5f6257ce7" + integrity sha512-QCW6wF8QgPkq2ruPaxc83jZxoWQxLkt/pNxIDn/oYjMiVgrtqNdd7lWe3vsl0hw5ENHNf/ejXuzDHk6suKsRpg== + dependencies: + q "^1.5.1" + +conventional-changelog-jshint@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.7.tgz#955a69266951cd31e8afeb3f1c55e0517fdca943" + integrity sha512-qHA8rmwUnLiIxANJbz650+NVzqDIwNtc0TcpIa0+uekbmKHttidvQ1dGximU3vEDdoJVKFgR3TXFqYuZmYy9ZQ== + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-preset-loader@^2.1.1, conventional-changelog-preset-loader@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== -conventional-changelog-writer@^4.0.6: +conventional-changelog-writer@^4.0.16, conventional-changelog-writer@^4.0.6: version "4.0.16" resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz#ca10f2691a8ea6d3c2eb74bd35bcf40aa052dda5" integrity sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ== @@ -5058,6 +5431,28 @@ conventional-changelog-writer@^4.0.6: split "^1.0.0" through2 "^3.0.0" +conventional-changelog@3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.21.tgz#4a774e6bf503acfd7e4685bb750da8c0eccf1e0d" + integrity sha512-ZGecVZPEo3aC75VVE4nu85589dDhpMyqfqgUM5Myq6wfKWiNqhDJLSDMsc8qKXshZoY7dqs1hR0H/15kI/G2jQ== + dependencies: + conventional-changelog-angular "^5.0.10" + conventional-changelog-atom "^2.0.7" + conventional-changelog-codemirror "^2.0.7" + conventional-changelog-conventionalcommits "^4.3.0" + conventional-changelog-core "^4.1.7" + conventional-changelog-ember "^2.0.8" + conventional-changelog-eslint "^3.0.8" + conventional-changelog-express "^2.0.5" + conventional-changelog-jquery "^3.0.10" + conventional-changelog-jshint "^2.0.7" + conventional-changelog-preset-loader "^2.3.4" + +conventional-commit-types@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz#7c9214e58eae93e85dd66dbfbafe7e4fffa2365b" + integrity sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg== + conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c" @@ -5066,7 +5461,7 @@ conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: lodash.ismatch "^4.4.0" modify-values "^1.0.0" -conventional-commits-parser@^3.0.3: +conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.3, conventional-commits-parser@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4" integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== @@ -5079,6 +5474,20 @@ conventional-commits-parser@^3.0.3: through2 "^3.0.0" trim-off-newlines "^1.0.0" +conventional-recommended-bump@6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.0.9.tgz#49ee74f52fbafcc63e89e2297d020279fea318f0" + integrity sha512-DpRmW1k8CpRrcsXHOPGgHgOd4BMGiq2gtXAveGM8B9pSd9b4r4WKnqp1Fd0vkDtk8l973mIk8KKKUYnKRr9SFw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.6" + conventional-commits-parser "^3.1.0" + git-raw-commits "2.0.0" + git-semver-tags "^4.0.0" + meow "^7.0.0" + q "^1.5.1" + conventional-recommended-bump@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" @@ -5162,7 +5571,7 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== -core-js@^3.5.0: +core-js@^3.5.0, core-js@^3.6.1: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== @@ -5267,7 +5676,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.1: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -5544,6 +5953,11 @@ csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5, csstype@^2.6.7: resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== +csstype@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.2.tgz#ee5ff8f208c8cd613b389f7b222c9801ca62b3f7" + integrity sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -5556,6 +5970,20 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +cz-conventional-changelog@3.2.0, cz-conventional-changelog@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz#6aef1f892d64113343d7e455529089ac9f20e477" + integrity sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg== + dependencies: + chalk "^2.4.1" + commitizen "^4.0.3" + conventional-commit-types "^3.0.0" + lodash.map "^4.5.1" + longest "^2.0.1" + word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -5576,6 +6004,11 @@ dargs@^4.0.1: dependencies: number-is-nan "^1.0.0" +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -5614,7 +6047,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@3.1.0: +debug@3.1.0, debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -5665,7 +6098,7 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -dedent@^0.7.0: +dedent@0.7.0, dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= @@ -5694,7 +6127,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -5833,6 +6266,16 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-indent@6.0.0, detect-indent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -5843,6 +6286,11 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" @@ -6072,6 +6520,14 @@ dotenv@8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotgitignore@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dotgitignore/-/dotgitignore-2.1.0.tgz#a4b15a4e4ef3cf383598aaf1dfa4a04bcc089b7b" + integrity sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA== + dependencies: + find-up "^3.0.0" + minimatch "^3.0.4" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -6176,6 +6632,13 @@ enhanced-resolve@^4.1.0: memory-fs "^0.5.0" tapable "^1.0.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -6397,7 +6860,7 @@ eslint-config-react-app@^5.2.1: dependencies: confusing-browser-globals "^1.0.9" -eslint-import-resolver-node@^0.3.2: +eslint-import-resolver-node@^0.3.2, eslint-import-resolver-node@^0.3.3: version "0.3.4" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== @@ -6416,7 +6879,7 @@ eslint-loader@3.0.3: object-hash "^2.0.1" schema-utils "^2.6.1" -eslint-module-utils@^2.4.1: +eslint-module-utils@^2.4.1, eslint-module-utils@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== @@ -6449,6 +6912,25 @@ eslint-plugin-import@2.20.1: read-pkg-up "^2.0.0" resolve "^1.12.0" +eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + eslint-plugin-jsx-a11y@6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" @@ -6495,7 +6977,7 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0: +eslint-scope@^5.0.0, eslint-scope@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== @@ -6510,14 +6992,14 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^2.0.0: +eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -6565,6 +7047,48 @@ eslint@^6.6.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@^7.5.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.6.0.tgz#522d67cfaea09724d96949c70e7a0550614d64d6" + integrity sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + espree@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" @@ -6574,12 +7098,21 @@ espree@^6.1.2: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== + dependencies: + acorn "^7.3.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.0.1, esquery@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -6687,6 +7220,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" + integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -6705,6 +7253,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + expect@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" @@ -6856,7 +7411,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, 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-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -6909,7 +7464,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: +figures@^3.0.0, figures@^3.1.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -6998,6 +7553,19 @@ find-cache-dir@^3.2.0: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-node-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" + integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw== + dependencies: + findup-sync "^3.0.0" + merge "^1.2.1" + +find-root@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -7028,6 +7596,23 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -7062,6 +7647,13 @@ focus-trap@^2.3.0: dependencies: tabbable "^1.0.3" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.0.0: version "1.12.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6" @@ -7137,6 +7729,22 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-access@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= + dependencies: + null-check "^1.0.0" + +fs-extra@8.1.0, fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -7155,15 +7763,6 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -7290,6 +7889,11 @@ get-port@^4.2.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== +get-stdin@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -7307,7 +7911,7 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.1.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== @@ -7337,6 +7941,17 @@ git-raw-commits@2.0.0: split2 "^2.0.0" through2 "^2.0.0" +git-raw-commits@^2.0.0: + version "2.0.7" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.7.tgz#02e9357727a9755efa8e14dd5e59b381c29068fb" + integrity sha512-SkwrTqrDxw8y0G1uGJ9Zw13F7qu3LF8V4BifyDeiJCxSnjRGZD9SaoMiMqUvvXMXh6S3sOQ1DsBN7L2fMUZW/g== + dependencies: + dargs "^7.0.0" + lodash.template "^4.0.2" + meow "^7.0.0" + split2 "^2.0.0" + through2 "^3.0.0" + git-remote-origin-url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" @@ -7353,6 +7968,14 @@ git-semver-tags@^2.0.3: meow "^4.0.0" semver "^6.0.0" +git-semver-tags@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.0.0.tgz#a9dd58a0dd3561a4a9898b7e9731cf441c98fc38" + integrity sha512-LajaAWLYVBff+1NVircURJFL8TQ3EMIcLAfHisWYX/nPoMwnTYfWAznQDmMujlLqoD12VtLmoSrF1sQ5MhimEQ== + dependencies: + meow "^7.0.0" + semver "^6.0.0" + git-up@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" @@ -7400,7 +8023,19 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -7412,7 +8047,7 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: +global-dirs@^0.1.0, global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= @@ -7426,6 +8061,26 @@ global-modules@2.0.0: dependencies: global-prefix "^3.0.0" +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + global-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" @@ -7709,6 +8364,13 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -7901,6 +8563,11 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -7908,6 +8575,22 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" +husky@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" + integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== + dependencies: + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^6.0.0" + find-versions "^3.2.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" + hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" @@ -8095,6 +8778,25 @@ init-package-json@^1.10.3: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" +inquirer@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" + integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + inquirer@7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" @@ -8208,6 +8910,11 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -8614,6 +9321,11 @@ is-stream@^1.0.0, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" @@ -8657,12 +9369,12 @@ is-url-superb@^3.0.0: dependencies: url-regex "^5.0.0" -is-utf8@^0.2.0: +is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-windows@^1.0.0, is-windows@^1.0.2: +is-windows@^1.0.0, is-windows@^1.0.1, 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== @@ -9643,11 +10355,40 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +lint-staged@^10.2.11: + version "10.2.11" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.11.tgz#713c80877f2dc8b609b05bc59020234e766c9720" + integrity sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA== + dependencies: + chalk "^4.0.0" + cli-truncate "2.1.0" + commander "^5.1.0" + cosmiconfig "^6.0.0" + debug "^4.1.1" + dedent "^0.7.0" + enquirer "^2.3.5" + execa "^4.0.1" + listr2 "^2.1.0" + log-symbols "^4.0.0" + micromatch "^4.0.2" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "^3.3.0" + listr-input@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/listr-input/-/listr-input-0.1.3.tgz#0c313967b6d179ebe964a81e9363ce2a5a39d25c" @@ -9686,6 +10427,20 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" +listr2@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.4.1.tgz#006fc94ae77b3195403cbf3a4a563e2d6366224f" + integrity sha512-8pYsCZCztr5+KAjReLyBeGhLV0vaQ2Du/eMe/ux9QAfQl7efiWejM1IWjALh0zHIRYuIbhQ8N2KztZ4ci56pnQ== + dependencies: + chalk "^4.1.0" + cli-truncate "^2.1.0" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.6.0" + through "^2.3.8" + listr@^0.14.1: version "0.14.3" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" @@ -9883,6 +10638,11 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" +lodash.map@^4.5.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -9923,6 +10683,11 @@ lodash.zip@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= +lodash@4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + "lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" @@ -9942,6 +10707,13 @@ log-symbols@^2.1.0: dependencies: chalk "^2.0.1" +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" @@ -9951,11 +10723,26 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + loglevel@^1.6.6: version "1.6.8" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== +longest@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" + integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g= + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -10183,6 +10970,21 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +meow@5.0.0, meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -10214,21 +11016,6 @@ meow@^4.0.0: redent "^2.0.0" trim-newlines "^2.0.0" -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" - meow@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" @@ -10289,6 +11076,11 @@ merge2@^1.2.3, merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +merge@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -10299,7 +11091,7 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -10420,7 +11212,7 @@ minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@1.2.5, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -10519,6 +11311,21 @@ mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" +mobx-react-lite@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-2.0.7.tgz#1bfb3b4272668e288047cf0c7940b14e91cba284" + integrity sha512-YKAh2gThC6WooPnVZCoC+rV1bODAKFwkhxikzgH18wpBjkgTkkR9Sb0IesQAH5QrAEH/JQVmy47jcpQkf2Au3Q== + +mobx-state-tree@^3.16.0: + version "3.17.2" + resolved "https://registry.yarnpkg.com/mobx-state-tree/-/mobx-state-tree-3.17.2.tgz#130ab4d450fc4dd6e2571b7385af1350c82def37" + integrity sha512-X0+xO7yEvBvPmLU2Z6cp81sD0xQaMXgLD4lGZoKSasOhNJSQPyKlu/LFxJTS6Wgw7J3gkWq9MMfQ4pO6wGMVfw== + +mobx@^5.15.4: + version "5.15.4" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-5.15.4.tgz#9da1a84e97ba624622f4e55a0bf3300fb931c2ab" + integrity sha512-xRFJxSU2Im3nrGCdjSuOTFmxVDGeqOHL+TyADCGbT0k4HHqGmx5u2yaHNryvoORpI4DfbzjJ5jPmuv+d7sioFw== + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -10920,6 +11727,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -10937,6 +11751,11 @@ nth-check@^1.0.2, nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -11129,6 +11948,11 @@ open@^7.0.2: is-docker "^2.0.0" is-wsl "^2.1.1" +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -11156,6 +11980,18 @@ optionator@^0.8.1, optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -11289,6 +12125,13 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" @@ -11418,6 +12261,11 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + parse-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" @@ -11513,7 +12361,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -11640,7 +12488,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -11654,6 +12502,13 @@ pkg-up@3.1.0, pkg-up@^3.1.0: dependencies: find-up "^3.0.0" +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -12346,6 +13201,11 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, po source-map "^0.6.1" supports-color "^6.1.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -13008,6 +13868,13 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" @@ -13056,6 +13923,11 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== +regenerator-runtime@0.13.5: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -13099,7 +13971,7 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -regexpp@^3.0.0: +regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -13264,6 +14136,19 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -13274,6 +14159,13 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-global@1.0.0, resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" + resolve-protobuf-schema@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" @@ -13314,7 +14206,7 @@ resolve@1.15.0: dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -13597,6 +14489,11 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -13604,6 +14501,11 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -13619,7 +14521,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^7.3.2: +semver@7.3.2, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== @@ -13762,6 +14664,15 @@ shell-quote@1.7.2: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== +shelljs@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -13821,6 +14732,24 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -14083,6 +15012,27 @@ stack-utils@^1.0.1: resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +standard-version@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/standard-version/-/standard-version-8.0.2.tgz#02ed7131f83046bd04358dc54f97d42c4b2fd828" + integrity sha512-L8X9KFq2SmVmaeZgUmWHFJMOsEWpjgFAwqic6yIIoveM1kdw1vH4Io03WWxUDjypjGqGU6qUtcJoR8UvOv5w3g== + dependencies: + chalk "^2.4.2" + conventional-changelog "3.1.21" + conventional-changelog-config-spec "2.1.0" + conventional-changelog-conventionalcommits "4.3.0" + conventional-recommended-bump "6.0.9" + detect-indent "^6.0.0" + detect-newline "^3.1.0" + dotgitignore "^2.1.0" + figures "^3.1.0" + find-up "^4.1.0" + fs-access "^1.0.1" + git-semver-tags "^4.0.0" + semver "^7.1.1" + stringify-package "^1.0.1" + yargs "^15.3.1" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -14138,6 +15088,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -14254,6 +15209,11 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" +stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== + strip-ansi@6.0.0, strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -14282,6 +15242,11 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-bom@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -14307,6 +15272,11 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -14326,7 +15296,12 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.0.1: +strip-json-comments@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +strip-json-comments@^3.0.1, strip-json-comments@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -14740,6 +15715,16 @@ ts-pnp@^1.1.6: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" @@ -14769,6 +15754,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -14824,7 +15816,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.9.7: +typescript@3.9.7, typescript@^3.7.5: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== @@ -15377,7 +16369,12 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.0, which@^1.3.1: +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -15412,7 +16409,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@~1.2.3: +word-wrap@^1.0.3, word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== From 4a5fcb84bc0a66a6a63fc49ba1f3a22100ed0f6e Mon Sep 17 00:00:00 2001 From: alebinson Date: Tue, 4 Aug 2020 15:13:13 +0300 Subject: [PATCH 04/35] react core components compiled and partially used --- conflicts-ui/package.json | 1 + conflicts-ui/src/App.tsx | 11 +- .../src/conflicts/components/date-filter.tsx | 23 +- .../components/has-resolved-filter.tsx | 36 +- conflicts-ui/src/index.tsx | 5 +- package.json | 4 +- packages/mc-react-components/src/lib/index.ts | 1 + .../polygon-selection-ui.tsx | 31 +- .../src/lib/popover/index.ts | 3 + .../src/lib/popover/popover.tsx | 12 + packages/mc-react-ui-components/package.json | 16 +- .../src/lib/base/utils/use-knob.tsx | 38 +- .../src/lib/button/button.story.tsx | 2 +- .../src/lib/rmwc/docs/common/doc-versions.tsx | 1 - .../src/lib/rmwc/docs/common/history.tsx | 5 - .../src/lib/rmwc/docs/common/menu-content.tsx | 427 ---------- .../src/lib/rmwc/docs/index.tsx | 44 - .../rmwc/docs/markdown/README-INSTALLATION.md | 164 ---- .../markdown/README-LIBRARY-INTEGRATIONS.md | 30 - .../rmwc/docs/markdown/README-METHODOLOGY.md | 85 -- .../docs/markdown/README-STYLING-THEMING.md | 249 ------ .../lib/rmwc/docs/markdown/README-TYPES.md | 131 --- .../lib/rmwc/docs/markdown/README-USAGE.md | 88 -- .../src/lib/rmwc/docs/styles/docs.css | 800 ------------------ .../src/lib/rmwc/docs/styles/index.tsx | 3 - .../src/lib/rmwc/docs/views/app/index.tsx | 276 ------ .../lib/rmwc/docs/views/app/theme-picker.tsx | 335 -------- .../lib/rmwc/docs/views/home/home.module.css | 193 ----- .../src/lib/rmwc/docs/views/home/index.tsx | 179 ---- .../lib/rmwc/docs/views/resources/index.tsx | 261 ------ .../docs/views/resources/resources.module.css | 51 -- .../lib/rmwc/docs/views/site-search/index.tsx | 209 ----- .../views/site-search/site-search.module.css | 60 -- .../src/lib/select/select-icon/foundation.tsx | 4 +- .../src/lib/select/select/foundation.tsx | 8 +- .../src/lib/select/styles.tsx | 14 +- .../src/lib/slider/foundation.tsx | 4 +- .../src/lib/snackbar/foundation.tsx | 4 +- .../src/lib/switch/styles.tsx | 4 +- .../src/lib/tabs/styles.tsx | 4 +- .../src/lib/tabs/tab-bar-foundation.tsx | 2 +- .../src/lib/tabs/tab-foundation.tsx | 2 +- .../src/lib/tabs/tab-indicator-foundation.tsx | 2 +- .../src/lib/tabs/tab-scroller-foundation.tsx | 4 +- .../src/lib/textfield/styles.tsx | 10 +- .../textfield-character-count-foundation.tsx | 2 +- .../lib/textfield/textfield-foundation.tsx | 4 +- .../textfield/textfield-icon-foundation.tsx | 4 +- .../src/lib/theme/styles.tsx | 2 +- .../src/lib/tooltip/index.tsx | 4 +- .../src/lib/tooltip/styles.tsx | 2 +- .../src/lib/top-app-bar/foundation.tsx | 2 +- .../src/lib/top-app-bar/styles.tsx | 6 +- .../mc-react-ui-components/tsbuildconfig.json | 3 +- yarn.lock | 709 +++++++++++++++- 55 files changed, 868 insertions(+), 3706 deletions(-) create mode 100644 packages/mc-react-components/src/lib/popover/index.ts create mode 100644 packages/mc-react-components/src/lib/popover/popover.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/common/doc-versions.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/common/history.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/common/menu-content.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/index.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-INSTALLATION.md delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-STYLING-THEMING.md delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-TYPES.md delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-USAGE.md delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx delete mode 100644 packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css diff --git a/conflicts-ui/package.json b/conflicts-ui/package.json index 5700112d..9ddd1a1a 100644 --- a/conflicts-ui/package.json +++ b/conflicts-ui/package.json @@ -49,6 +49,7 @@ "@commitlint/cli": "^9.1.1", "@commitlint/config-conventional": "^9.1.1", "@map-colonies/react-components": "^0.1.0", + "@map-colonies/react-core": "^0.1.0", "@map-colonies/ui-components": "^0.0.1", "@map-colonies/ui-components-react": "^0.0.1", "@material-ui/core": "^4.11.0", diff --git a/conflicts-ui/src/App.tsx b/conflicts-ui/src/App.tsx index 3fae3c1a..e4e3c916 100644 --- a/conflicts-ui/src/App.tsx +++ b/conflicts-ui/src/App.tsx @@ -2,6 +2,11 @@ import React from 'react'; import './App.css'; import useMediaQuery from '@material-ui/core/useMediaQuery'; import { ThemeProvider, createMuiTheme } from '@material-ui/core/styles'; + +// Import from react core components +import { Theme } from '@map-colonies/react-core/dist'; + + import { CssBaseline } from '@material-ui/core'; import ConflictsView from './conflicts/views/conflicts-view'; @@ -20,8 +25,10 @@ const App: React.FC = () => { return ( - - + {/* */} + + + {/* */} ); }; diff --git a/conflicts-ui/src/conflicts/components/date-filter.tsx b/conflicts-ui/src/conflicts/components/date-filter.tsx index f74fb22f..e88e5892 100644 --- a/conflicts-ui/src/conflicts/components/date-filter.tsx +++ b/conflicts-ui/src/conflicts/components/date-filter.tsx @@ -1,7 +1,15 @@ import React from 'react'; // import { Button, Popover } from '@material-ui/core'; -import { Popover } from '@material-ui/core'; -import { MwcButton as Button } from '@map-colonies/ui-components-react/dist'; + +// import { Popover } from '@material-ui/core'; +import { Popover } from '@map-colonies/react-components'; + +// Import from react web component wrapper +// import { MwcButton as Button } from '@map-colonies/ui-components-react/dist'; + +// Import from react core components +import { Button } from '@map-colonies/react-core/dist'; +import '@map-colonies/react-core/dist/button/styles'; import { observer } from 'mobx-react-lite'; import { DateTimeRangePicker } from '@map-colonies/react-components'; @@ -36,8 +44,15 @@ export const DateFilter: React.FC = observer(() => { */} -{/* unelevated={true} */} - */} + + diff --git a/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx b/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx index d6bc0ca8..fd07fec5 100644 --- a/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx +++ b/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx @@ -1,6 +1,13 @@ import React from 'react'; // import { Select, MenuItem } from '@material-ui/core'; -import { MwcSelect as Select, MwcMenuItem as MenuItem} from '@map-colonies/ui-components-react/dist'; + +// Import from react web component wrapper +// import { MwcSelect as Select, MwcMenuItem as MenuItem} from '@map-colonies/ui-components-react/dist'; + +// Import from react core components +import { Select, MenuItem } from '@map-colonies/react-core/dist'; +import '@map-colonies/react-core/dist/select/styles'; + import { observer } from 'mobx-react-lite'; import { useStore } from '../models/rootStore'; @@ -23,15 +30,6 @@ export const HasResolvedFilter: React.FC = observer(() => { // // resolve status - // - // + // + + + +// ); }); diff --git a/conflicts-ui/src/index.tsx b/conflicts-ui/src/index.tsx index 8235bb80..870cddb9 100644 --- a/conflicts-ui/src/index.tsx +++ b/conflicts-ui/src/index.tsx @@ -18,11 +18,12 @@ const store = rootStore.create( } ); ReactDOM.render( - + // - , + // + , document.getElementById('root') ); diff --git a/package.json b/package.json index 881becdb..21653a77 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "scripts": { "del-dist": "lerna exec --parallel -- del-cli dist", "prebuild": "yarn del-dist", - "build:react-core": "lerna exec --scope @map-colonies/react-core -- yarn build", + "build:react-core:build": "lerna exec --scope @map-colonies/react-core -- yarn build", + "build:react-core:postbuild": "lerna exec --scope @map-colonies/react-core -- yarn postbuild", + "build:react-core": "yarn build:react-core:build && yarn build:react-core:postbuild", "build:react": "lerna exec --scope @map-colonies/react-components -- yarn build", "build:stencil": "lerna exec --scope @map-colonies/ui-components -- yarn build", "build:stencil-react": "lerna exec --scope @map-colonies/ui-components-react -- yarn build", diff --git a/packages/mc-react-components/src/lib/index.ts b/packages/mc-react-components/src/lib/index.ts index a4f6cabc..6c61a042 100644 --- a/packages/mc-react-components/src/lib/index.ts +++ b/packages/mc-react-components/src/lib/index.ts @@ -3,3 +3,4 @@ export * from './map-filter-container'; export * from './models'; export * from './ol-map'; export * from './smart-table'; +export * from './popover'; diff --git a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx index 21b1ddcc..41eb6ee6 100644 --- a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx +++ b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx @@ -1,7 +1,10 @@ import React from 'react'; -import { Menu, MenuItem, Button } from '@material-ui/core'; +// import { Menu, MenuItem, Button } from '@material-ui/core'; +// import Tooltip from '@material-ui/core/Tooltip'; +import { Menu, MenuItem, Button, Tooltip } from '@map-colonies/react-core/dist'; + import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; -import Tooltip from '@material-ui/core/Tooltip'; + import { DrawType } from '../models/enums'; const useStyle = makeStyles((theme: Theme) => @@ -36,10 +39,10 @@ export const PolygonSelectionUi: React.FC = ( if (isSelectionEnabled) { return ( - + ; -``` - -## Bundle size and Dependency considerations - -To keep your build as trim as possible, it is recommended that you install the components individually as you need them instead of installing all of RMWC. This strategy has several benefits: - -- You will only include the minimal javascript and css to get the component working -- You can insulate yourself from future breaking changes and upgrade components one at a time. -- If you have an existing project you are converting over to RMWC, you can swap out one component at a time. - - -If you decide to go for the convenience to install the entire RMWC library, your app will still reference the individual modules, you just lose the ability to upgrade them independently when a new release comes out. - -```jsx -/** GOOD example, only the `Button` component will be imported. This supports tree shaking. */ -import { Button } from '@rmwc/button'; -``` - -This is for the laziest of lazy, all components are re-exported from the root module if you choose to reference them this way. - -```jsx -/** - * BAD / LAZY example, the `Button` component will be imported, as well as all of RMWC. - * This exists for convenience and for projects that are using the majority of material components. - */ -import { Button } from 'rmwc'; -``` - -The same is true for importing styles into your project. RMWC only ships with minimal styles for its own custom components. The majority of the CSS comes from Google, and you'll need to import them from the [material-components-web](https://github.com/material-components/material-components-web) package. The pre-minified version of this file is around 240kb. If you only want to Import styles for individual components, you can find the css files in `node_modules/@material/COMPONENT_NAME/dist/mdc.COMPONENT_NAME.min.css`. - -```jsx -/** GOOD Only imports the styles for the Button component. */ -import '@material/button/dist/mdc.button.min.css'; -``` - -```jsx -/** BAD / LAZY Imports styles for ALL components */ -import 'material-components-web/dist/material-components-web.min.css'; -``` - -### Tree Shaking Support - -Webpack 4 / Create React App 2 and other build tools like Rollup provider opt in support for tree shaking. As of version 5.1.x, RMWC as well as `material-components-web` both include support for tree shaking behavior out of the box. - -Directions for Webpack / CRA -[https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free](https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free) - -```json -/** Example with Create React App 2. */ -{ - "name": "My Package JSON file", - "sideEffects": false // just add this line -} -``` - - -### Additional configuration when using CSS Modules - -The material components CSS is intended to be a global CSS dependency which is the opposite of what CSS modules do. If you are using CSS modules, the simplest way to get the material CSS loaded is to have two separate CSS loaders in your webpack configuration, one for CSS modules, and another for global CSS. This is a well documented issue when using global CSS in CSS module projects and is not specific to RMWC. - -Please note if you are using Create React App (v2), this is likely not an issue. Files with the .module.css extension automatically use the CSS modules loader. - -```javascript -// An abbreviated example -const path = require('path'); -module.exports = { - module: { - rules: [ - { - test: /\.css$/, - // exclude material css from being loaded by CSS modules - // These paths are specific to your system, so change accordingly - exclude: [ - path.resolve('./node_modules/material-components-web'), - path.resolve('./node_modules/@material') - ], - use: ['style-loader', 'css-loader?modules=true'] - }, - { - test: /\.css$/, - // only turn on standard global CSS loader for the material directories - // These paths are the same as above and specific to your system, so change accordingly - include: [ - path.resolve('./node_modules/material-components-web'), - path.resolve('./node_modules/@material') - ], - use: ['style-loader', 'css-loader'] - } - ] - } -}; -``` - -## Typescript and Flow Setup - -There are no additional steps to get Typescript working for your project. RMWC ships with declarations right alongside the components, so there is no need to install anything from `definitely-typed`. - -Flow types were previously available in versions 4.x.x and below. Some work has been done to convert to Typescript to FlowTypes, but it has been tabled due to the complexities of building and maintaining an automated conversion. If you're intersted in restoring Flow support, please see issue [#407: Support Flow Types](https://github.com/jamesmfriedman/rmwc/issues/407) - -## Testing with RMWC - -RMWC works the best with Jest and Enzyme. material-components-web requires a browser like environment to properly test and a testing library thats supports React Refs. At this time, react-test-renderer is **not** supported. - -Jest uses JSDOM by default which is a browser-like environment. If you are using the full Enzyme mount api, you'll quickly run into errors from the material-components-web library saying things like "Cannot read property 'whatever' of undefined. The quick fix is to monkey patch the missing items onto the fake DOM elements in your setupTests file. - -```javascript -// src/setupTests.js -import Enzyme from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; -import rmwcTestPolyfill from '@rmwc/base/dist/test-polyfill'; -Enzyme.configure({ adapter: new Adapter() }); - -//import and run this to fix the the MDC errors -rmwcTestPolyfill(); -``` - -## Known Issues - -* Issue: postcss-cssnext messes up CSS variables. This can cause broken styles and extreme slowdowns when using web developer tools like the Chrome inspector. You'll know if you're having this issue because dev tools and the browser will slow to a crawl. - * Solution: set customProperties to false. This may require ejecting or other workarounds if you are using Create React App. [See issue #65](https://github.com/jamesmfriedman/rmwc/issues/65). - -```javascript -postcss([ - cssnext({ - features: { - customProperties: { - preserve: true - } - } - }) -]); -``` diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md b/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md deleted file mode 100644 index c94e44b4..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-LIBRARY-INTEGRATIONS.md +++ /dev/null @@ -1,30 +0,0 @@ -# Library Integrations - -> Some interesting ways you can use external libraries with RMWC. - -## React Router - -If you're using React Router, you're probably used to using the `Link` component to navigate around. You may have also experienced problems at some point where you're adding an anchor tag around an element that breaks layout. - -RMWC mitigates this issue by allowing you to "extend" other components. This works because most of the underlying compontents in RMWC are just HTML elements like div, span, etc that you can override using the `tag` prop. You can specify your own tag which can also be another React component. - -A note on using TypeScript and Flow Typed with this strategy. Flow tends to be extremely forgiving and not give you any issues with this approach. Typescript will complain that there are no props of type `x` on this component. Work is being done to mitigate these issues, but see the workaround below. - -```jsx -import { Link } from 'react-router-dom'; -import { Button } from '@rmwc/button'; - -{/* Not what you wanted, you expected the Button to be the anchor. */} - - - - -{/* Also valid, but would require some custom CSS to layout properly */} - - -{/* This would make the button an anchor link, but not use React Routers history.pushState */} - - -{/* Make it all work together! RMWC lets you make the button the link */} - -``` diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md b/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md deleted file mode 100644 index 15b164d4..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/markdown/README-METHODOLOGY.md +++ /dev/null @@ -1,85 +0,0 @@ -# Methodology - -> RMWC is intended to be an un-opinionated React wrapper around [material-components-web](https://github.com/material-components/material-components-web/) - -## Project Goals - -* To create the thinnest, lightest, and spec compliant wrapper around Google - Material Design Components for the Web - [https://material.io/components/web/](https://material.io/components/web/) -* To utilize the Foundation javascript classes from material-components-web -* To be as unobtrusive and sensible as possible. -* To fill the gaps in material-components-web with custom React community driven components. - -## Why? - -There are many different Material UI implementations in both Angular and React. The last thing we need is another one... In React land there has been a lot of great work done, but you eventually end up in one of the following situations: - -* The library is heavy or extremely inflexible (crazy api, opinionated styling) -* The library is an opinionated representation of material or it isn't very polished -* The library has been abandoned - -RMWC's goal is to use the Google sanctioned javascript Material Design Components which are designed, developed, and maintained by Google. Where Google doesn't provide a component, RMWC will include its own React driven components. These will be denoted with an "RMWC Addon" label. - -## Breaking Changes - -The goal of the project is to have ZERO breaking changes and rely heavily on deprecations between major versions. While its a novel goal, in practice it is quite difficult. `material-components-web` (in classic Google fashion) was in alpha for 2 years and contained a litany of brekaing changes along the way. Since adopting an official 1.0.0 breaking changes have been reduced, but still exist. - -As of the 5.x.x version RMWC, the apis have stablizied for the foreseeable future and intensive work has been done to make sure that breaking changes are limited in scope and obey semver rules. Where possible, deprecations will be used, and you can count on deprecations being valid until the next major version. If you are using Typescript, your IDE will not tell you the properties are deprecated, but your runtime compiled code, as well as the comments in your IDE will say "DEPRECATED" across the top. - -The good news is, since components are indiviudally packaged and released, you can generally safely upgrade a components one at a time. - -So to sum it up: - -- RMWC works hard to minimize breaking changes between releases -- Deprecations are favored over breaking changes. These will be logged out anytime NODE_ENV !== 'production' -- Any breaking change will honor semver and bump a major version -- Minor versions are used for releases that contain new features but no breaking changes -- Patch versions are for bugfixes - -## Basic Layout - -Material Components web uses BEM syntax to style and script their components. RMWC directly inherits MDC's naming conventions, so if you can read one, you can infer the other. - -Block -> Component -Element -> Components / Children -Modifier -> Props - -Here's a TextField example in raw MDC and with RMWC. - -```jsx -// The example is from material-components-web -
      -
    • - - Two-line item - Secondary text - -
    • -
    -``` - -```jsx -// This is the RMWC version - - - - Two-line item - - Secondary text - - -``` - -## Convenience - -Even though this is meant to be an un-opinionated wrapper, in some areas decisions had to be made to improve utility and the overall developer experience. At the end of the day, if it doesn't make your life easier, what's the point? - -## Something missing from RMWC? - -RMWC wraps the entire [material-components-web](https://github.com/material-components/material-components-web) package in React, but because they are different projects with different maintainers, sometimes things can be missed. A lot of components from [material-components-web](https://github.com/material-components/material-components-web) don't require javascript. For these, you can simply use the classNames in your own project. Of course, RMWC wants to cover the entire codebase, so if you see something missing or incorrect, please [file an issue](https://github.com/jamesmfriedman/rmwc/issues/new). - -```jsx -/** This will give you a CSS only button and skip RMWC all together */ - -); -``` - -```css -/** in your CSS */ -.my-custom-className { -   color: red; -} - -.mdc-button { -   font-weight: bold; -} -``` - -## Using CSS Modules - -Just add your className. If you need to target a node that is not directly exposed by RMWC, you can use the global modifier in your CSS. In this example, you can target the inner wrapper of a DrawerHeader. - -```jsx -/** in your JSX */ -import { DrawerHeader } from '@rmwc/drawer'; -import styles from './my-style-sheet.css'; - -const MyComponent = props => ( - Hello World -); -``` - -```css -/** in your CSS */ -.myDrawerHeader :global(.mdc-drawer__header-content) { -   color: red; -} -``` - -## Using the Styled Components library - -### Basic Styling - -Using RMWC with `styled-components` is a breeze. For most use cases the following code works well. - -```jsx -import styled from 'styled-components'; -import { Button } from '@rmwc/button'; - -const StyledButton = styled(Button)` -  // Your Styles Here. -`; -``` - -### Props Based Styling - -You will eventually want some condition styles based on props passed into the component. - -```jsx -import styled, { css } from 'styled-components'; -import { Button } from '@rmwc/button'; - -const StyledButton = styled(({ isFullWidth, ...otherProps }) => ( - ; -``` - -## API Wide props - -All components in RMWC are generated from a common factory method. This gives them some extra utility and flexibility when being used. The following props are available on (almost) every component. - -### `dir="rtl"` - -material-components-web implements right-to-left support for eastern languages. You can pass this prop to any component, please read [material-components-web rtl docs](https://material.io/components/web/catalog/rtl/) for more information. - -```jsx -import { Drawer, DrawerContent } from '@rmwc/drawer'; - - - -; -``` - -### `tag` - -You can use the `tag` prop to specify the DOM element you would like to render. For advanced cases, you can actually pass a Component to render. - -```jsx -import { Typography } from '@rmwc/typography'; -import { Button } from '@rmwc/button'; -import { Link } from 'react-router-dom'; - -// renders an h1 -const Example1 = props => ( - - Hello World - -); - -// renders an anchor -const Example2 = props => ( - -); - -// Advanced case, extend another component -const Example3 = props => ( - -); -``` - -### `theme` - -The theming functionality from material-components-web is baked into every component. It works identically to the [`Theme` component's `use` prop](theme). - -```jsx -import { Button } from '@rmwc/button'; - -; -``` - -### `ref` - -With the advent of ref forwarding in React 16.3, you can pass the `ref` prop to the majority of components to get access to their DomNodes. This currently only works on Stateless components like Elevation, Typography, and Grid., - -```jsx -import { Elevation } from '@rmwc/elevation'; - -// renders an h1 - -class Example1 extends React.Component { - render() { - return this.textField = el}> - } -} -``` diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css deleted file mode 100644 index 5f8b01fb..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/docs.css +++ /dev/null @@ -1,800 +0,0 @@ -html, -body { - padding: 0; - margin: 0; - font-size: 16px; -} - -html { - max-width: 100vw; -} - -img { - vertical-align: top; -} - -p, -ul { - max-width: 56rem; -} - -body, -#root { - display: block; - min-height: 100vh; - -webkit-font-smoothing: antialiased; -} - -#root > div { - display: flex; - flex-direction: column; - min-height: 100vh; -} - -code > .optional { - color: #905; -} - -body ul li { - margin: 0; -} - -.app__root, -.mdc-drawer { - background-color: var(--mdc-theme-background); - color: var(--mdc-theme-on-surface); -} -/** Install Block */ -.app__content { - flex: 1 1 auto; - max-width: 100%; - transition: margin-left 0.3s, max-width 0.3s; - will-change: margin-left; - will-change: max-width; -} - -.docs-setup { - list-style: none; - padding: 3rem 1rem 1rem 1.5rem; - margin: 2rem 0 3rem 0; - position: relative; - overflow: hidden; - border-left: 0.25rem solid var(--mdc-theme-primary); -} - -.docs-setup:after { - content: 'Setup'; - color: var(--mdc-theme-primary); - font-weight: bold; - position: absolute; - font-size: 1.25rem; - padding: 0.5rem 1.5rem; - width: 8rem; - top: 0; - left: 0; - border-bottom-right-radius: 0.75rem; -} - -.docs-setup > li > ul { - list-style: none; - padding-left: 1.5rem; -} - -.docs-setup > li > ul > li > ul { - list-style: circle; -} - -.docs-setup > li { - margin-top: 0.25rem; -} - -.docs-setup:first-of-type strong, -.app__content > div > ul:first-of-type a { - color: var(--mdc-theme-primary); -} - -.mdc-drawer--dismissible.mdc-drawer--open + .app__content { - max-width: calc(100% - 16rem); -} - -.app__content a { - color: inherit; -} - -.app__content > div { - width: 100%; - box-sizing: border-box; -} - -.app__content > div, -.container { - padding: 1.5rem; - margin: 0 auto; - display: block; -} - -@media (min-width: 37.5rem) { - .app__content > div, - .container { - padding: 3rem; - } -} - -.app__content > div p code, -.app__content > div table code, -.app__content > div ul code { - font-family: source-code-pro, Menlo, Consolas, Monaco, Andale Mono, - Courier New, monospace; - line-height: 1.5; - background-color: rgba(0, 0, 0, 0.05); - padding: 2.4px 8px; - border-radius: 0.125rem; -} - -/* page title */ -.app__content > div > h1 { - color: var(--mdc-theme-primary); - font-size: 2.125rem; - font-weight: 400; - line-height: 2.5rem; - margin-bottom: 1.875rem; -} - -/* RMWC Addon*/ -.app__content > div > h1 > code { - font: inherit; - color: var(--mdc-theme-secondary); - font-size: 0.875rem; - font-weight: bold; - text-transform: uppercase; - margin-left: 0.75rem; - border: 1px solid var(--mdc-theme-secondary); - padding: 0.25rem 0.5rem; - vertical-align: middle; - white-space: nowrap; -} - -.app__content > div > h1:first-child { - margin-top: 0.5rem; -} - -/* version # */ -.app__version { - align-self: center; - opacity: 0.87; - margin-left: 0.5rem; - margin-top: 3px; - display: flex; - align-items: center; - padding: 0.5rem 0.25rem 0.5rem 0.5rem; - border-radius: 8px; - cursor: pointer; -} - -.app__version:hover { - background-color: rgba(255, 255, 255, 0.1); -} - -/* code examples */ -.example.render-with-code, -.example.code-only { - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.75rem; - margin: 1.5rem 0; - background-color: var(--mdc-theme-background); -} - -.app__content > div .example + .example { - margin-top: -0.5rem; -} - -.app__content > div .example:last-child { - margin-bottom: 0; -} - -.app__content > div .example:not(.render-only) .run { - padding: 1rem; - background-color: rgba(0, 0, 0, 0.02); - border-radius: 0.75rem 0.75rem 0 0; -} - -.app__content > div .example .run + .source { - border-top: 0.0625rem solid rgba(0, 0, 0, 0.15); -} - -.document-component, -.document-component h2 { - font-size: 14px; -} - -.document-component h3 { - margin-top: 24px; -} - -.app__content > div > h2, -.app__content > div .document-component h2 { - padding-top: 3rem; - font-size: 1.5rem; - font-weight: 400; - line-height: 2rem; - margin-bottom: 1.875rem; - overflow: hidden; - color: var(--mdc-theme-primary); -} - -.app__content > div hr { - border: 0; - border-top: 0.0625rem solid rgba(0, 0, 0, 0.12); - margin: 5rem 0; -} - -p, -ul { - line-height: 1.5; - font-size: 1rem; -} - -.app__content > div blockquote { - opacity: 0.87; - font-size: 1.25rem; - font-weight: 400; - line-height: 2rem; - margin: 0; - margin-bottom: 1.25rem; - max-width: 58.75rem; -} - -.app__content > div blockquote p { - font-size: inherit; -} - -.app__content > div > h3 { - opacity: 0.87; - font-size: 1.25rem; - font-weight: 400; - line-height: 2rem; - margin-bottom: 1.25rem; - max-width: 58.75rem; -} - -.app__top-app-bar { - z-index: 7; - max-width: 100vw; -} - -.app__top-app-bar .mdc-top-app-bar__title { - color: inherit; - text-decoration: none; - font-weight: bold; - text-shadow: 0 0 0 rgba(255, 255, 255, 0.5); - transition: text-shadow 0.3s; -} - -.app__top-app-bar .mdc-top-app-bar__title:hover { - text-shadow: 0 0 10px rgba(255, 255, 255, 0.5); -} - -#main-nav.mdc-drawer--dismissible { - position: fixed; - top: 64px; - left: 0; - height: calc(100vh - 64px); - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: auto; -} - -#main-nav .mdc-drawer__drawer { - overflow-y: auto; -} - -#main-nav .mdc-drawer__content { - padding-bottom: 88px; - padding-top: 0.5rem; - -webkit-overflow-scrolling: touch; - height: calc(100vh - 15rem); -} - -#main-nav .mdc-list-item:before { - pointer-events: none; -} - -#main-nav .mdc-list-item { - box-sizing: border-box; -} - -ul li { - margin: 0.5rem 0; -} - -.demo-content { - display: flex; - flex: 1; - position: relative; -} - -/* made by */ -.made-by { - padding: 1rem; - margin: 1rem 1rem 2rem 1rem; - box-sizing: border-box; - border-radius: 0.75rem; - border: 1px solid rgba(0, 0, 0, 0.2); - display: flex; - align-items: center; - color: var(--mdc-theme-on-surface); -} - -.made-by .rmwc-icon { - border-radius: 50%; - width: 1.5rem; - height: 1.5rem; - margin-right: 0.5rem; -} -.made-by__link { - color: var(--mdc-theme-primary); -} - -/* page badges */ -#page-badges .live-preview .rmwc-badge-anchor { - margin-right: 1.5rem; -} - -/* page cards */ -#page-cards .live-preview { - justify-content: center; -} - -/* page menus */ -#page-menus .live-preview { - justify-content: center; -} - -#page-menus .live-preview .mdc-select { - margin-top: 4rem; -} - -/* page icons */ -#page-icons .live-preview > div > div > i, -#page-icons .live-preview > div > div > .material-icons, -#page-icons .live-preview > div > div > img { - margin: 1rem; - vertical-align: middle; -} - -/* page icon-buttons */ -#page-icon-buttons .live-example .mdc-icon-button { - vertical-align: top; - margin: 1rem; -} - -/* page buttons */ -#page-buttons .live-example .mdc-button { - margin: 0.5rem; -} - -/* page drawers */ -#page-drawers .live-preview { - position: relative; - justify-content: center; -} - -#page-drawers .live-preview .mdc-drawer--modal { - z-index: 999; - top: 0; -} - -/* page dialogs */ -#page-dialogs .live-preview { - justify-content: center; -} - -#page-dialogs #dialog-portal-example { - display: flex; - align-items: center; - width: 100%; -} - -#page-dialogs #dialog-portal-example > * { - margin: 1rem; -} - -/* page ripples */ -#page-ripples .live-preview { - justify-content: center; -} - -#page-ripples .live-preview p { - width: 140px; - height: 140px; - display: flex; - align-items: center; - justify-content: center; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.5rem; -} - -#page-ripples .live-example:nth-of-type(4) p { - border: 0; -} - -/* page elevation */ -#page-elevation .live-example [class*='mdc-elevation--'] { - padding: 1rem; - margin: 1rem; - display: inline-flex; - width: 6rem; - height: 6rem; - vertical-align: top; - align-items: center; - justify-content: center; - border-radius: 0.5rem; - background-color: white; -} - -/** Page Radios */ -#page-radio-buttons .live-preview { - justify-content: center; -} - -#page-radio-buttons .live-preview .mdc-form-field { - margin: 1rem; -} - -/* page sliders */ -#page-sliders .live-preview { - justify-content: center; -} - -#page-sliders .live-preview > div { - width: 80%; -} - -/* page snackbars */ -#page-snackbars .live-preview { - justify-content: center; -} - -/* page layout-grid */ -#page-layout-grid .live-preview .mdc-layout-grid__cell { - background: rgba(0, 0, 0, 0.1); - padding: 1rem 0; - text-align: center; -} - -/* page linear-progress */ -#page-linear-progress .live-preview > div { - width: 100%; -} - -#page-linear-progress .live-preview .mdc-linear-progress { - margin: 2rem 0; -} - -/* page list */ -#page-lists .live-preview > div { - width: 100%; -} - -/* page lists-collapsible */ -#page-lists-collapsible .live-example:first-of-type .live-preview > div { - width: 100%; -} - -#page-lists-collapsible .live-preview { - justify-content: center; -} - -/* page list-variants */ -#page-lists-variants .live-preview > div { - width: 100%; -} - -/* page circular-progress */ -#page-circular-progress .live-preview > div > div > .rmwc-circular-progress { - margin: 1rem; - vertical-align: middle; -} - -#page-typography .live-preview [class*='mdc-typography--'] { - margin: 1rem 0; - display: block; -} - -#page-switches .live-example .mdc-form-field { - margin: 1rem 1rem 1rem 0; -} - -#page-fabs .live-example .mdc-fab { - margin: 1rem; - vertical-align: middle; -} - -#page-grid-lists .example .mdc-form-field { - padding: 1rem; -} - -/** page theme */ -#page-theme .live-preview .mdc-button { - margin-right: 1rem; -} - -#page-theme .live-example:first-of-type .live-preview [class*='mdc-theme--'] { - padding: 1rem; - margin: 0.25rem; - display: inline-block; - width: 6rem; - height: 6rem; - vertical-align: top; - word-break: break-all; -} - -/** page selects */ -#page-select-menus .run .mdc-select { - min-width: 10rem; -} - -#page-select-menus .run > .mdc-select { - float: left; - clear: both; - margin: 0.75rem 0; -} - -#page-select-menus .run > div { - clear: both; -} - -#page-select-menus .run:after { - clear: both; - content: ''; - display: table; -} - -#page-select-menus .example .mdc-select:after { - content: ''; - display: block; -} - -/** page toolbars */ -#page-toolbars .live-preview > div { - width: 100%; -} - -/** page top-app-bar */ -#page-top-app-bar .live-preview > div { - width: 100%; -} - -/** page formfields */ -#page-formfields .example .mdc-form-field { - display: block; - margin-bottom: 1.5rem; -} - -/** Page textfields */ -#page-text-fields .live-preview .mdc-text-field { - margin-top: 1.5rem; - float: left; - clear: left; -} - -#page-text-fields .live-preview > div { - width: 100%; -} - -/** Page data-tables */ -#page-data-tables .live-preview { - justify-content: center; -} - -#page-data-tables .doc-controls { - display: flex; - margin-left: 0.5rem; -} - -#page-data-tables .doc-controls > * { - max-width: 10rem; - flex: 1; - margin: 1rem 0.5rem; -} - -#page-data-tables .example.render-with-code .run .rmwc-data-table { - max-width: 100%; -} - -#page-data-tables .example.render-with-code .run > div > .mdc-select { - margin: 0.5rem; - min-width: 5rem; -} - -/** Page Avatars */ -#page-avatars .live-example:nth-of-type(1) .rmwc-avatar, -#page-avatars .live-example:nth-of-type(2) .rmwc-avatar, -#page-avatars .live-example:nth-of-type(3) .rmwc-avatar, -#page-avatars .live-example:nth-of-type(4) .rmwc-avatar { - margin: 0.5rem; -} - -#page-avatars .live-preview .mdc-chip { - margin: 1rem; -} - -.document-component table th, -.document-component table td { - text-align: left; - padding: 16px; -} - -.document-component table { - margin-left: -16px; - min-width: 37rem; -} - -.document-component table th { - font-weight: bold; -} - -.docs-p + .live-example { - margin-top: 2rem; -} - -.docs-iframe { - border: 1px solid rgba(0, 0, 0, 0.2); - height: 350px; - max-height: 350px; - width: 100%; -} - -/** - * Code Examples - */ - -.live-example { - margin: 0 -1.5rem; - background-color: rgba(0, 0, 100, 0.03); - padding: 0.25rem 0; -} - -.live-example:hover { -} - -.live-example:hover .live-editor { - background: #eaeaef; -} - -.live-preview { - flex: 1; - padding: 0.5rem 1rem; - align-items: center; - display: flex; - position: relative; - box-sizing: border-box; -} - -.live-preview > div { - max-width: 100%; -} - -.live-preview-label { - opacity: 0.5; - margin-bottom: 0.25rem; -} - -.live-editor { - background: #f1f1f5; - font-size: 1rem; - flex: 1; - color: #343c5a; - position: relative; - display: flex; - box-sizing: border-box; -} - -.live-editor > * { - flex: 1; -} - -.live-editor textarea, -.live-editor pre { - padding: 1rem !important; -} - -.live-error { - position: absolute; - background: var(--mdc-theme-error); - color: var(--mdc-theme-on-error); - bottom: 100%; - left: 0; - width: 100%; - margin: 0; - overflow-y: auto; -} - -.live-example-center .live-preview { - justify-content: center; -} - -.live-example-code-only .live-error { - display: none; -} - -@media (min-width: 37.5rem) { - .live-example { - display: flex; - margin: 0 -3rem; - } - - .live-example:not(.live-example-code-only) .live-preview, - .live-example:not(.live-example-code-only) .live-editor { - max-width: 50%; - min-width: 50%; - } - - .live-preview { - padding-left: 3rem; - } - - .live-editor { - margin-right: 1.5rem; - } - - .live-example-code-only .live-editor textarea, - .live-example-code-only .live-editor pre { - padding: 1.5rem 3rem !important; - } -} - -/** - * Code Styles - */ -.live-editor code[class*='language-'], -.live-editor pre[class*='language-'] { - color: #343c5a !important; -} - -.live-editor .token.plain, -.live-editor .token.operator, -.live-editor .token.function-variable, -.live-editor .token.constant { - color: #343c5a !important; -} - -.live-editor .token.atrule, -.live-editor .token.attr-value, -.live-editor .token.keyword { - color: #220a82 !important; -} -.live-editor .token.punctuation, -.token.script-punctuation { - color: #747790 !important; - opacity: 1 !important; -} -.live-editor .token.entity, -.live-editor .token.url { - color: inherit !important; - background: none; -} -.live-editor .token.function, -.live-editor .token.class-name { - color: #e535ab !important; -} - -.live-editor - .token.tag:not(.attr-value):not(.attr-name):not(.punctuation):not(.script-punctuation) { - color: #e535ab !important; -} - -.live-editor .token.selector, -.live-editor .token.attr-name, -.live-editor .token.string, -.live-editor .token.char, -.live-editor .token.builtin, -.live-editor .token.inserted { - color: #009f97 !important; -} -.live-editor .token.comment, -.live-editor .token.prolog, -.live-editor .token.doctype, -.live-editor .token.cdata { - color: #9496aa !important; -} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx deleted file mode 100644 index fcadd9f6..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/styles/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import '../../styles'; -import 'prismjs/themes/prism.css'; -import './docs.css'; diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx deleted file mode 100644 index d1306c64..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/index.tsx +++ /dev/null @@ -1,276 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import * as RMWC from '../../../../types'; -import React, { useEffect, useState } from 'react'; -import { Route, Link, Switch as RouterSwitch } from 'react-router-dom'; - -import { menuContent, MenuItemT } from '../../common/menu-content'; - -import { version } from '../../../package.json'; - -import { - TopAppBar, - TopAppBarRow, - TopAppBarSection, - TopAppBarTitle, - TopAppBarNavigationIcon, - TopAppBarActionItem, - TopAppBarFixedAdjust -} from '../../../../top-app-bar'; - -import { Icon } from '../../../../icon'; -import { ThemeProvider } from '../../../../theme'; -import { Typography } from '../../../../typography'; -import { Ripple } from '../../../../ripple'; - -import { - Drawer, - DrawerContent, - DrawerAppContent, - DrawerProps -} from '../../../../drawer'; - -import { ListItem, CollapsibleList, SimpleListItem, List } from '../../../../list'; - -import { SimpleMenu, MenuItem } from '../../../../menu'; -import { Portal } from '../../../../base'; - -import Home from '../home'; -import { SiteSearch } from '../site-search'; -import { DOC_VERSIONS } from '../../common/doc-versions'; -import { ThemePicker, getTheme } from './theme-picker'; -import { history } from '../../common/history'; - -const MainMenuItem = ({ url, label }: { url?: string; label: string }) => { - return ( - window.scrollTo(0, 0)} - activated={ - window.location.pathname.split('/').pop() === url?.split('/').pop() - } - > - {label} - - ); -}; - -const GithubSvg = () => ( - - - -); - -function AppBar({ - onNavClick, - children -}: { - onNavClick: (evt: React.SyntheticEvent) => void; - children: React.ReactNode; -}) { - return ( - <> - - - - - - RMWC - - - {version} - - } - > - {version} - {DOC_VERSIONS.map((v) => ( - - {v} - - ))} - - - - - - {children} - } - /> - - - - - - ); -} - -function Nav(props: DrawerProps) { - return ( - <> - - - - - - - - - -
    -
    - Made with{' '} - - ❤️ - {' '} - in Sunny FL. -
    -
    Donate on Open Collective
    -
    -
    -
    -
    - - ); -} - -export function App() { - const isMobile = window.innerWidth < 640; - const [menuIsOpen, setMenuIsOpen] = useState(!isMobile); - const [pageId, setPageId] = useState( - `page-${window.location.pathname.split('/').pop() || 'home'}` - ); - const [theme, setTheme] = useState( - window.localStorage.getItem('rmwcTheme') || 'Baseline' - ); - - useEffect(() => { - isMobile && setMenuIsOpen(false); - const listener = (evt: any) => { - const _isMobile = window.innerWidth < 640; - if (_isMobile !== isMobile) { - setMenuIsOpen(!_isMobile); - } - }; - window.addEventListener('resize', listener); - return () => window.removeEventListener('resize', listener); - }, [isMobile]); - - useEffect(() => { - history.listen(() => { - setPageId(`page-${window.location.pathname.split('/').pop() || 'home'}`); - }); - }, []); - - return ( - - { - setMenuIsOpen(!menuIsOpen); - }} - > - {!isMobile && ( - { - window.localStorage.setItem('rmwcTheme', themeName); - setTheme(themeName); - }} - /> - )} - - -
    -
    - -
    - ); -} - -function NavItems({ options }: { options: MenuItemT[] }) { - return ( - <> - {options.map((m) => { - if (m.options) { - return ( - - o.url && - window.location.pathname.split('/').pop() === - o.url?.split('/').pop() - ) - } - handle={ - - } - > - - - ); - } - return ; - })} - - ); -} - -function DocRoutes({ options }: { options: MenuItemT[] }) { - return ( - <> - {options.map((m, index) => { - if (m.options) { - return ; - } - - return ( - { - document.title = `RMWC | React Material Web Components | ${m.label}`; - const Component = m.component || <>; - // @ts-ignore - return ; - }} - /> - ); - })} - - ); -} - -export default App; diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx deleted file mode 100644 index 1bdc9613..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/app/theme-picker.tsx +++ /dev/null @@ -1,335 +0,0 @@ -import * as RMWC from '../../../../types'; -import React from 'react'; -import { TabBar, Tab } from '../../../../tabs'; - -import { - ListItem, - ListGroupSubheader, - ListItemGraphic, - ListItemMeta -} from '../../../../list'; - -import { MenuSurface, MenuSurfaceAnchor } from '../../../../menu'; - -import { Button } from '../../../../button'; -import { toCamel, toDashCase } from '../../../../base'; -import { getAutoColorsForTheme } from '../../../../theme/utils'; -import { TopAppBarActionItem } from '../../../../top-app-bar'; - -const DEFAULT_THEME = { - '--mdc-theme-primary': '#6200ee', - '--mdc-theme-secondary': '#03dac4', - '--mdc-theme-background': '#fff', - '--mdc-theme-surface': '#fff', - '--mdc-theme-error': '#b00020' -}; - -const TEXT_DEFAULTS = { - '--mdc-theme-on-primary': '#fff', - '--mdc-theme-on-secondary': '#fff', - '--mdc-theme-on-surface': '#000', - '--mdc-theme-on-error': '#fff', - '--mdc-theme-text-primary-on-background': 'rgba(0, 0, 0, 0.87)', - '--mdc-theme-text-secondary-on-background': 'rgba(0, 0, 0, 0.54)', - '--mdc-theme-text-hint-on-background': 'rgba(0, 0, 0, 0.38)', - '--mdc-theme-text-disabled-on-background': 'rgba(0, 0, 0, 0.38)', - '--mdc-theme-text-icon-on-background': 'rgba(0, 0, 0, 0.38)', - '--mdc-theme-text-primary-on-light': 'rgba(0, 0, 0, 0.87)', - '--mdc-theme-text-secondary-on-light': 'rgba(0, 0, 0, 0.54)', - '--mdc-theme-text-hint-on-light': 'rgba(0, 0, 0, 0.38)', - '--mdc-theme-text-disabled-on-light': 'rgba(0, 0, 0, 0.38)', - '--mdc-theme-text-icon-on-light': 'rgba(0, 0, 0, 0.38)', - '--mdc-theme-text-primary-on-dark': 'white', - '--mdc-theme-text-secondary-on-dark': 'rgba(255, 255, 255, 0.7)', - '--mdc-theme-text-hint-on-dark': 'rgba(255, 255, 255, 0.5)', - '--mdc-theme-text-disabled-on-dark': 'rgba(255, 255, 255, 0.5)', - '--mdc-theme-text-icon-on-dark': 'rgba(255, 255, 255, 0.5)' -}; - -const THEMES: { [key: string]: { [key: string]: string } } = { - Baseline: { - '--mdc-theme-primary': '#6200ee', - '--mdc-theme-secondary': - '#03dac4' /** Any theme option pointing to a valid CSS value. */ - }, - Crane: { - '--mdc-theme-primary': '#5d1049', - '--mdc-theme-secondary': '#fa3336' - }, - Fortnightly: { - '--mdc-theme-primary': '#303030', - '--mdc-theme-secondary': '#661fff' - }, - Shrine: { - '--mdc-theme-primary': '#ffdbcf', - '--mdc-theme-secondary': '#feeae6' - }, - Dark: { - '--mdc-theme-background': '#212121', - '--mdc-theme-surface': '#37474F', - '--mdc-theme-on-surface': 'rgba(255,255,255,.87)', - '--mdc-theme-primary': '#24aee9', - '--mdc-theme-on-primary': 'rgba(255,255,255,.87)', - '--mdc-theme-secondary': '#e539ff', - '--mdc-theme-on-secondary': 'rgba(0,0,0,0.87)' - } -}; - -export class ThemePicker extends React.Component<{ - selectedThemeName: string; - onThemeClick: (themeName: string) => void; -}> { - state = { - open: false, - activeTabIndex: 0 - }; - - componentDidUpdate() { - window.requestAnimationFrame(() => - window.dispatchEvent(new Event('resize')) - ); - } - - render() { - const { selectedThemeName, onThemeClick } = this.props; - const selectedTheme = getTheme(selectedThemeName); - return ( - - { - this.setState({ open: false }); - }} - > - Themes - {Object.keys(THEMES).map(themeName => { - const theme: { [key: string]: string } = getTheme(themeName); - return ( - ) => { - evt.stopPropagation(); - onThemeClick(themeName); - }} - > -
    - - {themeName} - - - - - - - - ); - })} - this.setState({ open: true })} - style={{ margin: '1rem auto -1rem auto' }} - activeTabIndex={this.state.activeTabIndex} - onActivate={evt => - this.setState({ activeTabIndex: evt.detail.index }) - } - > - ThemeProvider - CSS - - this.setState({ open: true })} - ripple={false} - style={{ - backgroundColor: 'rgba(0,0,0,.05)', - padding: '1rem', - marginTop: '1rem', - display: 'block', - height: 'auto', - userSelect: 'initial', - cursor: 'text' - }} - > - {this.state.activeTabIndex === 0 ? ( -
    -
    - Theme your App! -
    - Place this tag around the root of your App, or anywhere you - want to apply a custom theme. -
    -
    -
    - import {'{'}{' '} - ThemeProvider {'}'} from{' '} - 'rmwc/Theme'; -
    -
    - < - ThemeProvider - options={'{{'} - {Object.entries(selectedTheme).map( - ([t, val]: [string, any], index, arr) => ( -
    - - -    - {toCamel(t.split('--mdc-theme-')[1])}: - {' '} - '{val}'{index < arr.length - 1 ? ',' : ''} - - - -
    - ) - )} - {'}}'} - > -
    -    - < - App - /> -
    - </ - ThemeProvider - > -
    - ) : ( -
    -
    - Theme your App! -
    - Copy and paste these rules into your main css file, or a style - tag in your app and customize to your liking. -
    -
    -
    - :root {'{'} - {Object.entries(selectedTheme).map( - ([t, val]: [string, any]) => ( -
    - - -    - {t}: - {' '} - {val}; - - - -
    - ) - )} - {'}'} -
    - )} -
    -
    - -
    - - this.setState({ open: !this.state.open })} - theme="onPrimary" - icon="color_lens" - /> - - ); - } -} - -export const getTheme = (themeName: string) => { - const theme = { - ...DEFAULT_THEME, - ...(THEMES[themeName] || {}) - }; - - const colors = getAutoColorsForTheme(theme); - const merged: { [key: string]: string } = { - ...TEXT_DEFAULTS, - ...colors - }; - - const order: RMWC.ThemeOptionT[] = [ - 'primary', - 'secondary', - 'error', - 'background', - 'surface', - 'onPrimary', - 'onSecondary', - 'onSurface', - 'onError', - 'textPrimaryOnBackground', - 'textSecondaryOnBackground', - 'textHintOnBackground', - 'textDisabledOnBackground', - 'textIconOnBackground', - 'textPrimaryOnLight', - 'textSecondaryOnLight', - 'textHintOnLight', - 'textDisabledOnLight', - 'textIconOnLight', - 'textPrimaryOnDark', - 'textSecondaryOnDark', - 'textHintOnDark', - 'textDisabledOnDark', - 'textIconOnDark' - ]; - - return order.reduce<{ [key: string]: string }>((acc, key) => { - const newKey = `--mdc-theme-${toDashCase(key!)}`; - acc[newKey] = merged[newKey]; - return acc; - }, {}); -}; - -const ColorBlock = ({ - color, - size = 1.5 -}: { - color: string; - size?: number; -}) => ( -
    -); diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css deleted file mode 100644 index 5e6b98d3..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/home.module.css +++ /dev/null @@ -1,193 +0,0 @@ -/* page home */ -:global(#page-home .app__content) { - display: flex; - flex-direction: column; -} - -:global(#page-home .mdc-layout-grid) { - padding: 0; -} - -.headline1 { - margin-bottom: 0.5rem; -} - -.headline2 { - margin-top: 0; - margin-bottom: 2rem; - opacity: 0.8; -} - -.header { - display: flex; - align-items: center; - position: relative; - box-sizing: border-box; - flex: 1; - background-color: var(--mdc-theme-primary); -} - -.header a { - text-decoration: none; -} - -.header:before { - content: ''; - background-image: linear-gradient(white, transparent); - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: 0.1; - pointer-events: none; -} - -.header .container { - max-width: 720px; - position: relative; -} - -.container { - max-width: 720px; - text-align: center; -} - -.intro { - text-align: center; - margin-bottom: 3rem; -} - -:global(#page-home .mdc-layout-grid__cell) { - display: flex; - flex-direction: column; -} - -.featureGrid { - position: relative; -} - -.featureGrid a { - display: flex; - flex: 1; - flex-direction: column; -} - -.featureGrid a > div { - flex: 1; -} - -.checklist { - text-align: left; - display: inline-block; - margin-top: 1rem; -} - -.checklist > div { - margin: 0.5rem 0; - display: flex; - align-items: center; - line-height: 1.4; -} - -.checklist i { - vertical-align: middle; - margin-right: 1rem; - position: relative; - top: -1px; -} - -.examples { - display: grid !important; - grid-template-columns: 1fr; - width: 100%; - background: rgba(0, 0, 0, 0.05); - padding: 0 !important; - padding-bottom: 3rem !important; -} - -.example { - background: white; - position: relative; - border: 1px solid rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -.example:before { - content: ''; - display: block; - padding-top: 100%; -} - -.example:after { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - opacity: 0; - background-color: var(--mdc-theme-primary); -} - -.example:hover .exampleInner { - transform: scale(1.2); -} - -.example:hover .exampleName { - transform: translateY(-1rem); - opacity: 1; -} - -.example:hover:after { - opacity: 0.05; -} - -.exampleInner { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: flex; - align-items: center; - justify-content: center; - transition: 0.3s; - transform: scale(1); -} - -.exampleName { - padding: 1rem; - text-align: center; - position: absolute; - bottom: 0; - left: 0; - right: 0; - opacity: 0.8; - transform: translateY(0); - transition: 0.3s; -} - -@media (min-width: 37.5rem) { - .examples { - grid-template-columns: 1fr 1fr; - } -} - -@media (min-width: 77.5rem) { - .examples { - grid-template-columns: 1fr 1fr 1fr; - } -} - -@media (min-width: 103.125rem) { - .examples { - grid-template-columns: 1fr 1fr 1fr 1fr; - } -} - -@media (min-width: 135rem) { - .examples { - grid-template-columns: 1fr 1fr 1fr 1fr 1fr; - } -} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx deleted file mode 100644 index 2aa14517..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/home/index.tsx +++ /dev/null @@ -1,179 +0,0 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { version } from '../../../package.json'; -import { Typography } from '@rmwc/typography'; - -import { Card, CardMedia } from '@rmwc/card'; -import { Grid, GridCell } from '@rmwc/grid'; -import { Theme } from '@rmwc/theme'; -import { Icon } from '@rmwc/icon'; - -import styles from './home.module.css'; -import { Button } from '@rmwc/button'; - -import { galleryContent } from '../../common/menu-content'; - -const checklist = [ - "Uses Google's official material-components-web library", - 'Includes additional addon components not offered by Google.', - 'Works in React from 16.8.x and up', - 'First class Typescript Support', - 'Server side rendering support', - 'Individually packaged and released components' -]; - -function Example({ - ex, - name, - url -}: { - ex: React.ReactNode; - name: string; - url: string; -}) { - return ( - window.scrollTo(0, 0)} - > -
    -
    {ex}
    -
    -
    - {name} -
    - - ); -} - -export const Home = () => { - return ( - -
    -
    - -
    - - React Material Web Components - - - A React UI Kit built on Google's official Material Components - Web library - - - - - - - v{version} - - -
    - {checklist.map((c) => ( -
    -
    {c}
    -
    - ))} -
    -
    -
    - - - - - -
    - - Simple to Use - - - Get started in 5 minutes. - -
    - -
    - -
    - - - -
    - - Material Accuracy - - - Uses Google's official Material Components Web library. - -
    - - -
    -
    - - - - -
    - - Easy to Customize - - - Integrate with a variety of CSS workflows. - -
    - - -
    - -
    -
    -
    -
    - -
    - {galleryContent.map((ex) => { - return ( - - ); - })} -
    -
    - ); -}; -export default Home; diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx deleted file mode 100644 index ad9a78d7..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/index.tsx +++ /dev/null @@ -1,261 +0,0 @@ -import React from 'react'; - -import { - Card, - CardPrimaryAction, - CardMedia, - CardActionButton, - CardActions, - CardActionButtons -} from '@rmwc/card'; - -import { Icon } from '@rmwc/icon'; - -import { Typography } from '@rmwc/typography'; - -import styles from './resources.module.css'; - -type ResourceT = { - name: string; - description: string; - img: string; - url: string; - icon: React.ReactElement; - actions: { label: string; url: string }[]; -}; - -const RESOURCES: ResourceT[] = [ - { - name: 'Visit Github', - description: 'Browse the code, the issues, the changelog.', - img: 'images/backgrounds/mb-bg-fb-02.png', - url: 'https://github.com/jamesmfriedman/rmwc', - icon: ( - - - - ), - actions: [ - { label: 'Visit Github', url: 'https://github.com/jamesmfriedman/rmwc' } - ] - }, - { - name: 'Code Sandbox', - description: - 'Play around with RMWC components in both Javascript and Typescript. Useful for kicking the tires, or reproducing issues.', - url: 'https://codesandbox.io/s/rmwc-sandbox-o0s0d', - img: 'images/backgrounds/mb-bg-fb-09.png', - icon: ( - - - - ), - actions: [ - { - label: 'Javascript', - url: 'https://codesandbox.io/s/rmwc-sandbox-o0s0d' - }, - { - label: 'Typescript', - url: 'https://codesandbox.io/s/rmwc-typescript-sandbox-y7516' - } - ] - }, - { - name: 'Chat on Discord', - description: - 'Join the conversation. Get quicker responses to questions and feedback.', - url: 'https://discord.gg/4BSUxCW', - img: 'images/backgrounds/mb-bg-fb-12.png', - icon: ( - - - - ), - actions: [{ label: 'Start Chatting', url: 'https://discord.gg/4BSUxCW' }] - }, - { - name: 'Donate on OpenCollective', - description: - 'This library is built with Typescript, sweat, and thousands of hours of hard work. Help support Open Source Software!', - url: 'https://opencollective.com/rmwc', - img: 'images/backgrounds/mb-bg-fb-07.png', - icon: ( - - - - ), - actions: [ - { - label: 'Donate', - url: 'https://opencollective.com/rmwc' - } - ] - }, - { - name: 'Share', - description: - "Don't keep letting your friends build software with bad UI libraries. Spread the word about RMWC.", - url: `https://twitter.com/intent/tweet?text=${encodeURIComponent( - 'You should definitely be using RMWC for your next project! https://rmwc.io' - )}`, - img: 'images/backgrounds/mb-bg-fb-15.png', - icon: ( - - - - ), - actions: [ - { - label: 'Tweet', - url: `https://twitter.com/intent/tweet?text=${encodeURIComponent( - 'You should definitely be using RMWC for your next project! https://rmwc.io' - )}` - }, - { - label: 'Star on Github', - url: `https://github.com/jamesmfriedman/rmwc` - } - ] - }, - { - name: 'Updates', - description: - 'Read the change blog and also review auto generated changes between releases.', - url: 'https://opencollective.com/rmwc/updates', - img: 'images/backgrounds/mb-bg-fb-22.png', - icon: ( - - - - ), - actions: [ - { label: 'Blog', url: 'https://opencollective.com/rmwc/updates' }, - { - label: 'Changelog', - url: 'https://github.com/jamesmfriedman/rmwc/blob/master/CHANGELOG.md' - } - ] - }, - { - name: 'Open an Issue', - description: - 'Experiencing a problem or have a feature request? File an issue and let us know how we can help.', - url: 'https://github.com/jamesmfriedman/rmwc/issues/new', - img: 'images/backgrounds/mb-bg-fb-27.png', - icon: ( - - - - ), - actions: [ - { - label: 'New Issue', - url: 'https://github.com/jamesmfriedman/rmwc/issues/new' - } - ] - }, - { - name: 'Contribute', - description: - "This project accepts Pull Requests from the community. Don't be scared, getting started is as easy as running `npm i`.", - url: 'https://github.com/jamesmfriedman/rmwc/blob/master/CONTRIBUTING.md', - img: 'images/backgrounds/mb-bg-fb-30.png', - icon: ( - - - - ), - actions: [ - { - label: 'Read Guidelines', - url: - 'https://github.com/jamesmfriedman/rmwc/blob/master/CONTRIBUTING.md' - } - ] - } -]; - -export default function Resources() { - return ( -
    -

    Resources

    -
    -
    - {RESOURCES.map(r => ( - - ))} -
    -
    -
    - ); -} - -function ResourceCard({ resource }: { resource: ResourceT }) { - return ( - - - - - -
    - - {resource.name} - - - {resource.description} - -
    -
    - - - - {resource.actions.map(a => ( - - ))} - - -
    - ); -} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css deleted file mode 100644 index 6cd99e03..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/resources/resources.module.css +++ /dev/null @@ -1,51 +0,0 @@ -.cardGridInner { - display: grid !important; - grid-gap: 1rem; -} - -.icon { - font-size: 6rem; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%) scale(1); - color: white; - fill: currentColor; - transition: 0.3s; - min-width: 1em; - max-width: 1em; -} - -.card .cardMedia { - transition: 0.3s; - background-size: 120%; -} - -.card:hover .cardMedia { - background-size: 100%; -} - -.card:hover .icon { - transform: translate(-50%, -50%) scale(1.2); -} - -@media (min-width: 37.5rem) { -} - -@media (min-width: 48rem) { - .cardGridInner { - grid-template-columns: 1fr 1fr; - } -} - -@media (min-width: 90rem) { - .cardGridInner { - grid-template-columns: 1fr 1fr 1fr; - } -} - -@media (min-width: 100rem) { - .cardGridInner { - grid-template-columns: 1fr 1fr 1fr 1fr; - } -} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx deleted file mode 100644 index 00212bb1..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/index.tsx +++ /dev/null @@ -1,209 +0,0 @@ -import React, { useState, useRef } from 'react'; -import { menuContent, MenuItemT } from '../../common/menu-content'; -import { Menu, MenuItems, MenuSurfaceAnchor } from '../../../../menu'; - -import { SimpleListItem } from '../../../../list'; -import { TextField } from '../../../../textfield'; -import { Link } from 'react-router-dom'; -import { CircularProgress } from '../../../../circular-progress'; - -import { history } from '../../common/history'; -import styles from './site-search.module.css'; -import { IconPropT } from '../../../../types'; - -type SiteSearchItemT = { - cacheId: string; //"-uBq3tnNfuMJ" - displayLink: string; //"rmwc.io" - formattedUrl: string; //"https://rmwc.io/?p=installation" - htmlSnippet: string; //"npm i ../../../../button --save or yarn add ../../../../button; Include the individual
    ↵components stylesheets (listed on their docs page) in your project via your
    ↵method ..." - htmlTitle: string; //"RMWC | React Material Web Components | Installation" - kind: string; //"customsearch#result" - link: string; //"https://rmwc.io/?p=installation" - snippet: string; //"npm i ../../../../button --save or yarn add ../../../../button; Include the individual ↵components stylesheets (listed on their docs page) in your project via your ↵method ..." - title: string; //"RMWC | React Material Web Components | Installation" -}; - -const componentsList = (() => { - const walkOptions = (options: MenuItemT[]) => { - return options.reduce((acc, val) => { - if (val.options) { - acc.push(...walkOptions(val.options!)); - } else { - acc.push(val); - } - return acc; - }, []); - }; - - return walkOptions(menuContent); -})(); - -const searchComponents = (val: string) => - componentsList - .filter(c => { - return c.label.toLowerCase().includes(val.toLowerCase()); - }) - .map(c => ({ - id: c.label, - icon: { - icon: 'code', - theme: 'primary' - }, - sectionName: c.label, - snippet: `View docs for ${c.label}`, - url: c.url! - })); - -const searchGoogle = async (val: string, abortController: AbortController) => { - const { - items = [] - } = await fetch( - `https://www.googleapis.com/customsearch/v1/siterestrict?key=${process.env.REACT_APP_CUSTOM_SEARCH_KEY}&cx=${process.env.REACT_APP_CUSTOM_SEARCH_ID}&q=${val}`, - { signal: abortController.signal } - ).then<{ items?: SiteSearchItemT[] }>(res => res.json()); - - return ( - items - // shitty hack to ignore things in the index that just reference them homepage - .filter(r => !r.snippet.startsWith('RMWC is a React wrapper')) - .map(r => ({ - id: r.cacheId, - icon: { - icon: 'notes', - theme: 'primary' - }, - sectionName: (r.title.split('|').pop() || '').trim(), - snippet: r.snippet, - // resolve from the full url into the page - url: ( - (r.formattedUrl.split('?').pop() || '') - .split('&') - .find(p => p.startsWith('p=')) || '' - ).slice(2) - })) - ); -}; - -export function SiteSearch() { - const [searchVal, _setSearchVal] = useState(''); - const [isSearching, setIsSearching] = useState(false); - const timerIdRef = useRef(); - const abortControllerRef = useRef(); - const [results, setResults] = useState< - Array<{ - id: string; - sectionName: string; - icon: IconPropT; - snippet: string; - url: string; - }> - >([]); - - const doSearch = (val: string) => { - if (abortControllerRef.current) { - abortControllerRef.current.abort(); - abortControllerRef.current = undefined; - } - - if (timerIdRef.current) { - clearTimeout(timerIdRef.current); - } - - const abortController = new AbortController(); - abortControllerRef.current = abortController; - - timerIdRef.current = window.setTimeout(async () => { - const components = searchComponents(val); - setResults(components); - - try { - const searchResults = await searchGoogle(val, abortController); - abortControllerRef.current = undefined; - setResults([...components, ...searchResults]); - } catch (err) { - console.warn(err); - abortControllerRef.current = undefined; - } - }, 200); - }; - - const setSearchVal = (val: string) => { - if (val.length > 2) { - !isSearching && setIsSearching(true); - doSearch(val); - } else { - setResults([]); - } - - _setSearchVal(val); - }; - - return ( - - setSearchVal('') - }} - outlined - className={styles.siteSearch} - value={searchVal} - onChange={evt => setSearchVal(evt.currentTarget.value)} - onFocus={() => setIsSearching(true)} - onKeyDown={evt => { - if (evt.which === 40) { - const listItem = document.querySelector( - `.${styles.siteSearchMenu} a` - ); - - if (isSearching && listItem) { - listItem.focus(); - } - } - }} - /> - 2} - anchorCorner="bottomStart" - focusOnOpen={false} - onFocus={() => setIsSearching(true)} - onClose={() => { - setIsSearching(false); - }} - onSelect={evt => { - window.scrollTo(0, 0); - history.replace( - (evt.detail.item as HTMLAnchorElement).href.split('/').pop() || '/' - ); - document.activeElement && - (document.activeElement as HTMLElement).blur(); - }} - > - - {results.map(r => ( - - ))} - {!!abortControllerRef.current && ( -
    - -
    - )} - - {!abortControllerRef.current && !results.length && ( - - )} -
    -
    -
    - ); -} diff --git a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css b/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css deleted file mode 100644 index 0eb3b127..00000000 --- a/packages/mc-react-ui-components/src/lib/rmwc/docs/views/site-search/site-search.module.css +++ /dev/null @@ -1,60 +0,0 @@ -.siteSearchWrapper { - margin-left: 0.75rem; -} - -.siteSearch { - height: 2.5rem; - color: var(--mdc-theme-on-primary, white) !important; -} - -.siteSearch input { - color: inherit !important; -} - -.siteSearch input::placeholder { - color: inherit !important; - opacity: 0.7 !important; -} - -.siteSearch :global([class*='mdc-notched-outline__']) { - border-color: var(--mdc-theme-on-primary, white) !important; - opacity: 0.6; -} - -.siteSearch:global(.mdc-text-field--focused [class*='mdc-notched-outline__']) { - opacity: 1; -} - -.siteSearchMenu { - width: 40rem; - max-width: 100vw; -} - -.siteSearchMenu :global(.mdc-list-item__text) { - white-space: normal; -} - -.siteSearchMenu :global(.mdc-list-item__secondary-text) { - white-space: normal; - padding-bottom: 1rem; -} - -.siteSearchMenu :global(.mdc-list-item) { - height: auto !important; - min-height: 4.5rem; -} - -.siteSearch :global(.rmwc-icon) { - color: inherit !important; -} - -.loading { - padding: 1rem; - text-align: center; -} - -@media (max-width: 640px) { - .siteSearchWrapper { - display: none; - } -} diff --git a/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx b/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx index c87b9530..e7d443ee 100644 --- a/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useFoundation } from '@rmwc/base'; -import { IconProps } from '@rmwc/icon'; +import { useFoundation } from '../../base'; +import { IconProps } from '../../icon'; import { EventType, SpecificEventListener } from '@material/base/types'; import { MDCSelectIconFoundation } from '@material/select'; import { MDCTextFieldIconFoundation } from '@material/textfield'; diff --git a/packages/mc-react-ui-components/src/lib/select/select/foundation.tsx b/packages/mc-react-ui-components/src/lib/select/select/foundation.tsx index 2e9cf041..7f2885b6 100644 --- a/packages/mc-react-ui-components/src/lib/select/select/foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/select/select/foundation.tsx @@ -1,12 +1,12 @@ import React, { useCallback, useState, useRef, useEffect } from 'react'; -import { useFoundation, raf } from '@rmwc/base'; +import { useFoundation, raf } from '../../base'; import { MDCSelectFoundation, MDCSelectAdapter, cssClasses } from '@material/select'; -import { FloatingLabelApi } from '@rmwc/floating-label'; -import { MenuApi } from '@rmwc/menu'; +import { FloatingLabelApi } from '../../floating-label'; +import { MenuApi } from '../../menu'; import { Corner } from '@material/menu-surface'; import { SelectIconApi } from '../select-icon'; import { SelectProps } from './'; @@ -105,7 +105,7 @@ export const useSelectFoundation = ( getSelectedTextAttr: (attr: any) => selectedTextEl.getProp(attr), setSelectedTextAttr: (attr: any, value: string) => { if (attr === 'tabindex') { - // Fixes bug 595 https://github.com/jamesmfriedman/rmwc/issues/595. + // Fixes bug 595 https://github.com/jamesmfriedman../../issues/595. // Native selects don't need tabIndexes on the root element if (isNative()) return; attr = 'tabIndex'; diff --git a/packages/mc-react-ui-components/src/lib/select/styles.tsx b/packages/mc-react-ui-components/src/lib/select/styles.tsx index 5d499fd0..bfb94804 100644 --- a/packages/mc-react-ui-components/src/lib/select/styles.tsx +++ b/packages/mc-react-ui-components/src/lib/select/styles.tsx @@ -1,8 +1,8 @@ -import '@rmwc/select/select.css'; import '@material/select/dist/mdc.select.css'; -import '@rmwc/floating-label/styles'; -import '@rmwc/notched-outline/styles'; -import '@rmwc/line-ripple/styles'; -import '@rmwc/list/styles'; -import '@rmwc/menu/styles'; -import '@rmwc/ripple/styles'; +import '../select/select.css'; +import '../floating-label/styles'; +import '../notched-outline/styles'; +import '../line-ripple/styles'; +import '../list/styles'; +import '../menu/styles'; +import '../ripple/styles'; diff --git a/packages/mc-react-ui-components/src/lib/slider/foundation.tsx b/packages/mc-react-ui-components/src/lib/slider/foundation.tsx index c8c58a00..083ef0eb 100644 --- a/packages/mc-react-ui-components/src/lib/slider/foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/slider/foundation.tsx @@ -1,9 +1,9 @@ import React, { useRef, useEffect } from 'react'; import { SliderProps } from '.'; -import { useFoundation, emptyClientRect } from '@rmwc/base'; +import { useFoundation, emptyClientRect } from '../base'; import { EventType, SpecificEventListener } from '@material/base/types'; -import { debounce } from '@rmwc/base'; +import { debounce } from '../base'; import { MDCSliderFoundation } from '@material/slider'; diff --git a/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx b/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx index d80efe09..733b2a44 100644 --- a/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx @@ -1,8 +1,8 @@ import React, { useEffect } from 'react'; import { SnackbarProps } from '.'; import { MDCSnackbarFoundation, util } from '@material/snackbar'; -import { closest, triggerWindowResize } from '@rmwc/base'; -import { useFoundation } from '@rmwc/base'; +import { closest, triggerWindowResize } from '../base'; +import { useFoundation } from '../base'; /** Monkey patch the foundation to accept dynamic reasons rather than just "action" */ // @ts-ignore diff --git a/packages/mc-react-ui-components/src/lib/switch/styles.tsx b/packages/mc-react-ui-components/src/lib/switch/styles.tsx index fafb46eb..a64e6391 100644 --- a/packages/mc-react-ui-components/src/lib/switch/styles.tsx +++ b/packages/mc-react-ui-components/src/lib/switch/styles.tsx @@ -1,3 +1,3 @@ import '@material/switch/dist/mdc.switch.css'; -import '@rmwc/formfield/styles'; -import '@rmwc/ripple/styles'; +import '../formfield/styles'; +import '../ripple/styles'; diff --git a/packages/mc-react-ui-components/src/lib/tabs/styles.tsx b/packages/mc-react-ui-components/src/lib/tabs/styles.tsx index c36640c4..8f6eed41 100644 --- a/packages/mc-react-ui-components/src/lib/tabs/styles.tsx +++ b/packages/mc-react-ui-components/src/lib/tabs/styles.tsx @@ -2,5 +2,5 @@ import '@material/tab-bar/dist/mdc.tab-bar.css'; import '@material/tab/dist/mdc.tab.css'; import '@material/tab-scroller/dist/mdc.tab-scroller.css'; import '@material/tab-indicator/dist/mdc.tab-indicator.css'; -import '@rmwc/ripple/styles'; -import '@rmwc/icon/styles'; +import '../ripple/styles'; +import '../icon/styles'; diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-bar-foundation.tsx b/packages/mc-react-ui-components/src/lib/tabs/tab-bar-foundation.tsx index d8e695e6..70c33794 100644 --- a/packages/mc-react-ui-components/src/lib/tabs/tab-bar-foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/tabs/tab-bar-foundation.tsx @@ -1,6 +1,6 @@ import React, { useRef, useEffect, useCallback, useState } from 'react'; import { TabBarProps } from './tab-bar'; -import { useFoundation } from '@rmwc/base'; +import { useFoundation } from '../base'; import { MDCTabBarFoundation } from '@material/tab-bar'; import { TabScrollerApi } from './tab-scroller'; import { MDCTabInteractionEvent } from '@material/tab'; diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-foundation.tsx b/packages/mc-react-ui-components/src/lib/tabs/tab-foundation.tsx index a63cd2d2..955a0596 100644 --- a/packages/mc-react-ui-components/src/lib/tabs/tab-foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/tabs/tab-foundation.tsx @@ -1,6 +1,6 @@ import React, { useRef, useContext, useEffect, useMemo } from 'react'; import { TabProps, TabApi } from './tab'; -import { useFoundation, useId, emptyClientRect } from '@rmwc/base'; +import { useFoundation, useId, emptyClientRect } from '../base'; import { MDCTabFoundation } from '@material/tab'; import { TabIndicatorApi } from './tab-indicator'; import { TabBarContext } from './tab-bar-context'; diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx b/packages/mc-react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx index 8b92c1eb..bb73afb4 100644 --- a/packages/mc-react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx @@ -1,5 +1,5 @@ import { TabIndicatorProps, TabIndicatorApi } from './tab-indicator'; -import { useFoundation, emptyClientRect } from '@rmwc/base'; +import { useFoundation, emptyClientRect } from '../base'; import { MDCFadingTabIndicatorFoundation, MDCSlidingTabIndicatorFoundation, diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx b/packages/mc-react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx index dca7ccbe..24b43ace 100644 --- a/packages/mc-react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useFoundation, emptyClientRect } from '@rmwc/base'; -import { matches } from '@rmwc/base'; +import { useFoundation, emptyClientRect } from '../base'; +import { matches } from '../base'; import { MDCTabScrollerFoundation, util as scrollerUtil diff --git a/packages/mc-react-ui-components/src/lib/textfield/styles.tsx b/packages/mc-react-ui-components/src/lib/textfield/styles.tsx index 6d2d6176..11406d95 100644 --- a/packages/mc-react-ui-components/src/lib/textfield/styles.tsx +++ b/packages/mc-react-ui-components/src/lib/textfield/styles.tsx @@ -1,6 +1,6 @@ import '@material/textfield/dist/mdc.textfield.css'; -import '@rmwc/floating-label/styles'; -import '@rmwc/notched-outline/styles'; -import '@rmwc/line-ripple/styles'; -import '@rmwc/ripple/styles'; -import '@rmwc/icon/styles'; +import '../floating-label/styles'; +import '../notched-outline/styles'; +import '../line-ripple/styles'; +import '../ripple/styles'; +import '../icon/styles'; diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx index 251344cd..f5424f50 100644 --- a/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { useFoundation } from '@rmwc/base'; +import { useFoundation } from '../base'; import { TextFieldCharacterCountProps, TextFieldCharacterCountApi } from '.'; import { MDCTextFieldCharacterCounterFoundation } from '@material/textfield'; diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx index 0e16ba27..4b030c6f 100644 --- a/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx @@ -1,5 +1,5 @@ import { useState, useRef, useEffect } from 'react'; -import { useFoundation } from '@rmwc/base'; +import { useFoundation } from '../base'; import { EventType, SpecificEventListener } from '@material/base/types'; import { MDCTextFieldFoundation } from '@material/textfield'; import { @@ -7,7 +7,7 @@ import { TextFieldCharacterCountApi, TextFieldIconApi } from '.'; -import { FloatingLabelApi } from '@rmwc/floating-label'; +import { FloatingLabelApi } from '../floating-label'; export const useTextFieldFoundation = (props: TextFieldProps) => { const [lineRippleActive, setLineRippleActive] = useState(false); diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx index 522162da..6e84c082 100644 --- a/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useFoundation } from '@rmwc/base'; -import { IconProps } from '@rmwc/icon'; +import { useFoundation } from '../base'; +import { IconProps } from '../icon'; import { EventType, SpecificEventListener } from '@material/base/types'; import { MDCTextFieldIconFoundation } from '@material/textfield'; diff --git a/packages/mc-react-ui-components/src/lib/theme/styles.tsx b/packages/mc-react-ui-components/src/lib/theme/styles.tsx index 142243ba..78b11f8f 100644 --- a/packages/mc-react-ui-components/src/lib/theme/styles.tsx +++ b/packages/mc-react-ui-components/src/lib/theme/styles.tsx @@ -1,2 +1,2 @@ import '@material/theme/dist/mdc.theme.css'; -import '@rmwc/theme/theme.css'; +import '../theme/theme.css'; diff --git a/packages/mc-react-ui-components/src/lib/tooltip/index.tsx b/packages/mc-react-ui-components/src/lib/tooltip/index.tsx index d68cc1b1..ebe4efab 100644 --- a/packages/mc-react-ui-components/src/lib/tooltip/index.tsx +++ b/packages/mc-react-ui-components/src/lib/tooltip/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import { classNames } from '@rmwc/base'; +import { classNames } from '../base'; import ReactTooltip from 'rc-tooltip'; -import { useProviderContext } from '@rmwc/provider'; +import { useProviderContext } from '../provider'; export type TooltipActivationT = 'hover' | 'click' | 'focus'; diff --git a/packages/mc-react-ui-components/src/lib/tooltip/styles.tsx b/packages/mc-react-ui-components/src/lib/tooltip/styles.tsx index a0b88605..10914891 100644 --- a/packages/mc-react-ui-components/src/lib/tooltip/styles.tsx +++ b/packages/mc-react-ui-components/src/lib/tooltip/styles.tsx @@ -1 +1 @@ -import '@rmwc/tooltip/tooltip.css'; +import '../tooltip/tooltip.css'; diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx index 3b725e8d..402686f6 100644 --- a/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef } from 'react'; import { TopAppBarProps } from '.'; -import { useFoundation } from '@rmwc/base'; +import { useFoundation } from '../base'; import { MDCTopAppBarFoundation, diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx index e982ead5..d7498841 100644 --- a/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx @@ -1,4 +1,4 @@ import '@material/top-app-bar/dist/mdc.top-app-bar.css'; -import '@rmwc/icon-button/styles'; -import '@rmwc/ripple/styles'; -import '@rmwc/icon/styles'; +import '../icon-button/styles'; +import '../ripple/styles'; +import '../icon/styles'; diff --git a/packages/mc-react-ui-components/tsbuildconfig.json b/packages/mc-react-ui-components/tsbuildconfig.json index fcb8d0af..0cdd1c88 100644 --- a/packages/mc-react-ui-components/tsbuildconfig.json +++ b/packages/mc-react-ui-components/tsbuildconfig.json @@ -21,7 +21,8 @@ "sourceMap": true, "declaration": true, "declarationMap": true, - "rootDir": "src/lib" + "rootDir": "src/lib", + "downlevelIteration": true }, "include": [ "src" diff --git a/yarn.lock b/yarn.lock index e1a9844d..63b57bff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2351,16 +2351,38 @@ resolved "https://registry.yarnpkg.com/@material/animation/-/animation-0.25.0.tgz#b252ac3d0b628e79a79f0c406d7470fb56352a80" integrity sha512-4RzlpMwJtMnQ3/rNf4zpG9qnoQcCkYiRs6U515MRQzv7qFl1eCZx3U3dGaUu7UVf3Hwx4RskUB/fBxGc0b61CQ== +"@material/animation@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/animation/-/animation-5.1.0.tgz#f2d2ffe346f2612bb40d9e8bfb976290b91173f7" + integrity sha512-qZuPCZkTsCQCzx5EtY2eNBcmYOMGMbFVq6VTmvQztDCYDykT8JfP8Hpk55Y5bGORHvBbIasUXzoAhfQs6w/Bdg== + dependencies: + tslib "^1.9.3" + "@material/auto-init@^0.25.0": version "0.25.0" resolved "https://registry.yarnpkg.com/@material/auto-init/-/auto-init-0.25.0.tgz#4e1bd1e3d1ca05fd937130dd1f17f5ce2f4584a5" integrity sha512-5nZOslGcZUczKXfMPBze5fgAb3OAmoeGxm3h6x3QLZP7FMXgyRpofH6AGw5oDIiXmvSM8r2+sduwW9OfgMlTMA== +"@material/auto-init@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/auto-init/-/auto-init-5.1.0.tgz#9d378ea6a879feeaa0c1b521b1a6e3470822cff3" + integrity sha512-yal8Bo1cxGclFmXqg9l77PE34g1B3JS+YLBeGeZGXMsKrMcFV4105aipRPYujdKJsUS5eBFeskinJtOIo+gtUw== + dependencies: + "@material/base" "^5.1.0" + tslib "^1.9.3" + "@material/base@^0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@material/base/-/base-0.24.0.tgz#888a61e5b6580e35a66384a9f8823091b4fe7c55" integrity sha512-RG1SbHl6M8a0fdrMAoMm7Fc8jkuj3HhZd0f8Dy5kfUtQk3I7PyzD+MLCrmCHgUAlKbcK2J9VxJWpd4isZr3x9w== +"@material/base@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/base/-/base-5.1.0.tgz#bd252eb3674c27c1ce690ad98905b4b1d39da30a" + integrity sha512-UxVFKpSNaoKqd7hHxy9hrvwANp0WJy/BZqu8Rj/aRvKnBZnuHehFuOysI9WqdeTqgveJaQoj6EEkVEqLurR5Sg== + dependencies: + tslib "^1.9.3" + "@material/button@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/button/-/button-0.27.0.tgz#546e1887324043b2607ecd3ba661b029ef6c909b" @@ -2371,6 +2393,21 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/button@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/button/-/button-5.1.0.tgz#22986368ce12faad142ba01c4aeb42f6a380dffb" + integrity sha512-umeuIEbeRRd0cY+5axhrBoM0dvJ4YfoTsUbKgz4ctFxHLBsgthFUIXSa3Ot15s284UP6kjslK0LCMqzhirZxeQ== + dependencies: + "@material/density" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/touch-target" "^5.1.0" + "@material/typography" "^5.1.0" + "@material/card@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/card/-/card-0.27.0.tgz#0513fe8f23430faeadb12611763122a901b3aaf7" @@ -2381,6 +2418,18 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/card@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/card/-/card-5.1.0.tgz#db3e0b52b09e832cb39f81e9384b792e33c24104" + integrity sha512-/syao6oR/PAvzs04quybeCWHZVn4W2dNnxIOWIJTRQced0/o3gYrHgQSX+edC+6pEnSr3Drwbo2cye7nRdbixA== + dependencies: + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/checkbox@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/checkbox/-/checkbox-0.27.0.tgz#5fb1e2646bffc793828a614d2e0010f5263c050d" @@ -2393,6 +2442,64 @@ "@material/selection-control" "^0.27.0" "@material/theme" "^0.27.0" +"@material/checkbox@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/checkbox/-/checkbox-5.1.0.tgz#2f689f6a409f0ed906a0d73bcd0078a768eaf9d1" + integrity sha512-NwpWxFdWrZNlSjcSEEcGz8UN7ZQ5k8VthExclJnawpYGPUnCPLTXWogREnA2Tyl22PJ6jOy8Ejb8tnpu2rSiaw== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/touch-target" "^5.1.0" + tslib "^1.9.3" + +"@material/chips@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/chips/-/chips-5.1.0.tgz#8bbd5b2be3300a9453cf6edd9186a7c0aa757ace" + integrity sha512-eYWrobENtXbnGoEx5BEURqoCfoc9aHu1JWq64mF12a/JSk+c035KYMjD4oyhow7dYqobbfQlWWdLQeHoRpYCeA== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/checkbox" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/touch-target" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + +"@material/data-table@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/data-table/-/data-table-5.1.0.tgz#4c15a0a18f7ee6d8dba77e435d4fbe064fe1f009" + integrity sha512-vjijTvCHM7sfyPzQ05026nSWT1Bn/3lfj1u0oeYRnym6Ke6Os36x+IF/jFhjsraXKb2we6cof7OdoMFHCU8cqQ== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/checkbox" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.10.0" + +"@material/density@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/density/-/density-5.1.0.tgz#d36512d413a00595122f98303766dae6b9e9fabe" + integrity sha512-jmp6AgiNYosl+HicxWCa8vib9pg9tNxRcf+6f9LDkDYJ9jtO90PXuypyd0hO64JZ9Df7BywFj5hTWPERG1FBbw== + "@material/dialog@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/dialog/-/dialog-0.27.0.tgz#b67702e9653e20a446ac1e47ed3a7e2cfd28752f" @@ -2407,6 +2514,32 @@ "@material/typography" "^0.1.1" focus-trap "^2.3.0" +"@material/dialog@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/dialog/-/dialog-5.1.0.tgz#3ea64b22b728e1e1251aaf0bb4b4a675aad73785" + integrity sha512-CxA0W0uzXuwJNivB6Gbb7DvtJL3+J7ghsaSL1HfycXVXfdrT1nSidLyOIthRMVBUBJrAMfusvtzFDgXr0TWqDg== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/button" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/touch-target" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + +"@material/dom@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/dom/-/dom-5.1.0.tgz#fefb96e1f744653dfc3ecdb01f7ebef81ce1faeb" + integrity sha512-tBbl3hG34Auv+2sboWhtstXeZ9rx3G7hb/jEXs5xZ5KIfZHwY4mbo0KqR/fSJZKaUsvk2Nc/UEOVcUx2mTNmYg== + dependencies: + tslib "^1.9.3" + "@material/drawer@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/drawer/-/drawer-0.27.0.tgz#23fe6b676407b7e31aa706a58eb82099f479ac76" @@ -2419,6 +2552,24 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/drawer@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/drawer/-/drawer-5.1.0.tgz#027a6ad85637b999b4301c9df09513c18d8b4269" + integrity sha512-Xh/kYkT8QWWXkbCI25ys6av0wrc0wXRfvnRdH34Rz4sZvWC51D6apK2bxGr+AV/uR88zwn6U8pb9cccnr+2Eqw== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/list" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/elevation@^0.25.0": version "0.25.0" resolved "https://registry.yarnpkg.com/@material/elevation/-/elevation-0.25.0.tgz#ab1b22cdc6d0c840e2c389e334c39466a8397c9b" @@ -2427,6 +2578,16 @@ "@material/animation" "^0.25.0" "@material/theme" "^0.4.0" +"@material/elevation@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/elevation/-/elevation-5.1.0.tgz#569065f858dd1dfb83d3ba4951ed6e449da1d545" + integrity sha512-NsWIT+L6x3BLouCOh3H8x885/nCrNNmzCwHEodz/0PcYQsxx9RiIVFkagmJWw/w//jej/D4NotD0xHGKOWTrFA== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/fab@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/fab/-/fab-0.27.0.tgz#2ee4b47d4248731fe6065fcbb6423c36eb1c5fb3" @@ -2437,6 +2598,40 @@ "@material/ripple" "^0.27.0" "@material/theme" "^0.27.0" +"@material/fab@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/fab/-/fab-5.1.0.tgz#4a38fd4d7579f5b7aea6c8d2b60cb3ded77945d3" + integrity sha512-mq9I0l4hnsMS+Ko/W7e5A8epElIp3H0UFGJzMlZX5VJBWBpfnykj7fLYnVWtyJ+zFgdLv6rpO/307Kto7gi5Pg== + dependencies: + "@material/animation" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/touch-target" "^5.1.0" + "@material/typography" "^5.1.0" + +"@material/feature-targeting@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/feature-targeting/-/feature-targeting-5.1.0.tgz#49265bbd4ff59b1cd20a385b5547f7c246cb1955" + integrity sha512-z3JNWF7lP9WOzw1xBwul/HAOu4qC6EpK/8MkhjLNI9APvdYML82PWS1V0k0MiqA6Jk6uxm8DiVAk9VUqBa9/YA== + +"@material/floating-label@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/floating-label/-/floating-label-5.1.0.tgz#8d654b3f2ca98248e5a73a63feec8f4523c5ab4f" + integrity sha512-5EwPiBa5A4Q678tNWdkkBGDdSCDzudhVgBtRiA/7xRo4dHXiBxX5bhE+RHrF3ZQyEf6fsShspqwAFkTA1EaplQ== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/form-field@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/form-field/-/form-field-0.27.0.tgz#8a3cb86f47d2cc7c2ad7587d1834314153f431ab" @@ -2448,6 +2643,19 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/form-field@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/form-field/-/form-field-5.1.0.tgz#91bf81cb4647d655b7459df0aa19060189f55564" + integrity sha512-gF2YoeCd41fIM7U1v3psEqiUdwbylbzb6BuvmcKmH0OQBP6lnRbLSbgKWldcHx2VyKTdqusu/bv6/NAe/98QiQ== + dependencies: + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/grid-list@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/grid-list/-/grid-list-0.27.0.tgz#d0ead89555a9a7aff4d3fc7cff60a221ab577483" @@ -2458,6 +2666,18 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/icon-button@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/icon-button/-/icon-button-5.1.0.tgz#224c5607ca272feac41ec223816ee1233fb2b018" + integrity sha512-HLdSkqDH1wx5YSBHz8dGEL2BKv8IDqhRul7wea9i9/3RcQz3hb5+OYpq8iiXqpxcVPVlWNud2w1oyvmEXRTdZQ== + dependencies: + "@material/base" "^5.1.0" + "@material/density" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + "@material/icon-toggle@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/icon-toggle/-/icon-toggle-0.27.0.tgz#ac024cf4bca99947d74a1ff5bc761348f3c94981" @@ -2468,11 +2688,37 @@ "@material/ripple" "^0.27.0" "@material/theme" "^0.27.0" +"@material/image-list@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/image-list/-/image-list-5.1.0.tgz#d7ef3896dc69d1a1be52ccf4c8a39a8240b45cf2" + integrity sha512-LFl7W8AFp2baFY38BBGVX5C6c/zZoPOsHsRMhVP8jvIH5q1BfUg6SaXkleos6Yxmy+18hdPnVuWdAQ38hhje8Q== + dependencies: + "@material/feature-targeting" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + "@material/layout-grid@^0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@material/layout-grid/-/layout-grid-0.24.0.tgz#223d771d755d887807998d96f5996e182ceb640d" integrity sha512-38Si5CQgRkQwTSVb+lfCZkH8QEe1/HWfj2yNmK5OIFRMBFbSjQRsvf3p+aU1R7fM4TDjNKcgUWqRtBnKuUjNCQ== +"@material/layout-grid@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/layout-grid/-/layout-grid-5.1.0.tgz#a1f584bfdd3a1f11db37aa63c512b4c3c1dbfee9" + integrity sha512-6TvPVZE+UGVfmzttbRp0K6SOUvFmYI5W8p966Vztg8dYK122ondRJqMmyFf0SS0CdbrbO+bSW7/S3YkpPNrvAg== + +"@material/line-ripple@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/line-ripple/-/line-ripple-5.1.0.tgz#86cb1b8a91bf010231109211b8eb38ad059f5f23" + integrity sha512-esf2/ROZl1eVpyGCWPvxMSGVkuIOG5Fm6qufOLp7XIx5IL1O0bsm+bV6cVC4JCCtmNOag4GOBgkKKbkOvp/R6g== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + "@material/linear-progress@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/linear-progress/-/linear-progress-0.27.0.tgz#0607dfb9b579a11e0fe5ea940af3784145f45c40" @@ -2482,6 +2728,18 @@ "@material/base" "^0.24.0" "@material/theme" "^0.27.0" +"@material/linear-progress@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/linear-progress/-/linear-progress-5.1.0.tgz#e1d9c0f65f19588845c2f30370545441c9fe505a" + integrity sha512-wuBH2Y7psdiG5ubsKCHFWriHv4IqLeUARCmHoHyFsAdW0snwMPzSgb2mbVDiGl5gjWbSDxBsqGjKo5kOl3Vaug== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/progress-indicator" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + "@material/list@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/list/-/list-0.27.0.tgz#842a6c945b65ac6f5e4f1dea55b10f015ac8b15c" @@ -2492,6 +2750,36 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/list@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/list/-/list-5.1.0.tgz#04c010e393c88c7da2091426fd12b8206585c37e" + integrity sha512-fcHMJLmmtFYeMU8CO9VsXoRRm3/2jhPVMWK3lpuARZxvkNyZqjQG0mGtpWgw4oekerM/B37TGGFmN3R5DSyGcg== + dependencies: + "@material/base" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + +"@material/menu-surface@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/menu-surface/-/menu-surface-5.1.0.tgz#008dc61e79f73deec3e56b9fdbba164ccec13759" + integrity sha512-8EqkrKP92O4xaPVItz2841OfmuH3zyCclU1iC0NSBa39MwmYt7ML3IEaOXwOzKlcNGOcC7qPeqcpYlUsfMYX3g== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + "@material/menu@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/menu/-/menu-0.27.0.tgz#56d1abc130013aacc33b40c1d4d2ba8dd0a5ae32" @@ -2503,6 +2791,42 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/menu@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/menu/-/menu-5.1.0.tgz#28794c1be742a227e1e20f3bdddc896178890ebe" + integrity sha512-ssJNcbdyLewgL7hnj4C7JeXO3GvV4G2i1//Ych2s+au7AcJ/6/YeTTKhiCkoSpS7pb7axB3dMKwQWor2glec5Q== + dependencies: + "@material/base" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/list" "^5.1.0" + "@material/menu-surface" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + +"@material/notched-outline@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/notched-outline/-/notched-outline-5.1.0.tgz#4ec97001ed6bbb66f04100b7745ae99d19a4d16e" + integrity sha512-mQ3NjJR1jLXnJi6jhs20ftTf0yU1gWpYlyx1GizU0f7pLEqcIrFnw6G+pavcnKqP+JXNkzAQeGbmZvYBQnxokA== + dependencies: + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/floating-label" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + +"@material/progress-indicator@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/progress-indicator/-/progress-indicator-5.1.0.tgz#d7885c4d2de7d3c9c0951bf19cc4bb6344d75cab" + integrity sha512-+bsiQogKFu42Td8cXpsxX1u2BOyB4erR6NBWMrSWZJNmKM95EFQrQEnr9nxfU94bY47V3UqYtcAY9Y6GgfJyZQ== + dependencies: + tslib "^1.9.3" + "@material/radio@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/radio/-/radio-0.27.0.tgz#c342a2bf35eca7ba0cd2583e10eb9ca046c1a50c" @@ -2514,6 +2838,21 @@ "@material/selection-control" "^0.27.0" "@material/theme" "^0.27.0" +"@material/radio@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/radio/-/radio-5.1.0.tgz#4220369fe89c2cee8a9549b505d857a6efc6108c" + integrity sha512-srAchlY1TKkmQAdMHqbP9vLkN7gmiWX6FGzArgKomd6Es8OqF2P3jvPcQizqz4OFYZIMrxARdW6r8QvhG0lZEg== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/touch-target" "^5.1.0" + tslib "^1.9.3" + "@material/ripple@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/ripple/-/ripple-0.27.0.tgz#174ef823434e51662dec7b4ba9f1d7bc7905d79b" @@ -2522,11 +2861,28 @@ "@material/base" "^0.24.0" "@material/theme" "^0.27.0" +"@material/ripple@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/ripple/-/ripple-5.1.0.tgz#6624e0ff7718d6bfa65fecd0bca4c03d2696c07b" + integrity sha512-mluIf+HaaCplszp9/MAl178FpfIJWi5hSyQOpF7w8RTzRSaH8J0uwgmn8VeNnwe1TAWio0vQzHrz4iEg2r7Ngw== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + "@material/rtl@^0.1.8": version "0.1.8" resolved "https://registry.yarnpkg.com/@material/rtl/-/rtl-0.1.8.tgz#2462db15e2d4e041666485559c028382872b01fb" integrity sha512-NzBobwxvhJg+dch99pVO+Z9HL1DM+esuIy5WYXgM7trfOVh8n9DkVo5vD/NKnDy6F5wCaRnJOI5T19Tev6c9Zw== +"@material/rtl@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/rtl/-/rtl-5.1.0.tgz#abd8c2bb5322b8fbe549e2f467791612720da746" + integrity sha512-Hij4KJIfjK63HArdQ3K1INMo0MbigDgL0JhjO1VDk5c+iYmYpjDI7wgPLmV5ISCBtenXRWpo1xbBO3uEmtCd4Q== + "@material/select@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/select/-/select-0.27.0.tgz#419b7de0ead29efdfea90153a5ec37b12a01d328" @@ -2541,6 +2897,25 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/select@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/select/-/select-5.1.0.tgz#c6106e3e4f27f3670be089ceddb030aead936ffc" + integrity sha512-AAXscWDMjpVfO91VYKhxdP8XTyZ6fJFNFEgL0lxccvRqU8qFt5cPQ+7W1IgMWYdrnvHhANa8DLTrpnepSq4irQ== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/floating-label" "^5.1.0" + "@material/line-ripple" "^5.1.0" + "@material/menu" "^5.1.0" + "@material/menu-surface" "^5.1.0" + "@material/notched-outline" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/selection-control@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/selection-control/-/selection-control-0.27.0.tgz#4df7d56ed89dba9d041f016661ef819f7a1c1f06" @@ -2548,6 +2923,14 @@ dependencies: "@material/ripple" "^0.27.0" +"@material/shape@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/shape/-/shape-5.1.0.tgz#155d01c6fdc90a9225fef297fe146c1946a6c147" + integrity sha512-/k27T9fhQ1zj7VCsS26nv0TzsOi142ncik2mycEXq8753PDBotob7Y19pbwivwt9QxkglhMGH0EaWdZPzBoQXw== + dependencies: + "@material/feature-targeting" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/slider@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/slider/-/slider-0.27.0.tgz#e624fb1b9d5d30f25e7d74ad836d9995a2efaabc" @@ -2558,6 +2941,20 @@ "@material/rtl" "^0.1.8" "@material/theme" "^0.27.0" +"@material/slider@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/slider/-/slider-5.1.0.tgz#93d2dee500752a0e85af497848260042219408e4" + integrity sha512-3+0kIgqowmUK0AXOC0jvR+8fqFJobdWuthfbuYBV+PFGBa9+zUow6Txf/yrhtCeQ01FHXw2iNeEFXSws+MYP9w== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/snackbar@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/snackbar/-/snackbar-0.27.0.tgz#09722c95f9a58030821016a118cdacbadcc6266f" @@ -2569,6 +2966,25 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/snackbar@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/snackbar/-/snackbar-5.1.0.tgz#f5a075cebc314f5d3fbe887c7d2231c9587e9d9d" + integrity sha512-bn6WydEGKZxq24aZ6BfnLGPbhCww2srOe+mn2W9VJFBfZEh9qnCcya2jHs295pPbzRtDM1b2oR2LiAKBfIBt3A== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/button" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/icon-button" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/switch@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/switch/-/switch-0.27.0.tgz#e9390b706d2522f033e1541e3c4e78da91bd878b" @@ -2578,6 +2994,72 @@ "@material/elevation" "^0.25.0" "@material/theme" "^0.27.0" +"@material/switch@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/switch/-/switch-5.1.0.tgz#80894dbfdf799aa4220189f39fcd3100722df2b6" + integrity sha512-cHFzquY8NINZIIaDdA+T3gwBR5V0lRORh6BNq4EBD69GiGQamoz1S8APr5ea1Sodt7Dm1yzkDRbbDO+yoNgR9g== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + +"@material/tab-bar@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/tab-bar/-/tab-bar-5.1.0.tgz#e3b4e959a04f3af76282e9a71204aad98a512e78" + integrity sha512-zK1Fe+in5cjkNIQH3Z7NiKqz0hNWehgr5e8lO0MxAFoTRodxUw5OhM9rse18c42uW+fItTJeSpLdz7RceENpyw== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/density" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/tab" "^5.1.0" + "@material/tab-scroller" "^5.1.0" + tslib "^1.9.3" + +"@material/tab-indicator@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/tab-indicator/-/tab-indicator-5.1.0.tgz#1af7ce885bf2b64af4057acb3a736ae2b993b925" + integrity sha512-vy/oBsvRQaQ2EscsgFp9xu7tZM6UBECmNxcC1k2eQGhNjy7olkoL9bX/ymiN4xAjQYqvP6BnC3LN3IywvKMTxQ== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/theme" "^5.1.0" + tslib "^1.9.3" + +"@material/tab-scroller@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/tab-scroller/-/tab-scroller-5.1.0.tgz#7698b873526bc4a4a2baba415cbcf46db76fe996" + integrity sha512-7b1Ea5tLc0A0iQEWYHXj8jfdJgYFMaaWjs9BOJyPBw7m2PyDnVwPGngPC5RqmxjDdyEeXbtDHsnMLZmjdT5g6A== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/tab" "^5.1.0" + tslib "^1.9.3" + +"@material/tab@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/tab/-/tab-5.1.0.tgz#1b91ce22218422a4c1a7c67d26e44c0971f0e1be" + integrity sha512-awur1Yv2QjJ8ghNyZ/oF6MThxczGDdGqimrzcgS0wI04sg2eTiU5Ed6KV3VILVsD9fA8kKR/e5XEh0CXjqhUYQ== + dependencies: + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/tab-indicator" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/tabs@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/tabs/-/tabs-0.27.0.tgz#d88a2073f940755b1b7165a22a91be46f0015702" @@ -2602,6 +3084,26 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/textfield@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/textfield/-/textfield-5.1.0.tgz#75f68c62dc916116330a4c958ba3866c87bd6002" + integrity sha512-Vipvw75AXj4G/BGXv3DyrGozbvHxGtcNGig1e5pz1ERvcmZN5epLyGStznxEIZYNf0Q+6O/NwSRxZGgrdI2w8w== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/floating-label" "^5.1.0" + "@material/line-ripple" "^5.1.0" + "@material/notched-outline" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + "@material/theme@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/theme/-/theme-0.27.0.tgz#32fd72addfec09bf22e83f66f36a7ebbdc123461" @@ -2612,6 +3114,13 @@ resolved "https://registry.yarnpkg.com/@material/theme/-/theme-0.4.0.tgz#0aef1a0279b65c15990584fb8b8eca095c734641" integrity sha1-Cu8aAnm2XBWZBYT7i47KCVxzRkE= +"@material/theme@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/theme/-/theme-5.1.0.tgz#013c37d055afc5d4045c77e44c9fd1f940ff865b" + integrity sha512-VoaCYAubn/oEG1/fu/yP4nxAw8sLEphFOGGBJxcPGQoLgQ9qcvibsV3G5H9S6AtmhJxgSGU0JnO9TaiuhQq5zA== + dependencies: + "@material/feature-targeting" "^5.1.0" + "@material/toolbar@^0.27.0": version "0.27.0" resolved "https://registry.yarnpkg.com/@material/toolbar/-/toolbar-0.27.0.tgz#5fa6192225d605c4a9f5d5cd2e3b882d7d52cbae" @@ -2623,6 +3132,29 @@ "@material/theme" "^0.27.0" "@material/typography" "^0.3.0" +"@material/top-app-bar@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/top-app-bar/-/top-app-bar-5.1.0.tgz#c67980874170e6d89fe1c19f03064bfe0257c52a" + integrity sha512-ySCUpwIFnCmY/I9/XPs0IPBCvjWzc2NQ7mquG7qQoaUVUqWTNMyL15zG6CeDf2/Nk14mlSRNM4LRPFWenCdJoQ== + dependencies: + "@material/animation" "^5.1.0" + "@material/base" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/typography" "^5.1.0" + tslib "^1.9.3" + +"@material/touch-target@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/touch-target/-/touch-target-5.1.0.tgz#0e03ba901acf118c91eb4cfa02034964424565a2" + integrity sha512-lR3eoL1D0I/hyEK6I7bMFDBy/pE0yYvjYUZtL1vC7+2i54A4FgQ2hwnpQJVaZQXzrHdj6xsXmODphmUsH5gqPA== + dependencies: + "@material/base" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/typography@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@material/typography/-/typography-0.1.1.tgz#fb2e3437bd3284d39e9fb91485767ade6b2bd0c1" @@ -2633,6 +3165,14 @@ resolved "https://registry.yarnpkg.com/@material/typography/-/typography-0.3.0.tgz#f828c2d3215bfd66c58072709b4260c64125390a" integrity sha1-+CjC0yFb/WbFgHJwm0JgxkElOQo= +"@material/typography@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@material/typography/-/typography-5.1.0.tgz#b346f4139b231f17c84c439a1c7af311c40c5844" + integrity sha512-yh02koa6JLyPT5u7Zb31kyqhoZoppL0n9FmZK+eHXZcfeDF7ROL0UmtRsEjQxfnCNZRR+FIhAgrzdYxClwH05g== + dependencies: + "@material/feature-targeting" "^5.1.0" + "@material/theme" "^5.1.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -3073,6 +3613,11 @@ dependencies: "@types/node" "*" +"@types/classnames@^2.2.7": + version "2.2.10" + resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.10.tgz#cc658ca319b6355399efc1f5b9e818f1a24bf999" + integrity sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ== + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -3197,6 +3742,13 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/rc-tooltip@3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@types/rc-tooltip/-/rc-tooltip-3.7.1.tgz#20bde0f9c872f824c1dea86d0fc741dfd9aca3d7" + integrity sha512-H+pW9+H42rlb3PBjcxuXhQre1ldr0gdDVbVfCj0Pf4Mdjd1plti9ekt1yJ+gGig3bRFLpCknWDmfOkAjKY+S+Q== + dependencies: + "@types/react" "*" + "@types/react-dom@*", "@types/react-dom@^16.9.0", "@types/react-dom@^16.9.8": version "16.9.8" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" @@ -3622,6 +4174,13 @@ acorn@^7.1.1, acorn@^7.3.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== +add-dom-event-listener@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" + integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== + dependencies: + object-assign "4.x" + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -4230,7 +4789,7 @@ babel-preset-react-app@^9.1.2: babel-plugin-macros "2.8.0" babel-plugin-transform-react-remove-prop-types "0.4.24" -babel-runtime@^6.26.0: +babel-runtime@6.x, 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= @@ -5179,11 +5738,23 @@ compare-versions@^3.6.0: resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== +component-classes@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" + integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE= + dependencies: + component-indexof "0.0.3" + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +component-indexof@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" + integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ= + compose-function@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" @@ -5707,6 +6278,14 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +css-animation@^1.3.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.6.1.tgz#162064a3b0d51f958b7ff37b3d6d4de18e17039e" + integrity sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog== + dependencies: + babel-runtime "6.x" + component-classes "^1.2.5" + css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" @@ -6405,6 +6984,11 @@ dom-accessibility-api@^0.4.6: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.6.tgz#f3f2af68aee01b1c862f37918d41841bb1aaf92a" integrity sha512-qxFVFR/ymtfamEQT/AsYLe048sitxFCoCHiM+vuOdR3fE94i3so2SCFJxyz/RxV69PZ+9FgToYWOd7eqJqcbYw== +dom-align@^1.7.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" + integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== + dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -10921,6 +11505,55 @@ material-components-web@^0.27.0: "@material/toolbar" "^0.27.0" "@material/typography" "^0.3.0" +material-components-web@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/material-components-web/-/material-components-web-5.1.0.tgz#e1a7c9d6252284d6857d40e789d26fd6107d42f7" + integrity sha512-02P8D749kXZBjnTb16ISwucD2TLiw3j7mbjVnAF4+jNlEuNv1cB1qtXSzsavGpATzgoDU0xvzufrfBUqHIaAVA== + dependencies: + "@material/animation" "^5.1.0" + "@material/auto-init" "^5.1.0" + "@material/base" "^5.1.0" + "@material/button" "^5.1.0" + "@material/card" "^5.1.0" + "@material/checkbox" "^5.1.0" + "@material/chips" "^5.1.0" + "@material/data-table" "^5.1.0" + "@material/density" "^5.1.0" + "@material/dialog" "^5.1.0" + "@material/dom" "^5.1.0" + "@material/drawer" "^5.1.0" + "@material/elevation" "^5.1.0" + "@material/fab" "^5.1.0" + "@material/feature-targeting" "^5.1.0" + "@material/floating-label" "^5.1.0" + "@material/form-field" "^5.1.0" + "@material/icon-button" "^5.1.0" + "@material/image-list" "^5.1.0" + "@material/layout-grid" "^5.1.0" + "@material/line-ripple" "^5.1.0" + "@material/linear-progress" "^5.1.0" + "@material/list" "^5.1.0" + "@material/menu" "^5.1.0" + "@material/menu-surface" "^5.1.0" + "@material/notched-outline" "^5.1.0" + "@material/radio" "^5.1.0" + "@material/ripple" "^5.1.0" + "@material/rtl" "^5.1.0" + "@material/select" "^5.1.0" + "@material/shape" "^5.1.0" + "@material/slider" "^5.1.0" + "@material/snackbar" "^5.1.0" + "@material/switch" "^5.1.0" + "@material/tab" "^5.1.0" + "@material/tab-bar" "^5.1.0" + "@material/tab-indicator" "^5.1.0" + "@material/tab-scroller" "^5.1.0" + "@material/textfield" "^5.1.0" + "@material/theme" "^5.1.0" + "@material/top-app-bar" "^5.1.0" + "@material/touch-target" "^5.1.0" + "@material/typography" "^5.1.0" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -11776,7 +12409,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@4.x, 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= @@ -13313,7 +13946,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -13472,7 +14105,7 @@ quickselect@^2.0.0: resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== -raf@^3.4.1: +raf@^3.4.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -13529,6 +14162,62 @@ rbush@^3.0.1: dependencies: quickselect "^2.0.0" +rc-align@^2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.5.tgz#c941a586f59d1017f23a428f0b468663fb7102ab" + integrity sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw== + dependencies: + babel-runtime "^6.26.0" + dom-align "^1.7.0" + prop-types "^15.5.8" + rc-util "^4.0.4" + +rc-animate@2.x: + version "2.11.1" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c" + integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + css-animation "^1.3.2" + prop-types "15.x" + raf "^3.4.0" + rc-util "^4.15.3" + react-lifecycles-compat "^3.0.4" + +rc-tooltip@3.7.3: + version "3.7.3" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-3.7.3.tgz#280aec6afcaa44e8dff0480fbaff9e87fc00aecc" + integrity sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww== + dependencies: + babel-runtime "6.x" + prop-types "^15.5.8" + rc-trigger "^2.2.2" + +rc-trigger@^2.2.2: + version "2.6.5" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.6.5.tgz#140a857cf28bd0fa01b9aecb1e26a50a700e9885" + integrity sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + prop-types "15.x" + rc-align "^2.4.0" + rc-animate "2.x" + rc-util "^4.4.0" + react-lifecycles-compat "^3.0.4" + +rc-util@^4.0.4, rc-util@^4.15.3, rc-util@^4.4.0: + version "4.21.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05" + integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg== + dependencies: + add-dom-event-listener "^1.1.0" + prop-types "^15.5.10" + react-is "^16.12.0" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -13601,6 +14290,11 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.0, react- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + react-scripts@3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.1.tgz#f551298b5c71985cc491b9acf3c8e8c0ae3ada0a" @@ -14635,6 +15329,11 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -15725,7 +16424,7 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== From 5bce65712e313e412f82b31e4313d176ed828dc9 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Wed, 5 Aug 2020 17:31:35 +0300 Subject: [PATCH 05/35] control usage in conflicts-ui --- .../components/has-resolved-filter.tsx | 22 +++++++++++++++++-- .../mc-react-components/src/lib/box/box.tsx | 12 ++++++++++ .../mc-react-components/src/lib/box/index.ts | 1 + packages/mc-react-components/src/lib/index.ts | 1 + .../polygon-selection-ui.tsx | 5 +++-- .../src/lib/select/select.css | 14 ++++++++++++ 6 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 packages/mc-react-components/src/lib/box/box.tsx create mode 100644 packages/mc-react-components/src/lib/box/index.ts diff --git a/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx b/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx index fd07fec5..4cc86ea8 100644 --- a/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx +++ b/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx @@ -11,15 +11,28 @@ import '@map-colonies/react-core/dist/select/styles'; import { observer } from 'mobx-react-lite'; import { useStore } from '../models/rootStore'; +import { makeStyles } from '@material-ui/core/styles'; + const options: { [key: string]: boolean | undefined } = { all: undefined, resolved: true, open: false, }; +const useStyles = makeStyles((theme) => ({ + formControl: { + margin: theme.spacing(1), + minWidth: 120, + }, + selectEmpty: { + marginTop: theme.spacing(2), + }, +})); + export const HasResolvedFilter: React.FC = observer(() => { const { conflictsStore } = useStore(); const { searchParams } = conflictsStore; + const classes = useStyles(); const onChange = (option: string) => { const resolveStatus = options[option]; @@ -55,10 +68,15 @@ export const HasResolvedFilter: React.FC = observer(() => { // + // className={classes.selectEmpty} + /> + // ); diff --git a/packages/mc-react-components/src/lib/box/box.tsx b/packages/mc-react-components/src/lib/box/box.tsx new file mode 100644 index 00000000..ec04d164 --- /dev/null +++ b/packages/mc-react-components/src/lib/box/box.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Box, BoxProps } from '@material-ui/core'; + +export const McBox = (props: BoxProps) => +{ + const {children, ...rest} = props; + return ( + + {children} + + ); +} diff --git a/packages/mc-react-components/src/lib/box/index.ts b/packages/mc-react-components/src/lib/box/index.ts new file mode 100644 index 00000000..0d240802 --- /dev/null +++ b/packages/mc-react-components/src/lib/box/index.ts @@ -0,0 +1 @@ +export { McBox as Box } from './box'; \ No newline at end of file diff --git a/packages/mc-react-components/src/lib/index.ts b/packages/mc-react-components/src/lib/index.ts index 6c61a042..a71ba325 100644 --- a/packages/mc-react-components/src/lib/index.ts +++ b/packages/mc-react-components/src/lib/index.ts @@ -4,3 +4,4 @@ export * from './models'; export * from './ol-map'; export * from './smart-table'; export * from './popover'; +export * from './box'; diff --git a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx index 41eb6ee6..9a590ded 100644 --- a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx +++ b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx @@ -6,6 +6,7 @@ import { Menu, MenuItem, Button, Tooltip } from '@map-colonies/react-core/dist'; import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; import { DrawType } from '../models/enums'; +import { Box } from '../box'; const useStyle = makeStyles((theme: Theme) => createStyles({ @@ -51,7 +52,7 @@ export const PolygonSelectionUi: React.FC = ( ); } else { return ( -
    +
    -
    + ); } }; diff --git a/packages/mc-react-ui-components/src/lib/select/select.css b/packages/mc-react-ui-components/src/lib/select/select.css index 166262e2..efc2f015 100644 --- a/packages/mc-react-ui-components/src/lib/select/select.css +++ b/packages/mc-react-ui-components/src/lib/select/select.css @@ -1,5 +1,19 @@ .mdc-select__anchor { width: 100%; + height: 36px; +} + +.mdc-select__anchor .mdc-select__selected-text { + padding-top: 4px !important; + height: 36px; +} + +.mdc-menu.mdc-select__menu.mdc-menu-surface.mdc-menu-surface--open { + width: 100%; +} + +.mdc-select__dropdown-icon{ + bottom: 8px; } .rmwc-select__native-control { From 9015934dd61bce39d3b8b8838cff0aaa239fb0df Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Thu, 6 Aug 2020 15:11:45 +0300 Subject: [PATCH 06/35] theming priniples start --- conflicts-ui/src/App.tsx | 55 ++++++++++-- .../date-range-picker/date-range-picker.tsx | 88 +++++++++++++------ .../polygon-selection-ui.tsx | 5 ++ .../src/lib/select/select.css | 18 ++++ .../src/lib/theme/index.tsx | 21 ++++- 5 files changed, 150 insertions(+), 37 deletions(-) diff --git a/conflicts-ui/src/App.tsx b/conflicts-ui/src/App.tsx index e4e3c916..ed01027f 100644 --- a/conflicts-ui/src/App.tsx +++ b/conflicts-ui/src/App.tsx @@ -4,11 +4,12 @@ import useMediaQuery from '@material-ui/core/useMediaQuery'; import { ThemeProvider, createMuiTheme } from '@material-ui/core/styles'; // Import from react core components -import { Theme } from '@map-colonies/react-core/dist'; - +import { ThemeProvider as RmwcThemeProvider } from '@map-colonies/react-core'; +import '@map-colonies/react-core/dist/theme/styles'; import { CssBaseline } from '@material-ui/core'; import ConflictsView from './conflicts/views/conflicts-view'; +import { green, red } from '@material-ui/core/colors'; const App: React.FC = () => { const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); @@ -17,19 +18,59 @@ const App: React.FC = () => { () => createMuiTheme({ palette: { - type: prefersDarkMode ? 'dark' : 'light', + // type: prefersDarkMode ? 'dark' : 'light', + type: 'dark', + primary: { + main: green[500], + }, + secondary: { + main: green[500], + dark: green[500] + }, + background: { + paper: red[500], + } + }, + }), [prefersDarkMode] ); return ( - - {/* */} + + {/* */} - {/* */} - + {/* */} + ); }; diff --git a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx index 10e33571..9b507ef4 100644 --- a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx +++ b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx @@ -6,7 +6,10 @@ import { } from '@material-ui/pickers'; import DateFnsUtils from '@date-io/date-fns'; import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; -import { Button } from '@material-ui/core'; +import { Button, ThemeProvider, createMuiTheme, useMediaQuery } from '@material-ui/core'; +import { useTheme } from '@map-colonies/react-core/dist'; +import { green } from '@material-ui/core/colors'; +import { Box } from '../box'; const useStyle = makeStyles((theme: Theme) => createStyles({ @@ -31,9 +34,34 @@ interface DateRangePickerProps { export const DateTimeRangePicker: React.FC = (props) => { const classes = useStyle(); + const theme: { [key: string]: string } = useTheme(); const [from, setFrom] = useState(null); const [to, setTo] = useState(null); + const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); + console.log('THEME OPTIONS -> ',theme); + + const theme1 = React.useMemo( + () => + createMuiTheme({ + palette: { + type: prefersDarkMode ? 'dark' : 'light', + primary: { + main: theme.primary, + }, + secondary: { + main: theme.secondary, + }, + background: { + paper: theme.background, + } + + }, + }), + [prefersDarkMode, theme] + ); + + useEffect(() => { setFrom(props.from || null); }, [props.from]); @@ -56,33 +84,35 @@ export const DateTimeRangePicker: React.FC = (props) => { }; return ( -
    - - setFrom(date as Date)} - value={from} - disableFuture={true} - /> - setTo(date as Date)} - value={to} - disableFuture={true} - /> - - -
    + + + + setFrom(date as Date)} + value={from} + disableFuture={true} + /> + setTo(date as Date)} + value={to} + disableFuture={true} + /> + + + + ); }; diff --git a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx index 9a590ded..b7b8793f 100644 --- a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx +++ b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx @@ -13,6 +13,10 @@ const useStyle = makeStyles((theme: Theme) => drawingButton: { width: theme.spacing(18), }, + fullWidth: { + width: '100%', + marginTop: '36px' + } }) ); @@ -63,6 +67,7 @@ export const PolygonSelectionUi: React.FC = ( ( function ThemeProvider(props, ref) { @@ -89,7 +104,11 @@ export const ThemeProvider = createComponent( } return ( - + <> + + + ; + ); } ); From 5ba2ed63a017c07e2f9afa62e7c25b86a8dc2a1a Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 10 Aug 2020 16:35:38 +0300 Subject: [PATCH 07/35] controls integratoin. styling --- conflicts-ui/src/App.tsx | 73 ++-------- .../conflicts/components/conflict-item.tsx | 3 +- .../conflicts/components/conflicts-table.tsx | 4 +- .../src/conflicts/components/date-filter.tsx | 29 +--- .../components/has-resolved-filter.tsx | 58 +------- conflicts-ui/src/index.tsx | 11 +- .../src/lib/cssbaseline/cssbaseline.tsx | 24 ++++ .../src/lib/cssbaseline/index.ts | 4 + .../date-range-picker/date-range-picker.tsx | 58 ++++---- packages/mc-react-components/src/lib/index.ts | 2 + .../polygon-selection-ui.tsx | 16 ++- .../src/lib/theme/index.ts | 1 + .../src/lib/theme/theme.ts | 130 ++++++++++++++++++ .../src/lib/theme/index.tsx | 4 +- .../src/lib/theme/themes.tsx | 57 ++++++++ 15 files changed, 286 insertions(+), 188 deletions(-) create mode 100644 packages/mc-react-components/src/lib/cssbaseline/cssbaseline.tsx create mode 100644 packages/mc-react-components/src/lib/cssbaseline/index.ts create mode 100644 packages/mc-react-components/src/lib/theme/index.ts create mode 100644 packages/mc-react-components/src/lib/theme/theme.ts create mode 100644 packages/mc-react-ui-components/src/lib/theme/themes.tsx diff --git a/conflicts-ui/src/App.tsx b/conflicts-ui/src/App.tsx index ed01027f..6d229d43 100644 --- a/conflicts-ui/src/App.tsx +++ b/conflicts-ui/src/App.tsx @@ -1,75 +1,28 @@ import React from 'react'; import './App.css'; -import useMediaQuery from '@material-ui/core/useMediaQuery'; -import { ThemeProvider, createMuiTheme } from '@material-ui/core/styles'; // Import from react core components -import { ThemeProvider as RmwcThemeProvider } from '@map-colonies/react-core'; +import { ThemeProvider as RmwcThemeProvider, Themes } from '@map-colonies/react-core'; +import { CssBaseline } from '@map-colonies/react-components'; +import { useMediaQuery } from '@map-colonies/react-components'; import '@map-colonies/react-core/dist/theme/styles'; +import '@map-colonies/react-core/dist/button/styles'; +import '@map-colonies/react-core/dist/tooltip/styles'; +import '@map-colonies/react-core/dist/menu/styles'; +import '@map-colonies/react-core/dist/select/styles'; +import '@map-colonies/react-core/dist/circular-progress/styles'; + -import { CssBaseline } from '@material-ui/core'; import ConflictsView from './conflicts/views/conflicts-view'; -import { green, red } from '@material-ui/core/colors'; const App: React.FC = () => { const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); - - const theme = React.useMemo( - () => - createMuiTheme({ - palette: { - // type: prefersDarkMode ? 'dark' : 'light', - type: 'dark', - primary: { - main: green[500], - }, - secondary: { - main: green[500], - dark: green[500] - }, - background: { - paper: red[500], - } - - }, - - }), - [prefersDarkMode] - ); + const theme = prefersDarkMode ? Themes.darkTheme : Themes.lightTheme; return ( - - {/* */} - - - {/* */} + + + ); }; diff --git a/conflicts-ui/src/conflicts/components/conflict-item.tsx b/conflicts-ui/src/conflicts/components/conflict-item.tsx index 654b5595..2b0c097d 100644 --- a/conflicts-ui/src/conflicts/components/conflict-item.tsx +++ b/conflicts-ui/src/conflicts/components/conflict-item.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import Typography from '@material-ui/core/Typography'; import { IConflict } from '../models/conflict'; @@ -10,7 +9,7 @@ interface ConflictItemProps { const ConflictItem: React.FC = ({ conflict }) => { return (
    - {'#' + conflict.id} +

    {'#' + conflict.id}

    {conflict.source_server}
    {conflict.target_server}
    {conflict.description}
    diff --git a/conflicts-ui/src/conflicts/components/conflicts-table.tsx b/conflicts-ui/src/conflicts/components/conflicts-table.tsx index 4161b09f..8bf1db64 100644 --- a/conflicts-ui/src/conflicts/components/conflicts-table.tsx +++ b/conflicts-ui/src/conflicts/components/conflicts-table.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { observer } from 'mobx-react-lite'; -import CircularProgress from '@material-ui/core/CircularProgress'; +import { CircularProgress } from '@map-colonies/react-core'; import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; import { Typography } from '@material-ui/core'; import { CellMetadata, SmartTable } from '@map-colonies/react-components'; @@ -52,7 +52,7 @@ export const ConflictsTable: React.FC = observer(() => { if (conflictsStore.state === ResponseState.PENDING) { return (
    - +
    ); } else if (conflictsStore.state === ResponseState.ERROR) { diff --git a/conflicts-ui/src/conflicts/components/date-filter.tsx b/conflicts-ui/src/conflicts/components/date-filter.tsx index e88e5892..c5a32c4b 100644 --- a/conflicts-ui/src/conflicts/components/date-filter.tsx +++ b/conflicts-ui/src/conflicts/components/date-filter.tsx @@ -1,18 +1,10 @@ import React from 'react'; -// import { Button, Popover } from '@material-ui/core'; +import { observer } from 'mobx-react-lite'; -// import { Popover } from '@material-ui/core'; import { Popover } from '@map-colonies/react-components'; - -// Import from react web component wrapper -// import { MwcButton as Button } from '@map-colonies/ui-components-react/dist'; - -// Import from react core components -import { Button } from '@map-colonies/react-core/dist'; -import '@map-colonies/react-core/dist/button/styles'; - -import { observer } from 'mobx-react-lite'; import { DateTimeRangePicker } from '@map-colonies/react-components'; +import { Button } from '@map-colonies/react-core'; + import { useStore } from '../models/rootStore'; export const DateFilter: React.FC = observer(() => { @@ -20,15 +12,11 @@ export const DateFilter: React.FC = observer(() => { const [anchorEl, setAnchorEl] = React.useState( null ); - // const handleClick = (event: React.MouseEvent) => { - // setAnchorEl(event.currentTarget); - // }; const handleClick = (event: any) => { setAnchorEl(event.currentTarget); }; - const handleClose = () => { setAnchorEl(null); }; @@ -38,17 +26,6 @@ export const DateFilter: React.FC = observer(() => { const open = Boolean(anchorEl); return ( <> - {/* */} - - - {/* */} -
    diff --git a/conflicts-ui/src/index.tsx b/conflicts-ui/src/index.tsx index 008f759e..5ba8f18d 100644 --- a/conflicts-ui/src/index.tsx +++ b/conflicts-ui/src/index.tsx @@ -20,9 +20,9 @@ const store = rootStore.create( ); ReactDOM.render( // - - - + + + // , document.getElementById('root') diff --git a/conflicts-ui/src/serviceWorker.ts b/conflicts-ui/src/serviceWorker.ts index b09523f1..8d1c834c 100644 --- a/conflicts-ui/src/serviceWorker.ts +++ b/conflicts-ui/src/serviceWorker.ts @@ -1,3 +1,4 @@ +/* eslint-disable */ // This optional code is used to register a service worker. // register() is not called by default. @@ -146,4 +147,4 @@ export function unregister() { console.error(error.message); }); } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 21653a77..8c784fe2 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,26 @@ "demoapp", "conflicts-ui" ], + "husky": { + "hooks": { + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "eslintConfig": { + "extends": [ + "@map-colonies/eslint-config/react", + "@map-colonies/eslint-config/jest", + "@map-colonies/eslint-config/ts-base" + ], + "parserOptions": { + "project": "./tsconfig.json" + } + }, "scripts": { "del-dist": "lerna exec --parallel -- del-cli dist", "prebuild": "yarn del-dist", @@ -22,10 +42,23 @@ "build:all": "lerna run build --npm-client=yarn", "publish": "lerna publish --contents dist", + "eslint-check:react": "lerna exec --scope @map-colonies/react-components -- yarn eslint-check", + "eslint-check:react-core": "lerna exec --scope @map-colonies/react-core -- yarn eslint-check", + "start:reactdemo": "cd demoapp && yarn start", "start:conflicts": "cd conflicts-ui && yarn start" }, "devDependencies": { + "@commitlint/cli": "^9.1.1", + "@commitlint/config-conventional": "^9.1.1", + "@map-colonies/eslint-config": "^1.0.3", + "commitlint": "^9.1.0", + "cz-conventional-changelog": "^3.2.0", + "eslint-plugin-import": "^2.22.0", + "husky": "^4.2.5", + "lint-staged": "^10.2.11", + "standard-version": "^8.0.2", + "del-cli": "^3.0.1", "lerna": "^3.22.1" } diff --git a/packages/mc-react-components/.eslintignore b/packages/mc-react-components/.eslintignore new file mode 100644 index 00000000..4be6e160 --- /dev/null +++ b/packages/mc-react-components/.eslintignore @@ -0,0 +1 @@ +dist/* \ No newline at end of file diff --git a/packages/mc-react-components/package.json b/packages/mc-react-components/package.json index 74450b72..e1b2ffd9 100644 --- a/packages/mc-react-components/package.json +++ b/packages/mc-react-components/package.json @@ -44,10 +44,8 @@ "build": "rimraf dist && tsc --project tsbuildconfig.json", "test": "react-scripts test", "eject": "react-scripts eject", - "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist" - }, - "eslintConfig": { - "extends": "react-app" + "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist", + "eslint-check": "npx eslint . --ext .ts,.tsx" }, "browserslist": { "production": [ diff --git a/packages/mc-react-components/src/lib/box/box.tsx b/packages/mc-react-components/src/lib/box/box.tsx index ec04d164..36645969 100644 --- a/packages/mc-react-components/src/lib/box/box.tsx +++ b/packages/mc-react-components/src/lib/box/box.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Box, BoxProps } from '@material-ui/core'; -export const McBox = (props: BoxProps) => +export const McBox: React.FC = (props: BoxProps) => { const {children, ...rest} = props; return ( diff --git a/packages/mc-react-components/src/lib/cssbaseline/cssbaseline.tsx b/packages/mc-react-components/src/lib/cssbaseline/cssbaseline.tsx index 4e5dee67..8f211648 100644 --- a/packages/mc-react-components/src/lib/cssbaseline/cssbaseline.tsx +++ b/packages/mc-react-components/src/lib/cssbaseline/cssbaseline.tsx @@ -3,7 +3,7 @@ import CssBaseline, { CssBaselineProps } from '@material-ui/core/CssBaseline'; import ScopedCssBaseline, { ScopedCssBaselineProps } from '@material-ui/core/ScopedCssBaseline'; -export const McCssBaseline = (props: CssBaselineProps) => +export const McCssBaseline: React.FC = (props: CssBaselineProps) => { const {children, ...rest} = props; return ( @@ -13,7 +13,7 @@ export const McCssBaseline = (props: CssBaselineProps) => ); } -export const McScopedCssBaseline = (props: ScopedCssBaselineProps) => +export const McScopedCssBaseline: React.FC = (props: ScopedCssBaselineProps) => { const {children, ...rest} = props; return ( diff --git a/packages/mc-react-ui-components/.eslintignore b/packages/mc-react-ui-components/.eslintignore new file mode 100644 index 00000000..4be6e160 --- /dev/null +++ b/packages/mc-react-ui-components/.eslintignore @@ -0,0 +1 @@ +dist/* \ No newline at end of file diff --git a/packages/mc-react-ui-components/package.json b/packages/mc-react-ui-components/package.json index ffec97ee..e7cbb829 100644 --- a/packages/mc-react-ui-components/package.json +++ b/packages/mc-react-ui-components/package.json @@ -39,10 +39,8 @@ "build": "rimraf dist && tsc --project tsbuildconfig.json", "test": "react-scripts test", "eject": "react-scripts eject", - "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist" - }, - "eslintConfig": { - "extends": "react-app" + "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist", + "eslint-check": "npx eslint . --ext .ts,.tsx" }, "browserslist": { "production": [ diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..664f20cb --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react" + }, + "include": [ + "packages/mc-react-components", + "packages/mc-react-ui-components", + ] +} diff --git a/yarn.lock b/yarn.lock index 63b57bff..bec04269 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2234,6 +2234,18 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" +"@map-colonies/eslint-config@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@map-colonies/eslint-config/-/eslint-config-1.0.3.tgz#5727f23d3df3279988b0d16cc895f0a9194fc272" + integrity sha512-R+Io+QB0JLOHUCsgbkgWnl4nIGWwqaGjPz/5O4ja9plYYRuZtxkGuMSjueXS2WvcLbQ8jDK9V7WXHS1bShKYmQ== + dependencies: + "@typescript-eslint/eslint-plugin" "3.6.1" + "@typescript-eslint/parser" "3.6.1" + eslint-config-prettier "^6.11.0" + eslint-config-react-app "^5.2.1" + eslint-plugin-import "^2.22.0" + eslint-plugin-jest "^23.20.0" + "@mapbox/jsonlint-lines-primitives@~2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" @@ -3847,6 +3859,18 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.6.1.tgz#5ced8fd2087fbb83a76973dea4a0d39d9cb4a642" + integrity sha512-06lfjo76naNeOMDl+mWG9Fh/a0UHKLGhin+mGaIw72FUMbMGBkdi/FEJmgEDzh4eE73KIYzHWvOCYJ0ak7nrJQ== + dependencies: + "@typescript-eslint/experimental-utils" "3.6.1" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + "@typescript-eslint/eslint-plugin@^2.10.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" @@ -3869,7 +3893,7 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.34.0": +"@typescript-eslint/experimental-utils@2.34.0", "@typescript-eslint/experimental-utils@^2.5.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== @@ -3879,6 +3903,17 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" +"@typescript-eslint/experimental-utils@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.6.1.tgz#b5a2738ebbceb3fa90c5b07d50bb1225403c4a54" + integrity sha512-oS+hihzQE5M84ewXrTlVx7eTgc52eu+sVmG7ayLfOhyZmJ8Unvf3osyFQNADHP26yoThFfbxcibbO0d2FjnYhg== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.6.1" + "@typescript-eslint/typescript-estree" "3.6.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + "@typescript-eslint/experimental-utils@3.7.1": version "3.7.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz#ab036caaed4c870d22531d41f9352f3147364d61" @@ -3890,6 +3925,17 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" +"@typescript-eslint/parser@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.6.1.tgz#216e8adf4ee9c629f77c985476a2ea07fb80e1dc" + integrity sha512-SLihQU8RMe77YJ/jGTqOt0lMq7k3hlPVfp7v/cxMnXA9T0bQYoMDfTsNgHXpwSJM1Iq2aAJ8WqekxUwGv5F67Q== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "3.6.1" + "@typescript-eslint/types" "3.6.1" + "@typescript-eslint/typescript-estree" "3.6.1" + eslint-visitor-keys "^1.1.0" + "@typescript-eslint/parser@^2.10.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" @@ -3911,6 +3957,11 @@ "@typescript-eslint/typescript-estree" "3.7.1" eslint-visitor-keys "^1.1.0" +"@typescript-eslint/types@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.6.1.tgz#87600fe79a1874235d3cc1cf5c7e1a12eea69eee" + integrity sha512-NPxd5yXG63gx57WDTW1rp0cF3XlNuuFFB5G+Kc48zZ+51ZnQn9yjDEsjTPQ+aWM+V+Z0I4kuTFKjKvgcT1F7xQ== + "@typescript-eslint/types@3.7.1": version "3.7.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.7.1.tgz#90375606b2fd73c1224fe9e397ee151e28fa1e0c" @@ -3929,6 +3980,20 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.6.1.tgz#a5c91fcc5497cce7922ff86bc37d5e5891dcdefa" + integrity sha512-G4XRe/ZbCZkL1fy09DPN3U0mR6SayIv1zSeBNquRFRk7CnVLgkC2ZPj8llEMJg5Y8dJ3T76SvTGtceytniaztQ== + dependencies: + "@typescript-eslint/types" "3.6.1" + "@typescript-eslint/visitor-keys" "3.6.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + "@typescript-eslint/typescript-estree@3.7.1": version "3.7.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz#ce1ffbd0fa53f34d4ce851a7a364e392432f6eb3" @@ -3943,6 +4008,13 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.6.1.tgz#5c57a7772f4dd623cfeacc219303e7d46f963b37" + integrity sha512-qC8Olwz5ZyMTZrh4Wl3K4U6tfms0R/mzU4/5W3XeUZptVraGVmbptJbn6h2Ey6Rb3hOs3zWoAUebZk8t47KGiQ== + dependencies: + eslint-visitor-keys "^1.1.0" + "@typescript-eslint/visitor-keys@3.7.1": version "3.7.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz#b90191e74efdee656be8c5a30f428ed16dda46d1" @@ -4169,7 +4241,7 @@ acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.1, acorn@^7.3.1: +acorn@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== @@ -6247,7 +6319,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6706,7 +6778,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -7437,6 +7509,13 @@ escodegen@^1.11.0, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" + integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== + dependencies: + get-stdin "^6.0.0" + eslint-config-react-app@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" @@ -7515,6 +7594,13 @@ eslint-plugin-import@^2.22.0: resolve "^1.17.0" tsconfig-paths "^3.9.0" +eslint-plugin-jest@^23.20.0: + version "23.20.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.20.0.tgz#e1d69c75f639e99d836642453c4e75ed22da4099" + integrity sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw== + dependencies: + "@typescript-eslint/experimental-utils" "^2.5.0" + eslint-plugin-jsx-a11y@6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" @@ -7561,7 +7647,7 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0, eslint-scope@^5.1.0: +eslint-scope@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== @@ -7576,14 +7662,14 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -7631,48 +7717,6 @@ eslint@^6.6.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@^7.5.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.6.0.tgz#522d67cfaea09724d96949c70e7a0550614d64d6" - integrity sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.0" - eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" - espree "^7.2.0" - esquery "^1.2.0" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.19" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - espree@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" @@ -7682,21 +7726,12 @@ espree@^6.1.2: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" -espree@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" - integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== - dependencies: - acorn "^7.3.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.3.0" - esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1, esquery@^1.2.0: +esquery@^1.0.1: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -7995,7 +8030,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +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-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -8483,6 +8518,11 @@ get-stdin@^4.0.1: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -10939,14 +10979,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -12613,18 +12645,6 @@ optionator@^0.8.1, optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -13834,11 +13854,6 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, po source-map "^0.6.1" supports-color "^6.1.0" -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -13854,6 +13869,11 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +prettier@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" + integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== + pretty-bytes@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" @@ -14665,7 +14685,7 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -15215,7 +15235,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.2, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2: +semver@7.3.2, semver@^7.1.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== @@ -16000,7 +16020,7 @@ strip-json-comments@3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@^3.0.1, strip-json-comments@^3.1.0: +strip-json-comments@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -16453,13 +16473,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -17108,7 +17121,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@^1.0.3, word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.0.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== From b6e4b1f3649a14dd68b13f84ad6a40676d894d0b Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Thu, 13 Aug 2020 16:37:08 +0300 Subject: [PATCH 11/35] fix(linting): react components --- .../date-range-picker.spec.tsx | 33 ++++++++------- .../date-range-picker/date-range-picker.tsx | 18 ++++---- .../map-filter-container/container-map.tsx | 7 ++-- .../map-filter-container.tsx | 18 ++++---- .../polygon-selection-ui.spec.tsx | 7 ++-- .../polygon-selection-ui.tsx | 17 ++++---- .../src/lib/models/enums.ts | 4 +- .../src/lib/ol-map/feature.tsx | 2 +- .../src/lib/ol-map/interactions/draw.tsx | 14 +++---- .../src/lib/ol-map/layers/tile-layer.tsx | 4 +- .../src/lib/ol-map/layers/vector-layer.tsx | 4 +- .../src/lib/ol-map/map.tsx | 6 ++- .../src/lib/ol-map/source/vector-source.tsx | 4 +- .../src/lib/popover/popover.tsx | 2 +- .../smartTableMocks.ts | 6 +-- .../lib/smart-table/smart-table-head.spec.tsx | 18 +++++--- .../src/lib/smart-table/smart-table-head.tsx | 1 + .../lib/smart-table/smart-table-row.spec.tsx | 12 +++--- .../src/lib/smart-table/smart-table-row.tsx | 7 ++-- .../src/lib/smart-table/smart-table.spec.tsx | 42 +++++++++++++------ .../src/lib/smart-table/smart-table.tsx | 3 +- .../src/lib/theme/theme.ts | 12 +----- .../mc-react-components/tsbuildconfig.json | 2 +- .../mc-react-ui-components/tsbuildconfig.json | 2 +- 24 files changed, 138 insertions(+), 107 deletions(-) rename packages/mc-react-components/src/lib/smart-table/{__mocks__ => __mock-data__}/smartTableMocks.ts (77%) diff --git a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx index a93cc1b0..a5f65faa 100644 --- a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx +++ b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx @@ -1,15 +1,15 @@ import React from 'react'; -import { shallow, mount, ReactWrapper } from 'enzyme'; +import { shallow, mount } from 'enzyme'; import { DateTimeRangePicker } from './date-range-picker'; import { KeyboardDateTimePicker } from '@material-ui/pickers'; -import { Button } from '@material-ui/core'; -import { act } from '@testing-library/react'; -import { Wrapper } from '@material-ui/pickers/wrappers/Wrapper'; +import { Button } from '@map-colonies/react-core'; const date = new Date(1990, 1, 1); it('set the values of to and from to the props of the date pickers when changed', () => { - const wrapper = mount( {}} />); + const wrapper = mount( { + // do nothing for linitng + }} />); wrapper.setProps({ from: date, to: date }); wrapper.update(); @@ -26,30 +26,31 @@ it('calls on change when button is clicked', () => { const wrapper = mount( ); - const button = wrapper.find(Button); - // @ts-ignore - wrapper.find(Button).props().onClick?.(); + // wrapper.find(Button).props().onClick?.(); + wrapper.find(Button).simulate('click'); - expect(onChangeMock).toBeCalledWith({ from: date, to: date }); + expect(onChangeMock).toHaveBeenCalledWith({ from: date, to: date }); wrapper.setProps({ to: null }); wrapper.update(); - // @ts-ignore - wrapper.find(Button).props().onClick?.(); - expect(onChangeMock).toBeCalledWith({ from: date }); + // wrapper.find(Button).props().onClick?.(); + wrapper.find(Button).simulate('click'); + expect(onChangeMock).toHaveBeenCalledWith({ from: date }); wrapper.setProps({ to: date, from: null }); wrapper.update(); - // @ts-ignore - wrapper.find(Button).props().onClick?.(); - expect(onChangeMock).toBeCalledWith({ to: date }); + // wrapper.find(Button).props().onClick?.(); + wrapper.find(Button).simulate('click'); + expect(onChangeMock).toHaveBeenCalledWith({ to: date }); }); it('enables and disables the button based on the validity of the dates', () => { - const wrapper = shallow( {}} />); + const wrapper = shallow( { + // do nothing for linitng + }} />); const fromPicker = wrapper.find(KeyboardDateTimePicker).first(); const toPicker = wrapper.find(KeyboardDateTimePicker).at(1); diff --git a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx index 073b6b51..16e945c9 100644 --- a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx +++ b/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx @@ -12,21 +12,23 @@ import { Button } from '@map-colonies/react-core/dist'; import '@map-colonies/react-core/dist/button/styles'; import { ThemeProvider as RmwcThemeProvider } from '@map-colonies/react-core'; import { useTheme } from '@map-colonies/react-core/dist'; -import { green } from '@material-ui/core/colors'; import { Box } from '../box'; import { useMappedMuiTheme } from '../theme'; +const CONTAINER_SPACING_FACTOR = 2; +const MARGIN_LEFT_FACTOR = 0.5; + const useStyle = makeStyles((theme: Theme) => createStyles({ container: { - padding: theme.spacing(2), + padding: theme.spacing(CONTAINER_SPACING_FACTOR), alignItems: 'center', }, setButton: { marginTop: theme.spacing(1), }, margin: { - marginLeft: theme.spacing(0.5), + marginLeft: theme.spacing(MARGIN_LEFT_FACTOR), }, }) ); @@ -50,11 +52,11 @@ export const DateTimeRangePicker: React.FC = (props) => { console.log('THEME OPTIONS -> ',theme); useEffect(() => { - setFrom(props.from || null); + setFrom(props.from ?? null); }, [props.from]); useEffect(() => { - setTo(props.to || null); + setTo(props.to ?? null); }, [props.to]); const isRangeValid = Boolean( @@ -63,7 +65,7 @@ export const DateTimeRangePicker: React.FC = (props) => { (from && to && isValid(from) && isValid(to) && isBefore(from, to)) ); - const onChange = () => { + const onChange = (): void => { props.onChange({ from: from && isValid(from) ? from : undefined, to: to && isValid(to) ? to : undefined, @@ -77,7 +79,7 @@ export const DateTimeRangePicker: React.FC = (props) => { setFrom(date as Date)} + onChange={(date): void => setFrom(date as Date)} value={from} disableFuture={true} /> @@ -85,7 +87,7 @@ export const DateTimeRangePicker: React.FC = (props) => { variant="inline" label="to" className={classes.margin} - onChange={(date) => setTo(date as Date)} + onChange={(date): void => setTo(date as Date)} value={to} disableFuture={true} /> diff --git a/packages/mc-react-components/src/lib/map-filter-container/container-map.tsx b/packages/mc-react-components/src/lib/map-filter-container/container-map.tsx index 1a1c0e7f..f24e0211 100644 --- a/packages/mc-react-components/src/lib/map-filter-container/container-map.tsx +++ b/packages/mc-react-components/src/lib/map-filter-container/container-map.tsx @@ -20,14 +20,15 @@ interface ContainerMapProps { export const ContainerMap: React.FC = (props) => { - const handlePolygonSelected = (geometry: Geometry) => { + const handlePolygonSelected = (geometry: Geometry): void => { const rewindedPolygon = rewind(geometry as Polygon); props.onPolygonSelection(rewindedPolygon); }; return ( - + + {props.selectionPolygon && @@ -35,7 +36,7 @@ export const ContainerMap: React.FC = (props) => { } {props.children} - {props.drawType && } + {(props.drawType !== undefined) && } ); }; diff --git a/packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx b/packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx index fdcd4b29..d92bbf66 100644 --- a/packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx +++ b/packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx @@ -6,6 +6,8 @@ import { PolygonSelectionUi } from './polygon-selection-ui'; import { DrawType } from '../models/enums'; import { ContainerMap } from './container-map'; +const PLACEMENT_SPACING_FACTOR = 1.5; +const WIDTH_SPACING_FACTOR = 80; const useStyle = makeStyles((theme: Theme) => createStyles({ map: { @@ -16,12 +18,12 @@ const useStyle = makeStyles((theme: Theme) => absolute: { position: 'absolute', zIndex: 1000, - left: theme.spacing(1.5), - top: theme.spacing(1.5), + left: theme.spacing(PLACEMENT_SPACING_FACTOR), + top: theme.spacing(PLACEMENT_SPACING_FACTOR), }, contentContainer: { - marginTop: theme.spacing(1.5), - width: theme.spacing(80), + marginTop: theme.spacing(PLACEMENT_SPACING_FACTOR), + width: theme.spacing(WIDTH_SPACING_FACTOR), }, filtersContainer: { display: 'flex', @@ -45,13 +47,13 @@ export const MapFilterContainer: React.FC = (props) => const [selectionPolygon, setSelectionPolygon] = useState(); const classes = useStyle(); - const onPolygonSelection = (polygon: Polygon) => { + const onPolygonSelection = (polygon: Polygon): void => { setSelectionPolygon(polygon); setDrawType(undefined); props.handlePolygonSelected(polygon); }; - const onReset = () => { + const onReset = (): void => { setSelectionPolygon(undefined); props.handlePolygonReset(); }; @@ -61,10 +63,10 @@ export const MapFilterContainer: React.FC = (props) =>
    setDrawType(undefined)} + onCancelDraw={(): void => setDrawType(undefined)} onReset={onReset} onStartDraw={setDrawType} - isSelectionEnabled={!!drawType} + isSelectionEnabled={drawType !== undefined} /> {props.filters?.map((filter, index) => (
    diff --git a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx index eb0fcae3..905a48dd 100644 --- a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx +++ b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx @@ -1,7 +1,6 @@ import React from 'react'; -import { shallow, mount } from 'enzyme'; +import { shallow } from 'enzyme'; import { PolygonSelectionUi } from './polygon-selection-ui'; -import renderer from 'react-test-renderer'; import { DrawType } from '../models'; import { MenuItem, Menu, Button } from '@material-ui/core'; @@ -64,7 +63,7 @@ it('Polygon/box drawing menu items call start draw with correct params on click .simulate('click'); expect(wrapper.find(Menu).prop('open')).toBe(false); - expect(startDraw).toHaveBeenCalledWith(DrawType.polygon); + expect(startDraw).toHaveBeenCalledWith(DrawType.POLYGON); expect(startDraw).toHaveBeenCalledTimes(1); startDraw.mockClear(); @@ -75,7 +74,7 @@ it('Polygon/box drawing menu items call start draw with correct params on click .simulate('click'); expect(wrapper.find(Menu).prop('open')).toBe(false); - expect(startDraw).toHaveBeenCalledWith(DrawType.box); + expect(startDraw).toHaveBeenCalledWith(DrawType.BOX); expect(startDraw).toHaveBeenCalledTimes(1); }); diff --git a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx index 730f617c..13d4eb34 100644 --- a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx +++ b/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx @@ -12,10 +12,11 @@ import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; import { DrawType } from '../models/enums'; import { Box } from '../box'; +const WIDTH_SPACING_FACTOR = 18; const useStyle = makeStyles((theme: Theme) => createStyles({ drawingButton: { - width: theme.spacing(18), + width: theme.spacing(WIDTH_SPACING_FACTOR), }, fullWidth: { width: '100%', @@ -38,11 +39,11 @@ export const PolygonSelectionUi: React.FC = ( const [anchorEl, setAnchorEl] = React.useState(null); const { isSelectionEnabled, onCancelDraw, onStartDraw, onReset } = props; - const handleClick = (event: React.MouseEvent) => { + const handleClick = (event: React.MouseEvent): void => { setAnchorEl(event.currentTarget); }; - const handleClose = () => { + const handleClose = (): void => { setAnchorEl(null); }; @@ -90,23 +91,23 @@ export const PolygonSelectionUi: React.FC = ( // }} > { - onStartDraw(DrawType.polygon); + onClick={(): void => { + onStartDraw(DrawType.POLYGON); handleClose(); }} > Polygon { - onStartDraw(DrawType.box); + onClick={(): void => { + onStartDraw(DrawType.BOX); handleClose(); }} > Box { + onClick={(): void => { onReset(); handleClose(); }} diff --git a/packages/mc-react-components/src/lib/models/enums.ts b/packages/mc-react-components/src/lib/models/enums.ts index 6b51d7dc..ae9d74ab 100644 --- a/packages/mc-react-components/src/lib/models/enums.ts +++ b/packages/mc-react-components/src/lib/models/enums.ts @@ -1,4 +1,4 @@ export enum DrawType { - box = 1, - polygon = 2 + BOX = 'BOX', + POLYGON = 'POLYGON' } \ No newline at end of file diff --git a/packages/mc-react-components/src/lib/ol-map/feature.tsx b/packages/mc-react-components/src/lib/ol-map/feature.tsx index 14a56e45..00b1cf9e 100644 --- a/packages/mc-react-components/src/lib/ol-map/feature.tsx +++ b/packages/mc-react-components/src/lib/ol-map/feature.tsx @@ -15,7 +15,7 @@ export const GeoJSONFeature: React.FC = ({ geometry }) => { const geoJSON = new GeoJSON(); const feature = geoJSON.readFeature(geometry); source.addFeature(feature); - return () => { source.removeFeature(feature) }; + return (): void => { source.removeFeature(feature) }; }, [geometry, source]) return null; diff --git a/packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx b/packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx index 8402a401..7ca307ab 100644 --- a/packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx +++ b/packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx @@ -19,10 +19,10 @@ export const DrawInteraction: React.FC = ({ drawType, onPolygonSelect useEffect(() => { const options: DrawOptions = { type: GeometryType.CIRCLE } switch (drawType) { - case DrawType.box: + case DrawType.BOX: options.geometryFunction = createBox(); break; - case DrawType.polygon: + case DrawType.POLYGON: options.type = GeometryType.POLYGON; break; default: @@ -30,19 +30,19 @@ export const DrawInteraction: React.FC = ({ drawType, onPolygonSelect } const draw = new Draw(options); - map?.addInteraction(draw) + map.addInteraction(draw); - const onDrawEnd = (e: DrawEvent) => { + const onDrawEnd = (e: DrawEvent): void => { const geoJson = new GeoJSON(); const geom = geoJson.writeGeometryObject(e.feature.getGeometry()) - onPolygonSelected?.(geom as Geometry); + onPolygonSelected?.(geom); }; draw.on('drawend', onDrawEnd); - return (() => { + return ((): void => { draw.un('drawend', onDrawEnd); - map?.removeInteraction(draw); + map.removeInteraction(draw); }); }, [onPolygonSelected, drawType, map]) diff --git a/packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx b/packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx index c543292a..8d68de5c 100644 --- a/packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx +++ b/packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx @@ -5,7 +5,7 @@ import { useMap } from '../map'; const tileLayerContext = createContext(null) const TileLayerProvider = tileLayerContext.Provider; -export const useTileLayer = () => { +export const useTileLayer = (): Tile => { const layer = useContext(tileLayerContext); if (layer === null) { @@ -23,7 +23,7 @@ export const TileLayer: React.FC = ({children}) => { useEffect(() => { map.addLayer(tileLayer) - return () => {map.removeLayer(tileLayer);} + return (): void => {map.removeLayer(tileLayer);} }, [map, tileLayer]) return ( diff --git a/packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx b/packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx index 9d085240..929d6d89 100644 --- a/packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx +++ b/packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx @@ -5,7 +5,7 @@ import { useMap } from '../map'; const vectorLayerContext = createContext(null) const VectorLayerProvider = vectorLayerContext.Provider; -export const useVectorLayer = () => { +export const useVectorLayer = (): Vector => { const layer = useContext(vectorLayerContext); if (layer === null) { @@ -22,7 +22,7 @@ export const VectorLayer: React.FC = ({children}) => { useEffect(() => { map.addLayer(vectorLayer) - return () => {map.removeLayer(vectorLayer);} + return (): void => {map.removeLayer(vectorLayer);} }, [map, vectorLayer]) return ( diff --git a/packages/mc-react-components/src/lib/ol-map/map.tsx b/packages/mc-react-components/src/lib/ol-map/map.tsx index 712634f0..8eb87d95 100644 --- a/packages/mc-react-components/src/lib/ol-map/map.tsx +++ b/packages/mc-react-components/src/lib/ol-map/map.tsx @@ -12,7 +12,7 @@ import "ol/ol.css"; const mapContext = createContext(null); const MapProvider = mapContext.Provider; -export const useMap = () => { +export const useMap = (): OlMap => { const map = useContext(mapContext); if (map === null) { @@ -23,11 +23,13 @@ export const useMap = () => { }; export const Map: React.FC = (props) => { + const CENTER_LAT = 35, + CENTER_LON = 32; const mapElementRef = useRef(null); const [map] = useState( new OlMap({ view: new View({ - center: [35, 32], + center: [CENTER_LAT, CENTER_LON], zoom: 10, projection: "EPSG:4326", }), diff --git a/packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx b/packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx index a7326222..223ecef5 100644 --- a/packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx +++ b/packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx @@ -6,7 +6,7 @@ import { useVectorLayer } from '../layers/vector-layer'; const vectorSourceContext = createContext(null) const VectorSourceProvider = vectorSourceContext.Provider; -export const useVectorSource = () => { +export const useVectorSource = (): Vector => { const source = useContext(vectorSourceContext); if (source === null) { @@ -21,7 +21,7 @@ export const VectorSource: React.FC = ({children}) => { const vectorLayer = useVectorLayer(); const [vectorSource] = useState(new Vector()) - useEffect(() => { + useEffect((): void => { vectorLayer.setSource(vectorSource) }, [vectorSource, vectorLayer]) diff --git a/packages/mc-react-components/src/lib/popover/popover.tsx b/packages/mc-react-components/src/lib/popover/popover.tsx index 2a61aaa2..e70ce52d 100644 --- a/packages/mc-react-components/src/lib/popover/popover.tsx +++ b/packages/mc-react-components/src/lib/popover/popover.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Popover, PopoverProps } from '@material-ui/core'; -export const McPopover = (props: PopoverProps) => +export const McPopover: React.FC = (props) => { const {children, ...rest} = props; return ( diff --git a/packages/mc-react-components/src/lib/smart-table/__mocks__/smartTableMocks.ts b/packages/mc-react-components/src/lib/smart-table/__mock-data__/smartTableMocks.ts similarity index 77% rename from packages/mc-react-components/src/lib/smart-table/__mocks__/smartTableMocks.ts rename to packages/mc-react-components/src/lib/smart-table/__mock-data__/smartTableMocks.ts index 12bf31f4..c1e7bac9 100644 --- a/packages/mc-react-components/src/lib/smart-table/__mocks__/smartTableMocks.ts +++ b/packages/mc-react-components/src/lib/smart-table/__mock-data__/smartTableMocks.ts @@ -1,16 +1,16 @@ import { CellMetadata } from '../smart-table-types'; -export interface item { +export interface Item { first: string; second: number; } -export const headCells: CellMetadata[] = [ +export const headCells: CellMetadata[] = [ { disablePadding: true, id: 'first', label: 'first', numeric: false, transform: jest.fn().mockReturnValue('42') }, { disablePadding: false, id: 'second', label: 'second', numeric: true }, ]; -export const items: item[] = [ +export const items: Item[] = [ { first: 'a', second: 1 }, { first: 'b', second: 2 }, ]; diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx index 04400779..53ae9260 100644 --- a/packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx +++ b/packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx @@ -2,14 +2,16 @@ import React from 'react'; import { shallow } from 'enzyme'; import { SmartEnhancedTableHead } from './smart-table-head'; import { TableCell, TableSortLabel } from '@material-ui/core'; -import { headCells } from './__mocks__/smartTableMocks'; +import { headCells } from './__mock-data__/smartTableMocks'; it('generates the correct number of table cells', () => { const wrapper = shallow( {}} + onRequestSort={() => { + // do nothing for eslint + }} order="asc" orderBy={''} /> @@ -27,15 +29,19 @@ it('sets the correct values for the table cell properties', () => { {}} + onRequestSort={() => { + // do nothing for eslint + }} order="asc" orderBy={'first'} /> ); + /* eslint-disable @typescript-eslint/no-unsafe-assignment */ const firstTableCellProps = wrapper .findWhere((n) => n.type() === TableCell && n.key() === headCells[0].id) .props(); + /* eslint-disable @typescript-eslint/no-unsafe-assignment */ const secondTableCellProps = wrapper .findWhere((n) => n.type() === TableCell && n.key() === headCells[1].id) .props(); @@ -57,7 +63,9 @@ it('sets the correct values for the sort label properties', () => { {}} + onRequestSort={() => { + // do nothing for eslint + }} order="desc" orderBy={'first'} /> @@ -103,5 +111,5 @@ it('calls onRequestSort with the correct params', () => { ) .simulate('click', {}); - expect(handleRequestSort).toBeCalledWith(expect.anything(), headCells[0].id); + expect(handleRequestSort).toHaveBeenCalledWith(expect.anything(), headCells[0].id); }); diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx index 445a9f45..07b3cc33 100644 --- a/packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx +++ b/packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx @@ -1,3 +1,4 @@ +/* eslint-disable */ import React from 'react' import TableHead from "@material-ui/core/TableHead"; import { CellMetadata, Order } from "./smart-table-types"; diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx index 0ec9f01e..66d4b06f 100644 --- a/packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx +++ b/packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { SmartTableRow } from './smart-table-row'; -import { items, headCells } from './__mocks__/smartTableMocks'; +import { items, headCells } from './__mock-data__/smartTableMocks'; import { IconButton, Collapse, TableCell, TableRow } from '@material-ui/core'; const item = items[0]; @@ -61,11 +61,13 @@ it('generates tablecells with the correct properties and runs transform', () => /> ); + /* eslint-disable @typescript-eslint/no-unsafe-assignment */ const firstTableCellProps = wrapper - .findWhere((n) => n.type() === TableCell && n.key() === headCells[0].id + rowIndex) + .findWhere((n) => n.type() === TableCell && n.key() === headCells[0].id + rowIndex.toString()) .props(); + /* eslint-disable @typescript-eslint/no-unsafe-assignment */ const secondTableCellProps = wrapper - .findWhere((n) => n.type() === TableCell && n.key() === headCells[1].id + rowIndex) + .findWhere((n) => n.type() === TableCell && n.key() === headCells[1].id + rowIndex.toString()) .props(); expect(firstTableCellProps).toHaveProperty('align','left'); @@ -75,7 +77,7 @@ it('generates tablecells with the correct properties and runs transform', () => expect(secondTableCellProps).toHaveProperty('padding','default'); expect(firstTableCellProps).toHaveProperty('children','42'); - expect(headCells[0].transform).toBeCalledWith(item.first); + expect(headCells[0].transform).toHaveBeenCalledWith(item.first); expect(secondTableCellProps).toHaveProperty('children',item.second); }); @@ -95,5 +97,5 @@ it('calls onRowSelected with the correct index', () => { wrapper.find(TableRow).simulate('click'); - expect(onRowSelected).toBeCalledWith(0); + expect(onRowSelected).toHaveBeenCalledWith(0); }); diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx index 68c91046..c238cf5b 100644 --- a/packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx +++ b/packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx @@ -1,3 +1,4 @@ +/* eslint-disable */ import { CellMetadata, ElementFunction } from "./smart-table-types"; import React, { useState } from "react"; import { TableRow, TableCell, IconButton, Collapse } from "@material-ui/core"; @@ -26,7 +27,7 @@ export function SmartTableRow(props: SmartTableRowProps) { const [open, setOpen] = useState(false); const cellCount = cellsMetadata.length; - const handleClick = () => { + const handleClick = (): void => { onRowSelected?.(rowIndex); }; return ( @@ -37,7 +38,7 @@ export function SmartTableRow(props: SmartTableRowProps) { { + onClick={(e): void => { e.stopPropagation(); setOpen(!open); }} @@ -48,7 +49,7 @@ export function SmartTableRow(props: SmartTableRowProps) { )} {cellsMetadata.map((cell) => ( diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx index 5dd2f3f8..ce7b5739 100644 --- a/packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx +++ b/packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { SmartTable } from './smart-table'; -import { headCells, items } from './__mocks__/smartTableMocks'; +import { headCells, items } from './__mock-data__/smartTableMocks'; import { TableRow } from '@material-ui/core'; import { SmartTableRow } from './smart-table-row'; import { SmartEnhancedTableHead } from './smart-table-head'; @@ -20,11 +20,17 @@ it( {}} - handleChangeRowsPerPage={() => {}} + handleChangePage={() => { + // do nothing for eslint + }} + handleChangeRowsPerPage={() => { + // do nothing for eslint + }} isCollapseable={false} items={[]} - onRowSelected={() => {}} + onRowSelected={() => { + // do nothing for eslint + }} onRequestSort={requestSort} page={0} rowsPerPage={10} @@ -48,11 +54,17 @@ it('Generates a row for each of the items', () => { {}} - handleChangeRowsPerPage={() => {}} + handleChangePage={() => { + // do nothing for eslint + }} + handleChangeRowsPerPage={() => { + // do nothing for eslint + }} isCollapseable={false} items={items} - onRowSelected={() => {}} + onRowSelected={() => { + // do nothing for eslint + }} onRequestSort={requestSort} page={0} rowsPerPage={10} @@ -72,11 +84,17 @@ it('calls on request sort with the correct order and property when sort is reque {}} - handleChangeRowsPerPage={() => {}} + handleChangePage={() => { + // do nothing for eslint + }} + handleChangeRowsPerPage={() => { + // do nothing for eslint + }} isCollapseable={false} items={items} - onRowSelected={() => {}} + onRowSelected={() => { + // do nothing for eslint + }} onRequestSort={requestSort} page={0} rowsPerPage={10} @@ -87,12 +105,12 @@ it('calls on request sort with the correct order and property when sort is reque .find(SmartEnhancedTableHead) .simulate('requestSort', {}, headCells[0].id); - expect(requestSort).toBeCalledWith(headCells[0].id, 'asc'); + expect(requestSort).toHaveBeenCalledWith(headCells[0].id, 'asc'); wrapper.update(); wrapper .find(SmartEnhancedTableHead) .simulate('requestSort', {}, headCells[0].id); - expect(requestSort).toBeCalledWith(headCells[0].id, 'desc'); + expect(requestSort).toHaveBeenCalledWith(headCells[0].id, 'desc'); }); diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table.tsx b/packages/mc-react-components/src/lib/smart-table/smart-table.tsx index 4891ff8f..9070025c 100644 --- a/packages/mc-react-components/src/lib/smart-table/smart-table.tsx +++ b/packages/mc-react-components/src/lib/smart-table/smart-table.tsx @@ -1,3 +1,4 @@ +/* eslint-disable */ import React, { useState } from 'react'; import { Table, @@ -49,7 +50,7 @@ export function SmartTable(props: SmartTableProps) { const handleRequestSort = ( event: React.MouseEvent, property: keyof T - ) => { + ): void => { const isAsc = orderBy === property && order === 'asc'; setOrder(isAsc ? 'desc' : 'asc'); setOrderBy(property); diff --git a/packages/mc-react-components/src/lib/theme/theme.ts b/packages/mc-react-components/src/lib/theme/theme.ts index a85a8673..707780bb 100644 --- a/packages/mc-react-components/src/lib/theme/theme.ts +++ b/packages/mc-react-components/src/lib/theme/theme.ts @@ -1,14 +1,6 @@ import React from 'react'; -import { createMuiTheme, Theme } from '@material-ui/core'; -import useMediaQuery , { Options } from '@material-ui/core/useMediaQuery'; - -// const mcuseMediaQuery = ( -// query: string | ((theme: Theme) => string), -// options?: Options -// ): boolean => { -// return useMediaQuery(query, options); -// }; - +import { createMuiTheme } from '@material-ui/core'; +import useMediaQuery from '@material-ui/core/useMediaQuery'; const useMappedMuiTheme = (theme: { [key: string]: string }) => { const prefersDarkMode = (theme.type === 'dark'); diff --git a/packages/mc-react-components/tsbuildconfig.json b/packages/mc-react-components/tsbuildconfig.json index fcb8d0af..5f4489d7 100644 --- a/packages/mc-react-components/tsbuildconfig.json +++ b/packages/mc-react-components/tsbuildconfig.json @@ -12,7 +12,7 @@ "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, - "module": "esnext", + "module": "commonjs", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, diff --git a/packages/mc-react-ui-components/tsbuildconfig.json b/packages/mc-react-ui-components/tsbuildconfig.json index 0cdd1c88..6e73fc8f 100644 --- a/packages/mc-react-ui-components/tsbuildconfig.json +++ b/packages/mc-react-ui-components/tsbuildconfig.json @@ -12,7 +12,7 @@ "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, - "module": "esnext", + "module": "commonjs", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, From 1427a1f98049836d66c66525e7bfd3e2f514bebb Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 10:09:48 +0300 Subject: [PATCH 12/35] fix(compilation): core components --- packages/mc-react-ui-components/src/lib/card/card.story.tsx | 2 +- .../mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/chip/chip.story.tsx | 2 +- .../src/lib/data-table/data-table.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx | 2 +- .../src/lib/elevation/elevation.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/fab/fab.story.tsx | 2 +- .../src/lib/grid-list/grid-list.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/grid/grid.story.tsx | 2 +- .../src/lib/icon-button/icon-button.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/icon/icon.story.tsx | 2 +- .../src/lib/image-list/image-list.story.tsx | 2 +- .../src/lib/linear-progress/linear-progress.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/list/list.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/menu/menu.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/radio/radio.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/select/select.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/select/select/index.tsx | 2 +- packages/mc-react-ui-components/src/lib/slider/slider.story.tsx | 2 +- .../mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/switch/switch.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx | 2 +- .../src/lib/textfield/textfield.story.tsx | 2 +- packages/mc-react-ui-components/src/lib/theme/theme.story.tsx | 2 +- .../mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx | 2 +- .../src/lib/top-app-bar/top-app-bar.story.tsx | 2 +- .../src/lib/typography/typography.story.tsx | 2 +- 29 files changed, 29 insertions(+), 29 deletions(-) diff --git a/packages/mc-react-ui-components/src/lib/card/card.story.tsx b/packages/mc-react-ui-components/src/lib/card/card.story.tsx index 11b5e3f9..6462f879 100644 --- a/packages/mc-react-ui-components/src/lib/card/card.story.tsx +++ b/packages/mc-react-ui-components/src/lib/card/card.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { diff --git a/packages/mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx b/packages/mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx index d08efc18..1f4fb902 100644 --- a/packages/mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx +++ b/packages/mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/chip/chip.story.tsx b/packages/mc-react-ui-components/src/lib/chip/chip.story.tsx index 5fafc261..dfcfec13 100644 --- a/packages/mc-react-ui-components/src/lib/chip/chip.story.tsx +++ b/packages/mc-react-ui-components/src/lib/chip/chip.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { Chip, ChipSet } from '.'; diff --git a/packages/mc-react-ui-components/src/lib/data-table/data-table.story.tsx b/packages/mc-react-ui-components/src/lib/data-table/data-table.story.tsx index e024f2f7..76f4e74c 100644 --- a/packages/mc-react-ui-components/src/lib/data-table/data-table.story.tsx +++ b/packages/mc-react-ui-components/src/lib/data-table/data-table.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { Select } from '@rmwc/select'; diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx b/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx index 20bfbe78..614fbfe3 100644 --- a/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx +++ b/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx b/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx index 2d0e1b9a..3dc98924 100644 --- a/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx +++ b/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx b/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx index 3850ca37..d11c3efa 100644 --- a/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx +++ b/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { Elevation } from './'; // import { Link, BrowserRouter } from 'react-router-dom'; diff --git a/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx b/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx index 45abaa8d..b4240d78 100644 --- a/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx +++ b/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/grid-list/grid-list.story.tsx b/packages/mc-react-ui-components/src/lib/grid-list/grid-list.story.tsx index 4025bc07..104cf2a2 100644 --- a/packages/mc-react-ui-components/src/lib/grid-list/grid-list.story.tsx +++ b/packages/mc-react-ui-components/src/lib/grid-list/grid-list.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { boolean, select } from '@storybook/addon-knobs'; diff --git a/packages/mc-react-ui-components/src/lib/grid/grid.story.tsx b/packages/mc-react-ui-components/src/lib/grid/grid.story.tsx index 9ebac96a..f48e72f3 100644 --- a/packages/mc-react-ui-components/src/lib/grid/grid.story.tsx +++ b/packages/mc-react-ui-components/src/lib/grid/grid.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { number } from '@storybook/addon-knobs'; diff --git a/packages/mc-react-ui-components/src/lib/icon-button/icon-button.story.tsx b/packages/mc-react-ui-components/src/lib/icon-button/icon-button.story.tsx index a56475ab..745bca80 100644 --- a/packages/mc-react-ui-components/src/lib/icon-button/icon-button.story.tsx +++ b/packages/mc-react-ui-components/src/lib/icon-button/icon-button.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; diff --git a/packages/mc-react-ui-components/src/lib/icon/icon.story.tsx b/packages/mc-react-ui-components/src/lib/icon/icon.story.tsx index 26579277..38cd010a 100644 --- a/packages/mc-react-ui-components/src/lib/icon/icon.story.tsx +++ b/packages/mc-react-ui-components/src/lib/icon/icon.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { Icon } from './'; diff --git a/packages/mc-react-ui-components/src/lib/image-list/image-list.story.tsx b/packages/mc-react-ui-components/src/lib/image-list/image-list.story.tsx index 05b93c53..d1e66dba 100644 --- a/packages/mc-react-ui-components/src/lib/image-list/image-list.story.tsx +++ b/packages/mc-react-ui-components/src/lib/image-list/image-list.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { boolean } from '@storybook/addon-knobs'; diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.story.tsx b/packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.story.tsx index 7cb09b23..a0b36365 100644 --- a/packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.story.tsx +++ b/packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { boolean, number } from '@storybook/addon-knobs'; diff --git a/packages/mc-react-ui-components/src/lib/list/list.story.tsx b/packages/mc-react-ui-components/src/lib/list/list.story.tsx index 798dca94..6c5ca760 100644 --- a/packages/mc-react-ui-components/src/lib/list/list.story.tsx +++ b/packages/mc-react-ui-components/src/lib/list/list.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { diff --git a/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx b/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx index a613a631..7f4efc2d 100644 --- a/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx +++ b/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { select } from '@storybook/addon-knobs'; diff --git a/packages/mc-react-ui-components/src/lib/radio/radio.story.tsx b/packages/mc-react-ui-components/src/lib/radio/radio.story.tsx index 3efad81d..f349dd3a 100644 --- a/packages/mc-react-ui-components/src/lib/radio/radio.story.tsx +++ b/packages/mc-react-ui-components/src/lib/radio/radio.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx b/packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx index 56872285..26560bd4 100644 --- a/packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx +++ b/packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { boolean } from '@storybook/addon-knobs'; diff --git a/packages/mc-react-ui-components/src/lib/select/select.story.tsx b/packages/mc-react-ui-components/src/lib/select/select.story.tsx index 3164d5b1..3dd6785b 100644 --- a/packages/mc-react-ui-components/src/lib/select/select.story.tsx +++ b/packages/mc-react-ui-components/src/lib/select/select.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/select/select/index.tsx b/packages/mc-react-ui-components/src/lib/select/select/index.tsx index 0d6599b4..413992da 100644 --- a/packages/mc-react-ui-components/src/lib/select/select/index.tsx +++ b/packages/mc-react-ui-components/src/lib/select/select/index.tsx @@ -220,7 +220,7 @@ function EnhancedMenu(props: EnhancedMenuProps & SelectHTMLProps) { ? option.value === value : currentIndex - 1 === selectedIndex } - {...option} + // {...option} data-value={option.value} > {label} diff --git a/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx b/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx index d9977415..e813ba41 100644 --- a/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx +++ b/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx index d02beeef..6a82e575 100644 --- a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx +++ b/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/switch/switch.story.tsx b/packages/mc-react-ui-components/src/lib/switch/switch.story.tsx index 5fa6b1f4..ab40fdae 100644 --- a/packages/mc-react-ui-components/src/lib/switch/switch.story.tsx +++ b/packages/mc-react-ui-components/src/lib/switch/switch.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx b/packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx index b591b50a..0f479198 100644 --- a/packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx +++ b/packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { Link, BrowserRouter as Router } from 'react-router-dom'; // import { storiesOf } from '@storybook/react'; diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx b/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx index 65de8d64..69d8b16c 100644 --- a/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx +++ b/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { boolean, text, number } from '@storybook/addon-knobs'; diff --git a/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx b/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx index ed34b7db..e84c890e 100644 --- a/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx +++ b/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { Theme } from './'; diff --git a/packages/mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx b/packages/mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx index 5f57a865..607bc6e0 100644 --- a/packages/mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx +++ b/packages/mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { Tooltip } from './'; diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx index 5e8386f1..f1e4c01d 100644 --- a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx +++ b/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { action } from '@storybook/addon-actions'; diff --git a/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx b/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx index e6dd7492..ad05b93e 100644 --- a/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx +++ b/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx @@ -1,4 +1,4 @@ -// import React from 'react'; +import React from 'react'; // import { storiesOf } from '@storybook/react'; // import { Typography } from './'; From 725500a844b4b19829940007c2bc1e4143fa9fd4 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 12:10:53 +0300 Subject: [PATCH 13/35] fix(lerna): more published packages --- lerna.json | 3 ++- package.json | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 0420f911..f35f0da8 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,8 @@ { "lerna": "2.11.0", "packages": [ - "packages/*" + "packages/mc-react-components", + "packages/mc-react-ui-components" ], "version": "independent", "npmClient": "yarn", diff --git a/package.json b/package.json index 8c784fe2..c50b5107 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "scripts": { "del-dist": "lerna exec --parallel -- del-cli dist", "prebuild": "yarn del-dist", + "build:react-core:build": "lerna exec --scope @map-colonies/react-core -- yarn build", "build:react-core:postbuild": "lerna exec --scope @map-colonies/react-core -- yarn postbuild", "build:react-core": "yarn build:react-core:build && yarn build:react-core:postbuild", @@ -40,6 +41,7 @@ "build:stencil": "lerna exec --scope @map-colonies/ui-components -- yarn build", "build:stencil-react": "lerna exec --scope @map-colonies/ui-components-react -- yarn build", "build:all": "lerna run build --npm-client=yarn", + "publish": "lerna publish --contents dist", "eslint-check:react": "lerna exec --scope @map-colonies/react-components -- yarn eslint-check", From 4aa8c2d4d2101ee7b7065f826dd536ff47c0eef1 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 12:33:19 +0300 Subject: [PATCH 14/35] fix(publish): task added --- package.json | 5 +++-- packages/mc-react-components/package.json | 3 ++- packages/mc-react-ui-components/package.json | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index c50b5107..0cb9604f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "author": "ofer.adel ", "private": true, "workspaces": [ - "packages/*", + "packages/mc-react-components", + "packages/mc-react-ui-components", "demoapp", "conflicts-ui" ], @@ -33,7 +34,7 @@ "scripts": { "del-dist": "lerna exec --parallel -- del-cli dist", "prebuild": "yarn del-dist", - + "build:react-core:build": "lerna exec --scope @map-colonies/react-core -- yarn build", "build:react-core:postbuild": "lerna exec --scope @map-colonies/react-core -- yarn postbuild", "build:react-core": "yarn build:react-core:build && yarn build:react-core:postbuild", diff --git a/packages/mc-react-components/package.json b/packages/mc-react-components/package.json index e1b2ffd9..a54f1ea1 100644 --- a/packages/mc-react-components/package.json +++ b/packages/mc-react-components/package.json @@ -45,7 +45,8 @@ "test": "react-scripts test", "eject": "react-scripts eject", "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist", - "eslint-check": "npx eslint . --ext .ts,.tsx" + "eslint-check": "npx eslint . --ext .ts,.tsx", + "publish": "lerna publish--scope @map-colonies/react-components" }, "browserslist": { "production": [ diff --git a/packages/mc-react-ui-components/package.json b/packages/mc-react-ui-components/package.json index e7cbb829..55184982 100644 --- a/packages/mc-react-ui-components/package.json +++ b/packages/mc-react-ui-components/package.json @@ -40,7 +40,8 @@ "test": "react-scripts test", "eject": "react-scripts eject", "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist", - "eslint-check": "npx eslint . --ext .ts,.tsx" + "eslint-check": "npx eslint . --ext .ts,.tsx", + "publish": "lerna publish --scope @map-colonies/react-core" }, "browserslist": { "production": [ From 09cdbfc5e76c35af973715b60f29d25e36e8cf3c Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 12:38:13 +0300 Subject: [PATCH 15/35] fix(lerna): tasks --- package.json | 4 +++- packages/mc-react-components/package.json | 3 +-- packages/mc-react-ui-components/package.json | 3 +-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0cb9604f..1a26576b 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,9 @@ "build:stencil": "lerna exec --scope @map-colonies/ui-components -- yarn build", "build:stencil-react": "lerna exec --scope @map-colonies/ui-components-react -- yarn build", "build:all": "lerna run build --npm-client=yarn", - + + "publish:react-core": "lerna publish --scope @map-colonies/react-core --contents dist", + "publish:react": "lerna publish --scope @map-colonies/react-components --contents dist", "publish": "lerna publish --contents dist", "eslint-check:react": "lerna exec --scope @map-colonies/react-components -- yarn eslint-check", diff --git a/packages/mc-react-components/package.json b/packages/mc-react-components/package.json index a54f1ea1..e1b2ffd9 100644 --- a/packages/mc-react-components/package.json +++ b/packages/mc-react-components/package.json @@ -45,8 +45,7 @@ "test": "react-scripts test", "eject": "react-scripts eject", "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist", - "eslint-check": "npx eslint . --ext .ts,.tsx", - "publish": "lerna publish--scope @map-colonies/react-components" + "eslint-check": "npx eslint . --ext .ts,.tsx" }, "browserslist": { "production": [ diff --git a/packages/mc-react-ui-components/package.json b/packages/mc-react-ui-components/package.json index 55184982..e7cbb829 100644 --- a/packages/mc-react-ui-components/package.json +++ b/packages/mc-react-ui-components/package.json @@ -40,8 +40,7 @@ "test": "react-scripts test", "eject": "react-scripts eject", "postbuild": "copyfiles -u 2 -e \"**/*.ts\" -e \"**/*.tsx\" \"src/lib/**/*\" dist", - "eslint-check": "npx eslint . --ext .ts,.tsx", - "publish": "lerna publish --scope @map-colonies/react-core" + "eslint-check": "npx eslint . --ext .ts,.tsx" }, "browserslist": { "production": [ From fd40bdd5ecdac1ec5b31be1a534ca3ed1de6b43f Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 12:54:50 +0300 Subject: [PATCH 16/35] fix(lerna): package.json --- packages/mc-react-components/package.json | 3 +++ packages/mc-react-ui-components/package.json | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/mc-react-components/package.json b/packages/mc-react-components/package.json index e1b2ffd9..30a29a44 100644 --- a/packages/mc-react-components/package.json +++ b/packages/mc-react-components/package.json @@ -12,6 +12,9 @@ "type": "git", "url": "https://github.com/MapColonies/shared-components.git" }, + "publishConfig": { + "access": "public" + }, "license": "MIT", "dependencies": { "cross-env": "7.0.2", diff --git a/packages/mc-react-ui-components/package.json b/packages/mc-react-ui-components/package.json index e7cbb829..76267e91 100644 --- a/packages/mc-react-ui-components/package.json +++ b/packages/mc-react-ui-components/package.json @@ -12,6 +12,9 @@ "type": "git", "url": "https://github.com/MapColonies/shared-components.git" }, + "publishConfig": { + "access": "public" + }, "license": "MIT", "dependencies": { "cross-env": "7.0.2", From ceac5b2d8f7b71096b5e85e0e8a2558589435eb5 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 13:14:10 +0300 Subject: [PATCH 17/35] chore(publish): publish %s [ci skip] - conflicts-ui@0.1.1 - demoapp@0.1.1 - @map-colonies/react-components@0.1.1 - @map-colonies/react-core@0.1.1 --- conflicts-ui/CHANGELOG.md | 18 ++++++++++++- conflicts-ui/package.json | 8 +++--- demoapp/CHANGELOG.md | 8 ++++++ demoapp/package.json | 10 +++---- packages/mc-react-components/CHANGELOG.md | 15 +++++++++++ packages/mc-react-components/package.json | 28 ++++++++++---------- packages/mc-react-ui-components/CHANGELOG.md | 16 +++++++++++ packages/mc-react-ui-components/package.json | 18 ++++++------- 8 files changed, 88 insertions(+), 33 deletions(-) create mode 100644 demoapp/CHANGELOG.md create mode 100644 packages/mc-react-components/CHANGELOG.md create mode 100644 packages/mc-react-ui-components/CHANGELOG.md diff --git a/conflicts-ui/CHANGELOG.md b/conflicts-ui/CHANGELOG.md index 34ddbd1b..a2b5deae 100644 --- a/conflicts-ui/CHANGELOG.md +++ b/conflicts-ui/CHANGELOG.md @@ -1,3 +1,19 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 0.1.1 (2020-08-16) + + +### Bug Fixes + +* **lint:** linting integrated ([3536f31](https://github.com/MapColonies/conflicts-ui/commit/3536f3162765a63e3baf595b350251d58e3c04f6)) + + + + + # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. @@ -6,4 +22,4 @@ All notable changes to this project will be documented in this file. See [standa ### Features -* **conflicts:** created conflicts previewer with date and geospatial filters ([25ff61](https://github.com/MapColonies/conflicts-ui/commit/25ff613419a1669d01a59b838a0a06a093e9d2ca)) \ No newline at end of file +* **conflicts:** created conflicts previewer with date and geospatial filters ([25ff61](https://github.com/MapColonies/conflicts-ui/commit/25ff613419a1669d01a59b838a0a06a093e9d2ca)) diff --git a/conflicts-ui/package.json b/conflicts-ui/package.json index ae46184a..a9370ad1 100644 --- a/conflicts-ui/package.json +++ b/conflicts-ui/package.json @@ -1,7 +1,7 @@ { "proxy": "http://localhost:8000", "name": "conflicts-ui", - "version": "0.1.0", + "version": "0.1.1", "bugs": { "url": "https://github.com/MapColonies/conflicts-ui/issues" }, @@ -48,8 +48,8 @@ "dependencies": { "@commitlint/cli": "^9.1.1", "@commitlint/config-conventional": "^9.1.1", - "@map-colonies/react-components": "^0.1.0", - "@map-colonies/react-core": "^0.1.0", + "@map-colonies/react-components": "^0.1.1", + "@map-colonies/react-core": "^0.1.1", "@material-ui/core": "^4.11.0", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", @@ -102,4 +102,4 @@ "last 1 safari version" ] } -} \ No newline at end of file +} diff --git a/demoapp/CHANGELOG.md b/demoapp/CHANGELOG.md new file mode 100644 index 00000000..175048c3 --- /dev/null +++ b/demoapp/CHANGELOG.md @@ -0,0 +1,8 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 0.1.1 (2020-08-16) + +**Note:** Version bump only for package demoapp diff --git a/demoapp/package.json b/demoapp/package.json index 28cbda3e..4ff94a78 100644 --- a/demoapp/package.json +++ b/demoapp/package.json @@ -1,16 +1,16 @@ { "name": "demoapp", - "version": "0.1.0", + "version": "0.1.1", "private": true, "scripts": { "start": "react-scripts start" }, "dependencies": { - "react": "^16.13.1", - "react-dom": "^16.13.1", - "@map-colonies/react-components": "^0.1.0", + "@map-colonies/react-components": "^0.1.1", "@map-colonies/ui-components": "^0.0.1", - "@map-colonies/ui-components-react": "^0.0.1" + "@map-colonies/ui-components-react": "^0.0.1", + "react": "^16.13.1", + "react-dom": "^16.13.1" }, "devDependencies": { "@types/jest": "^24.0.0", diff --git a/packages/mc-react-components/CHANGELOG.md b/packages/mc-react-components/CHANGELOG.md new file mode 100644 index 00000000..abc1dfca --- /dev/null +++ b/packages/mc-react-components/CHANGELOG.md @@ -0,0 +1,15 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 0.1.1 (2020-08-16) + + +### Bug Fixes + +* **lerna:** package.json ([fd40bdd](https://github.com/MapColonies/shared-components/commit/fd40bdd5ecdac1ec5b31be1a534ca3ed1de6b43f)) +* **lerna:** tasks ([09cdbfc](https://github.com/MapColonies/shared-components/commit/09cdbfc5e76c35af973715b60f29d25e36e8cf3c)) +* **lint:** linting integrated ([3536f31](https://github.com/MapColonies/shared-components/commit/3536f3162765a63e3baf595b350251d58e3c04f6)) +* **linting:** react components ([b6e4b1f](https://github.com/MapColonies/shared-components/commit/b6e4b1f3649a14dd68b13f84ad6a40676d894d0b)) +* **publish:** task added ([4aa8c2d](https://github.com/MapColonies/shared-components/commit/4aa8c2d4d2101ee7b7065f826dd536ff47c0eef1)) diff --git a/packages/mc-react-components/package.json b/packages/mc-react-components/package.json index 30a29a44..b4a0e2e7 100644 --- a/packages/mc-react-components/package.json +++ b/packages/mc-react-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-components", - "version": "0.1.0", + "version": "0.1.1", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -17,30 +17,30 @@ }, "license": "MIT", "dependencies": { - "cross-env": "7.0.2", + "@date-io/date-fns": "^1.3.13", + "@material-ui/core": "^4.11.0", + "@material-ui/icons": "^4.9.1", + "@material-ui/pickers": "^3.2.10", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", + "@turf/helpers": "^6.1.4", + "@turf/rewind": "^5.1.5", + "@types/geojson": "^7946.0.7", "@types/jest": "^24.0.0", "@types/node": "^12.0.0", + "@types/ol": "^6.3.1", "@types/react": "^16.9.0", "@types/react-dom": "^16.9.0", + "copyfiles": "2.3.0", + "cross-env": "7.0.2", + "date-fns": "^2.14.0", + "ol": "^6.3.1", "react": "^16.13.1", "react-dom": "^16.13.1", "react-scripts": "3.4.1", - "typescript": "~3.7.2", - "date-fns": "^2.14.0", - "ol": "^6.3.1", - "@turf/helpers": "^6.1.4", - "@turf/rewind": "^5.1.5", - "@types/geojson": "^7946.0.7", - "@date-io/date-fns": "^1.3.13", - "@material-ui/core": "^4.11.0", - "@material-ui/icons": "^4.9.1", - "@material-ui/pickers": "^3.2.10", - "@types/ol": "^6.3.1", "rimraf": "3.0.2", - "copyfiles": "2.3.0" + "typescript": "~3.7.2" }, "scripts": { "start": "react-scripts start", diff --git a/packages/mc-react-ui-components/CHANGELOG.md b/packages/mc-react-ui-components/CHANGELOG.md new file mode 100644 index 00000000..aa0e1b86 --- /dev/null +++ b/packages/mc-react-ui-components/CHANGELOG.md @@ -0,0 +1,16 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 0.1.1 (2020-08-16) + + +### Bug Fixes + +* **compilation:** core components ([1427a1f](https://github.com/MapColonies/shared-components/commit/1427a1f98049836d66c66525e7bfd3e2f514bebb)) +* **lerna:** package.json ([fd40bdd](https://github.com/MapColonies/shared-components/commit/fd40bdd5ecdac1ec5b31be1a534ca3ed1de6b43f)) +* **lerna:** tasks ([09cdbfc](https://github.com/MapColonies/shared-components/commit/09cdbfc5e76c35af973715b60f29d25e36e8cf3c)) +* **lint:** linting integrated ([3536f31](https://github.com/MapColonies/shared-components/commit/3536f3162765a63e3baf595b350251d58e3c04f6)) +* **linting:** react components ([b6e4b1f](https://github.com/MapColonies/shared-components/commit/b6e4b1f3649a14dd68b13f84ad6a40676d894d0b)) +* **publish:** task added ([4aa8c2d](https://github.com/MapColonies/shared-components/commit/4aa8c2d4d2101ee7b7065f826dd536ff47c0eef1)) diff --git a/packages/mc-react-ui-components/package.json b/packages/mc-react-ui-components/package.json index 76267e91..4a494a32 100644 --- a/packages/mc-react-ui-components/package.json +++ b/packages/mc-react-ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-core", - "version": "0.1.0", + "version": "0.1.1", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -17,25 +17,25 @@ }, "license": "MIT", "dependencies": { - "cross-env": "7.0.2", - "classnames": "^2.2.6", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", + "@types/classnames": "^2.2.7", "@types/jest": "^24.0.0", "@types/node": "^12.0.0", + "@types/rc-tooltip": "3.7.1", "@types/react": "^16.9.0", "@types/react-dom": "^16.9.0", - "@types/classnames": "^2.2.7", + "classnames": "^2.2.6", + "copyfiles": "2.3.0", + "cross-env": "7.0.2", + "material-components-web": "^5.1.0", + "rc-tooltip": "3.7.3", "react": "^16.13.1", "react-dom": "^16.13.1", "react-scripts": "3.4.1", - "typescript": "~3.7.2", - "material-components-web": "^5.1.0", "rimraf": "3.0.2", - "copyfiles": "2.3.0", - "rc-tooltip": "3.7.3", - "@types/rc-tooltip": "3.7.1" + "typescript": "~3.7.2" }, "scripts": { "start": "react-scripts start", From 1caf8c719c4f07cd14e9e200778d771b7fb16d26 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 14:05:07 +0300 Subject: [PATCH 18/35] fix(index): lerna --- packages/mc-react-ui-components/src/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mc-react-ui-components/src/index.tsx b/packages/mc-react-ui-components/src/index.tsx index 8a0410f0..69a41e95 100644 --- a/packages/mc-react-ui-components/src/index.tsx +++ b/packages/mc-react-ui-components/src/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; + ReactDOM.render(
    Hello world
    From f445ee235b012a45e57eed5064a32e622f246d8b Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 14:08:47 +0300 Subject: [PATCH 19/35] fix(lerna): index --- packages/mc-react-components/src/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mc-react-components/src/index.tsx b/packages/mc-react-components/src/index.tsx index 8a0410f0..69a41e95 100644 --- a/packages/mc-react-components/src/index.tsx +++ b/packages/mc-react-components/src/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; + ReactDOM.render(
    Hello world
    From 0312325d702838d80fdc728a9c6a221e81b9b318 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 14:13:28 +0300 Subject: [PATCH 20/35] chore(publish): publish %s - conflicts-ui@0.1.2 - demoapp@0.1.2 - @map-colonies/react-components@0.1.2 - @map-colonies/react-core@0.1.2 --- conflicts-ui/CHANGELOG.md | 9 +++++++++ conflicts-ui/package.json | 6 +++--- demoapp/CHANGELOG.md | 9 +++++++++ demoapp/package.json | 4 ++-- packages/mc-react-components/CHANGELOG.md | 12 ++++++++++++ packages/mc-react-components/package.json | 2 +- packages/mc-react-ui-components/CHANGELOG.md | 12 ++++++++++++ packages/mc-react-ui-components/package.json | 2 +- 8 files changed, 49 insertions(+), 7 deletions(-) diff --git a/conflicts-ui/CHANGELOG.md b/conflicts-ui/CHANGELOG.md index a2b5deae..ea8bab2b 100644 --- a/conflicts-ui/CHANGELOG.md +++ b/conflicts-ui/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.2](https://github.com/MapColonies/conflicts-ui/compare/conflicts-ui@0.1.1...conflicts-ui@0.1.2) (2020-08-16) + +**Note:** Version bump only for package conflicts-ui + + + + + + ## 0.1.1 (2020-08-16) diff --git a/conflicts-ui/package.json b/conflicts-ui/package.json index a9370ad1..07738751 100644 --- a/conflicts-ui/package.json +++ b/conflicts-ui/package.json @@ -1,7 +1,7 @@ { "proxy": "http://localhost:8000", "name": "conflicts-ui", - "version": "0.1.1", + "version": "0.1.2", "bugs": { "url": "https://github.com/MapColonies/conflicts-ui/issues" }, @@ -48,8 +48,8 @@ "dependencies": { "@commitlint/cli": "^9.1.1", "@commitlint/config-conventional": "^9.1.1", - "@map-colonies/react-components": "^0.1.1", - "@map-colonies/react-core": "^0.1.1", + "@map-colonies/react-components": "^0.1.2", + "@map-colonies/react-core": "^0.1.2", "@material-ui/core": "^4.11.0", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", diff --git a/demoapp/CHANGELOG.md b/demoapp/CHANGELOG.md index 175048c3..39d49a7d 100644 --- a/demoapp/CHANGELOG.md +++ b/demoapp/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.2](https://github.com/MapColonies/shared-components/compare/demoapp@0.1.1...demoapp@0.1.2) (2020-08-16) + +**Note:** Version bump only for package demoapp + + + + + + ## 0.1.1 (2020-08-16) **Note:** Version bump only for package demoapp diff --git a/demoapp/package.json b/demoapp/package.json index 4ff94a78..5088d7af 100644 --- a/demoapp/package.json +++ b/demoapp/package.json @@ -1,12 +1,12 @@ { "name": "demoapp", - "version": "0.1.1", + "version": "0.1.2", "private": true, "scripts": { "start": "react-scripts start" }, "dependencies": { - "@map-colonies/react-components": "^0.1.1", + "@map-colonies/react-components": "^0.1.2", "@map-colonies/ui-components": "^0.0.1", "@map-colonies/ui-components-react": "^0.0.1", "react": "^16.13.1", diff --git a/packages/mc-react-components/CHANGELOG.md b/packages/mc-react-components/CHANGELOG.md index abc1dfca..e99ad83d 100644 --- a/packages/mc-react-components/CHANGELOG.md +++ b/packages/mc-react-components/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.2](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-components@0.1.1...@map-colonies/react-components@0.1.2) (2020-08-16) + + +### Bug Fixes + +* **lerna:** index ([f445ee2](https://github.com/MapColonies/shared-components/commit/f445ee235b012a45e57eed5064a32e622f246d8b)) + + + + + + ## 0.1.1 (2020-08-16) diff --git a/packages/mc-react-components/package.json b/packages/mc-react-components/package.json index b4a0e2e7..6b4b3c3c 100644 --- a/packages/mc-react-components/package.json +++ b/packages/mc-react-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-components", - "version": "0.1.1", + "version": "0.1.2", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/mc-react-ui-components/CHANGELOG.md b/packages/mc-react-ui-components/CHANGELOG.md index aa0e1b86..6c8fcbf3 100644 --- a/packages/mc-react-ui-components/CHANGELOG.md +++ b/packages/mc-react-ui-components/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.2](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-core@0.1.1...@map-colonies/react-core@0.1.2) (2020-08-16) + + +### Bug Fixes + +* **index:** lerna ([1caf8c7](https://github.com/MapColonies/shared-components/commit/1caf8c719c4f07cd14e9e200778d771b7fb16d26)) + + + + + + ## 0.1.1 (2020-08-16) diff --git a/packages/mc-react-ui-components/package.json b/packages/mc-react-ui-components/package.json index 4a494a32..559cb70a 100644 --- a/packages/mc-react-ui-components/package.json +++ b/packages/mc-react-ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-core", - "version": "0.1.1", + "version": "0.1.2", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", From 2b8c9363313c9958c800951ef25a319f21427d00 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Sun, 16 Aug 2020 16:43:36 +0300 Subject: [PATCH 21/35] fix(rename): mc prefix removed --- README.md | 42 ++++++++++++++++-- conflicts-ui/README.md | 2 +- lerna.json | 4 +- package.json | 12 ++--- .../.eslintignore | 0 .../.gitignore | 0 .../CHANGELOG.md | 0 .../README.md | 6 ++- .../package.json | 5 ++- .../public/favicon.ico | Bin .../public/index.html | 0 .../public/logo192.png | Bin .../public/logo512.png | Bin .../public/manifest.json | 0 .../public/robots.txt | 0 .../src/index.tsx | 0 .../src/lib/box/box.tsx | 0 .../src/lib/box/index.ts | 0 .../src/lib/cssbaseline/cssbaseline.tsx | 0 .../src/lib/cssbaseline/index.ts | 0 .../date-range-picker.spec.tsx | 0 .../date-range-picker/date-range-picker.tsx | 0 .../src/lib/date-range-picker/index.ts | 0 .../src/lib/index.ts | 0 .../map-filter-container/container-map.css | 0 .../map-filter-container/container-map.tsx | 0 .../src/lib/map-filter-container/index.ts | 0 .../map-filter-container.tsx | 0 .../polygon-selection-ui.spec.tsx | 0 .../polygon-selection-ui.tsx | 0 .../src/lib/models/enums.ts | 0 .../src/lib/models/index.ts | 0 .../src/lib/ol-map/feature.tsx | 0 .../src/lib/ol-map/index.ts | 0 .../src/lib/ol-map/interactions/draw.tsx | 0 .../src/lib/ol-map/interactions/index.ts | 0 .../src/lib/ol-map/layers/index.ts | 0 .../src/lib/ol-map/layers/tile-layer.tsx | 0 .../src/lib/ol-map/layers/vector-layer.tsx | 0 .../src/lib/ol-map/map.css | 0 .../src/lib/ol-map/map.tsx | 0 .../src/lib/ol-map/source/index.ts | 0 .../src/lib/ol-map/source/osm.tsx | 0 .../src/lib/ol-map/source/vector-source.tsx | 0 .../src/lib/popover/index.ts | 0 .../src/lib/popover/popover.tsx | 0 .../__mock-data__/smartTableMocks.ts | 0 .../src/lib/smart-table/index.ts | 0 .../lib/smart-table/smart-table-head.spec.tsx | 0 .../src/lib/smart-table/smart-table-head.tsx | 0 .../lib/smart-table/smart-table-row.spec.tsx | 0 .../src/lib/smart-table/smart-table-row.tsx | 0 .../src/lib/smart-table/smart-table-types.ts | 0 .../src/lib/smart-table/smart-table.spec.tsx | 0 .../src/lib/smart-table/smart-table.tsx | 0 .../src/lib/theme/index.ts | 0 .../src/lib/theme/theme.ts | 0 .../src/react-app-env.d.ts | 0 .../src/setupTests.ts | 0 .../tsbuildconfig.json | 0 .../tsconfig.json | 0 .../yarn.lock | 0 .../.eslintignore | 0 .../.gitignore | 0 .../CHANGELOG.md | 0 .../README.md | 6 ++- .../package.json | 5 ++- .../public/favicon.ico | Bin .../public/index.html | 0 .../public/logo192.png | Bin .../public/logo512.png | Bin .../public/manifest.json | 0 .../public/robots.txt | 0 .../src/index.tsx | 0 .../src/lib/@types/markdown.d.ts | 0 .../src/lib/avatar/README.md | 0 .../src/lib/avatar/avatar-ssr.spec.tsx | 0 .../src/lib/avatar/avatar.css | 0 .../src/lib/avatar/avatar.spec.tsx | 0 .../src/lib/avatar/generated-examples.json | 0 .../src/lib/avatar/generated-props.json | 0 .../src/lib/avatar/index.tsx | 0 .../src/lib/avatar/styles.tsx | 0 .../src/lib/badge/README.md | 0 .../src/lib/badge/badge-ssr.spec.tsx | 0 .../src/lib/badge/badge.css | 0 .../src/lib/badge/badge.spec.tsx | 0 .../src/lib/badge/generated-examples.json | 0 .../src/lib/badge/generated-props.json | 0 .../src/lib/badge/index.tsx | 0 .../src/lib/badge/styles.tsx | 0 .../src/lib/base/README.md | 0 .../src/lib/base/base.story.tsx | 0 .../src/lib/base/bugs.story.tsx | 0 .../src/lib/base/component.tsx | 0 .../src/lib/base/foundation-component.tsx | 0 .../src/lib/base/index.spec.tsx | 0 .../src/lib/base/index.tsx | 0 .../src/lib/base/portal.tsx | 0 .../src/lib/base/test-polyfill.tsx | 0 .../src/lib/base/utils/apply-passive.tsx | 0 .../src/lib/base/utils/data-table-context.tsx | 0 .../src/lib/base/utils/debounce.tsx | 0 .../src/lib/base/utils/deprecation.tsx | 0 .../src/lib/base/utils/emitter.tsx | 0 .../src/lib/base/utils/empty-client-rect.tsx | 0 .../src/lib/base/utils/events-map.tsx | 0 .../src/lib/base/utils/focus-trap.tsx | 0 .../src/lib/base/utils/get-display-name.tsx | 0 .../src/lib/base/utils/hooks.tsx | 0 .../src/lib/base/utils/index.tsx | 0 .../src/lib/base/utils/ponyfills.tsx | 0 .../src/lib/base/utils/raf.tsx | 0 .../src/lib/base/utils/random-id.tsx | 0 .../src/lib/base/utils/strings.tsx | 0 .../src/lib/base/utils/test-utils.tsx | 0 .../lib/base/utils/trigger-window-resize.tsx | 0 .../src/lib/base/utils/use-knob.tsx | 0 .../src/lib/base/utils/wrap-child.tsx | 0 .../src/lib/base/with-theme.tsx | 0 .../src/lib/button/README.md | 0 .../src/lib/button/button-ssr.spec.tsx | 0 .../src/lib/button/button.spec.tsx | 0 .../src/lib/button/button.story.tsx | 0 .../src/lib/button/generated-examples.json | 0 .../src/lib/button/generated-props.json | 0 .../src/lib/button/index.tsx | 0 .../src/lib/button/styles.tsx | 0 .../src/lib/card/README.md | 0 .../src/lib/card/card-ssr.spec.tsx | 0 .../src/lib/card/card.spec.tsx | 0 .../src/lib/card/card.story.tsx | 0 .../src/lib/card/generated-examples.json | 0 .../src/lib/card/generated-props.json | 0 .../src/lib/card/index.tsx | 0 .../src/lib/card/styles.tsx | 0 .../src/lib/checkbox/README.md | 0 .../src/lib/checkbox/checkbox-ssr.spec.tsx | 0 .../src/lib/checkbox/checkbox.spec.tsx | 0 .../src/lib/checkbox/checkbox.story.tsx | 0 .../src/lib/checkbox/foundation.tsx | 0 .../src/lib/checkbox/generated-examples.json | 0 .../src/lib/checkbox/generated-props.json | 0 .../src/lib/checkbox/index.tsx | 0 .../src/lib/checkbox/styles.tsx | 0 .../src/lib/chip/README.md | 0 .../src/lib/chip/chip-ssr.spec.tsx | 0 .../src/lib/chip/chip.spec.tsx | 0 .../src/lib/chip/chip.story.tsx | 0 .../src/lib/chip/foundation.tsx | 0 .../src/lib/chip/generated-examples.json | 0 .../src/lib/chip/generated-props.json | 0 .../src/lib/chip/index.tsx | 0 .../src/lib/chip/styles.tsx | 0 .../src/lib/circular-progress/README.md | 0 .../circular-progress-ssr.spec.tsx | 0 .../circular-progress/circular-progress.css | 0 .../circular-progress.spec.tsx | 0 .../circular-progress/generated-examples.json | 0 .../circular-progress/generated-props.json | 0 .../src/lib/circular-progress/index.tsx | 0 .../src/lib/circular-progress/styles.tsx | 0 .../src/lib/data-table/README.md | 0 .../lib/data-table/data-table-ssr.spec.tsx | 0 .../src/lib/data-table/data-table.css | 0 .../src/lib/data-table/data-table.spec.tsx | 0 .../src/lib/data-table/data-table.story.tsx | 0 .../lib/data-table/generated-examples.json | 0 .../src/lib/data-table/generated-props.json | 0 .../src/lib/data-table/index.tsx | 0 .../src/lib/data-table/styles.tsx | 0 .../src/lib/dialog/README.md | 0 .../src/lib/dialog/dialog-queue.tsx | 0 .../src/lib/dialog/dialog-ssr.spec.tsx | 0 .../src/lib/dialog/dialog.spec.tsx | 0 .../src/lib/dialog/dialog.story.tsx | 0 .../src/lib/dialog/dialog.tsx | 0 .../src/lib/dialog/foundation.tsx | 0 .../src/lib/dialog/generated-examples.json | 0 .../src/lib/dialog/generated-props.json | 0 .../src/lib/dialog/index.tsx | 0 .../src/lib/dialog/styles.tsx | 0 .../src/lib/drawer/README.md | 0 .../src/lib/drawer/drawer-ssr.spec.tsx | 0 .../src/lib/drawer/drawer.spec.tsx | 0 .../src/lib/drawer/drawer.story.tsx | 0 .../src/lib/drawer/foundation.tsx | 0 .../src/lib/drawer/generated-examples.json | 0 .../src/lib/drawer/generated-props.json | 0 .../src/lib/drawer/index.tsx | 0 .../src/lib/drawer/styles.tsx | 0 .../src/lib/elevation/README.md | 0 .../src/lib/elevation/elevation-ssr.spec.tsx | 0 .../src/lib/elevation/elevation.spec.tsx | 0 .../src/lib/elevation/elevation.story.tsx | 0 .../src/lib/elevation/generated-examples.json | 0 .../src/lib/elevation/generated-props.json | 0 .../src/lib/elevation/index.tsx | 0 .../src/lib/elevation/styles.tsx | 0 .../src/lib/fab/README.md | 0 .../src/lib/fab/fab-ssr.spec.tsx | 0 .../src/lib/fab/fab.spec.tsx | 0 .../src/lib/fab/fab.story.tsx | 0 .../src/lib/fab/generated-examples.json | 0 .../src/lib/fab/generated-props.json | 0 .../src/lib/fab/index.tsx | 0 .../src/lib/fab/styles.tsx | 0 .../floating-label-ssr.spec.tsx | 0 .../floating-label/floating-label.spec.tsx | 0 .../src/lib/floating-label/foundation.tsx | 0 .../floating-label/generated-examples.json | 0 .../lib/floating-label/generated-props.json | 0 .../src/lib/floating-label/index.tsx | 0 .../src/lib/floating-label/styles.tsx | 0 .../src/lib/formfield/README.md | 0 .../src/lib/formfield/form-field-ssr.spec.tsx | 0 .../src/lib/formfield/form-field.spec.tsx | 0 .../src/lib/formfield/foundation.tsx | 0 .../src/lib/formfield/generated-examples.json | 0 .../src/lib/formfield/generated-props.json | 0 .../src/lib/formfield/index.tsx | 0 .../src/lib/formfield/styles.tsx | 0 .../src/lib/grid-list/README.md | 0 .../src/lib/grid-list/generated-examples.json | 0 .../src/lib/grid-list/generated-props.json | 0 .../src/lib/grid-list/grid-list-ssr.spec.tsx | 0 .../src/lib/grid-list/grid-list.spec.tsx | 0 .../src/lib/grid-list/grid-list.story.tsx | 0 .../src/lib/grid-list/index.tsx | 0 .../src/lib/grid-list/styles.tsx | 0 .../src/lib/grid/README.md | 0 .../src/lib/grid/generated-examples.json | 0 .../src/lib/grid/generated-props.json | 0 .../src/lib/grid/grid-ssr.spec.tsx | 0 .../src/lib/grid/grid.spec.tsx | 0 .../src/lib/grid/grid.story.tsx | 0 .../src/lib/grid/index.tsx | 0 .../src/lib/grid/styles.tsx | 0 .../src/lib/icon-button/README.md | 0 .../src/lib/icon-button/foundation.tsx | 0 .../lib/icon-button/generated-examples.json | 0 .../src/lib/icon-button/generated-props.json | 0 .../lib/icon-button/icon-button-ssr.spec.tsx | 0 .../src/lib/icon-button/icon-button.spec.tsx | 0 .../src/lib/icon-button/icon-button.story.tsx | 0 .../src/lib/icon-button/index.tsx | 0 .../src/lib/icon-button/styles.tsx | 0 .../src/lib/icon/README.md | 0 .../src/lib/icon/generated-examples.json | 0 .../src/lib/icon/generated-props.json | 0 .../src/lib/icon/icon.css | 0 .../src/lib/icon/icon.spec.tsx | 0 .../src/lib/icon/icon.story.tsx | 0 .../src/lib/icon/index.tsx | 0 .../src/lib/icon/styles.tsx | 0 .../src/lib/image-list/README.md | 0 .../lib/image-list/generated-examples.json | 0 .../src/lib/image-list/generated-props.json | 0 .../lib/image-list/image-list-ssr.spec.tsx | 0 .../src/lib/image-list/image-list.spec.tsx | 0 .../src/lib/image-list/image-list.story.tsx | 0 .../src/lib/image-list/index.tsx | 0 .../src/lib/image-list/styles.tsx | 0 .../src/lib/index.ts | 0 .../src/lib/line-ripple/foundation.tsx | 0 .../lib/line-ripple/generated-examples.json | 0 .../src/lib/line-ripple/generated-props.json | 0 .../src/lib/line-ripple/index.tsx | 0 .../lib/line-ripple/line-ripple-ssr.spec.tsx | 0 .../src/lib/line-ripple/line-ripple.spec.tsx | 0 .../src/lib/line-ripple/styles.tsx | 0 .../src/lib/linear-progress/README.md | 0 .../src/lib/linear-progress/foundation.tsx | 0 .../linear-progress/generated-examples.json | 0 .../lib/linear-progress/generated-props.json | 0 .../src/lib/linear-progress/index.tsx | 0 .../linear-progress-ssr.spec.tsx | 0 .../linear-progress/linear-progress.spec.tsx | 0 .../linear-progress/linear-progress.story.tsx | 0 .../src/lib/linear-progress/styles.tsx | 0 .../src/lib/list/README-COLLAPSIBLE.md | 0 .../src/lib/list/README-VARIANTS.md | 0 .../src/lib/list/README.md | 0 .../src/lib/list/collapsible-list.css | 0 .../src/lib/list/collapsible-list.tsx | 0 .../src/lib/list/foundation.tsx | 0 .../list/generated-examples-collapsible.json | 0 .../lib/list/generated-examples-variants.json | 0 .../src/lib/list/generated-examples.json | 0 .../src/lib/list/generated-props.json | 0 .../src/lib/list/index.tsx | 0 .../src/lib/list/list-item.tsx | 0 .../src/lib/list/list-ssr.spec.tsx | 0 .../src/lib/list/list.spec.tsx | 0 .../src/lib/list/list.story.tsx | 0 .../src/lib/list/list.tsx | 0 .../src/lib/list/styles.tsx | 0 .../src/lib/menu/README.md | 0 .../src/lib/menu/generated-examples.json | 0 .../src/lib/menu/generated-props.json | 0 .../src/lib/menu/index.tsx | 0 .../src/lib/menu/menu-ssr.spec.tsx | 0 .../src/lib/menu/menu-surface/foundation.tsx | 0 .../src/lib/menu/menu-surface/index.tsx | 0 .../src/lib/menu/menu.spec.tsx | 0 .../src/lib/menu/menu.story.tsx | 0 .../src/lib/menu/menu/foundation.tsx | 0 .../src/lib/menu/menu/index.tsx | 0 .../src/lib/menu/styles.tsx | 0 .../src/lib/notched-outline/foundation.tsx | 0 .../notched-outline/generated-examples.json | 0 .../lib/notched-outline/generated-props.json | 0 .../src/lib/notched-outline/index.tsx | 0 .../notched-outline-ssr.spec.tsx | 0 .../notched-outline/notched-outline.spec.tsx | 0 .../src/lib/notched-outline/styles.tsx | 0 .../src/lib/provider/README.md | 0 .../src/lib/provider/generated-examples.json | 0 .../src/lib/provider/generated-props.json | 0 .../src/lib/provider/index.tsx | 0 .../src/lib/provider/provider-ssr.spec.tsx | 0 .../src/lib/provider/provider.spec.tsx | 0 .../src/lib/radio/README.md | 0 .../src/lib/radio/foundation.tsx | 0 .../src/lib/radio/generated-examples.json | 0 .../src/lib/radio/generated-props.json | 0 .../src/lib/radio/index.tsx | 0 .../src/lib/radio/radio-ssr.spec.tsx | 0 .../src/lib/radio/radio.spec.tsx | 0 .../src/lib/radio/radio.story.tsx | 0 .../src/lib/radio/styles.tsx | 0 .../src/lib/ripple/README.md | 0 .../src/lib/ripple/foundation.tsx | 0 .../src/lib/ripple/generated-examples.json | 0 .../src/lib/ripple/generated-props.json | 0 .../src/lib/ripple/index.tsx | 0 .../src/lib/ripple/ripple-ssr.spec.tsx | 0 .../src/lib/ripple/ripple.spec.tsx | 0 .../src/lib/ripple/ripple.story.tsx | 0 .../src/lib/ripple/styles.tsx | 0 .../src/lib/rmwc/index.tsx | 0 .../src/lib/rmwc/styles.tsx | 0 .../src/lib/select/README.md | 0 .../src/lib/select/generated-examples.json | 0 .../src/lib/select/generated-props.json | 0 .../src/lib/select/index.tsx | 0 .../src/lib/select/select-icon/foundation.tsx | 0 .../src/lib/select/select-icon/index.tsx | 0 .../src/lib/select/select-ssr.spec.tsx | 0 .../src/lib/select/select.css | 0 .../src/lib/select/select.spec.tsx | 0 .../src/lib/select/select.story.tsx | 0 .../src/lib/select/select/foundation.tsx | 0 .../src/lib/select/select/index.tsx | 0 .../src/lib/select/styles.tsx | 0 .../src/lib/slider/README.md | 0 .../src/lib/slider/foundation.tsx | 0 .../src/lib/slider/generated-examples.json | 0 .../src/lib/slider/generated-props.json | 0 .../src/lib/slider/index.tsx | 0 .../src/lib/slider/slider-ssr.spec.tsx | 0 .../src/lib/slider/slider.spec.tsx | 0 .../src/lib/slider/slider.story.tsx | 0 .../src/lib/slider/styles.tsx | 0 .../src/lib/snackbar/README.md | 0 .../src/lib/snackbar/foundation.tsx | 0 .../src/lib/snackbar/generated-examples.json | 0 .../src/lib/snackbar/generated-props.json | 0 .../src/lib/snackbar/index.tsx | 0 .../src/lib/snackbar/snackbar-queue.tsx | 0 .../src/lib/snackbar/snackbar-ssr.spec.tsx | 0 .../src/lib/snackbar/snackbar.spec.tsx | 0 .../src/lib/snackbar/snackbar.story.tsx | 0 .../src/lib/snackbar/snackbar.tsx | 0 .../src/lib/snackbar/styles.tsx | 0 .../src/lib/switch/README.md | 0 .../src/lib/switch/foundation.tsx | 0 .../src/lib/switch/generated-examples.json | 0 .../src/lib/switch/generated-props.json | 0 .../src/lib/switch/index.tsx | 0 .../src/lib/switch/styles.tsx | 0 .../src/lib/switch/switch-ssr.spec.tsx | 0 .../src/lib/switch/switch.spec.tsx | 0 .../src/lib/switch/switch.story.tsx | 0 .../src/lib/tabs/README.md | 0 .../src/lib/tabs/generated-examples.json | 0 .../src/lib/tabs/generated-props.json | 0 .../src/lib/tabs/index.tsx | 0 .../src/lib/tabs/styles.tsx | 0 .../src/lib/tabs/tab-bar-context.tsx | 0 .../src/lib/tabs/tab-bar-foundation.tsx | 0 .../src/lib/tabs/tab-bar.tsx | 0 .../src/lib/tabs/tab-foundation.tsx | 0 .../src/lib/tabs/tab-indicator-foundation.tsx | 0 .../src/lib/tabs/tab-indicator.tsx | 0 .../src/lib/tabs/tab-scroller-foundation.tsx | 0 .../src/lib/tabs/tab-scroller.tsx | 0 .../src/lib/tabs/tab.tsx | 0 .../src/lib/tabs/tabs-ssr.spec.tsx | 0 .../src/lib/tabs/tabs.spec.tsx | 0 .../src/lib/tabs/tabs.story.tsx | 0 .../src/lib/textfield/README.md | 0 .../src/lib/textfield/generated-examples.json | 0 .../src/lib/textfield/generated-props.json | 0 .../src/lib/textfield/index.tsx | 0 .../src/lib/textfield/styles.tsx | 0 .../textfield-character-count-foundation.tsx | 0 .../lib/textfield/textfield-foundation.tsx | 0 .../textfield/textfield-icon-foundation.tsx | 0 .../src/lib/textfield/textfield-ssr.spec.tsx | 0 .../src/lib/textfield/textfield.spec.tsx | 0 .../src/lib/textfield/textfield.story.tsx | 0 .../src/lib/theme/README.md | 0 .../src/lib/theme/generated-examples.json | 0 .../src/lib/theme/generated-props.json | 0 .../src/lib/theme/index.tsx | 0 .../src/lib/theme/styles.tsx | 0 .../src/lib/theme/theme-options.tsx | 0 .../src/lib/theme/theme-ssr.spec.tsx | 0 .../src/lib/theme/theme.css | 0 .../src/lib/theme/theme.spec.tsx | 0 .../src/lib/theme/theme.story.tsx | 0 .../src/lib/theme/themes.tsx | 0 .../src/lib/theme/utils.tsx | 0 .../src/lib/toggleable/README.md | 0 .../lib/toggleable/generated-examples.json | 0 .../src/lib/toggleable/generated-props.json | 0 .../src/lib/toggleable/index.tsx | 0 .../src/lib/tooltip/README.md | 0 .../src/lib/tooltip/generated-examples.json | 0 .../src/lib/tooltip/generated-props.json | 0 .../src/lib/tooltip/index.tsx | 0 .../src/lib/tooltip/styles.tsx | 0 .../src/lib/tooltip/tooltip-ssr.spec.tsx | 0 .../src/lib/tooltip/tooltip.css | 0 .../src/lib/tooltip/tooltip.spec.tsx | 0 .../src/lib/tooltip/tooltip.story.tsx | 0 .../src/lib/top-app-bar/README.md | 0 .../src/lib/top-app-bar/foundation.tsx | 0 .../lib/top-app-bar/generated-examples.json | 0 .../src/lib/top-app-bar/generated-props.json | 0 .../src/lib/top-app-bar/index.tsx | 0 .../src/lib/top-app-bar/styles.tsx | 0 .../lib/top-app-bar/top-app-bar-ssr.spec.tsx | 0 .../src/lib/top-app-bar/top-app-bar.spec.tsx | 0 .../src/lib/top-app-bar/top-app-bar.story.tsx | 0 .../src/lib/types/generated-examples.json | 0 .../src/lib/types/generated-props.json | 0 .../src/lib/types/index.tsx | 0 .../src/lib/typography/README.md | 0 .../lib/typography/generated-examples.json | 0 .../src/lib/typography/generated-props.json | 0 .../src/lib/typography/index.tsx | 0 .../src/lib/typography/styles.tsx | 0 .../lib/typography/typography-ssr.spec.tsx | 0 .../src/lib/typography/typography.spec.tsx | 0 .../src/lib/typography/typography.story.tsx | 0 .../src/react-app-env.d.ts | 0 .../src/setupTests.ts | 0 .../tsbuildconfig.json | 0 .../tsconfig.json | 0 .../yarn.lock | 0 .../.gitignore | 0 .../LICENSE | 0 .../README.md | 0 .../package.json | 0 .../src/components.ts | 0 .../src/index.ts | 0 .../react-component-lib/createComponent.tsx | 0 .../createOverlayComponent.tsx | 0 .../src/react-component-lib/index.ts | 0 .../src/react-component-lib/interfaces.ts | 0 .../react-component-lib/utils/attachProps.ts | 0 .../src/react-component-lib/utils/case.ts | 0 .../src/react-component-lib/utils/dev.ts | 0 .../src/react-component-lib/utils/index.tsx | 0 .../tsconfig.json | 0 .../.editorconfig | 0 .../.gitignore | 0 .../LICENSE | 0 .../package.json | 3 +- .../readme.md | 0 .../src/components.d.ts | 0 .../src/components/button/mwc-button-style.ts | 0 .../src/components/button/mwc-button-types.ts | 0 .../src/components/button/mwc-button.tsx | 0 .../src/components/button/readme.md | 0 .../src/components/card/mwc-card-actions.scss | 0 .../src/components/card/mwc-card-actions.tsx | 0 .../components/card/mwc-card-content-style.ts | 0 .../src/components/card/mwc-card-content.tsx | 0 .../src/components/card/mwc-card-header.scss | 0 .../src/components/card/mwc-card-header.tsx | 0 .../components/card/mwc-card-media-style.ts | 0 .../src/components/card/mwc-card-media.scss | 0 .../src/components/card/mwc-card-media.tsx | 0 .../src/components/card/mwc-card.scss | 0 .../src/components/card/mwc-card.tsx | 0 .../src/components/card/readme.md | 0 .../src/components/checkbox/mwc-checkbox.scss | 0 .../src/components/checkbox/mwc-checkbox.tsx | 0 .../src/components/checkbox/readme.md | 0 .../components/container/mwc-container.tsx | 0 .../src/components/container/readme.md | 0 .../components/dialog/mwc-dialog-body.scss | 0 .../src/components/dialog/mwc-dialog-body.tsx | 0 .../components/dialog/mwc-dialog-footer.scss | 0 .../components/dialog/mwc-dialog-footer.tsx | 0 .../components/dialog/mwc-dialog-header.scss | 0 .../components/dialog/mwc-dialog-header.tsx | 0 .../src/components/dialog/mwc-dialog.scss | 0 .../src/components/dialog/mwc-dialog.tsx | 0 .../src/components/dialog/readme.md | 0 .../src/components/drawer/mwc-drawer.scss | 0 .../src/components/drawer/mwc-drawer.tsx | 0 .../src/components/drawer/readme.md | 0 .../src/components/fab/mwc-fab.scss | 0 .../src/components/fab/mwc-fab.tsx | 0 .../src/components/fab/readme.md | 0 .../grid-list/mwc-grid-list-tile.scss | 0 .../grid-list/mwc-grid-list-tile.tsx | 0 .../components/grid-list/mwc-grid-list.scss | 0 .../components/grid-list/mwc-grid-list.tsx | 0 .../src/components/grid-list/readme.md | 0 .../icon-toggle/mwc-icon-toggle.scss | 0 .../icon-toggle/mwc-icon-toggle.tsx | 0 .../src/components/icon-toggle/readme.md | 0 .../src/components/list/mwc-list-item.scss | 0 .../src/components/list/mwc-list-item.tsx | 0 .../src/components/list/mwc-list-style.ts | 0 .../src/components/list/mwc-list.scss | 0 .../src/components/list/mwc-list.tsx | 0 .../src/components/list/readme.md | 0 .../src/components/menu/mwc-menu-item.scss | 0 .../src/components/menu/mwc-menu-item.tsx | 0 .../src/components/menu/mwc-menu.scss | 0 .../src/components/menu/mwc-menu.tsx | 0 .../src/components/menu/readme.md | 0 .../components/my-component/my-component.css | 0 .../my-component/my-component.e2e.ts | 0 .../my-component/my-component.spec.ts | 0 .../components/my-component/my-component.tsx | 0 .../src/components/my-component/readme.md | 0 .../src/components/paper/mwc-paper-style.ts | 0 .../src/components/paper/mwc-paper.tsx | 0 .../src/components/paper/readme.md | 0 .../src/components/progress/mwc-progress.scss | 0 .../src/components/progress/mwc-progress.tsx | 0 .../src/components/progress/readme.md | 0 .../src/components/radio/mwc-radio.scss | 0 .../src/components/radio/mwc-radio.tsx | 0 .../src/components/radio/readme.md | 0 .../src/components/select/mwc-select.scss | 0 .../src/components/select/mwc-select.tsx | 0 .../src/components/select/readme.md | 0 .../src/components/slider/mwc-slider.scss | 0 .../src/components/slider/mwc-slider.tsx | 0 .../src/components/slider/readme.md | 0 .../src/components/snackbar/mwc-snackbar.scss | 0 .../src/components/snackbar/mwc-snackbar.tsx | 0 .../src/components/snackbar/readme.md | 0 .../src/components/styles/breakpoints.d.ts | 0 .../components/styles/color-manipulator.ts | 0 .../components/styles/create-breakpoints.ts | 0 .../src/components/styles/create-mixins.ts | 0 .../src/components/styles/create-palette.ts | 0 .../src/components/styles/create-shadows.ts | 0 .../src/components/styles/create-spacing.ts | 0 .../src/components/styles/create-theme.ts | 0 .../components/styles/create-transitions.ts | 0 .../components/styles/create-typography.ts | 0 .../src/components/styles/create-zindex.ts | 0 .../src/components/styles/cssproperties.d.ts | 0 .../src/components/styles/mixins.d.ts | 0 .../src/components/styles/setup-jss.ts | 0 .../src/components/styles/shadows.d.ts | 0 .../src/components/styles/spacing.d.ts | 0 .../src/components/styles/theme.d.ts | 0 .../src/components/styles/transition.d.ts | 0 .../components/styles/types/colors/amber.ts | 0 .../components/styles/types/colors/blue.ts | 0 .../styles/types/colors/blueGrey.ts | 0 .../components/styles/types/colors/brown.ts | 0 .../components/styles/types/colors/color.ts | 0 .../components/styles/types/colors/common.ts | 0 .../components/styles/types/colors/cyan.ts | 0 .../styles/types/colors/deepOrange.ts | 0 .../styles/types/colors/deepPurple.ts | 0 .../components/styles/types/colors/green.ts | 0 .../components/styles/types/colors/grey.ts | 0 .../components/styles/types/colors/index.ts | 0 .../components/styles/types/colors/indigo.ts | 0 .../styles/types/colors/lightBlue.ts | 0 .../styles/types/colors/lightGreen.ts | 0 .../components/styles/types/colors/lime.ts | 0 .../components/styles/types/colors/orange.ts | 0 .../components/styles/types/colors/pink.ts | 0 .../components/styles/types/colors/purple.ts | 0 .../src/components/styles/types/colors/red.ts | 0 .../components/styles/types/colors/teal.ts | 0 .../components/styles/types/colors/yellow.ts | 0 .../src/components/styles/types/palette.d.ts | 0 .../src/components/styles/typography.d.ts | 0 .../src/components/styles/zindex.d.ts | 0 .../src/components/switch/mwc-switch.scss | 0 .../src/components/switch/mwc-switch.tsx | 0 .../src/components/switch/readme.md | 0 .../src/components/tabbar/mwc-tabbar.scss | 0 .../src/components/tabbar/mwc-tabbar.tsx | 0 .../src/components/tabbar/readme.md | 0 .../components/textfield/mwc-textfield.scss | 0 .../components/textfield/mwc-textfield.tsx | 0 .../src/components/textfield/readme.md | 0 .../src/components/theme/mwc-theme.scss | 0 .../src/components/theme/mwc-theme.style.ts | 0 .../src/components/theme/mwc-theme.tsx | 0 .../src/components/theme/readme.md | 0 .../toolbar/mwc-content-for-toolbar.tsx | 0 .../components/toolbar/mwc-toolbar-icon.scss | 0 .../components/toolbar/mwc-toolbar-icon.tsx | 0 .../toolbar/mwc-toolbar-section.tsx | 0 .../components/toolbar/mwc-toolbar-title.tsx | 0 .../src/components/toolbar/mwc-toolbar.scss | 0 .../src/components/toolbar/mwc-toolbar.tsx | 0 .../src/components/toolbar/readme.md | 0 .../typography/mwc-typography.style.ts | 0 .../components/typography/mwc-typography.tsx | 0 .../typography/mwc-typograpy-types.ts | 0 .../src/components/typography/readme.md | 0 .../src/components/util/mwc-util.ts | 0 .../src/components/util/ripple.ts | 0 .../src/components/util/theme.ts | 0 .../src/components/util/theme_dark.ts | 0 .../src/components/viewport/mwc-viewport.tsx | 0 .../src/components/viewport/readme.md | 0 .../src/index.html | 0 .../src/index.ts | 0 .../src/utils/utils.spec.ts | 0 .../src/utils/utils.ts | 0 .../stencil.config.ts | 8 ++-- .../tsconfig.json | 0 tsconfig.json | 4 +- 642 files changed, 69 insertions(+), 28 deletions(-) rename packages/{mc-react-components => react-components}/.eslintignore (100%) rename packages/{mc-react-components => react-components}/.gitignore (100%) rename packages/{mc-react-components => react-components}/CHANGELOG.md (100%) rename packages/{mc-react-components => react-components}/README.md (78%) rename packages/{mc-react-components => react-components}/package.json (95%) rename packages/{mc-react-components => react-components}/public/favicon.ico (100%) rename packages/{mc-react-components => react-components}/public/index.html (100%) rename packages/{mc-react-components => react-components}/public/logo192.png (100%) rename packages/{mc-react-components => react-components}/public/logo512.png (100%) rename packages/{mc-react-components => react-components}/public/manifest.json (100%) rename packages/{mc-react-components => react-components}/public/robots.txt (100%) rename packages/{mc-react-components => react-components}/src/index.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/box/box.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/box/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/cssbaseline/cssbaseline.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/cssbaseline/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/date-range-picker/date-range-picker.spec.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/date-range-picker/date-range-picker.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/date-range-picker/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/map-filter-container/container-map.css (100%) rename packages/{mc-react-components => react-components}/src/lib/map-filter-container/container-map.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/map-filter-container/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/map-filter-container/map-filter-container.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/map-filter-container/polygon-selection-ui.spec.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/map-filter-container/polygon-selection-ui.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/models/enums.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/models/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/feature.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/interactions/draw.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/interactions/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/layers/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/layers/tile-layer.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/layers/vector-layer.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/map.css (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/map.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/source/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/source/osm.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/ol-map/source/vector-source.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/popover/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/popover/popover.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/__mock-data__/smartTableMocks.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/smart-table-head.spec.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/smart-table-head.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/smart-table-row.spec.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/smart-table-row.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/smart-table-types.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/smart-table.spec.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/smart-table/smart-table.tsx (100%) rename packages/{mc-react-components => react-components}/src/lib/theme/index.ts (100%) rename packages/{mc-react-components => react-components}/src/lib/theme/theme.ts (100%) rename packages/{mc-react-components => react-components}/src/react-app-env.d.ts (100%) rename packages/{mc-react-components => react-components}/src/setupTests.ts (100%) rename packages/{mc-react-components => react-components}/tsbuildconfig.json (100%) rename packages/{mc-react-components => react-components}/tsconfig.json (100%) rename packages/{mc-react-components => react-components}/yarn.lock (100%) rename packages/{mc-react-ui-components => react-ui-components}/.eslintignore (100%) rename packages/{mc-react-ui-components => react-ui-components}/.gitignore (100%) rename packages/{mc-react-ui-components => react-ui-components}/CHANGELOG.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/README.md (66%) rename packages/{mc-react-ui-components => react-ui-components}/package.json (95%) rename packages/{mc-react-ui-components => react-ui-components}/public/favicon.ico (100%) rename packages/{mc-react-ui-components => react-ui-components}/public/index.html (100%) rename packages/{mc-react-ui-components => react-ui-components}/public/logo192.png (100%) rename packages/{mc-react-ui-components => react-ui-components}/public/logo512.png (100%) rename packages/{mc-react-ui-components => react-ui-components}/public/manifest.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/public/robots.txt (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/@types/markdown.d.ts (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/avatar-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/avatar.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/avatar.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/avatar/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/badge-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/badge.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/badge.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/badge/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/base.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/bugs.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/component.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/foundation-component.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/index.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/portal.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/test-polyfill.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/apply-passive.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/data-table-context.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/debounce.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/deprecation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/emitter.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/empty-client-rect.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/events-map.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/focus-trap.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/get-display-name.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/hooks.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/ponyfills.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/raf.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/random-id.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/strings.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/test-utils.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/trigger-window-resize.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/use-knob.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/utils/wrap-child.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/base/with-theme.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/button-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/button.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/button.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/button/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/card-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/card.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/card.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/card/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/checkbox-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/checkbox.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/checkbox.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/checkbox/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/chip-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/chip.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/chip.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/chip/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/circular-progress-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/circular-progress.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/circular-progress.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/circular-progress/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/data-table-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/data-table.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/data-table.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/data-table.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/data-table/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/dialog-queue.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/dialog-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/dialog.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/dialog.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/dialog.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/dialog/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/drawer-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/drawer.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/drawer.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/drawer/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/elevation-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/elevation.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/elevation.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/elevation/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/fab-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/fab.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/fab.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/fab/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/floating-label/floating-label-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/floating-label/floating-label.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/floating-label/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/floating-label/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/floating-label/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/floating-label/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/floating-label/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/form-field-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/form-field.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/formfield/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/grid-list-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/grid-list.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/grid-list.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid-list/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/grid-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/grid.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/grid.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/grid/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/icon-button-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/icon-button.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/icon-button.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon-button/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/icon.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/icon.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/icon.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/icon/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/image-list-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/image-list.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/image-list.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/image-list/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/index.ts (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/line-ripple/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/line-ripple/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/line-ripple/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/line-ripple/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/line-ripple/line-ripple-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/line-ripple/line-ripple.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/line-ripple/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/linear-progress-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/linear-progress.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/linear-progress.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/linear-progress/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/README-COLLAPSIBLE.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/README-VARIANTS.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/collapsible-list.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/collapsible-list.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/generated-examples-collapsible.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/generated-examples-variants.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/list-item.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/list-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/list.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/list.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/list.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/list/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/menu-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/menu-surface/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/menu-surface/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/menu.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/menu.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/menu/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/menu/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/menu/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/notched-outline/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/notched-outline/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/notched-outline/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/notched-outline/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/notched-outline/notched-outline-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/notched-outline/notched-outline.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/notched-outline/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/provider/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/provider/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/provider/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/provider/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/provider/provider-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/provider/provider.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/radio-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/radio.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/radio.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/radio/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/ripple-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/ripple.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/ripple.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/ripple/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/rmwc/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/rmwc/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select-icon/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select-icon/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/select/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/select/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/slider-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/slider.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/slider.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/slider/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/snackbar-queue.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/snackbar-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/snackbar.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/snackbar.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/snackbar.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/snackbar/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/switch-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/switch.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/switch/switch.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-bar-context.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-bar-foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-bar.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-indicator-foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-indicator.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-scroller-foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab-scroller.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tab.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tabs-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tabs.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tabs/tabs.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/textfield-character-count-foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/textfield-foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/textfield-icon-foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/textfield-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/textfield.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/textfield/textfield.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/theme-options.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/theme-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/theme.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/theme.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/theme.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/themes.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/theme/utils.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/toggleable/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/toggleable/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/toggleable/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/toggleable/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/tooltip-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/tooltip.css (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/tooltip.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/tooltip/tooltip.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/foundation.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/top-app-bar.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/top-app-bar/top-app-bar.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/types/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/types/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/types/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/README.md (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/generated-examples.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/generated-props.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/index.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/styles.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/typography-ssr.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/typography.spec.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/lib/typography/typography.story.tsx (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/react-app-env.d.ts (100%) rename packages/{mc-react-ui-components => react-ui-components}/src/setupTests.ts (100%) rename packages/{mc-react-ui-components => react-ui-components}/tsbuildconfig.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/tsconfig.json (100%) rename packages/{mc-react-ui-components => react-ui-components}/yarn.lock (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/.gitignore (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/LICENSE (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/README.md (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/package.json (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/components.ts (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/index.ts (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/createComponent.tsx (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/createOverlayComponent.tsx (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/index.ts (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/interfaces.ts (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/utils/attachProps.ts (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/utils/case.ts (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/utils/dev.ts (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/src/react-component-lib/utils/index.tsx (100%) rename packages/{mc-wc-ui-components-react => wc-ui-components-react}/tsconfig.json (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/.editorconfig (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/.gitignore (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/LICENSE (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/package.json (93%) rename packages/{mc-wc-ui-components => wc-ui-components}/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/button/mwc-button-style.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/button/mwc-button-types.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/button/mwc-button.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/button/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-actions.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-actions.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-content-style.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-content.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-header.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-header.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-media-style.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-media.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card-media.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/mwc-card.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/card/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/checkbox/mwc-checkbox.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/checkbox/mwc-checkbox.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/checkbox/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/container/mwc-container.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/container/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog-body.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog-body.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog-footer.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog-footer.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog-header.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog-header.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/mwc-dialog.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/dialog/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/drawer/mwc-drawer.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/drawer/mwc-drawer.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/drawer/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/fab/mwc-fab.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/fab/mwc-fab.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/fab/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/grid-list/mwc-grid-list-tile.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/grid-list/mwc-grid-list-tile.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/grid-list/mwc-grid-list.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/grid-list/mwc-grid-list.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/grid-list/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/icon-toggle/mwc-icon-toggle.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/icon-toggle/mwc-icon-toggle.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/icon-toggle/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/list/mwc-list-item.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/list/mwc-list-item.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/list/mwc-list-style.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/list/mwc-list.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/list/mwc-list.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/list/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/menu/mwc-menu-item.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/menu/mwc-menu-item.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/menu/mwc-menu.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/menu/mwc-menu.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/menu/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/my-component/my-component.css (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/my-component/my-component.e2e.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/my-component/my-component.spec.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/my-component/my-component.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/my-component/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/paper/mwc-paper-style.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/paper/mwc-paper.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/paper/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/progress/mwc-progress.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/progress/mwc-progress.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/progress/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/radio/mwc-radio.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/radio/mwc-radio.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/radio/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/select/mwc-select.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/select/mwc-select.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/select/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/slider/mwc-slider.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/slider/mwc-slider.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/slider/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/snackbar/mwc-snackbar.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/snackbar/mwc-snackbar.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/snackbar/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/breakpoints.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/color-manipulator.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-breakpoints.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-mixins.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-palette.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-shadows.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-spacing.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-theme.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-transitions.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-typography.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/create-zindex.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/cssproperties.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/mixins.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/setup-jss.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/shadows.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/spacing.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/theme.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/transition.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/amber.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/blue.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/blueGrey.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/brown.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/color.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/common.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/cyan.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/deepOrange.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/deepPurple.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/green.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/grey.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/index.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/indigo.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/lightBlue.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/lightGreen.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/lime.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/orange.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/pink.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/purple.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/red.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/teal.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/colors/yellow.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/types/palette.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/typography.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/styles/zindex.d.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/switch/mwc-switch.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/switch/mwc-switch.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/switch/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/tabbar/mwc-tabbar.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/tabbar/mwc-tabbar.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/tabbar/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/textfield/mwc-textfield.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/textfield/mwc-textfield.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/textfield/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/theme/mwc-theme.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/theme/mwc-theme.style.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/theme/mwc-theme.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/theme/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/mwc-content-for-toolbar.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/mwc-toolbar-icon.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/mwc-toolbar-icon.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/mwc-toolbar-section.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/mwc-toolbar-title.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/mwc-toolbar.scss (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/mwc-toolbar.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/toolbar/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/typography/mwc-typography.style.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/typography/mwc-typography.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/typography/mwc-typograpy-types.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/typography/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/util/mwc-util.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/util/ripple.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/util/theme.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/util/theme_dark.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/viewport/mwc-viewport.tsx (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/components/viewport/readme.md (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/index.html (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/index.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/utils/utils.spec.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/src/utils/utils.ts (100%) rename packages/{mc-wc-ui-components => wc-ui-components}/stencil.config.ts (74%) rename packages/{mc-wc-ui-components => wc-ui-components}/tsconfig.json (100%) diff --git a/README.md b/README.md index 2b0818dc..1fe54954 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # React MonoRepo -This repo contains react apps and component libraries to share between apps. +This repo contains react demo apps and component libraries to share between apps. The repo uses [Yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) to link dependencies, and to enable running `yarn install` once. @@ -8,8 +8,14 @@ The repo uses [Yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) ## Projects -* **mc-conflict-ui** - UI app for resolving conflicts. -* **mc-react-components** - Component library for shared components. +* **conflict-ui** - UI app as a demo app. +* **react-components** - Component library for common usage(more suffisitcated components). +* **react-ui-components** - Core components based on Material Web Components helpers. + +## Install workspace packages dependecies +```json + yarn +``` ## Adding new projects 1. Create a new folder for the project. @@ -25,9 +31,37 @@ The repo uses [Yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) ```json { "dependencies": { - "mc-react-components": "0.1.0" + "react-components": "0.1.0" } } ``` 5. Add any external dependencies you would like using yarn. 6. start hacking :wink: + +## Build +1. Be logged in to NPM +```json + npm login +``` +2. Build Core components +```json + yarn run build:react-core:build +``` +3. Build common components +```json + yarn run build:react +``` + +## Publishing +1. Publish PUBLIC packages +```json + yarn run publish +``` +or +```json + npx lerna publish --conventional-commits -m "chore(publish): publish %s [ci skip]" +``` +2. Re-publish currently bumped versions +```json + npx lerna exec -- npm publish +``` diff --git a/conflicts-ui/README.md b/conflicts-ui/README.md index 60e45e8f..ad85b043 100644 --- a/conflicts-ui/README.md +++ b/conflicts-ui/README.md @@ -13,7 +13,7 @@ In the project directory, you can run: Runs the app in the development mode.
    Open [http://localhost:3000](http://localhost:3000) to view it in the browser. -**Make sure to build all the dependencies before running this command (mc-react-components)** +**Make sure to build all the dependencies before running this command (react-components)** Any relative request is proxied to the backend.
    you can control the host by editing the package.json file. diff --git a/lerna.json b/lerna.json index f35f0da8..7142d9ab 100644 --- a/lerna.json +++ b/lerna.json @@ -1,8 +1,8 @@ { "lerna": "2.11.0", "packages": [ - "packages/mc-react-components", - "packages/mc-react-ui-components" + "packages/react-components", + "packages/react-ui-components" ], "version": "independent", "npmClient": "yarn", diff --git a/package.json b/package.json index 1a26576b..3105efd5 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,15 @@ { - "name": "mc-react", + "name": "shared-components", "version": "1.0.0", "main": "index.js", "repository": "https://github.com/MapColonies/shared-components.git", "author": "ofer.adel ", "private": true, "workspaces": [ - "packages/mc-react-components", - "packages/mc-react-ui-components", + "packages/react-components", + "packages/react-ui-components", + "packages/wc-ui-components", + "packages/wc-ui-components-react", "demoapp", "conflicts-ui" ], @@ -43,9 +45,7 @@ "build:stencil-react": "lerna exec --scope @map-colonies/ui-components-react -- yarn build", "build:all": "lerna run build --npm-client=yarn", - "publish:react-core": "lerna publish --scope @map-colonies/react-core --contents dist", - "publish:react": "lerna publish --scope @map-colonies/react-components --contents dist", - "publish": "lerna publish --contents dist", + "publish": "lerna publish --conventional-commits -m \"chore(publish): publish [by user]\"", "eslint-check:react": "lerna exec --scope @map-colonies/react-components -- yarn eslint-check", "eslint-check:react-core": "lerna exec --scope @map-colonies/react-core -- yarn eslint-check", diff --git a/packages/mc-react-components/.eslintignore b/packages/react-components/.eslintignore similarity index 100% rename from packages/mc-react-components/.eslintignore rename to packages/react-components/.eslintignore diff --git a/packages/mc-react-components/.gitignore b/packages/react-components/.gitignore similarity index 100% rename from packages/mc-react-components/.gitignore rename to packages/react-components/.gitignore diff --git a/packages/mc-react-components/CHANGELOG.md b/packages/react-components/CHANGELOG.md similarity index 100% rename from packages/mc-react-components/CHANGELOG.md rename to packages/react-components/CHANGELOG.md diff --git a/packages/mc-react-components/README.md b/packages/react-components/README.md similarity index 78% rename from packages/mc-react-components/README.md rename to packages/react-components/README.md index f01a604c..1ccc4b4e 100644 --- a/packages/mc-react-components/README.md +++ b/packages/react-components/README.md @@ -1,6 +1,8 @@ -# mc-react-components +# react-components -This is a library contains react components for use by other apps. All the components are written using typescript. The project was bootstrapped using create-react-app, and modified to enable exporting of components. +This is a library contains react components for use by other apps. +All the components are written using typescript. +The project was bootstrapped using create-react-app, and modified to enable exporting of components. ## Using the package diff --git a/packages/mc-react-components/package.json b/packages/react-components/package.json similarity index 95% rename from packages/mc-react-components/package.json rename to packages/react-components/package.json index 6b4b3c3c..09c6f531 100644 --- a/packages/mc-react-components/package.json +++ b/packages/react-components/package.json @@ -4,7 +4,7 @@ "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", - "homepage": "https://github.com/MapColonies/shared-components/tree/master/mc-react-components#readme", + "homepage": "https://github.com/MapColonies/shared-components/tree/master/react-components#readme", "bugs": { "url": "https://github.com/MapColonies/shared-components/issues" }, @@ -70,5 +70,6 @@ "enzyme-adapter-react-16": "^1.15.2", "jest-enzyme": "^7.1.2", "react-test-renderer": "^16.13.1" - } + }, + "gitHead": "0312325d702838d80fdc728a9c6a221e81b9b318" } diff --git a/packages/mc-react-components/public/favicon.ico b/packages/react-components/public/favicon.ico similarity index 100% rename from packages/mc-react-components/public/favicon.ico rename to packages/react-components/public/favicon.ico diff --git a/packages/mc-react-components/public/index.html b/packages/react-components/public/index.html similarity index 100% rename from packages/mc-react-components/public/index.html rename to packages/react-components/public/index.html diff --git a/packages/mc-react-components/public/logo192.png b/packages/react-components/public/logo192.png similarity index 100% rename from packages/mc-react-components/public/logo192.png rename to packages/react-components/public/logo192.png diff --git a/packages/mc-react-components/public/logo512.png b/packages/react-components/public/logo512.png similarity index 100% rename from packages/mc-react-components/public/logo512.png rename to packages/react-components/public/logo512.png diff --git a/packages/mc-react-components/public/manifest.json b/packages/react-components/public/manifest.json similarity index 100% rename from packages/mc-react-components/public/manifest.json rename to packages/react-components/public/manifest.json diff --git a/packages/mc-react-components/public/robots.txt b/packages/react-components/public/robots.txt similarity index 100% rename from packages/mc-react-components/public/robots.txt rename to packages/react-components/public/robots.txt diff --git a/packages/mc-react-components/src/index.tsx b/packages/react-components/src/index.tsx similarity index 100% rename from packages/mc-react-components/src/index.tsx rename to packages/react-components/src/index.tsx diff --git a/packages/mc-react-components/src/lib/box/box.tsx b/packages/react-components/src/lib/box/box.tsx similarity index 100% rename from packages/mc-react-components/src/lib/box/box.tsx rename to packages/react-components/src/lib/box/box.tsx diff --git a/packages/mc-react-components/src/lib/box/index.ts b/packages/react-components/src/lib/box/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/box/index.ts rename to packages/react-components/src/lib/box/index.ts diff --git a/packages/mc-react-components/src/lib/cssbaseline/cssbaseline.tsx b/packages/react-components/src/lib/cssbaseline/cssbaseline.tsx similarity index 100% rename from packages/mc-react-components/src/lib/cssbaseline/cssbaseline.tsx rename to packages/react-components/src/lib/cssbaseline/cssbaseline.tsx diff --git a/packages/mc-react-components/src/lib/cssbaseline/index.ts b/packages/react-components/src/lib/cssbaseline/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/cssbaseline/index.ts rename to packages/react-components/src/lib/cssbaseline/index.ts diff --git a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx b/packages/react-components/src/lib/date-range-picker/date-range-picker.spec.tsx similarity index 100% rename from packages/mc-react-components/src/lib/date-range-picker/date-range-picker.spec.tsx rename to packages/react-components/src/lib/date-range-picker/date-range-picker.spec.tsx diff --git a/packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx b/packages/react-components/src/lib/date-range-picker/date-range-picker.tsx similarity index 100% rename from packages/mc-react-components/src/lib/date-range-picker/date-range-picker.tsx rename to packages/react-components/src/lib/date-range-picker/date-range-picker.tsx diff --git a/packages/mc-react-components/src/lib/date-range-picker/index.ts b/packages/react-components/src/lib/date-range-picker/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/date-range-picker/index.ts rename to packages/react-components/src/lib/date-range-picker/index.ts diff --git a/packages/mc-react-components/src/lib/index.ts b/packages/react-components/src/lib/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/index.ts rename to packages/react-components/src/lib/index.ts diff --git a/packages/mc-react-components/src/lib/map-filter-container/container-map.css b/packages/react-components/src/lib/map-filter-container/container-map.css similarity index 100% rename from packages/mc-react-components/src/lib/map-filter-container/container-map.css rename to packages/react-components/src/lib/map-filter-container/container-map.css diff --git a/packages/mc-react-components/src/lib/map-filter-container/container-map.tsx b/packages/react-components/src/lib/map-filter-container/container-map.tsx similarity index 100% rename from packages/mc-react-components/src/lib/map-filter-container/container-map.tsx rename to packages/react-components/src/lib/map-filter-container/container-map.tsx diff --git a/packages/mc-react-components/src/lib/map-filter-container/index.ts b/packages/react-components/src/lib/map-filter-container/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/map-filter-container/index.ts rename to packages/react-components/src/lib/map-filter-container/index.ts diff --git a/packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx b/packages/react-components/src/lib/map-filter-container/map-filter-container.tsx similarity index 100% rename from packages/mc-react-components/src/lib/map-filter-container/map-filter-container.tsx rename to packages/react-components/src/lib/map-filter-container/map-filter-container.tsx diff --git a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx b/packages/react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx similarity index 100% rename from packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx rename to packages/react-components/src/lib/map-filter-container/polygon-selection-ui.spec.tsx diff --git a/packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx b/packages/react-components/src/lib/map-filter-container/polygon-selection-ui.tsx similarity index 100% rename from packages/mc-react-components/src/lib/map-filter-container/polygon-selection-ui.tsx rename to packages/react-components/src/lib/map-filter-container/polygon-selection-ui.tsx diff --git a/packages/mc-react-components/src/lib/models/enums.ts b/packages/react-components/src/lib/models/enums.ts similarity index 100% rename from packages/mc-react-components/src/lib/models/enums.ts rename to packages/react-components/src/lib/models/enums.ts diff --git a/packages/mc-react-components/src/lib/models/index.ts b/packages/react-components/src/lib/models/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/models/index.ts rename to packages/react-components/src/lib/models/index.ts diff --git a/packages/mc-react-components/src/lib/ol-map/feature.tsx b/packages/react-components/src/lib/ol-map/feature.tsx similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/feature.tsx rename to packages/react-components/src/lib/ol-map/feature.tsx diff --git a/packages/mc-react-components/src/lib/ol-map/index.ts b/packages/react-components/src/lib/ol-map/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/index.ts rename to packages/react-components/src/lib/ol-map/index.ts diff --git a/packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx b/packages/react-components/src/lib/ol-map/interactions/draw.tsx similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/interactions/draw.tsx rename to packages/react-components/src/lib/ol-map/interactions/draw.tsx diff --git a/packages/mc-react-components/src/lib/ol-map/interactions/index.ts b/packages/react-components/src/lib/ol-map/interactions/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/interactions/index.ts rename to packages/react-components/src/lib/ol-map/interactions/index.ts diff --git a/packages/mc-react-components/src/lib/ol-map/layers/index.ts b/packages/react-components/src/lib/ol-map/layers/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/layers/index.ts rename to packages/react-components/src/lib/ol-map/layers/index.ts diff --git a/packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx b/packages/react-components/src/lib/ol-map/layers/tile-layer.tsx similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/layers/tile-layer.tsx rename to packages/react-components/src/lib/ol-map/layers/tile-layer.tsx diff --git a/packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx b/packages/react-components/src/lib/ol-map/layers/vector-layer.tsx similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/layers/vector-layer.tsx rename to packages/react-components/src/lib/ol-map/layers/vector-layer.tsx diff --git a/packages/mc-react-components/src/lib/ol-map/map.css b/packages/react-components/src/lib/ol-map/map.css similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/map.css rename to packages/react-components/src/lib/ol-map/map.css diff --git a/packages/mc-react-components/src/lib/ol-map/map.tsx b/packages/react-components/src/lib/ol-map/map.tsx similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/map.tsx rename to packages/react-components/src/lib/ol-map/map.tsx diff --git a/packages/mc-react-components/src/lib/ol-map/source/index.ts b/packages/react-components/src/lib/ol-map/source/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/source/index.ts rename to packages/react-components/src/lib/ol-map/source/index.ts diff --git a/packages/mc-react-components/src/lib/ol-map/source/osm.tsx b/packages/react-components/src/lib/ol-map/source/osm.tsx similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/source/osm.tsx rename to packages/react-components/src/lib/ol-map/source/osm.tsx diff --git a/packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx b/packages/react-components/src/lib/ol-map/source/vector-source.tsx similarity index 100% rename from packages/mc-react-components/src/lib/ol-map/source/vector-source.tsx rename to packages/react-components/src/lib/ol-map/source/vector-source.tsx diff --git a/packages/mc-react-components/src/lib/popover/index.ts b/packages/react-components/src/lib/popover/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/popover/index.ts rename to packages/react-components/src/lib/popover/index.ts diff --git a/packages/mc-react-components/src/lib/popover/popover.tsx b/packages/react-components/src/lib/popover/popover.tsx similarity index 100% rename from packages/mc-react-components/src/lib/popover/popover.tsx rename to packages/react-components/src/lib/popover/popover.tsx diff --git a/packages/mc-react-components/src/lib/smart-table/__mock-data__/smartTableMocks.ts b/packages/react-components/src/lib/smart-table/__mock-data__/smartTableMocks.ts similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/__mock-data__/smartTableMocks.ts rename to packages/react-components/src/lib/smart-table/__mock-data__/smartTableMocks.ts diff --git a/packages/mc-react-components/src/lib/smart-table/index.ts b/packages/react-components/src/lib/smart-table/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/index.ts rename to packages/react-components/src/lib/smart-table/index.ts diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx b/packages/react-components/src/lib/smart-table/smart-table-head.spec.tsx similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/smart-table-head.spec.tsx rename to packages/react-components/src/lib/smart-table/smart-table-head.spec.tsx diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx b/packages/react-components/src/lib/smart-table/smart-table-head.tsx similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/smart-table-head.tsx rename to packages/react-components/src/lib/smart-table/smart-table-head.tsx diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx b/packages/react-components/src/lib/smart-table/smart-table-row.spec.tsx similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/smart-table-row.spec.tsx rename to packages/react-components/src/lib/smart-table/smart-table-row.spec.tsx diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx b/packages/react-components/src/lib/smart-table/smart-table-row.tsx similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/smart-table-row.tsx rename to packages/react-components/src/lib/smart-table/smart-table-row.tsx diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table-types.ts b/packages/react-components/src/lib/smart-table/smart-table-types.ts similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/smart-table-types.ts rename to packages/react-components/src/lib/smart-table/smart-table-types.ts diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx b/packages/react-components/src/lib/smart-table/smart-table.spec.tsx similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/smart-table.spec.tsx rename to packages/react-components/src/lib/smart-table/smart-table.spec.tsx diff --git a/packages/mc-react-components/src/lib/smart-table/smart-table.tsx b/packages/react-components/src/lib/smart-table/smart-table.tsx similarity index 100% rename from packages/mc-react-components/src/lib/smart-table/smart-table.tsx rename to packages/react-components/src/lib/smart-table/smart-table.tsx diff --git a/packages/mc-react-components/src/lib/theme/index.ts b/packages/react-components/src/lib/theme/index.ts similarity index 100% rename from packages/mc-react-components/src/lib/theme/index.ts rename to packages/react-components/src/lib/theme/index.ts diff --git a/packages/mc-react-components/src/lib/theme/theme.ts b/packages/react-components/src/lib/theme/theme.ts similarity index 100% rename from packages/mc-react-components/src/lib/theme/theme.ts rename to packages/react-components/src/lib/theme/theme.ts diff --git a/packages/mc-react-components/src/react-app-env.d.ts b/packages/react-components/src/react-app-env.d.ts similarity index 100% rename from packages/mc-react-components/src/react-app-env.d.ts rename to packages/react-components/src/react-app-env.d.ts diff --git a/packages/mc-react-components/src/setupTests.ts b/packages/react-components/src/setupTests.ts similarity index 100% rename from packages/mc-react-components/src/setupTests.ts rename to packages/react-components/src/setupTests.ts diff --git a/packages/mc-react-components/tsbuildconfig.json b/packages/react-components/tsbuildconfig.json similarity index 100% rename from packages/mc-react-components/tsbuildconfig.json rename to packages/react-components/tsbuildconfig.json diff --git a/packages/mc-react-components/tsconfig.json b/packages/react-components/tsconfig.json similarity index 100% rename from packages/mc-react-components/tsconfig.json rename to packages/react-components/tsconfig.json diff --git a/packages/mc-react-components/yarn.lock b/packages/react-components/yarn.lock similarity index 100% rename from packages/mc-react-components/yarn.lock rename to packages/react-components/yarn.lock diff --git a/packages/mc-react-ui-components/.eslintignore b/packages/react-ui-components/.eslintignore similarity index 100% rename from packages/mc-react-ui-components/.eslintignore rename to packages/react-ui-components/.eslintignore diff --git a/packages/mc-react-ui-components/.gitignore b/packages/react-ui-components/.gitignore similarity index 100% rename from packages/mc-react-ui-components/.gitignore rename to packages/react-ui-components/.gitignore diff --git a/packages/mc-react-ui-components/CHANGELOG.md b/packages/react-ui-components/CHANGELOG.md similarity index 100% rename from packages/mc-react-ui-components/CHANGELOG.md rename to packages/react-ui-components/CHANGELOG.md diff --git a/packages/mc-react-ui-components/README.md b/packages/react-ui-components/README.md similarity index 66% rename from packages/mc-react-ui-components/README.md rename to packages/react-ui-components/README.md index f01a604c..a59bfc24 100644 --- a/packages/mc-react-ui-components/README.md +++ b/packages/react-ui-components/README.md @@ -1,6 +1,8 @@ -# mc-react-components +# react-ui-components -This is a library contains react components for use by other apps. All the components are written using typescript. The project was bootstrapped using create-react-app, and modified to enable exporting of components. +This is a library contains CORE react components for use by other apps, based on Material Web Components helpers +All the components are written using typescript. +The project was bootstrapped using create-react-app, and modified to enable exporting of components. ## Using the package diff --git a/packages/mc-react-ui-components/package.json b/packages/react-ui-components/package.json similarity index 95% rename from packages/mc-react-ui-components/package.json rename to packages/react-ui-components/package.json index 559cb70a..8f322963 100644 --- a/packages/mc-react-ui-components/package.json +++ b/packages/react-ui-components/package.json @@ -4,7 +4,7 @@ "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", - "homepage": "https://github.com/MapColonies/shared-components/tree/master/mc-react-ui-components#readme", + "homepage": "https://github.com/MapColonies/shared-components/tree/master/react-ui-components#readme", "bugs": { "url": "https://github.com/MapColonies/shared-components/issues" }, @@ -65,5 +65,6 @@ "enzyme-adapter-react-16": "^1.15.2", "jest-enzyme": "^7.1.2", "react-test-renderer": "^16.13.1" - } + }, + "gitHead": "0312325d702838d80fdc728a9c6a221e81b9b318" } diff --git a/packages/mc-react-ui-components/public/favicon.ico b/packages/react-ui-components/public/favicon.ico similarity index 100% rename from packages/mc-react-ui-components/public/favicon.ico rename to packages/react-ui-components/public/favicon.ico diff --git a/packages/mc-react-ui-components/public/index.html b/packages/react-ui-components/public/index.html similarity index 100% rename from packages/mc-react-ui-components/public/index.html rename to packages/react-ui-components/public/index.html diff --git a/packages/mc-react-ui-components/public/logo192.png b/packages/react-ui-components/public/logo192.png similarity index 100% rename from packages/mc-react-ui-components/public/logo192.png rename to packages/react-ui-components/public/logo192.png diff --git a/packages/mc-react-ui-components/public/logo512.png b/packages/react-ui-components/public/logo512.png similarity index 100% rename from packages/mc-react-ui-components/public/logo512.png rename to packages/react-ui-components/public/logo512.png diff --git a/packages/mc-react-ui-components/public/manifest.json b/packages/react-ui-components/public/manifest.json similarity index 100% rename from packages/mc-react-ui-components/public/manifest.json rename to packages/react-ui-components/public/manifest.json diff --git a/packages/mc-react-ui-components/public/robots.txt b/packages/react-ui-components/public/robots.txt similarity index 100% rename from packages/mc-react-ui-components/public/robots.txt rename to packages/react-ui-components/public/robots.txt diff --git a/packages/mc-react-ui-components/src/index.tsx b/packages/react-ui-components/src/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/index.tsx rename to packages/react-ui-components/src/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/@types/markdown.d.ts b/packages/react-ui-components/src/lib/@types/markdown.d.ts similarity index 100% rename from packages/mc-react-ui-components/src/lib/@types/markdown.d.ts rename to packages/react-ui-components/src/lib/@types/markdown.d.ts diff --git a/packages/mc-react-ui-components/src/lib/avatar/README.md b/packages/react-ui-components/src/lib/avatar/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/README.md rename to packages/react-ui-components/src/lib/avatar/README.md diff --git a/packages/mc-react-ui-components/src/lib/avatar/avatar-ssr.spec.tsx b/packages/react-ui-components/src/lib/avatar/avatar-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/avatar-ssr.spec.tsx rename to packages/react-ui-components/src/lib/avatar/avatar-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/avatar/avatar.css b/packages/react-ui-components/src/lib/avatar/avatar.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/avatar.css rename to packages/react-ui-components/src/lib/avatar/avatar.css diff --git a/packages/mc-react-ui-components/src/lib/avatar/avatar.spec.tsx b/packages/react-ui-components/src/lib/avatar/avatar.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/avatar.spec.tsx rename to packages/react-ui-components/src/lib/avatar/avatar.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/avatar/generated-examples.json b/packages/react-ui-components/src/lib/avatar/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/generated-examples.json rename to packages/react-ui-components/src/lib/avatar/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/avatar/generated-props.json b/packages/react-ui-components/src/lib/avatar/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/generated-props.json rename to packages/react-ui-components/src/lib/avatar/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/avatar/index.tsx b/packages/react-ui-components/src/lib/avatar/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/index.tsx rename to packages/react-ui-components/src/lib/avatar/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/avatar/styles.tsx b/packages/react-ui-components/src/lib/avatar/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/avatar/styles.tsx rename to packages/react-ui-components/src/lib/avatar/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/badge/README.md b/packages/react-ui-components/src/lib/badge/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/README.md rename to packages/react-ui-components/src/lib/badge/README.md diff --git a/packages/mc-react-ui-components/src/lib/badge/badge-ssr.spec.tsx b/packages/react-ui-components/src/lib/badge/badge-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/badge-ssr.spec.tsx rename to packages/react-ui-components/src/lib/badge/badge-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/badge/badge.css b/packages/react-ui-components/src/lib/badge/badge.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/badge.css rename to packages/react-ui-components/src/lib/badge/badge.css diff --git a/packages/mc-react-ui-components/src/lib/badge/badge.spec.tsx b/packages/react-ui-components/src/lib/badge/badge.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/badge.spec.tsx rename to packages/react-ui-components/src/lib/badge/badge.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/badge/generated-examples.json b/packages/react-ui-components/src/lib/badge/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/generated-examples.json rename to packages/react-ui-components/src/lib/badge/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/badge/generated-props.json b/packages/react-ui-components/src/lib/badge/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/generated-props.json rename to packages/react-ui-components/src/lib/badge/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/badge/index.tsx b/packages/react-ui-components/src/lib/badge/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/index.tsx rename to packages/react-ui-components/src/lib/badge/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/badge/styles.tsx b/packages/react-ui-components/src/lib/badge/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/badge/styles.tsx rename to packages/react-ui-components/src/lib/badge/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/README.md b/packages/react-ui-components/src/lib/base/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/README.md rename to packages/react-ui-components/src/lib/base/README.md diff --git a/packages/mc-react-ui-components/src/lib/base/base.story.tsx b/packages/react-ui-components/src/lib/base/base.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/base.story.tsx rename to packages/react-ui-components/src/lib/base/base.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/bugs.story.tsx b/packages/react-ui-components/src/lib/base/bugs.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/bugs.story.tsx rename to packages/react-ui-components/src/lib/base/bugs.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/component.tsx b/packages/react-ui-components/src/lib/base/component.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/component.tsx rename to packages/react-ui-components/src/lib/base/component.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/foundation-component.tsx b/packages/react-ui-components/src/lib/base/foundation-component.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/foundation-component.tsx rename to packages/react-ui-components/src/lib/base/foundation-component.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/index.spec.tsx b/packages/react-ui-components/src/lib/base/index.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/index.spec.tsx rename to packages/react-ui-components/src/lib/base/index.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/index.tsx b/packages/react-ui-components/src/lib/base/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/index.tsx rename to packages/react-ui-components/src/lib/base/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/portal.tsx b/packages/react-ui-components/src/lib/base/portal.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/portal.tsx rename to packages/react-ui-components/src/lib/base/portal.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/test-polyfill.tsx b/packages/react-ui-components/src/lib/base/test-polyfill.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/test-polyfill.tsx rename to packages/react-ui-components/src/lib/base/test-polyfill.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/apply-passive.tsx b/packages/react-ui-components/src/lib/base/utils/apply-passive.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/apply-passive.tsx rename to packages/react-ui-components/src/lib/base/utils/apply-passive.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/data-table-context.tsx b/packages/react-ui-components/src/lib/base/utils/data-table-context.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/data-table-context.tsx rename to packages/react-ui-components/src/lib/base/utils/data-table-context.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/debounce.tsx b/packages/react-ui-components/src/lib/base/utils/debounce.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/debounce.tsx rename to packages/react-ui-components/src/lib/base/utils/debounce.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/deprecation.tsx b/packages/react-ui-components/src/lib/base/utils/deprecation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/deprecation.tsx rename to packages/react-ui-components/src/lib/base/utils/deprecation.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/emitter.tsx b/packages/react-ui-components/src/lib/base/utils/emitter.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/emitter.tsx rename to packages/react-ui-components/src/lib/base/utils/emitter.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/empty-client-rect.tsx b/packages/react-ui-components/src/lib/base/utils/empty-client-rect.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/empty-client-rect.tsx rename to packages/react-ui-components/src/lib/base/utils/empty-client-rect.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/events-map.tsx b/packages/react-ui-components/src/lib/base/utils/events-map.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/events-map.tsx rename to packages/react-ui-components/src/lib/base/utils/events-map.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/focus-trap.tsx b/packages/react-ui-components/src/lib/base/utils/focus-trap.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/focus-trap.tsx rename to packages/react-ui-components/src/lib/base/utils/focus-trap.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/get-display-name.tsx b/packages/react-ui-components/src/lib/base/utils/get-display-name.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/get-display-name.tsx rename to packages/react-ui-components/src/lib/base/utils/get-display-name.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/hooks.tsx b/packages/react-ui-components/src/lib/base/utils/hooks.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/hooks.tsx rename to packages/react-ui-components/src/lib/base/utils/hooks.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/index.tsx b/packages/react-ui-components/src/lib/base/utils/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/index.tsx rename to packages/react-ui-components/src/lib/base/utils/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/ponyfills.tsx b/packages/react-ui-components/src/lib/base/utils/ponyfills.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/ponyfills.tsx rename to packages/react-ui-components/src/lib/base/utils/ponyfills.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/raf.tsx b/packages/react-ui-components/src/lib/base/utils/raf.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/raf.tsx rename to packages/react-ui-components/src/lib/base/utils/raf.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/random-id.tsx b/packages/react-ui-components/src/lib/base/utils/random-id.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/random-id.tsx rename to packages/react-ui-components/src/lib/base/utils/random-id.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/strings.tsx b/packages/react-ui-components/src/lib/base/utils/strings.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/strings.tsx rename to packages/react-ui-components/src/lib/base/utils/strings.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/test-utils.tsx b/packages/react-ui-components/src/lib/base/utils/test-utils.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/test-utils.tsx rename to packages/react-ui-components/src/lib/base/utils/test-utils.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/trigger-window-resize.tsx b/packages/react-ui-components/src/lib/base/utils/trigger-window-resize.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/trigger-window-resize.tsx rename to packages/react-ui-components/src/lib/base/utils/trigger-window-resize.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/use-knob.tsx b/packages/react-ui-components/src/lib/base/utils/use-knob.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/use-knob.tsx rename to packages/react-ui-components/src/lib/base/utils/use-knob.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/utils/wrap-child.tsx b/packages/react-ui-components/src/lib/base/utils/wrap-child.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/utils/wrap-child.tsx rename to packages/react-ui-components/src/lib/base/utils/wrap-child.tsx diff --git a/packages/mc-react-ui-components/src/lib/base/with-theme.tsx b/packages/react-ui-components/src/lib/base/with-theme.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/base/with-theme.tsx rename to packages/react-ui-components/src/lib/base/with-theme.tsx diff --git a/packages/mc-react-ui-components/src/lib/button/README.md b/packages/react-ui-components/src/lib/button/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/README.md rename to packages/react-ui-components/src/lib/button/README.md diff --git a/packages/mc-react-ui-components/src/lib/button/button-ssr.spec.tsx b/packages/react-ui-components/src/lib/button/button-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/button-ssr.spec.tsx rename to packages/react-ui-components/src/lib/button/button-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/button/button.spec.tsx b/packages/react-ui-components/src/lib/button/button.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/button.spec.tsx rename to packages/react-ui-components/src/lib/button/button.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/button/button.story.tsx b/packages/react-ui-components/src/lib/button/button.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/button.story.tsx rename to packages/react-ui-components/src/lib/button/button.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/button/generated-examples.json b/packages/react-ui-components/src/lib/button/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/generated-examples.json rename to packages/react-ui-components/src/lib/button/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/button/generated-props.json b/packages/react-ui-components/src/lib/button/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/generated-props.json rename to packages/react-ui-components/src/lib/button/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/button/index.tsx b/packages/react-ui-components/src/lib/button/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/index.tsx rename to packages/react-ui-components/src/lib/button/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/button/styles.tsx b/packages/react-ui-components/src/lib/button/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/button/styles.tsx rename to packages/react-ui-components/src/lib/button/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/card/README.md b/packages/react-ui-components/src/lib/card/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/README.md rename to packages/react-ui-components/src/lib/card/README.md diff --git a/packages/mc-react-ui-components/src/lib/card/card-ssr.spec.tsx b/packages/react-ui-components/src/lib/card/card-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/card-ssr.spec.tsx rename to packages/react-ui-components/src/lib/card/card-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/card/card.spec.tsx b/packages/react-ui-components/src/lib/card/card.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/card.spec.tsx rename to packages/react-ui-components/src/lib/card/card.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/card/card.story.tsx b/packages/react-ui-components/src/lib/card/card.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/card.story.tsx rename to packages/react-ui-components/src/lib/card/card.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/card/generated-examples.json b/packages/react-ui-components/src/lib/card/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/generated-examples.json rename to packages/react-ui-components/src/lib/card/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/card/generated-props.json b/packages/react-ui-components/src/lib/card/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/generated-props.json rename to packages/react-ui-components/src/lib/card/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/card/index.tsx b/packages/react-ui-components/src/lib/card/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/index.tsx rename to packages/react-ui-components/src/lib/card/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/card/styles.tsx b/packages/react-ui-components/src/lib/card/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/card/styles.tsx rename to packages/react-ui-components/src/lib/card/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/checkbox/README.md b/packages/react-ui-components/src/lib/checkbox/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/README.md rename to packages/react-ui-components/src/lib/checkbox/README.md diff --git a/packages/mc-react-ui-components/src/lib/checkbox/checkbox-ssr.spec.tsx b/packages/react-ui-components/src/lib/checkbox/checkbox-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/checkbox-ssr.spec.tsx rename to packages/react-ui-components/src/lib/checkbox/checkbox-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/checkbox/checkbox.spec.tsx b/packages/react-ui-components/src/lib/checkbox/checkbox.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/checkbox.spec.tsx rename to packages/react-ui-components/src/lib/checkbox/checkbox.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx b/packages/react-ui-components/src/lib/checkbox/checkbox.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/checkbox.story.tsx rename to packages/react-ui-components/src/lib/checkbox/checkbox.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/checkbox/foundation.tsx b/packages/react-ui-components/src/lib/checkbox/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/foundation.tsx rename to packages/react-ui-components/src/lib/checkbox/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/checkbox/generated-examples.json b/packages/react-ui-components/src/lib/checkbox/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/generated-examples.json rename to packages/react-ui-components/src/lib/checkbox/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/checkbox/generated-props.json b/packages/react-ui-components/src/lib/checkbox/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/generated-props.json rename to packages/react-ui-components/src/lib/checkbox/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/checkbox/index.tsx b/packages/react-ui-components/src/lib/checkbox/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/index.tsx rename to packages/react-ui-components/src/lib/checkbox/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/checkbox/styles.tsx b/packages/react-ui-components/src/lib/checkbox/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/checkbox/styles.tsx rename to packages/react-ui-components/src/lib/checkbox/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/chip/README.md b/packages/react-ui-components/src/lib/chip/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/README.md rename to packages/react-ui-components/src/lib/chip/README.md diff --git a/packages/mc-react-ui-components/src/lib/chip/chip-ssr.spec.tsx b/packages/react-ui-components/src/lib/chip/chip-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/chip-ssr.spec.tsx rename to packages/react-ui-components/src/lib/chip/chip-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/chip/chip.spec.tsx b/packages/react-ui-components/src/lib/chip/chip.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/chip.spec.tsx rename to packages/react-ui-components/src/lib/chip/chip.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/chip/chip.story.tsx b/packages/react-ui-components/src/lib/chip/chip.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/chip.story.tsx rename to packages/react-ui-components/src/lib/chip/chip.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/chip/foundation.tsx b/packages/react-ui-components/src/lib/chip/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/foundation.tsx rename to packages/react-ui-components/src/lib/chip/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/chip/generated-examples.json b/packages/react-ui-components/src/lib/chip/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/generated-examples.json rename to packages/react-ui-components/src/lib/chip/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/chip/generated-props.json b/packages/react-ui-components/src/lib/chip/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/generated-props.json rename to packages/react-ui-components/src/lib/chip/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/chip/index.tsx b/packages/react-ui-components/src/lib/chip/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/index.tsx rename to packages/react-ui-components/src/lib/chip/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/chip/styles.tsx b/packages/react-ui-components/src/lib/chip/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/chip/styles.tsx rename to packages/react-ui-components/src/lib/chip/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/README.md b/packages/react-ui-components/src/lib/circular-progress/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/README.md rename to packages/react-ui-components/src/lib/circular-progress/README.md diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/circular-progress-ssr.spec.tsx b/packages/react-ui-components/src/lib/circular-progress/circular-progress-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/circular-progress-ssr.spec.tsx rename to packages/react-ui-components/src/lib/circular-progress/circular-progress-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/circular-progress.css b/packages/react-ui-components/src/lib/circular-progress/circular-progress.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/circular-progress.css rename to packages/react-ui-components/src/lib/circular-progress/circular-progress.css diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/circular-progress.spec.tsx b/packages/react-ui-components/src/lib/circular-progress/circular-progress.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/circular-progress.spec.tsx rename to packages/react-ui-components/src/lib/circular-progress/circular-progress.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/generated-examples.json b/packages/react-ui-components/src/lib/circular-progress/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/generated-examples.json rename to packages/react-ui-components/src/lib/circular-progress/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/generated-props.json b/packages/react-ui-components/src/lib/circular-progress/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/generated-props.json rename to packages/react-ui-components/src/lib/circular-progress/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/index.tsx b/packages/react-ui-components/src/lib/circular-progress/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/index.tsx rename to packages/react-ui-components/src/lib/circular-progress/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/circular-progress/styles.tsx b/packages/react-ui-components/src/lib/circular-progress/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/circular-progress/styles.tsx rename to packages/react-ui-components/src/lib/circular-progress/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/data-table/README.md b/packages/react-ui-components/src/lib/data-table/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/README.md rename to packages/react-ui-components/src/lib/data-table/README.md diff --git a/packages/mc-react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx b/packages/react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx rename to packages/react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/data-table/data-table.css b/packages/react-ui-components/src/lib/data-table/data-table.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/data-table.css rename to packages/react-ui-components/src/lib/data-table/data-table.css diff --git a/packages/mc-react-ui-components/src/lib/data-table/data-table.spec.tsx b/packages/react-ui-components/src/lib/data-table/data-table.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/data-table.spec.tsx rename to packages/react-ui-components/src/lib/data-table/data-table.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/data-table/data-table.story.tsx b/packages/react-ui-components/src/lib/data-table/data-table.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/data-table.story.tsx rename to packages/react-ui-components/src/lib/data-table/data-table.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/data-table/generated-examples.json b/packages/react-ui-components/src/lib/data-table/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/generated-examples.json rename to packages/react-ui-components/src/lib/data-table/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/data-table/generated-props.json b/packages/react-ui-components/src/lib/data-table/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/generated-props.json rename to packages/react-ui-components/src/lib/data-table/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/data-table/index.tsx b/packages/react-ui-components/src/lib/data-table/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/index.tsx rename to packages/react-ui-components/src/lib/data-table/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/data-table/styles.tsx b/packages/react-ui-components/src/lib/data-table/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/data-table/styles.tsx rename to packages/react-ui-components/src/lib/data-table/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/README.md b/packages/react-ui-components/src/lib/dialog/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/README.md rename to packages/react-ui-components/src/lib/dialog/README.md diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog-queue.tsx b/packages/react-ui-components/src/lib/dialog/dialog-queue.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/dialog-queue.tsx rename to packages/react-ui-components/src/lib/dialog/dialog-queue.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx b/packages/react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx rename to packages/react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog.spec.tsx b/packages/react-ui-components/src/lib/dialog/dialog.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/dialog.spec.tsx rename to packages/react-ui-components/src/lib/dialog/dialog.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx b/packages/react-ui-components/src/lib/dialog/dialog.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/dialog.story.tsx rename to packages/react-ui-components/src/lib/dialog/dialog.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/dialog.tsx b/packages/react-ui-components/src/lib/dialog/dialog.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/dialog.tsx rename to packages/react-ui-components/src/lib/dialog/dialog.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/foundation.tsx b/packages/react-ui-components/src/lib/dialog/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/foundation.tsx rename to packages/react-ui-components/src/lib/dialog/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/generated-examples.json b/packages/react-ui-components/src/lib/dialog/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/generated-examples.json rename to packages/react-ui-components/src/lib/dialog/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/dialog/generated-props.json b/packages/react-ui-components/src/lib/dialog/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/generated-props.json rename to packages/react-ui-components/src/lib/dialog/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/dialog/index.tsx b/packages/react-ui-components/src/lib/dialog/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/index.tsx rename to packages/react-ui-components/src/lib/dialog/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/dialog/styles.tsx b/packages/react-ui-components/src/lib/dialog/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/dialog/styles.tsx rename to packages/react-ui-components/src/lib/dialog/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/drawer/README.md b/packages/react-ui-components/src/lib/drawer/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/README.md rename to packages/react-ui-components/src/lib/drawer/README.md diff --git a/packages/mc-react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx b/packages/react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx rename to packages/react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/drawer/drawer.spec.tsx b/packages/react-ui-components/src/lib/drawer/drawer.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/drawer.spec.tsx rename to packages/react-ui-components/src/lib/drawer/drawer.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx b/packages/react-ui-components/src/lib/drawer/drawer.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/drawer.story.tsx rename to packages/react-ui-components/src/lib/drawer/drawer.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/drawer/foundation.tsx b/packages/react-ui-components/src/lib/drawer/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/foundation.tsx rename to packages/react-ui-components/src/lib/drawer/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/drawer/generated-examples.json b/packages/react-ui-components/src/lib/drawer/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/generated-examples.json rename to packages/react-ui-components/src/lib/drawer/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/drawer/generated-props.json b/packages/react-ui-components/src/lib/drawer/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/generated-props.json rename to packages/react-ui-components/src/lib/drawer/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/drawer/index.tsx b/packages/react-ui-components/src/lib/drawer/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/index.tsx rename to packages/react-ui-components/src/lib/drawer/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/drawer/styles.tsx b/packages/react-ui-components/src/lib/drawer/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/drawer/styles.tsx rename to packages/react-ui-components/src/lib/drawer/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/elevation/README.md b/packages/react-ui-components/src/lib/elevation/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/README.md rename to packages/react-ui-components/src/lib/elevation/README.md diff --git a/packages/mc-react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx b/packages/react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx rename to packages/react-ui-components/src/lib/elevation/elevation-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/elevation/elevation.spec.tsx b/packages/react-ui-components/src/lib/elevation/elevation.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/elevation.spec.tsx rename to packages/react-ui-components/src/lib/elevation/elevation.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx b/packages/react-ui-components/src/lib/elevation/elevation.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/elevation.story.tsx rename to packages/react-ui-components/src/lib/elevation/elevation.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/elevation/generated-examples.json b/packages/react-ui-components/src/lib/elevation/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/generated-examples.json rename to packages/react-ui-components/src/lib/elevation/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/elevation/generated-props.json b/packages/react-ui-components/src/lib/elevation/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/generated-props.json rename to packages/react-ui-components/src/lib/elevation/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/elevation/index.tsx b/packages/react-ui-components/src/lib/elevation/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/index.tsx rename to packages/react-ui-components/src/lib/elevation/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/elevation/styles.tsx b/packages/react-ui-components/src/lib/elevation/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/elevation/styles.tsx rename to packages/react-ui-components/src/lib/elevation/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/fab/README.md b/packages/react-ui-components/src/lib/fab/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/README.md rename to packages/react-ui-components/src/lib/fab/README.md diff --git a/packages/mc-react-ui-components/src/lib/fab/fab-ssr.spec.tsx b/packages/react-ui-components/src/lib/fab/fab-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/fab-ssr.spec.tsx rename to packages/react-ui-components/src/lib/fab/fab-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/fab/fab.spec.tsx b/packages/react-ui-components/src/lib/fab/fab.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/fab.spec.tsx rename to packages/react-ui-components/src/lib/fab/fab.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/fab/fab.story.tsx b/packages/react-ui-components/src/lib/fab/fab.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/fab.story.tsx rename to packages/react-ui-components/src/lib/fab/fab.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/fab/generated-examples.json b/packages/react-ui-components/src/lib/fab/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/generated-examples.json rename to packages/react-ui-components/src/lib/fab/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/fab/generated-props.json b/packages/react-ui-components/src/lib/fab/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/generated-props.json rename to packages/react-ui-components/src/lib/fab/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/fab/index.tsx b/packages/react-ui-components/src/lib/fab/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/index.tsx rename to packages/react-ui-components/src/lib/fab/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/fab/styles.tsx b/packages/react-ui-components/src/lib/fab/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/fab/styles.tsx rename to packages/react-ui-components/src/lib/fab/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx b/packages/react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx rename to packages/react-ui-components/src/lib/floating-label/floating-label-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/floating-label/floating-label.spec.tsx b/packages/react-ui-components/src/lib/floating-label/floating-label.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/floating-label/floating-label.spec.tsx rename to packages/react-ui-components/src/lib/floating-label/floating-label.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/floating-label/foundation.tsx b/packages/react-ui-components/src/lib/floating-label/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/floating-label/foundation.tsx rename to packages/react-ui-components/src/lib/floating-label/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/floating-label/generated-examples.json b/packages/react-ui-components/src/lib/floating-label/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/floating-label/generated-examples.json rename to packages/react-ui-components/src/lib/floating-label/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/floating-label/generated-props.json b/packages/react-ui-components/src/lib/floating-label/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/floating-label/generated-props.json rename to packages/react-ui-components/src/lib/floating-label/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/floating-label/index.tsx b/packages/react-ui-components/src/lib/floating-label/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/floating-label/index.tsx rename to packages/react-ui-components/src/lib/floating-label/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/floating-label/styles.tsx b/packages/react-ui-components/src/lib/floating-label/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/floating-label/styles.tsx rename to packages/react-ui-components/src/lib/floating-label/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/formfield/README.md b/packages/react-ui-components/src/lib/formfield/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/README.md rename to packages/react-ui-components/src/lib/formfield/README.md diff --git a/packages/mc-react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx b/packages/react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx rename to packages/react-ui-components/src/lib/formfield/form-field-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/formfield/form-field.spec.tsx b/packages/react-ui-components/src/lib/formfield/form-field.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/form-field.spec.tsx rename to packages/react-ui-components/src/lib/formfield/form-field.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/formfield/foundation.tsx b/packages/react-ui-components/src/lib/formfield/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/foundation.tsx rename to packages/react-ui-components/src/lib/formfield/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/formfield/generated-examples.json b/packages/react-ui-components/src/lib/formfield/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/generated-examples.json rename to packages/react-ui-components/src/lib/formfield/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/formfield/generated-props.json b/packages/react-ui-components/src/lib/formfield/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/generated-props.json rename to packages/react-ui-components/src/lib/formfield/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/formfield/index.tsx b/packages/react-ui-components/src/lib/formfield/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/index.tsx rename to packages/react-ui-components/src/lib/formfield/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/formfield/styles.tsx b/packages/react-ui-components/src/lib/formfield/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/formfield/styles.tsx rename to packages/react-ui-components/src/lib/formfield/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid-list/README.md b/packages/react-ui-components/src/lib/grid-list/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/README.md rename to packages/react-ui-components/src/lib/grid-list/README.md diff --git a/packages/mc-react-ui-components/src/lib/grid-list/generated-examples.json b/packages/react-ui-components/src/lib/grid-list/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/generated-examples.json rename to packages/react-ui-components/src/lib/grid-list/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/grid-list/generated-props.json b/packages/react-ui-components/src/lib/grid-list/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/generated-props.json rename to packages/react-ui-components/src/lib/grid-list/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx b/packages/react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx rename to packages/react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid-list/grid-list.spec.tsx b/packages/react-ui-components/src/lib/grid-list/grid-list.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/grid-list.spec.tsx rename to packages/react-ui-components/src/lib/grid-list/grid-list.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid-list/grid-list.story.tsx b/packages/react-ui-components/src/lib/grid-list/grid-list.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/grid-list.story.tsx rename to packages/react-ui-components/src/lib/grid-list/grid-list.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid-list/index.tsx b/packages/react-ui-components/src/lib/grid-list/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/index.tsx rename to packages/react-ui-components/src/lib/grid-list/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid-list/styles.tsx b/packages/react-ui-components/src/lib/grid-list/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid-list/styles.tsx rename to packages/react-ui-components/src/lib/grid-list/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid/README.md b/packages/react-ui-components/src/lib/grid/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/README.md rename to packages/react-ui-components/src/lib/grid/README.md diff --git a/packages/mc-react-ui-components/src/lib/grid/generated-examples.json b/packages/react-ui-components/src/lib/grid/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/generated-examples.json rename to packages/react-ui-components/src/lib/grid/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/grid/generated-props.json b/packages/react-ui-components/src/lib/grid/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/generated-props.json rename to packages/react-ui-components/src/lib/grid/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/grid/grid-ssr.spec.tsx b/packages/react-ui-components/src/lib/grid/grid-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/grid-ssr.spec.tsx rename to packages/react-ui-components/src/lib/grid/grid-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid/grid.spec.tsx b/packages/react-ui-components/src/lib/grid/grid.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/grid.spec.tsx rename to packages/react-ui-components/src/lib/grid/grid.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid/grid.story.tsx b/packages/react-ui-components/src/lib/grid/grid.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/grid.story.tsx rename to packages/react-ui-components/src/lib/grid/grid.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid/index.tsx b/packages/react-ui-components/src/lib/grid/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/index.tsx rename to packages/react-ui-components/src/lib/grid/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/grid/styles.tsx b/packages/react-ui-components/src/lib/grid/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/grid/styles.tsx rename to packages/react-ui-components/src/lib/grid/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon-button/README.md b/packages/react-ui-components/src/lib/icon-button/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/README.md rename to packages/react-ui-components/src/lib/icon-button/README.md diff --git a/packages/mc-react-ui-components/src/lib/icon-button/foundation.tsx b/packages/react-ui-components/src/lib/icon-button/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/foundation.tsx rename to packages/react-ui-components/src/lib/icon-button/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon-button/generated-examples.json b/packages/react-ui-components/src/lib/icon-button/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/generated-examples.json rename to packages/react-ui-components/src/lib/icon-button/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/icon-button/generated-props.json b/packages/react-ui-components/src/lib/icon-button/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/generated-props.json rename to packages/react-ui-components/src/lib/icon-button/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/icon-button/icon-button-ssr.spec.tsx b/packages/react-ui-components/src/lib/icon-button/icon-button-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/icon-button-ssr.spec.tsx rename to packages/react-ui-components/src/lib/icon-button/icon-button-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon-button/icon-button.spec.tsx b/packages/react-ui-components/src/lib/icon-button/icon-button.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/icon-button.spec.tsx rename to packages/react-ui-components/src/lib/icon-button/icon-button.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon-button/icon-button.story.tsx b/packages/react-ui-components/src/lib/icon-button/icon-button.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/icon-button.story.tsx rename to packages/react-ui-components/src/lib/icon-button/icon-button.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon-button/index.tsx b/packages/react-ui-components/src/lib/icon-button/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/index.tsx rename to packages/react-ui-components/src/lib/icon-button/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon-button/styles.tsx b/packages/react-ui-components/src/lib/icon-button/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon-button/styles.tsx rename to packages/react-ui-components/src/lib/icon-button/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon/README.md b/packages/react-ui-components/src/lib/icon/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/README.md rename to packages/react-ui-components/src/lib/icon/README.md diff --git a/packages/mc-react-ui-components/src/lib/icon/generated-examples.json b/packages/react-ui-components/src/lib/icon/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/generated-examples.json rename to packages/react-ui-components/src/lib/icon/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/icon/generated-props.json b/packages/react-ui-components/src/lib/icon/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/generated-props.json rename to packages/react-ui-components/src/lib/icon/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/icon/icon.css b/packages/react-ui-components/src/lib/icon/icon.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/icon.css rename to packages/react-ui-components/src/lib/icon/icon.css diff --git a/packages/mc-react-ui-components/src/lib/icon/icon.spec.tsx b/packages/react-ui-components/src/lib/icon/icon.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/icon.spec.tsx rename to packages/react-ui-components/src/lib/icon/icon.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon/icon.story.tsx b/packages/react-ui-components/src/lib/icon/icon.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/icon.story.tsx rename to packages/react-ui-components/src/lib/icon/icon.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon/index.tsx b/packages/react-ui-components/src/lib/icon/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/index.tsx rename to packages/react-ui-components/src/lib/icon/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/icon/styles.tsx b/packages/react-ui-components/src/lib/icon/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/icon/styles.tsx rename to packages/react-ui-components/src/lib/icon/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/image-list/README.md b/packages/react-ui-components/src/lib/image-list/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/README.md rename to packages/react-ui-components/src/lib/image-list/README.md diff --git a/packages/mc-react-ui-components/src/lib/image-list/generated-examples.json b/packages/react-ui-components/src/lib/image-list/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/generated-examples.json rename to packages/react-ui-components/src/lib/image-list/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/image-list/generated-props.json b/packages/react-ui-components/src/lib/image-list/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/generated-props.json rename to packages/react-ui-components/src/lib/image-list/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx b/packages/react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx rename to packages/react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/image-list/image-list.spec.tsx b/packages/react-ui-components/src/lib/image-list/image-list.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/image-list.spec.tsx rename to packages/react-ui-components/src/lib/image-list/image-list.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/image-list/image-list.story.tsx b/packages/react-ui-components/src/lib/image-list/image-list.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/image-list.story.tsx rename to packages/react-ui-components/src/lib/image-list/image-list.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/image-list/index.tsx b/packages/react-ui-components/src/lib/image-list/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/index.tsx rename to packages/react-ui-components/src/lib/image-list/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/image-list/styles.tsx b/packages/react-ui-components/src/lib/image-list/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/image-list/styles.tsx rename to packages/react-ui-components/src/lib/image-list/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/index.ts b/packages/react-ui-components/src/lib/index.ts similarity index 100% rename from packages/mc-react-ui-components/src/lib/index.ts rename to packages/react-ui-components/src/lib/index.ts diff --git a/packages/mc-react-ui-components/src/lib/line-ripple/foundation.tsx b/packages/react-ui-components/src/lib/line-ripple/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/line-ripple/foundation.tsx rename to packages/react-ui-components/src/lib/line-ripple/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/line-ripple/generated-examples.json b/packages/react-ui-components/src/lib/line-ripple/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/line-ripple/generated-examples.json rename to packages/react-ui-components/src/lib/line-ripple/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/line-ripple/generated-props.json b/packages/react-ui-components/src/lib/line-ripple/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/line-ripple/generated-props.json rename to packages/react-ui-components/src/lib/line-ripple/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/line-ripple/index.tsx b/packages/react-ui-components/src/lib/line-ripple/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/line-ripple/index.tsx rename to packages/react-ui-components/src/lib/line-ripple/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/line-ripple/line-ripple-ssr.spec.tsx b/packages/react-ui-components/src/lib/line-ripple/line-ripple-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/line-ripple/line-ripple-ssr.spec.tsx rename to packages/react-ui-components/src/lib/line-ripple/line-ripple-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/line-ripple/line-ripple.spec.tsx b/packages/react-ui-components/src/lib/line-ripple/line-ripple.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/line-ripple/line-ripple.spec.tsx rename to packages/react-ui-components/src/lib/line-ripple/line-ripple.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/line-ripple/styles.tsx b/packages/react-ui-components/src/lib/line-ripple/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/line-ripple/styles.tsx rename to packages/react-ui-components/src/lib/line-ripple/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/README.md b/packages/react-ui-components/src/lib/linear-progress/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/README.md rename to packages/react-ui-components/src/lib/linear-progress/README.md diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/foundation.tsx b/packages/react-ui-components/src/lib/linear-progress/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/foundation.tsx rename to packages/react-ui-components/src/lib/linear-progress/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/generated-examples.json b/packages/react-ui-components/src/lib/linear-progress/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/generated-examples.json rename to packages/react-ui-components/src/lib/linear-progress/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/generated-props.json b/packages/react-ui-components/src/lib/linear-progress/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/generated-props.json rename to packages/react-ui-components/src/lib/linear-progress/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/index.tsx b/packages/react-ui-components/src/lib/linear-progress/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/index.tsx rename to packages/react-ui-components/src/lib/linear-progress/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/linear-progress-ssr.spec.tsx b/packages/react-ui-components/src/lib/linear-progress/linear-progress-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/linear-progress-ssr.spec.tsx rename to packages/react-ui-components/src/lib/linear-progress/linear-progress-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.spec.tsx b/packages/react-ui-components/src/lib/linear-progress/linear-progress.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.spec.tsx rename to packages/react-ui-components/src/lib/linear-progress/linear-progress.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.story.tsx b/packages/react-ui-components/src/lib/linear-progress/linear-progress.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/linear-progress.story.tsx rename to packages/react-ui-components/src/lib/linear-progress/linear-progress.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/linear-progress/styles.tsx b/packages/react-ui-components/src/lib/linear-progress/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/linear-progress/styles.tsx rename to packages/react-ui-components/src/lib/linear-progress/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/README-COLLAPSIBLE.md b/packages/react-ui-components/src/lib/list/README-COLLAPSIBLE.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/README-COLLAPSIBLE.md rename to packages/react-ui-components/src/lib/list/README-COLLAPSIBLE.md diff --git a/packages/mc-react-ui-components/src/lib/list/README-VARIANTS.md b/packages/react-ui-components/src/lib/list/README-VARIANTS.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/README-VARIANTS.md rename to packages/react-ui-components/src/lib/list/README-VARIANTS.md diff --git a/packages/mc-react-ui-components/src/lib/list/README.md b/packages/react-ui-components/src/lib/list/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/README.md rename to packages/react-ui-components/src/lib/list/README.md diff --git a/packages/mc-react-ui-components/src/lib/list/collapsible-list.css b/packages/react-ui-components/src/lib/list/collapsible-list.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/collapsible-list.css rename to packages/react-ui-components/src/lib/list/collapsible-list.css diff --git a/packages/mc-react-ui-components/src/lib/list/collapsible-list.tsx b/packages/react-ui-components/src/lib/list/collapsible-list.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/collapsible-list.tsx rename to packages/react-ui-components/src/lib/list/collapsible-list.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/foundation.tsx b/packages/react-ui-components/src/lib/list/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/foundation.tsx rename to packages/react-ui-components/src/lib/list/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/generated-examples-collapsible.json b/packages/react-ui-components/src/lib/list/generated-examples-collapsible.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/generated-examples-collapsible.json rename to packages/react-ui-components/src/lib/list/generated-examples-collapsible.json diff --git a/packages/mc-react-ui-components/src/lib/list/generated-examples-variants.json b/packages/react-ui-components/src/lib/list/generated-examples-variants.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/generated-examples-variants.json rename to packages/react-ui-components/src/lib/list/generated-examples-variants.json diff --git a/packages/mc-react-ui-components/src/lib/list/generated-examples.json b/packages/react-ui-components/src/lib/list/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/generated-examples.json rename to packages/react-ui-components/src/lib/list/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/list/generated-props.json b/packages/react-ui-components/src/lib/list/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/generated-props.json rename to packages/react-ui-components/src/lib/list/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/list/index.tsx b/packages/react-ui-components/src/lib/list/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/index.tsx rename to packages/react-ui-components/src/lib/list/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/list-item.tsx b/packages/react-ui-components/src/lib/list/list-item.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/list-item.tsx rename to packages/react-ui-components/src/lib/list/list-item.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/list-ssr.spec.tsx b/packages/react-ui-components/src/lib/list/list-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/list-ssr.spec.tsx rename to packages/react-ui-components/src/lib/list/list-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/list.spec.tsx b/packages/react-ui-components/src/lib/list/list.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/list.spec.tsx rename to packages/react-ui-components/src/lib/list/list.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/list.story.tsx b/packages/react-ui-components/src/lib/list/list.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/list.story.tsx rename to packages/react-ui-components/src/lib/list/list.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/list.tsx b/packages/react-ui-components/src/lib/list/list.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/list.tsx rename to packages/react-ui-components/src/lib/list/list.tsx diff --git a/packages/mc-react-ui-components/src/lib/list/styles.tsx b/packages/react-ui-components/src/lib/list/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/list/styles.tsx rename to packages/react-ui-components/src/lib/list/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/README.md b/packages/react-ui-components/src/lib/menu/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/README.md rename to packages/react-ui-components/src/lib/menu/README.md diff --git a/packages/mc-react-ui-components/src/lib/menu/generated-examples.json b/packages/react-ui-components/src/lib/menu/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/generated-examples.json rename to packages/react-ui-components/src/lib/menu/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/menu/generated-props.json b/packages/react-ui-components/src/lib/menu/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/generated-props.json rename to packages/react-ui-components/src/lib/menu/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/menu/index.tsx b/packages/react-ui-components/src/lib/menu/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/index.tsx rename to packages/react-ui-components/src/lib/menu/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/menu-ssr.spec.tsx b/packages/react-ui-components/src/lib/menu/menu-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/menu-ssr.spec.tsx rename to packages/react-ui-components/src/lib/menu/menu-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/menu-surface/foundation.tsx b/packages/react-ui-components/src/lib/menu/menu-surface/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/menu-surface/foundation.tsx rename to packages/react-ui-components/src/lib/menu/menu-surface/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/menu-surface/index.tsx b/packages/react-ui-components/src/lib/menu/menu-surface/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/menu-surface/index.tsx rename to packages/react-ui-components/src/lib/menu/menu-surface/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/menu.spec.tsx b/packages/react-ui-components/src/lib/menu/menu.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/menu.spec.tsx rename to packages/react-ui-components/src/lib/menu/menu.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/menu.story.tsx b/packages/react-ui-components/src/lib/menu/menu.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/menu.story.tsx rename to packages/react-ui-components/src/lib/menu/menu.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/menu/foundation.tsx b/packages/react-ui-components/src/lib/menu/menu/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/menu/foundation.tsx rename to packages/react-ui-components/src/lib/menu/menu/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/menu/index.tsx b/packages/react-ui-components/src/lib/menu/menu/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/menu/index.tsx rename to packages/react-ui-components/src/lib/menu/menu/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/menu/styles.tsx b/packages/react-ui-components/src/lib/menu/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/menu/styles.tsx rename to packages/react-ui-components/src/lib/menu/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/foundation.tsx b/packages/react-ui-components/src/lib/notched-outline/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/notched-outline/foundation.tsx rename to packages/react-ui-components/src/lib/notched-outline/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/generated-examples.json b/packages/react-ui-components/src/lib/notched-outline/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/notched-outline/generated-examples.json rename to packages/react-ui-components/src/lib/notched-outline/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/generated-props.json b/packages/react-ui-components/src/lib/notched-outline/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/notched-outline/generated-props.json rename to packages/react-ui-components/src/lib/notched-outline/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/index.tsx b/packages/react-ui-components/src/lib/notched-outline/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/notched-outline/index.tsx rename to packages/react-ui-components/src/lib/notched-outline/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx b/packages/react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx rename to packages/react-ui-components/src/lib/notched-outline/notched-outline-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx b/packages/react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx rename to packages/react-ui-components/src/lib/notched-outline/notched-outline.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/notched-outline/styles.tsx b/packages/react-ui-components/src/lib/notched-outline/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/notched-outline/styles.tsx rename to packages/react-ui-components/src/lib/notched-outline/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/provider/README.md b/packages/react-ui-components/src/lib/provider/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/provider/README.md rename to packages/react-ui-components/src/lib/provider/README.md diff --git a/packages/mc-react-ui-components/src/lib/provider/generated-examples.json b/packages/react-ui-components/src/lib/provider/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/provider/generated-examples.json rename to packages/react-ui-components/src/lib/provider/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/provider/generated-props.json b/packages/react-ui-components/src/lib/provider/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/provider/generated-props.json rename to packages/react-ui-components/src/lib/provider/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/provider/index.tsx b/packages/react-ui-components/src/lib/provider/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/provider/index.tsx rename to packages/react-ui-components/src/lib/provider/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/provider/provider-ssr.spec.tsx b/packages/react-ui-components/src/lib/provider/provider-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/provider/provider-ssr.spec.tsx rename to packages/react-ui-components/src/lib/provider/provider-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/provider/provider.spec.tsx b/packages/react-ui-components/src/lib/provider/provider.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/provider/provider.spec.tsx rename to packages/react-ui-components/src/lib/provider/provider.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/radio/README.md b/packages/react-ui-components/src/lib/radio/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/README.md rename to packages/react-ui-components/src/lib/radio/README.md diff --git a/packages/mc-react-ui-components/src/lib/radio/foundation.tsx b/packages/react-ui-components/src/lib/radio/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/foundation.tsx rename to packages/react-ui-components/src/lib/radio/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/radio/generated-examples.json b/packages/react-ui-components/src/lib/radio/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/generated-examples.json rename to packages/react-ui-components/src/lib/radio/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/radio/generated-props.json b/packages/react-ui-components/src/lib/radio/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/generated-props.json rename to packages/react-ui-components/src/lib/radio/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/radio/index.tsx b/packages/react-ui-components/src/lib/radio/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/index.tsx rename to packages/react-ui-components/src/lib/radio/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/radio/radio-ssr.spec.tsx b/packages/react-ui-components/src/lib/radio/radio-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/radio-ssr.spec.tsx rename to packages/react-ui-components/src/lib/radio/radio-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/radio/radio.spec.tsx b/packages/react-ui-components/src/lib/radio/radio.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/radio.spec.tsx rename to packages/react-ui-components/src/lib/radio/radio.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/radio/radio.story.tsx b/packages/react-ui-components/src/lib/radio/radio.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/radio.story.tsx rename to packages/react-ui-components/src/lib/radio/radio.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/radio/styles.tsx b/packages/react-ui-components/src/lib/radio/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/radio/styles.tsx rename to packages/react-ui-components/src/lib/radio/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/ripple/README.md b/packages/react-ui-components/src/lib/ripple/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/README.md rename to packages/react-ui-components/src/lib/ripple/README.md diff --git a/packages/mc-react-ui-components/src/lib/ripple/foundation.tsx b/packages/react-ui-components/src/lib/ripple/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/foundation.tsx rename to packages/react-ui-components/src/lib/ripple/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/ripple/generated-examples.json b/packages/react-ui-components/src/lib/ripple/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/generated-examples.json rename to packages/react-ui-components/src/lib/ripple/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/ripple/generated-props.json b/packages/react-ui-components/src/lib/ripple/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/generated-props.json rename to packages/react-ui-components/src/lib/ripple/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/ripple/index.tsx b/packages/react-ui-components/src/lib/ripple/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/index.tsx rename to packages/react-ui-components/src/lib/ripple/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/ripple/ripple-ssr.spec.tsx b/packages/react-ui-components/src/lib/ripple/ripple-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/ripple-ssr.spec.tsx rename to packages/react-ui-components/src/lib/ripple/ripple-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/ripple/ripple.spec.tsx b/packages/react-ui-components/src/lib/ripple/ripple.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/ripple.spec.tsx rename to packages/react-ui-components/src/lib/ripple/ripple.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx b/packages/react-ui-components/src/lib/ripple/ripple.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/ripple.story.tsx rename to packages/react-ui-components/src/lib/ripple/ripple.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/ripple/styles.tsx b/packages/react-ui-components/src/lib/ripple/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/ripple/styles.tsx rename to packages/react-ui-components/src/lib/ripple/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/rmwc/index.tsx b/packages/react-ui-components/src/lib/rmwc/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/rmwc/index.tsx rename to packages/react-ui-components/src/lib/rmwc/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/rmwc/styles.tsx b/packages/react-ui-components/src/lib/rmwc/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/rmwc/styles.tsx rename to packages/react-ui-components/src/lib/rmwc/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/README.md b/packages/react-ui-components/src/lib/select/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/README.md rename to packages/react-ui-components/src/lib/select/README.md diff --git a/packages/mc-react-ui-components/src/lib/select/generated-examples.json b/packages/react-ui-components/src/lib/select/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/generated-examples.json rename to packages/react-ui-components/src/lib/select/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/select/generated-props.json b/packages/react-ui-components/src/lib/select/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/generated-props.json rename to packages/react-ui-components/src/lib/select/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/select/index.tsx b/packages/react-ui-components/src/lib/select/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/index.tsx rename to packages/react-ui-components/src/lib/select/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx b/packages/react-ui-components/src/lib/select/select-icon/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select-icon/foundation.tsx rename to packages/react-ui-components/src/lib/select/select-icon/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/select-icon/index.tsx b/packages/react-ui-components/src/lib/select/select-icon/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select-icon/index.tsx rename to packages/react-ui-components/src/lib/select/select-icon/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/select-ssr.spec.tsx b/packages/react-ui-components/src/lib/select/select-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select-ssr.spec.tsx rename to packages/react-ui-components/src/lib/select/select-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/select.css b/packages/react-ui-components/src/lib/select/select.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select.css rename to packages/react-ui-components/src/lib/select/select.css diff --git a/packages/mc-react-ui-components/src/lib/select/select.spec.tsx b/packages/react-ui-components/src/lib/select/select.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select.spec.tsx rename to packages/react-ui-components/src/lib/select/select.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/select.story.tsx b/packages/react-ui-components/src/lib/select/select.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select.story.tsx rename to packages/react-ui-components/src/lib/select/select.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/select/foundation.tsx b/packages/react-ui-components/src/lib/select/select/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select/foundation.tsx rename to packages/react-ui-components/src/lib/select/select/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/select/index.tsx b/packages/react-ui-components/src/lib/select/select/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/select/index.tsx rename to packages/react-ui-components/src/lib/select/select/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/select/styles.tsx b/packages/react-ui-components/src/lib/select/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/select/styles.tsx rename to packages/react-ui-components/src/lib/select/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/slider/README.md b/packages/react-ui-components/src/lib/slider/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/README.md rename to packages/react-ui-components/src/lib/slider/README.md diff --git a/packages/mc-react-ui-components/src/lib/slider/foundation.tsx b/packages/react-ui-components/src/lib/slider/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/foundation.tsx rename to packages/react-ui-components/src/lib/slider/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/slider/generated-examples.json b/packages/react-ui-components/src/lib/slider/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/generated-examples.json rename to packages/react-ui-components/src/lib/slider/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/slider/generated-props.json b/packages/react-ui-components/src/lib/slider/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/generated-props.json rename to packages/react-ui-components/src/lib/slider/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/slider/index.tsx b/packages/react-ui-components/src/lib/slider/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/index.tsx rename to packages/react-ui-components/src/lib/slider/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/slider/slider-ssr.spec.tsx b/packages/react-ui-components/src/lib/slider/slider-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/slider-ssr.spec.tsx rename to packages/react-ui-components/src/lib/slider/slider-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/slider/slider.spec.tsx b/packages/react-ui-components/src/lib/slider/slider.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/slider.spec.tsx rename to packages/react-ui-components/src/lib/slider/slider.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/slider/slider.story.tsx b/packages/react-ui-components/src/lib/slider/slider.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/slider.story.tsx rename to packages/react-ui-components/src/lib/slider/slider.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/slider/styles.tsx b/packages/react-ui-components/src/lib/slider/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/slider/styles.tsx rename to packages/react-ui-components/src/lib/slider/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/README.md b/packages/react-ui-components/src/lib/snackbar/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/README.md rename to packages/react-ui-components/src/lib/snackbar/README.md diff --git a/packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx b/packages/react-ui-components/src/lib/snackbar/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/foundation.tsx rename to packages/react-ui-components/src/lib/snackbar/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/generated-examples.json b/packages/react-ui-components/src/lib/snackbar/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/generated-examples.json rename to packages/react-ui-components/src/lib/snackbar/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/snackbar/generated-props.json b/packages/react-ui-components/src/lib/snackbar/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/generated-props.json rename to packages/react-ui-components/src/lib/snackbar/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/snackbar/index.tsx b/packages/react-ui-components/src/lib/snackbar/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/index.tsx rename to packages/react-ui-components/src/lib/snackbar/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar-queue.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar-queue.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/snackbar-queue.tsx rename to packages/react-ui-components/src/lib/snackbar/snackbar-queue.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx rename to packages/react-ui-components/src/lib/snackbar/snackbar-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.spec.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/snackbar.spec.tsx rename to packages/react-ui-components/src/lib/snackbar/snackbar.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/snackbar.story.tsx rename to packages/react-ui-components/src/lib/snackbar/snackbar.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/snackbar.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/snackbar.tsx rename to packages/react-ui-components/src/lib/snackbar/snackbar.tsx diff --git a/packages/mc-react-ui-components/src/lib/snackbar/styles.tsx b/packages/react-ui-components/src/lib/snackbar/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/snackbar/styles.tsx rename to packages/react-ui-components/src/lib/snackbar/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/switch/README.md b/packages/react-ui-components/src/lib/switch/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/README.md rename to packages/react-ui-components/src/lib/switch/README.md diff --git a/packages/mc-react-ui-components/src/lib/switch/foundation.tsx b/packages/react-ui-components/src/lib/switch/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/foundation.tsx rename to packages/react-ui-components/src/lib/switch/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/switch/generated-examples.json b/packages/react-ui-components/src/lib/switch/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/generated-examples.json rename to packages/react-ui-components/src/lib/switch/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/switch/generated-props.json b/packages/react-ui-components/src/lib/switch/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/generated-props.json rename to packages/react-ui-components/src/lib/switch/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/switch/index.tsx b/packages/react-ui-components/src/lib/switch/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/index.tsx rename to packages/react-ui-components/src/lib/switch/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/switch/styles.tsx b/packages/react-ui-components/src/lib/switch/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/styles.tsx rename to packages/react-ui-components/src/lib/switch/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/switch/switch-ssr.spec.tsx b/packages/react-ui-components/src/lib/switch/switch-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/switch-ssr.spec.tsx rename to packages/react-ui-components/src/lib/switch/switch-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/switch/switch.spec.tsx b/packages/react-ui-components/src/lib/switch/switch.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/switch.spec.tsx rename to packages/react-ui-components/src/lib/switch/switch.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/switch/switch.story.tsx b/packages/react-ui-components/src/lib/switch/switch.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/switch/switch.story.tsx rename to packages/react-ui-components/src/lib/switch/switch.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/README.md b/packages/react-ui-components/src/lib/tabs/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/README.md rename to packages/react-ui-components/src/lib/tabs/README.md diff --git a/packages/mc-react-ui-components/src/lib/tabs/generated-examples.json b/packages/react-ui-components/src/lib/tabs/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/generated-examples.json rename to packages/react-ui-components/src/lib/tabs/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/tabs/generated-props.json b/packages/react-ui-components/src/lib/tabs/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/generated-props.json rename to packages/react-ui-components/src/lib/tabs/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/tabs/index.tsx b/packages/react-ui-components/src/lib/tabs/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/index.tsx rename to packages/react-ui-components/src/lib/tabs/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/styles.tsx b/packages/react-ui-components/src/lib/tabs/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/styles.tsx rename to packages/react-ui-components/src/lib/tabs/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-bar-context.tsx b/packages/react-ui-components/src/lib/tabs/tab-bar-context.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-bar-context.tsx rename to packages/react-ui-components/src/lib/tabs/tab-bar-context.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-bar-foundation.tsx b/packages/react-ui-components/src/lib/tabs/tab-bar-foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-bar-foundation.tsx rename to packages/react-ui-components/src/lib/tabs/tab-bar-foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-bar.tsx b/packages/react-ui-components/src/lib/tabs/tab-bar.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-bar.tsx rename to packages/react-ui-components/src/lib/tabs/tab-bar.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-foundation.tsx b/packages/react-ui-components/src/lib/tabs/tab-foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-foundation.tsx rename to packages/react-ui-components/src/lib/tabs/tab-foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx b/packages/react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx rename to packages/react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-indicator.tsx b/packages/react-ui-components/src/lib/tabs/tab-indicator.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-indicator.tsx rename to packages/react-ui-components/src/lib/tabs/tab-indicator.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx b/packages/react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx rename to packages/react-ui-components/src/lib/tabs/tab-scroller-foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab-scroller.tsx b/packages/react-ui-components/src/lib/tabs/tab-scroller.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab-scroller.tsx rename to packages/react-ui-components/src/lib/tabs/tab-scroller.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tab.tsx b/packages/react-ui-components/src/lib/tabs/tab.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tab.tsx rename to packages/react-ui-components/src/lib/tabs/tab.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tabs-ssr.spec.tsx b/packages/react-ui-components/src/lib/tabs/tabs-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tabs-ssr.spec.tsx rename to packages/react-ui-components/src/lib/tabs/tabs-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tabs.spec.tsx b/packages/react-ui-components/src/lib/tabs/tabs.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tabs.spec.tsx rename to packages/react-ui-components/src/lib/tabs/tabs.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx b/packages/react-ui-components/src/lib/tabs/tabs.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tabs/tabs.story.tsx rename to packages/react-ui-components/src/lib/tabs/tabs.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/README.md b/packages/react-ui-components/src/lib/textfield/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/README.md rename to packages/react-ui-components/src/lib/textfield/README.md diff --git a/packages/mc-react-ui-components/src/lib/textfield/generated-examples.json b/packages/react-ui-components/src/lib/textfield/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/generated-examples.json rename to packages/react-ui-components/src/lib/textfield/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/textfield/generated-props.json b/packages/react-ui-components/src/lib/textfield/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/generated-props.json rename to packages/react-ui-components/src/lib/textfield/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/textfield/index.tsx b/packages/react-ui-components/src/lib/textfield/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/index.tsx rename to packages/react-ui-components/src/lib/textfield/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/styles.tsx b/packages/react-ui-components/src/lib/textfield/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/styles.tsx rename to packages/react-ui-components/src/lib/textfield/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx b/packages/react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx rename to packages/react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx b/packages/react-ui-components/src/lib/textfield/textfield-foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/textfield-foundation.tsx rename to packages/react-ui-components/src/lib/textfield/textfield-foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx b/packages/react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx rename to packages/react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx b/packages/react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx rename to packages/react-ui-components/src/lib/textfield/textfield-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield.spec.tsx b/packages/react-ui-components/src/lib/textfield/textfield.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/textfield.spec.tsx rename to packages/react-ui-components/src/lib/textfield/textfield.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx b/packages/react-ui-components/src/lib/textfield/textfield.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/textfield/textfield.story.tsx rename to packages/react-ui-components/src/lib/textfield/textfield.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/README.md b/packages/react-ui-components/src/lib/theme/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/README.md rename to packages/react-ui-components/src/lib/theme/README.md diff --git a/packages/mc-react-ui-components/src/lib/theme/generated-examples.json b/packages/react-ui-components/src/lib/theme/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/generated-examples.json rename to packages/react-ui-components/src/lib/theme/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/theme/generated-props.json b/packages/react-ui-components/src/lib/theme/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/generated-props.json rename to packages/react-ui-components/src/lib/theme/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/theme/index.tsx b/packages/react-ui-components/src/lib/theme/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/index.tsx rename to packages/react-ui-components/src/lib/theme/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/styles.tsx b/packages/react-ui-components/src/lib/theme/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/styles.tsx rename to packages/react-ui-components/src/lib/theme/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/theme-options.tsx b/packages/react-ui-components/src/lib/theme/theme-options.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/theme-options.tsx rename to packages/react-ui-components/src/lib/theme/theme-options.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/theme-ssr.spec.tsx b/packages/react-ui-components/src/lib/theme/theme-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/theme-ssr.spec.tsx rename to packages/react-ui-components/src/lib/theme/theme-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/theme.css b/packages/react-ui-components/src/lib/theme/theme.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/theme.css rename to packages/react-ui-components/src/lib/theme/theme.css diff --git a/packages/mc-react-ui-components/src/lib/theme/theme.spec.tsx b/packages/react-ui-components/src/lib/theme/theme.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/theme.spec.tsx rename to packages/react-ui-components/src/lib/theme/theme.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/theme.story.tsx b/packages/react-ui-components/src/lib/theme/theme.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/theme.story.tsx rename to packages/react-ui-components/src/lib/theme/theme.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/themes.tsx b/packages/react-ui-components/src/lib/theme/themes.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/themes.tsx rename to packages/react-ui-components/src/lib/theme/themes.tsx diff --git a/packages/mc-react-ui-components/src/lib/theme/utils.tsx b/packages/react-ui-components/src/lib/theme/utils.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/theme/utils.tsx rename to packages/react-ui-components/src/lib/theme/utils.tsx diff --git a/packages/mc-react-ui-components/src/lib/toggleable/README.md b/packages/react-ui-components/src/lib/toggleable/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/toggleable/README.md rename to packages/react-ui-components/src/lib/toggleable/README.md diff --git a/packages/mc-react-ui-components/src/lib/toggleable/generated-examples.json b/packages/react-ui-components/src/lib/toggleable/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/toggleable/generated-examples.json rename to packages/react-ui-components/src/lib/toggleable/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/toggleable/generated-props.json b/packages/react-ui-components/src/lib/toggleable/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/toggleable/generated-props.json rename to packages/react-ui-components/src/lib/toggleable/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/toggleable/index.tsx b/packages/react-ui-components/src/lib/toggleable/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/toggleable/index.tsx rename to packages/react-ui-components/src/lib/toggleable/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/tooltip/README.md b/packages/react-ui-components/src/lib/tooltip/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/README.md rename to packages/react-ui-components/src/lib/tooltip/README.md diff --git a/packages/mc-react-ui-components/src/lib/tooltip/generated-examples.json b/packages/react-ui-components/src/lib/tooltip/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/generated-examples.json rename to packages/react-ui-components/src/lib/tooltip/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/tooltip/generated-props.json b/packages/react-ui-components/src/lib/tooltip/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/generated-props.json rename to packages/react-ui-components/src/lib/tooltip/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/tooltip/index.tsx b/packages/react-ui-components/src/lib/tooltip/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/index.tsx rename to packages/react-ui-components/src/lib/tooltip/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/tooltip/styles.tsx b/packages/react-ui-components/src/lib/tooltip/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/styles.tsx rename to packages/react-ui-components/src/lib/tooltip/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/tooltip/tooltip-ssr.spec.tsx b/packages/react-ui-components/src/lib/tooltip/tooltip-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/tooltip-ssr.spec.tsx rename to packages/react-ui-components/src/lib/tooltip/tooltip-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/tooltip/tooltip.css b/packages/react-ui-components/src/lib/tooltip/tooltip.css similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/tooltip.css rename to packages/react-ui-components/src/lib/tooltip/tooltip.css diff --git a/packages/mc-react-ui-components/src/lib/tooltip/tooltip.spec.tsx b/packages/react-ui-components/src/lib/tooltip/tooltip.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/tooltip.spec.tsx rename to packages/react-ui-components/src/lib/tooltip/tooltip.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx b/packages/react-ui-components/src/lib/tooltip/tooltip.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/tooltip/tooltip.story.tsx rename to packages/react-ui-components/src/lib/tooltip/tooltip.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/README.md b/packages/react-ui-components/src/lib/top-app-bar/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/README.md rename to packages/react-ui-components/src/lib/top-app-bar/README.md diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx b/packages/react-ui-components/src/lib/top-app-bar/foundation.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/foundation.tsx rename to packages/react-ui-components/src/lib/top-app-bar/foundation.tsx diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/generated-examples.json b/packages/react-ui-components/src/lib/top-app-bar/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/generated-examples.json rename to packages/react-ui-components/src/lib/top-app-bar/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/generated-props.json b/packages/react-ui-components/src/lib/top-app-bar/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/generated-props.json rename to packages/react-ui-components/src/lib/top-app-bar/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/index.tsx b/packages/react-ui-components/src/lib/top-app-bar/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/index.tsx rename to packages/react-ui-components/src/lib/top-app-bar/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx b/packages/react-ui-components/src/lib/top-app-bar/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/styles.tsx rename to packages/react-ui-components/src/lib/top-app-bar/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx b/packages/react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx rename to packages/react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx b/packages/react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx rename to packages/react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx b/packages/react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx rename to packages/react-ui-components/src/lib/top-app-bar/top-app-bar.story.tsx diff --git a/packages/mc-react-ui-components/src/lib/types/generated-examples.json b/packages/react-ui-components/src/lib/types/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/types/generated-examples.json rename to packages/react-ui-components/src/lib/types/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/types/generated-props.json b/packages/react-ui-components/src/lib/types/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/types/generated-props.json rename to packages/react-ui-components/src/lib/types/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/types/index.tsx b/packages/react-ui-components/src/lib/types/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/types/index.tsx rename to packages/react-ui-components/src/lib/types/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/typography/README.md b/packages/react-ui-components/src/lib/typography/README.md similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/README.md rename to packages/react-ui-components/src/lib/typography/README.md diff --git a/packages/mc-react-ui-components/src/lib/typography/generated-examples.json b/packages/react-ui-components/src/lib/typography/generated-examples.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/generated-examples.json rename to packages/react-ui-components/src/lib/typography/generated-examples.json diff --git a/packages/mc-react-ui-components/src/lib/typography/generated-props.json b/packages/react-ui-components/src/lib/typography/generated-props.json similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/generated-props.json rename to packages/react-ui-components/src/lib/typography/generated-props.json diff --git a/packages/mc-react-ui-components/src/lib/typography/index.tsx b/packages/react-ui-components/src/lib/typography/index.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/index.tsx rename to packages/react-ui-components/src/lib/typography/index.tsx diff --git a/packages/mc-react-ui-components/src/lib/typography/styles.tsx b/packages/react-ui-components/src/lib/typography/styles.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/styles.tsx rename to packages/react-ui-components/src/lib/typography/styles.tsx diff --git a/packages/mc-react-ui-components/src/lib/typography/typography-ssr.spec.tsx b/packages/react-ui-components/src/lib/typography/typography-ssr.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/typography-ssr.spec.tsx rename to packages/react-ui-components/src/lib/typography/typography-ssr.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/typography/typography.spec.tsx b/packages/react-ui-components/src/lib/typography/typography.spec.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/typography.spec.tsx rename to packages/react-ui-components/src/lib/typography/typography.spec.tsx diff --git a/packages/mc-react-ui-components/src/lib/typography/typography.story.tsx b/packages/react-ui-components/src/lib/typography/typography.story.tsx similarity index 100% rename from packages/mc-react-ui-components/src/lib/typography/typography.story.tsx rename to packages/react-ui-components/src/lib/typography/typography.story.tsx diff --git a/packages/mc-react-ui-components/src/react-app-env.d.ts b/packages/react-ui-components/src/react-app-env.d.ts similarity index 100% rename from packages/mc-react-ui-components/src/react-app-env.d.ts rename to packages/react-ui-components/src/react-app-env.d.ts diff --git a/packages/mc-react-ui-components/src/setupTests.ts b/packages/react-ui-components/src/setupTests.ts similarity index 100% rename from packages/mc-react-ui-components/src/setupTests.ts rename to packages/react-ui-components/src/setupTests.ts diff --git a/packages/mc-react-ui-components/tsbuildconfig.json b/packages/react-ui-components/tsbuildconfig.json similarity index 100% rename from packages/mc-react-ui-components/tsbuildconfig.json rename to packages/react-ui-components/tsbuildconfig.json diff --git a/packages/mc-react-ui-components/tsconfig.json b/packages/react-ui-components/tsconfig.json similarity index 100% rename from packages/mc-react-ui-components/tsconfig.json rename to packages/react-ui-components/tsconfig.json diff --git a/packages/mc-react-ui-components/yarn.lock b/packages/react-ui-components/yarn.lock similarity index 100% rename from packages/mc-react-ui-components/yarn.lock rename to packages/react-ui-components/yarn.lock diff --git a/packages/mc-wc-ui-components-react/.gitignore b/packages/wc-ui-components-react/.gitignore similarity index 100% rename from packages/mc-wc-ui-components-react/.gitignore rename to packages/wc-ui-components-react/.gitignore diff --git a/packages/mc-wc-ui-components-react/LICENSE b/packages/wc-ui-components-react/LICENSE similarity index 100% rename from packages/mc-wc-ui-components-react/LICENSE rename to packages/wc-ui-components-react/LICENSE diff --git a/packages/mc-wc-ui-components-react/README.md b/packages/wc-ui-components-react/README.md similarity index 100% rename from packages/mc-wc-ui-components-react/README.md rename to packages/wc-ui-components-react/README.md diff --git a/packages/mc-wc-ui-components-react/package.json b/packages/wc-ui-components-react/package.json similarity index 100% rename from packages/mc-wc-ui-components-react/package.json rename to packages/wc-ui-components-react/package.json diff --git a/packages/mc-wc-ui-components-react/src/components.ts b/packages/wc-ui-components-react/src/components.ts similarity index 100% rename from packages/mc-wc-ui-components-react/src/components.ts rename to packages/wc-ui-components-react/src/components.ts diff --git a/packages/mc-wc-ui-components-react/src/index.ts b/packages/wc-ui-components-react/src/index.ts similarity index 100% rename from packages/mc-wc-ui-components-react/src/index.ts rename to packages/wc-ui-components-react/src/index.ts diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/createComponent.tsx b/packages/wc-ui-components-react/src/react-component-lib/createComponent.tsx similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/createComponent.tsx rename to packages/wc-ui-components-react/src/react-component-lib/createComponent.tsx diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx b/packages/wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx rename to packages/wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/index.ts b/packages/wc-ui-components-react/src/react-component-lib/index.ts similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/index.ts rename to packages/wc-ui-components-react/src/react-component-lib/index.ts diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/interfaces.ts b/packages/wc-ui-components-react/src/react-component-lib/interfaces.ts similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/interfaces.ts rename to packages/wc-ui-components-react/src/react-component-lib/interfaces.ts diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/attachProps.ts b/packages/wc-ui-components-react/src/react-component-lib/utils/attachProps.ts similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/utils/attachProps.ts rename to packages/wc-ui-components-react/src/react-component-lib/utils/attachProps.ts diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/case.ts b/packages/wc-ui-components-react/src/react-component-lib/utils/case.ts similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/utils/case.ts rename to packages/wc-ui-components-react/src/react-component-lib/utils/case.ts diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/dev.ts b/packages/wc-ui-components-react/src/react-component-lib/utils/dev.ts similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/utils/dev.ts rename to packages/wc-ui-components-react/src/react-component-lib/utils/dev.ts diff --git a/packages/mc-wc-ui-components-react/src/react-component-lib/utils/index.tsx b/packages/wc-ui-components-react/src/react-component-lib/utils/index.tsx similarity index 100% rename from packages/mc-wc-ui-components-react/src/react-component-lib/utils/index.tsx rename to packages/wc-ui-components-react/src/react-component-lib/utils/index.tsx diff --git a/packages/mc-wc-ui-components-react/tsconfig.json b/packages/wc-ui-components-react/tsconfig.json similarity index 100% rename from packages/mc-wc-ui-components-react/tsconfig.json rename to packages/wc-ui-components-react/tsconfig.json diff --git a/packages/mc-wc-ui-components/.editorconfig b/packages/wc-ui-components/.editorconfig similarity index 100% rename from packages/mc-wc-ui-components/.editorconfig rename to packages/wc-ui-components/.editorconfig diff --git a/packages/mc-wc-ui-components/.gitignore b/packages/wc-ui-components/.gitignore similarity index 100% rename from packages/mc-wc-ui-components/.gitignore rename to packages/wc-ui-components/.gitignore diff --git a/packages/mc-wc-ui-components/LICENSE b/packages/wc-ui-components/LICENSE similarity index 100% rename from packages/mc-wc-ui-components/LICENSE rename to packages/wc-ui-components/LICENSE diff --git a/packages/mc-wc-ui-components/package.json b/packages/wc-ui-components/package.json similarity index 93% rename from packages/mc-wc-ui-components/package.json rename to packages/wc-ui-components/package.json index 7c73b865..06b69286 100644 --- a/packages/mc-wc-ui-components/package.json +++ b/packages/wc-ui-components/package.json @@ -2,6 +2,7 @@ "name": "@map-colonies/ui-components", "version": "0.0.1", "description": "Stencil Component Starter", + "private": true, "main": "dist/index.js", "module": "dist/index.mjs", "es2015": "dist/esm/index.mjs", @@ -9,7 +10,7 @@ "types": "dist/types/index.d.ts", "collection": "dist/collection/collection-manifest.json", "collection:main": "dist/collection/index.js", - "unpkg": "dist/mc-wc-ui-components/mc-wc-ui-components.js", + "unpkg": "dist/wc-ui-components/wc-ui-components.js", "files": [ "dist/", "loader/" diff --git a/packages/mc-wc-ui-components/readme.md b/packages/wc-ui-components/readme.md similarity index 100% rename from packages/mc-wc-ui-components/readme.md rename to packages/wc-ui-components/readme.md diff --git a/packages/mc-wc-ui-components/src/components.d.ts b/packages/wc-ui-components/src/components.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components.d.ts rename to packages/wc-ui-components/src/components.d.ts diff --git a/packages/mc-wc-ui-components/src/components/button/mwc-button-style.ts b/packages/wc-ui-components/src/components/button/mwc-button-style.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/button/mwc-button-style.ts rename to packages/wc-ui-components/src/components/button/mwc-button-style.ts diff --git a/packages/mc-wc-ui-components/src/components/button/mwc-button-types.ts b/packages/wc-ui-components/src/components/button/mwc-button-types.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/button/mwc-button-types.ts rename to packages/wc-ui-components/src/components/button/mwc-button-types.ts diff --git a/packages/mc-wc-ui-components/src/components/button/mwc-button.tsx b/packages/wc-ui-components/src/components/button/mwc-button.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/button/mwc-button.tsx rename to packages/wc-ui-components/src/components/button/mwc-button.tsx diff --git a/packages/mc-wc-ui-components/src/components/button/readme.md b/packages/wc-ui-components/src/components/button/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/button/readme.md rename to packages/wc-ui-components/src/components/button/readme.md diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.scss b/packages/wc-ui-components/src/components/card/mwc-card-actions.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-actions.scss rename to packages/wc-ui-components/src/components/card/mwc-card-actions.scss diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-actions.tsx b/packages/wc-ui-components/src/components/card/mwc-card-actions.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-actions.tsx rename to packages/wc-ui-components/src/components/card/mwc-card-actions.tsx diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-content-style.ts b/packages/wc-ui-components/src/components/card/mwc-card-content-style.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-content-style.ts rename to packages/wc-ui-components/src/components/card/mwc-card-content-style.ts diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-content.tsx b/packages/wc-ui-components/src/components/card/mwc-card-content.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-content.tsx rename to packages/wc-ui-components/src/components/card/mwc-card-content.tsx diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-header.scss b/packages/wc-ui-components/src/components/card/mwc-card-header.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-header.scss rename to packages/wc-ui-components/src/components/card/mwc-card-header.scss diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-header.tsx b/packages/wc-ui-components/src/components/card/mwc-card-header.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-header.tsx rename to packages/wc-ui-components/src/components/card/mwc-card-header.tsx diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-media-style.ts b/packages/wc-ui-components/src/components/card/mwc-card-media-style.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-media-style.ts rename to packages/wc-ui-components/src/components/card/mwc-card-media-style.ts diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-media.scss b/packages/wc-ui-components/src/components/card/mwc-card-media.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-media.scss rename to packages/wc-ui-components/src/components/card/mwc-card-media.scss diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card-media.tsx b/packages/wc-ui-components/src/components/card/mwc-card-media.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card-media.tsx rename to packages/wc-ui-components/src/components/card/mwc-card-media.tsx diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card.scss b/packages/wc-ui-components/src/components/card/mwc-card.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card.scss rename to packages/wc-ui-components/src/components/card/mwc-card.scss diff --git a/packages/mc-wc-ui-components/src/components/card/mwc-card.tsx b/packages/wc-ui-components/src/components/card/mwc-card.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/mwc-card.tsx rename to packages/wc-ui-components/src/components/card/mwc-card.tsx diff --git a/packages/mc-wc-ui-components/src/components/card/readme.md b/packages/wc-ui-components/src/components/card/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/card/readme.md rename to packages/wc-ui-components/src/components/card/readme.md diff --git a/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.scss b/packages/wc-ui-components/src/components/checkbox/mwc-checkbox.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.scss rename to packages/wc-ui-components/src/components/checkbox/mwc-checkbox.scss diff --git a/packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.tsx b/packages/wc-ui-components/src/components/checkbox/mwc-checkbox.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/checkbox/mwc-checkbox.tsx rename to packages/wc-ui-components/src/components/checkbox/mwc-checkbox.tsx diff --git a/packages/mc-wc-ui-components/src/components/checkbox/readme.md b/packages/wc-ui-components/src/components/checkbox/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/checkbox/readme.md rename to packages/wc-ui-components/src/components/checkbox/readme.md diff --git a/packages/mc-wc-ui-components/src/components/container/mwc-container.tsx b/packages/wc-ui-components/src/components/container/mwc-container.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/container/mwc-container.tsx rename to packages/wc-ui-components/src/components/container/mwc-container.tsx diff --git a/packages/mc-wc-ui-components/src/components/container/readme.md b/packages/wc-ui-components/src/components/container/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/container/readme.md rename to packages/wc-ui-components/src/components/container/readme.md diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.scss b/packages/wc-ui-components/src/components/dialog/mwc-dialog-body.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.scss rename to packages/wc-ui-components/src/components/dialog/mwc-dialog-body.scss diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.tsx b/packages/wc-ui-components/src/components/dialog/mwc-dialog-body.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-body.tsx rename to packages/wc-ui-components/src/components/dialog/mwc-dialog-body.tsx diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.scss b/packages/wc-ui-components/src/components/dialog/mwc-dialog-footer.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.scss rename to packages/wc-ui-components/src/components/dialog/mwc-dialog-footer.scss diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx b/packages/wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx rename to packages/wc-ui-components/src/components/dialog/mwc-dialog-footer.tsx diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.scss b/packages/wc-ui-components/src/components/dialog/mwc-dialog-header.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.scss rename to packages/wc-ui-components/src/components/dialog/mwc-dialog-header.scss diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.tsx b/packages/wc-ui-components/src/components/dialog/mwc-dialog-header.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog-header.tsx rename to packages/wc-ui-components/src/components/dialog/mwc-dialog-header.tsx diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.scss b/packages/wc-ui-components/src/components/dialog/mwc-dialog.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.scss rename to packages/wc-ui-components/src/components/dialog/mwc-dialog.scss diff --git a/packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.tsx b/packages/wc-ui-components/src/components/dialog/mwc-dialog.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/mwc-dialog.tsx rename to packages/wc-ui-components/src/components/dialog/mwc-dialog.tsx diff --git a/packages/mc-wc-ui-components/src/components/dialog/readme.md b/packages/wc-ui-components/src/components/dialog/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/dialog/readme.md rename to packages/wc-ui-components/src/components/dialog/readme.md diff --git a/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.scss b/packages/wc-ui-components/src/components/drawer/mwc-drawer.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.scss rename to packages/wc-ui-components/src/components/drawer/mwc-drawer.scss diff --git a/packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.tsx b/packages/wc-ui-components/src/components/drawer/mwc-drawer.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/drawer/mwc-drawer.tsx rename to packages/wc-ui-components/src/components/drawer/mwc-drawer.tsx diff --git a/packages/mc-wc-ui-components/src/components/drawer/readme.md b/packages/wc-ui-components/src/components/drawer/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/drawer/readme.md rename to packages/wc-ui-components/src/components/drawer/readme.md diff --git a/packages/mc-wc-ui-components/src/components/fab/mwc-fab.scss b/packages/wc-ui-components/src/components/fab/mwc-fab.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/fab/mwc-fab.scss rename to packages/wc-ui-components/src/components/fab/mwc-fab.scss diff --git a/packages/mc-wc-ui-components/src/components/fab/mwc-fab.tsx b/packages/wc-ui-components/src/components/fab/mwc-fab.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/fab/mwc-fab.tsx rename to packages/wc-ui-components/src/components/fab/mwc-fab.tsx diff --git a/packages/mc-wc-ui-components/src/components/fab/readme.md b/packages/wc-ui-components/src/components/fab/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/fab/readme.md rename to packages/wc-ui-components/src/components/fab/readme.md diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss rename to packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx rename to packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.scss b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.scss rename to packages/wc-ui-components/src/components/grid-list/mwc-grid-list.scss diff --git a/packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.tsx b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/grid-list/mwc-grid-list.tsx rename to packages/wc-ui-components/src/components/grid-list/mwc-grid-list.tsx diff --git a/packages/mc-wc-ui-components/src/components/grid-list/readme.md b/packages/wc-ui-components/src/components/grid-list/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/grid-list/readme.md rename to packages/wc-ui-components/src/components/grid-list/readme.md diff --git a/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss b/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss rename to packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss diff --git a/packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx b/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx rename to packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx diff --git a/packages/mc-wc-ui-components/src/components/icon-toggle/readme.md b/packages/wc-ui-components/src/components/icon-toggle/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/icon-toggle/readme.md rename to packages/wc-ui-components/src/components/icon-toggle/readme.md diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list-item.scss b/packages/wc-ui-components/src/components/list/mwc-list-item.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/list/mwc-list-item.scss rename to packages/wc-ui-components/src/components/list/mwc-list-item.scss diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list-item.tsx b/packages/wc-ui-components/src/components/list/mwc-list-item.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/list/mwc-list-item.tsx rename to packages/wc-ui-components/src/components/list/mwc-list-item.tsx diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list-style.ts b/packages/wc-ui-components/src/components/list/mwc-list-style.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/list/mwc-list-style.ts rename to packages/wc-ui-components/src/components/list/mwc-list-style.ts diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list.scss b/packages/wc-ui-components/src/components/list/mwc-list.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/list/mwc-list.scss rename to packages/wc-ui-components/src/components/list/mwc-list.scss diff --git a/packages/mc-wc-ui-components/src/components/list/mwc-list.tsx b/packages/wc-ui-components/src/components/list/mwc-list.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/list/mwc-list.tsx rename to packages/wc-ui-components/src/components/list/mwc-list.tsx diff --git a/packages/mc-wc-ui-components/src/components/list/readme.md b/packages/wc-ui-components/src/components/list/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/list/readme.md rename to packages/wc-ui-components/src/components/list/readme.md diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.scss b/packages/wc-ui-components/src/components/menu/mwc-menu-item.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.scss rename to packages/wc-ui-components/src/components/menu/mwc-menu-item.scss diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.tsx b/packages/wc-ui-components/src/components/menu/mwc-menu-item.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/menu/mwc-menu-item.tsx rename to packages/wc-ui-components/src/components/menu/mwc-menu-item.tsx diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu.scss b/packages/wc-ui-components/src/components/menu/mwc-menu.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/menu/mwc-menu.scss rename to packages/wc-ui-components/src/components/menu/mwc-menu.scss diff --git a/packages/mc-wc-ui-components/src/components/menu/mwc-menu.tsx b/packages/wc-ui-components/src/components/menu/mwc-menu.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/menu/mwc-menu.tsx rename to packages/wc-ui-components/src/components/menu/mwc-menu.tsx diff --git a/packages/mc-wc-ui-components/src/components/menu/readme.md b/packages/wc-ui-components/src/components/menu/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/menu/readme.md rename to packages/wc-ui-components/src/components/menu/readme.md diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.css b/packages/wc-ui-components/src/components/my-component/my-component.css similarity index 100% rename from packages/mc-wc-ui-components/src/components/my-component/my-component.css rename to packages/wc-ui-components/src/components/my-component/my-component.css diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.e2e.ts b/packages/wc-ui-components/src/components/my-component/my-component.e2e.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/my-component/my-component.e2e.ts rename to packages/wc-ui-components/src/components/my-component/my-component.e2e.ts diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.spec.ts b/packages/wc-ui-components/src/components/my-component/my-component.spec.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/my-component/my-component.spec.ts rename to packages/wc-ui-components/src/components/my-component/my-component.spec.ts diff --git a/packages/mc-wc-ui-components/src/components/my-component/my-component.tsx b/packages/wc-ui-components/src/components/my-component/my-component.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/my-component/my-component.tsx rename to packages/wc-ui-components/src/components/my-component/my-component.tsx diff --git a/packages/mc-wc-ui-components/src/components/my-component/readme.md b/packages/wc-ui-components/src/components/my-component/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/my-component/readme.md rename to packages/wc-ui-components/src/components/my-component/readme.md diff --git a/packages/mc-wc-ui-components/src/components/paper/mwc-paper-style.ts b/packages/wc-ui-components/src/components/paper/mwc-paper-style.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/paper/mwc-paper-style.ts rename to packages/wc-ui-components/src/components/paper/mwc-paper-style.ts diff --git a/packages/mc-wc-ui-components/src/components/paper/mwc-paper.tsx b/packages/wc-ui-components/src/components/paper/mwc-paper.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/paper/mwc-paper.tsx rename to packages/wc-ui-components/src/components/paper/mwc-paper.tsx diff --git a/packages/mc-wc-ui-components/src/components/paper/readme.md b/packages/wc-ui-components/src/components/paper/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/paper/readme.md rename to packages/wc-ui-components/src/components/paper/readme.md diff --git a/packages/mc-wc-ui-components/src/components/progress/mwc-progress.scss b/packages/wc-ui-components/src/components/progress/mwc-progress.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/progress/mwc-progress.scss rename to packages/wc-ui-components/src/components/progress/mwc-progress.scss diff --git a/packages/mc-wc-ui-components/src/components/progress/mwc-progress.tsx b/packages/wc-ui-components/src/components/progress/mwc-progress.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/progress/mwc-progress.tsx rename to packages/wc-ui-components/src/components/progress/mwc-progress.tsx diff --git a/packages/mc-wc-ui-components/src/components/progress/readme.md b/packages/wc-ui-components/src/components/progress/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/progress/readme.md rename to packages/wc-ui-components/src/components/progress/readme.md diff --git a/packages/mc-wc-ui-components/src/components/radio/mwc-radio.scss b/packages/wc-ui-components/src/components/radio/mwc-radio.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/radio/mwc-radio.scss rename to packages/wc-ui-components/src/components/radio/mwc-radio.scss diff --git a/packages/mc-wc-ui-components/src/components/radio/mwc-radio.tsx b/packages/wc-ui-components/src/components/radio/mwc-radio.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/radio/mwc-radio.tsx rename to packages/wc-ui-components/src/components/radio/mwc-radio.tsx diff --git a/packages/mc-wc-ui-components/src/components/radio/readme.md b/packages/wc-ui-components/src/components/radio/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/radio/readme.md rename to packages/wc-ui-components/src/components/radio/readme.md diff --git a/packages/mc-wc-ui-components/src/components/select/mwc-select.scss b/packages/wc-ui-components/src/components/select/mwc-select.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/select/mwc-select.scss rename to packages/wc-ui-components/src/components/select/mwc-select.scss diff --git a/packages/mc-wc-ui-components/src/components/select/mwc-select.tsx b/packages/wc-ui-components/src/components/select/mwc-select.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/select/mwc-select.tsx rename to packages/wc-ui-components/src/components/select/mwc-select.tsx diff --git a/packages/mc-wc-ui-components/src/components/select/readme.md b/packages/wc-ui-components/src/components/select/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/select/readme.md rename to packages/wc-ui-components/src/components/select/readme.md diff --git a/packages/mc-wc-ui-components/src/components/slider/mwc-slider.scss b/packages/wc-ui-components/src/components/slider/mwc-slider.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/slider/mwc-slider.scss rename to packages/wc-ui-components/src/components/slider/mwc-slider.scss diff --git a/packages/mc-wc-ui-components/src/components/slider/mwc-slider.tsx b/packages/wc-ui-components/src/components/slider/mwc-slider.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/slider/mwc-slider.tsx rename to packages/wc-ui-components/src/components/slider/mwc-slider.tsx diff --git a/packages/mc-wc-ui-components/src/components/slider/readme.md b/packages/wc-ui-components/src/components/slider/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/slider/readme.md rename to packages/wc-ui-components/src/components/slider/readme.md diff --git a/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.scss b/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.scss rename to packages/wc-ui-components/src/components/snackbar/mwc-snackbar.scss diff --git a/packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.tsx b/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/snackbar/mwc-snackbar.tsx rename to packages/wc-ui-components/src/components/snackbar/mwc-snackbar.tsx diff --git a/packages/mc-wc-ui-components/src/components/snackbar/readme.md b/packages/wc-ui-components/src/components/snackbar/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/snackbar/readme.md rename to packages/wc-ui-components/src/components/snackbar/readme.md diff --git a/packages/mc-wc-ui-components/src/components/styles/breakpoints.d.ts b/packages/wc-ui-components/src/components/styles/breakpoints.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/breakpoints.d.ts rename to packages/wc-ui-components/src/components/styles/breakpoints.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/color-manipulator.ts b/packages/wc-ui-components/src/components/styles/color-manipulator.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/color-manipulator.ts rename to packages/wc-ui-components/src/components/styles/color-manipulator.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-breakpoints.ts b/packages/wc-ui-components/src/components/styles/create-breakpoints.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-breakpoints.ts rename to packages/wc-ui-components/src/components/styles/create-breakpoints.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-mixins.ts b/packages/wc-ui-components/src/components/styles/create-mixins.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-mixins.ts rename to packages/wc-ui-components/src/components/styles/create-mixins.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-palette.ts b/packages/wc-ui-components/src/components/styles/create-palette.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-palette.ts rename to packages/wc-ui-components/src/components/styles/create-palette.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-shadows.ts b/packages/wc-ui-components/src/components/styles/create-shadows.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-shadows.ts rename to packages/wc-ui-components/src/components/styles/create-shadows.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-spacing.ts b/packages/wc-ui-components/src/components/styles/create-spacing.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-spacing.ts rename to packages/wc-ui-components/src/components/styles/create-spacing.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-theme.ts b/packages/wc-ui-components/src/components/styles/create-theme.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-theme.ts rename to packages/wc-ui-components/src/components/styles/create-theme.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-transitions.ts b/packages/wc-ui-components/src/components/styles/create-transitions.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-transitions.ts rename to packages/wc-ui-components/src/components/styles/create-transitions.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-typography.ts b/packages/wc-ui-components/src/components/styles/create-typography.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-typography.ts rename to packages/wc-ui-components/src/components/styles/create-typography.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/create-zindex.ts b/packages/wc-ui-components/src/components/styles/create-zindex.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/create-zindex.ts rename to packages/wc-ui-components/src/components/styles/create-zindex.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/cssproperties.d.ts b/packages/wc-ui-components/src/components/styles/cssproperties.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/cssproperties.d.ts rename to packages/wc-ui-components/src/components/styles/cssproperties.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/mixins.d.ts b/packages/wc-ui-components/src/components/styles/mixins.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/mixins.d.ts rename to packages/wc-ui-components/src/components/styles/mixins.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/setup-jss.ts b/packages/wc-ui-components/src/components/styles/setup-jss.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/setup-jss.ts rename to packages/wc-ui-components/src/components/styles/setup-jss.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/shadows.d.ts b/packages/wc-ui-components/src/components/styles/shadows.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/shadows.d.ts rename to packages/wc-ui-components/src/components/styles/shadows.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/spacing.d.ts b/packages/wc-ui-components/src/components/styles/spacing.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/spacing.d.ts rename to packages/wc-ui-components/src/components/styles/spacing.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/theme.d.ts b/packages/wc-ui-components/src/components/styles/theme.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/theme.d.ts rename to packages/wc-ui-components/src/components/styles/theme.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/transition.d.ts b/packages/wc-ui-components/src/components/styles/transition.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/transition.d.ts rename to packages/wc-ui-components/src/components/styles/transition.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/amber.ts b/packages/wc-ui-components/src/components/styles/types/colors/amber.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/amber.ts rename to packages/wc-ui-components/src/components/styles/types/colors/amber.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/blue.ts b/packages/wc-ui-components/src/components/styles/types/colors/blue.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/blue.ts rename to packages/wc-ui-components/src/components/styles/types/colors/blue.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/blueGrey.ts b/packages/wc-ui-components/src/components/styles/types/colors/blueGrey.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/blueGrey.ts rename to packages/wc-ui-components/src/components/styles/types/colors/blueGrey.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/brown.ts b/packages/wc-ui-components/src/components/styles/types/colors/brown.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/brown.ts rename to packages/wc-ui-components/src/components/styles/types/colors/brown.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/color.ts b/packages/wc-ui-components/src/components/styles/types/colors/color.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/color.ts rename to packages/wc-ui-components/src/components/styles/types/colors/color.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/common.ts b/packages/wc-ui-components/src/components/styles/types/colors/common.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/common.ts rename to packages/wc-ui-components/src/components/styles/types/colors/common.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/cyan.ts b/packages/wc-ui-components/src/components/styles/types/colors/cyan.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/cyan.ts rename to packages/wc-ui-components/src/components/styles/types/colors/cyan.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/deepOrange.ts b/packages/wc-ui-components/src/components/styles/types/colors/deepOrange.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/deepOrange.ts rename to packages/wc-ui-components/src/components/styles/types/colors/deepOrange.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/deepPurple.ts b/packages/wc-ui-components/src/components/styles/types/colors/deepPurple.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/deepPurple.ts rename to packages/wc-ui-components/src/components/styles/types/colors/deepPurple.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/green.ts b/packages/wc-ui-components/src/components/styles/types/colors/green.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/green.ts rename to packages/wc-ui-components/src/components/styles/types/colors/green.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/grey.ts b/packages/wc-ui-components/src/components/styles/types/colors/grey.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/grey.ts rename to packages/wc-ui-components/src/components/styles/types/colors/grey.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/index.ts b/packages/wc-ui-components/src/components/styles/types/colors/index.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/index.ts rename to packages/wc-ui-components/src/components/styles/types/colors/index.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/indigo.ts b/packages/wc-ui-components/src/components/styles/types/colors/indigo.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/indigo.ts rename to packages/wc-ui-components/src/components/styles/types/colors/indigo.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/lightBlue.ts b/packages/wc-ui-components/src/components/styles/types/colors/lightBlue.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/lightBlue.ts rename to packages/wc-ui-components/src/components/styles/types/colors/lightBlue.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/lightGreen.ts b/packages/wc-ui-components/src/components/styles/types/colors/lightGreen.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/lightGreen.ts rename to packages/wc-ui-components/src/components/styles/types/colors/lightGreen.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/lime.ts b/packages/wc-ui-components/src/components/styles/types/colors/lime.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/lime.ts rename to packages/wc-ui-components/src/components/styles/types/colors/lime.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/orange.ts b/packages/wc-ui-components/src/components/styles/types/colors/orange.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/orange.ts rename to packages/wc-ui-components/src/components/styles/types/colors/orange.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/pink.ts b/packages/wc-ui-components/src/components/styles/types/colors/pink.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/pink.ts rename to packages/wc-ui-components/src/components/styles/types/colors/pink.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/purple.ts b/packages/wc-ui-components/src/components/styles/types/colors/purple.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/purple.ts rename to packages/wc-ui-components/src/components/styles/types/colors/purple.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/red.ts b/packages/wc-ui-components/src/components/styles/types/colors/red.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/red.ts rename to packages/wc-ui-components/src/components/styles/types/colors/red.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/teal.ts b/packages/wc-ui-components/src/components/styles/types/colors/teal.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/teal.ts rename to packages/wc-ui-components/src/components/styles/types/colors/teal.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/colors/yellow.ts b/packages/wc-ui-components/src/components/styles/types/colors/yellow.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/colors/yellow.ts rename to packages/wc-ui-components/src/components/styles/types/colors/yellow.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/types/palette.d.ts b/packages/wc-ui-components/src/components/styles/types/palette.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/types/palette.d.ts rename to packages/wc-ui-components/src/components/styles/types/palette.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/typography.d.ts b/packages/wc-ui-components/src/components/styles/typography.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/typography.d.ts rename to packages/wc-ui-components/src/components/styles/typography.d.ts diff --git a/packages/mc-wc-ui-components/src/components/styles/zindex.d.ts b/packages/wc-ui-components/src/components/styles/zindex.d.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/styles/zindex.d.ts rename to packages/wc-ui-components/src/components/styles/zindex.d.ts diff --git a/packages/mc-wc-ui-components/src/components/switch/mwc-switch.scss b/packages/wc-ui-components/src/components/switch/mwc-switch.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/switch/mwc-switch.scss rename to packages/wc-ui-components/src/components/switch/mwc-switch.scss diff --git a/packages/mc-wc-ui-components/src/components/switch/mwc-switch.tsx b/packages/wc-ui-components/src/components/switch/mwc-switch.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/switch/mwc-switch.tsx rename to packages/wc-ui-components/src/components/switch/mwc-switch.tsx diff --git a/packages/mc-wc-ui-components/src/components/switch/readme.md b/packages/wc-ui-components/src/components/switch/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/switch/readme.md rename to packages/wc-ui-components/src/components/switch/readme.md diff --git a/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.scss b/packages/wc-ui-components/src/components/tabbar/mwc-tabbar.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.scss rename to packages/wc-ui-components/src/components/tabbar/mwc-tabbar.scss diff --git a/packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.tsx b/packages/wc-ui-components/src/components/tabbar/mwc-tabbar.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/tabbar/mwc-tabbar.tsx rename to packages/wc-ui-components/src/components/tabbar/mwc-tabbar.tsx diff --git a/packages/mc-wc-ui-components/src/components/tabbar/readme.md b/packages/wc-ui-components/src/components/tabbar/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/tabbar/readme.md rename to packages/wc-ui-components/src/components/tabbar/readme.md diff --git a/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.scss b/packages/wc-ui-components/src/components/textfield/mwc-textfield.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.scss rename to packages/wc-ui-components/src/components/textfield/mwc-textfield.scss diff --git a/packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.tsx b/packages/wc-ui-components/src/components/textfield/mwc-textfield.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/textfield/mwc-textfield.tsx rename to packages/wc-ui-components/src/components/textfield/mwc-textfield.tsx diff --git a/packages/mc-wc-ui-components/src/components/textfield/readme.md b/packages/wc-ui-components/src/components/textfield/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/textfield/readme.md rename to packages/wc-ui-components/src/components/textfield/readme.md diff --git a/packages/mc-wc-ui-components/src/components/theme/mwc-theme.scss b/packages/wc-ui-components/src/components/theme/mwc-theme.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/theme/mwc-theme.scss rename to packages/wc-ui-components/src/components/theme/mwc-theme.scss diff --git a/packages/mc-wc-ui-components/src/components/theme/mwc-theme.style.ts b/packages/wc-ui-components/src/components/theme/mwc-theme.style.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/theme/mwc-theme.style.ts rename to packages/wc-ui-components/src/components/theme/mwc-theme.style.ts diff --git a/packages/mc-wc-ui-components/src/components/theme/mwc-theme.tsx b/packages/wc-ui-components/src/components/theme/mwc-theme.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/theme/mwc-theme.tsx rename to packages/wc-ui-components/src/components/theme/mwc-theme.tsx diff --git a/packages/mc-wc-ui-components/src/components/theme/readme.md b/packages/wc-ui-components/src/components/theme/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/theme/readme.md rename to packages/wc-ui-components/src/components/theme/readme.md diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx b/packages/wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx rename to packages/wc-ui-components/src/components/toolbar/mwc-content-for-toolbar.tsx diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss b/packages/wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss rename to packages/wc-ui-components/src/components/toolbar/mwc-toolbar-icon.scss diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx b/packages/wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx rename to packages/wc-ui-components/src/components/toolbar/mwc-toolbar-icon.tsx diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx b/packages/wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx rename to packages/wc-ui-components/src/components/toolbar/mwc-toolbar-section.tsx diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx b/packages/wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx rename to packages/wc-ui-components/src/components/toolbar/mwc-toolbar-title.tsx diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.scss b/packages/wc-ui-components/src/components/toolbar/mwc-toolbar.scss similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.scss rename to packages/wc-ui-components/src/components/toolbar/mwc-toolbar.scss diff --git a/packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.tsx b/packages/wc-ui-components/src/components/toolbar/mwc-toolbar.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/mwc-toolbar.tsx rename to packages/wc-ui-components/src/components/toolbar/mwc-toolbar.tsx diff --git a/packages/mc-wc-ui-components/src/components/toolbar/readme.md b/packages/wc-ui-components/src/components/toolbar/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/toolbar/readme.md rename to packages/wc-ui-components/src/components/toolbar/readme.md diff --git a/packages/mc-wc-ui-components/src/components/typography/mwc-typography.style.ts b/packages/wc-ui-components/src/components/typography/mwc-typography.style.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/typography/mwc-typography.style.ts rename to packages/wc-ui-components/src/components/typography/mwc-typography.style.ts diff --git a/packages/mc-wc-ui-components/src/components/typography/mwc-typography.tsx b/packages/wc-ui-components/src/components/typography/mwc-typography.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/typography/mwc-typography.tsx rename to packages/wc-ui-components/src/components/typography/mwc-typography.tsx diff --git a/packages/mc-wc-ui-components/src/components/typography/mwc-typograpy-types.ts b/packages/wc-ui-components/src/components/typography/mwc-typograpy-types.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/typography/mwc-typograpy-types.ts rename to packages/wc-ui-components/src/components/typography/mwc-typograpy-types.ts diff --git a/packages/mc-wc-ui-components/src/components/typography/readme.md b/packages/wc-ui-components/src/components/typography/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/typography/readme.md rename to packages/wc-ui-components/src/components/typography/readme.md diff --git a/packages/mc-wc-ui-components/src/components/util/mwc-util.ts b/packages/wc-ui-components/src/components/util/mwc-util.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/util/mwc-util.ts rename to packages/wc-ui-components/src/components/util/mwc-util.ts diff --git a/packages/mc-wc-ui-components/src/components/util/ripple.ts b/packages/wc-ui-components/src/components/util/ripple.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/util/ripple.ts rename to packages/wc-ui-components/src/components/util/ripple.ts diff --git a/packages/mc-wc-ui-components/src/components/util/theme.ts b/packages/wc-ui-components/src/components/util/theme.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/util/theme.ts rename to packages/wc-ui-components/src/components/util/theme.ts diff --git a/packages/mc-wc-ui-components/src/components/util/theme_dark.ts b/packages/wc-ui-components/src/components/util/theme_dark.ts similarity index 100% rename from packages/mc-wc-ui-components/src/components/util/theme_dark.ts rename to packages/wc-ui-components/src/components/util/theme_dark.ts diff --git a/packages/mc-wc-ui-components/src/components/viewport/mwc-viewport.tsx b/packages/wc-ui-components/src/components/viewport/mwc-viewport.tsx similarity index 100% rename from packages/mc-wc-ui-components/src/components/viewport/mwc-viewport.tsx rename to packages/wc-ui-components/src/components/viewport/mwc-viewport.tsx diff --git a/packages/mc-wc-ui-components/src/components/viewport/readme.md b/packages/wc-ui-components/src/components/viewport/readme.md similarity index 100% rename from packages/mc-wc-ui-components/src/components/viewport/readme.md rename to packages/wc-ui-components/src/components/viewport/readme.md diff --git a/packages/mc-wc-ui-components/src/index.html b/packages/wc-ui-components/src/index.html similarity index 100% rename from packages/mc-wc-ui-components/src/index.html rename to packages/wc-ui-components/src/index.html diff --git a/packages/mc-wc-ui-components/src/index.ts b/packages/wc-ui-components/src/index.ts similarity index 100% rename from packages/mc-wc-ui-components/src/index.ts rename to packages/wc-ui-components/src/index.ts diff --git a/packages/mc-wc-ui-components/src/utils/utils.spec.ts b/packages/wc-ui-components/src/utils/utils.spec.ts similarity index 100% rename from packages/mc-wc-ui-components/src/utils/utils.spec.ts rename to packages/wc-ui-components/src/utils/utils.spec.ts diff --git a/packages/mc-wc-ui-components/src/utils/utils.ts b/packages/wc-ui-components/src/utils/utils.ts similarity index 100% rename from packages/mc-wc-ui-components/src/utils/utils.ts rename to packages/wc-ui-components/src/utils/utils.ts diff --git a/packages/mc-wc-ui-components/stencil.config.ts b/packages/wc-ui-components/stencil.config.ts similarity index 74% rename from packages/mc-wc-ui-components/stencil.config.ts rename to packages/wc-ui-components/stencil.config.ts index 1258955e..b34cbc27 100644 --- a/packages/mc-wc-ui-components/stencil.config.ts +++ b/packages/wc-ui-components/stencil.config.ts @@ -4,24 +4,24 @@ import { reactOutputTarget } from '@stencil/react-output-target'; export const config: Config = { - namespace: 'mc-wc-ui-components', + namespace: 'wc-ui-components', taskQueue: 'async', outputTargets: [ reactOutputTarget({ componentCorePackage: '@map-colonies/ui-components/dist/types', - proxiesFile: '../mc-wc-ui-components-react/src/components.ts', + proxiesFile: '../wc-ui-components-react/src/components.ts', }), { type: 'dist', esmLoaderPath: '../loader', - // dir: '../../dist/libs/mc-wc-ui-components/dist', + // dir: '../../dist/libs/wc-ui-components/dist', }, { type: 'docs-readme', }, { type: 'www', - // dir: '../../dist/libs/mc-wc-ui-components/www', + // dir: '../../dist/libs/wc-ui-components/www', serviceWorker: null, // disable service workers }, ], diff --git a/packages/mc-wc-ui-components/tsconfig.json b/packages/wc-ui-components/tsconfig.json similarity index 100% rename from packages/mc-wc-ui-components/tsconfig.json rename to packages/wc-ui-components/tsconfig.json diff --git a/tsconfig.json b/tsconfig.json index 664f20cb..dcaaa5b7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,7 +20,7 @@ "jsx": "react" }, "include": [ - "packages/mc-react-components", - "packages/mc-react-ui-components", + "packages/react-components", + "packages/react-ui-components", ] } From ee59b139a6e40ad7c4c7c52bc0c1f59a4da5bd5a Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 10:29:37 +0300 Subject: [PATCH 22/35] fix(pkg): core BREAKING CHANGE: lerna, core comps --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3105efd5..2d487350 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "main": "index.js", "repository": "https://github.com/MapColonies/shared-components.git", - "author": "ofer.adel ", + "author": "ofer.adel , alex.lebinson ", "private": true, "workspaces": [ "packages/react-components", From aab448fec67aa971108e05e14eb109242b89c8f5 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 11:57:45 +0300 Subject: [PATCH 23/35] fix(storybook): unneeded files --- .../stories/DateRangePicker.stories.tsx | 14 --- .../stories/Map.stories.tsx | 26 ----- .../stories/Select.stories.tsx | 33 ------ .../stories/SmartTable.stories.tsx | 102 ------------------ 4 files changed, 175 deletions(-) delete mode 100644 packages/react-components/src/lib/date-range-picker/stories/DateRangePicker.stories.tsx delete mode 100644 packages/react-components/src/lib/map-filter-container/stories/Map.stories.tsx delete mode 100644 packages/react-components/src/lib/map-filter-container/stories/Select.stories.tsx delete mode 100644 packages/react-components/src/lib/smart-table/stories/SmartTable.stories.tsx diff --git a/packages/react-components/src/lib/date-range-picker/stories/DateRangePicker.stories.tsx b/packages/react-components/src/lib/date-range-picker/stories/DateRangePicker.stories.tsx deleted file mode 100644 index 8be55ce6..00000000 --- a/packages/react-components/src/lib/date-range-picker/stories/DateRangePicker.stories.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import { action } from '@storybook/addon-actions'; -import { DateTimeRangePicker } from '../date-range-picker'; - -export default { - title: 'Picker', - component: DateTimeRangePicker, -}; - -export const DateTime = () => ; - -DateTime.story = { - name: 'Date time range', -}; \ No newline at end of file diff --git a/packages/react-components/src/lib/map-filter-container/stories/Map.stories.tsx b/packages/react-components/src/lib/map-filter-container/stories/Map.stories.tsx deleted file mode 100644 index 28e23181..00000000 --- a/packages/react-components/src/lib/map-filter-container/stories/Map.stories.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import { ContainerMap } from '../container-map'; -import { MapFilterContainer } from '../map-filter-container'; -import { action } from '@storybook/addon-actions'; - -export default { - title: 'Map', - component: ContainerMap, -}; - -const mapDivStyle = { - "height": "100%", - "width": "100%", - "position": "fixed" as const -}; -export const Basic = () =>
    - -
    ; - -export const withDrawer = () => ; - -withDrawer.story = { - name: 'with Drawer', -}; \ No newline at end of file diff --git a/packages/react-components/src/lib/map-filter-container/stories/Select.stories.tsx b/packages/react-components/src/lib/map-filter-container/stories/Select.stories.tsx deleted file mode 100644 index 480d7648..00000000 --- a/packages/react-components/src/lib/map-filter-container/stories/Select.stories.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React, { useState } from 'react'; -import { PolygonSelectionUi } from '../polygon-selection-ui'; -import { action } from '@storybook/addon-actions'; -import { DrawType } from '../../models'; - -export default { - title: 'Select', - component: PolygonSelectionUi, -}; - -export const PolygonBox = () => { - const [active, setActive] = useState(false); - - const handleStartDraw = (type: DrawType) => { - setActive(true); - action('draw started')(type); - }; - - const handleCancelDraw = () => { - setActive(false); - action('draw canceled')(); - }; - - return ; -} - -PolygonBox.story = { - name: 'Shape', -}; \ No newline at end of file diff --git a/packages/react-components/src/lib/smart-table/stories/SmartTable.stories.tsx b/packages/react-components/src/lib/smart-table/stories/SmartTable.stories.tsx deleted file mode 100644 index 13b704d6..00000000 --- a/packages/react-components/src/lib/smart-table/stories/SmartTable.stories.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React, { useState } from 'react'; -import { SmartTable, CellMetadata } from '..'; -import { button } from '@storybook/addon-knobs'; -import { action } from '@storybook/addon-actions'; - -export default { - title: 'Smart Table', - component: SmartTable, -}; - -interface Person { - firstName: string; - lastName: string; - age: number; - birthday: string; -} - -const metadata: CellMetadata[] = [ - { - id: "firstName", - label: "First Name", - disablePadding: false, - numeric: false, - }, - { - id: "lastName", - label: "Last Name", - disablePadding: false, - numeric: false, - }, - { - id: "age", - label: "Age", - disablePadding: false, - numeric: true, - }, - { - id: "birthday", - label: "Birthday", - disablePadding: false, - numeric: false, - }, -]; - -const persons:Person[] = [ - { - firstName: "Dan", - lastName: "Walker", - age: 24, - birthday: "8-3-1996" - }, - { - firstName: "Emily", - lastName: "Jhonson", - age: 45, - birthday: "13-5-1975" - }, - { - firstName: "Ron", - lastName: "Elen", - age: 13, - birthday: "7-7-2007" - }, - { - firstName: "Michael", - lastName: "Wall", - age: 60, - birthday: "28-9-1960" - } -]; - -const getRandomPerson = () => persons[Math.floor(Math.random() * persons.length)]; - -interface TableStroyProps { - numberOfItems: number; -} - -const TableStory: React.FC = (props) => { - const [rowsPerPage, setRowsPerPage] = useState(5); - const [page, setPage] = useState(0); - const [items, setItems] = useState([...new Array(props.numberOfItems)].map(getRandomPerson)); - - button("ADD ITEM", () => setItems([...items, getRandomPerson()])); - button("REMOVE ITEM", () => setItems(items.slice(0, -1))); //remove last - button("CLEAR TABLE", () => setItems([])); - - return setPage(newPage)} - handleChangeRowsPerPage={(e) => setRowsPerPage(+e.target.value)} - page={page} - count={items.length} - items={items} - isCollapseable={true} - onRequestSort={action('sort requested')} - cellsMetadata={metadata} - onRowSelected={action('row selected')} - isDense={true}/> -}; - -export const Small = () => -export const Large = () => \ No newline at end of file From b0e459528088e8f7631c694a3e1a29b9ebd17304 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 12:57:14 +0300 Subject: [PATCH 24/35] fix(rename): demoapps --- .../.github/workflows/Lint.yml | 0 {conflicts-ui => demoapp-react}/.gitignore | 0 {conflicts-ui => demoapp-react}/.prettierrc | 0 {conflicts-ui => demoapp-react}/CHANGELOG.md | 8 ++++---- {conflicts-ui => demoapp-react}/README.md | 2 +- .../commitlint.config.js | 0 {conflicts-ui => demoapp-react}/package.json | 9 +-------- .../public/conflicts.json | 0 {conflicts-ui => demoapp-react}/public/favicon.ico | Bin {conflicts-ui => demoapp-react}/public/index.html | 0 {conflicts-ui => demoapp-react}/public/logo192.png | Bin {conflicts-ui => demoapp-react}/public/logo512.png | Bin .../public/manifest.json | 0 {conflicts-ui => demoapp-react}/public/robots.txt | 0 {conflicts-ui => demoapp-react}/src/.eslintrc | 0 {conflicts-ui => demoapp-react}/src/App.css | 0 {conflicts-ui => demoapp-react}/src/App.test.tsx | 0 {conflicts-ui => demoapp-react}/src/App.tsx | 0 .../src/common/models/ResponseState.ts | 0 .../src/common/models/api-response.ts | 0 .../src/common/models/pagination-result.ts | 0 .../__snapshots__/conflict-item.spec.tsx.snap | 0 .../src/conflicts/components/conflict-item.spec.tsx | 0 .../src/conflicts/components/conflict-item.tsx | 0 .../conflicts/components/conflicts-table.spec.tsx | 0 .../src/conflicts/components/conflicts-table.tsx | 0 .../src/conflicts/components/date-filter.tsx | 0 .../conflicts/components/has-resolved-filter.tsx | 0 .../src/conflicts/components/keywords-filter.tsx | 0 .../conflicts/models/conflict-search-params.spec.ts | 0 .../src/conflicts/models/conflict-search-params.ts | 0 .../src/conflicts/models/conflict.ts | 0 .../src/conflicts/models/conflictStore.spec.ts | 0 .../src/conflicts/models/conflictStore.ts | 0 .../src/conflicts/models/pagination.ts | 0 .../src/conflicts/models/rootStore.spec.ts | 0 .../src/conflicts/models/rootStore.ts | 0 .../src/conflicts/views/conflicts-view.tsx | 0 {conflicts-ui => demoapp-react}/src/index.css | 0 {conflicts-ui => demoapp-react}/src/index.tsx | 0 {conflicts-ui => demoapp-react}/src/logo.svg | 0 .../src/react-app-env.d.ts | 0 .../src/serviceWorker.ts | 0 {conflicts-ui => demoapp-react}/src/setupTests.ts | 0 {conflicts-ui => demoapp-react}/tsconfig.json | 0 {demoapp => demoapp-stencil}/.gitignore | 0 {demoapp => demoapp-stencil}/CHANGELOG.md | 6 +++--- {demoapp => demoapp-stencil}/README.md | 0 {demoapp => demoapp-stencil}/images.d.ts | 0 {demoapp => demoapp-stencil}/package.json | 2 +- {demoapp => demoapp-stencil}/public/favicon.ico | Bin {demoapp => demoapp-stencil}/public/index.html | 0 {demoapp => demoapp-stencil}/public/manifest.json | 0 {demoapp => demoapp-stencil}/src/app.tsx | 0 .../src/features/home/home-page.tsx | 0 {demoapp => demoapp-stencil}/src/index.css | 0 {demoapp => demoapp-stencil}/src/index.tsx | 0 {demoapp => demoapp-stencil}/src/react-app-env.d.ts | 0 {demoapp => demoapp-stencil}/tsconfig.base.json | 0 {demoapp => demoapp-stencil}/tsconfig.json | 0 {demoapp => demoapp-stencil}/tsconfig.test.json | 0 {demoapp => demoapp-stencil}/tslint.json | 0 package.json | 8 ++++---- 63 files changed, 14 insertions(+), 21 deletions(-) rename {conflicts-ui => demoapp-react}/.github/workflows/Lint.yml (100%) rename {conflicts-ui => demoapp-react}/.gitignore (100%) rename {conflicts-ui => demoapp-react}/.prettierrc (100%) rename {conflicts-ui => demoapp-react}/CHANGELOG.md (60%) rename {conflicts-ui => demoapp-react}/README.md (98%) rename {conflicts-ui => demoapp-react}/commitlint.config.js (100%) rename {conflicts-ui => demoapp-react}/package.json (92%) rename {conflicts-ui => demoapp-react}/public/conflicts.json (100%) rename {conflicts-ui => demoapp-react}/public/favicon.ico (100%) rename {conflicts-ui => demoapp-react}/public/index.html (100%) rename {conflicts-ui => demoapp-react}/public/logo192.png (100%) rename {conflicts-ui => demoapp-react}/public/logo512.png (100%) rename {conflicts-ui => demoapp-react}/public/manifest.json (100%) rename {conflicts-ui => demoapp-react}/public/robots.txt (100%) rename {conflicts-ui => demoapp-react}/src/.eslintrc (100%) rename {conflicts-ui => demoapp-react}/src/App.css (100%) rename {conflicts-ui => demoapp-react}/src/App.test.tsx (100%) rename {conflicts-ui => demoapp-react}/src/App.tsx (100%) rename {conflicts-ui => demoapp-react}/src/common/models/ResponseState.ts (100%) rename {conflicts-ui => demoapp-react}/src/common/models/api-response.ts (100%) rename {conflicts-ui => demoapp-react}/src/common/models/pagination-result.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/conflict-item.spec.tsx (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/conflict-item.tsx (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/conflicts-table.spec.tsx (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/conflicts-table.tsx (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/date-filter.tsx (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/has-resolved-filter.tsx (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/components/keywords-filter.tsx (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/conflict-search-params.spec.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/conflict-search-params.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/conflict.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/conflictStore.spec.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/conflictStore.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/pagination.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/rootStore.spec.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/models/rootStore.ts (100%) rename {conflicts-ui => demoapp-react}/src/conflicts/views/conflicts-view.tsx (100%) rename {conflicts-ui => demoapp-react}/src/index.css (100%) rename {conflicts-ui => demoapp-react}/src/index.tsx (100%) rename {conflicts-ui => demoapp-react}/src/logo.svg (100%) rename {conflicts-ui => demoapp-react}/src/react-app-env.d.ts (100%) rename {conflicts-ui => demoapp-react}/src/serviceWorker.ts (100%) rename {conflicts-ui => demoapp-react}/src/setupTests.ts (100%) rename {conflicts-ui => demoapp-react}/tsconfig.json (100%) rename {demoapp => demoapp-stencil}/.gitignore (100%) rename {demoapp => demoapp-stencil}/CHANGELOG.md (59%) rename {demoapp => demoapp-stencil}/README.md (100%) rename {demoapp => demoapp-stencil}/images.d.ts (100%) rename {demoapp => demoapp-stencil}/package.json (96%) rename {demoapp => demoapp-stencil}/public/favicon.ico (100%) rename {demoapp => demoapp-stencil}/public/index.html (100%) rename {demoapp => demoapp-stencil}/public/manifest.json (100%) rename {demoapp => demoapp-stencil}/src/app.tsx (100%) rename {demoapp => demoapp-stencil}/src/features/home/home-page.tsx (100%) rename {demoapp => demoapp-stencil}/src/index.css (100%) rename {demoapp => demoapp-stencil}/src/index.tsx (100%) rename {demoapp => demoapp-stencil}/src/react-app-env.d.ts (100%) rename {demoapp => demoapp-stencil}/tsconfig.base.json (100%) rename {demoapp => demoapp-stencil}/tsconfig.json (100%) rename {demoapp => demoapp-stencil}/tsconfig.test.json (100%) rename {demoapp => demoapp-stencil}/tslint.json (100%) diff --git a/conflicts-ui/.github/workflows/Lint.yml b/demoapp-react/.github/workflows/Lint.yml similarity index 100% rename from conflicts-ui/.github/workflows/Lint.yml rename to demoapp-react/.github/workflows/Lint.yml diff --git a/conflicts-ui/.gitignore b/demoapp-react/.gitignore similarity index 100% rename from conflicts-ui/.gitignore rename to demoapp-react/.gitignore diff --git a/conflicts-ui/.prettierrc b/demoapp-react/.prettierrc similarity index 100% rename from conflicts-ui/.prettierrc rename to demoapp-react/.prettierrc diff --git a/conflicts-ui/CHANGELOG.md b/demoapp-react/CHANGELOG.md similarity index 60% rename from conflicts-ui/CHANGELOG.md rename to demoapp-react/CHANGELOG.md index ea8bab2b..9face07a 100644 --- a/conflicts-ui/CHANGELOG.md +++ b/demoapp-react/CHANGELOG.md @@ -3,9 +3,9 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -## [0.1.2](https://github.com/MapColonies/conflicts-ui/compare/conflicts-ui@0.1.1...conflicts-ui@0.1.2) (2020-08-16) +## [0.1.2](https://github.com/MapColonies/demoapp-react/compare/demoapp-react@0.1.1...demoapp-react@0.1.2) (2020-08-16) -**Note:** Version bump only for package conflicts-ui +**Note:** Version bump only for package demoapp-react @@ -17,7 +17,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -* **lint:** linting integrated ([3536f31](https://github.com/MapColonies/conflicts-ui/commit/3536f3162765a63e3baf595b350251d58e3c04f6)) +* **lint:** linting integrated ([3536f31](https://github.com/MapColonies/demoapp-react/commit/3536f3162765a63e3baf595b350251d58e3c04f6)) @@ -31,4 +31,4 @@ All notable changes to this project will be documented in this file. See [standa ### Features -* **conflicts:** created conflicts previewer with date and geospatial filters ([25ff61](https://github.com/MapColonies/conflicts-ui/commit/25ff613419a1669d01a59b838a0a06a093e9d2ca)) +* **conflicts:** created conflicts previewer with date and geospatial filters ([25ff61](https://github.com/MapColonies/demoapp-react/commit/25ff613419a1669d01a59b838a0a06a093e9d2ca)) diff --git a/conflicts-ui/README.md b/demoapp-react/README.md similarity index 98% rename from conflicts-ui/README.md rename to demoapp-react/README.md index ad85b043..d3d991c6 100644 --- a/conflicts-ui/README.md +++ b/demoapp-react/README.md @@ -1,5 +1,5 @@ -# conflicts-ui +# demoapp-react React app written in typescript to display, filter, and resolve conflicts.
    This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). diff --git a/conflicts-ui/commitlint.config.js b/demoapp-react/commitlint.config.js similarity index 100% rename from conflicts-ui/commitlint.config.js rename to demoapp-react/commitlint.config.js diff --git a/conflicts-ui/package.json b/demoapp-react/package.json similarity index 92% rename from conflicts-ui/package.json rename to demoapp-react/package.json index 07738751..399b55eb 100644 --- a/conflicts-ui/package.json +++ b/demoapp-react/package.json @@ -1,14 +1,7 @@ { "proxy": "http://localhost:8000", - "name": "conflicts-ui", + "name": "demoapp-react", "version": "0.1.2", - "bugs": { - "url": "https://github.com/MapColonies/conflicts-ui/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/MapColonies/conflicts-ui.git" - }, "license": "MIT", "husky": { "hooks": { diff --git a/conflicts-ui/public/conflicts.json b/demoapp-react/public/conflicts.json similarity index 100% rename from conflicts-ui/public/conflicts.json rename to demoapp-react/public/conflicts.json diff --git a/conflicts-ui/public/favicon.ico b/demoapp-react/public/favicon.ico similarity index 100% rename from conflicts-ui/public/favicon.ico rename to demoapp-react/public/favicon.ico diff --git a/conflicts-ui/public/index.html b/demoapp-react/public/index.html similarity index 100% rename from conflicts-ui/public/index.html rename to demoapp-react/public/index.html diff --git a/conflicts-ui/public/logo192.png b/demoapp-react/public/logo192.png similarity index 100% rename from conflicts-ui/public/logo192.png rename to demoapp-react/public/logo192.png diff --git a/conflicts-ui/public/logo512.png b/demoapp-react/public/logo512.png similarity index 100% rename from conflicts-ui/public/logo512.png rename to demoapp-react/public/logo512.png diff --git a/conflicts-ui/public/manifest.json b/demoapp-react/public/manifest.json similarity index 100% rename from conflicts-ui/public/manifest.json rename to demoapp-react/public/manifest.json diff --git a/conflicts-ui/public/robots.txt b/demoapp-react/public/robots.txt similarity index 100% rename from conflicts-ui/public/robots.txt rename to demoapp-react/public/robots.txt diff --git a/conflicts-ui/src/.eslintrc b/demoapp-react/src/.eslintrc similarity index 100% rename from conflicts-ui/src/.eslintrc rename to demoapp-react/src/.eslintrc diff --git a/conflicts-ui/src/App.css b/demoapp-react/src/App.css similarity index 100% rename from conflicts-ui/src/App.css rename to demoapp-react/src/App.css diff --git a/conflicts-ui/src/App.test.tsx b/demoapp-react/src/App.test.tsx similarity index 100% rename from conflicts-ui/src/App.test.tsx rename to demoapp-react/src/App.test.tsx diff --git a/conflicts-ui/src/App.tsx b/demoapp-react/src/App.tsx similarity index 100% rename from conflicts-ui/src/App.tsx rename to demoapp-react/src/App.tsx diff --git a/conflicts-ui/src/common/models/ResponseState.ts b/demoapp-react/src/common/models/ResponseState.ts similarity index 100% rename from conflicts-ui/src/common/models/ResponseState.ts rename to demoapp-react/src/common/models/ResponseState.ts diff --git a/conflicts-ui/src/common/models/api-response.ts b/demoapp-react/src/common/models/api-response.ts similarity index 100% rename from conflicts-ui/src/common/models/api-response.ts rename to demoapp-react/src/common/models/api-response.ts diff --git a/conflicts-ui/src/common/models/pagination-result.ts b/demoapp-react/src/common/models/pagination-result.ts similarity index 100% rename from conflicts-ui/src/common/models/pagination-result.ts rename to demoapp-react/src/common/models/pagination-result.ts diff --git a/conflicts-ui/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap b/demoapp-react/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap similarity index 100% rename from conflicts-ui/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap rename to demoapp-react/src/conflicts/components/__snapshots__/conflict-item.spec.tsx.snap diff --git a/conflicts-ui/src/conflicts/components/conflict-item.spec.tsx b/demoapp-react/src/conflicts/components/conflict-item.spec.tsx similarity index 100% rename from conflicts-ui/src/conflicts/components/conflict-item.spec.tsx rename to demoapp-react/src/conflicts/components/conflict-item.spec.tsx diff --git a/conflicts-ui/src/conflicts/components/conflict-item.tsx b/demoapp-react/src/conflicts/components/conflict-item.tsx similarity index 100% rename from conflicts-ui/src/conflicts/components/conflict-item.tsx rename to demoapp-react/src/conflicts/components/conflict-item.tsx diff --git a/conflicts-ui/src/conflicts/components/conflicts-table.spec.tsx b/demoapp-react/src/conflicts/components/conflicts-table.spec.tsx similarity index 100% rename from conflicts-ui/src/conflicts/components/conflicts-table.spec.tsx rename to demoapp-react/src/conflicts/components/conflicts-table.spec.tsx diff --git a/conflicts-ui/src/conflicts/components/conflicts-table.tsx b/demoapp-react/src/conflicts/components/conflicts-table.tsx similarity index 100% rename from conflicts-ui/src/conflicts/components/conflicts-table.tsx rename to demoapp-react/src/conflicts/components/conflicts-table.tsx diff --git a/conflicts-ui/src/conflicts/components/date-filter.tsx b/demoapp-react/src/conflicts/components/date-filter.tsx similarity index 100% rename from conflicts-ui/src/conflicts/components/date-filter.tsx rename to demoapp-react/src/conflicts/components/date-filter.tsx diff --git a/conflicts-ui/src/conflicts/components/has-resolved-filter.tsx b/demoapp-react/src/conflicts/components/has-resolved-filter.tsx similarity index 100% rename from conflicts-ui/src/conflicts/components/has-resolved-filter.tsx rename to demoapp-react/src/conflicts/components/has-resolved-filter.tsx diff --git a/conflicts-ui/src/conflicts/components/keywords-filter.tsx b/demoapp-react/src/conflicts/components/keywords-filter.tsx similarity index 100% rename from conflicts-ui/src/conflicts/components/keywords-filter.tsx rename to demoapp-react/src/conflicts/components/keywords-filter.tsx diff --git a/conflicts-ui/src/conflicts/models/conflict-search-params.spec.ts b/demoapp-react/src/conflicts/models/conflict-search-params.spec.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/conflict-search-params.spec.ts rename to demoapp-react/src/conflicts/models/conflict-search-params.spec.ts diff --git a/conflicts-ui/src/conflicts/models/conflict-search-params.ts b/demoapp-react/src/conflicts/models/conflict-search-params.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/conflict-search-params.ts rename to demoapp-react/src/conflicts/models/conflict-search-params.ts diff --git a/conflicts-ui/src/conflicts/models/conflict.ts b/demoapp-react/src/conflicts/models/conflict.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/conflict.ts rename to demoapp-react/src/conflicts/models/conflict.ts diff --git a/conflicts-ui/src/conflicts/models/conflictStore.spec.ts b/demoapp-react/src/conflicts/models/conflictStore.spec.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/conflictStore.spec.ts rename to demoapp-react/src/conflicts/models/conflictStore.spec.ts diff --git a/conflicts-ui/src/conflicts/models/conflictStore.ts b/demoapp-react/src/conflicts/models/conflictStore.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/conflictStore.ts rename to demoapp-react/src/conflicts/models/conflictStore.ts diff --git a/conflicts-ui/src/conflicts/models/pagination.ts b/demoapp-react/src/conflicts/models/pagination.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/pagination.ts rename to demoapp-react/src/conflicts/models/pagination.ts diff --git a/conflicts-ui/src/conflicts/models/rootStore.spec.ts b/demoapp-react/src/conflicts/models/rootStore.spec.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/rootStore.spec.ts rename to demoapp-react/src/conflicts/models/rootStore.spec.ts diff --git a/conflicts-ui/src/conflicts/models/rootStore.ts b/demoapp-react/src/conflicts/models/rootStore.ts similarity index 100% rename from conflicts-ui/src/conflicts/models/rootStore.ts rename to demoapp-react/src/conflicts/models/rootStore.ts diff --git a/conflicts-ui/src/conflicts/views/conflicts-view.tsx b/demoapp-react/src/conflicts/views/conflicts-view.tsx similarity index 100% rename from conflicts-ui/src/conflicts/views/conflicts-view.tsx rename to demoapp-react/src/conflicts/views/conflicts-view.tsx diff --git a/conflicts-ui/src/index.css b/demoapp-react/src/index.css similarity index 100% rename from conflicts-ui/src/index.css rename to demoapp-react/src/index.css diff --git a/conflicts-ui/src/index.tsx b/demoapp-react/src/index.tsx similarity index 100% rename from conflicts-ui/src/index.tsx rename to demoapp-react/src/index.tsx diff --git a/conflicts-ui/src/logo.svg b/demoapp-react/src/logo.svg similarity index 100% rename from conflicts-ui/src/logo.svg rename to demoapp-react/src/logo.svg diff --git a/conflicts-ui/src/react-app-env.d.ts b/demoapp-react/src/react-app-env.d.ts similarity index 100% rename from conflicts-ui/src/react-app-env.d.ts rename to demoapp-react/src/react-app-env.d.ts diff --git a/conflicts-ui/src/serviceWorker.ts b/demoapp-react/src/serviceWorker.ts similarity index 100% rename from conflicts-ui/src/serviceWorker.ts rename to demoapp-react/src/serviceWorker.ts diff --git a/conflicts-ui/src/setupTests.ts b/demoapp-react/src/setupTests.ts similarity index 100% rename from conflicts-ui/src/setupTests.ts rename to demoapp-react/src/setupTests.ts diff --git a/conflicts-ui/tsconfig.json b/demoapp-react/tsconfig.json similarity index 100% rename from conflicts-ui/tsconfig.json rename to demoapp-react/tsconfig.json diff --git a/demoapp/.gitignore b/demoapp-stencil/.gitignore similarity index 100% rename from demoapp/.gitignore rename to demoapp-stencil/.gitignore diff --git a/demoapp/CHANGELOG.md b/demoapp-stencil/CHANGELOG.md similarity index 59% rename from demoapp/CHANGELOG.md rename to demoapp-stencil/CHANGELOG.md index 39d49a7d..c1d5e158 100644 --- a/demoapp/CHANGELOG.md +++ b/demoapp-stencil/CHANGELOG.md @@ -3,9 +3,9 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -## [0.1.2](https://github.com/MapColonies/shared-components/compare/demoapp@0.1.1...demoapp@0.1.2) (2020-08-16) +## [0.1.2](https://github.com/MapColonies/shared-components/compare/demoapp-stencil@0.1.1...demoapp-stencil@0.1.2) (2020-08-16) -**Note:** Version bump only for package demoapp +**Note:** Version bump only for package demoapp-stencil @@ -14,4 +14,4 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ## 0.1.1 (2020-08-16) -**Note:** Version bump only for package demoapp +**Note:** Version bump only for package demoapp-stencil diff --git a/demoapp/README.md b/demoapp-stencil/README.md similarity index 100% rename from demoapp/README.md rename to demoapp-stencil/README.md diff --git a/demoapp/images.d.ts b/demoapp-stencil/images.d.ts similarity index 100% rename from demoapp/images.d.ts rename to demoapp-stencil/images.d.ts diff --git a/demoapp/package.json b/demoapp-stencil/package.json similarity index 96% rename from demoapp/package.json rename to demoapp-stencil/package.json index 5088d7af..293882b6 100644 --- a/demoapp/package.json +++ b/demoapp-stencil/package.json @@ -1,5 +1,5 @@ { - "name": "demoapp", + "name": "demoapp-stencil", "version": "0.1.2", "private": true, "scripts": { diff --git a/demoapp/public/favicon.ico b/demoapp-stencil/public/favicon.ico similarity index 100% rename from demoapp/public/favicon.ico rename to demoapp-stencil/public/favicon.ico diff --git a/demoapp/public/index.html b/demoapp-stencil/public/index.html similarity index 100% rename from demoapp/public/index.html rename to demoapp-stencil/public/index.html diff --git a/demoapp/public/manifest.json b/demoapp-stencil/public/manifest.json similarity index 100% rename from demoapp/public/manifest.json rename to demoapp-stencil/public/manifest.json diff --git a/demoapp/src/app.tsx b/demoapp-stencil/src/app.tsx similarity index 100% rename from demoapp/src/app.tsx rename to demoapp-stencil/src/app.tsx diff --git a/demoapp/src/features/home/home-page.tsx b/demoapp-stencil/src/features/home/home-page.tsx similarity index 100% rename from demoapp/src/features/home/home-page.tsx rename to demoapp-stencil/src/features/home/home-page.tsx diff --git a/demoapp/src/index.css b/demoapp-stencil/src/index.css similarity index 100% rename from demoapp/src/index.css rename to demoapp-stencil/src/index.css diff --git a/demoapp/src/index.tsx b/demoapp-stencil/src/index.tsx similarity index 100% rename from demoapp/src/index.tsx rename to demoapp-stencil/src/index.tsx diff --git a/demoapp/src/react-app-env.d.ts b/demoapp-stencil/src/react-app-env.d.ts similarity index 100% rename from demoapp/src/react-app-env.d.ts rename to demoapp-stencil/src/react-app-env.d.ts diff --git a/demoapp/tsconfig.base.json b/demoapp-stencil/tsconfig.base.json similarity index 100% rename from demoapp/tsconfig.base.json rename to demoapp-stencil/tsconfig.base.json diff --git a/demoapp/tsconfig.json b/demoapp-stencil/tsconfig.json similarity index 100% rename from demoapp/tsconfig.json rename to demoapp-stencil/tsconfig.json diff --git a/demoapp/tsconfig.test.json b/demoapp-stencil/tsconfig.test.json similarity index 100% rename from demoapp/tsconfig.test.json rename to demoapp-stencil/tsconfig.test.json diff --git a/demoapp/tslint.json b/demoapp-stencil/tslint.json similarity index 100% rename from demoapp/tslint.json rename to demoapp-stencil/tslint.json diff --git a/package.json b/package.json index 2d487350..eda53c73 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "packages/react-ui-components", "packages/wc-ui-components", "packages/wc-ui-components-react", - "demoapp", - "conflicts-ui" + "demoapp-stencil", + "demoapp-react" ], "husky": { "hooks": { @@ -50,8 +50,8 @@ "eslint-check:react": "lerna exec --scope @map-colonies/react-components -- yarn eslint-check", "eslint-check:react-core": "lerna exec --scope @map-colonies/react-core -- yarn eslint-check", - "start:reactdemo": "cd demoapp && yarn start", - "start:conflicts": "cd conflicts-ui && yarn start" + "start:reactstencildemo": "cd demoapp-stencil && yarn start", + "start:reactdemo": "cd demoapp-react && yarn start" }, "devDependencies": { "@commitlint/cli": "^9.1.1", From 6113a9b3589a43effe38fb5795cc90bed564f6e6 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 13:12:42 +0300 Subject: [PATCH 25/35] fix(cleanup): unneeded storybooks remains --- .../.storybook/assets/logo.png | Bin 8058 -> 0 bytes packages/react-components/.storybook/main.js | 12 --------- .../react-components/.storybook/manager.js | 6 ----- .../.storybook/preview-head.html | 8 ------ .../react-components/.storybook/preview.js | 12 --------- packages/react-components/.storybook/theme.js | 9 ------- packages/react-components/src/index.tsx | 24 +----------------- 7 files changed, 1 insertion(+), 70 deletions(-) delete mode 100644 packages/react-components/.storybook/assets/logo.png delete mode 100644 packages/react-components/.storybook/main.js delete mode 100644 packages/react-components/.storybook/manager.js delete mode 100644 packages/react-components/.storybook/preview-head.html delete mode 100644 packages/react-components/.storybook/preview.js delete mode 100644 packages/react-components/.storybook/theme.js diff --git a/packages/react-components/.storybook/assets/logo.png b/packages/react-components/.storybook/assets/logo.png deleted file mode 100644 index 2d46619559e59895ca6d2d66b5dce903910f8519..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8058 zcmZ{JWmMch(C!b|;tmBCUyAGE?u)w?cPquUP+W>jaVuK1xJ$8O1r{k#C|=x)yIubG z+dcPvPtIgAlT1#M$#W(r6Q!;yhlNgx4gdg_f;>#~h5vjZ2~^~l+O$J}<%NN4B~>H= zpe_O9!Ti;WOl>KzsR97L^Z*bP1^{<2s-Rr}@Pq=uz8L@rWdH!NOHR9n$V&&Zg_0Z$ zc>b^Cca|o+~7Nf3~7>W z>K+daj2OuuAbO09u^sTBL(f@U7}K%t``x%U8uz$FtOb zl+57g0S(GwMRZRf29P0BpfLQhCqAYqC)Nqsm#qF>B<}>G;{V<+Pfv9ofac z(J`6MT26xG=kM>&K4OTzTeR%mP=U|NUUR_CYjIgartMdlAA=%c~Q=OtmdB=)t?w9iLAXol{R(@e)U8j%em1@-T05iy=)%FMo>c6hfmxTAf8{88(el3jm{nhUu$!XIyqNOJwl-wPyj(YWR3 zM)qj?!vxmBaz^|Jq2lAtXFHFY1hOf;DseNaX`LfVe3HRfb=)jOK+lA>umSKwV_Frb zbQD}je0(y1`8S(x zVYZMoI!7gXNQ67#EOjbxQ58rag1Nwj&6vehP^But|+q z)7ZpynunU9wK!vMg-mE+f>bEW%WT~Rha2|Zq=5CEFa_%@@8-LBqhT_8z!*{r?9UP9 zGinNcipd9YB*RF?$&Eo6tcM^tD~&Sk$6$MW?`YgWk*Syan`abS^+b-XiUq5{R$Q(q z!uHPgHeBw!w7=rXcYW~xsFB|t$`eMLrk4;)Cq(HCBu~x@u|NMhdL02=Dm-;q(Hh4vZrc}Z(H5V zo-iq~sNZmlH8lH(eoo}8Hkpu=A?~|U4rm)8-Tr%XdXFH2n{@SLgq!QSoO{=z)Gflp zPx@Tp1Z19e{?1PoB>R~k3;LTGYE?_a%Nr*l#x7)Pqm4OX6NkUUlDD5TJ{BYIpDD2c z1c5oM5;)s2gHdV{9X(|zSi#=GyF@fRNa{U3GKg2GOybo}b*lj~=EU!~m^9NJ%N5C! z44MpCq({Vr&N;RR@BB^mnQ22+US$!LhxWaKfF>V%D`X@(dJ>1^M>yiM4IT)ZKr$k9 ztaJlq1{e`ZDW5|w*v+cY@^=vIu@%}DzfMO8GYBsQJeRJnuks@{$^oL7F39LFRrn)qfmG$|Ab)+x@eW+2VaTM-~RD27$noh!x(r0Iq``g97WT556jD*(0F+ zaShmdJacH$gSKkp-tYZ|M~18b5VY%2amSpI5e~NW?W|Ys@bDzTb0B?(gaBa<>{SvQ zl*g}WGTnNJz?Oa(=3G|}cO~g3mfB}CM&5gsi?112aoEr+Le)d1D2`l{%EqJ8v~#de zg3F6X4Hy+h1GuP|_-;0dUUw;apGDuWG(Y-!JH90lP2=#>rt_z)YfT+lj-TpMFsn$; zx$R6BJD2UsOL$aIDO#ALq2ZS!%^AuPo0u#m=xx!XNM(Ejg_h_4ym$;6FxTppd5qiz z2LbfBL9+tfI1*LZ>sJpC(XC5VaG%8z@;^G+l{6=2O$<@#{=C)$f%Zp}Yl(200^}&X zrgBD+(!gOD+hP@)!|^{)M1UlrL!h;Qeuq)bEB2k!RZ(?LADAA*hYzXu+Z}EC5-GtW z6`TgXPz?}H7&JwyC<#D?Ld%3LrK!ji9Z-AIw%9NV zjJs;C`Vdp;wrKPq-snmkA$-Wd0SOX}+Ql2&&0E)uE%8Muamfo8@tVPfK4>8@3eEiY zmnr>#U8lU&II?Df*z@XfJdF$QQX<``@$6FpjWL^3(XXO^>|so^4Vq{r!N9hIgQ!K9d}KL(Rih z5`q*9Cn+b~o7I7Nq#OE5AS3>Bk(({i}d;# zI+BuDa9~)fd4JRfdDlD~jKkaJEtQ+Z1eb$*Cte@)D?r6@jN`O!c;!{puMuDQr>smJXbr-s254Re&t3^_e}FX) z@jP7dkp;-D9=-g;u119sIaGm7U<$Qr1pVk03CSepb`QVA##=U@BAs9fWWA1dr2*-n z{e_;-!3c2*QKzf}5!Gy6ItiMcY9uoR)g8g%UAJNpTMF^-F7kVV%i0cn1&O%w9j&f8npwqzye=@7$zJ13fVA zvMJh6!5&&Jzi!y1o9(u+ovCt(+FQ#a#Q+y?WEp@3zF`F9~?$?yEZ^rX|?Qn^AbE$~=?CDhY{cNp z2iC6}^TxL{9r*WaKOSp7PIRyI{!FI;R;U%uf<$#-;mF&W^zw%18lvkqJ@a5q&`{ih z0K1(Y4~{U8kFWe=&wYqzZWPB6fIk9Wfs`x@ACTV)?y&z8mjnXoedgKBf6UuoCT4JP zS#Fa3n{oMEGAPaYHap5@;Ktukh~(}yO|_?_0X@f!+t#YQjZ>|R8xw`@>u@f{q^QuS zazP~PVHk3yPEpI@uk;2!#B^iKpr&8`{p9GghWLM|CMDDncFlIHSP}|Oriy`{M=A`W z_3?G7LAN1VzRH;Bil>!iBOK~#DYD&8KmyWasXz9%T)=$e$(B#o@aS=?-&swz#Os+< zBCq|=aFGb=p0@gO+evYP7a}}nZ@uYW&*oov2#V1@?hNlv#p*eL|9=15{n@oNFT_^I zJ2x}o3n`s_Lb?(zsLi;EwOFJ=8y$+LA^(kM@4ioOO?Td31ysef&t9z8AJ!$|s@}vZ zbc=!e5_72@o94}ORpBM;7=*w@(#hy$kh4ETHfAJRK9Y1UAK%X?zn(zd9Wc{W?oXu@ ziT&0T7n;e@@r+d#iK4~YPV@SvLx{NRWKGq~f&Qn8aGrrFHQ02vQb}RA^CBu;itCX6 z?T+-+>193sgC3@h$*;a)c&fiY`njr?+@jz;+)8>25vLcaYC%T1VVvvG@q53*G ze@Gr_`8&`Lb35U7Q_BJB_i#D0z6}_Lj`0fs+!_t(Br4dM2Bs z5GxLX9~HrGa<$n@%obTJC)N6^CPgO0Pl-gW3vIbU!>OMh(tE7u#KtrKdN=b?^uD)_ z`N8t`LMs`GS!68?`W?u(=za5sB8-PAMa!CBW;#nz(sXt+qiV9(H1)khC0U#m1MUjM%hR93>q9Og`{HqhG zMeP<|+)1P5I~X*>SN4XoQnEi#!b9oSGL#7W;49dNn_A1ezseQH9@8k`*?p6?zS(B(;JCk<6OLUX=2Ivs8!V=aLtj-rOoHl{XN)caw$#-`7>%ThMy zpA6q_#)(iIe5`11ZmItH{@dOiLv#&Jiy`EAEbg`S0WI>X^j0Yj{JwsO#F9ns6C!u@ zvQ#^`2}1W?n-{jJ^+km9)7#v$+HnFm3-}`QsF$9nP)*k~Yjflg<4g{9ifC2F%^D>O zk%u6z@TI)$+c>(BSJjUMnW5jeEuQim z%238ZX=)FKLQ1J$-45v{xE}sXuN%5B+xM9r6x-ym=o)8-&TA@=OMtD>4ADULVU*Hq!>(MTO-%vIj|ikQ12%8D zdiT4%ZBkeMPWkhj0Xj>9ffAFcz9?vI5?vPFnv5QtRHyMbLE0i zMKYxDyc1?;;w^_C zZO-0@rPkf@9x6f^w?@(=?K5V|cT`*(!&MB)s($<#?(XzF!&i;pUc&2V3#bUH%jK)j zFcq|2SqWY`jvP77go!NOoO9|5!VLzRpeK9Y{W-+9f*hRskT_7ZB36ATZsoapEOmO_7&(P$&8z!p7U)nrZIYF{|#TM}j1hSx%2wX-Qr z++z_#xK2Qm+0N_qKFU2q%)+K&T2sAO5HK5!b!M+q9}Fe?k&Y1b-yg^$eak>G>3|Ez z{c-e$hKHab=L&rWcuh;B2!pEdHzEpQ5+wbG2X(PJPJM`zc+P+c{^H(G=;{~yPR-g_PSbF)ltYh-Zaqn<5EOJ^N|0P?prKJPgwyyDxfgl zbnpoMfh%A_Nm3;w8mLx}>&-VHfEUj&sdI|3&Aeq}eTX#YBi5_>EhNYEhFg}ov}Ut= z$O_zR70j^s1l6aWPqO^Hy4>)5)5j4>O;+r_|i7};5#ZRm?%n0>I=oD_7+?>=~ZmBpU*!K{?;4D zeW>GkpWY~(Sq|nlC7M*VrfSL!3pHA(G`=gQNB0v_fMheZe=q!YruU9S*kv9q=GV{? z>RfeAL<8wjN06KT$z-E{*X@34QrSH34T1|_yVv}e=as^_#hT_%3RtsfV}w)e?>9x3 z2Yh!kIu>WIOz}PCvSs~h`EGv>h+6jAljeu!BUA?KDXo$RPIXE|cJMcdgc3KI{(yRL z)LPv9`@`C@-ypSvb$#i${|rtp?v}$wJQpm5;@Eu=KM?#xmoMKOQ{gytlh}lkZJ#Al z(BOGkm!Wz*w?*3d;2S0X*j=LR5t~m*_tQu9G40yOp8>h}$`6-yI_g69H91Jc{yfE@ z<;>30E%9dx_9|YKt$3aryoh7fn5FPhVW2dqspccLg&4|!$MqVgboWt**#{*q(r31{ zPMULl3KRNbif%6hM1|kaRub_x zDJUwA)Gi*0{kvMTco_ET5bfFcr2C|x$SP5s{>?r#*pfB1qeWG$ZZ+AnWfws(Rba}kT9o9Os0O)z3pjykbv9@nDKy6tfq`Cx6t(n4eSzx54I2Od6S|r~5x+F}D^GRS7018tuN#$A93; zH)YaPG_{Fun0H{XoyhI{e(^y{>IXGV7E^H!h%m4h2@%m3;e+jY-x>pDG{oEm z$kT!RuL+czimML~51lpN&lF9DJy&d?B<%$P?JYxVE&|>|C8h|_$7&gz&PqmdBr{Nt zXmAA`AKV2o2d!|+XUf)k+cNX^BvB~6+#%D=j;i59mVUs}@lk-MBC9{|+SZn)rgIP% zLKkyEoH*3UVrg8Xh&hZUVZbAAg4I@D-9Y`W{FiV^m;bnWK4z*ENaB z4(deV@t;Y9Nbf&{z-tn5qISpi8*IW6d;Yr|Xplip)4=kP)z!e*l&KN;PIPqiQ&vWX zUOPjNHq+KOsYn~Zj4#`?Y2M*F{VjVj`2_r1a&q!$1r|B>Q2FNOCfm!UI@+5qo!e_) zAqukLAx$PAAfRGe4cLZfs$i1~oUr405=jxtGd<@dCY}fYxW8zbwnQLdI;a{i^G+Xm zeIx_Swle{Nm~dd*}VPBXZy#h0_d zxz{PU$lwqCJ1ZOTB;?LO14bz91%Vadkbqa|58XLuD%~9PRC+1k<2HBTatZ$;=H^ie z+U0;~j6KOe|D7HpWMC zFIbDww0E$-T|vT4OF{lE9@@L4cK4IDs5kGcnjf7vrizs&kU^mD-0s`(AuQxRavhyK zJ`zl8!&v-ZCXjx>#s+w+#K-d!1lR;Duep#T2Z6b5{I(7b?jb>E*}jHAE9U5ayI61} z(Ri-tJvTri=(agtZQS96cyg@?P97$FW%h`{@m<~5p>)h<5#0;|ph7e$u!o$07nmA< zP4ORXN!J`CbncgHVTncr7^3WG@H%OVc`zW9X_}NwjEpyOo>xq0mo}*nyo{Gj9w5Ns z%lDmEHok9beQa+Q`}z(FEk|)9np==}7`OD4?{8T-k!Yt7r)%O@IDfmU5|5~-HRcvz z35#&vl`QEzj`6Ru;!DAKNaOMlKYV<_$yN-Z0xIYA$y%Q?0|Ntx*|sQr&a~rA;m@hS z``g<~`a*&&PYj4I;s;g;q`(0w_GR~aFFv;gB7zT&t3fCz-bm`^3GBvm2|%QTLeKWR zZJwi=HpEmbP2SulwM-E_W=4Vl~%JjH?{Q%TBsD+eMx*qv*nrG=zh&_UIq(;iR0Qc#4rhi``_WO?x~u- zpLSCi&tXLEG6DkR@rN&q!wfiTno}&zW5~S4k5)S4^Eg_#1ZR)wf_gythyLz1 zv-kuAjxZR!5*@+}3wptTe#i2Q_bAmA73-nyc-)3xRCl7&O?=<^YicI(a&o$2b05I8 zwe|D_iofo)sATi~E>+3CY8$h`kXKgD8HLNhU{aB;fCNkq3t8Hvtu7~3Gp#G;C83#= zoGf0qcodhEl=MVX3{Tf&*4NiR*U>r3$jA^tln~?2Mrdtf(3hUhclNz9^__4@+qT9p z2?e=7#JB2DsZ`P`tR(#O}VXfTqM}{(*^7bkx_!;}%NNY-IKpOAS7>(LRm=*bjJJB#>q7R}O zdh(C&Fw4BJOS{1Fv*hlU?T+oL@zEnl^$MU zg!GV)R-9>bf`+TUpr}U!Xn~UJT4<*wKUqiZ^Hh&#POeSG@nxm2Vt3CtaRWgsO14*@ zt&T>m_6MvEhaK9(&Fy=wAoK(zHu5AKLGU5)c4*RA2Nu*(gom%Px6j+;dut!ZKJ{SIj{l8h=%fHVEuj<)iYf - #story--map--basic { - height: 300px; - } - #story--map--with-drawer { - height: 300px; - } - \ No newline at end of file diff --git a/packages/react-components/.storybook/preview.js b/packages/react-components/.storybook/preview.js deleted file mode 100644 index fc9589d5..00000000 --- a/packages/react-components/.storybook/preview.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import { addParameters, addDecorator } from '@storybook/react'; -import { ThemeWrapper } from '../src'; -import { themes } from '@storybook/theming'; - -addParameters({ - options: { - theme: themes.dark, - }, -}); - -addDecorator((story) => {story()}); \ No newline at end of file diff --git a/packages/react-components/.storybook/theme.js b/packages/react-components/.storybook/theme.js deleted file mode 100644 index 0a87fc5b..00000000 --- a/packages/react-components/.storybook/theme.js +++ /dev/null @@ -1,9 +0,0 @@ -import { create } from '@storybook/theming'; -import logo from './assets/logo.png'; - -export default create({ - base: 'light', - - brandTitle: 'Map Colonies-Catalog', - brandImage: logo, -}); \ No newline at end of file diff --git a/packages/react-components/src/index.tsx b/packages/react-components/src/index.tsx index d368962a..8a0410f0 100644 --- a/packages/react-components/src/index.tsx +++ b/packages/react-components/src/index.tsx @@ -1,27 +1,5 @@ -import React,{ useMemo } from 'react'; +import React from 'react'; import ReactDOM from 'react-dom'; -import { ThemeProvider, createMuiTheme } from '@material-ui/core/styles'; -import { useDarkMode } from 'storybook-dark-mode'; - - -export const ThemeWrapper:React.FC = (props) => { - const prefersDarkMode = useDarkMode(); - - const muiTheme = useMemo( - () => - createMuiTheme({ - palette: { - type: prefersDarkMode ? 'dark' : 'light', - }, - }), - [prefersDarkMode] - ); - - return - {props.children} - -}; - ReactDOM.render( From b625388a9820c52eb15f6de3643984ad7a02d7c8 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 13:29:51 +0300 Subject: [PATCH 26/35] fix(pkg): script added --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index eda53c73..5748c8ae 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "build:all": "lerna run build --npm-client=yarn", "publish": "lerna publish --conventional-commits -m \"chore(publish): publish [by user]\"", + "publish:current": "lerna exec -- npm publish", "eslint-check:react": "lerna exec --scope @map-colonies/react-components -- yarn eslint-check", "eslint-check:react-core": "lerna exec --scope @map-colonies/react-core -- yarn eslint-check", From 02e659db67962e78344d9cacbd94c0dc80252ff6 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 13:49:42 +0300 Subject: [PATCH 27/35] chore(release): version bumped 1.0.0 - demoapp-react@1.0.0 - demoapp-stencil@1.0.0 - @map-colonies/react-components@1.0.0 - @map-colonies/react-core@1.0.0 - @map-colonies/ui-components@1.0.0 - @map-colonies/ui-components-react@1.0.0 --- demoapp-react/CHANGELOG.md | 12 ++++++++++++ demoapp-react/package.json | 6 +++--- demoapp-stencil/CHANGELOG.md | 12 ++++++++++++ demoapp-stencil/package.json | 8 ++++---- packages/react-components/CHANGELOG.md | 14 ++++++++++++++ packages/react-components/package.json | 2 +- packages/react-ui-components/CHANGELOG.md | 12 ++++++++++++ packages/react-ui-components/package.json | 2 +- packages/wc-ui-components-react/CHANGELOG.md | 11 +++++++++++ packages/wc-ui-components-react/package.json | 8 ++++---- packages/wc-ui-components/CHANGELOG.md | 11 +++++++++++ packages/wc-ui-components/package.json | 2 +- 12 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 packages/wc-ui-components-react/CHANGELOG.md create mode 100644 packages/wc-ui-components/CHANGELOG.md diff --git a/demoapp-react/CHANGELOG.md b/demoapp-react/CHANGELOG.md index 9face07a..2a6fe065 100644 --- a/demoapp-react/CHANGELOG.md +++ b/demoapp-react/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# 1.0.0 (2020-08-17) + + +### Bug Fixes + +* **rename:** demoapps ([b0e4595](https://github.com/MapColonies/shared-components/commit/b0e459528088e8f7631c694a3e1a29b9ebd17304)) + + + + + + ## [0.1.2](https://github.com/MapColonies/demoapp-react/compare/demoapp-react@0.1.1...demoapp-react@0.1.2) (2020-08-16) **Note:** Version bump only for package demoapp-react diff --git a/demoapp-react/package.json b/demoapp-react/package.json index 399b55eb..4bd44f10 100644 --- a/demoapp-react/package.json +++ b/demoapp-react/package.json @@ -1,7 +1,7 @@ { "proxy": "http://localhost:8000", "name": "demoapp-react", - "version": "0.1.2", + "version": "1.0.0", "license": "MIT", "husky": { "hooks": { @@ -41,8 +41,8 @@ "dependencies": { "@commitlint/cli": "^9.1.1", "@commitlint/config-conventional": "^9.1.1", - "@map-colonies/react-components": "^0.1.2", - "@map-colonies/react-core": "^0.1.2", + "@map-colonies/react-components": "^1.0.0", + "@map-colonies/react-core": "^1.0.0", "@material-ui/core": "^4.11.0", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", diff --git a/demoapp-stencil/CHANGELOG.md b/demoapp-stencil/CHANGELOG.md index c1d5e158..b73af767 100644 --- a/demoapp-stencil/CHANGELOG.md +++ b/demoapp-stencil/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# 1.0.0 (2020-08-17) + + +### Bug Fixes + +* **rename:** demoapps ([b0e4595](https://github.com/MapColonies/shared-components/commit/b0e459528088e8f7631c694a3e1a29b9ebd17304)) + + + + + + ## [0.1.2](https://github.com/MapColonies/shared-components/compare/demoapp-stencil@0.1.1...demoapp-stencil@0.1.2) (2020-08-16) **Note:** Version bump only for package demoapp-stencil diff --git a/demoapp-stencil/package.json b/demoapp-stencil/package.json index 293882b6..0585fc02 100644 --- a/demoapp-stencil/package.json +++ b/demoapp-stencil/package.json @@ -1,14 +1,14 @@ { "name": "demoapp-stencil", - "version": "0.1.2", + "version": "1.0.0", "private": true, "scripts": { "start": "react-scripts start" }, "dependencies": { - "@map-colonies/react-components": "^0.1.2", - "@map-colonies/ui-components": "^0.0.1", - "@map-colonies/ui-components-react": "^0.0.1", + "@map-colonies/react-components": "^1.0.0", + "@map-colonies/ui-components": "^1.0.0", + "@map-colonies/ui-components-react": "^1.0.0", "react": "^16.13.1", "react-dom": "^16.13.1" }, diff --git a/packages/react-components/CHANGELOG.md b/packages/react-components/CHANGELOG.md index e99ad83d..6e9ec99b 100644 --- a/packages/react-components/CHANGELOG.md +++ b/packages/react-components/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.0.0](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-components@0.1.2...@map-colonies/react-components@1.0.0) (2020-08-17) + + +### Bug Fixes + +* **cleanup:** unneeded storybooks remains ([6113a9b](https://github.com/MapColonies/shared-components/commit/6113a9b3589a43effe38fb5795cc90bed564f6e6)) +* **rename:** mc prefix removed ([2b8c936](https://github.com/MapColonies/shared-components/commit/2b8c9363313c9958c800951ef25a319f21427d00)) +* **storybook:** unneeded files ([aab448f](https://github.com/MapColonies/shared-components/commit/aab448fec67aa971108e05e14eb109242b89c8f5)) + + + + + + ## [0.1.2](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-components@0.1.1...@map-colonies/react-components@0.1.2) (2020-08-16) diff --git a/packages/react-components/package.json b/packages/react-components/package.json index 90867f7f..0f5814ec 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-components", - "version": "0.1.2", + "version": "1.0.0", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/react-ui-components/CHANGELOG.md b/packages/react-ui-components/CHANGELOG.md index 6c8fcbf3..33518682 100644 --- a/packages/react-ui-components/CHANGELOG.md +++ b/packages/react-ui-components/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.0.0](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-core@0.1.2...@map-colonies/react-core@1.0.0) (2020-08-17) + + +### Bug Fixes + +* **rename:** mc prefix removed ([2b8c936](https://github.com/MapColonies/shared-components/commit/2b8c9363313c9958c800951ef25a319f21427d00)) + + + + + + ## [0.1.2](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-core@0.1.1...@map-colonies/react-core@0.1.2) (2020-08-16) diff --git a/packages/react-ui-components/package.json b/packages/react-ui-components/package.json index 8f322963..0718b6f7 100644 --- a/packages/react-ui-components/package.json +++ b/packages/react-ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-core", - "version": "0.1.2", + "version": "1.0.0", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/wc-ui-components-react/CHANGELOG.md b/packages/wc-ui-components-react/CHANGELOG.md new file mode 100644 index 00000000..a1f280c7 --- /dev/null +++ b/packages/wc-ui-components-react/CHANGELOG.md @@ -0,0 +1,11 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# 1.0.0 (2020-08-17) + + +### Bug Fixes + +* **rename:** mc prefix removed ([2b8c936](https://github.com/ionic-team/ionic/commit/2b8c9363313c9958c800951ef25a319f21427d00)) diff --git a/packages/wc-ui-components-react/package.json b/packages/wc-ui-components-react/package.json index de355a79..c0615b1a 100644 --- a/packages/wc-ui-components-react/package.json +++ b/packages/wc-ui-components-react/package.json @@ -1,7 +1,7 @@ { "name": "@map-colonies/ui-components-react", "sideEffects": false, - "version": "0.0.1", + "version": "1.0.0", "private": true, "description": "React specific wrapper for component-library", "repository": { @@ -28,11 +28,11 @@ "np": "^3.1.0", "react": "^16.13.1", "react-dom": "^16.13.1", - "typescript": "~3.7.2", - "rimraf": "3.0.2" + "rimraf": "3.0.2", + "typescript": "~3.7.2" }, "dependencies": { - "@map-colonies/ui-components": "^0.0.1" + "@map-colonies/ui-components": "^1.0.0" }, "peerDependencies": { "react": "^16.13.1", diff --git a/packages/wc-ui-components/CHANGELOG.md b/packages/wc-ui-components/CHANGELOG.md new file mode 100644 index 00000000..96a1eac3 --- /dev/null +++ b/packages/wc-ui-components/CHANGELOG.md @@ -0,0 +1,11 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# 1.0.0 (2020-08-17) + + +### Bug Fixes + +* **rename:** mc prefix removed ([2b8c936](https://github.com/MapColonies/shared-components/commit/2b8c9363313c9958c800951ef25a319f21427d00)) diff --git a/packages/wc-ui-components/package.json b/packages/wc-ui-components/package.json index 06b69286..687c6f93 100644 --- a/packages/wc-ui-components/package.json +++ b/packages/wc-ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/ui-components", - "version": "0.0.1", + "version": "1.0.0", "description": "Stencil Component Starter", "private": true, "main": "dist/index.js", From bf5177627a7b61c3ee1b1b5f30106e1996da7924 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 14:05:12 +0300 Subject: [PATCH 28/35] fix(readme): updated --- packages/react-components/README.md | 1 + packages/react-ui-components/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-components/README.md b/packages/react-components/README.md index 1ccc4b4e..811f9022 100644 --- a/packages/react-components/README.md +++ b/packages/react-components/README.md @@ -4,6 +4,7 @@ This is a library contains react components for use by other apps. All the components are written using typescript. The project was bootstrapped using create-react-app, and modified to enable exporting of components. + ## Using the package * Run `yarn run build`. This will compile the `src/lib` folder, and copy all the other files into the dist folder. diff --git a/packages/react-ui-components/README.md b/packages/react-ui-components/README.md index a59bfc24..a0d4f45b 100644 --- a/packages/react-ui-components/README.md +++ b/packages/react-ui-components/README.md @@ -1,6 +1,6 @@ # react-ui-components -This is a library contains CORE react components for use by other apps, based on Material Web Components helpers +This is a library contains CORE react components for use by other apps, based on Material Web Components helpers. All the components are written using typescript. The project was bootstrapped using create-react-app, and modified to enable exporting of components. From edc2cb583cdc2f6437a80dd86812173c9ea995e2 Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Mon, 17 Aug 2020 14:06:28 +0300 Subject: [PATCH 29/35] chore(publish): publish [by user] - demoapp-react@1.0.1 - demoapp-stencil@1.0.1 - @map-colonies/react-components@1.0.1 - @map-colonies/react-core@1.0.1 --- demoapp-react/CHANGELOG.md | 8 ++++++++ demoapp-react/package.json | 6 +++--- demoapp-stencil/CHANGELOG.md | 8 ++++++++ demoapp-stencil/package.json | 4 ++-- packages/react-components/CHANGELOG.md | 11 +++++++++++ packages/react-components/package.json | 2 +- packages/react-ui-components/CHANGELOG.md | 11 +++++++++++ packages/react-ui-components/package.json | 2 +- 8 files changed, 45 insertions(+), 7 deletions(-) diff --git a/demoapp-react/CHANGELOG.md b/demoapp-react/CHANGELOG.md index 2a6fe065..51ea1e51 100644 --- a/demoapp-react/CHANGELOG.md +++ b/demoapp-react/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.1](https://github.com/MapColonies/shared-components/compare/demoapp-react@1.0.0...demoapp-react@1.0.1) (2020-08-17) + +**Note:** Version bump only for package demoapp-react + + + + + # 1.0.0 (2020-08-17) diff --git a/demoapp-react/package.json b/demoapp-react/package.json index 4bd44f10..3f0e6bb3 100644 --- a/demoapp-react/package.json +++ b/demoapp-react/package.json @@ -1,7 +1,7 @@ { "proxy": "http://localhost:8000", "name": "demoapp-react", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "husky": { "hooks": { @@ -41,8 +41,8 @@ "dependencies": { "@commitlint/cli": "^9.1.1", "@commitlint/config-conventional": "^9.1.1", - "@map-colonies/react-components": "^1.0.0", - "@map-colonies/react-core": "^1.0.0", + "@map-colonies/react-components": "^1.0.1", + "@map-colonies/react-core": "^1.0.1", "@material-ui/core": "^4.11.0", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", diff --git a/demoapp-stencil/CHANGELOG.md b/demoapp-stencil/CHANGELOG.md index b73af767..c5041f4a 100644 --- a/demoapp-stencil/CHANGELOG.md +++ b/demoapp-stencil/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.1](https://github.com/MapColonies/shared-components/compare/demoapp-stencil@1.0.0...demoapp-stencil@1.0.1) (2020-08-17) + +**Note:** Version bump only for package demoapp-stencil + + + + + # 1.0.0 (2020-08-17) diff --git a/demoapp-stencil/package.json b/demoapp-stencil/package.json index 0585fc02..ba156f08 100644 --- a/demoapp-stencil/package.json +++ b/demoapp-stencil/package.json @@ -1,12 +1,12 @@ { "name": "demoapp-stencil", - "version": "1.0.0", + "version": "1.0.1", "private": true, "scripts": { "start": "react-scripts start" }, "dependencies": { - "@map-colonies/react-components": "^1.0.0", + "@map-colonies/react-components": "^1.0.1", "@map-colonies/ui-components": "^1.0.0", "@map-colonies/ui-components-react": "^1.0.0", "react": "^16.13.1", diff --git a/packages/react-components/CHANGELOG.md b/packages/react-components/CHANGELOG.md index 6e9ec99b..1b9c94b4 100644 --- a/packages/react-components/CHANGELOG.md +++ b/packages/react-components/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.1](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-components@1.0.0...@map-colonies/react-components@1.0.1) (2020-08-17) + + +### Bug Fixes + +* **readme:** updated ([bf51776](https://github.com/MapColonies/shared-components/commit/bf5177627a7b61c3ee1b1b5f30106e1996da7924)) + + + + + # [1.0.0](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-components@0.1.2...@map-colonies/react-components@1.0.0) (2020-08-17) diff --git a/packages/react-components/package.json b/packages/react-components/package.json index 0f5814ec..8f9edffe 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-components", - "version": "1.0.0", + "version": "1.0.1", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/react-ui-components/CHANGELOG.md b/packages/react-ui-components/CHANGELOG.md index 33518682..54e303b5 100644 --- a/packages/react-ui-components/CHANGELOG.md +++ b/packages/react-ui-components/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.1](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-core@1.0.0...@map-colonies/react-core@1.0.1) (2020-08-17) + + +### Bug Fixes + +* **readme:** updated ([bf51776](https://github.com/MapColonies/shared-components/commit/bf5177627a7b61c3ee1b1b5f30106e1996da7924)) + + + + + # [1.0.0](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-core@0.1.2...@map-colonies/react-core@1.0.0) (2020-08-17) diff --git a/packages/react-ui-components/package.json b/packages/react-ui-components/package.json index 0718b6f7..71ab9a92 100644 --- a/packages/react-ui-components/package.json +++ b/packages/react-ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@map-colonies/react-core", - "version": "1.0.0", + "version": "1.0.1", "module": "dist/index.js", "main": "dist/index.js", "types": "dist/index.d.ts", From ee2911532543d585788b276d70f11187a3b5ab0c Mon Sep 17 00:00:00 2001 From: LEBINSON ALEX Date: Tue, 18 Aug 2020 12:43:54 +0300 Subject: [PATCH 30/35] fix(prettier): all code is prettified --- .prettierignore | 13 + .prettierrc | 7 + demoapp-react/.prettierrc | 6 - demoapp-react/src/App.tsx | 10 +- .../conflicts/components/conflict-item.tsx | 2 +- .../components/conflicts-table.spec.tsx | 2 +- .../src/conflicts/components/date-filter.tsx | 5 +- .../components/has-resolved-filter.tsx | 8 +- .../models/conflict-search-params.ts | 12 +- .../src/conflicts/models/conflictStore.ts | 16 +- .../src/conflicts/models/pagination.ts | 8 +- .../src/conflicts/models/rootStore.ts | 9 +- demoapp-react/src/index.tsx | 4 +- demoapp-react/src/serviceWorker.ts | 21 +- demoapp-stencil/src/app.tsx | 24 +- .../src/features/home/home-page.tsx | 16 +- demoapp-stencil/src/index.css | 29 +- demoapp-stencil/src/index.tsx | 9 +- package.json | 14 +- packages/react-components/src/lib/box/box.tsx | 13 +- .../react-components/src/lib/box/index.ts | 2 +- .../src/lib/cssbaseline/cssbaseline.tsx | 35 +- .../src/lib/cssbaseline/index.ts | 8 +- .../date-range-picker.spec.tsx | 22 +- .../date-range-picker/date-range-picker.tsx | 7 +- .../map-filter-container/container-map.tsx | 25 +- .../map-filter-container.tsx | 4 +- .../polygon-selection-ui.tsx | 22 +- .../react-components/src/lib/models/enums.ts | 4 +- .../src/lib/ol-map/feature.tsx | 13 +- .../src/lib/ol-map/interactions/draw.tsx | 32 +- .../src/lib/ol-map/layers/tile-layer.tsx | 26 +- .../src/lib/ol-map/layers/vector-layer.tsx | 26 +- .../react-components/src/lib/ol-map/map.tsx | 14 +- .../src/lib/ol-map/source/osm.tsx | 8 +- .../src/lib/ol-map/source/vector-source.tsx | 19 +- .../react-components/src/lib/popover/index.ts | 2 +- .../src/lib/popover/popover.tsx | 13 +- .../__mock-data__/smartTableMocks.ts | 8 +- .../lib/smart-table/smart-table-head.spec.tsx | 21 +- .../src/lib/smart-table/smart-table-head.tsx | 11 +- .../lib/smart-table/smart-table-row.spec.tsx | 28 +- .../src/lib/smart-table/smart-table-row.tsx | 18 +- .../src/lib/smart-table/smart-table-types.ts | 2 +- .../src/lib/smart-table/smart-table.tsx | 26 +- .../react-components/src/lib/theme/index.ts | 2 +- .../react-components/src/lib/theme/theme.ts | 77 +- packages/react-ui-components/src/index.tsx | 1 - .../src/lib/avatar/index.tsx | 16 +- .../src/lib/badge/index.tsx | 6 +- .../src/lib/base/foundation-component.tsx | 24 +- .../src/lib/base/index.spec.tsx | 18 +- .../src/lib/base/portal.tsx | 2 +- .../src/lib/base/test-polyfill.tsx | 8 +- .../src/lib/base/utils/apply-passive.tsx | 4 +- .../src/lib/base/utils/debounce.tsx | 6 +- .../src/lib/base/utils/deprecation.tsx | 16 +- .../src/lib/base/utils/empty-client-rect.tsx | 2 +- .../src/lib/base/utils/events-map.tsx | 2 +- .../src/lib/base/utils/strings.tsx | 4 +- .../src/lib/base/utils/test-utils.tsx | 2 +- .../src/lib/base/utils/wrap-child.tsx | 2 +- .../src/lib/button/index.tsx | 12 +- .../src/lib/card/card-ssr.spec.tsx | 2 +- .../src/lib/card/card.spec.tsx | 4 +- .../src/lib/card/index.tsx | 16 +- .../src/lib/checkbox/foundation.tsx | 6 +- .../src/lib/checkbox/index.tsx | 14 +- .../src/lib/chip/foundation.tsx | 6 +- .../src/lib/chip/index.tsx | 12 +- .../src/lib/circular-progress/index.tsx | 8 +- .../lib/data-table/data-table-ssr.spec.tsx | 4 +- .../src/lib/data-table/data-table.spec.tsx | 6 +- .../src/lib/data-table/index.tsx | 20 +- .../src/lib/dialog/dialog-queue.tsx | 24 +- .../src/lib/dialog/dialog-ssr.spec.tsx | 2 +- .../src/lib/dialog/dialog.spec.tsx | 4 +- .../src/lib/dialog/dialog.tsx | 4 +- .../src/lib/dialog/foundation.tsx | 10 +- .../src/lib/drawer/drawer-ssr.spec.tsx | 2 +- .../src/lib/drawer/drawer.spec.tsx | 2 +- .../src/lib/drawer/foundation.tsx | 10 +- .../src/lib/drawer/index.tsx | 10 +- .../src/lib/elevation/index.tsx | 2 +- .../react-ui-components/src/lib/fab/index.tsx | 4 +- .../src/lib/floating-label/foundation.tsx | 12 +- .../src/lib/formfield/foundation.tsx | 4 +- .../src/lib/formfield/index.tsx | 4 +- .../src/lib/grid-list/grid-list-ssr.spec.tsx | 2 +- .../src/lib/grid-list/grid-list.spec.tsx | 4 +- .../src/lib/grid-list/index.tsx | 6 +- .../src/lib/grid/index.tsx | 15 +- .../src/lib/icon-button/foundation.tsx | 4 +- .../src/lib/icon-button/index.tsx | 16 +- .../src/lib/icon/icon.spec.tsx | 6 +- .../src/lib/icon/index.tsx | 16 +- .../lib/image-list/image-list-ssr.spec.tsx | 4 +- .../src/lib/image-list/image-list.spec.tsx | 4 +- .../src/lib/image-list/index.tsx | 6 +- .../src/lib/line-ripple/foundation.tsx | 6 +- .../src/lib/linear-progress/foundation.tsx | 4 +- .../src/lib/linear-progress/index.tsx | 4 +- .../src/lib/list/collapsible-list.tsx | 16 +- .../src/lib/list/foundation.tsx | 8 +- .../src/lib/list/list-item.tsx | 6 +- .../src/lib/list/list-ssr.spec.tsx | 2 +- .../src/lib/list/list.spec.tsx | 2 +- .../react-ui-components/src/lib/list/list.tsx | 4 +- .../src/lib/menu/menu-surface/foundation.tsx | 24 +- .../src/lib/menu/menu-surface/index.tsx | 4 +- .../src/lib/menu/menu.spec.tsx | 2 +- .../src/lib/menu/menu/foundation.tsx | 10 +- .../src/lib/menu/menu/index.tsx | 10 +- .../src/lib/notched-outline/foundation.tsx | 6 +- .../src/lib/notched-outline/index.tsx | 2 +- .../src/lib/provider/index.tsx | 8 +- .../src/lib/radio/foundation.tsx | 6 +- .../src/lib/radio/index.tsx | 6 +- .../src/lib/ripple/foundation.tsx | 8 +- .../src/lib/ripple/index.tsx | 8 +- .../src/lib/select/select-icon/foundation.tsx | 8 +- .../src/lib/select/select-icon/index.tsx | 2 +- .../src/lib/select/select.css | 12 +- .../src/lib/select/select.spec.tsx | 10 +- .../src/lib/select/select.story.tsx | 1 - .../src/lib/select/select/foundation.tsx | 22 +- .../src/lib/select/select/index.tsx | 22 +- .../src/lib/slider/foundation.tsx | 8 +- .../src/lib/slider/index.tsx | 6 +- .../src/lib/snackbar/foundation.tsx | 6 +- .../src/lib/snackbar/snackbar-queue.tsx | 12 +- .../src/lib/snackbar/snackbar.spec.tsx | 12 +- .../src/lib/snackbar/snackbar.tsx | 6 +- .../src/lib/switch/foundation.tsx | 6 +- .../src/lib/switch/index.tsx | 8 +- .../src/lib/tabs/tab-bar-context.tsx | 2 +- .../src/lib/tabs/tab-bar-foundation.tsx | 14 +- .../src/lib/tabs/tab-bar.tsx | 4 +- .../src/lib/tabs/tab-foundation.tsx | 8 +- .../src/lib/tabs/tab-indicator-foundation.tsx | 10 +- .../src/lib/tabs/tab-indicator.tsx | 2 +- .../src/lib/tabs/tab-scroller-foundation.tsx | 8 +- .../react-ui-components/src/lib/tabs/tab.tsx | 6 +- .../src/lib/tabs/tabs.spec.tsx | 30 +- .../src/lib/textfield/index.tsx | 18 +- .../textfield-character-count-foundation.tsx | 10 +- .../lib/textfield/textfield-foundation.tsx | 18 +- .../textfield/textfield-icon-foundation.tsx | 8 +- .../src/lib/textfield/textfield.spec.tsx | 2 +- .../src/lib/theme/index.tsx | 10 +- .../src/lib/theme/theme-options.tsx | 2 +- .../src/lib/theme/theme.spec.tsx | 8 +- .../src/lib/theme/themes.tsx | 111 +- .../src/lib/theme/utils.tsx | 20 +- .../src/lib/toggleable/index.tsx | 4 +- .../src/lib/tooltip/index.tsx | 6 +- .../src/lib/top-app-bar/foundation.tsx | 8 +- .../src/lib/top-app-bar/index.tsx | 18 +- .../lib/top-app-bar/top-app-bar-ssr.spec.tsx | 2 +- .../src/lib/top-app-bar/top-app-bar.spec.tsx | 28 +- .../src/lib/typography/index.tsx | 4 +- .../src/lib/typography/typography.spec.tsx | 2 +- .../wc-ui-components-react/src/components.ts | 197 ++- packages/wc-ui-components-react/src/index.ts | 2 +- .../react-component-lib/createComponent.tsx | 20 +- .../createOverlayComponent.tsx | 18 +- .../react-component-lib/utils/attachProps.ts | 33 +- .../src/react-component-lib/utils/index.tsx | 6 +- .../src/components/button/mwc-button-style.ts | 334 ++-- .../src/components/button/mwc-button-types.ts | 15 +- .../src/components/button/mwc-button.tsx | 167 +- .../src/components/card/mwc-card-actions.scss | 2 +- .../src/components/card/mwc-card-actions.tsx | 12 +- .../components/card/mwc-card-content-style.ts | 41 +- .../src/components/card/mwc-card-content.tsx | 31 +- .../src/components/card/mwc-card-header.scss | 2 +- .../src/components/card/mwc-card-header.tsx | 51 +- .../components/card/mwc-card-media-style.ts | 41 +- .../src/components/card/mwc-card-media.scss | 2 +- .../src/components/card/mwc-card-media.tsx | 57 +- .../src/components/card/mwc-card.scss | 2 +- .../src/components/card/mwc-card.tsx | 40 +- .../src/components/checkbox/mwc-checkbox.scss | 4 +- .../src/components/checkbox/mwc-checkbox.tsx | 170 +- .../components/container/mwc-container.tsx | 78 +- .../components/dialog/mwc-dialog-body.scss | 2 +- .../src/components/dialog/mwc-dialog-body.tsx | 12 +- .../components/dialog/mwc-dialog-footer.scss | 2 +- .../components/dialog/mwc-dialog-footer.tsx | 32 +- .../components/dialog/mwc-dialog-header.scss | 2 +- .../components/dialog/mwc-dialog-header.tsx | 17 +- .../src/components/dialog/mwc-dialog.scss | 2 +- .../src/components/dialog/mwc-dialog.tsx | 93 +- .../src/components/drawer/mwc-drawer.scss | 14 +- .../src/components/drawer/mwc-drawer.tsx | 176 ++- .../src/components/fab/mwc-fab.scss | 2 +- .../src/components/fab/mwc-fab.tsx | 76 +- .../grid-list/mwc-grid-list-tile.scss | 2 +- .../grid-list/mwc-grid-list-tile.tsx | 53 +- .../components/grid-list/mwc-grid-list.scss | 2 +- .../components/grid-list/mwc-grid-list.tsx | 55 +- .../icon-toggle/mwc-icon-toggle.scss | 2 +- .../icon-toggle/mwc-icon-toggle.tsx | 134 +- .../src/components/list/mwc-list-item.scss | 30 +- .../src/components/list/mwc-list-item.tsx | 62 +- .../src/components/list/mwc-list-style.ts | 69 +- .../src/components/list/mwc-list.scss | 23 +- .../src/components/list/mwc-list.tsx | 37 +- .../src/components/menu/mwc-menu-item.scss | 2 +- .../src/components/menu/mwc-menu-item.tsx | 20 +- .../src/components/menu/mwc-menu.scss | 12 +- .../src/components/menu/mwc-menu.tsx | 79 +- .../my-component/my-component.spec.ts | 8 +- .../components/my-component/my-component.tsx | 2 +- .../src/components/paper/mwc-paper-style.ts | 43 +- .../src/components/paper/mwc-paper.tsx | 53 +- .../src/components/progress/mwc-progress.scss | 2 +- .../src/components/progress/mwc-progress.tsx | 151 +- .../src/components/radio/mwc-radio.scss | 2 +- .../src/components/radio/mwc-radio.tsx | 120 +- .../src/components/select/mwc-select.scss | 12 +- .../src/components/select/mwc-select.tsx | 122 +- .../src/components/slider/mwc-slider.scss | 2 +- .../src/components/slider/mwc-slider.tsx | 140 +- .../src/components/snackbar/mwc-snackbar.scss | 2 +- .../src/components/snackbar/mwc-snackbar.tsx | 152 +- .../components/styles/color-manipulator.ts | 20 +- .../components/styles/create-breakpoints.ts | 12 +- .../src/components/styles/create-mixins.ts | 11 +- .../src/components/styles/create-palette.ts | 12 +- .../src/components/styles/create-shadows.ts | 4 +- .../src/components/styles/create-spacing.ts | 10 +- .../src/components/styles/create-theme.ts | 13 +- .../components/styles/create-transitions.ts | 18 +- .../components/styles/create-typography.ts | 41 +- .../src/components/styles/create-zindex.ts | 4 +- .../src/components/styles/setup-jss.ts | 40 +- .../components/styles/types/colors/amber.ts | 4 +- .../components/styles/types/colors/blue.ts | 4 +- .../styles/types/colors/blueGrey.ts | 4 +- .../components/styles/types/colors/brown.ts | 4 +- .../components/styles/types/colors/color.ts | 2 +- .../components/styles/types/colors/common.ts | 5 +- .../components/styles/types/colors/cyan.ts | 4 +- .../styles/types/colors/deepOrange.ts | 4 +- .../styles/types/colors/deepPurple.ts | 2 +- .../components/styles/types/colors/green.ts | 2 +- .../components/styles/types/colors/grey.ts | 4 +- .../components/styles/types/colors/indigo.ts | 4 +- .../styles/types/colors/lightBlue.ts | 2 +- .../styles/types/colors/lightGreen.ts | 4 +- .../components/styles/types/colors/lime.ts | 4 +- .../components/styles/types/colors/orange.ts | 4 +- .../components/styles/types/colors/pink.ts | 4 +- .../components/styles/types/colors/purple.ts | 4 +- .../src/components/styles/types/colors/red.ts | 4 +- .../components/styles/types/colors/teal.ts | 4 +- .../components/styles/types/colors/yellow.ts | 2 +- .../src/components/switch/mwc-switch.scss | 24 +- .../src/components/switch/mwc-switch.tsx | 108 +- .../src/components/tabbar/mwc-tabbar.scss | 2 +- .../src/components/tabbar/mwc-tabbar.tsx | 227 +-- .../components/textfield/mwc-textfield.scss | 2 +- .../components/textfield/mwc-textfield.tsx | 259 ++-- .../src/components/theme/mwc-theme.scss | 14 +- .../src/components/theme/mwc-theme.style.ts | 14 +- .../src/components/theme/mwc-theme.tsx | 59 +- .../toolbar/mwc-content-for-toolbar.tsx | 23 +- .../components/toolbar/mwc-toolbar-icon.scss | 6 +- .../components/toolbar/mwc-toolbar-icon.tsx | 21 +- .../toolbar/mwc-toolbar-section.tsx | 45 +- .../components/toolbar/mwc-toolbar-title.tsx | 19 +- .../src/components/toolbar/mwc-toolbar.scss | 2 +- .../src/components/toolbar/mwc-toolbar.tsx | 49 +- .../typography/mwc-typography.style.ts | 32 +- .../components/typography/mwc-typography.tsx | 79 +- .../typography/mwc-typograpy-types.ts | 18 +- .../src/components/util/mwc-util.ts | 28 +- .../src/components/util/ripple.ts | 274 ++-- .../src/components/util/theme.ts | 630 ++++---- .../src/components/util/theme_dark.ts | 476 +++--- .../src/components/viewport/mwc-viewport.tsx | 28 +- packages/wc-ui-components/src/utils/utils.ts | 5 +- packages/wc-ui-components/stencil.config.ts | 13 +- yarn.lock | 1362 ++++++++++++++++- 285 files changed, 5325 insertions(+), 3655 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc delete mode 100644 demoapp-react/.prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..7f18101e --- /dev/null +++ b/.prettierignore @@ -0,0 +1,13 @@ +**/dist/** +**/build/** +**/loader/** +**/node_modules/** + +*.{js,jsx} +*.md +*.d.ts +*.json +*.html +*.yml +.prettierrc +.eslintrc \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..9ecc01d9 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": true + } + \ No newline at end of file diff --git a/demoapp-react/.prettierrc b/demoapp-react/.prettierrc deleted file mode 100644 index 1dc71645..00000000 --- a/demoapp-react/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "trailingComma": "es5", - "tabWidth": 2, - "semi": true, - "singleQuote": true -} \ No newline at end of file diff --git a/demoapp-react/src/App.tsx b/demoapp-react/src/App.tsx index 380973ae..4cb302b3 100644 --- a/demoapp-react/src/App.tsx +++ b/demoapp-react/src/App.tsx @@ -2,7 +2,11 @@ import React from 'react'; import './App.css'; // Import from react core components -import { ThemeProvider as RMWCThemeProvider, RMWCProvider, Themes } from '@map-colonies/react-core'; +import { + ThemeProvider as RMWCThemeProvider, + RMWCProvider, + Themes, +} from '@map-colonies/react-core'; import { CssBaseline } from '@map-colonies/react-components'; import { useMediaQuery } from '@map-colonies/react-components'; import '@map-colonies/react-core/dist/theme/styles'; @@ -20,9 +24,9 @@ const App: React.FC = () => { const theme = prefersDarkMode ? Themes.darkTheme : Themes.lightTheme; return ( - diff --git a/demoapp-react/src/conflicts/components/conflict-item.tsx b/demoapp-react/src/conflicts/components/conflict-item.tsx index 0765e5c6..ede1196d 100644 --- a/demoapp-react/src/conflicts/components/conflict-item.tsx +++ b/demoapp-react/src/conflicts/components/conflict-item.tsx @@ -10,7 +10,7 @@ interface ConflictItemProps { const ConflictItem: React.FC = ({ conflict }) => { return (
    - {'#' + conflict.id} + {'#' + conflict.id}
    {conflict.source_server}
    {conflict.target_server}
    {conflict.description}
    diff --git a/demoapp-react/src/conflicts/components/conflicts-table.spec.tsx b/demoapp-react/src/conflicts/components/conflicts-table.spec.tsx index 3e991bb3..97d7c487 100644 --- a/demoapp-react/src/conflicts/components/conflicts-table.spec.tsx +++ b/demoapp-react/src/conflicts/components/conflicts-table.spec.tsx @@ -14,7 +14,7 @@ console.error = jest.fn(); const originalWarn = console.warn.bind(console.warn); beforeAll(() => { - console.warn = (msg:string) => + console.warn = (msg: string) => !msg.toString().includes('observer batching') && originalWarn(msg); }); afterAll(() => { diff --git a/demoapp-react/src/conflicts/components/date-filter.tsx b/demoapp-react/src/conflicts/components/date-filter.tsx index 345bb57e..cfdb8e6e 100644 --- a/demoapp-react/src/conflicts/components/date-filter.tsx +++ b/demoapp-react/src/conflicts/components/date-filter.tsx @@ -26,10 +26,7 @@ export const DateFilter: React.FC = observer(() => { const open = Boolean(anchorEl); return ( <> - diff --git a/demoapp-react/src/conflicts/components/has-resolved-filter.tsx b/demoapp-react/src/conflicts/components/has-resolved-filter.tsx index d28cbef8..55896e47 100644 --- a/demoapp-react/src/conflicts/components/has-resolved-filter.tsx +++ b/demoapp-react/src/conflicts/components/has-resolved-filter.tsx @@ -23,9 +23,13 @@ export const HasResolvedFilter: React.FC = observer(() => { return ( (function CheckboxRoot( props, @@ -115,8 +115,8 @@ const CheckboxRoot = withRipple({ 'mdc-data-table__row-checkbox': isDataTable && !isDataTableHeader, 'mdc-data-table__header-row-checkbox': isDataTableHeader, 'mdc-checkbox--disabled': disabled, - 'mdc-checkbox--selected': checked || indeterminate - } + 'mdc-checkbox--selected': checked || indeterminate, + }, ]); return ; }) diff --git a/packages/react-ui-components/src/lib/chip/foundation.tsx b/packages/react-ui-components/src/lib/chip/foundation.tsx index 538e60ba..afb7e8b5 100644 --- a/packages/react-ui-components/src/lib/chip/foundation.tsx +++ b/packages/react-ui-components/src/lib/chip/foundation.tsx @@ -15,7 +15,7 @@ export const useChipFoundation = (props: ChipProps & ChipHTMLProps) => { elements: { rootEl: true, trailingIconEl: true, - checkmarkEl: true + checkmarkEl: true, }, foundation: ({ rootEl, checkmarkEl, emit, getProps }) => new MDCChipFoundation({ @@ -94,8 +94,8 @@ export const useChipFoundation = (props: ChipProps & ChipHTMLProps) => { .getComputedStyle(rootEl.ref) .getPropertyValue('direction') === 'rtl' : false; - } - } as MDCChipAdapter) + }, + } as MDCChipAdapter), }); const { rootEl, trailingIconEl, foundation } = foundationWithElements; diff --git a/packages/react-ui-components/src/lib/chip/index.tsx b/packages/react-ui-components/src/lib/chip/index.tsx index c9056d74..df56d627 100644 --- a/packages/react-ui-components/src/lib/chip/index.tsx +++ b/packages/react-ui-components/src/lib/chip/index.tsx @@ -83,8 +83,8 @@ export const Chip: RMWC.ComponentType< const className = useClassNames(props, [ 'mdc-chip', { - 'mdc-chip--selected': selected - } + 'mdc-chip--selected': selected, + }, ]); return ( @@ -167,8 +167,8 @@ const ChipIcon = React.memo(function ChipIcon( { 'mdc-chip__icon--leading': leading, 'mdc-chip__icon--leading-hidden': hidden, - 'mdc-chip__icon--trailing': trailing - } + 'mdc-chip__icon--trailing': trailing, + }, ]); const hasInteractionHandler = Object.keys(props).some((p) => p.startsWith('on') @@ -204,8 +204,8 @@ export const ChipSet = createComponent(function ChipSet( 'mdc-chip-set', { 'mdc-chip-set--choice': choice, - 'mdc-chip-set--filter': filter - } + 'mdc-chip-set--filter': filter, + }, ]); return ; diff --git a/packages/react-ui-components/src/lib/circular-progress/index.tsx b/packages/react-ui-components/src/lib/circular-progress/index.tsx index 7fbe4e26..ef14732d 100644 --- a/packages/react-ui-components/src/lib/circular-progress/index.tsx +++ b/packages/react-ui-components/src/lib/circular-progress/index.tsx @@ -8,7 +8,7 @@ const SIZE_MAP: { [key: string]: number } = { small: 20, medium: 24, large: 36, - xlarge: 48 + xlarge: 48, }; /** A Circular Progress indicator. */ @@ -34,8 +34,8 @@ export const CircularProgress = createComponent( typeof props.size === 'string', 'rmwc-circular-progress--indeterminate': progress === undefined, 'rmwc-circular-progress--thickerstroke': - !!props.size && (SIZE_MAP[size] || Number(size)) > 36 - } + !!props.size && (SIZE_MAP[size] || Number(size)) > 36, + }, ]); const style = !SIZE_MAP[size] @@ -54,7 +54,7 @@ export const CircularProgress = createComponent( ? { strokeDasharray: `${ 2 * Math.PI * (size / 2.4) * calculateRatio(progress) - }, 666.66%` + }, 666.66%`, } : undefined; }; diff --git a/packages/react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx b/packages/react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx index 4f4c9808..0060becc 100644 --- a/packages/react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx +++ b/packages/react-ui-components/src/lib/data-table/data-table-ssr.spec.tsx @@ -13,7 +13,7 @@ import { DataTableHeadCell, DataTableRow, DataTableCell, - SimpleDataTable + SimpleDataTable, } from './'; describe('DataTable', () => { @@ -61,7 +61,7 @@ describe('SimpleDataTable', () => { ['Icecream', 3, '1.43'], ['Candy', 72, '$22.45'], ['Cakes', 101, '$215.05'], - ['Muffins', 3, '$5.97'] + ['Muffins', 3, '$5.97'], ]} /> ); diff --git a/packages/react-ui-components/src/lib/data-table/data-table.spec.tsx b/packages/react-ui-components/src/lib/data-table/data-table.spec.tsx index 8c6e3c8f..f59e3f5c 100644 --- a/packages/react-ui-components/src/lib/data-table/data-table.spec.tsx +++ b/packages/react-ui-components/src/lib/data-table/data-table.spec.tsx @@ -8,7 +8,7 @@ import { DataTableHeadCell, DataTableRow, DataTableCell, - SimpleDataTable + SimpleDataTable, } from './'; describe('DataTable', () => { @@ -269,7 +269,7 @@ describe('SimpleDataTable', () => { ['Icecream', 3, '1.43'], ['Candy', 72, '$22.45'], ['Cakes', 101, '$215.05'], - ['Muffins', 3, '$5.97'] + ['Muffins', 3, '$5.97'], ]} /> ); @@ -293,7 +293,7 @@ describe('SimpleDataTable', () => { ['Icecream', 3, '1.43'], ['Candy', 72, '$22.45'], ['Cakes', 101, '$215.05'], - ['Muffins', 3, '$5.97'] + ['Muffins', 3, '$5.97'], ]} /> ); diff --git a/packages/react-ui-components/src/lib/data-table/index.tsx b/packages/react-ui-components/src/lib/data-table/index.tsx index d1537f10..580eaf9a 100644 --- a/packages/react-ui-components/src/lib/data-table/index.tsx +++ b/packages/react-ui-components/src/lib/data-table/index.tsx @@ -7,7 +7,7 @@ import { Tag, createComponent, DataTableHeadContext, - DataTableContext + DataTableContext, } from '../base'; interface SharedDataTableCellProps { @@ -43,8 +43,8 @@ export const DataTable = createComponent(function DataTable( 'rmwc-data-table--sticky-columns': !!stickyColumns, 'rmwc-data-table--sticky-columns-1': !!stickyColumns, 'rmwc-data-table--sticky-rows': !!stickyRows, - 'rmwc-data-table--sticky-rows-1': !!stickyRows - } + 'rmwc-data-table--sticky-rows-1': !!stickyRows, + }, ]); return ( @@ -109,8 +109,8 @@ export const DataTableRow = createComponent( 'mdc-data-table__header-row': isHeaderRow, 'mdc-data-table__row': !isHeaderRow, 'mdc-data-table__row--selected': props.selected || props.activated, - 'rmwc-data-table__row--activated': props.activated - } + 'rmwc-data-table__row--activated': props.activated, + }, ]); return ; } @@ -170,8 +170,8 @@ export const DataTableHeadCell = createComponent( 'mdc-data-table__header-cell--numeric': isNumeric, 'rmwc-data-table__cell--align-start': alignStart, 'rmwc-data-table__cell--align-middle': alignMiddle, - 'rmwc-data-table__cell--align-end': alignEnd - } + 'rmwc-data-table__cell--align-end': alignEnd, + }, ]); const onClickProp = @@ -182,7 +182,7 @@ export const DataTableHeadCell = createComponent( onSortChange(sort === null ? 1 : sort === 1 ? -1 : null); onClick && onClick(evt); - } + }, } : {}; @@ -225,8 +225,8 @@ export const DataTableCell = createComponent( 'mdc-data-table__cell--checkbox': hasFormControl, 'rmwc-data-table__cell--align-start': props.alignStart, 'rmwc-data-table__cell--align-middle': props.alignMiddle, - 'rmwc-data-table__cell--align-end': props.alignEnd - } + 'rmwc-data-table__cell--align-end': props.alignEnd, + }, ]); return ; } diff --git a/packages/react-ui-components/src/lib/dialog/dialog-queue.tsx b/packages/react-ui-components/src/lib/dialog/dialog-queue.tsx index 93a7f51d..8cc8cbb9 100644 --- a/packages/react-ui-components/src/lib/dialog/dialog-queue.tsx +++ b/packages/react-ui-components/src/lib/dialog/dialog-queue.tsx @@ -5,7 +5,7 @@ import { SimpleDialog, SimpleDialogProps, SimpleDialogHTMLProps, - DialogOnCloseEventT + DialogOnCloseEventT, } from './dialog'; import { ArrayEmitter, randomId } from '../base'; import { TextField, TextFieldProps, TextFieldHTMLProps } from '../textfield'; @@ -40,7 +40,7 @@ export function DialogQueue({ ); useEffect(() => { - const forceUpdate = () => setIteration(val => val + 1); + const forceUpdate = () => setIteration((val) => val + 1); dialogs.on('change', forceUpdate); return () => { dialogs.off('change', forceUpdate); @@ -50,7 +50,7 @@ export function DialogQueue({ const removeDialog = (evt: DialogOnCloseEventT, dialog: DialogQueueSpec) => { setClosingDialogs({ ...closingDialogs, - [dialog.id]: true + [dialog.id]: true, }); dialog.resolve(evt); @@ -74,7 +74,7 @@ export function DialogQueue({ return ( <> - {dialogs.array.map(dialog => { + {dialogs.array.map((dialog) => { const { resolve, reject, id, inputProps, ...rest } = dialog; const rendered = ( @@ -83,7 +83,7 @@ export function DialogQueue({ {...rest} key={id} open={!closingDialogs[id] && !foundOpen} - onClose={evt => { + onClose={(evt) => { removeDialog(evt, dialog); dialog.onClose && dialog.onClose(evt); }} @@ -121,7 +121,7 @@ const dialogFactory = ( function PromptBody({ body, inputProps, - apiRef + apiRef, }: { body?: React.ReactNode; inputProps?: DialogQueueInput['inputProps']; @@ -141,7 +141,7 @@ function PromptBody({ autoFocus {...inputProps} value={value} - onChange={evt => { + onChange={(evt) => { setValue(evt.currentTarget.value); }} /> @@ -156,7 +156,7 @@ const promptFactory = (dialog: DialogQueueSpec): DialogQueueSpec => { (getValue = _getValue)} + apiRef={(_getValue) => (getValue = _getValue)} /> ); @@ -167,7 +167,7 @@ const promptFactory = (dialog: DialogQueueSpec): DialogQueueSpec => { resolve: (evt: DialogOnCloseEventT) => { dialog.resolve(evt.detail.action === 'accept' ? getValue() : null); getValue = undefined; - } + }, }; }; @@ -178,7 +178,7 @@ const alertFactory = (dialog: DialogQueueSpec): DialogQueueSpec => ({ acceptLabel: 'OK', cancelLabel: null, ...dialog, - resolve: (evt: DialogOnCloseEventT) => dialog.resolve(evt.detail.action) + resolve: (evt: DialogOnCloseEventT) => dialog.resolve(evt.detail.action), }); /** Confirm */ @@ -189,7 +189,7 @@ const confirmFactory = (dialog: DialogQueueSpec): DialogQueueSpec => ({ cancelLabel: 'Cancel', ...dialog, resolve: (evt: DialogOnCloseEventT) => - dialog.resolve(evt.detail.action === 'accept') + dialog.resolve(evt.detail.action === 'accept'), }); /** Creates a snackbar queue */ @@ -205,6 +205,6 @@ export const createDialogQueue = (): { dialogs, alert: dialogFactory(alertFactory, dialogs), confirm: dialogFactory(confirmFactory, dialogs), - prompt: dialogFactory(promptFactory, dialogs) + prompt: dialogFactory(promptFactory, dialogs), }; }; diff --git a/packages/react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx b/packages/react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx index 76bd3c7d..8bf3b0e5 100644 --- a/packages/react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx +++ b/packages/react-ui-components/src/lib/dialog/dialog-ssr.spec.tsx @@ -9,7 +9,7 @@ import { DialogContent, DialogActions, DialogButton, - SimpleDialog + SimpleDialog, } from './'; describe('Dialog', () => { diff --git a/packages/react-ui-components/src/lib/dialog/dialog.spec.tsx b/packages/react-ui-components/src/lib/dialog/dialog.spec.tsx index 309f665b..3044e6dd 100644 --- a/packages/react-ui-components/src/lib/dialog/dialog.spec.tsx +++ b/packages/react-ui-components/src/lib/dialog/dialog.spec.tsx @@ -9,7 +9,7 @@ import { DialogButton, SimpleDialog, createDialogQueue, - DialogQueue + DialogQueue, } from './'; import { wait, actWait } from '../base/utils/test-utils'; import { act } from 'react-dom/test-utils'; @@ -192,7 +192,7 @@ describe('DialogQueue', () => { expect(el.html().includes('myPrompt')).toBe(true); (el.find('input').prop('onChange') as any)({ - currentTarget: { value: 'WORKING' } + currentTarget: { value: 'WORKING' }, }); el.update(); diff --git a/packages/react-ui-components/src/lib/dialog/dialog.tsx b/packages/react-ui-components/src/lib/dialog/dialog.tsx index 812faf5c..df80b249 100644 --- a/packages/react-ui-components/src/lib/dialog/dialog.tsx +++ b/packages/react-ui-components/src/lib/dialog/dialog.tsx @@ -8,7 +8,7 @@ import { Tag, createComponent, PortalPropT, - PortalChild + PortalChild, } from '../base'; import { Button, ButtonProps } from '../button'; import { useDialogFoundation } from './foundation'; @@ -172,7 +172,7 @@ interface DialogScrimProps { } const DialogScrim = React.memo(function DialogScrim({ - disableInteraction + disableInteraction, }: DialogScrimProps) { const style: React.CSSProperties = disableInteraction ? { pointerEvents: 'none' } diff --git a/packages/react-ui-components/src/lib/dialog/foundation.tsx b/packages/react-ui-components/src/lib/dialog/foundation.tsx index f8a3c86a..d4af5514 100644 --- a/packages/react-ui-components/src/lib/dialog/foundation.tsx +++ b/packages/react-ui-components/src/lib/dialog/foundation.tsx @@ -5,7 +5,7 @@ import { useFoundation, FocusTrap, focusTrapFactory, - triggerWindowResize + triggerWindowResize, } from '../base'; import { DialogProps } from '.'; import React, { useRef, useEffect, useMemo } from 'react'; @@ -31,7 +31,7 @@ export const useDialogFoundation = ( const { foundation, ...elements } = useFoundation({ props, elements: { - rootEl: true + rootEl: true, }, foundation: ({ rootEl, emit, getProps }) => { return new MDCDialogFoundation({ @@ -94,9 +94,9 @@ export const useDialogFoundation = ( getInitialFocusEl: () => document.querySelector( `[${MDCDialogFoundation.strings.INITIAL_FOCUS_ATTRIBUTE}]` - ) + ), }); - } + }, }); const { rootEl } = elements; @@ -144,7 +144,7 @@ export const useDialogFoundation = ( if (surface) { focusTrap.current = focusTrapFactory(surface, { - initialFocusEl: defaultButton.current || undefined + initialFocusEl: defaultButton.current || undefined, }); } }, [rootEl.ref]); diff --git a/packages/react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx b/packages/react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx index df5097b0..7c5e9eb7 100644 --- a/packages/react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx +++ b/packages/react-ui-components/src/lib/drawer/drawer-ssr.spec.tsx @@ -8,7 +8,7 @@ import { DrawerContent, DrawerHeader, DrawerTitle, - DrawerSubtitle + DrawerSubtitle, } from './'; describe('Drawer SSR', () => { diff --git a/packages/react-ui-components/src/lib/drawer/drawer.spec.tsx b/packages/react-ui-components/src/lib/drawer/drawer.spec.tsx index 079a4c76..18c37a59 100644 --- a/packages/react-ui-components/src/lib/drawer/drawer.spec.tsx +++ b/packages/react-ui-components/src/lib/drawer/drawer.spec.tsx @@ -6,7 +6,7 @@ import { DrawerHeader, DrawerTitle, DrawerSubtitle, - DrawerAppContent + DrawerAppContent, } from './'; describe('Drawer', () => { diff --git a/packages/react-ui-components/src/lib/drawer/foundation.tsx b/packages/react-ui-components/src/lib/drawer/foundation.tsx index 56cc9c20..ae999a05 100644 --- a/packages/react-ui-components/src/lib/drawer/foundation.tsx +++ b/packages/react-ui-components/src/lib/drawer/foundation.tsx @@ -1,13 +1,13 @@ import { MDCModalDrawerFoundation, - MDCDismissibleDrawerFoundation + MDCDismissibleDrawerFoundation, } from '@material/drawer'; import { DrawerProps } from '.'; import { useFoundation, FocusTrap, focusTrapFactory, - triggerWindowResize + triggerWindowResize, } from '../base'; import React, { useRef, useEffect, useCallback } from 'react'; @@ -23,7 +23,7 @@ const useDrawerFoundationFactory = ( props, elements: { rootEl: true, - scrimEl: true + scrimEl: true, }, foundation: ({ rootEl, emit, getProps }) => { let previousFocusEl: HTMLElement; @@ -69,7 +69,7 @@ const useDrawerFoundationFactory = ( try { focusTrapRef.current?.releaseFocus(); } catch (err) {} - } + }, }); // Fixes a very annoying issue where the menu isn't stateful @@ -87,7 +87,7 @@ const useDrawerFoundationFactory = ( f.close = newClose; return f; - } + }, }); const { rootEl, scrimEl } = elements; diff --git a/packages/react-ui-components/src/lib/drawer/index.tsx b/packages/react-ui-components/src/lib/drawer/index.tsx index 5d9a199a..c14cabf8 100644 --- a/packages/react-ui-components/src/lib/drawer/index.tsx +++ b/packages/react-ui-components/src/lib/drawer/index.tsx @@ -2,12 +2,12 @@ import * as RMWC from '../types'; import React from 'react'; import { MDCModalDrawerFoundation, - MDCDismissibleDrawerFoundation + MDCDismissibleDrawerFoundation, } from '@material/drawer'; import { mergeRefs, Tag, useClassNames, createComponent } from '../base'; import { useDismissableDrawerFoundation, - useModalDrawerFoundation + useModalDrawerFoundation, } from './foundation'; /*************************************************************************************** @@ -89,8 +89,8 @@ const DrawerRoot = createComponent(function DrawerRoot( 'mdc-drawer', { 'mdc-drawer--dismissible': dismissible, - 'mdc-drawer--modal': modal - } + 'mdc-drawer--modal': modal, + }, ]); return ; @@ -146,7 +146,7 @@ export const DrawerContent = createComponent( /** Protects the app's UI from interactions while a modal drawer is open. */ const DrawerScrim = ({ - onClick + onClick, }: { onClick: (evt: React.MouseEvent) => void; }) =>
    ; diff --git a/packages/react-ui-components/src/lib/elevation/index.tsx b/packages/react-ui-components/src/lib/elevation/index.tsx index c48abac6..8d958f5f 100644 --- a/packages/react-ui-components/src/lib/elevation/index.tsx +++ b/packages/react-ui-components/src/lib/elevation/index.tsx @@ -23,7 +23,7 @@ export const Elevation = createComponent(function Elevation( const className = useClassNames(props, [ `mdc-elevation--z${z}`, - { 'mdc-elevation-transition': transition } + { 'mdc-elevation-transition': transition }, ]); if (wrap) { diff --git a/packages/react-ui-components/src/lib/fab/index.tsx b/packages/react-ui-components/src/lib/fab/index.tsx index a0bc79ad..3e1a7cf9 100644 --- a/packages/react-ui-components/src/lib/fab/index.tsx +++ b/packages/react-ui-components/src/lib/fab/index.tsx @@ -38,8 +38,8 @@ export const Fab = withRipple({ surface: false })( { 'mdc-fab--mini': mini, 'mdc-fab--exited': exited, - 'mdc-fab--extended': label - } + 'mdc-fab--extended': label, + }, ]); if (trailingIcon && !label) { diff --git a/packages/react-ui-components/src/lib/floating-label/foundation.tsx b/packages/react-ui-components/src/lib/floating-label/foundation.tsx index 4b127a4f..e77728b3 100644 --- a/packages/react-ui-components/src/lib/floating-label/foundation.tsx +++ b/packages/react-ui-components/src/lib/floating-label/foundation.tsx @@ -3,7 +3,7 @@ import { useFoundation } from '../base'; import { FloatingLabelProps, FloatingLabelApi } from '.'; import { MDCFloatingLabelFoundation, - MDCFloatingLabelAdapter + MDCFloatingLabelAdapter, } from '@material/floating-label'; import { EventType, SpecificEventListener } from '@material/base/types'; import React, { useEffect } from 'react'; @@ -14,17 +14,17 @@ export const useFloatingLabelFoundation = ( const { foundation, ...elements } = useFoundation({ props, elements: { - rootEl: true + rootEl: true, }, api: ({ - foundation + foundation, }: { foundation: MDCFloatingLabelFoundation; }): FloatingLabelApi => { return { getWidth() { return foundation.getWidth(); - } + }, }; }, foundation: ({ rootEl }) => { @@ -39,9 +39,9 @@ export const useFloatingLabelFoundation = ( deregisterInteractionHandler: ( evtType: K, handler: SpecificEventListener - ): void => rootEl.removeEventListener(evtType, handler) + ): void => rootEl.removeEventListener(evtType, handler), } as MDCFloatingLabelAdapter); - } + }, }); // Shake diff --git a/packages/react-ui-components/src/lib/formfield/foundation.tsx b/packages/react-ui-components/src/lib/formfield/foundation.tsx index f21bc993..e830f4da 100644 --- a/packages/react-ui-components/src/lib/formfield/foundation.tsx +++ b/packages/react-ui-components/src/lib/formfield/foundation.tsx @@ -23,7 +23,7 @@ export const useFormfieldFoundation = ( handler: SpecificEventListener ): void => {}, activateInputRipple: () => {}, - deactivateInputRipple: () => {} - }) + deactivateInputRipple: () => {}, + }), }); }; diff --git a/packages/react-ui-components/src/lib/formfield/index.tsx b/packages/react-ui-components/src/lib/formfield/index.tsx index 9e4304d0..234d19d0 100644 --- a/packages/react-ui-components/src/lib/formfield/index.tsx +++ b/packages/react-ui-components/src/lib/formfield/index.tsx @@ -24,8 +24,8 @@ export const FormField = createComponent(function FormField( const className = useClassNames(props, [ 'mdc-form-field', { - 'mdc-form-field--align-end': props.alignEnd - } + 'mdc-form-field--align-end': props.alignEnd, + }, ]); return ; }); diff --git a/packages/react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx b/packages/react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx index 4ac1fb22..c7f3bd28 100644 --- a/packages/react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx +++ b/packages/react-ui-components/src/lib/grid-list/grid-list-ssr.spec.tsx @@ -11,7 +11,7 @@ import { GridTilePrimary, GridTilePrimaryContent, GridTileSecondary, - GridTileTitle + GridTileTitle, } from './'; describe('GridList SSR', () => { diff --git a/packages/react-ui-components/src/lib/grid-list/grid-list.spec.tsx b/packages/react-ui-components/src/lib/grid-list/grid-list.spec.tsx index 2dbefaa1..4a5f2dcb 100644 --- a/packages/react-ui-components/src/lib/grid-list/grid-list.spec.tsx +++ b/packages/react-ui-components/src/lib/grid-list/grid-list.spec.tsx @@ -7,7 +7,7 @@ import { GridTilePrimary, GridTilePrimaryContent, GridTileSecondary, - GridTileTitle + GridTileTitle, } from './'; describe('GridList', () => { @@ -57,7 +57,7 @@ describe('GridList', () => { GridTileIcon, GridTilePrimary, GridTileSecondary, - GridTileTitle + GridTileTitle, ].forEach((Component: React.ComponentType) => { const el = mount(); expect(!!~el.html().search('my-custom-classname')).toEqual(true); diff --git a/packages/react-ui-components/src/lib/grid-list/index.tsx b/packages/react-ui-components/src/lib/grid-list/index.tsx index b61f637d..15eceb96 100644 --- a/packages/react-ui-components/src/lib/grid-list/index.tsx +++ b/packages/react-ui-components/src/lib/grid-list/index.tsx @@ -6,7 +6,7 @@ import { useClassNames, Tag, createComponent, - createMemoComponent + createMemoComponent, } from '../base'; /** Grid List Component */ @@ -45,8 +45,8 @@ export const GridList = createComponent(function GridList( 'mdc-grid-list--header-caption': headerCaption, 'mdc-grid-list--twoline-caption': twolineCaption, 'mdc-grid-list--with-icon-align-start': withIconAlignStart, - [`mdc-grid-list--tile-aspect-${tileAspect || ''}`]: tileAspect - } + [`mdc-grid-list--tile-aspect-${tileAspect || ''}`]: tileAspect, + }, ]); return ( diff --git a/packages/react-ui-components/src/lib/grid/index.tsx b/packages/react-ui-components/src/lib/grid/index.tsx index 3649813b..ba6b3f5e 100644 --- a/packages/react-ui-components/src/lib/grid/index.tsx +++ b/packages/react-ui-components/src/lib/grid/index.tsx @@ -1,12 +1,7 @@ // eslint-disable-next-line @typescript-eslint/no-unused-vars import * as RMWC from '../types'; import React from 'react'; -import { - getDisplayName, - Tag, - useClassNames, - createComponent -} from '../base'; +import { getDisplayName, Tag, useClassNames, createComponent } from '../base'; /** A Grid component */ export interface GridProps { @@ -26,8 +21,8 @@ export const Grid = createComponent(function Grid(props, ref) { 'mdc-layout-grid', { [`mdc-layout-grid--align-${align || ''}`]: props.align !== undefined, - 'mdc-layout-grid--fixed-column-width': fixedColumnWidth - } + 'mdc-layout-grid--fixed-column-width': fixedColumnWidth, + }, ]); return ( @@ -69,8 +64,8 @@ export const GridCell = createComponent(function GridCell( [`mdc-layout-grid__cell--span-${tablet || ''}-tablet`]: tablet !== undefined, [`mdc-layout-grid__cell--span-${desktop || ''}-desktop`]: - props.desktop !== undefined - } + props.desktop !== undefined, + }, ]); return ; }); diff --git a/packages/react-ui-components/src/lib/icon-button/foundation.tsx b/packages/react-ui-components/src/lib/icon-button/foundation.tsx index 2da5a99e..372164f1 100644 --- a/packages/react-ui-components/src/lib/icon-button/foundation.tsx +++ b/packages/react-ui-components/src/lib/icon-button/foundation.tsx @@ -16,9 +16,9 @@ export const useIconButtonFoundation = ( hasClass: (className: string) => rootEl.hasClass(className), setAttr: (attrName: string, attrValue: string | number | null) => rootEl.setProp(attrName as any, attrValue), - notifyChange: (evtData: { isOn: boolean }) => emit('onChange', evtData) + notifyChange: (evtData: { isOn: boolean }) => emit('onChange', evtData), }); - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/icon-button/index.tsx b/packages/react-ui-components/src/lib/icon-button/index.tsx index f15e42b8..9ca9091d 100644 --- a/packages/react-ui-components/src/lib/icon-button/index.tsx +++ b/packages/react-ui-components/src/lib/icon-button/index.tsx @@ -80,15 +80,15 @@ const IconButtonToggle = createComponent( const IconButtonRoot = withRipple({ surface: false, - unbounded: true + unbounded: true, })( createComponent(function IconButtonRoot(props, ref) { const { checked, label, foundationRef, ...rest } = props; const className = useClassNames(props, [ 'mdc-icon-button', { - 'mdc-icon-button--on': checked - } + 'mdc-icon-button--on': checked, + }, ]); return ( (function IconButtonToggleRoot(props, ref) { const { checked, ...rest } = props; const className = useClassNames(props, [ 'mdc-icon-button', { - 'mdc-icon-button--on': checked - } + 'mdc-icon-button--on': checked, + }, ]); return ( ; }); diff --git a/packages/react-ui-components/src/lib/icon/icon.spec.tsx b/packages/react-ui-components/src/lib/icon/icon.spec.tsx index 4e73b0c4..ed31c7e5 100644 --- a/packages/react-ui-components/src/lib/icon/icon.spec.tsx +++ b/packages/react-ui-components/src/lib/icon/icon.spec.tsx @@ -86,7 +86,7 @@ describe('Icon', () => { icon: 'ionic', prefix: 'ion-', strategy: 'className', - basename: 'icon' + basename: 'icon', }} /> ); @@ -102,7 +102,7 @@ describe('Icon', () => { // @ts-ignore icon={{ icon: 'foo', - strategy: 'error' + strategy: 'error', }} /> ); @@ -120,7 +120,7 @@ describe('Icon', () => { Customized- {props.content}
    - ) + ), }} /> ); diff --git a/packages/react-ui-components/src/lib/icon/index.tsx b/packages/react-ui-components/src/lib/icon/index.tsx index e65fcfa7..4a0293df 100644 --- a/packages/react-ui-components/src/lib/icon/index.tsx +++ b/packages/react-ui-components/src/lib/icon/index.tsx @@ -62,7 +62,7 @@ const renderUrl = ({ content, ...rest }: { content: string }) => ( {...rest} style={{ ...(rest as any).style, - backgroundImage: `url(${content})` + backgroundImage: `url(${content})`, }} /> ); @@ -92,13 +92,13 @@ const iconRenderMap: { className: renderClassName, url: renderUrl, component: renderComponent, - auto: undefined + auto: undefined, }; const buildIconOptions = (icon?: RMWC.IconPropT) => { if (React.isValidElement(icon) || (icon && typeof icon !== 'object')) { return { - icon + icon, }; } return icon as RMWC.IconOptions; @@ -128,7 +128,7 @@ export const Icon = createComponent(function ( size, ...optionsRest }: RMWC.IconOptions = { - ...buildIconOptions(icon) + ...buildIconOptions(icon), }; // Get provider options @@ -136,7 +136,7 @@ export const Icon = createComponent(function ( basename: providerBasename = null, prefix: providerPrefix = null, strategy: providerStrategy = null, - render: providerRender = null + render: providerRender = null, } = providerContext.icon || {}; const contentToUse = content; @@ -181,9 +181,9 @@ export const Icon = createComponent(function ( optionsRest.className, iconClassName, { - [`rmwc-icon--size-${size || ''}`]: !!size + [`rmwc-icon--size-${size || ''}`]: !!size, } - ) + ), }); const childDisplayName = getDisplayName(rendered.props.children); @@ -201,7 +201,7 @@ export const Icon = createComponent(function ( className: classNames( rendered.props.className, rendered.props.children.props.className - ) + ), }); } diff --git a/packages/react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx b/packages/react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx index 75d583d0..9c9a1ccd 100644 --- a/packages/react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx +++ b/packages/react-ui-components/src/lib/image-list/image-list-ssr.spec.tsx @@ -10,7 +10,7 @@ import { ImageListImageAspectContainer, ImageListImage, ImageListSupporting, - ImageListLabel + ImageListLabel, } from './'; const images = [ @@ -28,7 +28,7 @@ const images = [ 'https://material-components-web.appspot.com/images/photos/2x3/6.jpg', 'https://material-components-web.appspot.com/images/photos/3x2/15.jpg', 'https://material-components-web.appspot.com/images/photos/3x2/16.jpg', - 'https://material-components-web.appspot.com/images/photos/2x3/7.jpg' + 'https://material-components-web.appspot.com/images/photos/2x3/7.jpg', ]; describe('ImageList SSR', () => { diff --git a/packages/react-ui-components/src/lib/image-list/image-list.spec.tsx b/packages/react-ui-components/src/lib/image-list/image-list.spec.tsx index f1e52443..a040796a 100644 --- a/packages/react-ui-components/src/lib/image-list/image-list.spec.tsx +++ b/packages/react-ui-components/src/lib/image-list/image-list.spec.tsx @@ -6,7 +6,7 @@ import { ImageListImageAspectContainer, ImageListImage, ImageListSupporting, - ImageListLabel + ImageListLabel, } from './'; const images = [ @@ -24,7 +24,7 @@ const images = [ 'https://material-components-web.appspot.com/images/photos/2x3/6.jpg', 'https://material-components-web.appspot.com/images/photos/3x2/15.jpg', 'https://material-components-web.appspot.com/images/photos/3x2/16.jpg', - 'https://material-components-web.appspot.com/images/photos/2x3/7.jpg' + 'https://material-components-web.appspot.com/images/photos/2x3/7.jpg', ]; describe('ImageList', () => { diff --git a/packages/react-ui-components/src/lib/image-list/index.tsx b/packages/react-ui-components/src/lib/image-list/index.tsx index a1bd4bce..74332226 100644 --- a/packages/react-ui-components/src/lib/image-list/index.tsx +++ b/packages/react-ui-components/src/lib/image-list/index.tsx @@ -21,8 +21,8 @@ export const ImageList = createComponent(function ImageList( 'mdc-image-list', { 'mdc-image-list--masonry': masonry, - 'mdc-image-list--with-text-protection': withTextProtection - } + 'mdc-image-list--with-text-protection': withTextProtection, + }, ]); return ; }); @@ -46,7 +46,7 @@ export const ImageListImageAspectContainer = createComponent< ImageListImageAspectContainerProps >(function ImageListImageAspectContainer(props, ref) { const className = useClassNames(props, [ - 'mdc-image-list__image-aspect-container' + 'mdc-image-list__image-aspect-container', ]); return ; }); diff --git a/packages/react-ui-components/src/lib/line-ripple/foundation.tsx b/packages/react-ui-components/src/lib/line-ripple/foundation.tsx index 92490010..acf23057 100644 --- a/packages/react-ui-components/src/lib/line-ripple/foundation.tsx +++ b/packages/react-ui-components/src/lib/line-ripple/foundation.tsx @@ -10,7 +10,7 @@ export const useLineRippleFoundation = ( const { foundation, ...elements } = useFoundation({ props, elements: { - rootEl: true + rootEl: true, }, foundation: ({ rootEl }) => { return new MDCLineRippleFoundation({ @@ -26,9 +26,9 @@ export const useLineRippleFoundation = ( deregisterEventHandler: ( evtType: K, handler: SpecificEventListener - ) => rootEl.removeEventListener(evtType, handler) + ) => rootEl.removeEventListener(evtType, handler), }); - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/linear-progress/foundation.tsx b/packages/react-ui-components/src/lib/linear-progress/foundation.tsx index 40b39f80..e6f70430 100644 --- a/packages/react-ui-components/src/lib/linear-progress/foundation.tsx +++ b/packages/react-ui-components/src/lib/linear-progress/foundation.tsx @@ -30,9 +30,9 @@ export const useLinearProgressFoundation = (props: LinearProgressProps) => { value: string | null ) => { (el.style as any)[styleProperty] = value; - } + }, }); - } + }, }); const [determinate, setDeterminate] = useState( diff --git a/packages/react-ui-components/src/lib/linear-progress/index.tsx b/packages/react-ui-components/src/lib/linear-progress/index.tsx index 7b31880c..61c75d04 100644 --- a/packages/react-ui-components/src/lib/linear-progress/index.tsx +++ b/packages/react-ui-components/src/lib/linear-progress/index.tsx @@ -34,8 +34,8 @@ export const LinearProgress = createComponent( 'mdc-linear-progress', { 'mdc-linear-progress--reversed': reversed, - 'mdc-linear-progress--closed': closed - } + 'mdc-linear-progress--closed': closed, + }, ]); const { rootEl } = useLinearProgressFoundation(props); diff --git a/packages/react-ui-components/src/lib/list/collapsible-list.tsx b/packages/react-ui-components/src/lib/list/collapsible-list.tsx index 8a5371e0..82c499e7 100644 --- a/packages/react-ui-components/src/lib/list/collapsible-list.tsx +++ b/packages/react-ui-components/src/lib/list/collapsible-list.tsx @@ -61,7 +61,7 @@ export class CollapsibleList extends React.Component< if (props.open !== undefined && props.open !== state.open) { return { ...state, - open: props.open + open: props.open, }; } @@ -75,7 +75,7 @@ export class CollapsibleList extends React.Component< state: CollapsibleState = { open: !!this.props.defaultOpen || !!this.props.open, - childrenStyle: {} + childrenStyle: {}, }; constructor(props: any) { @@ -108,7 +108,7 @@ export class CollapsibleList extends React.Component< const childrenStyle = { maxHeight: this.childContainer ? `${this.childContainer.offsetHeight}px` - : '0px' + : '0px', }; this.setState({ childrenStyle }, () => { @@ -118,8 +118,8 @@ export class CollapsibleList extends React.Component< if (this.state.open) { this.setState({ childrenStyle: { - maxHeight: 'none' - } + maxHeight: 'none', + }, }); } }, 300); @@ -127,7 +127,7 @@ export class CollapsibleList extends React.Component< onClose && onClose(); this.rafId = window.requestAnimationFrame(() => { this.setState({ - childrenStyle: {} + childrenStyle: {}, }); }); } @@ -229,14 +229,14 @@ export class CollapsibleList extends React.Component< onFocus={this.handleFocus} ref={(el: HTMLDivElement) => (this.root = el)} className={classNames('rmwc-collapsible-list', className, { - 'rmwc-collapsible-list--open': open + 'rmwc-collapsible-list--open': open, })} >
    {React.cloneElement(handle, { ...handle.props, onClick: this.handleClick, - onKeyDown: this.handleKeydown + onKeyDown: this.handleKeydown, })}
    diff --git a/packages/react-ui-components/src/lib/list/foundation.tsx b/packages/react-ui-components/src/lib/list/foundation.tsx index 0185ac1a..3e44ae0a 100644 --- a/packages/react-ui-components/src/lib/list/foundation.tsx +++ b/packages/react-ui-components/src/lib/list/foundation.tsx @@ -18,7 +18,7 @@ export const useListFoundation = (props: ListProps & React.HTMLProps) => { props, api: ({ rootEl, - foundation + foundation, }: { rootEl: FoundationElement; foundation: MDCListFoundation; @@ -32,7 +32,7 @@ export const useListFoundation = (props: ListProps & React.HTMLProps) => { removeClassFromElementAtIndex: adapter.removeClassForElementIndex, setAttributeForElementIndex: adapter.setAttributeForElementIndex, getListItemCount: adapter.getListItemCount, - focusItemAtIndex: adapter.focusItemAtIndex + focusItemAtIndex: adapter.focusItemAtIndex, }; }, elements: { rootEl: true }, @@ -142,9 +142,9 @@ export const useListFoundation = (props: ListProps & React.HTMLProps) => { isFocusInsideList: () => { return !!rootEl.ref?.contains(document.activeElement); }, - isRootFocused: () => document.activeElement === rootEl.ref + isRootFocused: () => document.activeElement === rootEl.ref, }); - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/list/list-item.tsx b/packages/react-ui-components/src/lib/list/list-item.tsx index 080c5eed..8277f95b 100644 --- a/packages/react-ui-components/src/lib/list/list-item.tsx +++ b/packages/react-ui-components/src/lib/list/list-item.tsx @@ -24,8 +24,8 @@ export const ListItem = withRipple({ surface: false })( { 'mdc-list-item--selected': props.selected, 'mdc-list-item--activated': props.activated, - 'mdc-list-item--disabled': props.disabled - } + 'mdc-list-item--disabled': props.disabled, + }, ]); return ( @@ -98,7 +98,7 @@ export const ListItemMeta = createComponent( return React.cloneElement(props.children, { ...rest, ...props.children.props, - className: classNames(className, props.children.props.className) + className: classNames(className, props.children.props.className), }); } diff --git a/packages/react-ui-components/src/lib/list/list-ssr.spec.tsx b/packages/react-ui-components/src/lib/list/list-ssr.spec.tsx index 2e4c3f33..503b83d9 100644 --- a/packages/react-ui-components/src/lib/list/list-ssr.spec.tsx +++ b/packages/react-ui-components/src/lib/list/list-ssr.spec.tsx @@ -10,7 +10,7 @@ import { ListItemPrimaryText, ListItemGraphic, ListItemMeta, - SimpleListItem + SimpleListItem, } from './'; describe('List SSR', () => { diff --git a/packages/react-ui-components/src/lib/list/list.spec.tsx b/packages/react-ui-components/src/lib/list/list.spec.tsx index c58c1902..f7a9ccd4 100644 --- a/packages/react-ui-components/src/lib/list/list.spec.tsx +++ b/packages/react-ui-components/src/lib/list/list.spec.tsx @@ -7,7 +7,7 @@ import { ListItemGraphic, ListItemMeta, SimpleListItem, - CollapsibleList + CollapsibleList, } from './'; describe('List', () => { diff --git a/packages/react-ui-components/src/lib/list/list.tsx b/packages/react-ui-components/src/lib/list/list.tsx index df3e5af2..0ff67aa1 100644 --- a/packages/react-ui-components/src/lib/list/list.tsx +++ b/packages/react-ui-components/src/lib/list/list.tsx @@ -63,8 +63,8 @@ export const List = createComponent(function List(props, ref) { 'mdc-list--dense': dense, 'mdc-list--two-line': twoLine, 'mdc-list--avatar-list': avatarList, - 'mdc-list--non-interactive': nonInteractive - } + 'mdc-list--non-interactive': nonInteractive, + }, ]); return ( diff --git a/packages/react-ui-components/src/lib/menu/menu-surface/foundation.tsx b/packages/react-ui-components/src/lib/menu/menu-surface/foundation.tsx index ebc3fac3..a65e6ec8 100644 --- a/packages/react-ui-components/src/lib/menu/menu-surface/foundation.tsx +++ b/packages/react-ui-components/src/lib/menu/menu-surface/foundation.tsx @@ -4,14 +4,14 @@ import { closest, emptyClientRect, FoundationElement, - raf + raf, } from '../../base'; import { MDCMenuSurfaceFoundation, util, MDCMenuDimensions, Corner, - MDCMenuDistance + MDCMenuDistance, } from '@material/menu-surface'; import { MenuSurfaceProps, MenuSurfaceApi } from '.'; @@ -25,7 +25,7 @@ const ANCHOR_CORNER_MAP: { topEnd: 'TOP_END', topLeft: 'TOP_LEFT', topRight: 'TOP_RIGHT', - topStart: 'TOP_START' + topStart: 'TOP_START', }; const getAnchorCornerFromProp = ( @@ -46,7 +46,7 @@ export const useMenuSurfaceFoundation = ( elements: { rootEl: true }, api: ({ foundation, - rootEl + rootEl, }: { foundation: MDCMenuSurfaceFoundation; rootEl: FoundationElement; @@ -59,7 +59,7 @@ export const useMenuSurfaceFoundation = ( setAnchorElement: (element: HTMLElement) => (anchorElementRef.current = element), setOpen: (open: boolean) => setOpen(open), - getSurfaceElement: () => rootEl.ref + getSurfaceElement: () => rootEl.ref, }; }, foundation: ({ rootEl, getProps, emit }) => { @@ -108,7 +108,7 @@ export const useMenuSurfaceFoundation = ( focusLastElement: () => !!firstFocusableElementRef.current && firstFocusableElementRef.current.focus && - firstFocusableElementRef.current.focus() + firstFocusableElementRef.current.focus(), }; }; @@ -117,7 +117,7 @@ export const useMenuSurfaceFoundation = ( getInnerDimensions: (): MDCMenuDimensions => { return { width: rootEl.ref ? rootEl.ref.offsetWidth : 0, - height: rootEl.ref ? rootEl.ref.offsetHeight : 0 + height: rootEl.ref ? rootEl.ref.offsetHeight : 0, }; }, getAnchorDimensions: () => { @@ -129,13 +129,13 @@ export const useMenuSurfaceFoundation = ( getWindowDimensions: () => { return { width: window.innerWidth, - height: window.innerHeight + height: window.innerHeight, }; }, getBodyDimensions: () => { return { width: document.body.clientWidth, - height: document.body.clientHeight + height: document.body.clientHeight, }; }, getWindowScroll: () => { @@ -161,7 +161,7 @@ export const useMenuSurfaceFoundation = ( }, setMaxHeight: (height: string) => { rootEl.setStyle('maxHeight', height); - } + }, }; }; @@ -195,7 +195,7 @@ export const useMenuSurfaceFoundation = ( ); }, ...getFocusAdapterMethods(), - ...getDimensionAdapterMethods() + ...getDimensionAdapterMethods(), }); // Fixes a very annoying issue where the menu isn't stateful @@ -220,7 +220,7 @@ export const useMenuSurfaceFoundation = ( }; return f; - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/menu/menu-surface/index.tsx b/packages/react-ui-components/src/lib/menu/menu-surface/index.tsx index eecee211..68f9b019 100644 --- a/packages/react-ui-components/src/lib/menu/menu-surface/index.tsx +++ b/packages/react-ui-components/src/lib/menu/menu-surface/index.tsx @@ -72,8 +72,8 @@ export const MenuSurface = createComponent( const className = useClassNames(props, [ 'mdc-menu-surface', { - 'mdc-menu-surface--fixed': fixed - } + 'mdc-menu-surface--fixed': fixed, + }, ]); return ( diff --git a/packages/react-ui-components/src/lib/menu/menu.spec.tsx b/packages/react-ui-components/src/lib/menu/menu.spec.tsx index 4be298ce..1ec9974e 100644 --- a/packages/react-ui-components/src/lib/menu/menu.spec.tsx +++ b/packages/react-ui-components/src/lib/menu/menu.spec.tsx @@ -6,7 +6,7 @@ import { MenuSurface, MenuItem, SimpleMenu, - SimpleMenuSurface + SimpleMenuSurface, } from './'; describe('Menu', () => { diff --git a/packages/react-ui-components/src/lib/menu/menu/foundation.tsx b/packages/react-ui-components/src/lib/menu/menu/foundation.tsx index 220123bb..56827869 100644 --- a/packages/react-ui-components/src/lib/menu/menu/foundation.tsx +++ b/packages/react-ui-components/src/lib/menu/menu/foundation.tsx @@ -27,10 +27,10 @@ export const useMenuFoundation = (props: MenuProps & React.HTMLProps) => { props: { ...props, // we don't want to pass the apiRef all the way through - apiRef: undefined + apiRef: undefined, }, elements: { - rootEl: true + rootEl: true, }, foundation: ({ emit }) => { return new MDCMenuFoundation({ @@ -55,14 +55,14 @@ export const useMenuFoundation = (props: MenuProps & React.HTMLProps) => { notifySelected: (evtData: { index: number; item: HTMLElement }) => emit('onSelect', { index: evtData.index, - item: items()[evtData.index] + item: items()[evtData.index], }), getMenuItemCount: () => listApi.current?.getListItemCount() || 0, focusItemAtIndex: (...args) => listApi.current?.focusItemAtIndex(...args), - focusListRoot: () => listApi.current?.focusRoot() + focusListRoot: () => listApi.current?.focusRoot(), }); - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/menu/menu/index.tsx b/packages/react-ui-components/src/lib/menu/menu/index.tsx index 9d4c26a8..c7a8f39b 100644 --- a/packages/react-ui-components/src/lib/menu/menu/index.tsx +++ b/packages/react-ui-components/src/lib/menu/menu/index.tsx @@ -6,7 +6,7 @@ import { getDisplayName, classNames, useClassNames, - createComponent + createComponent, } from '../../base'; import { @@ -14,7 +14,7 @@ import { MenuSurfaceAnchor, MenuSurfaceProps, MenuSurfaceOnCloseEventT, - MenuSurfaceApi + MenuSurfaceApi, } from '../menu-surface'; import { useMenuFoundation } from './foundation'; @@ -90,7 +90,7 @@ export const Menu: RMWC.ComponentType< ).every((val) => val === false); const menuItemsProps = { - apiRef: setListApi + apiRef: setListApi, }; return ( @@ -108,7 +108,7 @@ export const Menu: RMWC.ComponentType< if (isMenuItems(child)) { return React.cloneElement(child as React.ReactElement, { ...(React.isValidElement(child) ? (child.props as Object) : {}), - ...menuItemsProps + ...menuItemsProps, }); } return child; @@ -177,7 +177,7 @@ const simpleMenuFactory = < if (handle.props.onClick) { handle.props.onClick(evt); } - } + }, }); const wrappedOnClose = (evt: MenuSurfaceOnCloseEventT) => { diff --git a/packages/react-ui-components/src/lib/notched-outline/foundation.tsx b/packages/react-ui-components/src/lib/notched-outline/foundation.tsx index 8665d3e6..1256fc94 100644 --- a/packages/react-ui-components/src/lib/notched-outline/foundation.tsx +++ b/packages/react-ui-components/src/lib/notched-outline/foundation.tsx @@ -10,7 +10,7 @@ export const useNotchedOutlineFoundation = ( props, elements: { rootEl: true, - notchedEl: true + notchedEl: true, }, foundation: ({ rootEl, notchedEl }) => { return new MDCNotchedOutlineFoundation({ @@ -18,9 +18,9 @@ export const useNotchedOutlineFoundation = ( removeClass: (className: string) => rootEl.removeClass(className), setNotchWidthProperty: (width: number) => notchedEl.setStyle('width', width + 'px'), - removeNotchWidthProperty: () => notchedEl.setStyle('width', '') + removeNotchWidthProperty: () => notchedEl.setStyle('width', ''), }); - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/notched-outline/index.tsx b/packages/react-ui-components/src/lib/notched-outline/index.tsx index e78a7ebb..81f5695d 100644 --- a/packages/react-ui-components/src/lib/notched-outline/index.tsx +++ b/packages/react-ui-components/src/lib/notched-outline/index.tsx @@ -27,7 +27,7 @@ export const NotchedOutline = createComponent(
    diff --git a/packages/react-ui-components/src/lib/provider/index.tsx b/packages/react-ui-components/src/lib/provider/index.tsx index ac24c3b2..3a82dd76 100644 --- a/packages/react-ui-components/src/lib/provider/index.tsx +++ b/packages/react-ui-components/src/lib/provider/index.tsx @@ -69,7 +69,7 @@ const providerDefaults: RMWCProviderProps = { showArrow: false, activateOn: ['hover', 'focus'], enterDelay: 0, - leaveDelay: 0 + leaveDelay: 0, }, typography: {}, icon: { @@ -77,8 +77,8 @@ const providerDefaults: RMWCProviderProps = { basename: 'material-icons', prefix: '', strategy: 'auto', - render: undefined - } + render: undefined, + }, }; export const ProviderContext = React.createContext(providerDefaults); @@ -91,7 +91,7 @@ export const RMWCProvider = ({ children, ...rest }: RMWCProviderProps) => { {children} diff --git a/packages/react-ui-components/src/lib/radio/foundation.tsx b/packages/react-ui-components/src/lib/radio/foundation.tsx index c236d99e..0427590e 100644 --- a/packages/react-ui-components/src/lib/radio/foundation.tsx +++ b/packages/react-ui-components/src/lib/radio/foundation.tsx @@ -15,14 +15,14 @@ export const useRadioFoundation = (props: RadioProps & RadioHTMLProps) => { const { foundation, ...elements } = useFoundation({ props, elements: { - rootEl: true + rootEl: true, }, foundation: ({ rootEl }) => { return new MDCRadioFoundation({ addClass: (className: string) => rootEl.addClass(className), - removeClass: (className: string) => rootEl.removeClass(className) + removeClass: (className: string) => rootEl.removeClass(className), }); - } + }, }); return { foundation, renderToggle, toggleRootProps, id, ...elements }; diff --git a/packages/react-ui-components/src/lib/radio/index.tsx b/packages/react-ui-components/src/lib/radio/index.tsx index bc8a2d48..1267c576 100644 --- a/packages/react-ui-components/src/lib/radio/index.tsx +++ b/packages/react-ui-components/src/lib/radio/index.tsx @@ -67,7 +67,7 @@ const RadioRipple = React.memo(function RadioRipple() { const RadioRoot = withRipple({ surface: false, - unbounded: true + unbounded: true, })( React.forwardRef(function RadioRoot( props, @@ -77,8 +77,8 @@ const RadioRoot = withRipple({ const className = useClassNames(props, [ 'mdc-radio', { - 'mdc-radio--disabled': disabled - } + 'mdc-radio--disabled': disabled, + }, ]); return ; }) diff --git a/packages/react-ui-components/src/lib/ripple/foundation.tsx b/packages/react-ui-components/src/lib/ripple/foundation.tsx index e91116f3..6b777118 100644 --- a/packages/react-ui-components/src/lib/ripple/foundation.tsx +++ b/packages/react-ui-components/src/lib/ripple/foundation.tsx @@ -21,7 +21,7 @@ export const useRippleFoundation = ( props, elements: { rootEl: true, - surfaceEl: true + surfaceEl: true, }, foundation: ({ rootEl, surfaceEl, getProps }) => { return new MDCRippleFoundation({ @@ -80,10 +80,10 @@ export const useRippleFoundation = ( rootEl.ref ? rootEl.ref.getBoundingClientRect() : emptyClientRect, getWindowPageOffset: () => ({ x: window.pageXOffset, - y: window.pageYOffset - }) + y: window.pageYOffset, + }), }); - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/ripple/index.tsx b/packages/react-ui-components/src/lib/ripple/index.tsx index 0ee58af2..54a466cc 100644 --- a/packages/react-ui-components/src/lib/ripple/index.tsx +++ b/packages/react-ui-components/src/lib/ripple/index.tsx @@ -102,7 +102,7 @@ export const Ripple = withDomNode()(function Ripple( 'mdc-ripple-surface': typeof surface === 'boolean' ? surface : surface === undefined, 'mdc-ripple-surface--primary': primary, - 'mdc-ripple-surface--accent': accent + 'mdc-ripple-surface--accent': accent, } ); @@ -124,8 +124,8 @@ export const Ripple = withDomNode()(function Ripple( ...rest, style: child.props.style, ...rippleSurfaceProps, - className: finalClassNames - }) + className: finalClassNames, + }), }); return ( @@ -164,7 +164,7 @@ interface WithRippleOpts { export const withRipple = ({ unbounded: defaultUnbounded, accent: defaultAccent, - surface: defaultSurface + surface: defaultSurface, }: WithRippleOpts = {}) =>

    >( Component: C ): C => { diff --git a/packages/react-ui-components/src/lib/select/select-icon/foundation.tsx b/packages/react-ui-components/src/lib/select/select-icon/foundation.tsx index e7d443ee..b6a2d1af 100644 --- a/packages/react-ui-components/src/lib/select/select-icon/foundation.tsx +++ b/packages/react-ui-components/src/lib/select/select-icon/foundation.tsx @@ -13,12 +13,12 @@ export const useSelectIconFoundation = ( props, elements: { rootEl: true }, api: ({ - foundation + foundation, }: { foundation: MDCTextFieldIconFoundation; }): SelectIconApi => { return { - getFoundation: () => foundation + getFoundation: () => foundation, }; }, foundation: ({ rootEl, emit }) => { @@ -38,9 +38,9 @@ export const useSelectIconFoundation = ( evtType: K, handler: SpecificEventListener ) => rootEl.removeEventListener(evtType, handler), - notifyIconAction: () => emit('onClick', {}, true) + notifyIconAction: () => emit('onClick', {}, true), }); - } + }, }); return { ...elements }; diff --git a/packages/react-ui-components/src/lib/select/select-icon/index.tsx b/packages/react-ui-components/src/lib/select/select-icon/index.tsx index 2d92e5be..6db160ac 100644 --- a/packages/react-ui-components/src/lib/select/select-icon/index.tsx +++ b/packages/react-ui-components/src/lib/select/select-icon/index.tsx @@ -25,7 +25,7 @@ export const SelectIcon = function SelectIcon( ); diff --git a/packages/react-ui-components/src/lib/select/select.css b/packages/react-ui-components/src/lib/select/select.css index e5745a8c..388f0c6d 100644 --- a/packages/react-ui-components/src/lib/select/select.css +++ b/packages/react-ui-components/src/lib/select/select.css @@ -12,26 +12,26 @@ width: 100%; } -.mdc-select--focused .mdc-select__dropdown-icon{ +.mdc-select--focused .mdc-select__dropdown-icon { bottom: 8px; background: var(--mdc-theme-primary); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E"); + -webkit-mask-image: url('data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E'); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; mask-repeat: no-repeat; mask-position: center; - mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E"); + mask-image: url('data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E'); } -.mdc-select__dropdown-icon{ +.mdc-select__dropdown-icon { bottom: 8px; background: var(--mdc-theme-primary); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E"); + -webkit-mask-image: url('data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E'); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; mask-repeat: no-repeat; mask-position: center; - mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E"); + mask-image: url('data:image/svg+xml,%3Csvg%20width%3D%2210px%22%20height%3D%225px%22%20viewBox%3D%227%2010%2010%205%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%0A%20%20%20%20%3Cpolygon%20id%3D%22Shape%22%20stroke%3D%22none%22%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20opacity%3D%220.54%22%20points%3D%227%2010%2012%2015%2017%2010%22%3E%3C%2Fpolygon%3E%0A%3C%2Fsvg%3E'); } .rmwc-select__native-control { diff --git a/packages/react-ui-components/src/lib/select/select.spec.tsx b/packages/react-ui-components/src/lib/select/select.spec.tsx index b900f4b5..40d3939a 100644 --- a/packages/react-ui-components/src/lib/select/select.spec.tsx +++ b/packages/react-ui-components/src/lib/select/select.spec.tsx @@ -44,7 +44,7 @@ describe('Select', () => { helpText={{ children: 'selectHelpText', validationMsg: true, - persistent: true + persistent: true, }} options={{ 1: 'Cookies', 2: 'Pizza', 3: 'Icecream' }} /> @@ -92,18 +92,18 @@ describe('Select', () => { options={[ { label: 'Cookies', - value: '1' + value: '1', }, { label: 'Pizza', value: '2', 'aria-disabled': true, - tabIndex: -1 + tabIndex: -1, }, { label: 'Icecream', - value: '3' - } + value: '3', + }, ]} /> ); diff --git a/packages/react-ui-components/src/lib/select/select.story.tsx b/packages/react-ui-components/src/lib/select/select.story.tsx index 3dd6785b..7add2281 100644 --- a/packages/react-ui-components/src/lib/select/select.story.tsx +++ b/packages/react-ui-components/src/lib/select/select.story.tsx @@ -234,7 +234,6 @@ import React from 'react'; // ); // } - // function EnhancedSelectWithPortal(props: any) { // const [value, setValue] = useKnob('text', 'value', "Cookies"); diff --git a/packages/react-ui-components/src/lib/select/select/foundation.tsx b/packages/react-ui-components/src/lib/select/select/foundation.tsx index 7f2885b6..6ab84729 100644 --- a/packages/react-ui-components/src/lib/select/select/foundation.tsx +++ b/packages/react-ui-components/src/lib/select/select/foundation.tsx @@ -3,7 +3,7 @@ import { useFoundation, raf } from '../../base'; import { MDCSelectFoundation, MDCSelectAdapter, - cssClasses + cssClasses, } from '@material/select'; import { FloatingLabelApi } from '../../floating-label'; import { MenuApi } from '../../menu'; @@ -143,7 +143,7 @@ export const useSelectFoundation = ( addClassAtIndex: (...args) => menu.current?.addClassToElementIndex(...args), removeClassAtIndex: (...args) => - menu.current?.removeClassFromElementAtIndex(...args) + menu.current?.removeClassFromElementAtIndex(...args), }; }; @@ -172,12 +172,12 @@ export const useSelectFoundation = ( 'onChange', { index: selectedIndex.current, - value + value, }, true ); } - } + }, }; }; @@ -189,7 +189,7 @@ export const useSelectFoundation = ( }, closeOutline: () => { setNotchWidth(undefined); - } + }, }; }; @@ -201,7 +201,7 @@ export const useSelectFoundation = ( }, getLabelWidth: () => { return floatingLabel.current?.getWidth() || 0; - } + }, }; }; @@ -209,7 +209,7 @@ export const useSelectFoundation = ( return { leadingIcon: (leadingIcon.current && leadingIcon.current.getFoundation()) || - undefined + undefined, }; }; @@ -218,7 +218,7 @@ export const useSelectFoundation = ( ...getSelectAdapterMethods(), ...getCommonAdapterMethods(), ...getOutlineAdapterMethods(), - ...getLabelAdapterMethods() + ...getLabelAdapterMethods(), }, getFoundationMap() ); @@ -254,7 +254,7 @@ export const useSelectFoundation = ( Object.defineProperty(f, 'menuItemValues_', { get: () => { return adapter.getMenuItemValues(); - } + }, }); // We have to add some logic after the original init function @@ -274,7 +274,7 @@ export const useSelectFoundation = ( }; return f; - } + }, }); const { selectedTextEl, rootEl } = elements; @@ -408,6 +408,6 @@ export const useSelectFoundation = ( handleMenuClosed, handleMenuOpened, handleMenuSelected, - ...elements + ...elements, }; }; diff --git a/packages/react-ui-components/src/lib/select/select/index.tsx b/packages/react-ui-components/src/lib/select/select/index.tsx index 413992da..3f459c2f 100644 --- a/packages/react-ui-components/src/lib/select/select/index.tsx +++ b/packages/react-ui-components/src/lib/select/select/index.tsx @@ -12,7 +12,7 @@ import { MenuItems, MenuProps, MenuApi, - MenuOnSelectEventT + MenuOnSelectEventT, } from '../../menu'; import { ListGroup, ListGroupSubheader, ListDivider } from '../../list'; import { withRipple } from '../../ripple'; @@ -87,7 +87,7 @@ const createSelectOptions = (options: any): FormattedOption[] => { if (typeof options === 'object') { return Object.keys(options).map((value) => ({ value, - label: options[value] + label: options[value], })); } @@ -120,7 +120,7 @@ function NativeMenu( const renderOption = ({ label, option, - index + index, }: { label: React.ReactNode; option: FormattedOption; @@ -157,7 +157,7 @@ function NativeMenu( renderOption({ label, option: option as FormattedOption, - index + index, }) )} @@ -167,7 +167,7 @@ function NativeMenu( return renderOption({ label, option: option as FormattedOption, - index + index, }); } )} @@ -205,7 +205,7 @@ function EnhancedMenu(props: EnhancedMenuProps & SelectHTMLProps) { const renderOption = ({ label, - option + option, }: { label: React.ReactNode; option: FormattedOption; @@ -320,7 +320,7 @@ export const Select: RMWC.ComponentType< handleKeydown, handleMenuClosed, handleMenuOpened, - handleMenuSelected + handleMenuSelected, } = useSelectFoundation(props); const id = useId('select', props); @@ -332,8 +332,8 @@ export const Select: RMWC.ComponentType< 'mdc-select--required': !!props.required, 'mdc-select--invalid': !!invalid, 'mdc-select--with-leading-icon': !!icon, - 'mdc-select--no-label': !label - } + 'mdc-select--no-label': !label, + }, ]); const enhancedMenuProps = typeof enhanced === 'object' ? enhanced : {}; @@ -464,8 +464,8 @@ export const SelectHelperText: RMWC.ComponentType< 'mdc-select-helper-text', { 'mdc-select-helper-text--persistent': persistent, - 'mdc-select-helper-text--validation-msg': validationMsg - } + 'mdc-select-helper-text--validation-msg': validationMsg, + }, ]); return ; diff --git a/packages/react-ui-components/src/lib/slider/foundation.tsx b/packages/react-ui-components/src/lib/slider/foundation.tsx index 083ef0eb..71a0c7fa 100644 --- a/packages/react-ui-components/src/lib/slider/foundation.tsx +++ b/packages/react-ui-components/src/lib/slider/foundation.tsx @@ -22,7 +22,7 @@ export const useSliderFoundation = ( elements: { rootEl: true, thumbContainerEl: true, - sliderPinEl: true + sliderPinEl: true, }, foundation: ({ rootEl, thumbContainerEl, sliderPinEl, emit }) => { return new MDCSliderFoundation({ @@ -117,9 +117,9 @@ export const useSliderFoundation = ( ); }, isRTL: () => - !!rootEl.ref && getComputedStyle(rootEl.ref).direction === 'rtl' + !!rootEl.ref && getComputedStyle(rootEl.ref).direction === 'rtl', }); - } + }, }); // max @@ -210,6 +210,6 @@ export const useSliderFoundation = ( return { setTrackRef, setTrackMarkerContainerRef, - ...elements + ...elements, }; }; diff --git a/packages/react-ui-components/src/lib/slider/index.tsx b/packages/react-ui-components/src/lib/slider/index.tsx index 960fb96b..923e3e44 100644 --- a/packages/react-ui-components/src/lib/slider/index.tsx +++ b/packages/react-ui-components/src/lib/slider/index.tsx @@ -86,7 +86,7 @@ export const Slider: RMWC.ComponentType< thumbContainerEl, sliderPinEl, setTrackRef, - setTrackMarkerContainerRef + setTrackMarkerContainerRef, } = useSliderFoundation(props); const { @@ -108,8 +108,8 @@ export const Slider: RMWC.ComponentType< 'mdc-slider', { 'mdc-slider--discrete': discrete, - 'mdc-slider--display-markers': displayMarkers && discrete - } + 'mdc-slider--display-markers': displayMarkers && discrete, + }, ]); const dataStep = step ? { 'data-step': step } : {}; diff --git a/packages/react-ui-components/src/lib/snackbar/foundation.tsx b/packages/react-ui-components/src/lib/snackbar/foundation.tsx index 733b2a44..43a1dc87 100644 --- a/packages/react-ui-components/src/lib/snackbar/foundation.tsx +++ b/packages/react-ui-components/src/lib/snackbar/foundation.tsx @@ -21,7 +21,7 @@ export function useSnackbarFoundation( elements: { rootEl: true, surfaceEl: true, - labelEl: true + labelEl: true, }, foundation: ({ rootEl, labelEl, emit }) => { return new MDCSnackbarFoundation({ @@ -37,9 +37,9 @@ export function useSnackbarFoundation( emit('onClose', reason ? { reason } : {}); }, notifyClosed: (reason: string) => - emit('onClosed', reason ? { reason } : {}) + emit('onClosed', reason ? { reason } : {}), }); - } + }, }); const { rootEl, surfaceEl } = elements; diff --git a/packages/react-ui-components/src/lib/snackbar/snackbar-queue.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar-queue.tsx index 7a6605a6..94ec9085 100644 --- a/packages/react-ui-components/src/lib/snackbar/snackbar-queue.tsx +++ b/packages/react-ui-components/src/lib/snackbar/snackbar-queue.tsx @@ -5,7 +5,7 @@ import { SnackbarProps, SnackbarAction, SnackbarActionProps, - SnackbarHTMLProps + SnackbarHTMLProps, } from './snackbar'; import { IconPropT } from '../types'; import { ArrayEmitter } from '../base'; @@ -51,7 +51,7 @@ export function SnackbarQueue({ let timerId: number; const doChange = () => { if (messages.array[0] !== message) { - setIteration(val => val + 1); + setIteration((val) => val + 1); timerId = window.setTimeout(() => setMessage(messages.array[0]), 150); } }; @@ -96,7 +96,7 @@ export function SnackbarQueue({ className="rmwc-snackbar__image" style={{ margin: '1rem auto', - textAlign: 'center' + textAlign: 'center', }} > } - onClose={evt => { + onClose={(evt) => { onClose?.(evt); removeMessage(message); }} @@ -133,8 +133,8 @@ export const createSnackbarQueue = (): { return { close: () => { messages.remove(message); - } + }, }; - } + }, }; }; diff --git a/packages/react-ui-components/src/lib/snackbar/snackbar.spec.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar.spec.tsx index 8218bbbf..eac8de2e 100644 --- a/packages/react-ui-components/src/lib/snackbar/snackbar.spec.tsx +++ b/packages/react-ui-components/src/lib/snackbar/snackbar.spec.tsx @@ -4,7 +4,7 @@ import { Snackbar, SnackbarAction, createSnackbarQueue, - SnackbarQueue + SnackbarQueue, } from './'; import { wait } from '@rmwc/base/utils/test-utils'; @@ -99,7 +99,7 @@ describe('SnackbarQueue', () => { title: 'myNotificationTitle1', body: 'myNotificationBody1', timeout: 500, - onClose: () => {} + onClose: () => {}, }); queue.notify({ @@ -112,15 +112,15 @@ describe('SnackbarQueue', () => { // NotificationAction api format title: 'Fix It!', icon: 'close', - action: 'fixit' // action will be available as evt.detail.reason in the onClose event + action: 'fixit', // action will be available as evt.detail.reason in the onClose event }, { // OR SnackbarActionProps format label: 'Continue...', icon: 'check', - onClick: () => {} - } - ] + onClick: () => {}, + }, + ], }); await wait(500); diff --git a/packages/react-ui-components/src/lib/snackbar/snackbar.tsx b/packages/react-ui-components/src/lib/snackbar/snackbar.tsx index d3b7bdd1..e45cee17 100644 --- a/packages/react-ui-components/src/lib/snackbar/snackbar.tsx +++ b/packages/react-ui-components/src/lib/snackbar/snackbar.tsx @@ -83,8 +83,8 @@ export const Snackbar: RMWC.ComponentType< 'mdc-snackbar', { 'mdc-snackbar--leading': leading, - 'mdc-snackbar--stacked': stacked - } + 'mdc-snackbar--stacked': stacked, + }, ]); const actions: SnackbarProps['action'][] = Array.isArray(action) @@ -109,7 +109,7 @@ export const Snackbar: RMWC.ComponentType< style={{ color: 'rgba(255, 255, 255, 0.87)', fill: 'currentColor', - marginLeft: '1rem' + marginLeft: '1rem', }} icon={icon} /> diff --git a/packages/react-ui-components/src/lib/switch/foundation.tsx b/packages/react-ui-components/src/lib/switch/foundation.tsx index 1bc00f51..361058a5 100644 --- a/packages/react-ui-components/src/lib/switch/foundation.tsx +++ b/packages/react-ui-components/src/lib/switch/foundation.tsx @@ -16,7 +16,7 @@ export const useSwitchFoundation = (props: SwitchProps & SwitchHTMLProps) => { props, elements: { rootEl: true, - checkboxEl: true + checkboxEl: true, }, foundation: ({ rootEl, checkboxEl }) => { return new MDCSwitchFoundation({ @@ -27,9 +27,9 @@ export const useSwitchFoundation = (props: SwitchProps & SwitchHTMLProps) => { setNativeControlDisabled: (disabled: boolean) => checkboxEl.setProp('disabled', disabled), setNativeControlAttr: (attr: string, value: string) => - rootEl.setProp(attr as any, value) + rootEl.setProp(attr as any, value), } as MDCSwitchAdapter); - } + }, }); const { checkboxEl } = elements; diff --git a/packages/react-ui-components/src/lib/switch/index.tsx b/packages/react-ui-components/src/lib/switch/index.tsx index c2dc348a..8c03054d 100644 --- a/packages/react-ui-components/src/lib/switch/index.tsx +++ b/packages/react-ui-components/src/lib/switch/index.tsx @@ -6,7 +6,7 @@ import { mergeRefs, Tag, useClassNames, - createComponent + createComponent, } from '../base'; import { withRipple } from '../ripple'; import { ToggleableProps, ToggleHTMLProps } from '../toggleable'; @@ -34,7 +34,7 @@ export const Switch: RMWC.ComponentType< id, toggleRootProps, rootEl, - checkboxEl + checkboxEl, } = useSwitchFoundation(props); const rootClassName = useClassNames(toggleRootProps, ['mdc-switch']); @@ -59,7 +59,7 @@ export const Switch: RMWC.ComponentType< ({ onTabInteraction: (evt: any) => {}, registerTab: (tab: any) => {}, unregisterTab: (tab: any) => {}, - indicatorTransition: 'slide' + indicatorTransition: 'slide', }); diff --git a/packages/react-ui-components/src/lib/tabs/tab-bar-foundation.tsx b/packages/react-ui-components/src/lib/tabs/tab-bar-foundation.tsx index 70c33794..713fbb80 100644 --- a/packages/react-ui-components/src/lib/tabs/tab-bar-foundation.tsx +++ b/packages/react-ui-components/src/lib/tabs/tab-bar-foundation.tsx @@ -39,9 +39,11 @@ export const useTabBarFoundation = ( window.getComputedStyle(rootEl.ref).getPropertyValue('direction') === 'rtl', setActiveTab: (index: number) => { - if (props.activeTabIndex === index || - props.activeTabIndex === undefined) { - setActiveTabIndex(index) + if ( + props.activeTabIndex === index || + props.activeTabIndex === undefined + ) { + setActiveTabIndex(index); } else { // ignore clicks when using controlled tabs, but we still need to notify // to trigger the callback @@ -89,9 +91,9 @@ export const useTabBarFoundation = ( }, getTabListLength: () => tabListRef.current.length, notifyTabActivated: (index: number) => - emit('onActivate', { index }, true) + emit('onActivate', { index }, true), }); - } + }, }); const { rootEl } = elements; @@ -178,6 +180,6 @@ export const useTabBarFoundation = ( setTabScrollerApi, handleTabInteraction, registerTab, - unregisterTab + unregisterTab, }; }; diff --git a/packages/react-ui-components/src/lib/tabs/tab-bar.tsx b/packages/react-ui-components/src/lib/tabs/tab-bar.tsx index c436f887..c4ed497c 100644 --- a/packages/react-ui-components/src/lib/tabs/tab-bar.tsx +++ b/packages/react-ui-components/src/lib/tabs/tab-bar.tsx @@ -42,7 +42,7 @@ export const TabBar = createComponent(function TabBar(props, ref) { handleTabInteraction, setTabScrollerApi, registerTab, - unregisterTab + unregisterTab, } = useTabBarFoundation(props); const contextApi = useRef({ @@ -50,7 +50,7 @@ export const TabBar = createComponent(function TabBar(props, ref) { handleTabInteraction(evt), registerTab, unregisterTab, - indicatorTransition: props.indicatorTransition || 'slide' + indicatorTransition: props.indicatorTransition || 'slide', }); const className = useClassNames(props, ['mdc-tab-bar']); diff --git a/packages/react-ui-components/src/lib/tabs/tab-foundation.tsx b/packages/react-ui-components/src/lib/tabs/tab-foundation.tsx index 955a0596..566a00b1 100644 --- a/packages/react-ui-components/src/lib/tabs/tab-foundation.tsx +++ b/packages/react-ui-components/src/lib/tabs/tab-foundation.tsx @@ -36,10 +36,10 @@ export const useTabFoundation = (props: TabProps & React.HTMLProps) => { getOffsetWidth: () => rootEl.ref?.offsetWidth || 0, getContentOffsetLeft: () => contentEl.ref?.offsetLeft || 0, getContentOffsetWidth: () => contentEl.ref?.offsetWidth || 0, - focus: () => rootEl.ref && rootEl.ref.focus && rootEl.ref.focus() + focus: () => rootEl.ref && rootEl.ref.focus && rootEl.ref.focus(), } ); - } + }, }); const { rootEl } = elements; @@ -65,7 +65,7 @@ export const useTabFoundation = (props: TabProps & React.HTMLProps) => { getIndex: () => rootEl.ref?.parentElement ? Array.from(rootEl.ref.parentElement.children).indexOf(rootEl.ref) - : -1 + : -1, }; }, [foundation, rootEl.ref, id]); @@ -84,6 +84,6 @@ export const useTabFoundation = (props: TabProps & React.HTMLProps) => { return { ...elements, - setTabIndicatorApi + setTabIndicatorApi, }; }; diff --git a/packages/react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx b/packages/react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx index bb73afb4..823fb9c1 100644 --- a/packages/react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx +++ b/packages/react-ui-components/src/lib/tabs/tab-indicator-foundation.tsx @@ -4,7 +4,7 @@ import { MDCFadingTabIndicatorFoundation, MDCSlidingTabIndicatorFoundation, MDCTabIndicatorAdapter, - MDCTabIndicatorFoundation + MDCTabIndicatorFoundation, } from '@material/tab-indicator'; export const useTabIndicatorFoundation = (props: TabIndicatorProps) => { @@ -25,7 +25,7 @@ export const useTabIndicatorFoundation = (props: TabIndicatorProps) => { : emptyClientRect, setContentStyleProperty: (prop: string, value: string) => { contentEl.setStyle(prop, value); - } + }, }; if (props.transition === 'fade') { @@ -35,7 +35,7 @@ export const useTabIndicatorFoundation = (props: TabIndicatorProps) => { return new MDCSlidingTabIndicatorFoundation(adapter); }, api: ({ - foundation + foundation, }: { foundation: MDCTabIndicatorFoundation; }): TabIndicatorApi => { @@ -48,9 +48,9 @@ export const useTabIndicatorFoundation = (props: TabIndicatorProps) => { }, computeContentClientRect: () => { return foundation.computeContentClientRect(); - } + }, }; - } + }, }); return { ...elements }; diff --git a/packages/react-ui-components/src/lib/tabs/tab-indicator.tsx b/packages/react-ui-components/src/lib/tabs/tab-indicator.tsx index 5a403aa4..6e86e20f 100644 --- a/packages/react-ui-components/src/lib/tabs/tab-indicator.tsx +++ b/packages/react-ui-components/src/lib/tabs/tab-indicator.tsx @@ -31,7 +31,7 @@ export function TabIndicator( tag="span" element={rootEl} className={classNames('mdc-tab-indicator', { - 'mdc-tab-indicator--fade': transition === 'fade' + 'mdc-tab-indicator--fade': transition === 'fade', })} > f.incrementScroll(scrollXIncrement), getScrollPosition: () => f.getScrollPosition(), - getScrollContentWidth: () => contentEl.ref?.offsetWidth || 0 + getScrollContentWidth: () => contentEl.ref?.offsetWidth || 0, }; }, elements: { rootEl: true, areaEl: true, contentEl: true }, @@ -57,9 +57,9 @@ export const useTabScrollerFoundation = ( ? contentEl.ref.getBoundingClientRect() : emptyClientRect, computeHorizontalScrollbarHeight: () => - scrollerUtil.computeHorizontalScrollbarHeight(document) + scrollerUtil.computeHorizontalScrollbarHeight(document), }); - } + }, }); const { areaEl, contentEl } = elements; diff --git a/packages/react-ui-components/src/lib/tabs/tab.tsx b/packages/react-ui-components/src/lib/tabs/tab.tsx index f425f4da..6aa64a33 100644 --- a/packages/react-ui-components/src/lib/tabs/tab.tsx +++ b/packages/react-ui-components/src/lib/tabs/tab.tsx @@ -7,7 +7,7 @@ import { useClassNames, Tag, FoundationElement, - createComponent + createComponent, } from '../base'; import { IconProps, Icon } from '../icon'; import { withRipple, RippleSurface } from '../ripple'; @@ -65,8 +65,8 @@ const TabRoot = withRipple({ surface: false })( 'mdc-tab', { 'mdc-tab--stacked': stacked, - 'mdc-tab--min-width': minWidth - } + 'mdc-tab--min-width': minWidth, + }, ]); return ; }) diff --git a/packages/react-ui-components/src/lib/tabs/tabs.spec.tsx b/packages/react-ui-components/src/lib/tabs/tabs.spec.tsx index 386ddef5..4e7706f9 100644 --- a/packages/react-ui-components/src/lib/tabs/tabs.spec.tsx +++ b/packages/react-ui-components/src/lib/tabs/tabs.spec.tsx @@ -36,7 +36,7 @@ describe('Tabs', () => { it('Can add and remove tabs dynamically', () => { class Comp extends React.Component { state = { - tabs: ['ONE'] + tabs: ['ONE'], }; render() { return ( @@ -118,31 +118,37 @@ describe('Tabs', () => { ); el.find(Tab).first().simulate('click'); - + window.requestAnimationFrame(() => { - expect(el.find(Tab).last().html().includes('mdc-tab--active')).toEqual(true); + expect(el.find(Tab).last().html().includes('mdc-tab--active')).toEqual( + true + ); el.unmount(); done(); }); }); - + it('focuses active tab on mount', (done) => { - const el = mount( + const el = mount( + Test - ); - + + ); + window.requestAnimationFrame(() => { expect(document.activeElement).toBe(el.find('button').getDOMNode()); el.unmount(); done(); }); }); - + it('does not focus active tab on mount', (done) => { - const el = mount( - Test - ); - + const el = mount( + + Test + + ); + window.requestAnimationFrame(() => { expect(document.activeElement).not.toBe(el.find('button').getDOMNode()); el.unmount(); diff --git a/packages/react-ui-components/src/lib/textfield/index.tsx b/packages/react-ui-components/src/lib/textfield/index.tsx index c8c20444..d21f9f98 100644 --- a/packages/react-ui-components/src/lib/textfield/index.tsx +++ b/packages/react-ui-components/src/lib/textfield/index.tsx @@ -4,7 +4,7 @@ import { IconProps } from '../icon'; import { MDCTextFieldCharacterCounterFoundation, MDCTextFieldIconFoundation, - MDCTextFieldFoundation + MDCTextFieldFoundation, } from '@material/textfield'; import { useClassNames, Tag, useId, createComponent } from '../base'; @@ -109,7 +109,7 @@ export const TextField: RMWC.ComponentType< setLeadingIcon, setTrailingIcon, setFloatingLabel, - setCharacterCounter + setCharacterCounter, } = useTextFieldFoundation(props); const id = useId('textfield', props); @@ -127,8 +127,8 @@ export const TextField: RMWC.ComponentType< 'mdc-text-field--with-leading-icon': !!icon, 'mdc-text-field--with-trailing-icon': !!trailingIcon, 'mdc-text-field--no-label': !label, - 'mdc-text-field--end-aligned': align === 'end' - } + 'mdc-text-field--end-aligned': align === 'end', + }, ]); // handle leading and trailing icons @@ -277,8 +277,8 @@ export const TextFieldHelperText = createComponent( 'mdc-text-field-helper-text', { 'mdc-text-field-helper-text--persistent': persistent, - 'mdc-text-field-helper-text--validation-msg': validationMsg - } + 'mdc-text-field-helper-text--validation-msg': validationMsg, + }, ]); return ; @@ -309,15 +309,15 @@ const TextFieldIcon = function TextFieldIcon( 'mdc-text-field__icon', { 'mdc-text-field__icon--trailing': position === 'trailing', - 'mdc-text-field__icon--leading': position === 'leading' - } + 'mdc-text-field__icon--leading': position === 'leading', + }, ]); return ( ); diff --git a/packages/react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx b/packages/react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx index f5424f50..5b709985 100644 --- a/packages/react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx +++ b/packages/react-ui-components/src/lib/textfield/textfield-character-count-foundation.tsx @@ -11,12 +11,12 @@ export const useTextFieldCharacterCountFoundation = ( const { foundation, ...elements } = useFoundation({ props, api: ({ - foundation + foundation, }: { foundation: MDCTextFieldCharacterCounterFoundation; }): TextFieldCharacterCountApi => { return { - getFoundation: () => foundation + getFoundation: () => foundation, }; }, elements: {}, @@ -24,13 +24,13 @@ export const useTextFieldCharacterCountFoundation = ( return new MDCTextFieldCharacterCounterFoundation({ setContent: (content: string) => { setContent(content); - } + }, }); - } + }, }); return { content, - ...elements + ...elements, }; }; diff --git a/packages/react-ui-components/src/lib/textfield/textfield-foundation.tsx b/packages/react-ui-components/src/lib/textfield/textfield-foundation.tsx index 4b030c6f..e4a1e30d 100644 --- a/packages/react-ui-components/src/lib/textfield/textfield-foundation.tsx +++ b/packages/react-ui-components/src/lib/textfield/textfield-foundation.tsx @@ -5,7 +5,7 @@ import { MDCTextFieldFoundation } from '@material/textfield'; import { TextFieldProps, TextFieldCharacterCountApi, - TextFieldIconApi + TextFieldIconApi, } from '.'; import { FloatingLabelApi } from '../floating-label'; @@ -45,7 +45,7 @@ export const useTextFieldFoundation = (props: TextFieldProps) => { hasLabel: () => { return !!getProps().label; }, - getLabelWidth: () => floatingLabel.current?.getWidth() || 0 + getLabelWidth: () => floatingLabel.current?.getWidth() || 0, }; }; @@ -59,7 +59,7 @@ export const useTextFieldFoundation = (props: TextFieldProps) => { }, setLineRippleTransformOrigin: (normalizedX: number) => { setLineRippleCenter(normalizedX); - } + }, }; }; @@ -73,7 +73,7 @@ export const useTextFieldFoundation = (props: TextFieldProps) => { }, hasOutline: () => { return !!getProps().outlined; - } + }, }; }; @@ -87,7 +87,7 @@ export const useTextFieldFoundation = (props: TextFieldProps) => { evtType: K, handler: SpecificEventListener ): void => inputEl.removeEventListener(evtType, handler), - getNativeInput: () => inputEl.ref as any + getNativeInput: () => inputEl.ref as any, }; }; @@ -102,7 +102,7 @@ export const useTextFieldFoundation = (props: TextFieldProps) => { : undefined, trailingIcon: trailingIcon.current ? trailingIcon.current.getFoundation() - : undefined + : undefined, }; }; @@ -147,11 +147,11 @@ export const useTextFieldFoundation = (props: TextFieldProps) => { ...getInputAdapterMethods(), ...getLabelAdapterMethods(), ...getLineRippleAdapterMethods(), - ...getOutlineAdapterMethods() + ...getOutlineAdapterMethods(), }, getFoundationMap() ); - } + }, }); // Fixes bug #362 @@ -185,6 +185,6 @@ export const useTextFieldFoundation = (props: TextFieldProps) => { setLeadingIcon, setTrailingIcon, setFloatingLabel, - ...elements + ...elements, }; }; diff --git a/packages/react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx b/packages/react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx index 6e84c082..660aa88f 100644 --- a/packages/react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx +++ b/packages/react-ui-components/src/lib/textfield/textfield-icon-foundation.tsx @@ -13,12 +13,12 @@ export const useTextFieldIconFoundation = ( props, elements: { rootEl: true }, api: ({ - foundation + foundation, }: { foundation: MDCTextFieldIconFoundation; }): TextFieldIconApi => { return { - getFoundation: () => foundation + getFoundation: () => foundation, }; }, foundation: ({ rootEl, emit }) => { @@ -38,11 +38,11 @@ export const useTextFieldIconFoundation = ( evtType: K, handler: SpecificEventListener ) => rootEl.removeEventListener(evtType, handler), - notifyIconAction: () => emit('onClick', {}, true) + notifyIconAction: () => emit('onClick', {}, true), }); return f; - } + }, }); return { ...elements }; diff --git a/packages/react-ui-components/src/lib/textfield/textfield.spec.tsx b/packages/react-ui-components/src/lib/textfield/textfield.spec.tsx index a1efc90e..e9bb9832 100644 --- a/packages/react-ui-components/src/lib/textfield/textfield.spec.tsx +++ b/packages/react-ui-components/src/lib/textfield/textfield.spec.tsx @@ -33,7 +33,7 @@ describe('TextField', () => { helpText={{ children: 'textHelpText', validationMsg: true, - persistent: true + persistent: true, }} />

    diff --git a/packages/react-ui-components/src/lib/theme/index.tsx b/packages/react-ui-components/src/lib/theme/index.tsx index cc0e316e..1bbf9928 100644 --- a/packages/react-ui-components/src/lib/theme/index.tsx +++ b/packages/react-ui-components/src/lib/theme/index.tsx @@ -7,7 +7,7 @@ import { wrapChild, createComponent, Tag, - useClassNames + useClassNames, } from '../base'; import { getAutoColorsForTheme } from './utils'; @@ -30,7 +30,7 @@ export const Theme = createComponent(function Theme(props, ref) { return wrapChild({ ...rest, ref, - className + className, }); } @@ -51,7 +51,6 @@ export interface ThemeProviderProps { children?: React.ReactNode; } - export const ThemeContext = React.createContext({}); export function useTheme() { @@ -65,7 +64,6 @@ export function useTheme() { return theme; } - /** A ThemeProvider. This sets theme colors for its child tree. */ export const ThemeProvider = createComponent( function ThemeProvider(props, ref) { @@ -91,12 +89,12 @@ export const ThemeProvider = createComponent( wrap && typeof rest.children === 'object' && // @ts-ignore - rest.children?.props?.className + rest.children?.props?.className, ]); const themeStyles = { ...style, - ...colors + ...colors, } as React.CSSProperties; if (wrap && rest.children) { diff --git a/packages/react-ui-components/src/lib/theme/theme-options.tsx b/packages/react-ui-components/src/lib/theme/theme-options.tsx index 9ed95ce5..a1bb720c 100644 --- a/packages/react-ui-components/src/lib/theme/theme-options.tsx +++ b/packages/react-ui-components/src/lib/theme/theme-options.tsx @@ -24,5 +24,5 @@ export const themeOptions: RMWC.ThemeOptionT[] = [ 'textSecondaryOnDark', 'textHintOnDark', 'textDisabledOnDark', - 'textIconOnDark' + 'textIconOnDark', ]; diff --git a/packages/react-ui-components/src/lib/theme/theme.spec.tsx b/packages/react-ui-components/src/lib/theme/theme.spec.tsx index b37aa737..2f223406 100644 --- a/packages/react-ui-components/src/lib/theme/theme.spec.tsx +++ b/packages/react-ui-components/src/lib/theme/theme.spec.tsx @@ -44,8 +44,8 @@ describe('ThemeProvider', () => { options: { '--mdc-theme-primary': 'blue', secondary: '#fff', - surface: '#000000' - } + surface: '#000000', + }, }); el.update(); @@ -53,8 +53,8 @@ describe('ThemeProvider', () => { options: { '--mdc-theme-primary': 'green', secondary: '#000000', - surface: '#000000' - } + surface: '#000000', + }, }); el.update(); diff --git a/packages/react-ui-components/src/lib/theme/themes.tsx b/packages/react-ui-components/src/lib/theme/themes.tsx index be465d76..ead7316c 100644 --- a/packages/react-ui-components/src/lib/theme/themes.tsx +++ b/packages/react-ui-components/src/lib/theme/themes.tsx @@ -1,57 +1,56 @@ export const Themes = { - lightTheme: { - type: 'light', - primary: '#2979ff', - secondary: '#03dac4', - error: '#b00020', - background: '#fff', - surface: '#fff', - onPrimary: 'rgba(255, 255, 255, 1)', - onSecondary: 'rgba(0, 0, 0, 0.87)', - onSurface: 'rgba(0, 0, 0, 0.87)', - onError: '#fff', - textPrimaryOnBackground: 'rgba(0, 0, 0, 0.87)', - textSecondaryOnBackground: 'rgba(0, 0, 0, 0.54)', - textHintOnBackground: 'rgba(0, 0, 0, 0.38)', - textDisabledOnBackground: 'rgba(0, 0, 0, 0.38)', - textIconOnBackground: 'rgba(0, 0, 0, 0.38)', - textPrimaryOnLight: 'rgba(0, 0, 0, 0.87)', - textSecondaryOnLight: 'rgba(0, 0, 0, 0.54)', - textHintOnLight: 'rgba(0, 0, 0, 0.38)', - textDisabledOnLight: 'rgba(0, 0, 0, 0.38)', - textIconOnLight: 'rgba(0, 0, 0, 0.38)', - textPrimaryOnDark: 'white', - textSecondaryOnDark: 'rgba(255, 255, 255, 0.7)', - textHintOnDark: 'rgba(255, 255, 255, 0.5)', - textDisabledOnDark: 'rgba(255, 255, 255, 0.5)', - textIconOnDark: 'rgba(255, 255, 255, 0.5)' - }, - darkTheme: { - type: 'dark', - primary: '#24aee9', - secondary: '#e539ff', - error: '#b00020', - background: '#212121', - surface: '#37474F', - onPrimary: 'rgba(255,255,255,.87)', - onSecondary: 'rgba(0,0,0,0.87)', - onSurface: 'rgba(255,255,255,.87)', - onError: '#fff', - textPrimaryOnBackground: 'rgba(255, 255, 255, 1)', - textSecondaryOnBackground: 'rgba(255, 255, 255, 0.7)', - textHintOnBackground: 'rgba(255, 255, 255, 0.5)', - textDisabledOnBackground: 'rgba(255, 255, 255, 0.5)', - textIconOnBackground: 'rgba(255, 255, 255, 0.5)', - textPrimaryOnLight: 'rgba(0, 0, 0, 0.87)', - textSecondaryOnLight: 'rgba(0, 0, 0, 0.54)', - textHintOnLight: 'rgba(0, 0, 0, 0.38)', - textDisabledOnLight: 'rgba(0, 0, 0, 0.38)', - textIconOnLight: 'rgba(0, 0, 0, 0.38)', - textPrimaryOnDark: 'white', - textSecondaryOnDark: 'rgba(255, 255, 255, 0.7)', - textHintOnDark: 'rgba(255, 255, 255, 0.5)', - textDisabledOnDark: 'rgba(255, 255, 255, 0.5)', - textIconOnDark: 'rgba(255, 255, 255, 0.5)' - }, - -} \ No newline at end of file + lightTheme: { + type: 'light', + primary: '#2979ff', + secondary: '#03dac4', + error: '#b00020', + background: '#fff', + surface: '#fff', + onPrimary: 'rgba(255, 255, 255, 1)', + onSecondary: 'rgba(0, 0, 0, 0.87)', + onSurface: 'rgba(0, 0, 0, 0.87)', + onError: '#fff', + textPrimaryOnBackground: 'rgba(0, 0, 0, 0.87)', + textSecondaryOnBackground: 'rgba(0, 0, 0, 0.54)', + textHintOnBackground: 'rgba(0, 0, 0, 0.38)', + textDisabledOnBackground: 'rgba(0, 0, 0, 0.38)', + textIconOnBackground: 'rgba(0, 0, 0, 0.38)', + textPrimaryOnLight: 'rgba(0, 0, 0, 0.87)', + textSecondaryOnLight: 'rgba(0, 0, 0, 0.54)', + textHintOnLight: 'rgba(0, 0, 0, 0.38)', + textDisabledOnLight: 'rgba(0, 0, 0, 0.38)', + textIconOnLight: 'rgba(0, 0, 0, 0.38)', + textPrimaryOnDark: 'white', + textSecondaryOnDark: 'rgba(255, 255, 255, 0.7)', + textHintOnDark: 'rgba(255, 255, 255, 0.5)', + textDisabledOnDark: 'rgba(255, 255, 255, 0.5)', + textIconOnDark: 'rgba(255, 255, 255, 0.5)', + }, + darkTheme: { + type: 'dark', + primary: '#24aee9', + secondary: '#e539ff', + error: '#b00020', + background: '#212121', + surface: '#37474F', + onPrimary: 'rgba(255,255,255,.87)', + onSecondary: 'rgba(0,0,0,0.87)', + onSurface: 'rgba(255,255,255,.87)', + onError: '#fff', + textPrimaryOnBackground: 'rgba(255, 255, 255, 1)', + textSecondaryOnBackground: 'rgba(255, 255, 255, 0.7)', + textHintOnBackground: 'rgba(255, 255, 255, 0.5)', + textDisabledOnBackground: 'rgba(255, 255, 255, 0.5)', + textIconOnBackground: 'rgba(255, 255, 255, 0.5)', + textPrimaryOnLight: 'rgba(0, 0, 0, 0.87)', + textSecondaryOnLight: 'rgba(0, 0, 0, 0.54)', + textHintOnLight: 'rgba(0, 0, 0, 0.38)', + textDisabledOnLight: 'rgba(0, 0, 0, 0.38)', + textIconOnLight: 'rgba(0, 0, 0, 0.38)', + textPrimaryOnDark: 'white', + textSecondaryOnDark: 'rgba(255, 255, 255, 0.7)', + textHintOnDark: 'rgba(255, 255, 255, 0.5)', + textDisabledOnDark: 'rgba(255, 255, 255, 0.5)', + textIconOnDark: 'rgba(255, 255, 255, 0.5)', + }, +}; diff --git a/packages/react-ui-components/src/lib/theme/utils.tsx b/packages/react-ui-components/src/lib/theme/utils.tsx index cb1baeac..a426e751 100644 --- a/packages/react-ui-components/src/lib/theme/utils.tsx +++ b/packages/react-ui-components/src/lib/theme/utils.tsx @@ -139,7 +139,7 @@ const colorMap: { [key: string]: string } = { white: '#ffffff', whitesmoke: '#f5f5f5', yellow: '#ffff00', - yellowgreen: '#9acd32' + yellowgreen: '#9acd32', }; const nameToHex = (name: string) => colorMap[name] || name; @@ -153,17 +153,17 @@ const hexToRgb = (hex: string) => { ? { r: parseInt(result[1], 16), g: parseInt(result[2], 16), - b: parseInt(result[3], 16) + b: parseInt(result[3], 16), } : { r: 0, g: 0, - b: 0 + b: 0, }; }; const luminance = (r: number, g: number, b: number) => { - var a = [r, g, b].map(function(v) { + var a = [r, g, b].map(function (v) { v /= 255; return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); }); @@ -200,20 +200,20 @@ const paletteMap: { [key: string]: Array<[string, number]> } = { ['--mdc-theme-text-secondary-on-background', 1], ['--mdc-theme-text-hint-on-background', 2], ['--mdc-theme-text-disabled-on-background', 2], - ['--mdc-theme-text-icon-on-background', 2] - ] + ['--mdc-theme-text-icon-on-background', 2], + ], }; const lightTextPalette = [ 'rgba(0, 0, 0, 0.87)', 'rgba(0, 0, 0, 0.54)', - 'rgba(0, 0, 0, 0.38)' + 'rgba(0, 0, 0, 0.38)', ]; const darkTextPalette = [ 'rgba(255, 255, 255, 1)', 'rgba(255, 255, 255, 0.7)', - 'rgba(255, 255, 255, 0.5)' + 'rgba(255, 255, 255, 0.5)', ]; export const getAutoColorsForTheme = (colors: { [key: string]: string }) => { @@ -224,7 +224,7 @@ export const getAutoColorsForTheme = (colors: { [key: string]: string }) => { ? lightTextPalette : darkTextPalette; - paletteMap[key].forEach(k => { + paletteMap[key].forEach((k) => { acc[k[0]] = palette[k[1]]; }); } @@ -235,6 +235,6 @@ export const getAutoColorsForTheme = (colors: { [key: string]: string }) => { return { ...autoColors, - ...colors + ...colors, }; }; diff --git a/packages/react-ui-components/src/lib/toggleable/index.tsx b/packages/react-ui-components/src/lib/toggleable/index.tsx index 2437fcfc..7258f1d5 100644 --- a/packages/react-ui-components/src/lib/toggleable/index.tsx +++ b/packages/react-ui-components/src/lib/toggleable/index.tsx @@ -60,12 +60,12 @@ export function useToggleFoundation( className, style, disabled, - ...rootProps + ...rootProps, }; return { id, renderToggle, - toggleRootProps + toggleRootProps, }; } diff --git a/packages/react-ui-components/src/lib/tooltip/index.tsx b/packages/react-ui-components/src/lib/tooltip/index.tsx index ebe4efab..71d41fde 100644 --- a/packages/react-ui-components/src/lib/tooltip/index.tsx +++ b/packages/react-ui-components/src/lib/tooltip/index.tsx @@ -53,10 +53,10 @@ export const Tooltip = function Tooltip({ enterDelay = 0, leaveDelay = 0, align = 'top', - activateOn = ['hover', 'focus'] as TooltipActivationT[] + activateOn = ['hover', 'focus'] as TooltipActivationT[], } = { ...providerContext.tooltip, - ...rest + ...rest, }; return ( @@ -70,7 +70,7 @@ export const Tooltip = function Tooltip({ mouseLeaveDelay={leaveDelay / 1000} overlay={content} overlayClassName={classNames(className, { - 'rmwc-tooltip--show-arrow': showArrow + 'rmwc-tooltip--show-arrow': showArrow, })} destroyTooltipOnHide > diff --git a/packages/react-ui-components/src/lib/top-app-bar/foundation.tsx b/packages/react-ui-components/src/lib/top-app-bar/foundation.tsx index 402686f6..cfdf9466 100644 --- a/packages/react-ui-components/src/lib/top-app-bar/foundation.tsx +++ b/packages/react-ui-components/src/lib/top-app-bar/foundation.tsx @@ -6,7 +6,7 @@ import { MDCTopAppBarFoundation, MDCFixedTopAppBarFoundation, MDCShortTopAppBarFoundation, - MDCTopAppBarAdapter + MDCTopAppBarAdapter, } from '@material/top-app-bar'; export const useTopAppBarFoundation = ( @@ -18,7 +18,7 @@ export const useTopAppBarFoundation = ( const { foundation, ...elements } = useFoundation({ props, elements: { - rootEl: true + rootEl: true, }, foundation: ({ rootEl, emit }) => { const adapter: MDCTopAppBarAdapter = { @@ -42,7 +42,7 @@ export const useTopAppBarFoundation = ( MDCTopAppBarFoundation.strings.ACTION_ITEM_SELECTOR ).length : 0; - } + }, }; let foundation; @@ -55,7 +55,7 @@ export const useTopAppBarFoundation = ( } return foundation; - } + }, }); const { rootEl } = elements; diff --git a/packages/react-ui-components/src/lib/top-app-bar/index.tsx b/packages/react-ui-components/src/lib/top-app-bar/index.tsx index ad43a676..bd60f2ad 100644 --- a/packages/react-ui-components/src/lib/top-app-bar/index.tsx +++ b/packages/react-ui-components/src/lib/top-app-bar/index.tsx @@ -71,8 +71,8 @@ const TopAppBarBase = createComponent(function TopAppBarBase( 'mdc-top-app-bar--prominent': prominent, 'mdc-top-app-bar--short': short || shortCollapsed, 'mdc-top-app-bar--short-collapsed': shortCollapsed, - 'mdc-top-app-bar--dense': dense - } + 'mdc-top-app-bar--dense': dense, + }, ]); return ( @@ -171,8 +171,8 @@ export const TopAppBarSection = createComponent( 'mdc-top-app-bar__section', { 'mdc-top-app-bar__section--align-start': alignStart, - 'mdc-top-app-bar__section--align-end': alignEnd - } + 'mdc-top-app-bar__section--align-end': alignEnd, + }, ]); return ; } @@ -229,12 +229,16 @@ export const TopAppBarFixedAdjust = createComponent( const { dense, denseProminent, prominent, short, ...rest } = props; const className = useClassNames(props, [ { - 'mdc-top-app-bar--fixed-adjust': !props.dense && !props.denseProminent && !props.prominent && !props.short, + 'mdc-top-app-bar--fixed-adjust': + !props.dense && + !props.denseProminent && + !props.prominent && + !props.short, 'mdc-top-app-bar--dense-fixed-adjust': props.dense, 'mdc-top-app-bar--prominent-fixed-adjust': props.prominent, 'mdc-top-app-bar--dense-prominent-fixed-adjust': props.denseProminent, - 'mdc-top-app-bar--short-fixed-adjust': props.short - } + 'mdc-top-app-bar--short-fixed-adjust': props.short, + }, ]); return ; } diff --git a/packages/react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx b/packages/react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx index ca970c0f..af444e71 100644 --- a/packages/react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx +++ b/packages/react-ui-components/src/lib/top-app-bar/top-app-bar-ssr.spec.tsx @@ -10,7 +10,7 @@ import { TopAppBarSection, TopAppBarNavigationIcon, TopAppBarActionItem, - TopAppBarTitle + TopAppBarTitle, } from './'; describe('TopAppBar SSR', () => { diff --git a/packages/react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx b/packages/react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx index 31bea22f..c4ecca98 100644 --- a/packages/react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx +++ b/packages/react-ui-components/src/lib/top-app-bar/top-app-bar.spec.tsx @@ -9,7 +9,7 @@ import { TopAppBarActionItem, TopAppBarTitle, TopAppBarFixedAdjust, - SimpleTopAppBar + SimpleTopAppBar, } from './'; describe('TopAppBar', () => { @@ -114,35 +114,43 @@ describe('TopAppBarFixedAdjust', () => { it('renders', () => { const el = mount(); const div = el.find('div'); - const classNames = new Set((div.props().className ?? "").split(" ")); + const classNames = new Set((div.props().className ?? '').split(' ')); expect(classNames).toEqual(new Set(['mdc-top-app-bar--fixed-adjust'])); }); it('can be short', () => { const el = mount(); const div = el.find('div'); - const classNames = new Set((div.props().className ?? "").split(" ")); - expect(classNames).toEqual(new Set(['mdc-top-app-bar--short-fixed-adjust'])); + const classNames = new Set((div.props().className ?? '').split(' ')); + expect(classNames).toEqual( + new Set(['mdc-top-app-bar--short-fixed-adjust']) + ); }); it('can be dense', () => { const el = mount(); const div = el.find('div'); - const classNames = new Set((div.props().className ?? "").split(" ")); - expect(classNames).toEqual(new Set(['mdc-top-app-bar--dense-fixed-adjust'])); + const classNames = new Set((div.props().className ?? '').split(' ')); + expect(classNames).toEqual( + new Set(['mdc-top-app-bar--dense-fixed-adjust']) + ); }); it('can be prominent', () => { const el = mount(); const div = el.find('div'); - const classNames = new Set((div.props().className ?? "").split(" ")); - expect(classNames).toEqual(new Set(['mdc-top-app-bar--prominent-fixed-adjust'])); + const classNames = new Set((div.props().className ?? '').split(' ')); + expect(classNames).toEqual( + new Set(['mdc-top-app-bar--prominent-fixed-adjust']) + ); }); it('can be denseProminent', () => { const el = mount(); const div = el.find('div'); - const classNames = new Set((div.props().className ?? "").split(" ")); - expect(classNames).toEqual(new Set(['mdc-top-app-bar--dense-prominent-fixed-adjust'])); + const classNames = new Set((div.props().className ?? '').split(' ')); + expect(classNames).toEqual( + new Set(['mdc-top-app-bar--dense-prominent-fixed-adjust']) + ); }); }); diff --git a/packages/react-ui-components/src/lib/typography/index.tsx b/packages/react-ui-components/src/lib/typography/index.tsx index 650ce342..a5c7d976 100644 --- a/packages/react-ui-components/src/lib/typography/index.tsx +++ b/packages/react-ui-components/src/lib/typography/index.tsx @@ -41,8 +41,8 @@ export const Typography = createComponent( const className = useClassNames(props, [ { - [`mdc-typography--${props.use}`]: props.use - } + [`mdc-typography--${props.use}`]: props.use, + }, ]); return ; diff --git a/packages/react-ui-components/src/lib/typography/typography.spec.tsx b/packages/react-ui-components/src/lib/typography/typography.spec.tsx index cc51f3b6..2b9381e3 100644 --- a/packages/react-ui-components/src/lib/typography/typography.spec.tsx +++ b/packages/react-ui-components/src/lib/typography/typography.spec.tsx @@ -46,7 +46,7 @@ describe('Typography', () => { {children}!!! - ) + ), }} > Rendered default `div` diff --git a/packages/wc-ui-components-react/src/components.ts b/packages/wc-ui-components-react/src/components.ts index 92ceb785..23bde5c6 100644 --- a/packages/wc-ui-components-react/src/components.ts +++ b/packages/wc-ui-components-react/src/components.ts @@ -5,44 +5,159 @@ import { createReactComponent } from './react-component-lib'; import { JSX } from '@map-colonies/ui-components/dist/types'; - - -export const MwcButton = /*@__PURE__*/createReactComponent('mwc-button'); -export const MwcCard = /*@__PURE__*/createReactComponent('mwc-card'); -export const MwcCardActions = /*@__PURE__*/createReactComponent('mwc-card-actions'); -export const MwcCardContent = /*@__PURE__*/createReactComponent('mwc-card-content'); -export const MwcCardHeader = /*@__PURE__*/createReactComponent('mwc-card-header'); -export const MwcCardMedia = /*@__PURE__*/createReactComponent('mwc-card-media'); -export const MwcCheckbox = /*@__PURE__*/createReactComponent('mwc-checkbox'); -export const MwcContainer = /*@__PURE__*/createReactComponent('mwc-container'); -export const MwcContentForToolbar = /*@__PURE__*/createReactComponent('mwc-content-for-toolbar'); -export const MwcDialog = /*@__PURE__*/createReactComponent('mwc-dialog'); -export const MwcDialogBody = /*@__PURE__*/createReactComponent('mwc-dialog-body'); -export const MwcDialogFooter = /*@__PURE__*/createReactComponent('mwc-dialog-footer'); -export const MwcDialogHeader = /*@__PURE__*/createReactComponent('mwc-dialog-header'); -export const MwcDrawer = /*@__PURE__*/createReactComponent('mwc-drawer'); -export const MwcFab = /*@__PURE__*/createReactComponent('mwc-fab'); -export const MwcGridList = /*@__PURE__*/createReactComponent('mwc-grid-list'); -export const MwcGridListTile = /*@__PURE__*/createReactComponent('mwc-grid-list-tile'); -export const MwcIconToggle = /*@__PURE__*/createReactComponent('mwc-icon-toggle'); -export const MwcList = /*@__PURE__*/createReactComponent('mwc-list'); -export const MwcListItem = /*@__PURE__*/createReactComponent('mwc-list-item'); -export const MwcMenu = /*@__PURE__*/createReactComponent('mwc-menu'); -export const MwcMenuItem = /*@__PURE__*/createReactComponent('mwc-menu-item'); -export const MwcPaper = /*@__PURE__*/createReactComponent('mwc-paper'); -export const MwcProgress = /*@__PURE__*/createReactComponent('mwc-progress'); -export const MwcRadio = /*@__PURE__*/createReactComponent('mwc-radio'); -export const MwcSelect = /*@__PURE__*/createReactComponent('mwc-select'); -export const MwcSlider = /*@__PURE__*/createReactComponent('mwc-slider'); -export const MwcSnackbar = /*@__PURE__*/createReactComponent('mwc-snackbar'); -export const MwcSwitch = /*@__PURE__*/createReactComponent('mwc-switch'); -export const MwcTabbar = /*@__PURE__*/createReactComponent('mwc-tabbar'); -export const MwcTextfield = /*@__PURE__*/createReactComponent('mwc-textfield'); -export const MwcTheme = /*@__PURE__*/createReactComponent('mwc-theme'); -export const MwcToolbar = /*@__PURE__*/createReactComponent('mwc-toolbar'); -export const MwcToolbarIcon = /*@__PURE__*/createReactComponent('mwc-toolbar-icon'); -export const MwcToolbarSection = /*@__PURE__*/createReactComponent('mwc-toolbar-section'); -export const MwcToolbarTitle = /*@__PURE__*/createReactComponent('mwc-toolbar-title'); -export const MwcTypography = /*@__PURE__*/createReactComponent('mwc-typography'); -export const MwcViewport = /*@__PURE__*/createReactComponent('mwc-viewport'); -export const MyComponent = /*@__PURE__*/createReactComponent('my-component'); +export const MwcButton = /*@__PURE__*/ createReactComponent< + JSX.MwcButton, + HTMLMwcButtonElement +>('mwc-button'); +export const MwcCard = /*@__PURE__*/ createReactComponent< + JSX.MwcCard, + HTMLMwcCardElement +>('mwc-card'); +export const MwcCardActions = /*@__PURE__*/ createReactComponent< + JSX.MwcCardActions, + HTMLMwcCardActionsElement +>('mwc-card-actions'); +export const MwcCardContent = /*@__PURE__*/ createReactComponent< + JSX.MwcCardContent, + HTMLMwcCardContentElement +>('mwc-card-content'); +export const MwcCardHeader = /*@__PURE__*/ createReactComponent< + JSX.MwcCardHeader, + HTMLMwcCardHeaderElement +>('mwc-card-header'); +export const MwcCardMedia = /*@__PURE__*/ createReactComponent< + JSX.MwcCardMedia, + HTMLMwcCardMediaElement +>('mwc-card-media'); +export const MwcCheckbox = /*@__PURE__*/ createReactComponent< + JSX.MwcCheckbox, + HTMLMwcCheckboxElement +>('mwc-checkbox'); +export const MwcContainer = /*@__PURE__*/ createReactComponent< + JSX.MwcContainer, + HTMLMwcContainerElement +>('mwc-container'); +export const MwcContentForToolbar = /*@__PURE__*/ createReactComponent< + JSX.MwcContentForToolbar, + HTMLMwcContentForToolbarElement +>('mwc-content-for-toolbar'); +export const MwcDialog = /*@__PURE__*/ createReactComponent< + JSX.MwcDialog, + HTMLMwcDialogElement +>('mwc-dialog'); +export const MwcDialogBody = /*@__PURE__*/ createReactComponent< + JSX.MwcDialogBody, + HTMLMwcDialogBodyElement +>('mwc-dialog-body'); +export const MwcDialogFooter = /*@__PURE__*/ createReactComponent< + JSX.MwcDialogFooter, + HTMLMwcDialogFooterElement +>('mwc-dialog-footer'); +export const MwcDialogHeader = /*@__PURE__*/ createReactComponent< + JSX.MwcDialogHeader, + HTMLMwcDialogHeaderElement +>('mwc-dialog-header'); +export const MwcDrawer = /*@__PURE__*/ createReactComponent< + JSX.MwcDrawer, + HTMLMwcDrawerElement +>('mwc-drawer'); +export const MwcFab = /*@__PURE__*/ createReactComponent< + JSX.MwcFab, + HTMLMwcFabElement +>('mwc-fab'); +export const MwcGridList = /*@__PURE__*/ createReactComponent< + JSX.MwcGridList, + HTMLMwcGridListElement +>('mwc-grid-list'); +export const MwcGridListTile = /*@__PURE__*/ createReactComponent< + JSX.MwcGridListTile, + HTMLMwcGridListTileElement +>('mwc-grid-list-tile'); +export const MwcIconToggle = /*@__PURE__*/ createReactComponent< + JSX.MwcIconToggle, + HTMLMwcIconToggleElement +>('mwc-icon-toggle'); +export const MwcList = /*@__PURE__*/ createReactComponent< + JSX.MwcList, + HTMLMwcListElement +>('mwc-list'); +export const MwcListItem = /*@__PURE__*/ createReactComponent< + JSX.MwcListItem, + HTMLMwcListItemElement +>('mwc-list-item'); +export const MwcMenu = /*@__PURE__*/ createReactComponent< + JSX.MwcMenu, + HTMLMwcMenuElement +>('mwc-menu'); +export const MwcMenuItem = /*@__PURE__*/ createReactComponent< + JSX.MwcMenuItem, + HTMLMwcMenuItemElement +>('mwc-menu-item'); +export const MwcPaper = /*@__PURE__*/ createReactComponent< + JSX.MwcPaper, + HTMLMwcPaperElement +>('mwc-paper'); +export const MwcProgress = /*@__PURE__*/ createReactComponent< + JSX.MwcProgress, + HTMLMwcProgressElement +>('mwc-progress'); +export const MwcRadio = /*@__PURE__*/ createReactComponent< + JSX.MwcRadio, + HTMLMwcRadioElement +>('mwc-radio'); +export const MwcSelect = /*@__PURE__*/ createReactComponent< + JSX.MwcSelect, + HTMLMwcSelectElement +>('mwc-select'); +export const MwcSlider = /*@__PURE__*/ createReactComponent< + JSX.MwcSlider, + HTMLMwcSliderElement +>('mwc-slider'); +export const MwcSnackbar = /*@__PURE__*/ createReactComponent< + JSX.MwcSnackbar, + HTMLMwcSnackbarElement +>('mwc-snackbar'); +export const MwcSwitch = /*@__PURE__*/ createReactComponent< + JSX.MwcSwitch, + HTMLMwcSwitchElement +>('mwc-switch'); +export const MwcTabbar = /*@__PURE__*/ createReactComponent< + JSX.MwcTabbar, + HTMLMwcTabbarElement +>('mwc-tabbar'); +export const MwcTextfield = /*@__PURE__*/ createReactComponent< + JSX.MwcTextfield, + HTMLMwcTextfieldElement +>('mwc-textfield'); +export const MwcTheme = /*@__PURE__*/ createReactComponent< + JSX.MwcTheme, + HTMLMwcThemeElement +>('mwc-theme'); +export const MwcToolbar = /*@__PURE__*/ createReactComponent< + JSX.MwcToolbar, + HTMLMwcToolbarElement +>('mwc-toolbar'); +export const MwcToolbarIcon = /*@__PURE__*/ createReactComponent< + JSX.MwcToolbarIcon, + HTMLMwcToolbarIconElement +>('mwc-toolbar-icon'); +export const MwcToolbarSection = /*@__PURE__*/ createReactComponent< + JSX.MwcToolbarSection, + HTMLMwcToolbarSectionElement +>('mwc-toolbar-section'); +export const MwcToolbarTitle = /*@__PURE__*/ createReactComponent< + JSX.MwcToolbarTitle, + HTMLMwcToolbarTitleElement +>('mwc-toolbar-title'); +export const MwcTypography = /*@__PURE__*/ createReactComponent< + JSX.MwcTypography, + HTMLMwcTypographyElement +>('mwc-typography'); +export const MwcViewport = /*@__PURE__*/ createReactComponent< + JSX.MwcViewport, + HTMLMwcViewportElement +>('mwc-viewport'); +export const MyComponent = /*@__PURE__*/ createReactComponent< + JSX.MyComponent, + HTMLMyComponentElement +>('my-component'); diff --git a/packages/wc-ui-components-react/src/index.ts b/packages/wc-ui-components-react/src/index.ts index 099b463e..07635cbb 100644 --- a/packages/wc-ui-components-react/src/index.ts +++ b/packages/wc-ui-components-react/src/index.ts @@ -1 +1 @@ -export * from './components'; \ No newline at end of file +export * from './components'; diff --git a/packages/wc-ui-components-react/src/react-component-lib/createComponent.tsx b/packages/wc-ui-components-react/src/react-component-lib/createComponent.tsx index 0d816552..b5fda71b 100644 --- a/packages/wc-ui-components-react/src/react-component-lib/createComponent.tsx +++ b/packages/wc-ui-components-react/src/react-component-lib/createComponent.tsx @@ -9,7 +9,8 @@ import { } from './utils'; import { HTMLStencilElement } from '@stencil/core/internal/stencil-public-runtime'; -interface StencilReactInternalProps extends React.HTMLAttributes { +interface StencilReactInternalProps + extends React.HTMLAttributes { forwardedRef?: React.RefObject; ref?: React.Ref; } @@ -24,12 +25,14 @@ export const createReactComponent = < ReactComponentContext?: React.Context, manipulatePropsFunction: ( originalProps: StencilReactInternalProps, - propsToPass: any, - ) => ExpandedPropsTypes = undefined, + propsToPass: any + ) => ExpandedPropsTypes = undefined ) => { const displayName = dashToPascalCase(tagName); - const ReactComponent = class extends React.Component> { + const ReactComponent = class extends React.Component< + StencilReactInternalProps + > { componentEl: ElementType; setComponentElRef = (element: ElementType) => { @@ -49,7 +52,14 @@ export const createReactComponent = < } render() { - const { children, forwardedRef, style, className, ref, ...cProps } = this.props; + const { + children, + forwardedRef, + style, + className, + ref, + ...cProps + } = this.props; let propsToPass = Object.keys(cProps).reduce((acc, name) => { if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) { diff --git a/packages/wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx b/packages/wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx index cec0ccd2..935d3c92 100644 --- a/packages/wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx +++ b/packages/wc-ui-components-react/src/react-component-lib/createOverlayComponent.tsx @@ -23,7 +23,7 @@ export const createOverlayComponent = < OverlayType extends OverlayElement >( displayName: string, - controller: { create: (options: any) => Promise }, + controller: { create: (options: any) => Promise } ) => { const didDismissEventName = `on${displayName}DidDismiss`; const didPresentEventName = `on${displayName}DidPresent`; @@ -75,10 +75,17 @@ export const createOverlayComponent = < attachProps(this.overlay, this.props, prevProps); } - if (prevProps.isOpen !== this.props.isOpen && this.props.isOpen === true) { + if ( + prevProps.isOpen !== this.props.isOpen && + this.props.isOpen === true + ) { this.present(prevProps); } - if (this.overlay && prevProps.isOpen !== this.props.isOpen && this.props.isOpen === false) { + if ( + this.overlay && + prevProps.isOpen !== this.props.isOpen && + this.props.isOpen === false + ) { await this.overlay.dismiss(); } } @@ -121,7 +128,10 @@ export const createOverlayComponent = < } render() { - return ReactDOM.createPortal(this.props.isOpen ? this.props.children : null, this.el); + return ReactDOM.createPortal( + this.props.isOpen ? this.props.children : null, + this.el + ); } } diff --git a/packages/wc-ui-components-react/src/react-component-lib/utils/attachProps.ts b/packages/wc-ui-components-react/src/react-component-lib/utils/attachProps.ts index a3a9bc77..9b92aa88 100644 --- a/packages/wc-ui-components-react/src/react-component-lib/utils/attachProps.ts +++ b/packages/wc-ui-components-react/src/react-component-lib/utils/attachProps.ts @@ -1,6 +1,10 @@ import { camelToDashCase } from './case'; -export const attachProps = (node: HTMLElement, newProps: any, oldProps: any = {}) => { +export const attachProps = ( + node: HTMLElement, + newProps: any, + oldProps: any = {} +) => { // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first if (node instanceof Element) { // add any classes in className to the class list @@ -40,13 +44,21 @@ export const attachProps = (node: HTMLElement, newProps: any, oldProps: any = {} } }; -export const getClassName = (classList: DOMTokenList, newProps: any, oldProps: any) => { +export const getClassName = ( + classList: DOMTokenList, + newProps: any, + oldProps: any +) => { const newClassProp: string = newProps.className || newProps.class; const oldClassProp: string = oldProps.className || oldProps.class; // map the classes to Maps for performance const currentClasses = arrayToMap(classList); - const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []); - const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []); + const incomingPropClasses = arrayToMap( + newClassProp ? newClassProp.split(' ') : [] + ); + const oldPropClasses = arrayToMap( + oldClassProp ? oldClassProp.split(' ') : [] + ); const finalClassNames: string[] = []; // loop through each of the current classes on the component // to see if it should be a part of the classNames added @@ -68,7 +80,10 @@ export const getClassName = (classList: DOMTokenList, newProps: any, oldProps: a * Checks if an event is supported in the current execution environment. * @license Modernizr 3.0.0pre (Custom Build) | MIT */ -export const isCoveredByReact = (eventNameSuffix: string, doc: Document = document) => { +export const isCoveredByReact = ( + eventNameSuffix: string, + doc: Document = document +) => { const eventName = 'on' + eventNameSuffix; let isSupported = eventName in doc; @@ -82,9 +97,11 @@ export const isCoveredByReact = (eventNameSuffix: string, doc: Document = docume }; export const syncEvent = ( - node: Element & { __events?: { [key: string]: ((e: Event) => any) | undefined } }, + node: Element & { + __events?: { [key: string]: ((e: Event) => any) | undefined }; + }, eventName: string, - newEventHandler?: (e: Event) => any, + newEventHandler?: (e: Event) => any ) => { const eventStore = node.__events || (node.__events = {}); const oldEventHandler = eventStore[eventName]; @@ -101,7 +118,7 @@ export const syncEvent = ( if (newEventHandler) { newEventHandler.call(this, e); } - }), + }) ); }; diff --git a/packages/wc-ui-components-react/src/react-component-lib/utils/index.tsx b/packages/wc-ui-components-react/src/react-component-lib/utils/index.tsx index fa8adb0e..a35d5cf0 100644 --- a/packages/wc-ui-components-react/src/react-component-lib/utils/index.tsx +++ b/packages/wc-ui-components-react/src/react-component-lib/utils/index.tsx @@ -10,7 +10,7 @@ export type StencilReactExternalProps = PropType & // The comma in the type is to trick typescript because it things a single generic in a tsx file is jsx export const mergeRefs = (...refs: React.Ref[]) => ( - value: ElementType, + value: ElementType ) => refs.forEach((ref) => { if (typeof ref === 'function') { @@ -23,11 +23,11 @@ export const mergeRefs = (...refs: React.Ref[]) => ( export const createForwardRef = ( ReactComponent: any, - displayName: string, + displayName: string ) => { const forwardRef = ( props: StencilReactExternalProps, - ref: React.Ref, + ref: React.Ref ) => { return ; }; diff --git a/packages/wc-ui-components/src/components/button/mwc-button-style.ts b/packages/wc-ui-components/src/components/button/mwc-button-style.ts index 5d1f5622..2fdd5653 100644 --- a/packages/wc-ui-components/src/components/button/mwc-button-style.ts +++ b/packages/wc-ui-components/src/components/button/mwc-button-style.ts @@ -1,217 +1,225 @@ -import {getTheme} from '../util/mwc-util' -import setupJss from '../styles/setup-jss' -import deepmerge from 'deepmerge' -import createTheme from '../styles/create-theme' -import {fade} from '../styles/color-manipulator' +import { getTheme } from '../util/mwc-util'; +import setupJss from '../styles/setup-jss'; +import deepmerge from 'deepmerge'; +import createTheme from '../styles/create-theme'; +import { fade } from '../styles/color-manipulator'; const formatMs = (milliseconds: number) => `${Math.round(milliseconds)}ms`; export const rippleColors = { default: '', primary: '', secondary: '', - white:'' -} -const theme = createTheme(getTheme()) -class ButtonStyle{ + white: '', +}; +const theme = createTheme(getTheme()); +class ButtonStyle { defaultStyle: object = { root: { - ...theme.typography.button, - display: 'inline-flex', - alignItems: 'center', - justifyContent: 'center', - position: 'relative', - lineHeight: '1.4em', - boxSizing: 'border-box', - minWidth: 88, - minHeight: 36, - padding: `${theme.spacing.unit}px ${theme.spacing.unit * 2}px`, - borderRadius: 2, - color: theme.palette.text.primary, - WebkitTapHighlightColor: theme.palette.common.transparent, - backgroundColor: 'transparent', // Reset default value - outline: 'none', - border: 0, - cursor: 'pointer', - userSelect: 'none', - verticalAlign: 'middle', - appearance: 'none', + ...theme.typography.button, + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative', + lineHeight: '1.4em', + boxSizing: 'border-box', + minWidth: 88, + minHeight: 36, + padding: `${theme.spacing.unit}px ${theme.spacing.unit * 2}px`, + borderRadius: 2, + color: theme.palette.text.primary, + WebkitTapHighlightColor: theme.palette.common.transparent, + backgroundColor: 'transparent', // Reset default value + outline: 'none', + border: 0, + cursor: 'pointer', + userSelect: 'none', + verticalAlign: 'middle', + appearance: 'none', + textDecoration: 'none', + '&::-moz-focus-inner': { + borderStyle: 'none', // Remove Firefox dotted outline. + }, + transition: `background-color ${formatMs( + theme.transitions.duration.short + )}, box-shadow ${formatMs(theme.transitions.duration.short)}`, + '&:hover': { textDecoration: 'none', - '&::-moz-focus-inner': { - borderStyle: 'none', // Remove Firefox dotted outline. + // Reset on mouse devices + backgroundColor: fade(theme.palette.text.primary, 0.12), + '@media (hover: none)': { + backgroundColor: 'transparent', }, - transition: `background-color ${formatMs(theme.transitions.duration.short)}, box-shadow ${formatMs(theme.transitions.duration.short)}`, - '&:hover': { - textDecoration: 'none', - // Reset on mouse devices - backgroundColor: fade(theme.palette.text.primary, 0.12), - '@media (hover: none)': { - backgroundColor: 'transparent', - }, - '&$disabled': { - backgroundColor: 'transparent', - }, - }, - '&:active':{ - outline: 'none' - } - }, - disabled: { - pointerEvents: 'none', // Disable link interactions - cursor: 'default', - backgroundColor: 'transparent', - color: theme.palette.action.disabled, + '&$disabled': { + backgroundColor: 'transparent', + }, + }, + '&:active': { + outline: 'none', + }, + }, + disabled: { + pointerEvents: 'none', // Disable link interactions + cursor: 'default', + backgroundColor: 'transparent', + color: theme.palette.action.disabled, }, dense: { padding: `${theme.spacing.unit - 1}px ${theme.spacing.unit}px`, minWidth: 64, minHeight: 32, fontSize: theme.typography.pxToRem(theme.typography.fontSize - 1), - }, - label: { - width: '100%', - display: 'inherit', - alignItems: 'inherit', - justifyContent: 'inherit', - }, - flatPrimary: { - color: theme.palette.primary[500], - '&:hover': { - backgroundColor: fade(theme.palette.primary[500], 0.12), - // Reset on mouse devices - '@media (hover: none)': { - backgroundColor: 'transparent', + }, + label: { + width: '100%', + display: 'inherit', + alignItems: 'inherit', + justifyContent: 'inherit', + }, + flatPrimary: { + color: theme.palette.primary[500], + '&:hover': { + backgroundColor: fade(theme.palette.primary[500], 0.12), + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: 'transparent', + }, }, }, - }, - flatSecondary: { - color: theme.palette.secondary['A200'], - '&:hover': { - backgroundColor: fade(theme.palette.secondary['A200'], 0.12), - // Reset on mouse devices - '@media (hover: none)': { - backgroundColor: 'transparent', + flatSecondary: { + color: theme.palette.secondary['A200'], + '&:hover': { + backgroundColor: fade(theme.palette.secondary['A200'], 0.12), + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: 'transparent', + }, }, }, - }, - flatContrast: { - color: theme.palette.getContrastText(theme.palette.primary[500]), - '&:hover': { - backgroundColor: fade(theme.palette.getContrastText(theme.palette.primary[500]), 0.12), - // Reset on mouse devices - '@media (hover: none)': { - backgroundColor: 'transparent', + flatContrast: { + color: theme.palette.getContrastText(theme.palette.primary[500]), + '&:hover': { + backgroundColor: fade( + theme.palette.getContrastText(theme.palette.primary[500]), + 0.12 + ), + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: 'transparent', + }, }, }, - }, - colorInherit: { - color: 'inherit', - }, - stroked:{ + colorInherit: { + color: 'inherit', + }, + stroked: { borderStyle: 'solid', borderColor: theme.palette.grey[300], - borderWidth : '2px' + borderWidth: '2px', }, - strokedPrimary:{ + strokedPrimary: { borderStyle: 'solid', borderColor: theme.palette.primary[500], - borderWidth : '2px' + borderWidth: '2px', }, - strokedSecondary:{ + strokedSecondary: { borderStyle: 'solid', borderColor: theme.palette.secondary['A200'], - borderWidth : '2px' + borderWidth: '2px', }, - strokedContrast:{ + strokedContrast: { borderStyle: 'solid', - borderColor: fade(theme.palette.getContrastText(theme.palette.primary[500]), 0.12), - borderWidth : '2px' + borderColor: fade( + theme.palette.getContrastText(theme.palette.primary[500]), + 0.12 + ), + borderWidth: '2px', }, raised: { - color: theme.palette.getContrastText(theme.palette.grey[300]), - backgroundColor: theme.palette.grey[300], - boxShadow: theme.shadows[2], - '&$keyboardFocused': { + color: theme.palette.getContrastText(theme.palette.grey[300]), + backgroundColor: theme.palette.grey[300], + boxShadow: theme.shadows[2], + '&$keyboardFocused': { boxShadow: theme.shadows[6], - }, - '&:active': { - boxShadow: theme.shadows[8], + }, + '&:active': { + boxShadow: theme.shadows[8], + }, + '&$disabled': { + boxShadow: theme.shadows[0], + color: theme.palette.action.disabled, + backgroundColor: theme.palette.text.divider, + }, + '&:hover': { + backgroundColor: theme.palette.grey.A100, + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: theme.palette.grey[300], }, '&$disabled': { - boxShadow: theme.shadows[0], - color: theme.palette.action.disabled, backgroundColor: theme.palette.text.divider, - }, - '&:hover': { - backgroundColor: theme.palette.grey.A100, + color: theme.palette.action.disabled, // Reset on mouse devices '@media (hover: none)': { backgroundColor: theme.palette.grey[300], }, - '&$disabled': { - backgroundColor: theme.palette.text.divider, - color: theme.palette.action.disabled, - // Reset on mouse devices - '@media (hover: none)': { - backgroundColor: theme.palette.grey[300], - }, - }, }, + }, }, keyboardFocused: {}, raisedPrimary: { - color: theme.palette.getContrastText(theme.palette.primary[500]), - backgroundColor: theme.palette.primary[500], - '&:hover': { - backgroundColor: theme.palette.primary[700], - // Reset on mouse devices - '@media (hover: none)': { - backgroundColor: theme.palette.primary[500], + color: theme.palette.getContrastText(theme.palette.primary[500]), + backgroundColor: theme.palette.primary[500], + '&:hover': { + backgroundColor: theme.palette.primary[700], + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: theme.palette.primary[500], + }, }, }, - }, - raisedSecondary: { - color: theme.palette.getContrastText(theme.palette.secondary['A200']), - backgroundColor: theme.palette.secondary['A200'], - '&:hover': { - backgroundColor: theme.palette.secondary['A400'], - // Reset on mouse devices - '@media (hover: none)': { - backgroundColor: theme.palette.secondary['A200'], + raisedSecondary: { + color: theme.palette.getContrastText(theme.palette.secondary['A200']), + backgroundColor: theme.palette.secondary['A200'], + '&:hover': { + backgroundColor: theme.palette.secondary['A400'], + // Reset on mouse devices + '@media (hover: none)': { + backgroundColor: theme.palette.secondary['A200'], + }, }, }, - }, - raisedContrast: { - color: theme.palette.getContrastText(theme.palette.primary[500]), - }, + raisedContrast: { + color: theme.palette.getContrastText(theme.palette.primary[500]), + }, - fab: { - borderRadius: '50%', - padding: 0, - minWidth: 0, - width: 56, - height: 56, - boxShadow: theme.shadows[6], - '&:active': { - boxShadow: theme.shadows[12], - }, - }, - mini: { - width: 40, - height: 40, - }, - } - jss:any; - setup(style:object){ - const mergedStyles = deepmerge.all([this.defaultStyle,style]) - rippleColors.default = fade(theme.palette.text.primary, 0.30) - rippleColors.primary = fade(theme.palette.primary[500], 0.30) - rippleColors.secondary = fade(theme.palette.secondary['A200'], 0.30) - rippleColors.white = fade('#ffffff', 0.50) - this.jss = new setupJss() - this.jss.attachStyleSheet(mergedStyles) + fab: { + borderRadius: '50%', + padding: 0, + minWidth: 0, + width: 56, + height: 56, + boxShadow: theme.shadows[6], + '&:active': { + boxShadow: theme.shadows[12], + }, + }, + mini: { + width: 40, + height: 40, + }, + }; + jss: any; + setup(style: object) { + const mergedStyles = deepmerge.all([this.defaultStyle, style]); + rippleColors.default = fade(theme.palette.text.primary, 0.3); + rippleColors.primary = fade(theme.palette.primary[500], 0.3); + rippleColors.secondary = fade(theme.palette.secondary['A200'], 0.3); + rippleColors.white = fade('#ffffff', 0.5); + this.jss = new setupJss(); + this.jss.attachStyleSheet(mergedStyles); } - getClassName(type:Array):string{ - return this.jss.getClassName(type) + getClassName(type: Array): string { + return this.jss.getClassName(type); } } -export default ButtonStyle \ No newline at end of file +export default ButtonStyle; diff --git a/packages/wc-ui-components/src/components/button/mwc-button-types.ts b/packages/wc-ui-components/src/components/button/mwc-button-types.ts index 14cf59a2..47e1decb 100644 --- a/packages/wc-ui-components/src/components/button/mwc-button-types.ts +++ b/packages/wc-ui-components/src/components/button/mwc-button-types.ts @@ -1,7 +1,12 @@ -export type colorType = 'default'|'inherit'|'primary'|'secondary'|'contrast' +export type colorType = + | 'default' + | 'inherit' + | 'primary' + | 'secondary' + | 'contrast'; export const buttonColor = { - primary: 'Primary', - secondary: 'Secondary', - contrast: 'Contrast' -} \ No newline at end of file + primary: 'Primary', + secondary: 'Secondary', + contrast: 'Contrast', +}; diff --git a/packages/wc-ui-components/src/components/button/mwc-button.tsx b/packages/wc-ui-components/src/components/button/mwc-button.tsx index 2afba891..5aac3323 100644 --- a/packages/wc-ui-components/src/components/button/mwc-button.tsx +++ b/packages/wc-ui-components/src/components/button/mwc-button.tsx @@ -1,23 +1,29 @@ -import { Component, Prop, Element, Event, EventEmitter, h } from '@stencil/core'; +import { + Component, + Prop, + Element, + Event, + EventEmitter, + h, +} from '@stencil/core'; -import ButtonStyle, {rippleColors} from './mwc-button-style' -import tmripple from '../util/ripple' -import {colorType, buttonColor} from './mwc-button-types' +import ButtonStyle, { rippleColors } from './mwc-button-style'; +import tmripple from '../util/ripple'; +import { colorType, buttonColor } from './mwc-button-types'; @Component({ tag: 'mwc-button', - shadow: false + shadow: false, }) -export class MWCButton{ - +export class MWCButton { @Prop() icon: string; @Prop() raised: boolean = false; @Prop() unelevated: boolean = false; @Prop() stroked: boolean = false; @Prop() dense: boolean = false; @Prop() compact: boolean = false; - @Prop() color:colorType = "default" - @Prop() backgroundcolor: string = "#ff0000"; + @Prop() color: colorType = 'default'; + @Prop() backgroundcolor: string = '#ff0000'; @Prop() disabled: boolean = false; @Prop() ripple: boolean = true; @Prop() fab: boolean = false; @@ -27,89 +33,85 @@ export class MWCButton{ @Event() onClick: EventEmitter; buttonRipple: any; - mwcButton:any; + mwcButton: any; - @Element() btnEl : HTMLButtonElement; + @Element() btnEl: HTMLButtonElement; classes: any; - componentWillLoad(){ - const buttonStyle = new ButtonStyle() - let changeStyle: object = { - - } - buttonStyle.setup(changeStyle) - this.btnEl.disabled = this.disabled + componentWillLoad() { + const buttonStyle = new ButtonStyle(); + let changeStyle: object = {}; + buttonStyle.setup(changeStyle); + this.btnEl.disabled = this.disabled; - /* Object.getOwnPropertyNames(this).forEach((key) => { + /* Object.getOwnPropertyNames(this).forEach((key) => { console.log(typeof this[key]) }) */ - this.btnEl.className = buttonStyle.getClassName(this.getClassNames()) + this.btnEl.className = buttonStyle.getClassName(this.getClassNames()); - this.btnEl.addEventListener('click',(evt)=>{ - - this.onClick.emit({...evt, alex:'kuku'}); - }); + this.btnEl.addEventListener('click', (evt) => { + this.onClick.emit({ ...evt, alex: 'kuku' }); + }); } - getClassNames(): Array{ - let classNames:Array = ['root'] - if(this.disabled){ - classNames.push('disabled') - } - if(this.raised){ - classNames.push('raised') - if(this.color !== 'default'){ - classNames.push(`raised${buttonColor[this.color]}`) - } - } - if(!this.raised && !this.stroked && !this.unelevated){ - if(this.color !== 'default'){ - classNames.push(`flat${buttonColor[this.color]}`) - } - } - if(this.stroked){ - classNames.push(`stroked${buttonColor[this.color]}`) + getClassNames(): Array { + let classNames: Array = ['root']; + if (this.disabled) { + classNames.push('disabled'); + } + if (this.raised) { + classNames.push('raised'); + if (this.color !== 'default') { + classNames.push(`raised${buttonColor[this.color]}`); + } + } + if (!this.raised && !this.stroked && !this.unelevated) { + if (this.color !== 'default') { + classNames.push(`flat${buttonColor[this.color]}`); + } + } + if (this.stroked) { + classNames.push(`stroked${buttonColor[this.color]}`); + } + if (this.dense) { + classNames.push('dense'); } - if(this.dense){ - classNames.push('dense') - } - if(this.fab){ - classNames.push('fab') - } - if(this.mini){ - classNames.push('mini') - } - return classNames; + if (this.fab) { + classNames.push('fab'); + } + if (this.mini) { + classNames.push('mini'); + } + return classNames; } - componentDidLoad(){ - if(this.ripple){ - const rippleColor = (this.raised && (this.color === 'primary' || this.color === 'secondary')) ? rippleColors.white : rippleColors[this.color] - tmripple.attachToSelectors({ - selectors: this.btnEl, - color: rippleColor, - eventListener: 'mousedown' - }); + componentDidLoad() { + if (this.ripple) { + const rippleColor = + this.raised && (this.color === 'primary' || this.color === 'secondary') + ? rippleColors.white + : rippleColors[this.color]; + tmripple.attachToSelectors({ + selectors: this.btnEl, + color: rippleColor, + eventListener: 'mousedown', + }); } } - renderIcon(){ - if(this.icon){ - return( - {this.icon} - ) - } - return null; + renderIcon() { + if (this.icon) { + return {this.icon}; + } + return null; } - renderButton(){ - if(this.href){ - return( - - - - ) - } + renderButton() { + if (this.href) { return ( + - ) - /* return ( + + ); + } + return ; + /* return ( - ) + + ); } } diff --git a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss index ee46d6c1..0c28e56b 100644 --- a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss +++ b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.scss @@ -1 +1 @@ -@import "@material/grid-list/mdc-grid-list.scss"; \ No newline at end of file +@import '@material/grid-list/mdc-grid-list.scss'; diff --git a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx index 898c0bf2..bcf6f789 100644 --- a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx +++ b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list-tile.tsx @@ -3,35 +3,42 @@ import { Component, Prop, Element, h } from '@stencil/core'; @Component({ tag: 'mwc-grid-list-tile', styleUrl: 'mwc-grid-list-tile.scss', - shadow: false + shadow: false, }) -export class MWCGridListTile{ +export class MWCGridListTile { + @Element() gridListTileEl: HTMLElement; + @Prop() titlebackgroundcolor: string; + tileTitle: any; - @Element() gridListTileEl : HTMLElement; - @Prop() titlebackgroundcolor : string; - tileTitle:any; - - componentWillLoad(){ - if(this.titlebackgroundcolor){ - this.gridListTileEl.style.setProperty('--mdc-theme-primary', `${this.titlebackgroundcolor}`); - } + componentWillLoad() { + if (this.titlebackgroundcolor) { + this.gridListTileEl.style.setProperty( + '--mdc-theme-primary', + `${this.titlebackgroundcolor}` + ); + } } - componentDidLoad(){ - this.tileTitle.style.setProperty('height', 'auto'); + componentDidLoad() { + this.tileTitle.style.setProperty('height', 'auto'); } render() { return ( -
  • -
    -
    - -
    -
    - { this.tileTitle = tileTitle; }}> - - -
  • - ) +
  • +
    +
    + +
    +
    + { + this.tileTitle = tileTitle; + }} + > + + +
  • + ); } } diff --git a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.scss b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.scss index ee46d6c1..0c28e56b 100644 --- a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.scss +++ b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.scss @@ -1 +1 @@ -@import "@material/grid-list/mdc-grid-list.scss"; \ No newline at end of file +@import '@material/grid-list/mdc-grid-list.scss'; diff --git a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.tsx b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.tsx index f99765ee..9c5b8c65 100644 --- a/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.tsx +++ b/packages/wc-ui-components/src/components/grid-list/mwc-grid-list.tsx @@ -3,14 +3,13 @@ import { Component, Prop, Element, h } from '@stencil/core'; @Component({ tag: 'mwc-grid-list', styleUrl: 'mwc-grid-list.scss', - shadow: false + shadow: false, }) -export class MWCGridList{ - - @Element() gridListEl : HTMLElement; - @Prop() tilewidth : string; - @Prop() tiletitleposition : string; - @Prop() aspectratio : string; +export class MWCGridList { + @Element() gridListEl: HTMLElement; + @Prop() tilewidth: string; + @Prop() tiletitleposition: string; + @Prop() aspectratio: string; /* 1x1 16x9 @@ -19,31 +18,33 @@ export class MWCGridList{ 4x3 3x4 */ - componentWillLoad(){ - if(this.tilewidth){ - this.gridListEl.style.setProperty('--mdc-grid-list-tile-width', this.tilewidth); - } + componentWillLoad() { + if (this.tilewidth) { + this.gridListEl.style.setProperty( + '--mdc-grid-list-tile-width', + this.tilewidth + ); + } } - getGridListClassName(){ - let className: string = 'mdc-grid-list'; - if(this.aspectratio){ - className = ` ${className} mdc-grid-list--tile-aspect-${this.aspectratio}`; - } - if(this.tiletitleposition === "top"){ - className = ` ${className} mdc-grid-list--header-caption`; - } - return className; + getGridListClassName() { + let className: string = 'mdc-grid-list'; + if (this.aspectratio) { + className = ` ${className} mdc-grid-list--tile-aspect-${this.aspectratio}`; + } + if (this.tiletitleposition === 'top') { + className = ` ${className} mdc-grid-list--header-caption`; + } + return className; } - render() { return ( -
    -
      - -
    -
    - ) +
    +
      + +
    +
    + ); } } diff --git a/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss b/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss index 94a33426..060bdda2 100644 --- a/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss +++ b/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.scss @@ -1 +1 @@ -@import "@material/icon-toggle/mdc-icon-toggle.scss"; \ No newline at end of file +@import '@material/icon-toggle/mdc-icon-toggle.scss'; diff --git a/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx b/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx index 8fd304ab..b06d0607 100644 --- a/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx +++ b/packages/wc-ui-components/src/components/icon-toggle/mwc-icon-toggle.tsx @@ -1,13 +1,19 @@ -import { Component, Prop, Element, Event, EventEmitter, h } from '@stencil/core'; -import {MDCIconToggle} from '@material/icon-toggle'; +import { + Component, + Prop, + Element, + Event, + EventEmitter, + h, +} from '@stencil/core'; +import { MDCIconToggle } from '@material/icon-toggle'; @Component({ tag: 'mwc-icon-toggle', styleUrl: 'mwc-icon-toggle.scss', - shadow: false + shadow: false, }) -export class MWCIconToggle{ - +export class MWCIconToggle { @Prop() onicon: string; @Prop() oniconlabel: string = ' '; @Prop() officon: string; @@ -15,84 +21,92 @@ export class MWCIconToggle{ @Prop() color: string; @Prop() ripple: boolean = true; @Prop() disabled: boolean = false; - @Prop() toggleon:boolean = false; + @Prop() toggleon: boolean = false; @Event() oniconchange: EventEmitter; mdcIconToggle: any; - iconToggle:any; + iconToggle: any; elStyleNode: any; - @Element() iconToggleEl : HTMLElement; + @Element() iconToggleEl: HTMLElement; - componentWillLoad(){ - if(this.color){ - this.iconToggleEl.style.setProperty('--mdc-theme-text-secondary-on-light',this.color); - } + componentWillLoad() { + if (this.color) { + this.iconToggleEl.style.setProperty( + '--mdc-theme-text-secondary-on-light', + this.color + ); + } } - componentDidLoad(){ - if(this.ripple){ - const me = this; - this.mdcIconToggle = MDCIconToggle.attachTo(this.iconToggle); - this.mdcIconToggle.listen('MDCIconToggle:change',({detail})=>{ - console.log(detail) - me.oniconchange.emit(detail) - }) - } + componentDidLoad() { + if (this.ripple) { + const me = this; + this.mdcIconToggle = MDCIconToggle.attachTo(this.iconToggle); + this.mdcIconToggle.listen('MDCIconToggle:change', ({ detail }) => { + console.log(detail); + me.oniconchange.emit(detail); + }); + } } - componentDidUnload(){ - if(this.ripple){ - this.mdcIconToggle.destroy() - } + componentDidUnload() { + if (this.ripple) { + this.mdcIconToggle.destroy(); + } } - getStyleNode(){ + getStyleNode() { var styleNode = document.createElement('style'); - styleNode.type = "text/css"; - var styleText = document.createTextNode(`.mdc-icon-toggle::before, .mdc-icon-toggle::after { + styleNode.type = 'text/css'; + var styleText = document.createTextNode(`.mdc-icon-toggle::before, .mdc-icon-toggle::after { background-color: ${this.color}20 !important; }`); - styleNode.appendChild(styleText); - this.elStyleNode = styleNode; - this.iconToggleEl.appendChild(this.elStyleNode); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.iconToggleEl.appendChild(this.elStyleNode); } - onFocus(){ - if(this.color){ - this.getStyleNode() + onFocus() { + if (this.color) { + this.getStyleNode(); } } - onBlur(){ - if(this.color){ - this.iconToggleEl.removeChild(this.elStyleNode) - } + onBlur() { + if (this.color) { + this.iconToggleEl.removeChild(this.elStyleNode); + } } - getToggleOn(){ - return `{ "content": "${this.onicon}"}`; + getToggleOn() { + return `{ "content": "${this.onicon}"}`; } - getToggleOff(){ - return `{ "content": "${this.officon}"}`; + getToggleOff() { + return `{ "content": "${this.officon}"}`; } - getIconClassName():string{ - let className: string = "mdc-icon-toggle material-icons"; + getIconClassName(): string { + let className: string = 'mdc-icon-toggle material-icons'; - if(this.disabled){ - className = `${className} mdc-icon-toggle--disabled`; - } - return className; + if (this.disabled) { + className = `${className} mdc-icon-toggle--disabled`; + } + return className; } render() { return ( - { this.iconToggle = iconToggle; }} - role="button" tabindex="-1" - aria-pressed={this.toggleon} - aria-disabled={this.disabled} - onFocus = {(evt)=> this.onFocus()} - onBlur = {(evt)=> this.onBlur()} - data-toggle-on={this.getToggleOn()} - data-toggle-off={this.getToggleOff()}> - {this.officon} - - ) + { + this.iconToggle = iconToggle; + }} + role="button" + tabindex="-1" + aria-pressed={this.toggleon} + aria-disabled={this.disabled} + onFocus={(evt) => this.onFocus()} + onBlur={(evt) => this.onBlur()} + data-toggle-on={this.getToggleOn()} + data-toggle-off={this.getToggleOff()} + > + {this.officon} + + ); } } diff --git a/packages/wc-ui-components/src/components/list/mwc-list-item.scss b/packages/wc-ui-components/src/components/list/mwc-list-item.scss index 68edb62a..1c220c5d 100644 --- a/packages/wc-ui-components/src/components/list/mwc-list-item.scss +++ b/packages/wc-ui-components/src/components/list/mwc-list-item.scss @@ -1,18 +1,18 @@ -@import "@material/list/mdc-list.scss"; -@import "@material/ripple/mdc-ripple.scss"; +@import '@material/list/mdc-list.scss'; +@import '@material/ripple/mdc-ripple.scss'; - .mwc-list-item{ - &:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, .08); - } +.mwc-list-item { + &:hover { + cursor: pointer; + background-color: rgba(0, 0, 0, 0.08); } -.mdc-list-item.mdc-ripple-upgraded{ - left: auto !important; - right: auto !important; - width: auto !important; } -.mdc-list-item{ - min-height: 48px; - height: auto; -} \ No newline at end of file +.mdc-list-item.mdc-ripple-upgraded { + left: auto !important; + right: auto !important; + width: auto !important; +} +.mdc-list-item { + min-height: 48px; + height: auto; +} diff --git a/packages/wc-ui-components/src/components/list/mwc-list-item.tsx b/packages/wc-ui-components/src/components/list/mwc-list-item.tsx index bc511211..04a78cf1 100644 --- a/packages/wc-ui-components/src/components/list/mwc-list-item.tsx +++ b/packages/wc-ui-components/src/components/list/mwc-list-item.tsx @@ -1,51 +1,55 @@ import { Component, Prop, Element, h } from '@stencil/core'; -import {MDCRipple} from '@material/ripple'; +import { MDCRipple } from '@material/ripple'; @Component({ tag: 'mwc-list-item', styleUrl: 'mwc-list-item.scss', - shadow: false + shadow: false, }) -export class MWCListItem{ - - @Element() listItemEl : HTMLElement; +export class MWCListItem { + @Element() listItemEl: HTMLElement; @Prop() ripple: boolean = true; @Prop() interactive: boolean = true; - listItemRipple:any; - listItem:any; + listItemRipple: any; + listItem: any; - componentWillLoad(){ - // if(this.tilewidth){ - // this.gridListEl.style.setProperty('--mdc-grid-list-tile-width', this.tilewidth); - // } + componentWillLoad() { + // if(this.tilewidth){ + // this.gridListEl.style.setProperty('--mdc-grid-list-tile-width', this.tilewidth); + // } } - componentDidLoad(){ - if(this.ripple){ - this.listItemRipple = MDCRipple.attachTo(this.listItem); + componentDidLoad() { + if (this.ripple) { + this.listItemRipple = MDCRipple.attachTo(this.listItem); // this.listItemRipple.unbounded = true - } + } } - componentDidUnload(){ - if(this.ripple){ - this.listItemRipple.destroy() - } + componentDidUnload() { + if (this.ripple) { + this.listItemRipple.destroy(); + } } - getListItemClassName(){ - let className: string = 'mdc-list-item'; - if(this.interactive){ - className = ` ${className} mwc-list-item`; - } - return className; + getListItemClassName() { + let className: string = 'mdc-list-item'; + if (this.interactive) { + className = ` ${className} mwc-list-item`; + } + return className; } render() { return ( -
  • { this.listItem = listItem; }}> - -
  • - ) +
  • { + this.listItem = listItem; + }} + > + +
  • + ); } } diff --git a/packages/wc-ui-components/src/components/list/mwc-list-style.ts b/packages/wc-ui-components/src/components/list/mwc-list-style.ts index f52397d5..19086232 100644 --- a/packages/wc-ui-components/src/components/list/mwc-list-style.ts +++ b/packages/wc-ui-components/src/components/list/mwc-list-style.ts @@ -1,42 +1,41 @@ -import {getTheme} from '../util/mwc-util' -import setupJss from '../styles/setup-jss' -import deepmerge from 'deepmerge' -import createTheme from '../styles/create-theme' +import { getTheme } from '../util/mwc-util'; +import setupJss from '../styles/setup-jss'; +import deepmerge from 'deepmerge'; +import createTheme from '../styles/create-theme'; -const theme = createTheme(getTheme()) +const theme = createTheme(getTheme()); -class ListStyle{ - defaultStyle: object = { - root: { - flex: '1 1 auto', - listStyle: 'none', - margin: 0, - padding: 0, - position: 'relative', - }, - padding: { - paddingTop: theme.spacing.unit, - paddingBottom: theme.spacing.unit, - }, - dense: { - paddingTop: theme.spacing.unit / 2, - paddingBottom: theme.spacing.unit / 2, - }, - subheader: { - paddingTop: 0, - }, - } +class ListStyle { + defaultStyle: object = { + root: { + flex: '1 1 auto', + listStyle: 'none', + margin: 0, + padding: 0, + position: 'relative', + }, + padding: { + paddingTop: theme.spacing.unit, + paddingBottom: theme.spacing.unit, + }, + dense: { + paddingTop: theme.spacing.unit / 2, + paddingBottom: theme.spacing.unit / 2, + }, + subheader: { + paddingTop: 0, + }, + }; - jss:any; - setup(style:object){ - const mergedStyles = deepmerge.all([this.defaultStyle,style]) - this.jss = new setupJss() - this.jss.attachStyleSheet(mergedStyles) + jss: any; + setup(style: object) { + const mergedStyles = deepmerge.all([this.defaultStyle, style]); + this.jss = new setupJss(); + this.jss.attachStyleSheet(mergedStyles); } - getClassName(type:Array):string{ - return this.jss.getClassName(type) + getClassName(type: Array): string { + return this.jss.getClassName(type); } - } -export default ListStyle; \ No newline at end of file +export default ListStyle; diff --git a/packages/wc-ui-components/src/components/list/mwc-list.scss b/packages/wc-ui-components/src/components/list/mwc-list.scss index cc1cbde3..e1e8395d 100644 --- a/packages/wc-ui-components/src/components/list/mwc-list.scss +++ b/packages/wc-ui-components/src/components/list/mwc-list.scss @@ -1,13 +1,12 @@ -@import "@material/list/mdc-list.scss"; -@import "@material/ripple/mdc-ripple.scss"; +@import '@material/list/mdc-list.scss'; +@import '@material/ripple/mdc-ripple.scss'; - - .mwc-bordered-list { - padding: 0; - border-top: 1px solid rgba(0, 0, 0, .12); - } - .mwc-bordered-list .mdc-list-item { - padding: 0 16px; - border: 1px solid rgba(0, 0, 0, .12); - border-top: none; - } +.mwc-bordered-list { + padding: 0; + border-top: 1px solid rgba(0, 0, 0, 0.12); +} +.mwc-bordered-list .mdc-list-item { + padding: 0 16px; + border: 1px solid rgba(0, 0, 0, 0.12); + border-top: none; +} diff --git a/packages/wc-ui-components/src/components/list/mwc-list.tsx b/packages/wc-ui-components/src/components/list/mwc-list.tsx index cebb1f13..82d9ac37 100644 --- a/packages/wc-ui-components/src/components/list/mwc-list.tsx +++ b/packages/wc-ui-components/src/components/list/mwc-list.tsx @@ -1,35 +1,32 @@ import { Component, Prop, Element, h } from '@stencil/core'; -import ListStyle from './mwc-list-style' +import ListStyle from './mwc-list-style'; @Component({ tag: 'mwc-list', //styleUrl: 'mwc-list.scss', - shadow: false + shadow: false, }) -export class MWCList{ - - @Element() listEl : HTMLElement; - @Prop() borderlist : boolean = true; +export class MWCList { + @Element() listEl: HTMLElement; + @Prop() borderlist: boolean = true; @Prop() dense: boolean = false; - listStyle : any; - - componentWillLoad(){ - this.listStyle = new ListStyle() - let changeStyle: object = { + listStyle: any; - } - this.listStyle.setup(changeStyle) + componentWillLoad() { + this.listStyle = new ListStyle(); + let changeStyle: object = {}; + this.listStyle.setup(changeStyle); } - getClassNames():Array{ - let classNames:Array = ['root'] - return classNames + getClassNames(): Array { + let classNames: Array = ['root']; + return classNames; } render() { return ( -
      - -
    - ) +
      + +
    + ); } } diff --git a/packages/wc-ui-components/src/components/menu/mwc-menu-item.scss b/packages/wc-ui-components/src/components/menu/mwc-menu-item.scss index 7ebce725..a8f14ba0 100644 --- a/packages/wc-ui-components/src/components/menu/mwc-menu-item.scss +++ b/packages/wc-ui-components/src/components/menu/mwc-menu-item.scss @@ -1 +1 @@ -@import "@material/list/mdc-list.scss"; +@import '@material/list/mdc-list.scss'; diff --git a/packages/wc-ui-components/src/components/menu/mwc-menu-item.tsx b/packages/wc-ui-components/src/components/menu/mwc-menu-item.tsx index fed88330..a4842043 100644 --- a/packages/wc-ui-components/src/components/menu/mwc-menu-item.tsx +++ b/packages/wc-ui-components/src/components/menu/mwc-menu-item.tsx @@ -3,20 +3,22 @@ import { Component, Prop, h } from '@stencil/core'; @Component({ tag: 'mwc-menu-item', styleUrl: 'mwc-menu-item.scss', - shadow: false + shadow: false, }) -export class MWCMenuItem{ +export class MWCMenuItem { @Prop() disabled: boolean = false; - @Prop() role: string = "menuitem"; //option + @Prop() role: string = 'menuitem'; //option render() { return ( -
  • - -
  • - ) + aria-disabled={this.disabled} + > + + + ); } -} \ No newline at end of file +} diff --git a/packages/wc-ui-components/src/components/menu/mwc-menu.scss b/packages/wc-ui-components/src/components/menu/mwc-menu.scss index e05189b7..58a5f780 100644 --- a/packages/wc-ui-components/src/components/menu/mwc-menu.scss +++ b/packages/wc-ui-components/src/components/menu/mwc-menu.scss @@ -1,6 +1,6 @@ -@import "@material/list/mdc-list.scss"; -@import "@material/menu/mdc-menu.scss"; -.menuPos{ - left:0; - top:0; -} \ No newline at end of file +@import '@material/list/mdc-list.scss'; +@import '@material/menu/mdc-menu.scss'; +.menuPos { + left: 0; + top: 0; +} diff --git a/packages/wc-ui-components/src/components/menu/mwc-menu.tsx b/packages/wc-ui-components/src/components/menu/mwc-menu.tsx index faacb5d0..c658bf94 100644 --- a/packages/wc-ui-components/src/components/menu/mwc-menu.tsx +++ b/packages/wc-ui-components/src/components/menu/mwc-menu.tsx @@ -1,57 +1,72 @@ -import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; -import {MDCSimpleMenu} from '@material/menu'; +import { + Component, + Prop, + Element, + Method, + Event, + EventEmitter, + h, +} from '@stencil/core'; +import { MDCSimpleMenu } from '@material/menu'; @Component({ tag: 'mwc-menu', styleUrl: 'mwc-menu.scss', - shadow: false + shadow: false, }) -export class MWCMenu{ - - @Element() menuEl : HTMLElement; - @Prop() open : boolean = false; +export class MWCMenu { + @Element() menuEl: HTMLElement; + @Prop() open: boolean = false; @Method() - async show(focusIndex:number){ - if(focusIndex){ - this.mdcMenuComponent.show({focusIndex}) - }else{ - this.mdcMenuComponent.show() - } + async show(focusIndex: number) { + if (focusIndex) { + this.mdcMenuComponent.show({ focusIndex }); + } else { + this.mdcMenuComponent.show(); + } } @Method() - async hide(){ - this.mdcMenuComponent.hide() + async hide() { + this.mdcMenuComponent.hide(); } @Event() selected: EventEmitter; - mdcMenuComponent:any; + mdcMenuComponent: any; mdcMenu: any; - componentDidLoad(){ - this.mdcMenuComponent = MDCSimpleMenu.attachTo(this.mdcMenu) - if(this.open){ - this.mdcMenuComponent.open = true; + componentDidLoad() { + this.mdcMenuComponent = MDCSimpleMenu.attachTo(this.mdcMenu); + if (this.open) { + this.mdcMenuComponent.open = true; } this.mdcMenu.addEventListener('MDCSimpleMenu:selected', (evt) => { - this.selected.emit(evt) + this.selected.emit(evt); }); } - componentDidUnload(){ - this.mdcMenuComponent.destroy() + componentDidUnload() { + this.mdcMenuComponent.destroy(); } render() { return ( -
    { this.mdcMenu = mdcMenu; }}> - -
    - ) +
    { + this.mdcMenu = mdcMenu; + }} + > + +
    + ); } -} \ No newline at end of file +} diff --git a/packages/wc-ui-components/src/components/my-component/my-component.spec.ts b/packages/wc-ui-components/src/components/my-component/my-component.spec.ts index 90f76d48..c0599844 100644 --- a/packages/wc-ui-components/src/components/my-component/my-component.spec.ts +++ b/packages/wc-ui-components/src/components/my-component/my-component.spec.ts @@ -3,9 +3,9 @@ import { MyComponent } from './my-component'; describe('my-component', () => { it('renders', async () => { - const {root} = await newSpecPage({ + const { root } = await newSpecPage({ components: [MyComponent], - html: '' + html: '', }); expect(root).toEqualHtml(` @@ -19,9 +19,9 @@ describe('my-component', () => { }); it('renders with values', async () => { - const {root} = await newSpecPage({ + const { root } = await newSpecPage({ components: [MyComponent], - html: `` + html: ``, }); expect(root).toEqualHtml(` diff --git a/packages/wc-ui-components/src/components/my-component/my-component.tsx b/packages/wc-ui-components/src/components/my-component/my-component.tsx index 7efc5599..56d51d96 100644 --- a/packages/wc-ui-components/src/components/my-component/my-component.tsx +++ b/packages/wc-ui-components/src/components/my-component/my-component.tsx @@ -4,7 +4,7 @@ import { format } from '../../utils/utils'; @Component({ tag: 'my-component', styleUrl: 'my-component.css', - shadow: true + shadow: true, }) export class MyComponent { /** diff --git a/packages/wc-ui-components/src/components/paper/mwc-paper-style.ts b/packages/wc-ui-components/src/components/paper/mwc-paper-style.ts index 97ef4fbd..74f7d0f5 100644 --- a/packages/wc-ui-components/src/components/paper/mwc-paper-style.ts +++ b/packages/wc-ui-components/src/components/paper/mwc-paper-style.ts @@ -1,38 +1,37 @@ -import {getTheme} from '../util/mwc-util' -import setupJss from '../styles/setup-jss' -import deepmerge from 'deepmerge' -import createTheme from '../styles/create-theme' +import { getTheme } from '../util/mwc-util'; +import setupJss from '../styles/setup-jss'; +import deepmerge from 'deepmerge'; +import createTheme from '../styles/create-theme'; -const theme = createTheme(getTheme()) +const theme = createTheme(getTheme()); const shadows = {}; - theme.shadows.forEach((shadow, index) => { - shadows[`shadow${index}`] = { - boxShadow: shadow, - }; +theme.shadows.forEach((shadow, index) => { + shadows[`shadow${index}`] = { + boxShadow: shadow, + }; }); -class PaperStyle{ - defaultStyle: object = { +class PaperStyle { + defaultStyle: object = { root: { backgroundColor: theme.palette.background.paper, }, rounded: { borderRadius: 2, }, - ...shadows - } + ...shadows, + }; - jss:any; - setup(style:object){ - const mergedStyles = deepmerge.all([this.defaultStyle,style]) - this.jss = new setupJss() - this.jss.attachStyleSheet(mergedStyles) + jss: any; + setup(style: object) { + const mergedStyles = deepmerge.all([this.defaultStyle, style]); + this.jss = new setupJss(); + this.jss.attachStyleSheet(mergedStyles); } - getClassName(type:Array):string{ - return this.jss.getClassName(type) + getClassName(type: Array): string { + return this.jss.getClassName(type); } - } -export default PaperStyle; \ No newline at end of file +export default PaperStyle; diff --git a/packages/wc-ui-components/src/components/paper/mwc-paper.tsx b/packages/wc-ui-components/src/components/paper/mwc-paper.tsx index 08bb5b6c..4e923e12 100644 --- a/packages/wc-ui-components/src/components/paper/mwc-paper.tsx +++ b/packages/wc-ui-components/src/components/paper/mwc-paper.tsx @@ -1,40 +1,43 @@ import { Component, Prop, h } from '@stencil/core'; -import PaperStyle from './mwc-paper-style' +import PaperStyle from './mwc-paper-style'; @Component({ tag: 'mwc-paper', - shadow: false + shadow: false, }) -export class MWCPaper{ - +export class MWCPaper { @Prop() width: string = 'auto'; - @Prop() height : string = 'auto'; - @Prop() elevation : number = 2; - @Prop() radius : number = 4; + @Prop() height: string = 'auto'; + @Prop() elevation: number = 2; + @Prop() radius: number = 4; - paperStyle:any; + paperStyle: any; - componentWillLoad(){ - this.paperStyle = new PaperStyle() - let changeStyle: object = { - rounded:{ - borderRadius: this.radius, - width : this.width, - height: this.height, - } - } - this.paperStyle.setup(changeStyle) + componentWillLoad() { + this.paperStyle = new PaperStyle(); + let changeStyle: object = { + rounded: { + borderRadius: this.radius, + width: this.width, + height: this.height, + }, + }; + this.paperStyle.setup(changeStyle); } - getClassNames():Array{ - let classNames:Array = ['root',`shadow${this.elevation}`, 'rounded'] - return classNames + getClassNames(): Array { + let classNames: Array = [ + 'root', + `shadow${this.elevation}`, + 'rounded', + ]; + return classNames; } render() { return ( -
    - -
    - ) +
    + +
    + ); } } diff --git a/packages/wc-ui-components/src/components/progress/mwc-progress.scss b/packages/wc-ui-components/src/components/progress/mwc-progress.scss index 9567298d..2daee071 100644 --- a/packages/wc-ui-components/src/components/progress/mwc-progress.scss +++ b/packages/wc-ui-components/src/components/progress/mwc-progress.scss @@ -1 +1 @@ -@import "@material/linear-progress/mdc-linear-progress.scss"; \ No newline at end of file +@import '@material/linear-progress/mdc-linear-progress.scss'; diff --git a/packages/wc-ui-components/src/components/progress/mwc-progress.tsx b/packages/wc-ui-components/src/components/progress/mwc-progress.tsx index cec3f2df..e0513283 100644 --- a/packages/wc-ui-components/src/components/progress/mwc-progress.tsx +++ b/packages/wc-ui-components/src/components/progress/mwc-progress.tsx @@ -1,28 +1,27 @@ import { Component, Prop, Element, Method, h } from '@stencil/core'; -import {MDCLinearProgress} from '@material/linear-progress' +import { MDCLinearProgress } from '@material/linear-progress'; @Component({ tag: 'mwc-progress', styleUrl: 'mwc-progress.scss', - shadow: false + shadow: false, }) -export class MWCProgress{ - - @Element() progressEl : HTMLElement; +export class MWCProgress { + @Element() progressEl: HTMLElement; @Prop() width: string; - @Prop() height : string; - @Prop() show : boolean = true; - @Prop() type : string = 'indeterminate'; + @Prop() height: string; + @Prop() show: boolean = true; + @Prop() type: string = 'indeterminate'; @Prop() reversed: boolean = false; - @Prop() progressbarcolor : string; - @Prop() bufferbarcolor: string ; + @Prop() progressbarcolor: string; + @Prop() bufferbarcolor: string; @Method() - async progress(value){ - this.mdcProgress.progress= value; + async progress(value) { + this.mdcProgress.progress = value; } @Method() - async buffer(value){ - this.mdcProgress.buffer= value; + async buffer(value) { + this.mdcProgress.buffer = value; } /* determinate @@ -33,70 +32,88 @@ export class MWCProgress{ bufferreversed */ - progressBar:any; - mdcProgress:any; - innerProgressBar:any; - bufferProgressBar:any; + progressBar: any; + mdcProgress: any; + innerProgressBar: any; + bufferProgressBar: any; - componentWillLoad(){ - if(this.progressbarcolor){ - this.progressEl.style.setProperty('--mdc-theme-primary',this.progressbarcolor); - } + componentWillLoad() { + if (this.progressbarcolor) { + this.progressEl.style.setProperty( + '--mdc-theme-primary', + this.progressbarcolor + ); + } } - componentDidLoad(){ - let progressStyle = ''; - let bufferStyle = ''; - if(this.progressbarcolor){ - progressStyle = `background-color: ${this.progressbarcolor};` - } - if(this.bufferbarcolor){ - bufferStyle = `background-color: ${this.bufferbarcolor};` - } + componentDidLoad() { + let progressStyle = ''; + let bufferStyle = ''; + if (this.progressbarcolor) { + progressStyle = `background-color: ${this.progressbarcolor};`; + } + if (this.bufferbarcolor) { + bufferStyle = `background-color: ${this.bufferbarcolor};`; + } - if(progressStyle.length>0){ - this.innerProgressBar.setAttribute('style',progressStyle) - } - if(bufferStyle.length>0){ - this.bufferProgressBar.setAttribute('style',bufferStyle) - } + if (progressStyle.length > 0) { + this.innerProgressBar.setAttribute('style', progressStyle); + } + if (bufferStyle.length > 0) { + this.bufferProgressBar.setAttribute('style', bufferStyle); + } - this.mdcProgress = MDCLinearProgress.attachTo(this.progressBar) - this.mdcProgress.progress= 0; - this.mdcProgress.buffer = 0; + this.mdcProgress = MDCLinearProgress.attachTo(this.progressBar); + this.mdcProgress.progress = 0; + this.mdcProgress.buffer = 0; + } + componentDidUnload() { + this.mdcProgress.destroy(); } - componentDidUnload(){ - this.mdcProgress.destroy() - } - getProgressClassName(){ - let className: string = "mdc-linear-progress"; + getProgressClassName() { + let className: string = 'mdc-linear-progress'; - if(this.type === "indeterminate"){ - className = `${className} mdc-linear-progress--indeterminate`; - } - if(this.reversed){ - className = ` ${className} mdc-linear-progress--reversed`; - } - if(!this.show){ - className = ` ${className} mdc-linear-progress--closed`; - } - return className; + if (this.type === 'indeterminate') { + className = `${className} mdc-linear-progress--indeterminate`; + } + if (this.reversed) { + className = ` ${className} mdc-linear-progress--reversed`; + } + if (!this.show) { + className = ` ${className} mdc-linear-progress--closed`; + } + return className; } render() { return ( -
    { this.progressBar = progressBar; }} - class={this.getProgressClassName()}> -
    -
    { this.bufferProgressBar = bufferProgressBar;}}>
    -
    - { this.innerProgressBar = innerProgressBar;}}> -
    -
    - -
    -
    - ) +
    { + this.progressBar = progressBar; + }} + class={this.getProgressClassName()} + > +
    +
    { + this.bufferProgressBar = bufferProgressBar; + }} + >
    +
    + { + this.innerProgressBar = innerProgressBar; + }} + > +
    +
    + +
    +
    + ); } } diff --git a/packages/wc-ui-components/src/components/radio/mwc-radio.scss b/packages/wc-ui-components/src/components/radio/mwc-radio.scss index 1c7838db..119be0bf 100644 --- a/packages/wc-ui-components/src/components/radio/mwc-radio.scss +++ b/packages/wc-ui-components/src/components/radio/mwc-radio.scss @@ -1 +1 @@ -@import "@material/radio/mdc-radio.scss"; +@import '@material/radio/mdc-radio.scss'; diff --git a/packages/wc-ui-components/src/components/radio/mwc-radio.tsx b/packages/wc-ui-components/src/components/radio/mwc-radio.tsx index 6aac62c0..b4939f4d 100644 --- a/packages/wc-ui-components/src/components/radio/mwc-radio.tsx +++ b/packages/wc-ui-components/src/components/radio/mwc-radio.tsx @@ -1,96 +1,104 @@ import { Component, Prop, Element, h } from '@stencil/core'; -import {MDCRadio} from '@material/radio'; +import { MDCRadio } from '@material/radio'; import createTheme from '../styles/create-theme'; import { getTheme } from '../util/mwc-util'; @Component({ tag: 'mwc-radio', styleUrl: 'mwc-radio.scss', - shadow: false + shadow: false, }) -export class MWCRadio{ - - @Element() radioEl : HTMLElement; - @Prop() borderlist : boolean = true; - @Prop() checked : boolean = false; +export class MWCRadio { + @Element() radioEl: HTMLElement; + @Prop() borderlist: boolean = true; + @Prop() checked: boolean = false; @Prop() dense: boolean = false; @Prop() ripple: boolean = true; @Prop() name: string; @Prop() color: 'default' | 'primary' | 'secondary'; //Alex - - radioRipple:any; + radioRipple: any; mdcRadio: any; elStyleNode: any; private theme = createTheme(getTheme()); - - componentWillLoad(){ - if(this.color){ //Alex - this.radioEl.style.setProperty('--mdc-theme-secondary',this.theme.palette[this.color][500]); - // this.radioEl.style.setProperty('color',this.theme.palette[this.color][500]); - } - + componentWillLoad() { + if (this.color) { + //Alex + this.radioEl.style.setProperty( + '--mdc-theme-secondary', + this.theme.palette[this.color][500] + ); + // this.radioEl.style.setProperty('color',this.theme.palette[this.color][500]); + } } - componentDidLoad(){ - if(this.ripple){ - this.radioRipple = MDCRadio.attachTo(this.mdcRadio); + componentDidLoad() { + if (this.ripple) { + this.radioRipple = MDCRadio.attachTo(this.mdcRadio); // this.radioRipple.unbounded = true - } + } } - componentDidUnload(){ - if(this.ripple){ - this.radioRipple.destroy() - } + componentDidUnload() { + if (this.ripple) { + this.radioRipple.destroy(); + } } - getListClassName(){ - let className: string = 'mdc-list'; - if(this.borderlist){ - className = ` ${className} webmd-bordered-list`; - } - if(this.dense){ - className = ` ${className} mdc-list--dense`; - } - return className; + getListClassName() { + let className: string = 'mdc-list'; + if (this.borderlist) { + className = ` ${className} webmd-bordered-list`; + } + if (this.dense) { + className = ` ${className} mdc-list--dense`; + } + return className; } - getStyleNode(){ + getStyleNode() { var styleNode = document.createElement('style'); - styleNode.type = "text/css"; - var styleText = document.createTextNode(`.mdc-radio::before, .mdc-radio::after{ + styleNode.type = 'text/css'; + var styleText = document.createTextNode(`.mdc-radio::before, .mdc-radio::after{ background-color: ${this.color}20 !important; }`); - styleNode.appendChild(styleText); - this.elStyleNode = styleNode; - this.radioEl.appendChild(this.elStyleNode); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.radioEl.appendChild(this.elStyleNode); } - onFocus(){ - if(this.color){ - this.getStyleNode() + onFocus() { + if (this.color) { + this.getStyleNode(); } } - onBlur(){ - if(this.color){ - this.radioEl.removeChild(this.elStyleNode) + onBlur() { + if (this.color) { + this.radioEl.removeChild(this.elStyleNode); } } render() { return ( -
    { this.mdcRadio = mdcRadio; }}> - this.onFocus()} - onBlur = {(evt)=> this.onBlur()}/> +
    { + this.mdcRadio = mdcRadio; + }} + > + this.onFocus()} + onBlur={(evt) => this.onBlur()} + />
    -
    -
    -
    +
    +
    - ) +
    + ); } -} \ No newline at end of file +} diff --git a/packages/wc-ui-components/src/components/select/mwc-select.scss b/packages/wc-ui-components/src/components/select/mwc-select.scss index c1eb20ef..f2018973 100644 --- a/packages/wc-ui-components/src/components/select/mwc-select.scss +++ b/packages/wc-ui-components/src/components/select/mwc-select.scss @@ -1,8 +1,8 @@ -@import "@material/select/mdc-select.scss"; -@import "@material/list/mdc-list.scss"; -@import "@material/menu/mdc-menu.scss"; +@import '@material/select/mdc-select.scss'; +@import '@material/list/mdc-list.scss'; +@import '@material/menu/mdc-menu.scss'; -.webmd-select{ - height: auto; - width: auto !important; +.webmd-select { + height: auto; + width: auto !important; } diff --git a/packages/wc-ui-components/src/components/select/mwc-select.tsx b/packages/wc-ui-components/src/components/select/mwc-select.tsx index 2b5c444f..9b9868d7 100644 --- a/packages/wc-ui-components/src/components/select/mwc-select.tsx +++ b/packages/wc-ui-components/src/components/select/mwc-select.tsx @@ -1,74 +1,74 @@ import { Component, Prop, Element, h } from '@stencil/core'; -import {MDCSelect} from '@material/select'; +import { MDCSelect } from '@material/select'; @Component({ tag: 'mwc-select', styleUrl: 'mwc-select.scss', - shadow: false + shadow: false, }) -export class MWCSelect{ - - @Element() selectEl : HTMLElement; - @Prop() borderlist : boolean = true; - @Prop() checked : boolean = false; +export class MWCSelect { + @Element() selectEl: HTMLElement; + @Prop() borderlist: boolean = true; + @Prop() checked: boolean = false; @Prop() dense: boolean = false; @Prop() ripple: boolean = true; @Prop() radiocolor: string; @Prop() name: string; - mdcSelectComponent:any; + mdcSelectComponent: any; mdcSelect: any; elStyleNode: any; - componentWillLoad(){ - if(this.radiocolor){ - // this.radioEl.style.setProperty('--mdc-theme-secondary',this.radiocolor); - } + componentWillLoad() { + if (this.radiocolor) { + // this.radioEl.style.setProperty('--mdc-theme-secondary',this.radiocolor); + } } - componentDidLoad(){ - this.mdcSelectComponent = MDCSelect.attachTo(this.mdcSelect) - if(this.ripple){ - // this.radioRipple = MDCRadio.attachTo(this.mdcRadio); + componentDidLoad() { + this.mdcSelectComponent = MDCSelect.attachTo(this.mdcSelect); + if (this.ripple) { + // this.radioRipple = MDCRadio.attachTo(this.mdcRadio); // this.radioRipple.unbounded = true - } + } } - componentDidUnload(){ - this.mdcSelectComponent.destroy() - if(this.ripple){ - } + componentDidUnload() { + this.mdcSelectComponent.destroy(); + if (this.ripple) { + } } - getListClassName(){ - let className: string = 'mdc-list'; - if(this.borderlist){ - className = ` ${className} webmd-bordered-list`; - } - if(this.dense){ - className = ` ${className} mdc-list--dense`; - } - return className; + getListClassName() { + let className: string = 'mdc-list'; + if (this.borderlist) { + className = ` ${className} webmd-bordered-list`; + } + if (this.dense) { + className = ` ${className} mdc-list--dense`; + } + return className; } - getStyleNode(){ + getStyleNode() { var styleNode = document.createElement('style'); - styleNode.type = "text/css"; - var styleText = document.createTextNode(`.mdc-radio::before, .mdc-radio::after{ + styleNode.type = 'text/css'; + var styleText = document.createTextNode(`.mdc-radio::before, .mdc-radio::after{ background-color: ${this.radiocolor}20 !important; }`); - styleNode.appendChild(styleText); - this.elStyleNode = styleNode; + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; // this.radioEl.appendChild(this.elStyleNode); } - onFocus(){ - if(this.radiocolor){ - this.getStyleNode() + onFocus() { + if (this.radiocolor) { + this.getStyleNode(); } } - onBlur(){ - if(this.radiocolor){ - // this.radioEl.removeChild(this.elStyleNode) - {/*
    { this.mdcRadio = mdcRadio; }}> + onBlur() { + if (this.radiocolor) { + // this.radioEl.removeChild(this.elStyleNode) + { + /*
    { this.mdcRadio = mdcRadio; }}>
    -
    */} +
    */ + } } } render() { return ( -
    { this.mdcSelect = mdcSelect; }}> -
    -
    Pick a Food Group
    -
    -
    -
    -
    -
      - - {/*
    • +
      { + this.mdcSelect = mdcSelect; + }} + > +
      +
      Pick a Food Group
      +
      +
      +
      +
      +
        + + {/*
      • Bread, Cereal, Rice, and Pasta
      • @@ -111,10 +118,9 @@ export class MWCSelect{
      • Fats, Oils, and Sweets
      • */} -
      -
      +
    - - ) +
    + ); } -} \ No newline at end of file +} diff --git a/packages/wc-ui-components/src/components/slider/mwc-slider.scss b/packages/wc-ui-components/src/components/slider/mwc-slider.scss index 6e66b572..b55c11cd 100644 --- a/packages/wc-ui-components/src/components/slider/mwc-slider.scss +++ b/packages/wc-ui-components/src/components/slider/mwc-slider.scss @@ -1 +1 @@ -@import "@material/slider/mdc-slider.scss"; \ No newline at end of file +@import '@material/slider/mdc-slider.scss'; diff --git a/packages/wc-ui-components/src/components/slider/mwc-slider.tsx b/packages/wc-ui-components/src/components/slider/mwc-slider.tsx index 19c5d75a..66066555 100644 --- a/packages/wc-ui-components/src/components/slider/mwc-slider.tsx +++ b/packages/wc-ui-components/src/components/slider/mwc-slider.tsx @@ -1,102 +1,118 @@ -import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; -import {MDCSlider} from '@material/slider'; +import { + Component, + Prop, + Element, + Method, + Event, + EventEmitter, + h, +} from '@stencil/core'; +import { MDCSlider } from '@material/slider'; @Component({ tag: 'mwc-slider', styleUrl: 'mwc-slider.scss', - shadow: false + shadow: false, }) -export class MWCSlider{ - - @Element() sliderEl : HTMLElement; - @Prop() value : number = 50; - @Prop() min : number = 0; - @Prop() max : number = 100; - @Prop() step : number = 0; - @Prop() disabled : boolean = false; - @Prop() discrete : boolean = false; - @Prop() slidercolor : string = "#000000"; +export class MWCSlider { + @Element() sliderEl: HTMLElement; + @Prop() value: number = 50; + @Prop() min: number = 0; + @Prop() max: number = 100; + @Prop() step: number = 0; + @Prop() disabled: boolean = false; + @Prop() discrete: boolean = false; + @Prop() slidercolor: string = '#000000'; @Method() - async stepup(amount:number = 1){ - this.mdcSlider.stepUp(amount) + async stepup(amount: number = 1) { + this.mdcSlider.stepUp(amount); } @Method() - async stepdown(amount:number = 1){ - this.mdcSlider.stepDown(amount) + async stepdown(amount: number = 1) { + this.mdcSlider.stepDown(amount); } @Event() changeHandler: EventEmitter; @Event() inputchange: EventEmitter; mdcSlider: any; - elStyleNode:any; + elStyleNode: any; - getStyleNode(){ + getStyleNode() { var styleNode = document.createElement('style'); - styleNode.type = "text/css"; - var styleText = document.createTextNode(`.mdc-slider:not(.mdc-slider--disabled) .mdc-slider__track-container{ + styleNode.type = 'text/css'; + var styleText = document.createTextNode(`.mdc-slider:not(.mdc-slider--disabled) .mdc-slider__track-container{ background-color: ${this.slidercolor}20 !important; }`); - styleNode.appendChild(styleText); - this.elStyleNode = styleNode; - this.sliderEl.appendChild(this.elStyleNode); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.sliderEl.appendChild(this.elStyleNode); } - componentWillLoad(){ - if(this.slidercolor){ - this.sliderEl.style.setProperty('--mdc-theme-secondary',this.slidercolor); - } + componentWillLoad() { + if (this.slidercolor) { + this.sliderEl.style.setProperty( + '--mdc-theme-secondary', + this.slidercolor + ); + } } - componentDidLoad(){ - this.mdcSlider = MDCSlider.attachTo(this.mdcSlider) - this.mdcSlider.listen('MDCSlider:change', () => { - this.changeHandler.emit(this.mdcSlider.value); - }); - this.mdcSlider.listen('MDCSlider:input', () => { - this.inputchange.emit(this.mdcSlider.value); - }); - this.getStyleNode() + componentDidLoad() { + this.mdcSlider = MDCSlider.attachTo(this.mdcSlider); + this.mdcSlider.listen('MDCSlider:change', () => { + this.changeHandler.emit(this.mdcSlider.value); + }); + this.mdcSlider.listen('MDCSlider:input', () => { + this.inputchange.emit(this.mdcSlider.value); + }); + this.getStyleNode(); } - componentDidUnload(){ - this.mdcSlider.destroy() - this.sliderEl.removeChild(this.elStyleNode) + componentDidUnload() { + this.mdcSlider.destroy(); + this.sliderEl.removeChild(this.elStyleNode); } // Todo Discrete // mdc-slider--display-markers - getGridListClassName(){ - let className: string = 'mdc-grid-list'; - if(this.discrete){ - className = ` ${className} mdc-grid-list--tile-aspect-${this.discrete}`; - } - return className; + getGridListClassName() { + let className: string = 'mdc-grid-list'; + if (this.discrete) { + className = ` ${className} mdc-grid-list--tile-aspect-${this.discrete}`; + } + return className; } render() { return ( -
    { this.mdcSlider = mdcSlider; }} - aria-valuemin={this.min} - aria-valuemax={this.max} - aria-valuenow={this.value} - data-step= {this.step} - aria-label="Select Value"> +
    { + this.mdcSlider = mdcSlider; + }} + aria-valuemin={this.min} + aria-valuemax={this.max} + aria-valuenow={this.value} + data-step={this.step} + aria-label="Select Value" + >
    -
    +
    -
    +
    -
    - +
    + - -
    -
    + +
    - ) +
    + ); } -} \ No newline at end of file +} diff --git a/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.scss b/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.scss index 3902e8a8..49bdc916 100644 --- a/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.scss +++ b/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.scss @@ -1 +1 @@ -@import "@material/snackbar/mdc-snackbar.scss"; \ No newline at end of file +@import '@material/snackbar/mdc-snackbar.scss'; diff --git a/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.tsx b/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.tsx index 89179083..19691b41 100644 --- a/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.tsx +++ b/packages/wc-ui-components/src/components/snackbar/mwc-snackbar.tsx @@ -1,100 +1,112 @@ -import { Component, Prop, Element, Method, Event, EventEmitter, h } from '@stencil/core'; -import {MDCSnackbar} from '@material/snackbar'; +import { + Component, + Prop, + Element, + Method, + Event, + EventEmitter, + h, +} from '@stencil/core'; +import { MDCSnackbar } from '@material/snackbar'; @Component({ tag: 'mwc-snackbar', styleUrl: 'mwc-snackbar.scss', - shadow: false + shadow: false, }) -export class MWCSnackbar{ - - @Element() snackBarEl : HTMLElement; - @Prop() message : string = ''; - @Prop() timeout : number = 1000; - @Prop() actiontext : string = ''; - @Prop() multiline : boolean = false; - @Prop() actiononbutton : boolean = false; +export class MWCSnackbar { + @Element() snackBarEl: HTMLElement; + @Prop() message: string = ''; + @Prop() timeout: number = 1000; + @Prop() actiontext: string = ''; + @Prop() multiline: boolean = false; + @Prop() actiononbutton: boolean = false; @Prop() dismissesonaction: boolean = true; - @Prop() backgroundcolor: string = "#000000"; - @Prop() actioncolor: string = "#ff0ff0"; - @Prop() messagecolor: string = "#ffffff"; + @Prop() backgroundcolor: string = '#000000'; + @Prop() actioncolor: string = '#ff0ff0'; + @Prop() messagecolor: string = '#ffffff'; @Event() actionhandler: EventEmitter; @Method() - show(){ - const dataObj = { - message: this.message, - actionText: this.actiontext, - multiline: this.multiline, - timeout: this.timeout, - actionOnBottom : this.multiline && this.actiononbutton , - actionHandler: () => { - this.actionhandler.emit() - } - }; - this.mdcSnackComponent.show(dataObj) - + show() { + const dataObj = { + message: this.message, + actionText: this.actiontext, + multiline: this.multiline, + timeout: this.timeout, + actionOnBottom: this.multiline && this.actiononbutton, + actionHandler: () => { + this.actionhandler.emit(); + }, + }; + this.mdcSnackComponent.show(dataObj); } @Event() selected: EventEmitter; - mdcSnackComponent:any; + mdcSnackComponent: any; mdcSnackBar: any; - elStyleNode:any; - + elStyleNode: any; - getStyleNode(){ + getStyleNode() { var styleNode = document.createElement('style'); - styleNode.type = "text/css"; - let bgClass; - if(this.backgroundcolor){ - bgClass = `.webmd-snackbar{ + styleNode.type = 'text/css'; + let bgClass; + if (this.backgroundcolor) { + bgClass = `.webmd-snackbar{ background-color: ${this.backgroundcolor} !important; - }` - } - if(this.messagecolor){ - bgClass = `${bgClass} .mdc-snackbar__text{ + }`; + } + if (this.messagecolor) { + bgClass = `${bgClass} .mdc-snackbar__text{ color: ${this.messagecolor} !important - }` - } - var styleText = document.createTextNode(bgClass); - styleNode.appendChild(styleText); - this.elStyleNode = styleNode; - this.snackBarEl.appendChild(this.elStyleNode); + }`; + } + var styleText = document.createTextNode(bgClass); + styleNode.appendChild(styleText); + this.elStyleNode = styleNode; + this.snackBarEl.appendChild(this.elStyleNode); } - componentWillLoad(){ - if(this.actioncolor){ - this.snackBarEl.style.setProperty('--mdc-theme-secondary',this.actioncolor); - } + componentWillLoad() { + if (this.actioncolor) { + this.snackBarEl.style.setProperty( + '--mdc-theme-secondary', + this.actioncolor + ); + } } - componentDidLoad(){ - this.mdcSnackComponent = MDCSnackbar.attachTo(this.mdcSnackBar) - this.mdcSnackComponent.dismissesOnAction = this.dismissesonaction; - if(this.backgroundcolor || this.messagecolor){ - this.getStyleNode() - } + componentDidLoad() { + this.mdcSnackComponent = MDCSnackbar.attachTo(this.mdcSnackBar); + this.mdcSnackComponent.dismissesOnAction = this.dismissesonaction; + if (this.backgroundcolor || this.messagecolor) { + this.getStyleNode(); + } } - componentDidUnload(){ - if(this.backgroundcolor || this.messagecolor){ - this.snackBarEl.removeChild(this.elStyleNode); - } + componentDidUnload() { + if (this.backgroundcolor || this.messagecolor) { + this.snackBarEl.removeChild(this.elStyleNode); + } } render() { return ( -