diff --git a/.travis.yml b/.travis.yml index d72f00fcf..a80a62b15 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: node_js sudo: false node_js: - - "11.15" + - "12.12" branches: only: diff --git a/CHANGELOG.md b/CHANGELOG.md index d8a32be22..2c343feab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,3 +55,4 @@ All notable, unreleased changes to this project will be documented in this file. - Fix minor bugs - #230 by @dominik-zeglen - Fix permission handling - #231 by @dominik-zeglen - Use React.FC instead of deprecated React.StatelessComponent type - #245 by @dominik-zeglen +- Update @material-ui to v4 - #234 by @dominik-zeglen diff --git a/babel.config.js b/babel.config.js index 0db43fbd4..f946bf1e6 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,4 +1,5 @@ module.exports = api => { + const isExtract = api.env("extract"); const isTest = api.env("test"); const isStorybook = api.env("storybook"); @@ -30,16 +31,20 @@ module.exports = api => { } ], "@babel/plugin-proposal-object-rest-spread", - "react-intl-auto", - [ + "react-intl-auto" + ]; + + if (isExtract) { + plugins.push([ "react-intl", { extractFromFormatMessageCall: true, messagesDir: "build/locale/" } - ], - "macros" - ]; + ]); + } + + plugins.push("macros"); return { presets, diff --git a/locale/messages.pot b/locale/messages.pot index 4be68f6f9..d1446a81e 100644 --- a/locale/messages.pot +++ b/locale/messages.pot @@ -1,6 +1,6 @@ msgid "" msgstr "" -"POT-Creation-Date: 2019-11-06T13:15:56.589Z\n" +"POT-Creation-Date: 2019-11-07T13:41:50.654Z\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "MIME-Version: 1.0\n" @@ -28,7 +28,7 @@ msgid "*Optional. Adding product to collection helps users find it." msgstr "" #: build/locale/src/attributes/views/AttributeCreate/AttributeCreate.json -#. [src.attributes.views.AttributeCreate.2348058468] - attribute value edit error +#. [src.attributes.views.AttributeCreate.354316953] - attribute value edit error #. defaultMessage is: #. A value named {name} already exists msgctxt "attribute value edit error" @@ -623,6 +623,14 @@ msgctxt "product attribute error" msgid "All attributes should have value" msgstr "" +#: build/locale/src/webhooks/components/WebhookEvents/WebhookEvents.json +#. [src.webhooks.components.WebhookEvents.2454751033] - event +#. defaultMessage is: +#. All events +msgctxt "event" +msgid "All events" +msgstr "" + #: build/locale/src/taxes/components/TaxConfiguration/TaxConfiguration.json #. [src.taxes.components.TaxConfiguration.142803418] #. defaultMessage is: @@ -663,14 +671,6 @@ msgctxt "description" msgid "Anonymous user" msgstr "" -#: build/locale/src/webhooks/components/WebhookEvents/WebhookEvents.json -#. [src.webhooks.components.WebhookEvents.3053363669] - event -#. defaultMessage is: -#. Any events -msgctxt "event" -msgid "Any events" -msgstr "" - #: build/locale/src/discounts/components/VoucherSummary/VoucherSummary.json #. [src.discounts.components.VoucherSummary.2735425668] - voucher #. defaultMessage is: @@ -728,7 +728,7 @@ msgid "Are you sure you want to cancel this fulfillment?" msgstr "" #: build/locale/src/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.json -#. [src.orders.components.OrderBulkCancelDialog.276130122] +#. [src.orders.components.OrderBulkCancelDialog.3011571869] #. defaultMessage is: #. Are you sure you want to cancel {counter,plural,one{this order} other{{displayQuantity} orders}}? msgctxt "description" @@ -736,7 +736,7 @@ msgid "Are you sure you want to cancel {counter,plural,one{this order} other{{di msgstr "" #: build/locale/src/attributes/components/AttributeValueDeleteDialog/AttributeValueDeleteDialog.json -#. [src.attributes.components.AttributeValueDeleteDialog.273524270] - delete attribute value +#. [src.attributes.components.AttributeValueDeleteDialog.1326420604] - delete attribute value #. defaultMessage is: #. Are you sure you want to delete "{name}" value? msgctxt "delete attribute value" @@ -744,7 +744,7 @@ msgid "Are you sure you want to delete \"{name}\" value?" msgstr "" #: build/locale/src/attributes/components/AttributeValueDeleteDialog/AttributeValueDeleteDialog.json -#. [src.attributes.components.AttributeValueDeleteDialog.1934550550] +#. [src.attributes.components.AttributeValueDeleteDialog.4031078167] #. defaultMessage is: #. Are you sure you want to delete "{name}" value? If you delete it you won’t be able to assign it to any of the products with "{attributeName}" attribute. msgctxt "description" @@ -760,11 +760,11 @@ msgid "Are you sure you want to delete collection's image?" msgstr "" #: build/locale/src/orders/components/OrderDraftCancelDialog/OrderDraftCancelDialog.json -#. [src.orders.components.OrderDraftCancelDialog.36681973] +#. [src.orders.components.OrderDraftCancelDialog.66064347] #. defaultMessage is: -#. Are you sure you want to delete draft #{number}? +#. Are you sure you want to delete draft #{orderNumber}? msgctxt "description" -msgid "Are you sure you want to delete draft #{number}?" +msgid "Are you sure you want to delete draft #{orderNumber}?" msgstr "" #: build/locale/src/navigation/views/MenuDetails/index.json @@ -832,7 +832,7 @@ msgid "Are you sure you want to delete {collectionName}?" msgstr "" #: build/locale/src/attributes/components/AttributeBulkDeleteDialog/AttributeBulkDeleteDialog.json -#. [src.attributes.components.AttributeBulkDeleteDialog.2916860383] - dialog content +#. [src.attributes.components.AttributeBulkDeleteDialog.1860138828] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this attribute} other{{displayQuantity} attributes}}? msgctxt "dialog content" @@ -840,7 +840,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this attribute} other msgstr "" #: build/locale/src/categories/views/CategoryDetails.json -#. [src.categories.views.299584400] +#. [src.categories.views.982216972] #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this attribute} other{{displayQuantity} categories}}? msgctxt "description" @@ -848,7 +848,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this attribute} other msgstr "" #: build/locale/src/categories/views/CategoryDetails.json -#. [src.categories.views.3231188861] +#. [src.categories.views.3920301974] #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this attribute} other{{displayQuantity} products}}? msgctxt "description" @@ -856,7 +856,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this attribute} other msgstr "" #: build/locale/src/categories/views/CategoryList/CategoryList.json -#. [src.categories.views.CategoryList.2144707585] +#. [src.categories.views.CategoryList.1592907702] #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this category} other{{displayQuantity} categories}}? msgctxt "description" @@ -864,7 +864,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this category} other{ msgstr "" #: build/locale/src/collections/views/CollectionList/CollectionList.json -#. [src.collections.views.CollectionList.2497542455] +#. [src.collections.views.CollectionList.1421224348] #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this collection} other{{displayQuantity} collections}}? msgctxt "description" @@ -872,7 +872,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this collection} othe msgstr "" #: build/locale/src/customers/views/CustomerList/CustomerList.json -#. [src.customers.views.CustomerList.409347866] +#. [src.customers.views.CustomerList.3616300497] #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this customer} other{{displayQuantity} customers}}? msgctxt "description" @@ -888,7 +888,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this menu} other{{dis msgstr "" #: build/locale/src/orders/views/OrderDraftList/OrderDraftList.json -#. [src.orders.views.OrderDraftList.1389231130] - dialog content +#. [src.orders.views.OrderDraftList.1398914741] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this order draft} other{{displayQuantity} orderDrafts}}? msgctxt "dialog content" @@ -896,7 +896,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this order draft} oth msgstr "" #: build/locale/src/pages/views/PageList.json -#. [src.pages.views.3382708469] - dialog content +#. [src.pages.views.808633099] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this page} other{{displayQuantity} pages}}? msgctxt "dialog content" @@ -904,7 +904,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this page} other{{dis msgstr "" #: build/locale/src/productTypes/views/ProductTypeList/ProductTypeList.json -#. [src.productTypes.views.ProductTypeList.2294091098] - dialog content +#. [src.productTypes.views.ProductTypeList.2787668922] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this product type} other{{displayQuantity} product types}}? msgctxt "dialog content" @@ -912,7 +912,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this product type} ot msgstr "" #: build/locale/src/products/views/ProductList/ProductList.json -#. [src.products.views.ProductList.2742463171] - dialog content +#. [src.products.views.ProductList.785143617] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this product} other{{displayQuantity} products}}? msgctxt "dialog content" @@ -920,7 +920,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this product} other{{ msgstr "" #: build/locale/src/discounts/views/SaleList/SaleList.json -#. [src.discounts.views.SaleList.2516361175] - dialog content +#. [src.discounts.views.SaleList.315033130] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this sale} other{{displayQuantity} sales}}? msgctxt "dialog content" @@ -928,7 +928,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this sale} other{{dis msgstr "" #: build/locale/src/shipping/views/ShippingZonesList.json -#. [src.shipping.views.3698270769] - dialog content +#. [src.shipping.views.226833304] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this shipping zone} other{{displayQuantity} shipping zones}}? msgctxt "dialog content" @@ -936,7 +936,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this shipping zone} o msgstr "" #: build/locale/src/products/views/ProductUpdate/ProductUpdate.json -#. [src.products.views.ProductUpdate.2446451819] - dialog content +#. [src.products.views.ProductUpdate.408018316] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this variant} other{{displayQuantity} variants}}? msgctxt "dialog content" @@ -944,7 +944,7 @@ msgid "Are you sure you want to delete {counter,plural,one{this variant} other{{ msgstr "" #: build/locale/src/discounts/views/VoucherList/VoucherList.json -#. [src.discounts.views.VoucherList.1791926983] - dialog content +#. [src.discounts.views.VoucherList.3263927472] - dialog content #. defaultMessage is: #. Are you sure you want to delete {counter,plural,one{this voucher} other{{displayQuantity} vouchers}}? msgctxt "dialog content" @@ -1080,11 +1080,11 @@ msgid "Are you sure you want to delete {voucherCode}?" msgstr "" #: build/locale/src/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.json -#. [src.orders.components.OrderDraftFinalizeDialog.1489195029] +#. [src.orders.components.OrderDraftFinalizeDialog.3358029330] #. defaultMessage is: -#. Are you sure you want to finalize draft #{number}? +#. Are you sure you want to finalize draft #{orderNumber}? msgctxt "description" -msgid "Are you sure you want to finalize draft #{number}?" +msgid "Are you sure you want to finalize draft #{orderNumber}?" msgstr "" #: build/locale/src/orders/components/OrderMarkAsPaidDialog/OrderMarkAsPaidDialog.json @@ -1096,7 +1096,7 @@ msgid "Are you sure you want to mark this order as paid?" msgstr "" #: build/locale/src/collections/views/CollectionList/CollectionList.json -#. [src.collections.views.CollectionList.1348793822] +#. [src.collections.views.CollectionList.3216529047] #. defaultMessage is: #. Are you sure you want to publish {counter,plural,one{this collection} other{{displayQuantity} collections}}? msgctxt "description" @@ -1104,7 +1104,7 @@ msgid "Are you sure you want to publish {counter,plural,one{this collection} oth msgstr "" #: build/locale/src/pages/views/PageList.json -#. [src.pages.views.504298570] - dialog content +#. [src.pages.views.64432778] - dialog content #. defaultMessage is: #. Are you sure you want to publish {counter,plural,one{this page} other{{displayQuantity} pages}}? msgctxt "dialog content" @@ -1112,7 +1112,7 @@ msgid "Are you sure you want to publish {counter,plural,one{this page} other{{di msgstr "" #: build/locale/src/products/views/ProductList/ProductList.json -#. [src.products.views.ProductList.740606822] - dialog content +#. [src.products.views.ProductList.4099592898] - dialog content #. defaultMessage is: #. Are you sure you want to publish {counter,plural,one{this product} other{{displayQuantity} products}}? msgctxt "dialog content" @@ -1136,19 +1136,19 @@ msgid "Are you sure you want to unassign {attributeName} from {productTypeName}? msgstr "" #: build/locale/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/ProductTypeBulkAttributeUnassignDialog.json -#. [src.productTypes.components.ProductTypeBulkAttributeUnassignDialog.2500510112] - unassign multiple attributes from product type +#. [src.productTypes.components.ProductTypeBulkAttributeUnassignDialog.1465383223] - unassign multiple attributes from product type #. defaultMessage is: -#. Are you sure you want to unassign {counter,plural,one{this attribute} other{{displayQuantity} attributes}} from {productTypeName}? +#. Are you sure you want to unassign {counter,plural,one{this attribute} other{{attributeQuantity} attributes}} from {productTypeName}? msgctxt "unassign multiple attributes from product type" -msgid "Are you sure you want to unassign {counter,plural,one{this attribute} other{{displayQuantity} attributes}} from {productTypeName}?" +msgid "Are you sure you want to unassign {counter,plural,one{this attribute} other{{attributeQuantity} attributes}} from {productTypeName}?" msgstr "" #: build/locale/src/discounts/views/SaleDetails.json -#. [src.discounts.views.376977560] - dialog content +#. [src.discounts.views.1169376180] - dialog content #. defaultMessage is: #. Are you sure you want to unassign {counter,plural,one{this category} other{{displayQuantity} categories}}? #: build/locale/src/discounts/views/VoucherDetails.json -#. [src.discounts.views.376977560] - dialog content +#. [src.discounts.views.1169376180] - dialog content #. defaultMessage is: #. Are you sure you want to unassign {counter,plural,one{this category} other{{displayQuantity} categories}}? msgctxt "dialog content" @@ -1156,11 +1156,11 @@ msgid "Are you sure you want to unassign {counter,plural,one{this category} othe msgstr "" #: build/locale/src/discounts/views/SaleDetails.json -#. [src.discounts.views.396618268] - dialog content +#. [src.discounts.views.3809911073] - dialog content #. defaultMessage is: #. Are you sure you want to unassign {counter,plural,one{this collection} other{{displayQuantity} collections}}? #: build/locale/src/discounts/views/VoucherDetails.json -#. [src.discounts.views.396618268] - dialog content +#. [src.discounts.views.3809911073] - dialog content #. defaultMessage is: #. Are you sure you want to unassign {counter,plural,one{this collection} other{{displayQuantity} collections}}? msgctxt "dialog content" @@ -1168,7 +1168,7 @@ msgid "Are you sure you want to unassign {counter,plural,one{this collection} ot msgstr "" #: build/locale/src/collections/views/CollectionDetails.json -#. [src.collections.views.1908998638] +#. [src.collections.views.735691989] #. defaultMessage is: #. Are you sure you want to unassign {counter,plural,one{this product} other{{displayQuantity} products}}? msgctxt "description" @@ -1176,11 +1176,11 @@ msgid "Are you sure you want to unassign {counter,plural,one{this product} other msgstr "" #: build/locale/src/discounts/views/SaleDetails.json -#. [src.discounts.views.786949385] - dialog content +#. [src.discounts.views.735691989] - dialog content #. defaultMessage is: #. Are you sure you want to unassign {counter,plural,one{this product} other{{displayQuantity} products}}? #: build/locale/src/discounts/views/VoucherDetails.json -#. [src.discounts.views.786949385] - dialog content +#. [src.discounts.views.735691989] - dialog content #. defaultMessage is: #. Are you sure you want to unassign {counter,plural,one{this product} other{{displayQuantity} products}}? msgctxt "dialog content" @@ -1188,7 +1188,7 @@ msgid "Are you sure you want to unassign {counter,plural,one{this product} other msgstr "" #: build/locale/src/collections/views/CollectionList/CollectionList.json -#. [src.collections.views.CollectionList.3944356444] +#. [src.collections.views.CollectionList.3449136787] #. defaultMessage is: #. Are you sure you want to unpublish {counter,plural,one{this collection} other{{displayQuantity} collections}}? msgctxt "description" @@ -1196,7 +1196,7 @@ msgid "Are you sure you want to unpublish {counter,plural,one{this collection} o msgstr "" #: build/locale/src/pages/views/PageList.json -#. [src.pages.views.691980200] - dialog content +#. [src.pages.views.1265636351] - dialog content #. defaultMessage is: #. Are you sure you want to unpublish {counter,plural,one{this page} other{{displayQuantity} pages}}? msgctxt "dialog content" @@ -1204,7 +1204,7 @@ msgid "Are you sure you want to unpublish {counter,plural,one{this page} other{{ msgstr "" #: build/locale/src/products/views/ProductList/ProductList.json -#. [src.products.views.ProductList.193914731] - dialog content +#. [src.products.views.ProductList.1752069132] - dialog content #. defaultMessage is: #. Are you sure you want to unpublish {counter,plural,one{this product} other{{displayQuantity} products}}? msgctxt "dialog content" @@ -1484,7 +1484,7 @@ msgid "Authentication Type" msgstr "" #: build/locale/src/siteSettings/components/SiteSettingsPage/SiteSettingsPage.json -#. [src.siteSettings.components.SiteSettingsPage.3619898341] +#. [src.siteSettings.components.SiteSettingsPage.1214877701] #. defaultMessage is: #. Authentication method defines additional ways that customers can log in to your ecommerce. msgctxt "description" @@ -5507,6 +5507,14 @@ msgctxt "description" msgid "Order draft succesfully created" msgstr "" +#: build/locale/src/webhooks/components/WebhookEvents/WebhookEvents.json +#. [src.webhooks.components.WebhookEvents.3907151399] - event +#. defaultMessage is: +#. Order fulfilled +msgctxt "event" +msgid "Order fulfilled" +msgstr "" + #: build/locale/src/webhooks/components/WebhookEvents/WebhookEvents.json #. [src.webhooks.components.WebhookEvents.3345061702] - event #. defaultMessage is: @@ -8436,11 +8444,11 @@ msgid "Translation" msgstr "" #: build/locale/src/translations/components/TranslationsCategoriesPage/TranslationsCategoriesPage.json -#. [src.translations.components.TranslationsCategoriesPage.2043581404] +#. [src.translations.components.TranslationsCategoriesPage.1611537010] #. defaultMessage is: -#. Translation Category "{categoryNane}" - {languageCode} +#. Translation Category "{categoryName}" - {languageCode} msgctxt "description" -msgid "Translation Category \"{categoryNane}\" - {languageCode}" +msgid "Translation Category \"{categoryName}\" - {languageCode}" msgstr "" #: build/locale/src/translations/components/TranslationsCollectionsPage/TranslationsCollectionsPage.json @@ -9598,33 +9606,45 @@ msgstr "" #: build/locale/src/home/components/HomeProductListCard/HomeProductListCard.json #. [homeProductListCardOrders] - number of ordered products #. defaultMessage is: -#. {amount,plural,one{One ordered} other{{amount} Ordered}} +#. {amount, plural, +#. one {One ordered} +#. other {{amount} Ordered} +#. } msgctxt "number of ordered products" -msgid "{amount,plural,one{One ordered} other{{amount} Ordered}}" +msgid "{amount, plural,\n one {One ordered}\n other {{amount} Ordered}\n }" msgstr "" #: build/locale/src/home/components/HomeNotificationTable/HomeNotificationTable.json #. [homeNotificationTableOrders] #. defaultMessage is: -#. {amount,plural,one{One order} other{{amount} Orders}} are ready to fulfill +#. {amount, plural, +#. one {One order} +#. other {{amount} Orders} +#. } are ready to fulfill msgctxt "description" -msgid "{amount,plural,one{One order} other{{amount} Orders}} are ready to fulfill" +msgid "{amount, plural,\n one {One order}\n other {{amount} Orders}\n } are ready to fulfill" msgstr "" #: build/locale/src/home/components/HomeNotificationTable/HomeNotificationTable.json #. [homeNotificationTablePayments] #. defaultMessage is: -#. {amount,plural,one{One payment} other{{amount} Payments}} to capture +#. {amount, plural, +#. one {One payment} +#. other {{amount} Payments} +#. } to capture msgctxt "description" -msgid "{amount,plural,one{One payment} other{{amount} Payments}} to capture" +msgid "{amount, plural,\n one {One payment}\n other {{amount} Payments}\n } to capture" msgstr "" #: build/locale/src/home/components/HomeNotificationTable/HomeNotificationTable.json #. [homeNotificationTableProducts] #. defaultMessage is: -#. {amount,plural,one{One product} other{{amount} Products}} out of stock +#. {amount, plural, +#. one {One product} +#. other {{amount} Products} +#. } out of stock msgctxt "description" -msgid "{amount,plural,one{One product} other{{amount} Products}} out of stock" +msgid "{amount, plural,\n one {One product}\n other {{amount} Products}\n } out of stock" msgstr "" #: build/locale/src/translations/components/TranslationsEntitiesList/TranslationsEntitiesList.json diff --git a/package-lock.json b/package-lock.json index c4bc3f09f..37d527f1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,57 +4,68 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@apollo/federation": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@apollo/federation/-/federation-0.10.2.tgz", + "integrity": "sha512-N+JoD7YraGAgDJq1GTkAzRRPUA+FgclFgAUcUDng9ICA4N147nuGUrbrpQdgLnE59nCLJAhcFvOgQRs177XMWw==", + "requires": { + "apollo-env": "^0.5.1", + "apollo-graphql": "^0.3.4", + "apollo-server-env": "^2.4.3", + "lodash.xorby": "^4.7.0" + } + }, "@apollo/react-common": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/react-common/-/react-common-3.0.0.tgz", - "integrity": "sha512-EqHASkcmxipy2hU8rja+lD1S1HoTdodKKyJZZ3dgewnAHXnzXnnC3rw1+lkrgXPFsI2n2d2N2LYisD79OCdPmw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@apollo/react-common/-/react-common-3.1.3.tgz", + "integrity": "sha512-Q7ZjDOeqjJf/AOGxUMdGxKF+JVClRXrYBGVq+SuVFqANRpd68MxtVV2OjCWavsFAN0eqYnRqRUrl7vtUCiJqeg==", "requires": { "ts-invariant": "^0.4.4", "tslib": "^1.10.0" } }, "@apollo/react-components": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/react-components/-/react-components-3.0.0.tgz", - "integrity": "sha512-IF5HZWT4Vc+6JXenFApjc+QsfZccd7UVSV1Z8l4Y5+EoXkLbmM3fuu8lUQamZqzdVVh6coA8bdI0gafB7PU+1A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@apollo/react-components/-/react-components-3.1.3.tgz", + "integrity": "sha512-H0l2JKDQMz+LkM93QK7j3ThbNXkWQCduN3s3eKxFN3Rdg7rXsrikJWvx2wQ868jmqy0VhwJbS1vYdRLdh114uQ==", "requires": { - "@apollo/react-common": "^3.0.0", - "@apollo/react-hooks": "^3.0.0", + "@apollo/react-common": "^3.1.3", + "@apollo/react-hooks": "^3.1.3", "prop-types": "^15.7.2", "ts-invariant": "^0.4.4", "tslib": "^1.10.0" } }, "@apollo/react-hoc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/react-hoc/-/react-hoc-3.0.0.tgz", - "integrity": "sha512-hZaxumdxHrHtTxzHwY1e7FA43x43dLNhZYLcib8ACbV1W3uH7betPdpzlMcL7aVEL7U+7YwQtbc++e1GxxvTQw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@apollo/react-hoc/-/react-hoc-3.1.3.tgz", + "integrity": "sha512-oCPma0uBVPTcYTR5sOvtMbpaWll4xDBvYfKr6YkDorUcQVeNzFu1LK1kmQjJP64bKsaziKYji5ibFaeCnVptmA==", "requires": { - "@apollo/react-common": "^3.0.0", - "@apollo/react-components": "^3.0.0", + "@apollo/react-common": "^3.1.3", + "@apollo/react-components": "^3.1.3", "hoist-non-react-statics": "^3.3.0", "ts-invariant": "^0.4.4", "tslib": "^1.10.0" } }, "@apollo/react-hooks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-3.0.0.tgz", - "integrity": "sha512-7kaV6rkx2WZjDYcBmp52oyhTxbNn5Jc4AUmsXZVEnDu9uuvNYURA8bLlJNF8yu4zS7ed8D+ZebC0y0bhrz8wIg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-3.1.3.tgz", + "integrity": "sha512-reIRO9xKdfi+B4gT/o/hnXuopUnm7WED/ru8VQydPw+C/KG/05Ssg1ZdxFKHa3oxwiTUIDnevtccIH35POanbA==", "requires": { - "@apollo/react-common": "^3.0.0", + "@apollo/react-common": "^3.1.3", "@wry/equality": "^0.1.9", "ts-invariant": "^0.4.4", "tslib": "^1.10.0" } }, "@apollo/react-ssr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/react-ssr/-/react-ssr-3.0.0.tgz", - "integrity": "sha512-lgEnvP4lwgqOv4rZA2dDyIcOLdCYkRms54aGxvErHxh7GGfsJFLnx6pRoa+uUvFjr8/edOVQtaHADnaMbtAMbA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@apollo/react-ssr/-/react-ssr-3.1.3.tgz", + "integrity": "sha512-fUTmEYHxSTX1GA43B8vICxXXplpcEBnDwn0IgdAc3eG0p2YK97ZrJDRFCJ5vD7fyDZsrYhMf+rAI3sd+H2SS+A==", "requires": { - "@apollo/react-common": "^3.0.0", - "@apollo/react-hooks": "^3.0.0", + "@apollo/react-common": "^3.1.3", + "@apollo/react-hooks": "^3.1.3", "tslib": "^1.10.0" } }, @@ -98,19 +109,18 @@ } }, "@babel/cli": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.5.5.tgz", - "integrity": "sha512-UHI+7pHv/tk9g6WXQKYz+kmXTI77YtuY3vqC59KIqcoWEjsJJSG6rAxKaLsgj3LDyadsPrCB929gVOKM6Hui0w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.7.0.tgz", + "integrity": "sha512-jECEqAq6Ngf3pOhLSg7od9WKyrIacyh1oNNYtRXNn+ummSHCTXBamGywOAtiae34Vk7zKuQNnLvo2BKTMCoV4A==", "dev": true, "requires": { - "chokidar": "^2.0.4", + "chokidar": "^2.1.8", "commander": "^2.8.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", "lodash": "^4.17.13", - "mkdirp": "^0.5.1", - "output-file-sync": "^2.0.0", + "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" } @@ -125,182 +135,385 @@ } }, "@babel/core": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", - "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz", + "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helpers": "^7.5.5", - "@babel/parser": "^7.5.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5", - "convert-source-map": "^1.1.0", + "@babel/generator": "^7.7.2", + "@babel/helpers": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.7.2", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", "json5": "^2.1.0", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/generator": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", - "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", + "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", "requires": { - "@babel/types": "^7.5.5", + "@babel/types": "^7.6.3", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz", + "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz", + "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-builder-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", - "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.0.tgz", + "integrity": "sha512-LSln3cexwInTMYYoFeVLKnYPPMfWNJ8PubTBs3hkh7wCu9iBaqq1OOyW+xGmEdLxT1nhsl+9SJ+h2oUDYz0l2A==", "dev": true, "requires": { - "@babel/types": "^7.3.0", + "@babel/types": "^7.7.0", "esutils": "^2.0.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz", + "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/helper-hoist-variables": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.5.tgz", - "integrity": "sha512-ZsxkyYiRA7Bg+ZTRpPvB6AbOFKTFFK4LrvTet8lInm0V468MWCaSYJE+I7v2z2r8KNLtYiV+K5kTCnR7dvyZjg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz", + "integrity": "sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4" + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz", + "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==", + "dev": true, + "requires": { + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" } }, "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz", + "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", + "@babel/helper-function-name": "^7.7.0", + "@babel/types": "^7.7.0", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz", + "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz", + "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz", + "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==", "dev": true, "requires": { - "@babel/types": "^7.5.5" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz", + "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-transforms": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz", + "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", + "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-simple-access": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz", + "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-plugin-utils": { @@ -319,70 +532,148 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz", + "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-wrap-function": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-replace-supers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", - "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz", + "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz", + "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz", + "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helpers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", - "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz", + "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==", "dev": true, "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/highlight": { @@ -397,46 +688,46 @@ } }, "@babel/parser": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", - "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==" + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.2.tgz", + "integrity": "sha512-DDaR5e0g4ZTb9aP7cpSZLkACEBdoLGwJDWgHtBhrGX7Q1RjhdoMOfexICj5cqTAtpowjGQWfcvfnQG7G2kAB5w==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.0.tgz", + "integrity": "sha512-ot/EZVvf3mXtZq0Pd0+tSOfGWMizqmOohXmNZg6LNFjHOV+wOPv7BvVYh8oPR8LhpIP3ye8nNooKL50YRWxpYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/helper-remap-async-to-generator": "^7.7.0", "@babel/plugin-syntax-async-generators": "^7.2.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz", - "integrity": "sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz", + "integrity": "sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.5.5", + "@babel/helper-create-class-features-plugin": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-proposal-decorators": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz", - "integrity": "sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.0.tgz", + "integrity": "sha512-dMCDKmbYFQQTn1+VJjl5hbqlweuHl5oDeMU9B1Q7oAWi0mHxjQQDHdJIK6iW76NE1KJT3zA6dDU3weR1WT5D4A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.4.4", + "@babel/helper-create-class-features-plugin": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-decorators": "^7.2.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.0.tgz", + "integrity": "sha512-7poL3Xi+QFPC7sGAzEIbXUyYzGJwbc2+gSD0AkiC5k52kH2cqHdqxm5hNFfLW3cRSTcx9bN0Fl7/6zWcLLnKAQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -464,9 +755,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", - "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -484,14 +775,13 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.0.tgz", + "integrity": "sha512-mk34H+hp7kRBWJOOAR0ZMGCydgKMD4iN9TpDRp3IIcbunltxEY89XSimc6WbtSLCDrwcdy/EEw7h5CFCzxTchw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-async-generators": { @@ -522,9 +812,9 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", - "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.0.tgz", + "integrity": "sha512-vQMV07p+L+jZeUnvX3pEJ9EiXGCjB5CTTvsirFD9rpEuATnoAvLBLoYbw1v5tyn3d2XxSuvEKi8cV3KqYUa0vQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -575,6 +865,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.0.tgz", + "integrity": "sha512-hi8FUNiFIY1fnUI2n1ViB1DR0R4QeK4iHcTlW6aJkrPoTdb8Rf1EMQ6GT3f67DDkYyWgew9DFoOZ6gOoEsdzTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-syntax-typescript": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", @@ -594,14 +893,14 @@ } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz", + "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-module-imports": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-remap-async-to-generator": "^7.7.0" } }, "@babel/plugin-transform-block-scoped-functions": { @@ -614,9 +913,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz", - "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -624,18 +923,18 @@ } }, "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz", + "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-define-map": "^7.7.0", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", "globals": "^11.1.0" } }, @@ -649,23 +948,22 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz", - "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.0.tgz", + "integrity": "sha512-3QQlF7hSBnSuM1hQ0pS3pmAbWLax/uGNCbPBND9y+oJ4Y776jsyujG2k0Sn2Aj2a0QwVOiOFL5QVPA7spjvzSA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-duplicate-keys": { @@ -688,9 +986,9 @@ } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz", - "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.6.3.tgz", + "integrity": "sha512-l0ETkyEofkqFJ9LS6HChNIKtVJw2ylKbhYMlJ5C6df+ldxxaLIyXY4yOdDQQspfFpV8/vDiaWoJlvflstlYNxg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -707,12 +1005,12 @@ } }, "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz", + "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", + "@babel/helper-function-name": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" } }, @@ -746,45 +1044,45 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz", - "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz", + "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-module-transforms": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-simple-access": "^7.7.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.0.tgz", + "integrity": "sha512-ZAuFgYjJzDNv77AjXRqzQGlQl4HdUM6j296ee4fwKVZfhDR9LAGxfvXjBkb06gNETPnN0sLqRm9Gxg4wZH6dXg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-hoist-variables": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "babel-plugin-dynamic-import-node": "^2.3.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.0.tgz", + "integrity": "sha512-u7eBA03zmUswQ9LQ7Qw0/ieC1pcAkbp5OQatbWUzY1PaBccvuJXUkYzoN1g7cqp7dbTu6Dp9bXyalBvD04AANA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-module-transforms": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.0.tgz", + "integrity": "sha512-+SicSJoKouPctL+j1pqktRVCgy+xAch1hWWTMy13j0IflnyNjaoskj+DwRQFimHbLqO3sq2oN2CXMvXq3Bgapg==", "dev": true, "requires": { - "regexp-tree": "^0.1.6" + "@babel/helper-create-regexp-features-plugin": "^7.7.0" } }, "@babel/plugin-transform-new-target": { @@ -827,9 +1125,9 @@ } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.5.0.tgz", - "integrity": "sha512-c5Ba8cpybZFp1Izkf2sWGuNjOxoQ32tFgBvvYvwGhi4+9f6vGiSK9Gex4uVuO/Va6YJFu41aAh1MzMjUWkp0IQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.3.tgz", + "integrity": "sha512-1/YogSSU7Tby9rq2VCmhuRg+6pxsHy2rI7w/oo8RKoBt6uBUFG+mk6x13kK+FY1/ggN92HAfg7ADd1v1+NCOKg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", @@ -846,12 +1144,12 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", - "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.0.tgz", + "integrity": "sha512-mXhBtyVB1Ujfy+0L6934jeJcSXj/VCg6whZzEcgiiZHNS0PGC7vUCsZDQCxxztkpIdF+dY1fUMcjAgEOC3ZOMQ==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.3.0", + "@babel/helper-builder-react-jsx": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-jsx": "^7.2.0" } @@ -877,9 +1175,9 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz", + "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==", "dev": true, "requires": { "regenerator-transform": "^0.14.0" @@ -895,9 +1193,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.5.tgz", - "integrity": "sha512-6Xmeidsun5rkwnGfMOp6/z9nSzWpHFNVr2Jx7kwoq4mVatQfQx5S56drBgEHF+XQbKOdIaOiMIINvp/kAwMN+w==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz", + "integrity": "sha512-Da8tMf7uClzwUm/pnJ1S93m/aRXmoYNDD7TkHua8xBDdaAs54uZpTWvEt6NGwmoVMb9mZbntfTqmG2oSzN/7Vg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -916,9 +1214,9 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -954,83 +1252,96 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.5.tgz", - "integrity": "sha512-pehKf4m640myZu5B2ZviLaiBlxMCjSZ1qTEO459AXKX5GnPueyulJeCqZFs1nz/Ya2dDzXQ1NxZ/kKNWyD4h6w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.2.tgz", + "integrity": "sha512-UWhDaJRqdPUtdK1s0sKYdoRuqK0NepjZto2UZltvuCgMoMZmdjhgz5hcRokie/3aYEaSz3xvusyoayVaq4PjRg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.5.5", + "@babel/helper-create-class-features-plugin": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-typescript": "^7.2.0" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz", + "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/preset-env": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz", - "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.1.tgz", + "integrity": "sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-module-imports": "^7.7.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.0", + "@babel/plugin-proposal-dynamic-import": "^7.7.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.0", "@babel/plugin-syntax-async-generators": "^7.2.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-json-strings": "^7.2.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-syntax-top-level-await": "^7.7.0", "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", + "@babel/plugin-transform-async-to-generator": "^7.7.0", "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.5.5", - "@babel/plugin-transform-classes": "^7.5.5", + "@babel/plugin-transform-block-scoping": "^7.6.3", + "@babel/plugin-transform-classes": "^7.7.0", "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.5.0", - "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.7.0", "@babel/plugin-transform-duplicate-keys": "^7.5.0", "@babel/plugin-transform-exponentiation-operator": "^7.2.0", "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.7.0", "@babel/plugin-transform-literals": "^7.2.0", "@babel/plugin-transform-member-expression-literals": "^7.2.0", "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.5.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-modules-commonjs": "^7.7.0", + "@babel/plugin-transform-modules-systemjs": "^7.7.0", + "@babel/plugin-transform-modules-umd": "^7.7.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.0", "@babel/plugin-transform-new-target": "^7.4.4", "@babel/plugin-transform-object-super": "^7.5.5", "@babel/plugin-transform-parameters": "^7.4.4", "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-regenerator": "^7.7.0", "@babel/plugin-transform-reserved-words": "^7.2.0", "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-spread": "^7.6.2", "@babel/plugin-transform-sticky-regex": "^7.2.0", "@babel/plugin-transform-template-literals": "^7.4.4", "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.5.5", + "@babel/plugin-transform-unicode-regex": "^7.7.0", + "@babel/types": "^7.7.1", "browserslist": "^4.6.0", "core-js-compat": "^3.1.1", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/preset-flow": { @@ -1044,32 +1355,32 @@ } }, "@babel/preset-react": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", - "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.7.0.tgz", + "integrity": "sha512-IXXgSUYBPHUGhUkH+89TR6faMcBtuMW0h5OHbMuVbL3/5wK2g6a2M2BBpkLa+Kw0sAHiZ9dNVgqJMDP/O4GRBA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.7.0", "@babel/plugin-transform-react-jsx-self": "^7.0.0", "@babel/plugin-transform-react-jsx-source": "^7.0.0" } }, "@babel/preset-typescript": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz", - "integrity": "sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.7.2.tgz", + "integrity": "sha512-1B4HthAelaLGfNRyrWqJtBEjXX1ulThCrLQ5B2VOtEAznWFIFXFJahgXImqppy66lx/Oh+cOSCQdJzZqh2Jh5g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.3.2" + "@babel/plugin-transform-typescript": "^7.7.2" } }, "@babel/runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", - "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", "requires": { "regenerator-runtime": "^0.13.2" }, @@ -1082,37 +1393,75 @@ } }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/traverse": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", - "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.5", - "@babel/types": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/types": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", - "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", + "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", "requires": { "esutils": "^2.0.2", "lodash": "^4.17.13", @@ -1130,70 +1479,70 @@ } }, "@emotion/cache": { - "version": "10.0.15", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.15.tgz", - "integrity": "sha512-8VthgeKhlGeTXSW1JN7I14AnAaiFPbOrqNqg3dPoGCZ3bnMjkrmRU0zrx0BtBw9esBaPaQgDB9y0tVgAGT2Mrg==", + "version": "10.0.19", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.19.tgz", + "integrity": "sha512-BoiLlk4vEsGBg2dAqGSJu0vJl/PgVtCYLBFJaEO8RmQzPugXewQCXZJNXTDFaRlfCs0W+quesayav4fvaif5WQ==", "dev": true, "requires": { "@emotion/sheet": "0.9.3", "@emotion/stylis": "0.8.4", "@emotion/utils": "0.11.2", - "@emotion/weak-memoize": "0.2.3" + "@emotion/weak-memoize": "0.2.4" } }, "@emotion/core": { - "version": "10.0.15", - "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.15.tgz", - "integrity": "sha512-VHwwl3k/ddMfQOHYgOJryXOs2rGJ5AfKLQGm5AVolNonnr6tkmDI4nzIMNaPpveoXVs7sP0OrF24UunIPxveQw==", + "version": "10.0.22", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.22.tgz", + "integrity": "sha512-7eoP6KQVUyOjAkE6y4fdlxbZRA4ILs7dqkkm6oZUJmihtHv0UBq98VgPirq9T8F9K2gKu0J/au/TpKryKMinaA==", "dev": true, "requires": { - "@babel/runtime": "^7.4.3", - "@emotion/cache": "^10.0.15", - "@emotion/css": "^10.0.14", - "@emotion/serialize": "^0.11.9", + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.17", + "@emotion/css": "^10.0.22", + "@emotion/serialize": "^0.11.12", "@emotion/sheet": "0.9.3", "@emotion/utils": "0.11.2" } }, "@emotion/css": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.14.tgz", - "integrity": "sha512-MozgPkBEWvorcdpqHZE5x1D/PLEHUitALQCQYt2wayf4UNhpgQs2tN0UwHYS4FMy5ROBH+0ALyCFVYJ/ywmwlg==", + "version": "10.0.22", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.22.tgz", + "integrity": "sha512-8phfa5mC/OadBTmGpMpwykIVH0gFCbUoO684LUkyixPq4F1Wwri7fK5Xlm8lURNBrd2TuvTbPUGxFsGxF9UacA==", "dev": true, "requires": { - "@emotion/serialize": "^0.11.8", + "@emotion/serialize": "^0.11.12", "@emotion/utils": "0.11.2", - "babel-plugin-emotion": "^10.0.14" + "babel-plugin-emotion": "^10.0.22" } }, "@emotion/hash": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.2.tgz", - "integrity": "sha512-RMtr1i6E8MXaBWwhXL3yeOU8JXRnz8GNxHvaUfVvwxokvayUY0zoBeWbKw1S9XkufmGEEdQd228pSZXFkAln8Q==" + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.3.tgz", + "integrity": "sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw==" }, "@emotion/is-prop-valid": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.2.tgz", - "integrity": "sha512-ZQIMAA2kLUWiUeMZNJDTeCwYRx1l8SQL0kHktze4COT22occKpDML1GDUXP5/sxhOMrZO8vZw773ni4H5Snrsg==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.5.tgz", + "integrity": "sha512-6ZODuZSFofbxSbcxwsFz+6ioPjb0ISJRRPLZ+WIbjcU2IMU0Io+RGQjjaTgOvNQl007KICBm7zXQaYQEC1r6Bg==", "dev": true, "requires": { - "@emotion/memoize": "0.7.2" + "@emotion/memoize": "0.7.3" } }, "@emotion/memoize": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.2.tgz", - "integrity": "sha512-hnHhwQzvPCW1QjBWFyBtsETdllOM92BfrKWbUTmh9aeOlcVOiXvlPsK4104xH8NsaKfg86PTFsWkueQeUfMA/w==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.3.tgz", + "integrity": "sha512-2Md9mH6mvo+ygq1trTeVp2uzAKwE2P7In0cRpD/M9Q70aH8L+rxMLbb3JCN2JoSWsV2O+DdFjfbbXoMoLBczow==", "dev": true }, "@emotion/serialize": { - "version": "0.11.9", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.9.tgz", - "integrity": "sha512-/Cn4V81z3ZyFiDQRw8nhGFaHkxHtmCSSBUit4vgTuLA1BqxfJUYiqSq97tq/vV8z9LfIoqs6a9v6QrUFWZpK7A==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.14.tgz", + "integrity": "sha512-6hTsySIuQTbDbv00AnUO6O6Xafdwo5GswRlMZ5hHqiFx+4pZ7uGWXUQFW46Kc2taGhP89uXMXn/lWQkdyTosPA==", "dev": true, "requires": { - "@emotion/hash": "0.7.2", - "@emotion/memoize": "0.7.2", + "@emotion/hash": "0.7.3", + "@emotion/memoize": "0.7.3", "@emotion/unitless": "0.7.4", "@emotion/utils": "0.11.2", "csstype": "^2.5.7" @@ -1206,24 +1555,24 @@ "dev": true }, "@emotion/styled": { - "version": "10.0.15", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.15.tgz", - "integrity": "sha512-vIKDo/hG741PNRpMnrJ6R8NnnjYfOBw3d6cb3yNckpjcp0NNq3ugE8/EjcYBU1Ke44nx2p00h5uzE396xOLJIg==", + "version": "10.0.23", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.23.tgz", + "integrity": "sha512-gNr04eqBQ2iYUx8wFLZDfm3N8/QUOODu/ReDXa693uyQGy2OqA+IhPJk+kA7id8aOfwAsMuvZ0pJImEXXKtaVQ==", "dev": true, "requires": { - "@emotion/styled-base": "^10.0.15", - "babel-plugin-emotion": "^10.0.15" + "@emotion/styled-base": "^10.0.23", + "babel-plugin-emotion": "^10.0.23" } }, "@emotion/styled-base": { - "version": "10.0.15", - "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.15.tgz", - "integrity": "sha512-u1mtdoEip9uf0Wa/CrgLNFiu5pP6annTHyZGGinBisk/dRGyfq3NB7suum8HeMu26xXk7b5/qseDlrsoHq75KQ==", + "version": "10.0.24", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.24.tgz", + "integrity": "sha512-AnBImerf0h4dGAJVo0p0VE8KoAns71F28ErGFK474zbNAHX6yqSWQUasb+1jvg/VPwZjCp19+tAr6oOB0pwmLQ==", "dev": true, "requires": { - "@babel/runtime": "^7.4.3", - "@emotion/is-prop-valid": "0.8.2", - "@emotion/serialize": "^0.11.9", + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.5", + "@emotion/serialize": "^0.11.14", "@emotion/utils": "0.11.2" } }, @@ -1246,9 +1595,9 @@ "dev": true }, "@emotion/weak-memoize": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.3.tgz", - "integrity": "sha512-zVgvPwGK7c1aVdUVc9Qv7SqepOGRDrqCw7KZPSZziWGxSlbII3gmvGLPzLX4d0n0BMbamBacUrN22zOMyFFEkQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.4.tgz", + "integrity": "sha512-6PYY5DVdAY1ifaQW6XYTnOMihmBVT27elqSjEoodchsGjzYlEsTQMcEhSud99kVawatyTZRTiVkJ/c6lwbQ7nA==", "dev": true }, "@endemolshinegroup/cosmiconfig-typescript-loader": { @@ -1263,101 +1612,106 @@ } }, "@formatjs/intl-relativetimeformat": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-2.6.3.tgz", - "integrity": "sha512-sb3PcbTSNQfnL4HM2XKedt8Oopf2EwaoxyjeMbgvje6x1zQuf1oTAidLHT65Dkox7hfSql8ZjpAqWqnHJsLN9w==" - }, - "@heroku-cli/color": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/@heroku-cli/color/-/color-1.1.14.tgz", - "integrity": "sha512-2JYy//YE2YINTe21hpdVMBNc7aYFkgDeY9JUz/BCjFZmYLn0UjGaCc4BpTcMGXNJwuqoUenw2WGOFGHsJqlIDw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-4.4.0.tgz", + "integrity": "sha512-8lXOWWvoIPJR8Ak1uywE/gajBmHppfIg6a1o/fyd3t6NV7Qe+PVj7SJ5SgyRUcK3xQVA6AXpDJ7LCyjo5iOD8g==", "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "strip-ansi": "^5.0.0", - "supports-color": "^5.5.0", - "tslib": "^1.9.3" + "@formatjs/intl-utils": "^1.4.0" } }, + "@formatjs/intl-unified-numberformat": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-2.1.0.tgz", + "integrity": "sha512-0zL5DKRe4KiaupyiwT8ckTmE1aPlb2fsR0deMGN4QVlkdCxsCDMrLykrLyrhBa9fthTDaGR4Qh+bALk/sa4Vcg==", + "requires": { + "@formatjs/intl-utils": "^1.4.0" + } + }, + "@formatjs/intl-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-utils/-/intl-utils-1.4.0.tgz", + "integrity": "sha512-z5HyJumGzORM+5SpvkAlp/hu0AHDeZcUNKSmj9NjS7kWxOGZMuAdS3X1K5XiE0j5I8r8s8SIaz0IQOdMA1WFeA==" + }, "@jest/console": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", - "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, "requires": { - "@jest/source-map": "^24.3.0", + "@jest/source-map": "^24.9.0", "chalk": "^2.0.1", "slash": "^2.0.0" } }, "@jest/core": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz", - "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", "dev": true, "requires": { "@jest/console": "^24.7.1", - "@jest/reporters": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", + "@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.8.0", - "jest-config": "^24.8.0", - "jest-haste-map": "^24.8.0", - "jest-message-util": "^24.8.0", + "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-dependencies": "^24.8.0", - "jest-runner": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-snapshot": "^24.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.0", - "jest-watcher": "^24.8.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", - "pirates": "^4.0.1", "realpath-native": "^1.1.0", "rimraf": "^2.5.4", + "slash": "^2.0.0", "strip-ansi": "^5.0.0" } }, "@jest/environment": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", - "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "@jest/fake-timers": "^24.8.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", - "jest-mock": "^24.8.0" + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" } }, "@jest/fake-timers": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", - "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, "requires": { - "@jest/types": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-mock": "^24.8.0" + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" } }, "@jest/reporters": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz", - "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, "requires": { - "@jest/environment": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", + "@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", @@ -1365,45 +1719,18 @@ "istanbul-lib-instrument": "^3.0.1", "istanbul-lib-report": "^2.0.4", "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.1.1", - "jest-haste-map": "^24.8.0", - "jest-resolve": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-util": "^24.8.0", + "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.2.1", + "node-notifier": "^5.4.2", "slash": "^2.0.0", "source-map": "^0.6.0", "string-length": "^2.0.0" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@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" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -1413,9 +1740,9 @@ } }, "@jest/source-map": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", - "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { "callsites": "^3.0.0", @@ -1438,270 +1765,126 @@ } }, "@jest/test-result": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", - "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/types": "^24.8.0", + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", "@types/istanbul-lib-coverage": "^2.0.0" } }, "@jest/test-sequencer": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz", - "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", "dev": true, "requires": { - "@jest/test-result": "^24.8.0", - "jest-haste-map": "^24.8.0", - "jest-runner": "^24.8.0", - "jest-runtime": "^24.8.0" + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" } }, "@jest/transform": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", - "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.8.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.8.0", - "jest-regex-util": "^24.3.0", - "jest-util": "^24.8.0", + "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" }, "dependencies": { - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@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" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "dev": true, - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } } } }, "@jest/types": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", - "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^12.0.9" + "@types/yargs": "^13.0.0" } }, "@material-ui/core": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-3.9.3.tgz", - "integrity": "sha512-REIj62+zEvTgI/C//YL4fZxrCVIySygmpZglsu/Nl5jPqy3CDjZv1F9ubBYorHqmRgeVPh64EghMMWqk4egmfg==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.6.0.tgz", + "integrity": "sha512-nzD0oO3R2dcX/+hmi5FUFSddMKySK76Ryuno3J/iOotbKvzXwbf9szzhL8KPNmsj+vizVNfkEfhzOuuCHRBKKQ==", "requires": { - "@babel/runtime": "^7.2.0", - "@material-ui/system": "^3.0.0-alpha.0", - "@material-ui/utils": "^3.0.0-alpha.2", - "@types/jss": "^9.5.6", - "@types/react-transition-group": "^2.0.8", - "brcast": "^3.0.1", - "classnames": "^2.2.5", - "csstype": "^2.5.2", - "debounce": "^1.1.0", - "deepmerge": "^3.0.0", - "dom-helpers": "^3.2.1", + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.6.0", + "@material-ui/system": "^4.5.2", + "@material-ui/types": "^4.1.1", + "@material-ui/utils": "^4.5.2", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.2", + "convert-css-length": "^2.0.1", "hoist-non-react-statics": "^3.2.1", - "is-plain-object": "^2.0.4", - "jss": "^9.8.7", - "jss-camel-case": "^6.0.0", - "jss-default-unit": "^8.0.2", - "jss-global": "^3.0.0", - "jss-nested": "^6.0.1", - "jss-props-sort": "^6.0.0", - "jss-vendor-prefixer": "^7.0.0", - "normalize-scroll-left": "^0.1.2", + "normalize-scroll-left": "^0.2.0", "popper.js": "^1.14.1", - "prop-types": "^15.6.0", - "react-event-listener": "^0.6.2", - "react-transition-group": "^2.2.1", - "recompose": "0.28.0 - 0.30.0", - "warning": "^4.0.1" + "prop-types": "^15.7.2", + "react-transition-group": "^4.3.0" } }, "@material-ui/icons": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-3.0.2.tgz", - "integrity": "sha512-QY/3gJnObZQ3O/e6WjH+0ah2M3MOgLOzCy8HTUoUx9B6dDrS18vP7Ycw3qrDEKlB6q1KNxy6CZHm5FCauWGy2g==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.5.1.tgz", + "integrity": "sha512-YZ/BgJbXX4a0gOuKWb30mBaHaoXRqPanlePam83JQPZ/y4kl+3aW0Wv9tlR70hB5EGAkEJGW5m4ktJwMgxQAeA==", "requires": { - "@babel/runtime": "^7.2.0", - "recompose": "0.28.0 - 0.30.0" + "@babel/runtime": "^7.4.4" } }, "@material-ui/styles": { - "version": "3.0.0-alpha.10", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-3.0.0-alpha.10.tgz", - "integrity": "sha512-qJ5eiupBPRCNlMCDZ2G5h8auBtBtm8uT/oCUAJ/FqhO5oC7POLmmvDN1Cq1cgAmqQnaL6uN5mAM1Gc90GpKr9A==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.6.0.tgz", + "integrity": "sha512-lqqh4UEMdIYcU1Yth4pQyMTah02uAkg3NOT3MirN9FUexdL8pNA6zCHigEgDSfwmvnXyxHhxTkphfy0DRfnt9w==", "requires": { - "@babel/runtime": "^7.2.0", + "@babel/runtime": "^7.4.4", "@emotion/hash": "^0.7.1", - "@material-ui/utils": "^3.0.0-alpha.2", - "classnames": "^2.2.5", - "deepmerge": "^3.0.0", + "@material-ui/types": "^4.1.1", + "@material-ui/utils": "^4.5.2", + "clsx": "^1.0.2", + "csstype": "^2.5.2", "hoist-non-react-statics": "^3.2.1", - "jss": "^10.0.0-alpha.7", - "jss-plugin-camel-case": "^10.0.0-alpha.7", - "jss-plugin-default-unit": "^10.0.0-alpha.7", - "jss-plugin-global": "^10.0.0-alpha.7", - "jss-plugin-nested": "^10.0.0-alpha.7", - "jss-plugin-props-sort": "^10.0.0-alpha.7", - "jss-plugin-rule-value-function": "^10.0.0-alpha.7", - "jss-plugin-vendor-prefixer": "^10.0.0-alpha.7", - "prop-types": "^15.6.0", - "warning": "^4.0.1" + "jss": "^10.0.0", + "jss-plugin-camel-case": "^10.0.0", + "jss-plugin-default-unit": "^10.0.0", + "jss-plugin-global": "^10.0.0", + "jss-plugin-nested": "^10.0.0", + "jss-plugin-props-sort": "^10.0.0", + "jss-plugin-rule-value-function": "^10.0.0", + "jss-plugin-vendor-prefixer": "^10.0.0", + "prop-types": "^15.7.2" }, "dependencies": { "jss": { - "version": "10.0.0-alpha.23", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0-alpha.23.tgz", - "integrity": "sha512-r3fg6nrNdqxhaE4s3ZkyEmpVTb2UUmSu0uhKrvfSAy+N45MmlLmhgyFFaUyJOvFJzm69XYXM2Q62VhGccV6qMA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", "requires": { "@babel/runtime": "^7.3.1", "csstype": "^2.6.5", @@ -1712,24 +1895,31 @@ } }, "@material-ui/system": { - "version": "3.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-3.0.0-alpha.2.tgz", - "integrity": "sha512-odmxQ0peKpP7RQBQ8koly06YhsPzcoVib1vByVPBH4QhwqBXuYoqlCjt02846fYspAqkrWzjxnWUD311EBbxOA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.5.2.tgz", + "integrity": "sha512-h9RWvdM9XKlHHqwiuhyvWdobptQkHli+m2jJFs7i1AI/hmGsIc4reDmS7fInhETgt/Txx7uiAIznfRNIIVHmQw==", "requires": { - "@babel/runtime": "^7.2.0", - "deepmerge": "^3.0.0", - "prop-types": "^15.6.0", - "warning": "^4.0.1" + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.5.2", + "prop-types": "^15.7.2" + } + }, + "@material-ui/types": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-4.1.1.tgz", + "integrity": "sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ==", + "requires": { + "@types/react": "*" } }, "@material-ui/utils": { - "version": "3.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-3.0.0-alpha.3.tgz", - "integrity": "sha512-rwMdMZptX0DivkqBuC+Jdq7BYTXwqKai5G5ejPpuEDKpWzi1Oxp+LygGw329FrKpuKeiqpcymlqJTjmy+quWng==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.5.2.tgz", + "integrity": "sha512-zhbNfHd1gLa8At6RPDG7uMZubHxbY+LtM6IkSfeWi6Lo4Ax80l62YaN1QmUpO1IvGCkn/j62tQX3yObiQZrJsQ==", "requires": { - "@babel/runtime": "^7.2.0", - "prop-types": "^15.6.0", - "react-is": "^16.6.3" + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.6" } }, "@mrmlnc/readdir-enhanced": { @@ -1787,20 +1977,22 @@ } }, "@oclif/command": { - "version": "1.5.16", - "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.5.16.tgz", - "integrity": "sha512-bzqNz9/EblkohokXbico/14r05oRe8aa06S3MLEo4GlmyOce2abIOx1oZfUDl8ekQuKO+Ycw9Jco+hN2aL423A==", + "version": "1.5.19", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.5.19.tgz", + "integrity": "sha512-6+iaCMh/JXJaB2QWikqvGE9//wLEVYYwZd5sud8aLoLKog1Q75naZh2vlGVtg5Mq/NqpqGQvdIjJb3Bm+64AUQ==", "requires": { + "@oclif/config": "^1", "@oclif/errors": "^1.2.2", - "@oclif/parser": "^3.7.3", + "@oclif/parser": "^3.8.3", + "@oclif/plugin-help": "^2", "debug": "^4.1.1", "semver": "^5.6.0" } }, "@oclif/config": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.13.2.tgz", - "integrity": "sha512-RUOKeuAaopo3zrA5hcgE0PT2lbAUT72+eJdqTlWyI9sbPrGHZgUwV+vrL6Qal7ywWYDkL0vrKd1YS4yXtKIDKw==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.13.3.tgz", + "integrity": "sha512-qs5XvGRw+1M41abOKCjd0uoeHCgsMxa2MurD2g2K8CtQlzlMXl0rW5idVeimIg5208LLuxkfzQo8TKAhhRCWLg==", "requires": { "@oclif/parser": "^3.8.0", "debug": "^4.1.1", @@ -1835,9 +2027,9 @@ } }, "@oclif/plugin-autocomplete": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.1.3.tgz", - "integrity": "sha512-gObSl+GOwhTuzJJh1vKocsTVAU/VX1V1MNnM+evb4c2z33KZeWiM+DanxXvM7JGDSKKaSE55Q2CXsAQnIuDi2w==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-0.1.4.tgz", + "integrity": "sha512-ZyxJyL6jSt9Df68Smeu14xhZZwELE9IB5twhie1/56rt62nG6TJB4CZhaMqRk+33MDfU3JyWxNbIDMNMESlGqg==", "requires": { "@oclif/command": "^1.4.31", "@oclif/config": "^1.6.22", @@ -1870,9 +2062,9 @@ } }, "@oclif/plugin-help": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-2.2.0.tgz", - "integrity": "sha512-56iIgE7NQfwy/ZrWrvrEfJGb5rrMUt409yoQGw4feiU101UudA1btN1pbUbcKBr7vY9KFeqZZcftXEGxOp7zBg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-2.2.1.tgz", + "integrity": "sha512-psEA3t41MSGBErLk6xCaAq2jKrRtx3Br+kHpd43vZeGEeZ7Gos4wgK0JAaHBbvhvUQskCHg8dzoqv4XEeTWeVQ==", "requires": { "@oclif/command": "^1.5.13", "chalk": "^2.4.1", @@ -1897,15 +2089,15 @@ } }, "@oclif/plugin-not-found": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.2.tgz", - "integrity": "sha512-SPlmiJFmTFltQT/owdzQwKgq6eq5AEKVwVK31JqbzK48bRWvEL1Ye60cgztXyZ4bpPn2Fl+KeL3FWFQX41qJuA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-1.2.3.tgz", + "integrity": "sha512-Igbw2T4gLrb/f28Llr730FeMXBSI2PXdky2YvQfsZeQGDsyBZmC4gprJJtmrMWQcjz0B51IInRBnZYERvwfIpw==", "requires": { "@oclif/color": "^0.0.0", "@oclif/command": "^1.5.3", "cli-ux": "^4.9.0", "fast-levenshtein": "^2.0.6", - "lodash": "^4.17.11" + "lodash": "^4.17.13" } }, "@oclif/plugin-plugins": { @@ -1933,9 +2125,9 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-ux": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.3.1.tgz", - "integrity": "sha512-l2MXbitx0FjtHKSbHytuxfxWv6MdWBRh23ItRJjU17cjj0dqZxfAL863tzbR1FIs7jccPllPUvn3QWK6BQg3Pg==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.3.3.tgz", + "integrity": "sha512-a16g+BTjASUH41s1pevai4P3JKwhx85wkOSm6sXWsk6KkdSmDeJ16pSCn2x3nqK7W8n35igOu2YiW+qFkqLRJg==", "requires": { "@oclif/command": "^1.5.1", "@oclif/errors": "^1.2.1", @@ -2007,17 +2199,6 @@ "prop-types": "^15.6.1", "react-lifecycles-compat": "^3.0.4", "warning": "^3.0.0" - }, - "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - } } }, "@samverschueren/stream-to-observable": { @@ -2028,32 +2209,23 @@ "any-observable": "^0.3.0" } }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" - }, "@storybook/addon-storyshots": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-5.1.10.tgz", - "integrity": "sha512-cwCvkvuI/w1PCbagWvW1uq9TA/2OXr67w5Zg5UeKM24RutOVytmZUmoWD6pDqFAYa6804sZzhohta/5xph3sLg==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-5.2.5.tgz", + "integrity": "sha512-HsbKg6u17YND/R4Ig5MfYODoMAwY+pwkuTjNeK+kyhzFH5j5HrWD0fbZQIf1e3xWoi/kL2Wkd33w8dR4zmWFXg==", "dev": true, "requires": { - "@storybook/addons": "5.1.10", + "@jest/transform": "^24.9.0", + "@storybook/addons": "5.2.5", "core-js": "^3.0.1", "glob": "^7.1.3", "global": "^4.3.2", "jest-specific-snapshot": "^2.0.0", "read-pkg-up": "^6.0.0", - "regenerator-runtime": "^0.12.1" + "regenerator-runtime": "^0.12.1", + "ts-dedent": "^1.1.0" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", @@ -2063,58 +2235,45 @@ } }, "@storybook/addons": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.1.10.tgz", - "integrity": "sha512-M9b2PCp9RZxDC6wL7vVt2SCKCGXrrEAOsdpMvU569yB1zoUPEiiqElVDwb91O2eAGPnmd2yjImp90kOpKUW0EA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.2.5.tgz", + "integrity": "sha512-CvMj7Bs3go9tv5rZuAvFwuwe8p/16LDCHS7+5nVFosvcL8nuN339V3rzakw8nLy/S6XKeZ1ACu4t3vYkreRE3w==", "dev": true, "requires": { - "@storybook/api": "5.1.10", - "@storybook/channels": "5.1.10", - "@storybook/client-logger": "5.1.10", + "@storybook/api": "5.2.5", + "@storybook/channels": "5.2.5", + "@storybook/client-logger": "5.2.5", + "@storybook/core-events": "5.2.5", "core-js": "^3.0.1", "global": "^4.3.2", "util-deprecate": "^1.0.2" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "@storybook/api": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.1.10.tgz", - "integrity": "sha512-YeZe/71zLMmgT95IMAEZOc9AwL6Y23mWvkZMwFbkokxS9+bU/qmVlQ0B9c3JBzO3OSs7sXaRqyP1o3QkQgVsiw==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.2.5.tgz", + "integrity": "sha512-JvLafqFVgA3dIWpLMoGNk4sRuogE5imhD6/g0d8DOwnCID9xowj5xIptSrCTKvGGGxuN3wWRGn6I2lEbY6969g==", "dev": true, "requires": { - "@storybook/channels": "5.1.10", - "@storybook/client-logger": "5.1.10", - "@storybook/core-events": "5.1.10", - "@storybook/router": "5.1.10", - "@storybook/theming": "5.1.10", + "@storybook/channels": "5.2.5", + "@storybook/client-logger": "5.2.5", + "@storybook/core-events": "5.2.5", + "@storybook/router": "5.2.5", + "@storybook/theming": "5.2.5", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", "global": "^4.3.2", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "memoizerific": "^1.11.3", "prop-types": "^15.6.2", "react": "^16.8.3", "semver": "^6.0.0", "shallow-equal": "^1.1.0", "store2": "^2.7.1", - "telejson": "^2.2.1", + "telejson": "^3.0.2", "util-deprecate": "^1.0.2" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -2124,69 +2283,50 @@ } }, "@storybook/channel-postmessage": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.1.10.tgz", - "integrity": "sha512-kQZIwltN2cWDXluhCfdModFDK1LHV9ZhNQ1b/uD9vn1c65rQ9u7r4lRajCfS0X1dmAWqz48cBcEurAubNgmswg==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.2.5.tgz", + "integrity": "sha512-GoiC6dUM3YfNKpvj3syxQIQJLHBnH61CfLJzz4xygmn+3keHtjtz6yPHaU4+00MSSP2uDzqePkjgXx4DcLedHA==", "dev": true, "requires": { - "@storybook/channels": "5.1.10", - "@storybook/client-logger": "5.1.10", + "@storybook/channels": "5.2.5", + "@storybook/client-logger": "5.2.5", "core-js": "^3.0.1", "global": "^4.3.2", - "telejson": "^2.2.1" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } + "telejson": "^3.0.2" } }, "@storybook/channels": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.1.10.tgz", - "integrity": "sha512-w7n/bV1BLu51KI1eLc75lN9H1ssBc3PZMXk88GkMiKyBVRzPlJA5ixnzH86qwYGReE0dhRpsgHXZ5XmoKaVmPA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.2.5.tgz", + "integrity": "sha512-I+zB3ym5ozBcNBqyzZbvB6gRIG/ZKKkqy5k6LwKd5NMx7NU7zU74+LQUBBOcSIrigj8kCArZz7rlgb0tlSKXxQ==", "dev": true, "requires": { "core-js": "^3.0.1" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "@storybook/client-api": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.1.10.tgz", - "integrity": "sha512-v2PqiNUhwDlVDLYL94f6LFjdYMToTpuwWh9aeqzt/4PAJUnIcA+2P8+qXiYdJTqQy/u7P72HFMlc9Ru4tl3QFg==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.2.5.tgz", + "integrity": "sha512-n7CAZ3+DZ7EUdmXbq8mXRb+stOavC8GMw3CzjGSo8O6t4rFcMpZQAzjS0YRX1RG/CGFSv9d3R3TNvEBcBGTwRg==", "dev": true, "requires": { - "@storybook/addons": "5.1.10", - "@storybook/client-logger": "5.1.10", - "@storybook/core-events": "5.1.10", - "@storybook/router": "5.1.10", + "@storybook/addons": "5.2.5", + "@storybook/channel-postmessage": "5.2.5", + "@storybook/channels": "5.2.5", + "@storybook/client-logger": "5.2.5", + "@storybook/core-events": "5.2.5", + "@storybook/router": "5.2.5", "common-tags": "^1.8.0", "core-js": "^3.0.1", - "eventemitter3": "^3.1.0", + "eventemitter3": "^4.0.0", "global": "^4.3.2", "is-plain-object": "^3.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "memoizerific": "^1.11.3", - "qs": "^6.6.0" + "qs": "^6.6.0", + "util-deprecate": "^1.0.2" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "is-plain-object": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", @@ -2205,30 +2345,24 @@ } }, "@storybook/client-logger": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.1.10.tgz", - "integrity": "sha512-vB1NoFWRTgcERwodhbgoDwI00eqU8++nXI7GhMS1CY8haZaSp3gyKfHRWyfH+M+YjQuGBRUcvIk4gK6OtSrDOw==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.2.5.tgz", + "integrity": "sha512-6DyYUrMgAvF+th0foH7UNz+2JJpRdvNbpvYKtvi/+hlvRIaI6AqANgLkPUgMibaif5TLzjCr0bLdAYcjeJz03w==", "dev": true, "requires": { "core-js": "^3.0.1" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "@storybook/components": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.1.10.tgz", - "integrity": "sha512-QUQeeQp1xNWiL4VlxFAea0kqn2zvBfmfPlUddOFO9lBhT6pVy0xYPjXjbTVWjVcYzZpyUNWw5GplqrR5jhlaCA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.2.5.tgz", + "integrity": "sha512-6NVaBJm5wY53e9k+2ZiL2ABsHghE1ssQciLTG3jJPahnM6rfkM8ue66rhxhP88jE9isT48JgOZOJepEyxDz/fg==", "dev": true, "requires": { - "@storybook/client-logger": "5.1.10", - "@storybook/theming": "5.1.10", + "@storybook/client-logger": "5.2.5", + "@storybook/theming": "5.2.5", + "@types/react-syntax-highlighter": "10.1.0", + "@types/react-textarea-autosize": "^4.3.3", "core-js": "^3.0.1", "global": "^4.3.2", "markdown-to-jsx": "^6.9.1", @@ -2243,22 +2377,13 @@ "react-popper-tooltip": "^2.8.3", "react-syntax-highlighter": "^8.0.1", "react-textarea-autosize": "^7.1.0", - "recompose": "^0.30.0", "simplebar-react": "^1.0.0-alpha.6" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "@storybook/core": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.1.10.tgz", - "integrity": "sha512-zkNjufOFrLpFpmr73F/gaJh0W0vWqXIo5zrKvQt1LqmMeCU/v8MstHi4XidlK43UpeogfaXl5tjNCQDO/bd0Dw==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.2.5.tgz", + "integrity": "sha512-R6A6VzSh++pB1a+9DsywW5Mlp0/eauQz1A8m2DrllWcTHTjbn0ZovlG5HBrKjpknFXpCWxkUKE4eTAE2tWsryA==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.3.3", @@ -2266,19 +2391,20 @@ "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-transform-react-constant-elements": "^7.2.0", "@babel/preset-env": "^7.4.5", - "@storybook/addons": "5.1.10", - "@storybook/channel-postmessage": "5.1.10", - "@storybook/client-api": "5.1.10", - "@storybook/client-logger": "5.1.10", - "@storybook/core-events": "5.1.10", - "@storybook/node-logger": "5.1.10", - "@storybook/router": "5.1.10", - "@storybook/theming": "5.1.10", - "@storybook/ui": "5.1.10", + "@storybook/addons": "5.2.5", + "@storybook/channel-postmessage": "5.2.5", + "@storybook/client-api": "5.2.5", + "@storybook/client-logger": "5.2.5", + "@storybook/core-events": "5.2.5", + "@storybook/node-logger": "5.2.5", + "@storybook/router": "5.2.5", + "@storybook/theming": "5.2.5", + "@storybook/ui": "5.2.5", "airbnb-js-shims": "^1 || ^2", + "ansi-to-html": "^0.6.11", "autoprefixer": "^9.4.9", "babel-plugin-add-react-displayname": "^0.0.5", - "babel-plugin-emotion": "^10.0.9", + "babel-plugin-emotion": "^10.0.14", "babel-plugin-macros": "^2.4.5", "babel-preset-minify": "^0.5.0 || 0.6.0-alpha.5", "boxen": "^3.0.0", @@ -2288,8 +2414,8 @@ "commander": "^2.19.0", "common-tags": "^1.8.0", "core-js": "^3.0.1", - "corejs-upgrade-webpack-plugin": "^2.0.0", - "css-loader": "^2.1.1", + "corejs-upgrade-webpack-plugin": "^2.2.0", + "css-loader": "^3.0.0", "detect-port": "^1.3.0", "dotenv-webpack": "^1.7.0", "ejs": "^2.6.1", @@ -2304,7 +2430,7 @@ "interpret": "^1.2.0", "ip": "^1.1.5", "json5": "^2.1.0", - "lazy-universal-dotenv": "^3.0.0", + "lazy-universal-dotenv": "^3.0.1", "node-fetch": "^2.6.0", "open": "^6.1.0", "pnp-webpack-plugin": "1.4.3", @@ -2322,19 +2448,14 @@ "shelljs": "^0.8.3", "style-loader": "^0.23.1", "terser-webpack-plugin": "^1.2.4", - "url-loader": "^1.1.2", + "unfetch": "^4.1.0", + "url-loader": "^2.0.1", "util-deprecate": "^1.0.2", "webpack": "^4.33.0", "webpack-dev-middleware": "^3.7.0", "webpack-hot-middleware": "^2.25.0" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "file-loader": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", @@ -2370,12 +2491,6 @@ "util.promisify": "1.0.0" } }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "dev": true - }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", @@ -2408,26 +2523,18 @@ } }, "@storybook/core-events": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.1.10.tgz", - "integrity": "sha512-Lvu/rNcgS+XCkQKSGdNpUSWjpFF9AOSHPXsvkwHbRwJYdMDn3FznlXfDUiubOWtsziXHB6vl3wkKDlH+ckb32Q==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.2.5.tgz", + "integrity": "sha512-O5GM8XEBbYNbM6Z7a4H1bbnbO2cxQrXMhEwansC7a7YinQdkTPiuGxke3NiyK+7pLDh778kpQyjoCjXq6UfAoQ==", "dev": true, "requires": { "core-js": "^3.0.1" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "@storybook/node-logger": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.1.10.tgz", - "integrity": "sha512-Z4UKh7QBOboQhUF5S/dKOx3OWWCNZGwYu8HZa/O+P68+XnQDhuZCYwqWG49xFhZd0Jb0W9gdUL2mWJw5POG9PA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.2.5.tgz", + "integrity": "sha512-UNyXGOhOr4Bn9wKwBTZABTBXQzrgvGxPLSmvAFZuMx9ZhqoT/EXAuLUl0/wiJtkyuYpoOOskNwIdKxLBdTKS2w==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -2437,12 +2544,6 @@ "regenerator-runtime": "^0.12.1" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", @@ -2452,17 +2553,19 @@ } }, "@storybook/react": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.1.10.tgz", - "integrity": "sha512-wWy9l83KgbP8P2A8AbkwExEAdA0iznb4jEnCGzP1hAv8Q5LmL3MLPb1dIZqhWrg+E2m3tZei+7A7qu2Q8/cLLw==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.2.5.tgz", + "integrity": "sha512-yPOL0jBEfYo3YkRJkXnIzAQ3L9lTju27mg+0bW+y3lpJAM23ffAxrRyOGV7bzj99EA7dak2lw8Hj4yVHTplBdg==", "dev": true, "requires": { "@babel/plugin-transform-react-constant-elements": "^7.2.0", "@babel/preset-flow": "^7.0.0", "@babel/preset-react": "^7.0.0", - "@storybook/core": "5.1.10", - "@storybook/node-logger": "5.1.10", + "@storybook/addons": "5.2.5", + "@storybook/core": "5.2.5", + "@storybook/node-logger": "5.2.5", "@svgr/webpack": "^4.0.3", + "@types/webpack-env": "^1.13.7", "babel-plugin-add-react-displayname": "^0.0.5", "babel-plugin-named-asset-import": "^0.3.1", "babel-plugin-react-docgen": "^3.0.0", @@ -2470,7 +2573,7 @@ "common-tags": "^1.8.0", "core-js": "^3.0.1", "global": "^4.3.2", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "mini-css-extract-plugin": "^0.7.0", "prop-types": "^15.7.2", "react-dev-utils": "^9.0.0", @@ -2479,12 +2582,6 @@ "webpack": "^4.33.0" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", @@ -2500,39 +2597,33 @@ } }, "@storybook/router": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.1.10.tgz", - "integrity": "sha512-BdG6/essPZFHCP2ewCG0gYFQfmuuTSHXAB5fd/rwxLSYj1IzNznC5OxkvnSaTr4rgoxxaW/z1hbN1NuA0ivlFA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.2.5.tgz", + "integrity": "sha512-e6ElDAWSoEW1KSnsTbVwbpzaZ8CNWYw0Ok3b5AHfY2fuSH5L4l6s6k/bP7QSYqvWUeTvkFQYux7A2rOFCriAgA==", "dev": true, "requires": { "@reach/router": "^1.2.1", + "@types/reach__router": "^1.2.3", "core-js": "^3.0.1", "global": "^4.3.2", + "lodash": "^4.17.15", "memoizerific": "^1.11.3", "qs": "^6.6.0" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "@storybook/theming": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.1.10.tgz", - "integrity": "sha512-5cN1lmdVUwAR8U3T49Lfb8JW5RBvxBSPGZpUmbLGz1zi0tWBJgYXoGtw4RbTBjV9kCQOXkHGH12AsdDxHh931w==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.2.5.tgz", + "integrity": "sha512-PGZNYrRgAhXFJKnktFpyyKlaDXEhtTi5XPq5ASVJrsPW6l963Mk2EMKSm4TCTxIJhs0Kx4cv2MnNZFDqHf47eg==", "dev": true, "requires": { - "@emotion/core": "^10.0.9", - "@emotion/styled": "^10.0.7", - "@storybook/client-logger": "5.1.10", + "@emotion/core": "^10.0.14", + "@emotion/styled": "^10.0.14", + "@storybook/client-logger": "5.2.5", "common-tags": "^1.8.0", "core-js": "^3.0.1", "deep-object-diff": "^1.1.0", - "emotion-theming": "^10.0.9", + "emotion-theming": "^10.0.14", "global": "^4.3.2", "memoizerific": "^1.11.3", "polished": "^3.3.1", @@ -2540,12 +2631,6 @@ "resolve-from": "^5.0.0" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -2555,27 +2640,27 @@ } }, "@storybook/ui": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.1.10.tgz", - "integrity": "sha512-ezkoVtzoKh93z2wzkqVIqyrIzTkj8tizgAkoPa7mUAbLCxu6LErHITODQoyEiJWI4Epy3yU9GYXFWwT71hdwsA==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.2.5.tgz", + "integrity": "sha512-C+5KmeTtdG6xkGXPmFDHPxTcSvVohuFD1399fnzjYhfLlRJ04ix3g16rcyDTxRtrFgFidOyGHdzCypgkdaN8dQ==", "dev": true, "requires": { - "@storybook/addons": "5.1.10", - "@storybook/api": "5.1.10", - "@storybook/channels": "5.1.10", - "@storybook/client-logger": "5.1.10", - "@storybook/components": "5.1.10", - "@storybook/core-events": "5.1.10", - "@storybook/router": "5.1.10", - "@storybook/theming": "5.1.10", + "@storybook/addons": "5.2.5", + "@storybook/api": "5.2.5", + "@storybook/channels": "5.2.5", + "@storybook/client-logger": "5.2.5", + "@storybook/components": "5.2.5", + "@storybook/core-events": "5.2.5", + "@storybook/router": "5.2.5", + "@storybook/theming": "5.2.5", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", "core-js-pure": "^3.0.1", - "emotion-theming": "^10.0.10", + "emotion-theming": "^10.0.14", "fast-deep-equal": "^2.0.1", "fuse.js": "^3.4.4", "global": "^4.3.2", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "markdown-to-jsx": "^6.9.3", "memoizerific": "^1.11.3", "polished": "^3.3.1", @@ -2583,25 +2668,18 @@ "qs": "^6.6.0", "react": "^16.8.3", "react-dom": "^16.8.3", - "react-draggable": "^3.1.1", + "react-draggable": "^4.0.3", "react-helmet-async": "^1.0.2", "react-hotkeys": "2.0.0-pre4", - "react-resize-detector": "^4.0.5", - "recompose": "^0.30.0", + "react-sizeme": "^2.6.7", "regenerator-runtime": "^0.13.2", "resolve-from": "^5.0.0", "semver": "^6.0.0", "store2": "^2.7.1", - "telejson": "^2.2.1", + "telejson": "^3.0.2", "util-deprecate": "^1.0.2" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - }, "regenerator-runtime": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", @@ -2647,9 +2725,9 @@ "dev": true }, "@svgr/babel-plugin-svg-dynamic-title": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.1.tgz", - "integrity": "sha512-p6z6JJroP989jHWcuraeWpzdejehTmLUpyC9smhTBWyPN0VVGe2phbYxpPTV7Vh8XzmFrcG55idrnfWn/2oQEw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", + "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==", "dev": true }, "@svgr/babel-plugin-svg-em-dimensions": { @@ -2671,28 +2749,28 @@ "dev": true }, "@svgr/babel-preset": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.1.tgz", - "integrity": "sha512-rPFKLmyhlh6oeBv3j2vEAj2nd2QbWqpoJLKzBLjwQVt+d9aeXajVaPNEqrES2spjXKR4OxfgSs7U0NtmAEkr0Q==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", + "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", "dev": true, "requires": { "@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.1", + "@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": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.2.tgz", - "integrity": "sha512-N+tP5CLFd1hP9RpO83QJPZY3NL8AtrdqNbuhRgBkjE/49RnMrrRsFm1wY8pueUfAGvzn6tSXUq29o6ah8RuR5w==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", + "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", "dev": true, "requires": { - "@svgr/plugin-jsx": "^4.3.2", + "@svgr/plugin-jsx": "^4.3.3", "camelcase": "^5.3.1", "cosmiconfig": "^5.2.1" } @@ -2707,13 +2785,13 @@ } }, "@svgr/plugin-jsx": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.2.tgz", - "integrity": "sha512-+1GW32RvmNmCsOkMoclA/TppNjHPLMnNZG3/Ecscxawp051XJ2MkO09Hn11VcotdC2EPrDfT8pELGRo+kbZ1Eg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", + "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", "dev": true, "requires": { "@babel/core": "^7.4.5", - "@svgr/babel-preset": "^4.3.1", + "@svgr/babel-preset": "^4.3.3", "@svgr/hast-util-to-babel-ast": "^4.3.2", "svg-parser": "^2.0.0" } @@ -2730,17 +2808,17 @@ } }, "@svgr/webpack": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.2.tgz", - "integrity": "sha512-F3VE5OvyOWBEd2bF7BdtFRyI6E9it3mN7teDw0JQTlVtc4HZEYiiLSl+Uf9Uub6IYHVGc+qIrxxDyeedkQru2w==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", + "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", "dev": true, "requires": { "@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.2", - "@svgr/plugin-jsx": "^4.3.2", + "@svgr/core": "^4.3.3", + "@svgr/plugin-jsx": "^4.3.3", "@svgr/plugin-svgo": "^4.3.1", "loader-utils": "^1.2.3" } @@ -2756,10 +2834,16 @@ "@types/react-test-renderer": "^16.8.2" } }, + "@types/asap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/asap/-/asap-2.0.0.tgz", + "integrity": "sha512-upIS0Gt9Mc8eEpCbYMZ1K8rhNosfKUtimNcINce+zLwJF5UpM3Vv7yz3S5l/1IX+DxTa8lTkUjqynvjRXyJzsg==", + "dev": true + }, "@types/babel__core": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz", - "integrity": "sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", + "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -2770,9 +2854,9 @@ } }, "@types/babel__generator": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", - "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz", + "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -2813,9 +2897,9 @@ "dev": true }, "@types/draft-js": { - "version": "0.10.34", - "resolved": "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.10.34.tgz", - "integrity": "sha512-w+Q8Bj/BRZZiumvlx3lkZv3WQ54HFpu+L+29zRkFw53upf9uslYh4DHXqle59NVWwuu9CjxdAoUSD66utaXsBg==", + "version": "0.10.37", + "resolved": "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.10.37.tgz", + "integrity": "sha512-hoAMn1DoCsNDyMILu6c3En84CHBAfycyiSqwOfO3pR+bcJ2xoa61KANGYWE7JJhKB4q0kunM+aFiBLRWWLDhxA==", "dev": true, "requires": { "@types/react": "*", @@ -2875,10 +2959,28 @@ "@types/node": "*" } }, + "@types/globby": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@types/globby/-/globby-9.1.0.tgz", + "integrity": "sha512-9du/HCA71EBz7syHRnM4Q/u4Fbx3SyN/Uu+4Of9lyPX4A6Xi+A8VMxvx8j5/CMTfrae2Zwdwg0fAaKvKXfRbAw==", + "dev": true, + "requires": { + "globby": "*" + } + }, + "@types/handlebars": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-gq9YweFKNNB1uFK71eRqsd4niVkXrxHugqWFQkeLRJvGjnxsLr16bYtcsG4tOFwmYi0Bax+wCkbf1reUfdl4kA==", + "dev": true, + "requires": { + "handlebars": "*" + } + }, "@types/history": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.2.tgz", - "integrity": "sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.3.tgz", + "integrity": "sha512-cS5owqtwzLN5kY+l+KgKdRJ/Cee8tlmQoGQuIE9tWnSmS3JMKzmxo2HIAk2wODMifGwO20d62xZQLYz+RLfXmw==", "dev": true }, "@types/hoist-non-react-statics": { @@ -2890,11 +2992,27 @@ "hoist-non-react-statics": "^3.3.0" } }, + "@types/inquirer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-6.0.1.tgz", + "integrity": "sha512-O9rEHE9iBvYaFAGS0fAlDzqY/3CsOrRKzni4zwnAEce2JrHUEbXAce2Pwwe8ZGzmQkucwSXn1tSiKig37INgfA==", + "dev": true, + "requires": { + "@types/through": "*", + "rxjs": ">=6.4.0" + } + }, "@types/invariant": { "version": "2.2.30", "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.30.tgz", "integrity": "sha512-98fB+yo7imSD2F7PF7GIpELNgtLNgo5wjivu0W5V4jx+KVVJxo6p/qN4zdzSTBWy4/sN3pPyXwnhRSD28QX+ag==" }, + "@types/is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.0.tgz", + "integrity": "sha512-iTs9HReBu7evG77Q4EC8hZnqRt57irBDkK9nvmHroiOIVwYMQc4IvYvdRgwKfYepunIY7Oh/dBuuld+Gj9uo6w==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2932,19 +3050,10 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, - "@types/jss": { - "version": "9.5.8", - "resolved": "https://registry.npmjs.org/@types/jss/-/jss-9.5.8.tgz", - "integrity": "sha512-bBbHvjhm42UKki+wZpR89j73ykSXg99/bhuKuYYePtpma3ZAnmeGnl0WxXiZhPGsIfzKwCUkpPC0jlrVMBfRxA==", - "requires": { - "csstype": "^2.0.0", - "indefinite-observable": "^1.0.1" - } - }, "@types/lodash": { - "version": "4.14.136", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.136.tgz", - "integrity": "sha512-0GJhzBdvsW2RUccNHOBkabI8HZVdOXmXbXhuKlDEd5Vv12P7oAVGfomGp3Ne21o5D/qu1WmthlNKFaoZJJeErA==", + "version": "4.14.145", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.145.tgz", + "integrity": "sha512-7lX5bZFO3YG3AG0XVIm5L1SB6wDLtuaJksTkTWrux3/XwCZgw3MPWZBt3Jgj0w98uqUXWVypT2msxo0A1t22lw==", "dev": true }, "@types/lodash-es": { @@ -2972,9 +3081,9 @@ } }, "@types/node": { - "version": "12.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.1.tgz", - "integrity": "sha512-aK9jxMypeSrhiYofWWBf/T7O+KwaiAHzM4sveCdWPn71lzUSMimRnKzhXDKfKwV1kWoBo2P1aGgaIYGLf9/ljw==" + "version": "12.12.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.6.tgz", + "integrity": "sha512-FjsYUPzEJdGXjwKqSpE0/9QEh6kzhTAeObA54rn6j3rR4C/mzpI9L0KNfoeASSPMMdxIsoJuCLDWcM/rVjIsSA==" }, "@types/normalize-package-data": { "version": "2.4.0", @@ -2983,14 +3092,14 @@ "dev": true }, "@types/prop-types": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz", - "integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==" + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, "@types/puppeteer": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-1.19.0.tgz", - "integrity": "sha512-Db9LWOuTm2bR/qgPE7PQCmnsCQ6flHdULuIDWTks8YdQ/SGHKg5WGWG54gl0734NDKCTF5MbqAp2qWuvBiyQ3Q==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-1.20.2.tgz", + "integrity": "sha512-oSFCtftHSfVx8K9XPdNNYs79Zt4pYJs/0NP78ltuGCB25zS3UNGJSiypBfbhbvRC5Dcsh0k1R5Z0i8HHtqQUPQ==", "dev": true, "requires": { "@types/node": "*" @@ -3002,19 +3111,29 @@ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, + "@types/reach__router": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.2.6.tgz", + "integrity": "sha512-Oh5DAVr/L2svBvubw6QEFpXGu295Y406BPs4i9t1n2pp7M+q3pmCmhzb9oZV5wncR41KCD3NHl1Yhi7uKnTPsA==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, "@types/react": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.1.tgz", - "integrity": "sha512-jGM2x8F7m7/r+81N/BOaUKVwbC5Cdw6ExlWEUpr77XPwVeNvAppnPEnMMLMfxRDYL8FPEX8MHjwtD2NQMJ0yyQ==", + "version": "16.9.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz", + "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==", "requires": { "@types/prop-types": "*", "csstype": "^2.2.0" } }, "@types/react-dom": { - "version": "16.8.5", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.5.tgz", - "integrity": "sha512-idCEjROZ2cqh29+trmTmZhsBAUNQuYrF92JHKzZ5+aiFM1mlSk3bb23CK7HhYuOY75Apgap5y2jTyHzaM2AJGA==", + "version": "16.9.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.4.tgz", + "integrity": "sha512-fya9xteU/n90tda0s+FtN5Ym4tbgxpq/hb/Af24dvs6uYnYn+fspaxw5USlw0R8apDNwxsqumdRoCoKitckQqw==", "dev": true, "requires": { "@types/react": "*" @@ -3030,9 +3149,9 @@ } }, "@types/react-helmet": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-5.0.9.tgz", - "integrity": "sha512-0UVaMQk/Xvq6rFaGyepSBnRApy5RE+YH0XAXlbOBhtez5D9y1/jxKaKODofPzNnJLoLQ+sATTsWQIvrw1Dtiag==", + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-5.0.14.tgz", + "integrity": "sha512-Q73FFg7+LjblfSQUNbnjrwy2T1avBP8yevEgNrkDjyz1rBbnXkuOQcEV7I5wvmAic9FLUk0CnkLieEDej84Zkw==", "dev": true, "requires": { "@types/react": "*" @@ -3048,9 +3167,9 @@ } }, "@types/react-router": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.0.3.tgz", - "integrity": "sha512-j2Gge5cvxca+5lK9wxovmGPgpVJMwjyu5lTA/Cd6fLGoPq7FXcUE1jFkEdxeyqGGz8VfHYSHCn5Lcn24BzaNKA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.2.tgz", + "integrity": "sha512-euC3SiwDg3NcjFdNmFL8uVuAFTpZJm0WMFUw+4eXMUnxa7M9RGFEG0szt0z+/Zgk4G2k9JBFhaEnY64RBiFmuw==", "dev": true, "requires": { "@types/history": "*", @@ -3058,9 +3177,9 @@ } }, "@types/react-router-dom": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-4.3.4.tgz", - "integrity": "sha512-xrwaWHpnxKk/TTRe7pmoGy3E4SyF/ojFqNfFJacw7OLdfLXRvGfk4r/XePVaZNVfeJzL8fcnNilPN7xOdJ/vGw==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-4.3.5.tgz", + "integrity": "sha512-eFajSUASYbPHg2BDM1G8Btx+YqGgvROPIg6sBhl3O4kbDdYXdFdfrgQFf/pcBuQVObjfT9AL/dd15jilR5DIEA==", "dev": true, "requires": { "@types/history": "*", @@ -3069,52 +3188,110 @@ } }, "@types/react-sortable-hoc": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@types/react-sortable-hoc/-/react-sortable-hoc-0.6.5.tgz", - "integrity": "sha512-0Ms36xuds/pByIQFobwlDGPaUPSF6jOZUhOqf/0SaX/ZC0z9a/vwwWigEJomTvlshyjlKwB6JXV9TK+8keXq7w==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@types/react-sortable-hoc/-/react-sortable-hoc-0.6.6.tgz", + "integrity": "sha512-fo5hG+Y3Hgvl8m0B+PSLRgicTLc5ujfn7Y5NSpuVAhPa2jcmNQSIWUZvZGtqvNaOuC2ogVUdFVtRkmVFQ/4u6Q==", "dev": true, "requires": { "@types/react": "*" } }, "@types/react-sortable-tree": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@types/react-sortable-tree/-/react-sortable-tree-0.3.8.tgz", - "integrity": "sha512-etm1Mdd/bNLP62qIzDXbqevyN6A2+cPSeijV5YHtmePj/Qh9lghdqRL3X78gPTUMADqauZdhyJOaIAK6kDs2oA==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@types/react-sortable-tree/-/react-sortable-tree-0.3.11.tgz", + "integrity": "sha512-NX5XJ33xAfWWXwCjC2kkE6oVTQC/YTeKwyJs26wkN9ISIGhkC5ZQGuL6mVxpjcDkZXVYMUsaDyXyzvUzYdyi9A==", "dev": true, "requires": { "@types/react": "*", "@types/react-virtualized": "*", - "react-dnd": "5 || 6 || 7" + "react-dnd": "^9.3.1" + }, + "dependencies": { + "dnd-core": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-9.4.0.tgz", + "integrity": "sha512-Kg+8VwU8s7TgdR/BUYGUHrvFiS+5ePMZ0Q0XD7p+cFVJvgKqykBaeQDuaziuauFMPm8QxtnUy8Pncey9flXW3Q==", + "dev": true, + "requires": { + "@types/asap": "^2.0.0", + "@types/invariant": "^2.2.30", + "asap": "^2.0.6", + "invariant": "^2.2.4", + "redux": "^4.0.4" + } + }, + "react-dnd": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-9.4.0.tgz", + "integrity": "sha512-jnLF8qKowCKTqSddfCiLx5+sb+HxO1qgdiAgbBeL8yuo5tRYNtKxZYn7+wVwNoyZuWEuM1Gw/Wsdhr+yb2RELQ==", + "dev": true, + "requires": { + "@types/hoist-non-react-statics": "^3.3.1", + "@types/shallowequal": "^1.1.1", + "dnd-core": "^9.4.0", + "hoist-non-react-statics": "^3.3.0", + "shallowequal": "^1.1.0" + } + } + } + }, + "@types/react-syntax-highlighter": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-10.1.0.tgz", + "integrity": "sha512-dF49hC4FZp1dIKyzacOrHvqMUe8U2IXyQCQXOcT1e6n64gLBp+xM6qGtPsThIT9XjiIHSg2W5Jc2V5IqekBfnA==", + "dev": true, + "requires": { + "@types/react": "*" } }, "@types/react-test-renderer": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.0.tgz", - "integrity": "sha512-bN5EyjtuTY35xX7N5j0KP1vg5MpUXHpFTX6tGsqkNOthjNvet4VQOYRxFh+NT5cDSJrATmAFK9NLeYZ4mp/o0Q==", + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.1.tgz", + "integrity": "sha512-nCXQokZN1jp+QkoDNmDZwoWpKY8HDczqevIDO4Uv9/s9rbGPbSpy8Uaxa5ixHKkcm/Wt0Y9C3wCxZivh4Al+rQ==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-textarea-autosize": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.5.tgz", + "integrity": "sha512-PiDL83kPMTolyZAWW3lyzO6ktooTb9tFTntVy7CA83/qFLWKLJ5bLeRboy6J6j3b1e8h2Eec6gBTEOOJRjV14A==", "dev": true, "requires": { "@types/react": "*" } }, "@types/react-transition-group": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.9.2.tgz", - "integrity": "sha512-5Fv2DQNO+GpdPZcxp2x/OQG/H19A01WlmpjVD9cKvVFmoVLOZ9LvBgSWG6pSXIU4og5fgbvGPaCV5+VGkWAEHA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.3.tgz", + "integrity": "sha512-Hk8jiuT7iLOHrcjKP/ZVSyCNXK73wJAUz60xm0mVhiRujrdiI++j4duLiL282VGxwAgxetHQFfqA29LgEeSkFA==", "requires": { "@types/react": "*" } }, "@types/react-virtualized": { - "version": "9.21.4", - "resolved": "https://registry.npmjs.org/@types/react-virtualized/-/react-virtualized-9.21.4.tgz", - "integrity": "sha512-bvyAp67FNvFIz1GPaonAx6c6Ll8Cr9mVRgUTn5HHSKw5zmqTaxB7qnIl3is+fp7xwXDNBSw191pxpy3ACtTbyw==", + "version": "9.21.5", + "resolved": "https://registry.npmjs.org/@types/react-virtualized/-/react-virtualized-9.21.5.tgz", + "integrity": "sha512-oCoGJzkW90YQkvXwvtkCBDN0TTYvaQs217TJDOh+VipzJ9iiHD/NpD0ILvB844+ewf3/4xYOI5Oj5kj5m6J/4w==", "dev": true, "requires": { "@types/prop-types": "*", "@types/react": "*" } }, + "@types/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-YesPanU1+WCigC/Aj1Mga8UCOjHIfMNHZ3zzDsUY7lI8GlKnh/Kv2QwJOQ+jNQ36Ru7IfzSedlG14hppYaN13A==", + "dev": true + }, + "@types/shallowequal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/shallowequal/-/shallowequal-1.1.1.tgz", + "integrity": "sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==", + "dev": true + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -3142,6 +3319,15 @@ "@types/webpack-env": "*" } }, + "@types/through": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.29.tgz", + "integrity": "sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/url-join": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-0.8.3.tgz", @@ -3155,15 +3341,24 @@ "dev": true }, "@types/webpack-env": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.14.0.tgz", - "integrity": "sha512-Fv+0gYJzE/czLoRKq+gnXWr4yBpPM3tO3C8pDLFwqVKlMICQUq5OsxwwFZYDaVr7+L6mgNDp16iOcJHEz3J5RQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.14.1.tgz", + "integrity": "sha512-0Ki9jAAhKDSuLDXOIMADg54Hu60SuBTEsWaJGGy5cV+SSUQ63J2a+RrYYGrErzz39fXzTibhKrAQJAb8M7PNcA==", "dev": true }, "@types/yargs": { - "version": "12.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", - "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", + "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", "dev": true }, "@types/zen-observable": { @@ -3377,9 +3572,9 @@ "dev": true }, "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz", + "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==", "dev": true }, "accepts": { @@ -3399,9 +3594,9 @@ "dev": true }, "acorn-globals": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.3.tgz", - "integrity": "sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "requires": { "acorn": "^6.0.1", @@ -3409,9 +3604,9 @@ } }, "acorn-hammerhead": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/acorn-hammerhead/-/acorn-hammerhead-0.2.0.tgz", - "integrity": "sha512-kbX1s/0ZikW0WEBY6IrooFgX3AP2D9ycTg0OhxRYLF0Tew/bDK2+8lTxFR4cDdoCZm6Ax8eVf8EV6gbTtr8EYQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/acorn-hammerhead/-/acorn-hammerhead-0.3.0.tgz", + "integrity": "sha512-Izrr9mXONhWc7q8fqUe6ijQy+KjmyQlgdWARgaCVjds+nPpoSS298FY8uSVN/to8nKVTtkJpafNUlACWxwZS5w==", "dev": true, "requires": { "@types/estree": "^0.0.39" @@ -3424,9 +3619,9 @@ "dev": true }, "address": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.0.tgz", - "integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", "dev": true }, "agent-base": { @@ -3488,9 +3683,9 @@ } }, "airbnb-prop-types": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.14.0.tgz", - "integrity": "sha512-Yb09vUkr3KP9r9NqfRuYtDYZG76wt8mhTUi2Vfzsghk+qkg01/gOc9NU8n63ZcMCLzpAdMEXyKjCHlxV62yN1A==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.15.0.tgz", + "integrity": "sha512-jUh2/hfKsRjNFC4XONQrxo/n/3GG4Tn6Hl0WlFQN5PY9OMC9loSCoAYKnZsWaP8wEfd5xcrPloK0Zg6iS1xwVA==", "dev": true, "requires": { "array.prototype.find": "^2.1.0", @@ -3502,14 +3697,13 @@ "object.entries": "^1.1.0", "prop-types": "^15.7.2", "prop-types-exact": "^1.2.0", - "react-is": "^16.8.6" + "react-is": "^16.9.0" } }, "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -3587,6 +3781,15 @@ "color-convert": "^1.9.0" } }, + "ansi-to-html": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.13.tgz", + "integrity": "sha512-Ys2/umuaTlQvP9DLkaa7UzRKF2FLrfod/hNHXS9QhXCrw7seObG6ksOGmNz3UoK+adwM8L9vQfG7mvaxfJ3Jvw==", + "dev": true, + "requires": { + "entities": "^1.1.2" + } + }, "ansicolors": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", @@ -3619,27 +3822,27 @@ } }, "apollo": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/apollo/-/apollo-2.17.2.tgz", - "integrity": "sha512-5PJ7f+jE9KB0zgHfMzcR9SHrG8WNnI0hRwvMETVyn3b61h1g39OTfXFjJX31x1dwvt6MEWnLjiTHfRgSJNcTyg==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/apollo/-/apollo-2.21.0.tgz", + "integrity": "sha512-S0PzWA6Ja3E68/LjG3D4wbOW5BiWo+PdST/TZD7n4TjRKV4eeMONEd95OSv5OzMMYaLtHSRq8xZmQEDe4l0NsA==", "requires": { - "@apollographql/apollo-tools": "0.4.0", - "@oclif/command": "1.5.16", - "@oclif/config": "1.13.2", + "@apollographql/apollo-tools": "^0.4.0", + "@oclif/command": "1.5.19", + "@oclif/config": "1.13.3", "@oclif/errors": "1.2.2", - "@oclif/plugin-autocomplete": "0.1.3", - "@oclif/plugin-help": "2.2.0", - "@oclif/plugin-not-found": "1.2.2", + "@oclif/plugin-autocomplete": "0.1.4", + "@oclif/plugin-help": "2.2.1", + "@oclif/plugin-not-found": "1.2.3", "@oclif/plugin-plugins": "1.7.8", "@oclif/plugin-warn-if-update-available": "1.7.0", - "apollo-codegen-core": "0.34.12", - "apollo-codegen-flow": "0.33.22", - "apollo-codegen-scala": "0.34.22", - "apollo-codegen-swift": "0.35.2", - "apollo-codegen-typescript": "0.34.12", - "apollo-env": "0.5.1", - "apollo-graphql": "0.3.3", - "apollo-language-server": "1.14.1", + "apollo-codegen-core": "^0.35.7", + "apollo-codegen-flow": "^0.33.32", + "apollo-codegen-scala": "^0.34.32", + "apollo-codegen-swift": "^0.35.12", + "apollo-codegen-typescript": "^0.35.7", + "apollo-env": "^0.5.1", + "apollo-graphql": "^0.3.4", + "apollo-language-server": "^1.17.0", "chalk": "2.4.2", "env-ci": "3.2.2", "gaze": "1.1.3", @@ -3648,12 +3851,12 @@ "glob": "7.1.4", "graphql": "14.0.2 - 14.2.0 || ^14.3.1", "graphql-tag": "2.10.1", - "heroku-cli-util": "8.0.11", "listr": "0.14.3", "lodash.identity": "3.0.0", "lodash.pickby": "4.6.0", "moment": "2.24.0", "strip-ansi": "5.2.0", + "table": "5.4.6", "tty": "1.0.1", "vscode-uri": "1.0.6" } @@ -3707,79 +3910,79 @@ } }, "apollo-codegen-core": { - "version": "0.34.12", - "resolved": "https://registry.npmjs.org/apollo-codegen-core/-/apollo-codegen-core-0.34.12.tgz", - "integrity": "sha512-AlpR5HyM1S2WLIfBFEOI+0ezXO0mup8BRSOqyDs1Z0LK3J4ft/gEe5JuqnAfPi/k0YKfpeXTc+rkT3p6+TyQ1A==", + "version": "0.35.7", + "resolved": "https://registry.npmjs.org/apollo-codegen-core/-/apollo-codegen-core-0.35.7.tgz", + "integrity": "sha512-Aj8bzwUnnsILaOxjPLJKpkzb4yNNQCpY21Atj0NZYGi6Zzfl9EK/PZn7BE2/4pyNpomErjd2C7X3m9bdvndTAg==", "requires": { - "@babel/generator": "7.5.5", + "@babel/generator": "7.6.4", "@babel/parser": "^7.1.3", - "@babel/types": "7.5.5", - "apollo-env": "0.5.1", - "apollo-language-server": "1.14.1", + "@babel/types": "7.6.3", + "apollo-env": "^0.5.1", + "apollo-language-server": "^1.17.0", "ast-types": "^0.13.0", "common-tags": "^1.5.1", "recast": "^0.18.0" } }, "apollo-codegen-flow": { - "version": "0.33.22", - "resolved": "https://registry.npmjs.org/apollo-codegen-flow/-/apollo-codegen-flow-0.33.22.tgz", - "integrity": "sha512-VS7DHtVEO/DtnvAmQsuI2zBH6H1np2w0vpl4ZsUmDd+kzMKr+/oTrbOj6VRs1IYvlRvugWFmfGINUDNLcCUhHQ==", + "version": "0.33.32", + "resolved": "https://registry.npmjs.org/apollo-codegen-flow/-/apollo-codegen-flow-0.33.32.tgz", + "integrity": "sha512-/DWh6/8/BKYlwPg5/kQQQU78skC3TCRxhg4rUaR0s23px/N3YiLCcqmcV6HzcMKpjNE+dIxpha+WLNMAtb4ypg==", "requires": { - "@babel/generator": "7.5.5", - "@babel/types": "7.5.5", - "apollo-codegen-core": "0.34.12", - "apollo-env": "0.5.1", + "@babel/generator": "7.6.4", + "@babel/types": "7.6.3", + "apollo-codegen-core": "^0.35.7", + "apollo-env": "^0.5.1", "change-case": "^3.0.1", "common-tags": "^1.5.1", "inflected": "^2.0.3" } }, "apollo-codegen-scala": { - "version": "0.34.22", - "resolved": "https://registry.npmjs.org/apollo-codegen-scala/-/apollo-codegen-scala-0.34.22.tgz", - "integrity": "sha512-AGknf1+Qa2975gTWLgs+pGRDtSy9Mx1zw+hoHQyJdUJ9fi2F9jZpYRU015M1GhfzTJb0vn8NSr3JUWODOTE1kw==", + "version": "0.34.32", + "resolved": "https://registry.npmjs.org/apollo-codegen-scala/-/apollo-codegen-scala-0.34.32.tgz", + "integrity": "sha512-c41a6NdEsPo/uRSY1FBbEJ2MUfM+NKlLVe3hBulc3huqaStz3PuQuOtQ5ZA0XjCwL8GhLFgC1D8TAiuDCA5+tQ==", "requires": { - "apollo-codegen-core": "0.34.12", - "apollo-env": "0.5.1", + "apollo-codegen-core": "^0.35.7", + "apollo-env": "^0.5.1", "change-case": "^3.0.1", "common-tags": "^1.5.1", "inflected": "^2.0.3" } }, "apollo-codegen-swift": { - "version": "0.35.2", - "resolved": "https://registry.npmjs.org/apollo-codegen-swift/-/apollo-codegen-swift-0.35.2.tgz", - "integrity": "sha512-wrNSObZiBPsq1YDuDQvsMFOVFZmSvMlDR2hM/1z8s5Q8fAHaYd8/HwVbbfnyNJNbQrnhyafyDEkbr1uHLNMEUg==", + "version": "0.35.12", + "resolved": "https://registry.npmjs.org/apollo-codegen-swift/-/apollo-codegen-swift-0.35.12.tgz", + "integrity": "sha512-pbeUwkLEpfr/hkCLnwmxfxroib5QFP0xz7cvORN3Hh9xxtpqfd0SdnrbXS8RpRxBN2jTbV78ubA6hDFm4B0BCA==", "requires": { - "apollo-codegen-core": "0.34.12", - "apollo-env": "0.5.1", + "apollo-codegen-core": "^0.35.7", + "apollo-env": "^0.5.1", "change-case": "^3.0.1", "common-tags": "^1.5.1", "inflected": "^2.0.3" } }, "apollo-codegen-typescript": { - "version": "0.34.12", - "resolved": "https://registry.npmjs.org/apollo-codegen-typescript/-/apollo-codegen-typescript-0.34.12.tgz", - "integrity": "sha512-GdfmQEmlbvuWK1SOpKgk/gN2nLtqV8SrDBLjf+U54QGHOqL8St0u8DR6a60/6nIy+xGrJoCDN1vVz3IPLdzaDA==", + "version": "0.35.7", + "resolved": "https://registry.npmjs.org/apollo-codegen-typescript/-/apollo-codegen-typescript-0.35.7.tgz", + "integrity": "sha512-r5MzXwWVPvkuyWfUV5kWzIsezoiDw2o459L3i07iM2JwOl7AW88/wkPsp/GrKh5q/Y2HRABg4oSqEiaQtrVazQ==", "requires": { - "@babel/generator": "7.5.5", - "@babel/types": "7.5.5", - "apollo-codegen-core": "0.34.12", - "apollo-env": "0.5.1", + "@babel/generator": "7.6.4", + "@babel/types": "7.6.3", + "apollo-codegen-core": "^0.35.7", + "apollo-env": "^0.5.1", "change-case": "^3.0.1", "common-tags": "^1.5.1", "inflected": "^2.0.3" } }, "apollo-datasource": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.6.1.tgz", - "integrity": "sha512-oy7c+9Up8PSZwJ1qTK9Idh1acDpIocvw+C0zcHg14ycvNz7qWHSwLUSaAjuQMd9SYFzB3sxfyEhyfyhIogT2+Q==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.6.3.tgz", + "integrity": "sha512-gRYyFVpJgHE2hhS+VxMeOerxXQ/QYxWG7T6QddfugJWYAG9DRCl65e2b7txcGq2NP3r+O1iCm4GNwhRBDJbd8A==", "requires": { - "apollo-server-caching": "0.5.0", - "apollo-server-env": "2.4.1" + "apollo-server-caching": "^0.5.0", + "apollo-server-env": "^2.4.3" } }, "apollo-env": { @@ -3790,39 +3993,29 @@ "core-js": "^3.0.1", "node-fetch": "^2.2.0", "sha.js": "^2.4.11" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==" - }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - } } }, "apollo-graphql": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.3.3.tgz", - "integrity": "sha512-t3CO/xIDVsCG2qOvx2MEbuu4b/6LzQjcBBwiVnxclmmFyAxYCIe7rpPlnLHSq7HyOMlCWDMozjoeWfdqYSaLqQ==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.3.4.tgz", + "integrity": "sha512-w+Az1qxePH4oQ8jvbhQBl5iEVvqcqynmU++x/M7MM5xqN1C7m1kyIzpN17gybXlTJXY4Oxej2WNURC2/hwpfYw==", "requires": { - "apollo-env": "0.5.1", + "apollo-env": "^0.5.1", "lodash.sortby": "^4.7.0" } }, "apollo-language-server": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/apollo-language-server/-/apollo-language-server-1.14.1.tgz", - "integrity": "sha512-oCycMdsG6Qm0V8lk1pwzpUQt4LK9hdusFl9pQkfWGUAGqt4KA0qbI5F4vErqCOMvqoiZ0v2jCh9tw+KOEWP9CQ==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/apollo-language-server/-/apollo-language-server-1.17.0.tgz", + "integrity": "sha512-x/CfKYl+GSFGLxLDx6d3aWLzpQssnHUdwczZxTHyU/RkQlfnNyLdZXodCmWBRpSj2Ifkuzii+uxwj4kjWG6jOA==", "requires": { - "@apollographql/apollo-tools": "0.4.0", + "@apollo/federation": "0.10.2", + "@apollographql/apollo-tools": "^0.4.0", "@apollographql/graphql-language-service-interface": "^2.0.2", "@endemolshinegroup/cosmiconfig-typescript-loader": "^1.0.0", "apollo-datasource": "^0.6.0", - "apollo-env": "0.5.1", + "apollo-env": "^0.5.1", + "apollo-graphql": "^0.3.4", "apollo-link": "^1.2.3", "apollo-link-context": "^1.0.9", "apollo-link-error": "^1.1.1", @@ -3841,81 +4034,74 @@ "moment": "^2.24.0", "vscode-languageserver": "^5.1.0", "vscode-uri": "1.0.6" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==" - } } }, "apollo-link": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.12.tgz", - "integrity": "sha512-fsgIAXPKThyMVEMWQsUN22AoQI+J/pVXcjRGAShtk97h7D8O+SPskFinCGEkxPeQpE83uKaqafB2IyWdjN+J3Q==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.13.tgz", + "integrity": "sha512-+iBMcYeevMm1JpYgwDEIDt/y0BB7VWyvlm/7x+TIPNLHCTCMgcEgDuW5kH86iQZWo0I7mNwQiTOz+/3ShPFmBw==", "requires": { "apollo-utilities": "^1.3.0", "ts-invariant": "^0.4.0", "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.19" + "zen-observable-ts": "^0.8.20" } }, "apollo-link-batch": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/apollo-link-batch/-/apollo-link-batch-1.1.13.tgz", - "integrity": "sha512-Be/kQfY1KcXuSNk0MYdbFqOv8LtLkNgJcO96ynwu6geNiO2rPUi4rn8wjbc2YRwnJ3Qjy95YRbxr+O8gfpT/vw==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/apollo-link-batch/-/apollo-link-batch-1.1.14.tgz", + "integrity": "sha512-KKQnKAVTjDzwtmLyhgTT7s64THPGGD0+4g7E9g/+XpSKURpX03clLaag7GBoiMFAI4P/BA4DtpuqcV7+9PsAfQ==", "requires": { - "apollo-link": "^1.2.12", + "apollo-link": "^1.2.13", "tslib": "^1.9.3" } }, "apollo-link-batch-http": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/apollo-link-batch-http/-/apollo-link-batch-http-1.2.12.tgz", - "integrity": "sha512-nyhogmcsVa24gpEw0vnHpquf2cANp/xMncs7F6cJzKBzDCvjp80yfhbrQSDqYocdQw4VjeDPCOoz4cqEH8r1TA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/apollo-link-batch-http/-/apollo-link-batch-http-1.2.13.tgz", + "integrity": "sha512-wOuJ7M5GO1UlfWDDEIDX1rPLuy1ZR74olwDGgwOFE/PXiJpphwGg1noNHygp96PExPOwwSzfV+5J31RDVQ3ckA==", "requires": { - "apollo-link": "^1.2.12", - "apollo-link-batch": "^1.1.13", - "apollo-link-http-common": "^0.2.14", + "apollo-link": "^1.2.13", + "apollo-link-batch": "^1.1.14", + "apollo-link-http-common": "^0.2.15", "tslib": "^1.9.3" } }, "apollo-link-context": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.18.tgz", - "integrity": "sha512-aG5cbUp1zqOHHQjAJXG7n/izeMQ6LApd/whEF5z6qZp5ATvcyfSNkCfy3KRJMMZZ3iNfVTs6jF+IUA8Zvf+zeg==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.19.tgz", + "integrity": "sha512-TUi5TyufU84hEiGkpt+5gdH5HkB3Gx46npNfoxR4of3DKBCMuItGERt36RCaryGcU/C3u2zsICU3tJ+Z9LjFoQ==", "requires": { - "apollo-link": "^1.2.12", + "apollo-link": "^1.2.13", "tslib": "^1.9.3" } }, "apollo-link-error": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.11.tgz", - "integrity": "sha512-442DNqn3CNRikDaenMMkoDmCRmkoUx/XyUMlRTZBEFdTw3FYPQLsmDO3hzzC4doY5/BHcn9/jdYh9EeLx4HPsA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.12.tgz", + "integrity": "sha512-psNmHyuy3valGikt/XHJfe0pKJnRX19tLLs6P6EHRxg+6q6JMXNVLYPaQBkL0FkwdTCB0cbFJAGRYCBviG8TDA==", "requires": { - "apollo-link": "^1.2.12", - "apollo-link-http-common": "^0.2.14", + "apollo-link": "^1.2.13", + "apollo-link-http-common": "^0.2.15", "tslib": "^1.9.3" } }, "apollo-link-http": { - "version": "1.5.15", - "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.15.tgz", - "integrity": "sha512-epZFhCKDjD7+oNTVK3P39pqWGn4LEhShAoA1Q9e2tDrBjItNfviiE33RmcLcCURDYyW5JA6SMgdODNI4Is8tvQ==", + "version": "1.5.16", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.16.tgz", + "integrity": "sha512-IA3xA/OcrOzINRZEECI6IdhRp/Twom5X5L9jMehfzEo2AXdeRwAMlH5LuvTZHgKD8V1MBnXdM6YXawXkTDSmJw==", "requires": { - "apollo-link": "^1.2.12", - "apollo-link-http-common": "^0.2.14", + "apollo-link": "^1.2.13", + "apollo-link-http-common": "^0.2.15", "tslib": "^1.9.3" } }, "apollo-link-http-common": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.14.tgz", - "integrity": "sha512-v6mRU1oN6XuX8beVIRB6OpF4q1ULhSnmy7ScnHnuo1qV6GaFmDcbdvXqxIkAV1Q8SQCo2lsv4HeqJOWhFfApOg==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.15.tgz", + "integrity": "sha512-+Heey4S2IPsPyTf8Ag3PugUupASJMW894iVps6hXbvwtg1aHSNMXUYO5VG7iRHkPzqpuzT4HMBanCTXPjtGzxg==", "requires": { - "apollo-link": "^1.2.12", + "apollo-link": "^1.2.13", "ts-invariant": "^0.4.0", "tslib": "^1.9.3" } @@ -3929,25 +4115,18 @@ } }, "apollo-server-env": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.1.tgz", - "integrity": "sha512-J4G1Q6qyb7KjjqvQdVM5HUH3QDb52VK1Rv+MWL0rHcstJx9Fh/NK0sS+nujrMfKw57NVUs2d4KuYtl/EnW/txg==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.3.tgz", + "integrity": "sha512-23R5Xo9OMYX0iyTu2/qT0EUb+AULCBriA9w8HDfMoChB8M+lFClqUkYtaTTHDfp6eoARLW8kDBhPOBavsvKAjA==", "requires": { "node-fetch": "^2.1.2", "util.promisify": "^1.0.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - } } }, "apollo-server-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.3.1.tgz", - "integrity": "sha512-errZvnh0vUQChecT7M4A/h94dnBSRL213dNxpM5ueMypaLYgnp4hiCTWIEaooo9E4yMGd1qA6WaNbLDG2+bjcg==" + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.3.4.tgz", + "integrity": "sha512-Y0PKQvkrb2Kd18d1NPlHdSqmlr8TgqJ7JQcNIfhNDgdb45CnqZlxL1abuIRhr8tiw8OhVOcFxz2KyglBi8TKdA==" }, "apollo-upload-client": { "version": "9.1.0", @@ -4042,9 +4221,9 @@ "dev": true }, "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", "dev": true }, "array-find": { @@ -4069,18 +4248,6 @@ "es-abstract": "^1.7.0" } }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -4119,24 +4286,24 @@ } }, "array.prototype.flat": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz", - "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.2.tgz", + "integrity": "sha512-VXjh7lAL4KXKF2hY4FnEW9eRW6IhdvFW1sN/JwLbmECbCgACCnBHNyP3lFiYuttr0jxRN9Bsc5+G27dMseSWqQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.10.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", "function-bind": "^1.1.1" } }, "array.prototype.flatmap": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.1.tgz", - "integrity": "sha512-i18e2APdsiezkcqDyZor78Pbfjfds3S94dG6dgIV2ZASJaUf1N0dz2tGdrmwrmlZuNUgxH+wz6Z0zYVH2c5xzQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.2.tgz", + "integrity": "sha512-ZZtPLE74KNE+0XcPv/vQmcivxN+8FhwOLvt2udHauO0aDEpsXDQrmd5HuJGpgPVyaV8HvkDPWnJ2iaem0oCKtA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.10.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", "function-bind": "^1.1.1" } }, @@ -4239,8 +4406,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, "async": { "version": "2.6.3", @@ -4290,25 +4456,25 @@ }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "version": "9.7.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.1.tgz", + "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", + "browserslist": "^4.7.2", + "caniuse-lite": "^1.0.30001006", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" + "postcss": "^7.0.21", + "postcss-value-parser": "^4.0.2" } }, "await-to-js": { @@ -4627,6 +4793,291 @@ "requires": { "babel-plugin-istanbul": "^4.1.6", "babel-preset-jest": "^23.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + } } }, "babel-loader": { @@ -4688,15 +5139,15 @@ } }, "babel-plugin-emotion": { - "version": "10.0.15", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.15.tgz", - "integrity": "sha512-E3W68Zk8EcKpRUDW2tsFKi4gsavapMRjfr2/KKgG3l7l2zZpiKk0BxB59Ul9C0w0ekv6my/ylGOk2WroaqKXPw==", + "version": "10.0.23", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.23.tgz", + "integrity": "sha512-1JiCyXU0t5S2xCbItejCduLGGcKmF3POT0Ujbexog2MI4IlRcIn/kWjkYwCUZlxpON0O5FC635yPl/3slr7cKQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", - "@emotion/hash": "0.7.2", - "@emotion/memoize": "0.7.2", - "@emotion/serialize": "^0.11.9", + "@emotion/hash": "0.7.3", + "@emotion/memoize": "0.7.3", + "@emotion/serialize": "^0.11.14", "babel-plugin-macros": "^2.0.0", "babel-plugin-syntax-jsx": "^6.18.0", "convert-source-map": "^1.5.0", @@ -4706,66 +5157,15 @@ } }, "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "@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": { @@ -4801,15 +5201,15 @@ } }, "babel-plugin-minify-dead-code-elimination": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.0.tgz", - "integrity": "sha512-XQteBGXlgEoAKc/BhO6oafUdT4LBa7ARi55mxoyhLHNuA+RlzRmeMAfc31pb/UqU01wBzRc36YqHQzopnkd/6Q==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", + "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", "dev": true, "requires": { "babel-helper-evaluate-path": "^0.5.0", "babel-helper-mark-eval-scopes": "^0.4.3", "babel-helper-remove-or-void": "^0.4.3", - "lodash.some": "^4.6.0" + "lodash": "^4.17.11" } }, "babel-plugin-minify-flip-comparisons": { @@ -4822,11 +5222,12 @@ } }, "babel-plugin-minify-guarded-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.3.tgz", - "integrity": "sha1-zHCbRFP9IbHzAod0RMifiEJ845c=", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", + "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", "dev": true, "requires": { + "babel-helper-evaluate-path": "^0.5.0", "babel-helper-flip-expressions": "^0.4.3" } }, @@ -4858,11 +5259,12 @@ "dev": true }, "babel-plugin-minify-simplify": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.0.tgz", - "integrity": "sha512-TM01J/YcKZ8XIQd1Z3nF2AdWHoDsarjtZ5fWPDksYZNsoOjQ2UO2EWm824Ym6sp127m44gPlLFiO5KFxU8pA5Q==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", + "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", "dev": true, "requires": { + "babel-helper-evaluate-path": "^0.5.0", "babel-helper-flip-expressions": "^0.4.3", "babel-helper-is-nodes-equiv": "^0.0.1", "babel-helper-to-multiple-sequence-expressions": "^0.5.0" @@ -4878,19 +5280,19 @@ } }, "babel-plugin-named-asset-import": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.3.tgz", - "integrity": "sha512-1XDRysF4894BUdMChT+2HHbtJYiO7zx5Be7U6bT8dISy7OdyETMGIAQBMPQCsY1YRf0xcubwnKKaDr5bk15JTA==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.4.tgz", + "integrity": "sha512-S6d+tEzc5Af1tKIMbsf2QirCcPdQ+mKUCY2H1nJj1DyA1ShwpsoxEOAwbWsG5gcXNV/olpvQd9vrUWRx4bnhpw==", "dev": true }, "babel-plugin-react-docgen": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-3.1.0.tgz", - "integrity": "sha512-W6xqZnZIWjZuE9IjP7XolxxgFGB5Y9GZk4cLPSWKa10MrT86q7bX4ke9jbrNhFVIRhbmzL8wE1Sn++mIWoJLbw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-3.2.0.tgz", + "integrity": "sha512-MZ3fhnJ+/tUDhWFGgWsajuLct/dD1xoprmStqrBgtt9flFLPrKIOKOfqwjXjsn6/THs5QrG5rkcDFE3TMMZDjQ==", "dev": true, "requires": { - "lodash": "^4.17.11", - "react-docgen": "^4.1.0", + "lodash": "^4.17.15", + "react-docgen": "^4.1.1", "recast": "^0.14.7" }, "dependencies": { @@ -4921,16 +5323,18 @@ } }, "babel-plugin-react-intl": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/babel-plugin-react-intl/-/babel-plugin-react-intl-4.1.12.tgz", - "integrity": "sha512-dCw7LjfDCS03ugW0Oz1XG8J/OgAnEDsKqcyfzlDb4JL6aLiYz87XvM9sIdbMAdPZXaHLhj9GyK8CueyMIm66NQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-intl/-/babel-plugin-react-intl-4.3.0.tgz", + "integrity": "sha512-X4R9ZrQ6LR6EaNqk7DCA39GamD8Deo1XOeQGEbsswV741AgQ8HfuXtQ7FKCiDnfWp2nhVVio+BAIrhwS5JxHdQ==", "dev": true, "requires": { - "@babel/core": "^7.4.5", + "@babel/core": "^7.6.2", "@babel/helper-plugin-utils": "^7.0.0", "@types/babel__core": "^7.1.2", + "@types/schema-utils": "^1.0.0", "fs-extra": "^8.0.1", - "intl-messageformat-parser": "^3.0.7" + "intl-messageformat-parser": "^3.2.2", + "schema-utils": "^2.2.0" }, "dependencies": { "fs-extra": { @@ -4943,6 +5347,16 @@ "jsonfile": "^4.0.0", "universalify": "^0.1.0" } + }, + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } } } }, @@ -5498,9 +5912,9 @@ }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" }, "regenerator-runtime": { "version": "0.10.5", @@ -5579,21 +5993,21 @@ } }, "babel-preset-minify": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.0.tgz", - "integrity": "sha512-xj1s9Mon+RFubH569vrGCayA9Fm2GMsCgDRm1Jb8SgctOB7KFcrVc2o8K3YHUyMz+SWP8aea75BoS8YfsXXuiA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", + "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", "dev": true, "requires": { "babel-plugin-minify-builtins": "^0.5.0", "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.0", + "babel-plugin-minify-dead-code-elimination": "^0.5.1", "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.3", + "babel-plugin-minify-guarded-expressions": "^0.4.4", "babel-plugin-minify-infinity": "^0.4.3", "babel-plugin-minify-mangle-names": "^0.5.0", "babel-plugin-minify-numeric-literals": "^0.4.3", "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.0", + "babel-plugin-minify-simplify": "^0.5.1", "babel-plugin-minify-type-constructors": "^0.4.3", "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", "babel-plugin-transform-member-expression-literals": "^6.9.4", @@ -5606,31 +6020,192 @@ "babel-plugin-transform-remove-undefined": "^0.5.0", "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash.isplainobject": "^4.0.6" + "lodash": "^4.17.11" } }, "babel-preset-react-app": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.0.1.tgz", - "integrity": "sha512-v7MeY+QxdBhM9oU5uOQCIHLsErYkEbbjctXsb10II+KAnttbe0rvprvP785dRxfa9dI4ZbsGXsRU07Qdi5BtOw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.0.2.tgz", + "integrity": "sha512-aXD+CTH8Chn8sNJr4tO/trWKqe5sSE4hdO76j9fhVezJSzmpWYWUSc5JoPmdSxADwef5kQFNGKXd433vvkd2VQ==", "dev": true, "requires": { - "@babel/core": "7.5.5", + "@babel/core": "7.6.0", "@babel/plugin-proposal-class-properties": "7.5.5", - "@babel/plugin-proposal-decorators": "7.4.4", + "@babel/plugin-proposal-decorators": "7.6.0", "@babel/plugin-proposal-object-rest-spread": "7.5.5", "@babel/plugin-syntax-dynamic-import": "7.2.0", - "@babel/plugin-transform-destructuring": "7.5.0", + "@babel/plugin-transform-destructuring": "7.6.0", "@babel/plugin-transform-flow-strip-types": "7.4.4", "@babel/plugin-transform-react-display-name": "7.2.0", - "@babel/plugin-transform-runtime": "7.5.5", - "@babel/preset-env": "7.5.5", + "@babel/plugin-transform-runtime": "7.6.0", + "@babel/preset-env": "7.6.0", "@babel/preset-react": "7.0.0", - "@babel/preset-typescript": "7.3.3", - "@babel/runtime": "7.5.5", + "@babel/preset-typescript": "7.6.0", + "@babel/runtime": "7.6.0", "babel-plugin-dynamic-import-node": "2.3.0", "babel-plugin-macros": "2.6.1", "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/core": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.0.tgz", + "integrity": "sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.0", + "@babel/helpers": "^7.6.0", + "@babel/parser": "^7.6.0", + "@babel/template": "^7.6.0", + "@babel/traverse": "^7.6.0", + "@babel/types": "^7.6.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz", + "integrity": "sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.5.5", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.6.0.tgz", + "integrity": "sha512-ZSyYw9trQI50sES6YxREXKu+4b7MAg6Qx2cvyDDYjP2Hpzd3FleOUwC9cqn1+za8d0A2ZU8SHujxFao956efUg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.6.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-decorators": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", + "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz", + "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0" + } + }, + "@babel/preset-env": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.0.tgz", + "integrity": "sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-dynamic-import": "^7.5.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.5.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.6.0", + "@babel/plugin-transform-classes": "^7.5.5", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.5.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.6.0", + "@babel/plugin-transform-modules-systemjs": "^7.5.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.0", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.5.5", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.6.0", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + } + }, + "@babel/preset-react": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", + "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0" + } + }, + "@babel/preset-typescript": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz", + "integrity": "sha512-4xKw3tTcCm0qApyT6PqM9qniseCE79xGHiUnNdKGdxNsGUc2X7WwZybqIpnTmoukg3nhPceI5KPNzNqLNeIJww==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.6.0" + } + }, + "@babel/runtime": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.0.tgz", + "integrity": "sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + } } }, "babel-preset-stage-2": { @@ -5701,9 +6276,9 @@ } }, "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", "dev": true }, "debug": { @@ -5754,9 +6329,9 @@ }, "dependencies": { "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" } } }, @@ -5911,6 +6486,12 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, + "batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -5939,9 +6520,9 @@ "dev": true }, "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", "dev": true }, "bn.js": { @@ -5982,6 +6563,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true } } }, @@ -6201,14 +6788,14 @@ } }, "browserslist": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", - "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" } }, "bs-logger": { @@ -6221,9 +6808,9 @@ } }, "bser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", - "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "requires": { "node-int64": "^0.4.0" @@ -6238,6 +6825,14 @@ "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, "buffer-from": { @@ -6281,9 +6876,9 @@ "dev": true }, "cacache": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz", - "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -6320,32 +6915,6 @@ "unset-value": "^1.0.0" } }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - } - } - }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -6417,9 +6986,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "version": "1.0.30001008", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz", + "integrity": "sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw==", "dev": true }, "capture-exit": { @@ -6501,11 +7070,6 @@ "upper-case-first": "^1.1.0" } }, - "change-emitter": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", - "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" - }, "character-entities": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz", @@ -6559,19 +7123,13 @@ "domelementtype": "^1.3.0", "entities": "^1.1.1" } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true } } }, "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -6589,9 +7147,9 @@ } }, "chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", "dev": true }, "chrome-emulated-devices-list": { @@ -6843,76 +7401,36 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } } } @@ -6947,14 +7465,6 @@ } } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, "clsx": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", @@ -6963,7 +7473,8 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, "coa": { "version": "2.0.2", @@ -6982,9 +7493,9 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecov": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.5.0.tgz", - "integrity": "sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.6.1.tgz", + "integrity": "sha512-IUJB6WG47nWK7o50etF8jBadxdMw7DmoQg05yIljstXFBGB6clOZsIj6iD4P82T2YaIU3qq+FFu8K9pxgkCJDQ==", "dev": true, "requires": { "argv": "^0.0.2", @@ -7024,9 +7535,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, "optional": true }, @@ -7046,9 +7557,9 @@ "dev": true }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "common-tags": { @@ -7145,13 +7656,10 @@ "dev": true }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "console-control-strings": { "version": "1.1.0", @@ -7196,10 +7704,15 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-css-length": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-2.0.1.tgz", + "integrity": "sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg==" + }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -7255,18 +7768,17 @@ } }, "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", - "dev": true + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==" }, "core-js-compat": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.0.tgz", - "integrity": "sha512-vQve8j3tGPPqIkrsK442hbVwDIGXcngLPnislJaCNJIG1aBWPD0IqRhpxEwjtUOYpzLap8xA7CoGlJBT1ZkcDA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.0.tgz", + "integrity": "sha512-pgQUcgT2+v9/yxHgMynYjNj7nmxLRXv3UC39rjCjDwpe63ev2rioQTju1PKLYUBbPCQQvZNWvQC8tBJd65q11g==", "dev": true, "requires": { - "browserslist": "^4.6.6", + "browserslist": "^4.7.2", "semver": "^6.3.0" }, "dependencies": { @@ -7279,15 +7791,16 @@ } }, "core-js-pure": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.2.0.tgz", - "integrity": "sha512-YLi4lHc2Vg5YZxrEzjwutMhA5lpxq65MHH50Y9P6rp2+wKRyduqANI2sqwS35kGLWJhAPfHgpZwNMRWRK0RoRw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.4.0.tgz", + "integrity": "sha512-d49s6GiW3ePYM8vCglfLLo6bueYx+Sff6MYtjohTMSB0AoxVfABXMUSmYHtKAEvW77T9JTKMyHrhE20nZ8gYDA==", "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "corejs-upgrade-webpack-plugin": { "version": "2.2.0", @@ -7374,6 +7887,58 @@ "gud": "^1.0.0" } }, + "cross-env": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", + "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", + "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.1.tgz", + "integrity": "sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -7435,29 +8000,34 @@ } }, "css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.2.0.tgz", + "integrity": "sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ==", "dev": true, "requires": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", + "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.14", + "postcss": "^7.0.17", "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", + "postcss-modules-local-by-default": "^3.0.2", "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.0", + "schema-utils": "^2.0.0" }, "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } } } }, @@ -7480,20 +8050,29 @@ "dev": true }, "css-tree": { - "version": "1.0.0-alpha.33", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.33.tgz", - "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==", + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "dev": true, "requires": { "mdn-data": "2.0.4", - "source-map": "^0.5.3" + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "css-vendor": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz", - "integrity": "sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo=", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.7.tgz", + "integrity": "sha512-VS9Rjt79+p7M0WkPqcAza4Yq1ZHrsHrwf7hPL/bjQB+c1lwmAI+1FXxYTYt818D/50fFVflw0XKleiBN5RITkg==", "requires": { + "@babel/runtime": "^7.6.2", "is-in-browser": "^1.0.2" } }, @@ -7510,30 +8089,12 @@ "dev": true }, "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.29" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "dev": true, - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - }, - "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", - "dev": true - } + "css-tree": "1.0.0-alpha.37" } }, "cssom": { @@ -7552,9 +8113,9 @@ } }, "csstype": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.6.tgz", - "integrity": "sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", + "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==" }, "cuint": { "version": "0.2.2", @@ -7563,9 +8124,9 @@ "dev": true }, "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "dashdash": { @@ -7589,9 +8150,9 @@ }, "dependencies": { "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -7606,17 +8167,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debounce": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", - "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -7634,15 +8184,8 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true }, "decorate-component-with-props": { "version": "1.1.0", @@ -7650,9 +8193,9 @@ "integrity": "sha512-tTYQojixN64yK3/WBODMfvss/zbmyUx9HQXhzSxZiSiofeekVeRyyuToy9BCiTMrVEIKWxTcla2t3y5qdaUF7Q==" }, "dedent": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.4.0.tgz", - "integrity": "sha1-h979BAvUwVldljKC7FfzwqhSVkI=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", "dev": true }, "deep-eql": { @@ -7665,10 +8208,18 @@ } }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", + "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "dev": true, + "requires": { + "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": { "version": "0.4.2", @@ -7688,11 +8239,6 @@ "integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==", "dev": true }, - "deepmerge": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", - "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" - }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -7762,39 +8308,157 @@ } }, "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", "dev": true, "requires": { - "@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" + "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" }, "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", + "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", + "dev": true, + "requires": { + "@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" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "requires": { + "@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" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" } } } @@ -7900,9 +8564,9 @@ "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==" }, "diff-sequences": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", - "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", "dev": true }, "diffie-hellman": { @@ -7986,11 +8650,12 @@ } }, "dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", + "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", "requires": { - "@babel/runtime": "^7.1.2" + "@babel/runtime": "^7.6.3", + "csstype": "^2.6.7" } }, "dom-serializer": { @@ -8008,6 +8673,12 @@ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true } } }, @@ -8066,9 +8737,9 @@ } }, "dotenv": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.0.0.tgz", - "integrity": "sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg==" + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" }, "dotenv-defaults": { "version": "1.0.2", @@ -8130,25 +8801,25 @@ } }, "draftail": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/draftail/-/draftail-1.2.1.tgz", - "integrity": "sha512-YL0QjfUxneOzwGaO1t66H47cFN82zGjrvw+0ERHpFGtUPjfrD7uCKlfXhPg1mOJgFFxuc44p7M5fUlrS1asBYg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/draftail/-/draftail-1.3.0.tgz", + "integrity": "sha512-LOG4YgrJX4BMYJX5XrKGBegH9f/M21I8nFt+7MrPAB0ABXpURZhUVzVfWVa6hEdw6yOl2Z1T4H2G4OFTouK6Bg==", "requires": { "decorate-component-with-props": "^1.0.2", "draft-js-plugins-editor": "^2.1.1", - "draftjs-conductor": "^0.4.1", + "draftjs-conductor": "^1.0.0", "draftjs-filters": "^2.2.3" } }, "draftjs-conductor": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/draftjs-conductor/-/draftjs-conductor-0.4.5.tgz", - "integrity": "sha512-+sTQxDknS86aBIkii8EXHuyVoOi6L3EVXIf3LvXgVWfEs/v7KO4E2jyNg5t2lWDpmNzzurY9uIF7t1xkDzAjzA==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/draftjs-conductor/-/draftjs-conductor-1.0.0.tgz", + "integrity": "sha512-pz5MIpS2aH6fgo2jrHo0Rt+rxqRgqnbrxEaaTiFLW4Dg/0U0eZhyxZPt6pByoS20Q7jCYOpolGpszKodNVi+TQ==" }, "draftjs-filters": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/draftjs-filters/-/draftjs-filters-2.2.3.tgz", - "integrity": "sha512-xbpXgjTtFzaMp9P9xlaqmf3NpP4yYM3OT3HbodUQpI4t2kO9ltJTo0+3H+1PlsUPKoc7jPthiE0MYN/VMrsuNw==" + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/draftjs-filters/-/draftjs-filters-2.2.4.tgz", + "integrity": "sha512-DWjIxCFnoysGcl9//aATv4C+zT9BL830+3TWIXQqsthVA52ETiHxMJ0S+R5nUAROVg6tjq7OsgNl19F8U+qxgw==" }, "draftjs-to-html": { "version": "0.8.4", @@ -8161,11 +8832,6 @@ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -8195,15 +8861,15 @@ "dev": true }, "ejs": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", - "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz", + "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==", "dev": true }, "electron-to-chromium": { - "version": "1.3.224", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.224.tgz", - "integrity": "sha512-vTH9UcMbi53x/pZKQrEcD83obE8agqQwUIx/G03/mpE1vzLm0KA3cHwuZXCysvxI1gXfNjV7Nu7Vjtp89kDzmg==", + "version": "1.3.305", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.305.tgz", + "integrity": "sha512-jBEhRZ3eeJWf3eAnGYB1vDy09uBQpZWshC5fxiiIRofA9L3vkpa3SxsXleVS2MvuYir15oTVxzWPsOwj7KBzUw==", "dev": true }, "elegant-spinner": { @@ -8211,10 +8877,19 @@ "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" }, + "element-resize-detector": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.1.15.tgz", + "integrity": "sha512-16/5avDegXlUxytGgaumhjyQoM6hpp5j3+L79sYq5hlXfTNRy5WMMuTVWkZU3egp/CokCmTmvf18P3KeB57Iog==", + "dev": true, + "requires": { + "batch-processor": "^1.0.0" + } + }, "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -8244,13 +8919,13 @@ "dev": true }, "emotion-theming": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.0.14.tgz", - "integrity": "sha512-zMGhPSYz48AAR6DYjQVaZHeO42cYKPq4VyB1XjxzgR62/NmO99679fx8qDDB1QZVYGkRWZtsOe+zJE/e30XdbA==", + "version": "10.0.19", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.0.19.tgz", + "integrity": "sha512-dQRBPLAAQ6eA8JKhkLCIWC8fdjPbiNC1zNTdFF292h9amhZXofcNGUP7axHoHX4XesqQESYwZrXp53OPInMrKw==", "dev": true, "requires": { - "@babel/runtime": "^7.4.3", - "@emotion/weak-memoize": "0.2.3", + "@babel/runtime": "^7.5.5", + "@emotion/weak-memoize": "0.2.4", "hoist-non-react-statics": "^3.3.0" } }, @@ -8269,9 +8944,9 @@ } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { "once": "^1.4.0" } @@ -8304,20 +8979,32 @@ } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, "env-ci": { @@ -8359,42 +9046,53 @@ } }, "enzyme-adapter-react-16": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.14.0.tgz", - "integrity": "sha512-7PcOF7pb4hJUvjY7oAuPGpq3BmlCig3kxXGi2kFx0YzJHppqX1K8IIV9skT1IirxXlu8W7bneKi+oQ10QRnhcA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.1.tgz", + "integrity": "sha512-yMPxrP3vjJP+4wL/qqfkT6JAIctcwKF+zXO6utlGPgUJT2l4tzrdjMDWGd/Pp1BjHBcljhN24OzNEGRteibJhA==", "dev": true, "requires": { - "enzyme-adapter-utils": "^1.12.0", + "enzyme-adapter-utils": "^1.12.1", + "enzyme-shallow-equal": "^1.0.0", "has": "^1.0.3", "object.assign": "^4.1.0", "object.values": "^1.1.0", "prop-types": "^15.7.2", - "react-is": "^16.8.6", + "react-is": "^16.10.2", "react-test-renderer": "^16.0.0-0", "semver": "^5.7.0" } }, "enzyme-adapter-utils": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz", - "integrity": "sha512-wkZvE0VxcFx/8ZsBw0iAbk3gR1d9hK447ebnSYBf95+r32ezBq+XDSAvRErkc4LZosgH8J7et7H7/7CtUuQfBA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.1.tgz", + "integrity": "sha512-KWiHzSjZaLEoDCOxY8Z1RAbUResbqKN5bZvenPbfKtWorJFVETUw754ebkuCQ3JKm0adx1kF8JaiR+PHPiP47g==", "dev": true, "requires": { - "airbnb-prop-types": "^2.13.2", - "function.prototype.name": "^1.1.0", + "airbnb-prop-types": "^2.15.0", + "function.prototype.name": "^1.1.1", "object.assign": "^4.1.0", - "object.fromentries": "^2.0.0", + "object.fromentries": "^2.0.1", "prop-types": "^15.7.2", - "semver": "^5.6.0" + "semver": "^5.7.0" + } + }, + "enzyme-shallow-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.0.tgz", + "integrity": "sha512-VUf+q5o1EIv2ZaloNQQtWCJM9gpeux6vudGVH6vLmfPXFLRuxl5+Aq3U260wof9nn0b0i+P5OEUXm1vnxkRpXQ==", + "dev": true, + "requires": { + "has": "^1.0.3", + "object-is": "^1.0.1" } }, "enzyme-to-json": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.4.0.tgz", - "integrity": "sha512-gbu8P8PMAtb+qtKuGVRdZIYxWHC03q1dGS3EKRmUzmTDIracu3o6cQ0d4xI2YWojbelbxjYOsmqM5EgAL0WgIA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.4.3.tgz", + "integrity": "sha512-jqNEZlHqLdz7OTpXSzzghArSS3vigj67IU/fWkPyl1c0TCj9P5s6Ze0kRkYZWNEoCqCR79xlQbigYlMx5erh8A==", "dev": true, "requires": { - "lodash": "^4.17.12" + "lodash": "^4.17.15" } }, "errno": { @@ -8424,16 +9122,20 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", "requires": { "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", "has": "^1.0.3", + "has-symbols": "^1.0.0", "is-callable": "^1.1.4", "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "es-to-primitive": { @@ -8485,9 +9187,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -8523,9 +9225,9 @@ } }, "esotope-hammerhead": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/esotope-hammerhead/-/esotope-hammerhead-0.3.0.tgz", - "integrity": "sha512-qI6ZlQaf4yBPZhHETT24vk93INsNj++mRKBHOpOtkx7F/N7UvuTD8neeTbcbRQUntGksvs8/v63uGfDCdgt5YQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/esotope-hammerhead/-/esotope-hammerhead-0.4.0.tgz", + "integrity": "sha512-TAmc7OhAiWeovbzE9GGenU2vwuB9tzKHlW0hTH4rZsLmCNEKo8wIZ9qbEnw8nyXeNTjCmBYOYXUyaN+eZht7Tg==", "dev": true, "requires": { "@types/estree": "^0.0.39" @@ -8546,9 +9248,9 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { @@ -8563,9 +9265,9 @@ "dev": true }, "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, "events": { @@ -8613,6 +9315,11 @@ "strip-eof": "^1.0.0" }, "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -8623,11 +9330,6 @@ } } }, - "exenv": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", - "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" - }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -8720,6 +9422,12 @@ "kind-of": "^3.0.2" } }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", @@ -8750,17 +9458,17 @@ } }, "expect": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", - "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "ansi-styles": "^3.2.0", - "jest-get-type": "^24.8.0", - "jest-matcher-utils": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-regex-util": "^24.3.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": { @@ -8822,6 +9530,12 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -8957,8 +9671,7 @@ "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, "fast-glob": { "version": "2.2.7", @@ -9199,6 +9912,25 @@ "pkg-dir": "^4.1.0" }, "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, "make-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", @@ -9208,6 +9940,21 @@ "semver": "^6.0.0" } }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -9232,13 +9979,12 @@ "dev": true }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^3.0.0" } }, "find-with-regex": { @@ -9299,18 +10045,18 @@ } }, "focus-lock": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.6.5.tgz", - "integrity": "sha512-i/mVBOoa9o+tl+u9owOJUF8k8L85odZNIsctB+JAK2HFT8jckiBwmk+3uydlm6FN8czgnkIwQtBv6yyAbrzXjw==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.6.6.tgz", + "integrity": "sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw==", "dev": true }, "follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", + "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", "dev": true, "requires": { - "debug": "^3.2.6" + "debug": "^3.0.0" }, "dependencies": { "debug": { @@ -9401,6 +10147,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -9952,9 +10699,9 @@ } }, "functions-have-names": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.1.1.tgz", - "integrity": "sha512-U0kNHUoxwPNPWOJaMG7Z00d4a/qZVrFtzWJRaK8V9goaVOCXBSQSJpt3MYGNtkScKEBKovxLjnNdC9MlXwo5Pw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.0.tgz", + "integrity": "sha512-zKXyzksTeaCSw5wIX79iCA40YAa6CJMJgNg9wdkU/ERBrIdPSimPICYiLp65lRbSBqtiHql/HZfS2DyI/AH6tQ==", "dev": true }, "fuse.js": { @@ -10030,9 +10777,9 @@ } }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-func-name": { @@ -10048,9 +10795,9 @@ "dev": true }, "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "dev": true }, "get-stream": { @@ -10284,46 +11031,10 @@ "delegate": "^3.1.2" } }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, "graceful-fs": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz", - "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "graphlib": { "version": "2.1.7", @@ -10335,9 +11046,9 @@ } }, "graphql": { - "version": "14.4.2", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.4.2.tgz", - "integrity": "sha512-6uQadiRgnpnSS56hdZUSvFrVcQ6OF9y6wkxJfKquFtHlnl7+KSuWwSJsdwiK1vybm1HgcdbpGkCpvhvsVQ0UZQ==", + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.5.8.tgz", + "integrity": "sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg==", "requires": { "iterall": "^1.2.2" } @@ -10375,9 +11086,9 @@ "dev": true }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -10444,24 +11155,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -10553,52 +11251,6 @@ "upper-case": "^1.1.3" } }, - "heroku-cli-util": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/heroku-cli-util/-/heroku-cli-util-8.0.11.tgz", - "integrity": "sha512-cApMBbrfAhFTKs/loXm7zkWRC4kOH1VHoqU5WNgzs2TGKJqQI3QYvxITKE+8iC1Gb1xAy0BCqdGgzx8t7EoeWQ==", - "requires": { - "@heroku-cli/color": "^1.1.3", - "ansi-escapes": "^3.1.0", - "ansi-styles": "^3.2.1", - "cardinal": "^2.0.1", - "chalk": "^2.4.1", - "co": "^4.6.0", - "got": "^8.3.1", - "heroku-client": "^3.0.7", - "lodash": "^4.17.10", - "netrc-parser": "^3.1.4", - "opn": "^3.0.3", - "strip-ansi": "^4.0.0", - "supports-color": "^5.4.0", - "tslib": "^1.9.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "heroku-client": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/heroku-client/-/heroku-client-3.0.7.tgz", - "integrity": "sha512-wL8d3ufIWGzL8B2U7oPzN+SdcMt6LPqA/x4nb9pDG45IXpr8KO+N4dvX4Vycgn0WrJVDfQnQ1juctJsUwuoeww==", - "requires": { - "is-retry-allowed": "^1.0.0", - "tunnel-agent": "^0.6.0" - } - }, "highlight-es": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", @@ -10625,16 +11277,16 @@ "dev": true }, "history": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/history/-/history-4.9.0.tgz", - "integrity": "sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", "requires": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", - "resolve-pathname": "^2.2.0", + "resolve-pathname": "^3.0.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0", - "value-equal": "^0.4.0" + "value-equal": "^1.0.1" } }, "hmac-drbg": { @@ -10676,13 +11328,10 @@ } }, "hosted-git-info": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.2.tgz", - "integrity": "sha512-CyjlXII6LMsPMyUzxpTt8fzh5QwzGqPmQXgY/Jyf4Zfp27t/FvfhwoE/8laaMUcMy816CkWF20I7NeQhwwY88w==", - "dev": true, - "requires": { - "lru-cache": "^5.1.1" - } + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true }, "hpack.js": { "version": "2.1.6", @@ -10703,14 +11352,6 @@ "dev": true, "requires": { "array-filter": "^1.0.0" - }, - "dependencies": { - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - } } }, "html-encoding-sniffer": { @@ -10843,12 +11484,6 @@ "readable-stream": "^3.1.1" }, "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, "readable-stream": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", @@ -10862,11 +11497,6 @@ } } }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" - }, "http-call": { "version": "5.2.5", "resolved": "https://registry.npmjs.org/http-call/-/http-call-5.2.5.tgz", @@ -10878,13 +11508,6 @@ "is-stream": "^2.0.0", "parse-json": "^4.0.0", "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - } } }, "http-deceiver": { @@ -10921,12 +11544,12 @@ "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -10971,9 +11594,9 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", - "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { "agent-base": "^4.3.0", @@ -10992,28 +11615,68 @@ } }, "husky": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.8.tgz", - "integrity": "sha512-HFOsgcyrX3qe/rBuqyTt+P4Gxn5P0seJmr215LAZ/vnwK3jWB3r0ck7swbzGRUbufCf9w/lgHPVbF/YXQALgfQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.9.tgz", + "integrity": "sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg==", "dev": true, "requires": { "chalk": "^2.4.2", + "ci-info": "^2.0.0", "cosmiconfig": "^5.2.1", "execa": "^1.0.0", "get-stdin": "^7.0.0", - "is-ci": "^2.0.0", "opencollective-postinstall": "^2.0.2", "pkg-dir": "^4.2.0", "please-upgrade-node": "^3.2.0", - "read-pkg": "^5.1.1", + "read-pkg": "^5.2.0", "run-node": "^1.0.0", "slash": "^3.0.0" }, "dependencies": { - "get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "pkg-dir": { @@ -11025,11 +11688,29 @@ "find-up": "^4.0.0" } }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true } } }, @@ -11051,12 +11732,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "icss-utils": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", @@ -11085,9 +11760,9 @@ "dev": true }, "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", "dev": true, "requires": { "minimatch": "^3.0.4" @@ -11153,14 +11828,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indefinite-observable": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-1.0.2.tgz", - "integrity": "sha512-Mps0898zEduHyPhb7UCgNmfzlqNZknVmaFz5qzr0mm04YQ5FGLhAyK/dJ+NaRxGyR6juQXIxh5Ev0xx+qq0nYA==", - "requires": { - "symbol-observable": "1.2.0" - } - }, "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", @@ -11204,106 +11871,34 @@ "dev": true }, "inquirer": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz", - "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { - "ansi-escapes": "^4.2.1", + "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", + "cli-cursor": "^2.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", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", - "string-width": "^4.1.0", + "string-width": "^2.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { - "ansi-escapes": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", - "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", - "dev": true, - "requires": { - "type-fest": "^0.5.2" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "figures": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", - "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" - } - }, - "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", - "dev": true } } }, @@ -11323,37 +11918,28 @@ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" }, "intl-format-cache": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-4.1.10.tgz", - "integrity": "sha512-7NqorxPNPuhbtwlXe71Dbjh9NlLvkoUymCI2AS/cyIsG7wYr27x9E/h4P16vftHwsTOjiDIjM/oGukddxgcz3A==" + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-4.2.5.tgz", + "integrity": "sha512-xvvog/4HTVhJIg5dexcs6Ji/ROlolCgtz3std23bLEmucoGPrUVrYQPTcBWR314NM9khm4JSrdOamv9SEtvCUg==" }, "intl-locales-supported": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/intl-locales-supported/-/intl-locales-supported-1.4.5.tgz", - "integrity": "sha512-D7oriM5x46rd7kNlSW0f9noIBegFr3ReIM6xlMpwH4lfIPD/zvBelPlCjR10IK16boGJG9lKccOvRAM8wzpbrA==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/intl-locales-supported/-/intl-locales-supported-1.8.0.tgz", + "integrity": "sha512-y1K5NaNM/WjwZcRy4TtRZ4kR8TCXfoPlX2MFbFGWqqYBD0jPG8liX/cU8aBzk2j5+bu1W6ztlLtOfCPAEwQc3A==" }, "intl-messageformat": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-6.1.5.tgz", - "integrity": "sha512-Ae/3PwnShCkDtnPvx9FLlBj1xiooa5NeeFZBizOQZZ/iaLt8IvgkPCdadkOF3f++FWDOBVtP5RszhMkJQKqmng==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-7.5.0.tgz", + "integrity": "sha512-s08OFUbRVUPTiXS8OOP06OhfehM1K4ughymhOazY4OhQMO+RiY4bnmsqRgYe7XorETg7mZnwJX1M34sJrzKoOA==", "requires": { - "intl-format-cache": "^4.1.10", - "intl-messageformat-parser": "^3.0.7" + "intl-format-cache": "^4.2.5", + "intl-messageformat-parser": "^3.2.2" } }, "intl-messageformat-parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-3.0.7.tgz", - "integrity": "sha512-L16VbbV3NFaiZV65XwOIH9fBe52TS2EkOR0k8Y4ratsgTE7KPEbcUCUrz/iEQwJo7BcWY4ohkZbeYZRgAiPR1Q==" - }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-3.2.2.tgz", + "integrity": "sha512-ax9639ST77YimAddTH/0Q9qhXuYS8ZVsoqOZinqnS90MbXaNuIq+KIdifaIndwI+lMEv3o+qNaGycXYvlh17rw==" }, "invariant": { "version": "2.2.4", @@ -11398,9 +11984,9 @@ } }, "is-absolute-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.0.tgz", - "integrity": "sha512-3OkP8XrM2Xq4/IxsJnClfMp3OaM3TAatLPLKPeWcxLBTrpe6hihwtX+XZfJTcXg/FTRi4qjy0y/C5qiyNxY24g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, "is-accessor-descriptor": { @@ -11439,6 +12025,12 @@ "is-decimal": "^1.0.0" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -11535,9 +12127,9 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, "is-docker": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-1.1.0.tgz", - "integrity": "sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", "dev": true }, "is-dotfile": { @@ -11664,11 +12256,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, "is-observable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", @@ -11684,27 +12271,36 @@ "dev": true }, "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "^2.1.0" + "is-path-inside": "^1.0.0" + }, + "dependencies": { + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + } } }, "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true }, "is-plain-object": { "version": "2.0.4", @@ -11755,9 +12351,9 @@ } }, "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, "is-root": { "version": "2.1.0", @@ -11766,9 +12362,9 @@ "dev": true }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" }, "is-string": { "version": "1.0.4", @@ -11836,9 +12432,9 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isbinaryfile": { "version": "4.0.2", @@ -11863,6 +12459,22 @@ "requires": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } } }, "isstream": { @@ -11872,24 +12484,32 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" + "@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" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "istanbul-lib-report": { @@ -11903,12 +12523,6 @@ "supports-color": "^6.1.0" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -11933,12 +12547,6 @@ "source-map": "^0.6.1" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11956,15 +12564,6 @@ "handlebars": "^4.1.2" } }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, "iterall": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", @@ -11976,299 +12575,169 @@ "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==" }, "jest": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", - "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", "dev": true, "requires": { "import-local": "^2.0.0", - "jest-cli": "^24.8.0" + "jest-cli": "^24.9.0" }, "dependencies": { "jest-cli": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz", - "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "dev": true, "requires": { - "@jest/core": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@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.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.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": "^12.0.2" + "yargs": "^13.3.0" } } } }, "jest-changed-files": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz", - "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "execa": "^1.0.0", "throat": "^4.0.0" } }, "jest-config": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", - "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.8.0", - "@jest/types": "^24.8.0", - "babel-jest": "^24.8.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.8.0", - "jest-environment-node": "^24.8.0", - "jest-get-type": "^24.8.0", - "jest-jasmine2": "^24.8.0", + "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.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", "micromatch": "^3.1.10", - "pretty-format": "^24.8.0", + "pretty-format": "^24.9.0", "realpath-native": "^1.1.0" }, "dependencies": { "babel-jest": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz", - "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", "dev": true, "requires": { - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", + "@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.6.0", + "babel-preset-jest": "^24.9.0", "chalk": "^2.4.2", "slash": "^2.0.0" } }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "dev": true, - "requires": { - "@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": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", - "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", "dev": true, "requires": { "@types/babel__traverse": "^7.0.6" } }, "babel-preset-jest": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", - "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", "dev": true, "requires": { "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.6.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@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" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "dev": true, - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "babel-plugin-jest-hoist": "^24.9.0" } } } }, "jest-diff": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", - "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", "dev": true, "requires": { "chalk": "^2.0.1", - "diff-sequences": "^24.3.0", - "jest-get-type": "^24.8.0", - "pretty-format": "^24.8.0" + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-docblock": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", - "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", "dev": true, "requires": { "detect-newline": "^2.1.0" } }, "jest-each": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", - "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "chalk": "^2.0.1", - "jest-get-type": "^24.8.0", - "jest-util": "^24.8.0", - "pretty-format": "^24.8.0" + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-environment-jsdom": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", - "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", "dev": true, "requires": { - "@jest/environment": "^24.8.0", - "@jest/fake-timers": "^24.8.0", - "@jest/types": "^24.8.0", - "jest-mock": "^24.8.0", - "jest-util": "^24.8.0", + "@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": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", - "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", "dev": true, "requires": { - "@jest/environment": "^24.8.0", - "@jest/fake-timers": "^24.8.0", - "@jest/types": "^24.8.0", - "jest-mock": "^24.8.0", - "jest-util": "^24.8.0" + "@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-file": { @@ -12278,85 +12747,86 @@ "dev": true }, "jest-get-type": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", - "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", "dev": true }, "jest-haste-map": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.1.tgz", - "integrity": "sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "anymatch": "^2.0.0", "fb-watchman": "^2.0.0", "fsevents": "^1.2.7", "graceful-fs": "^4.1.15", "invariant": "^2.2.4", - "jest-serializer": "^24.4.0", - "jest-util": "^24.8.0", - "jest-worker": "^24.6.0", + "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" } }, "jest-jasmine2": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", - "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.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.8.0", + "expect": "^24.9.0", "is-generator-fn": "^2.0.0", - "jest-each": "^24.8.0", - "jest-matcher-utils": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-snapshot": "^24.8.0", - "jest-util": "^24.8.0", - "pretty-format": "^24.8.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": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", - "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", "dev": true, "requires": { - "pretty-format": "^24.8.0" + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-matcher-utils": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", - "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", "dev": true, "requires": { "chalk": "^2.0.1", - "jest-diff": "^24.8.0", - "jest-get-type": "^24.8.0", - "pretty-format": "^24.8.0" + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, "jest-message-util": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", - "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.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", @@ -12365,12 +12835,12 @@ } }, "jest-mock": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", - "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", "dev": true, "requires": { - "@jest/types": "^24.8.0" + "@jest/types": "^24.9.0" } }, "jest-pnp-resolver": { @@ -12380,18 +12850,18 @@ "dev": true }, "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", "dev": true }, "jest-resolve": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz", - "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "browser-resolve": "^1.11.3", "chalk": "^2.0.1", "jest-pnp-resolver": "^1.2.1", @@ -12399,98 +12869,107 @@ } }, "jest-resolve-dependencies": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz", - "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.8.0" + "jest-snapshot": "^24.9.0" } }, "jest-runner": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", - "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", "dev": true, "requires": { "@jest/console": "^24.7.1", - "@jest/environment": "^24.8.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@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.8.0", + "jest-config": "^24.9.0", "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.8.0", - "jest-jasmine2": "^24.8.0", - "jest-leak-detector": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-resolve": "^24.8.0", - "jest-runtime": "^24.8.0", - "jest-util": "^24.8.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": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", - "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", "dev": true, "requires": { "@jest/console": "^24.7.1", - "@jest/environment": "^24.8.0", + "@jest/environment": "^24.9.0", "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.8.0", - "@jest/types": "^24.8.0", - "@types/yargs": "^12.0.2", + "@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.8.0", - "jest-haste-map": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-mock": "^24.8.0", + "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.8.0", - "jest-snapshot": "^24.8.0", - "jest-util": "^24.8.0", - "jest-validate": "^24.8.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": "^12.0.2" + "yargs": "^13.3.0" } }, "jest-serializer": { - "version": "24.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", - "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", "dev": true }, "jest-snapshot": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", - "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { "@babel/types": "^7.0.0", - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "chalk": "^2.0.1", - "expect": "^24.8.0", - "jest-diff": "^24.8.0", - "jest-matcher-utils": "^24.8.0", - "jest-message-util": "^24.8.0", - "jest-resolve": "^24.8.0", + "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.8.0", - "semver": "^5.5.0" + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "jest-specific-snapshot": { @@ -12503,16 +12982,16 @@ } }, "jest-util": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", - "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/fake-timers": "^24.8.0", - "@jest/source-map": "^24.3.0", - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", + "@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", @@ -12537,41 +13016,41 @@ } }, "jest-validate": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", - "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { - "@jest/types": "^24.8.0", - "camelcase": "^5.0.0", + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", "chalk": "^2.0.1", - "jest-get-type": "^24.8.0", - "leven": "^2.1.0", - "pretty-format": "^24.8.0" + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" } }, "jest-watcher": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz", - "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", "dev": true, "requires": { - "@jest/test-result": "^24.8.0", - "@jest/types": "^24.8.0", - "@types/yargs": "^12.0.9", + "@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.8.0", + "jest-util": "^24.9.0", "string-length": "^2.0.0" } }, "jest-worker": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", - "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^1.0.1", + "merge-stream": "^2.0.0", "supports-color": "^6.1.0" }, "dependencies": { @@ -12665,11 +13144,6 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -12684,8 +13158,7 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stringify-safe": { "version": "5.0.1", @@ -12700,9 +13173,9 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -12716,12 +13189,6 @@ "graceful-fs": "^4.1.6" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -12742,16 +13209,6 @@ "is-in-browser": "^1.1.3", "symbol-observable": "^1.1.0", "warning": "^3.0.0" - }, - "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "^1.0.0" - } - } } }, "jss-camel-case": { @@ -12768,16 +13225,6 @@ "integrity": "sha512-YofRYuiA0+VbeOw0VjgkyO380sA4+TWDrW52nSluD9n+1FWOlDzNbgpZ/Sb3Y46+DcAbOS21W5jo6SAqUEiuwA==", "requires": { "warning": "^3.0.0" - }, - "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "^1.0.0" - } - } } }, "jss-default-unit": { @@ -12796,16 +13243,6 @@ "integrity": "sha512-YszrmcB6o9HOsKPszK7NeDBNNjVyiW864jfoiHoMlgMIg2qlxKw70axZHqgczXHDcoyi/0/ikP1XaHDPRvYtEA==", "requires": { "warning": "^3.0.0" - }, - "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "^1.0.0" - } - } } }, "jss-global": { @@ -12819,84 +13256,161 @@ "integrity": "sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA==", "requires": { "warning": "^3.0.0" + } + }, + "jss-plugin-camel-case": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0.tgz", + "integrity": "sha512-yALDL00+pPR4FJh+k07A8FeDvfoPPuXU48HLy63enAubcVd3DnS+2rgqPXglHDGixIDVkCSXecl/l5GAMjzIbA==", + "requires": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.0.0" }, "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", "requires": { - "loose-envify": "^1.0.0" + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" } } } }, - "jss-plugin-camel-case": { - "version": "10.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0-alpha.7.tgz", - "integrity": "sha512-Bwrav1ZB0XywdJW6TaEuFhKe1ZpZvUlESh3jsFOvebA9aFTYNCkmHMEqjA5+u9VMxksl3u77nnZHtukpxkzrBA==", - "requires": { - "@babel/runtime": "^7.0.0", - "hyphenate-style-name": "^1.0.2" - } - }, "jss-plugin-default-unit": { - "version": "10.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0-alpha.7.tgz", - "integrity": "sha512-auuJUbQaWMxoHOVFPrfZNZpZm9ab8PZeDyvey8nMt2lbokkmZ53UyAnM/1kNsg5BdAXTItcLDxDB3I4gwNU84g==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0.tgz", + "integrity": "sha512-sURozIOdCtGg9ap18erQ+ijndAfEGtTaetxfU3H4qwC18Bi+fdvjlY/ahKbuu0ASs7R/+WKCP7UaRZOjUDMcdQ==", "requires": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + }, + "dependencies": { + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + } } }, "jss-plugin-global": { - "version": "10.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0-alpha.7.tgz", - "integrity": "sha512-OWeoW4szLDgRUKviST+xfilqa8O5uXJCW+O3YonheCRTRJg6rRzlE/b5pfYPoU9UtwvY9n7JvwBX5r3c1lMsEQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0.tgz", + "integrity": "sha512-80ofWKSQUo62bxLtRoTNe0kFPtHgUbAJeOeR36WEGgWIBEsXLyXOnD5KNnjPqG4heuEkz9eSLccjYST50JnI7Q==", "requires": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + }, + "dependencies": { + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + } } }, "jss-plugin-nested": { - "version": "10.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0-alpha.7.tgz", - "integrity": "sha512-wsRzuIZXAc6WMjc61mREW9cUrDxgSI7dK/fx5c7a06IDUfSn+83NJ30J/RB4oBnbQW9SijV/muujz7IJqpn9Gw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0.tgz", + "integrity": "sha512-waxxwl/po1hN3azTyixKnr8ReEqUv5WK7WsO+5AWB0bFndML5Yqnt8ARZ90HEg8/P6WlqE/AB2413TkCRZE8bA==", "requires": { - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.3.1", + "jss": "10.0.0", "tiny-warning": "^1.0.2" + }, + "dependencies": { + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + } } }, "jss-plugin-props-sort": { - "version": "10.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0-alpha.7.tgz", - "integrity": "sha512-KXOCaHUk1+KXqE0z3q66/w1fDoy+VsZvI77gLxOqTsTrvIKFLX0jarwXogW3CDlaPQQFTZ6JykJJXtPRTBlstA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0.tgz", + "integrity": "sha512-41mf22CImjwNdtOG3r+cdC8+RhwNm616sjHx5YlqTwtSJLyLFinbQC/a4PIFk8xqf1qpFH1kEAIw+yx9HaqZ3g==", "requires": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + }, + "dependencies": { + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + } } }, "jss-plugin-rule-value-function": { - "version": "10.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0-alpha.7.tgz", - "integrity": "sha512-ett83hvIM69/LknmrWndrrdiDlfLfP+rneU5qP7gTOWJ7g1P9GuEL1Tc4CWdZUWBX+T58tgIBP0V1pzWCkP0QA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0.tgz", + "integrity": "sha512-Jw+BZ8JIw1f12V0SERqGlBT1JEPWax3vuZpMym54NAXpPb7R1LYHiCTIlaJUyqvIfEy3kiHMtgI+r2whGgRIxQ==", "requires": { - "@babel/runtime": "^7.0.0" + "@babel/runtime": "^7.3.1", + "jss": "10.0.0" + }, + "dependencies": { + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + } + } } }, "jss-plugin-vendor-prefixer": { - "version": "10.0.0-alpha.7", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0-alpha.7.tgz", - "integrity": "sha512-YbIVgqq+dLimOBOEYggho1Iuc0roz4PJSZYyaok9n8JnXVIqPnxYJbr8+bMbvzJ5CL3eeJij/e7L2IPCceRKrA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0.tgz", + "integrity": "sha512-qslqvL0MUbWuzXJWdUxpj6mdNUX8jr4FFTo3aZnAT65nmzWL7g8oTr9ZxmTXXgdp7ANhS1QWE7036/Q2isFBpw==", "requires": { - "@babel/runtime": "^7.0.0", - "css-vendor": "^1.1.0" + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.6", + "jss": "10.0.0" }, "dependencies": { - "css-vendor": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-1.2.1.tgz", - "integrity": "sha512-ZpwiWxn5jWNJ7NF3DAb/Dc/+c2lRu+fnovej/adCv3VJsULJSjdXEpUwRcq4fnpAAh98Hi7b0GDnlyoNFcdv1g==", + "jss": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0.tgz", + "integrity": "sha512-TPpDFsiBjuERiL+dFDq8QCdiF9oDasPcNqCKLGCo/qED3fNYOQ8PX2lZhknyTiAt3tZrfOFbb0lbQ9lTjPZxsQ==", "requires": { "@babel/runtime": "^7.3.1", - "is-in-browser": "^1.0.2" + "csstype": "^2.6.5", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" } } } @@ -12929,16 +13443,6 @@ "integrity": "sha512-m5BqEWha17fmIVXm1z8xbJhY6GFJxNB9H68GVnCWPyGYfxiAgY9WTQyvDAVj+pYRgrXSOfN5V1T4+SzN1sJTeg==", "requires": { "warning": "^3.0.0" - }, - "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "^1.0.0" - } - } } }, "jss-vendor-prefixer": { @@ -12947,6 +13451,16 @@ "integrity": "sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA==", "requires": { "css-vendor": "^0.3.8" + }, + "dependencies": { + "css-vendor": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz", + "integrity": "sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo=", + "requires": { + "is-in-browser": "^1.0.2" + } + } } }, "keycode": { @@ -12954,14 +13468,6 @@ "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=" }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "requires": { - "json-buffer": "3.0.0" - } - }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -13006,14 +13512,6 @@ "core-js": "^3.0.4", "dotenv": "^8.0.0", "dotenv-expand": "^5.1.0" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "lcid": { @@ -13032,9 +13530,9 @@ "dev": true }, "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true }, "levn": { @@ -13096,18 +13594,6 @@ "stringify-object": "^3.3.0" }, "dependencies": { - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -13128,37 +13614,6 @@ "which": "^2.0.1" } }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", - "dev": true, - "requires": { - "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" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, "execa": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", @@ -13176,27 +13631,6 @@ "strip-final-newline": "^2.0.0" } }, - "fast-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", - "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", - "dev": true - } - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -13215,61 +13649,12 @@ "pump": "^3.0.0" } }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globby": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", - "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", - "dev": true, - "requires": { - "@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" - } - }, - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, - "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -13279,12 +13664,6 @@ "chalk": "^2.4.2" } }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "micromatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", @@ -13316,36 +13695,12 @@ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", "dev": true }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, "path-key": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -13361,12 +13716,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13410,6 +13759,13 @@ "listr-verbose-renderer": "^0.5.0", "p-map": "^2.0.0", "rxjs": "^6.3.3" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + } } }, "listr-silent-renderer": { @@ -13531,12 +13887,13 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -13586,12 +13943,6 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -13608,12 +13959,6 @@ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=" }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", - "dev": true - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -13641,6 +13986,11 @@ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" }, + "lodash.xorby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.xorby/-/lodash.xorby-4.7.0.tgz", + "integrity": "sha1-nBmm+fBjputT3QPBtocXmYAUY9c=" + }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -13786,9 +14136,9 @@ } }, "loglevel": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", - "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", + "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==", "dev": true }, "loose-envify": { @@ -13812,11 +14162,6 @@ "lower-case": "^1.1.2" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, "lowlight": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.2.tgz", @@ -13974,12 +14319,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true } } }, @@ -14031,18 +14370,15 @@ "dev": true }, "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", - "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", "dev": true }, "methods": { @@ -14114,11 +14450,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -14148,45 +14479,6 @@ "normalize-url": "1.9.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" - }, - "dependencies": { - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - } } }, "minimalistic-assert": { @@ -14301,9 +14593,9 @@ "dev": true }, "moment-timezone": { - "version": "0.5.26", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.26.tgz", - "integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", + "version": "0.5.27", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.27.tgz", + "integrity": "sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw==", "requires": { "moment": ">= 2.9.0" } @@ -14362,9 +14654,9 @@ "dev": true }, "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "nan": { @@ -14410,9 +14702,9 @@ "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==" }, "nearley": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.18.0.tgz", - "integrity": "sha512-/zQOMCeJcioI0xJtd5RpBiWw2WP7wLe6vq8/3Yu0rEwgus/G/+pViX80oA87JdVgjRt2895mZSv2VfZmy4W1uw==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.0.tgz", + "integrity": "sha512-2v52FTw7RPqieZr3Gth1luAXZR7Je6q3KaDHY5bjl/paDUdMu35fZ8ICNgiYJRr3tf3NMvIQQR1r27AvEr9CRA==", "dev": true, "requires": { "commander": "^2.19.0", @@ -14434,52 +14726,6 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, - "netrc-parser": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/netrc-parser/-/netrc-parser-3.1.6.tgz", - "integrity": "sha512-lY+fmkqSwntAAjfP63jB4z5p5WbuZwyMCD3pInT7dpHU/Gc6Vv90SAC6A0aNiqaRGHiuZFBtiwu+pu8W/Eyotw==", - "requires": { - "debug": "^3.1.0", - "execa": "^0.10.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "requires": { - "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" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - } - } - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -14503,18 +14749,14 @@ } }, "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, "node-int64": { @@ -14569,9 +14811,9 @@ "dev": true }, "node-notifier": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.1.tgz", - "integrity": "sha512-p52B+onAEHKW1OF9MGO/S7k/ahGEHfhP5/tvwYzog/5XLYOd8ZuD6vdNZdUuWMONRnKPneXV43v3s6Snx1wsCQ==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "dev": true, "requires": { "growly": "^1.3.0", @@ -14582,71 +14824,272 @@ } }, "node-plop": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/node-plop/-/node-plop-0.19.0.tgz", - "integrity": "sha512-qE0LsGdB793lMHZcg7tKg9kL/98kiakoOGTykFUEyl05UxE7jk3TygHRZK1EUDBe1gJKt9triaInNgjlUbTGYw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/node-plop/-/node-plop-0.23.0.tgz", + "integrity": "sha512-HPtYicgUbQdvZvn5pjbTblT2jHFVAiJfhcqnKw2PR5dOVIzs/7hIeAkjUtX+PKLmJAQmZvjXJfk7ppJ2VHRLgw==", "dev": true, "requires": { + "@types/globby": "^9.1.0", + "@types/handlebars": "^4.1.0", + "@types/inquirer": "6.0.1", "change-case": "^3.1.0", "co": "^4.6.0", - "core-js": "^3.1.4", - "del": "^4.1.1", - "globby": "^9.2.0", - "handlebars": "^4.1.2", - "inquirer": "^6.3.1", - "isbinaryfile": "^4.0.1", + "core-js": "^3.3.2", + "del": "^5.1.0", + "globby": "^10.0.1", + "handlebars": "^4.4.3", + "inquirer": "^7.0.0", + "isbinaryfile": "^4.0.2", "lodash.get": "^4.4.2", "mkdirp": "^0.5.1", - "pify": "^4.0.0", - "resolve": "^1.11.0" + "resolve": "^1.12.0" }, "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", "dev": true }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "ansi-escapes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", "dev": true, "requires": { - "path-type": "^3.0.0" + "type-fest": "^0.5.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "fast-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", + "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", + "dev": true, + "requires": { + "@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" + } + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" } }, "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", "dev": true, "requires": { "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" } }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "inquirer": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", + "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "dev": true, + "requires": { + "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.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", "dev": true } } }, "node-releases": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.27.tgz", - "integrity": "sha512-9iXUqHKSGo6ph/tdXVbHFbhRVQln4ZDTIBJCzsa90HimnBYc5jw8RWYt4wBYFHehGyC3koIz5O4mb2fHrbPOuA==", + "version": "1.1.39", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", + "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", "dev": true, "requires": { - "semver": "^5.3.0" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "node-version": { @@ -14715,18 +15158,20 @@ "dev": true }, "normalize-scroll-left": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz", - "integrity": "sha512-F9YMRls0zCF6BFIE2YnXDRpHPpfd91nOIaNdDgrx5YMoPLo8Wqj+6jNXHQsYBavJeXP4ww8HCt0xQAKc5qk2Fg==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz", + "integrity": "sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA==" }, "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" } }, "npm-run-path": { @@ -14777,9 +15222,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, "oauth-sign": { @@ -14827,8 +15272,7 @@ "object-inspect": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", - "dev": true + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" }, "object-is": { "version": "1.0.1", @@ -14898,15 +15342,15 @@ } }, "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", + "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", "function-bind": "^1.1.1", - "has": "^1.0.1" + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { @@ -15023,17 +15467,18 @@ "dev": true }, "opn": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", - "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, "requires": { - "object-assign": "^4.0.1" + "is-wsl": "^1.1.0" } }, "optimism": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.2.tgz", - "integrity": "sha512-zPfBIxFFWMmQboM9+Z4MSJqc1PXp82v1PFq/GfQaufI69mHKlup7ykGNnfuGIGssXJQkmhSodQ/k9EWwjd8O8A==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", + "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", "requires": { "@wry/context": "^0.4.0" } @@ -15057,25 +15502,17 @@ } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } + "word-wrap": "~1.2.3" } }, "ora": { @@ -15147,22 +15584,6 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "output-file-sync": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", - "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" - } - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" - }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -15184,26 +15605,27 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^2.0.0" } }, "p-map": { @@ -15226,14 +15648,6 @@ "retry": "^0.12.0" } }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -15247,12 +15661,12 @@ "dev": true }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } @@ -15266,9 +15680,9 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -15408,9 +15822,9 @@ "dev": true }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { @@ -15455,13 +15869,6 @@ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "requires": { "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } } }, "path-type": { @@ -15506,9 +15913,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", "dev": true }, "pify": { @@ -15547,42 +15954,6 @@ "dev": true, "requires": { "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } } }, "pkg-up": { @@ -15636,12 +16007,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true } } }, @@ -15655,16 +16020,16 @@ } }, "plop": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/plop/-/plop-2.4.0.tgz", - "integrity": "sha512-Kl69KofCKE5eZcyA7UOyig9eZF8/AzvuXG2wUpaUkeXfSnrpUzw/MRVTS4g7uPz2tz/6/CroOYzc1YJm2WKwhw==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/plop/-/plop-2.5.3.tgz", + "integrity": "sha512-hD/u5MC20wgfYk9gREhdoXOX9Z2b7iCjZJgBrxbggD8BsvXDQ2kjpUxQGkeUdAec/5ZNqq0ypFLvA00h5Kt6yg==", "dev": true, "requires": { "chalk": "^1.1.3", "interpret": "^1.2.0", "liftoff": "^2.5.0", "minimist": "^1.2.0", - "node-plop": "~0.19.0", + "node-plop": "~0.23.0", "ora": "^3.4.0", "v8flags": "^2.0.10" }, @@ -15743,50 +16108,38 @@ } }, "polished": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.1.tgz", - "integrity": "sha512-GflTnlP5rrpDoigjczEkS6Ye7NDA4sFvAnlr5hSDrEvjiVj97Xzev3hZlLi3UB27fpxyTS9rWU64VzVLWkG+mg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.2.tgz", + "integrity": "sha512-9Rch6iMZckABr6EFCLPZsxodeBpXMo9H4fRlfR/9VjMEyy5xpo1/WgXlJGgSjPyVhEZNycbW7UmYMNyWS5MI0g==", "dev": true, "requires": { - "@babel/runtime": "^7.4.5" + "@babel/runtime": "^7.6.3" } }, "popper.js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", - "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.0.tgz", + "integrity": "sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==" }, "portfinder": { - "version": "1.0.21", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.21.tgz", - "integrity": "sha512-ESabpDCzmBS3ekHbmpAIiESq3udRsCBGiBZLsC+HgBKv2ezb0R4oG+7RnYEVZ/ZCfhel5Tx3UzdNWA0Lox2QCA==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" }, "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -15797,9 +16150,9 @@ "dev": true }, "postcss": { - "version": "7.0.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", - "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -15865,22 +16218,15 @@ } }, "postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" } }, "postcss-modules-scope": { @@ -15894,12 +16240,12 @@ } }, "postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", "dev": true, "requires": { - "icss-replace-symbols": "^1.1.0", + "icss-utils": "^4.0.0", "postcss": "^7.0.6" } }, @@ -15927,9 +16273,10 @@ "dev": true }, "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true }, "preserve": { "version": "0.2.0", @@ -15954,12 +16301,12 @@ } }, "pretty-format": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", - "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.8.0", + "@jest/types": "^24.9.0", "ansi-regex": "^4.0.0", "ansi-styles": "^3.2.0", "react-is": "^16.8.4" @@ -15999,7 +16346,8 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "promise": { "version": "7.3.1", @@ -16027,13 +16375,13 @@ } }, "promise.prototype.finally": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz", - "integrity": "sha512-7p/K2f6dI+dM8yjRQEGrTQs5hTQixUAdOGpMEA3+pVxpX5oHKRSKAXyLw9Q9HUWDTdwtoo39dSHGQtN90HcEwQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.1.tgz", + "integrity": "sha512-gnt8tThx0heJoI3Ms8a/JdkYBVhYP/wv+T7yQimR+kdOEJL21xTFbiJhMRqnSPcr54UVvMbsscDk2w+ivyaLPw==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.9.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0", "function-bind": "^1.1.1" } }, @@ -16084,22 +16432,12 @@ "requires": { "react-is": "^16.3.2", "warning": "^3.0.0" - }, - "dependencies": { - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "^1.0.0" - } - } } }, "property-information": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.2.2.tgz", - "integrity": "sha512-N2moasZmjn2mjVGIWpaqz5qnz6QyeQSGgGvMtl81gA9cPTWa6wpesRSe/quNnOjUHpvSH1oZx0pdz0EEckLFnA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.3.0.tgz", + "integrity": "sha512-IslotQn1hBCZDY7SaJ3zmCjVea219VTwmOk6Pu3z9haU9m4+T8GwaDubur+6NMHEU+Fjs/6/p66z6QULPkcL1w==", "dev": true, "requires": { "xtend": "^4.0.1" @@ -16136,9 +16474,9 @@ "dev": true }, "psl": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", - "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", "dev": true }, "public-encrypt": { @@ -16190,8 +16528,7 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "q": { "version": "1.5.1", @@ -16206,16 +16543,16 @@ "dev": true }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", + "integrity": "sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA==" }, "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, "requires": { - "decode-uri-component": "^0.2.0", "object-assign": "^4.1.0", "strict-uri-encode": "^1.0.0" } @@ -16246,12 +16583,6 @@ "performance-now": "^2.1.0" } }, - "raf-schd": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", - "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==", - "dev": true - }, "railroad-diagrams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", @@ -16341,9 +16672,9 @@ } }, "react": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz", - "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.11.0.tgz", + "integrity": "sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -16351,15 +16682,15 @@ } }, "react-apollo": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-3.0.0.tgz", - "integrity": "sha512-dxUml6Z91kRg/dQhKac2aTwLkDNmDa6APd3jmeGE48nAg0/a282zQryX7HXk0M6l3qaRISclGDhLINqdSXBLyA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-3.1.3.tgz", + "integrity": "sha512-orCZNoAkgveaK5b75y7fw1MSqSHOU/Wuu9rRFOGmRQBSQVZjvV4DI+hj604rHmuN9+WDABxb5W48wTa0F/xNZQ==", "requires": { - "@apollo/react-common": "^3.0.0", - "@apollo/react-components": "^3.0.0", - "@apollo/react-hoc": "^3.0.0", - "@apollo/react-hooks": "^3.0.0", - "@apollo/react-ssr": "^3.0.0" + "@apollo/react-common": "^3.1.3", + "@apollo/react-components": "^3.1.3", + "@apollo/react-hoc": "^3.1.3", + "@apollo/react-hooks": "^3.1.3", + "@apollo/react-ssr": "^3.1.3" } }, "react-clientside-effect": { @@ -16372,14 +16703,14 @@ } }, "react-dev-utils": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.0.2.tgz", - "integrity": "sha512-AHVfRepMzZJyJHCNFAsrAG4El1H5v+27c1XkeDoX6pSmdhT/ZDdAN3Mf7DKYcrbIFlubzVYof6NZDnPBjd0CNA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.1.0.tgz", + "integrity": "sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg==", "dev": true, "requires": { "@babel/code-frame": "7.5.5", - "address": "1.1.0", - "browserslist": "4.6.6", + "address": "1.1.2", + "browserslist": "4.7.0", "chalk": "2.4.2", "cross-spawn": "6.0.5", "detect-port-alt": "1.1.6", @@ -16396,14 +16727,25 @@ "loader-utils": "1.2.3", "open": "^6.3.0", "pkg-up": "2.0.0", - "react-error-overlay": "^6.0.0", + "react-error-overlay": "^6.0.3", "recursive-readdir": "2.2.2", - "shell-quote": "1.6.1", - "sockjs-client": "1.3.0", + "shell-quote": "1.7.2", + "sockjs-client": "1.4.0", "strip-ansi": "5.2.0", "text-table": "0.2.0" }, "dependencies": { + "browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -16432,15 +16774,6 @@ "escape-string-regexp": "^1.0.5" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "fork-ts-checker-webpack-plugin": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz", @@ -16478,42 +16811,11 @@ "through": "^2.3.6" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true } } }, @@ -16584,20 +16886,20 @@ } }, "react-dom": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", - "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.11.0.tgz", + "integrity": "sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.15.0" + "scheduler": "^0.17.0" } }, "react-draggable": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-3.3.0.tgz", - "integrity": "sha512-U7/jD0tAW4T0S7DCPK0kkKLyL0z61sC/eqU+NUfDjnq+JtBKaYKDHpsK2wazctiA4alEzCXUnzkREoxppOySVw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.1.0.tgz", + "integrity": "sha512-Or/qe70cfymshqoC8Lsp0ukTzijJObehb7Vfl7tb5JRxoV+b6PDkOGoqYaWBzZ59k9dH/bwraLGsnlW78/3vrA==", "dev": true, "requires": { "classnames": "^2.2.5", @@ -16621,21 +16923,11 @@ "integrity": "sha512-5CPSeLJA2igJNppAgFRwnTL9aK3ojenk65enNzhVyoxYNbHpIJXnChUO7+4vPhkncRA9wvQMXq6Azp2XeXd+iQ==" }, "react-error-overlay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.0.tgz", - "integrity": "sha512-oHf3b1J2Pxu03apiHvP21qBCkj6fG6A3c3ahya3fX0VXEZUTzIRLwZI9eZ/6cuOO+kvnzdVdGBxZlo+Tjh+hfQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.3.tgz", + "integrity": "sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw==", "dev": true }, - "react-event-listener": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.6.tgz", - "integrity": "sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw==", - "requires": { - "@babel/runtime": "^7.2.0", - "prop-types": "^15.6.0", - "warning": "^4.0.1" - } - }, "react-fast-compare": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", @@ -16665,33 +16957,16 @@ } }, "react-helmet-async": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.2.tgz", - "integrity": "sha512-qzzchrM/ibHuPS/60ief8jaibPunuRdeta4iBDQV+ri2SFKwOV+X2NlEpvevZOauhmHrH/I6dI4E90EPVfJBBg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.0.4.tgz", + "integrity": "sha512-KTGHE9sz8N7+fCkZ2a3vzXH9eIkiTNhL2NhKR7XzzQl3WsGlCHh76arauJUIiGdfhjeMp7DY7PkASAmYFXeJYg==", "dev": true, "requires": { - "@babel/runtime": "7.3.4", - "invariant": "2.2.4", - "prop-types": "15.7.2", - "react-fast-compare": "2.0.4", - "shallowequal": "1.1.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz", - "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.12.0" - } - }, - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", - "dev": true - } + "@babel/runtime": "^7.3.4", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^2.0.4", + "shallowequal": "^1.1.0" } }, "react-hotkeys": { @@ -16721,21 +16996,20 @@ } }, "react-intl": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-3.1.8.tgz", - "integrity": "sha512-kUQvTfDvMpgvwDldsmTy/XQPPgaSquh3+mL0iEspKkGqtAM9J9p25jNy8+cP0w/Y5LfWQFniUjlEdCDznoTZ/Q==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-3.4.0.tgz", + "integrity": "sha512-pW+z0ngVtPzICQeBrvoxk/YOotjFjVMvqxf/q0hjfM4CLvzIWJW/7MQcOz8ujD0Agf146mYOUv0//a9JM4H6Tg==", "requires": { - "@formatjs/intl-relativetimeformat": "^2.6.3", + "@formatjs/intl-relativetimeformat": "^4.2.1", + "@formatjs/intl-unified-numberformat": "^2.1.0", "@types/hoist-non-react-statics": "^3.3.1", "@types/invariant": "^2.2.30", - "@types/react": "^16.0.0", "hoist-non-react-statics": "^3.3.0", - "intl-format-cache": "^4.1.10", - "intl-locales-supported": "^1.4.5", - "intl-messageformat": "^6.1.5", - "intl-messageformat-parser": "^3.0.7", + "intl-format-cache": "^4.2.3", + "intl-locales-supported": "^1.6.0", + "intl-messageformat": "^7.3.3", + "intl-messageformat-parser": "^3.2.2", "invariant": "^2.1.1", - "react": "^16.3.0", "shallow-equal": "^1.1.0" } }, @@ -16762,9 +17036,9 @@ } }, "react-is": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", - "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==" + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", + "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==" }, "react-jss": { "version": "8.6.1", @@ -16796,13 +17070,13 @@ "integrity": "sha512-JpHQgpB+p3oqZv583xlJakPXgqdIjGBZvngHYcFhlYxTYs0NDZSdoM1FCpU9T2QmqKOEFBVuhhJBMvJzTkF/wQ==" }, "react-popper": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.3.tgz", - "integrity": "sha512-ynMZBPkXONPc5K4P5yFWgZx5JGAUIP3pGGLNs58cfAPgK67olx7fmLp+AdpZ0+GoQ+ieFDa/z4cdV6u7sioH6w==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.5.tgz", + "integrity": "sha512-Wi5WewcQ7O4fP4YArjWXY7JXRkDX+7sAjE9AeEahgPg6PdAHvQibek+nVqxO1lS8aX2v3iWzCC5Jgm3cuVfdCQ==", "dev": true, "requires": { "@babel/runtime": "^7.1.2", - "create-react-context": "<=0.2.2", + "create-react-context": "^0.3.0", "popper.js": "^1.14.4", "prop-types": "^15.6.1", "typed-styles": "^0.0.7", @@ -16810,44 +17084,40 @@ }, "dependencies": { "create-react-context": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.2.tgz", - "integrity": "sha512-KkpaLARMhsTsgp0d2NA/R94F/eDLbhXERdIq3LvX2biCAXcDvHYoOqHfWCHf1+OLj+HKBotLG3KqaOOf+C1C+A==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", "dev": true, "requires": { - "fbjs": "^0.8.0", - "gud": "^1.0.0" + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" } } } }, "react-popper-tooltip": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-2.8.3.tgz", - "integrity": "sha512-g5tfxmuj8ClNVwH4zswYJcD3GKoc5RMeRawd/WZnbyZGEDecsRKaVL+Kj7L3BG7w5qb6/MHcLTG8yE4CidwezQ==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-2.10.0.tgz", + "integrity": "sha512-iMNWaY41G7kcx2/kcV+37GLe4C93yI9CPZ9DH+V9tOtJIJwEzm/w9+mlr6G1QLzxefDxjliqymMXk9X73pyuWA==", "dev": true, "requires": { - "@babel/runtime": "^7.4.5", - "react-popper": "^1.3.3" - } - }, - "react-resize-detector": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-4.2.0.tgz", - "integrity": "sha512-AtOaNIxs0ydua7tEoglXR3902/EdlIj9PXDu1Zj0ug2VAUnkSQjguLGzaG/N6CXLOhJSccTsUCZxjLayQ1mE9Q==", - "dev": true, - "requires": { - "lodash": "^4.17.11", - "lodash-es": "^4.17.11", - "prop-types": "^15.7.2", - "raf-schd": "^4.0.0", - "resize-observer-polyfill": "^1.5.1" + "@babel/runtime": "^7.6.3", + "react-popper": "^1.3.4" } }, "react-router": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.0.1.tgz", - "integrity": "sha512-EM7suCPNKb1NxcTZ2LEOWFtQBQRQXecLxVpdsP4DW4PbbqYWeRiLyV/Tt1SdCrvT2jcyXAXmVTmzvSzrPR63Bg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.1.2.tgz", + "integrity": "sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A==", "requires": { "@babel/runtime": "^7.1.2", "history": "^4.9.0", @@ -16862,28 +17132,39 @@ } }, "react-router-dom": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.0.1.tgz", - "integrity": "sha512-zaVHSy7NN0G91/Bz9GD4owex5+eop+KvgbxXsP/O+iW1/Ln+BrJ8QiIR5a6xNPtrdTvLkxqlDClx13QO1uB8CA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.1.2.tgz", + "integrity": "sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew==", "requires": { "@babel/runtime": "^7.1.2", "history": "^4.9.0", "loose-envify": "^1.3.1", "prop-types": "^15.6.2", - "react-router": "5.0.1", + "react-router": "5.1.2", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" } }, "react-side-effect": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", - "integrity": "sha512-Z2ZJE4p/jIfvUpiUMRydEVpQRf2f8GMHczT6qLcARmX7QRb28JDBTpnM2g/i5y/p7ZDEXYGHWg0RbhikE+hJRw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.2.0.tgz", + "integrity": "sha512-v1ht1aHg5k/thv56DRcjw+WtojuuDHFUgGfc+bFHOWsF4ZK6C2V57DO0Or0GPsg6+LSTE0M6Ry/gfzhzSwbc5w==", "requires": { - "exenv": "^1.2.1", "shallowequal": "^1.0.1" } }, + "react-sizeme": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/react-sizeme/-/react-sizeme-2.6.10.tgz", + "integrity": "sha512-OJAPQxSqbcpbsXFD+fr5ARw4hNSAOimWcaTOLcRkIqnTp9+IFWY0w3Qdw1sMez6Ao378aimVL/sW6TTsgigdOA==", + "dev": true, + "requires": { + "element-resize-detector": "^1.1.15", + "invariant": "^2.2.4", + "shallowequal": "^1.1.0", + "throttle-debounce": "^2.1.0" + } + }, "react-sortable-hoc": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-0.6.8.tgz", @@ -16932,21 +17213,21 @@ } }, "react-test-renderer": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.9.0.tgz", - "integrity": "sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.11.0.tgz", + "integrity": "sha512-nh9gDl8R4ut+ZNNb2EeKO5VMvTKxwzurbSMuGBoKtjpjbg8JK/u3eVPVNi1h1Ue+eYK9oSzJjb+K3lzLxyA4ag==", "dev": true, "requires": { "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "react-is": "^16.9.0", - "scheduler": "^0.15.0" + "react-is": "^16.8.6", + "scheduler": "^0.17.0" } }, "react-textarea-autosize": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz", - "integrity": "sha512-c2FlR/fP0qbxmlrW96SdrbgP/v0XZMTupqB90zybvmDVDutytUgPl7beU35klwcTeMepUIQEpQUn3P3bdshGPg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-7.1.2.tgz", + "integrity": "sha512-uH3ORCsCa3C6LHxExExhF4jHoXYCQwE5oECmrRsunlspaDAbS4mGKNlWZqjLfInWtFQcf0o1n1jC/NGXFdUBCg==", "dev": true, "requires": { "@babel/runtime": "^7.1.2", @@ -16954,14 +17235,14 @@ } }, "react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.3.0.tgz", + "integrity": "sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw==", "requires": { - "dom-helpers": "^3.4.0", + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", "loose-envify": "^1.4.0", - "prop-types": "^15.6.2", - "react-lifecycles-compat": "^3.0.4" + "prop-types": "^15.6.2" } }, "react-virtualized": { @@ -16976,6 +17257,16 @@ "loose-envify": "^1.3.0", "prop-types": "^15.6.0", "react-lifecycles-compat": "^3.0.4" + }, + "dependencies": { + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + } } }, "read-file-relative": { @@ -16988,33 +17279,32 @@ } }, "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" }, "dependencies": { - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true } } @@ -17030,6 +17320,72 @@ "type-fest": "^0.5.0" }, "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, "type-fest": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", @@ -17042,6 +17398,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -17052,10 +17409,17 @@ "util-deprecate": "~1.0.1" }, "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -17080,9 +17444,9 @@ } }, "recast": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.18.2.tgz", - "integrity": "sha512-MbuHc1lzIDIn7bpxaqIAGwwtyaokkzPqINf1Vm/LA0BSyVrTgXNVTTT7RzWC9kP+vqrUoYVpd6wHhI8x75ej8w==", + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.18.5.tgz", + "integrity": "sha512-sD1WJrpLQAkXGyQZyGzTM75WJvyAd98II5CHdK3IYbt/cZlU0UzCRVU11nUFNXX9fBVEt4E9ajkMjBlUlG+Oog==", "requires": { "ast-types": "0.13.2", "esprima": "~4.0.0", @@ -17105,26 +17469,6 @@ "resolve": "^1.1.6" } }, - "recompose": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", - "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", - "requires": { - "@babel/runtime": "^7.0.0", - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "react-lifecycles-compat": "^3.0.2", - "symbol-observable": "^1.0.4" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - } - } - }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -17216,12 +17560,6 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz", - "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==", - "dev": true - }, "regexp.prototype.flags": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", @@ -17232,9 +17570,9 @@ } }, "regexpu-core": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz", - "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -17246,9 +17584,9 @@ } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { @@ -17390,29 +17728,29 @@ } }, "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", "dev": true, "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.15" } }, "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", "dev": true, "requires": { - "request-promise-core": "1.1.2", + "request-promise-core": "1.1.3", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" } }, "require-context.macro": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/require-context.macro/-/require-context.macro-1.1.1.tgz", - "integrity": "sha512-l1XH5HruDyG+Iwo5pz39EGbOFVtoYQt8cl7mJ6KJFWzARNJnpb+XUui+jBQUGlJ8SJOdx+QDh784e8b42PxLXA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/require-context.macro/-/require-context.macro-1.2.2.tgz", + "integrity": "sha512-qibgUj+t0YeBAIsQSqgY3iwFrwQoAV7mmZmvdEpGwe1eAS7iunLpINsRYX/lyuHtJDeJdF7U92jXNzbuDeM2RA==", "dev": true, "requires": { "@types/webpack-env": "^1.14.0" @@ -17425,9 +17763,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "requires-port": { @@ -17501,9 +17839,9 @@ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, "resolve-pathname": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", - "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" }, "resolve-url": { "version": "0.2.1", @@ -17511,14 +17849,6 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -17547,9 +17877,9 @@ "dev": true }, "rimraf": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.0.tgz", - "integrity": "sha512-4Liqw7ccABzsWV5BzeZeGRSq7KWIgQYzOcmRDEwSX4WAawlQpcAFXZ1Kid72XYrjSnK5yxOS6Gez/iGusYE/Pw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { "glob": "^7.1.3" @@ -17612,9 +17942,9 @@ } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "requires": { "tslib": "^1.9.0" } @@ -17656,9 +17986,9 @@ } }, "sanitize-filename": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.2.tgz", - "integrity": "sha512-cmTzND7RMxUB+f7gI+4+KAVHWEg0lfXvQJdko+FXDP5bNbGIdx4KMP5pX6lv5jfT9jSf6OBbjyxjFtZQwYA/ig==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, "requires": { "truncate-utf8-bytes": "^1.0.0" @@ -17671,9 +18001,9 @@ "dev": true }, "scheduler": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", - "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz", + "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -17704,18 +18034,18 @@ "dev": true }, "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "0.9.0" } }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-compare": { "version": "1.0.0", @@ -17779,9 +18109,9 @@ } }, "serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", "dev": true }, "serve-favicon": { @@ -17981,16 +18311,10 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true }, "shelljs": { "version": "0.7.7", @@ -18014,9 +18338,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simplebar": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-4.1.0.tgz", - "integrity": "sha512-kX+CsWbWLeufIsqJl8xg5J4WbYMyq5NONR/aTaehN8XLQxOthSgRT/uAXsqX9Yrw3iiGxD9PPwM1PmEJfWAdcg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-4.2.3.tgz", + "integrity": "sha512-9no0pK7/1y+8/oTF3sy/+kx0PjQ3uk4cYwld5F1CJGk2gx+prRyUq8GRfvcVLq5niYWSozZdX73a2wIr1o9l/g==", "dev": true, "requires": { "can-use-dom": "^0.1.0", @@ -18025,24 +18349,16 @@ "lodash.memoize": "^4.1.2", "lodash.throttle": "^4.1.1", "resize-observer-polyfill": "^1.5.1" - }, - "dependencies": { - "core-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.0.tgz", - "integrity": "sha512-gybgLzmr7SQRSF6UzGYXducx4eE10ONQlyEnQoqiGPbmbn7zLkb73tPfc4YbZN0lvcTQwoLNPjq4RuCaCumGyQ==", - "dev": true - } } }, "simplebar-react": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-1.1.0.tgz", - "integrity": "sha512-0nbUpoB5Gq3z2dbhRjPxwTLlscgFjCw8vKQRmbXIr47JMc5BeHj/WbZdVAESuKAvua7ESh6mkxbzywMNgRdbCw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-1.2.3.tgz", + "integrity": "sha512-1EOWJzFC7eqHUp1igD1/tb8GBv5aPQA5ZMvpeDnVkpNJ3jAuvmrL2kir3HuijlxhG7njvw9ssxjjBa89E5DrJg==", "dev": true, "requires": { "prop-types": "^15.6.1", - "simplebar": "^4.1.0" + "simplebar": "^4.2.3" } }, "sisteransi": { @@ -18063,9 +18379,9 @@ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" }, "slugify": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.4.tgz", - "integrity": "sha512-KP0ZYk5hJNBS8/eIjGkFDCzGQIoZ1mnfQRYS5WM3273z+fxGWXeN0fkwf2ebEweydv9tioZIHGZKoF21U07/nw==" + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.6.tgz", + "integrity": "sha512-wA9XS475ZmGNlEnYYLPReSfuz/c3VQsEMoU43mi6OnKMCdbnFXd4/Yg7J0lBv8jkPolacMpOrWEaoYxuE1+hoQ==" }, "snake-case": { "version": "2.1.0", @@ -18219,9 +18535,9 @@ } }, "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", "dev": true, "requires": { "debug": "^3.2.5", @@ -18244,9 +18560,10 @@ } }, "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, "requires": { "is-plain-obj": "^1.0.0" } @@ -18276,9 +18593,9 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -18467,9 +18784,9 @@ "dev": true }, "store2": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.8.0.tgz", - "integrity": "sha512-FBJpcOEZQLZBIGL4Yp7W5RgZ0ejaURmcfUjIpyOb64BpI8z/iJXw7zd/NTBeq304dVMxuWVDZEUUCGn7llaVrA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.10.0.tgz", + "integrity": "sha512-tWEpK0snS2RPUq1i3R6OahfJNjWCQYNxq0+by1amCSuw0mXtymJpzmZIeYpA1UAa+7B0grCpNYIbDcd7AgTbFg==", "dev": true }, "stream-browserify": { @@ -18522,7 +18839,8 @@ "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true }, "string-argv": { "version": "0.3.1", @@ -18582,13 +18900,13 @@ } }, "string.prototype.matchall": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-3.0.1.tgz", - "integrity": "sha512-NSiU0ILQr9PQ1SZmM1X327U5LsM+KfDTassJfqN1al1+0iNpKzmQ4BfXOJwRnTEqv8nKJ67mFpqRoPaGWwvy5A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-3.0.2.tgz", + "integrity": "sha512-hsRe42jQ8+OJej2GVjhnSVodQ3NQgHV0FDD6dW7ZTM22J4uIbuYiAADCCc1tfyN7ocEl/KUUbudM36E2tZcF8w==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", + "es-abstract": "^1.14.2", "function-bind": "^1.1.1", "has-symbols": "^1.0.0", "regexp.prototype.flags": "^1.2.0" @@ -18627,10 +18945,29 @@ "function-bind": "^1.1.1" } }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" }, @@ -18638,7 +18975,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -18723,17 +19061,17 @@ "dev": true }, "svgo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.0.tgz", - "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", "dev": true, "requires": { "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.33", - "csso": "^3.5.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", @@ -18788,14 +19126,48 @@ "dev": true }, "symbol.prototype.description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.0.tgz", - "integrity": "sha512-I9mrbZ5M96s7QeJDv95toF1svkUjeBybe8ydhY7foPaBmr0SPJMFupArmMkDrOKTTj0sJVr+nvQNxWLziQ7nDQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.1.tgz", + "integrity": "sha512-smeS1BCkN6lcz1XveFK+cfvfBmNJ6dcPi6lgOnLUU8Po8SmV+rtmYGObbNOisW9RHWMyUfsgMA+eTQg+b3v9Vg==", "dev": true, "requires": { + "es-abstract": "^1.16.0", "has-symbols": "^1.0.0" } }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -18811,29 +19183,30 @@ "https-proxy-agent": "^2.2.1", "node-fetch": "^2.2.0", "uuid": "^3.3.2" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "dev": true - } } }, "telejson": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-2.2.2.tgz", - "integrity": "sha512-YyNwnKY0ilabOwYgC/J754En1xOe5PBIUIw+C9e0+5HjVVcnQE5/gdu2yET2pmSbp5bxIDqYNjvndj2PUkIiYA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-3.1.0.tgz", + "integrity": "sha512-mhiVy+xp2atri1bzSzdy/gVGXlOhibaoZ092AUq5xhnrZGdzhF0fLaOduHJQghkro+qmjYMwhsOL9CkD2zTicg==", "dev": true, "requires": { - "global": "^4.3.2", + "@types/is-function": "^1.0.0", + "global": "^4.4.0", "is-function": "^1.0.1", "is-regex": "^1.0.4", "is-symbol": "^1.0.2", - "isobject": "^3.0.1", - "lodash": "^4.17.11", + "isobject": "^4.0.0", + "lodash": "^4.17.15", "memoizerific": "^1.11.3" + }, + "dependencies": { + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } } }, "term-size": { @@ -18877,6 +19250,12 @@ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -18905,9 +19284,9 @@ } }, "terser": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.4.tgz", - "integrity": "sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", + "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -18960,210 +19339,33 @@ } }, "test-exclude": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", - "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { - "arrify": "^1.0.1", - "micromatch": "^2.3.11", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" } } } }, "testcafe": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/testcafe/-/testcafe-1.4.0.tgz", - "integrity": "sha512-cZsbLCSwMrFeMUicy06DLft3Q9DG2GJfAR+uXBDAQ8wjmLw15A9c2sif3aL+dAHZrWyroKBXEFGMNIcqTsOdPQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/testcafe/-/testcafe-1.6.1.tgz", + "integrity": "sha512-ZVZPBUJUnNoGr+MrCMvY7nUAQU4vCmMfl7kZXpmnsqBSGeiwVGb7Sx4ebDFYMWgEAjtIOdDmw75BwKtHSboyIA==", "dev": true, "requires": { "@types/node": "^10.12.19", @@ -19180,7 +19382,7 @@ "callsite": "^1.0.0", "callsite-record": "^4.0.0", "chai": "^4.1.2", - "chalk": "^1.1.0", + "chalk": "^2.3.0", "chrome-emulated-devices-list": "^0.1.0", "chrome-remote-interface": "^0.25.3", "coffeescript": "^2.3.1", @@ -19198,14 +19400,15 @@ "import-lazy": "^3.1.0", "indent-string": "^1.2.2", "is-ci": "^1.0.10", - "is-docker": "^1.1.0", + "is-docker": "^2.0.0", "is-glob": "^2.0.1", "is-stream": "^1.1.0", "json5": "^2.1.0", "lodash": "^4.17.13", "log-update-async-hook": "^2.0.2", - "make-dir": "^1.3.0", + "make-dir": "^3.0.0", "map-reverse": "^1.0.1", + "mime-db": "^1.41.0", "moment": "^2.10.3", "moment-duration-format-commonjs": "^1.0.0", "mustache": "^2.1.2", @@ -19225,8 +19428,8 @@ "sanitize-filename": "^1.6.0", "source-map-support": "^0.5.5", "strip-bom": "^2.0.0", - "testcafe-browser-tools": "1.6.8", - "testcafe-hammerhead": "14.7.3", + "testcafe-browser-tools": "1.7.1", + "testcafe-hammerhead": "14.10.2", "testcafe-legacy-api": "3.1.11", "testcafe-reporter-json": "^2.1.0", "testcafe-reporter-list": "^2.1.0", @@ -19241,21 +19444,9 @@ }, "dependencies": { "@types/node": { - "version": "10.14.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.15.tgz", - "integrity": "sha512-CBR5avlLcu0YCILJiDIXeU2pTw7UK/NIxfC63m7d7CVamho1qDEzXKkOtEauQRPMy6MI8mLozth+JJkas7HY6g==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "version": "10.17.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.4.tgz", + "integrity": "sha512-F2pgg+LcIr/elguz+x+fdBX5KeZXGUOp7TV8M0TVIrDezYLFRNt8oMTyps0VQ1kj5WGGoR18RdxnRDHXrIFHMQ==", "dev": true }, "babel-core": { @@ -19293,19 +19484,6 @@ } } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "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" - } - }, "ci-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", @@ -19321,6 +19499,12 @@ "ms": "2.0.0" } }, + "dedent": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.4.0.tgz", + "integrity": "sha1-h979BAvUwVldljKC7FfzwqhSVkI=", + "dev": true + }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", @@ -19373,6 +19557,12 @@ "path-type": "^3.0.0" } }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, "globby": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", @@ -19450,41 +19640,27 @@ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", "dev": true }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", "dev": true, "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "semver": "^6.0.0" } }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -19541,21 +19717,18 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", @@ -19565,12 +19738,6 @@ "is-utf8": "^0.2.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, "tmp": { "version": "0.0.28", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", @@ -19583,17 +19750,19 @@ } }, "testcafe-browser-tools": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/testcafe-browser-tools/-/testcafe-browser-tools-1.6.8.tgz", - "integrity": "sha512-xFgwmcAOutSJR6goqO8uUFGF5IF2xRC/Ssh4pB5QZ+bTjYsN5amnjgM+813bDBLelC+HmXKqylviz7Dzxbtbcw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/testcafe-browser-tools/-/testcafe-browser-tools-1.7.1.tgz", + "integrity": "sha512-9Lf4MAmVrxbdP5PiwO2PpLGF3aOXWzlaxVDEDfO2p4orfJNiQ8eTZMMqWWPXDxE/5CqDq/h9xBXjvZo+1cW5ew==", "dev": true, "requires": { "array-find": "^1.0.0", "babel-runtime": "^5.6.15", + "del": "^5.1.0", "graceful-fs": "^4.1.11", "linux-platform-info": "^0.0.3", "mkdirp": "^0.5.1", "mustache": "^2.1.2", + "nanoid": "^2.1.3", "os-family": "^1.0.0", "pify": "^2.3.0", "pinkie": "^2.0.1", @@ -19608,16 +19777,20 @@ "dev": true, "requires": { "core-js": "^1.0.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - } } }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + }, + "nanoid": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.6.tgz", + "integrity": "sha512-2NDzpiuEy3+H0AVtdt8LoFi7PnqkOnIzYmJQp7xsEU6VexLluHQwKREuiz57XaQC5006seIadPrIZJhyS2n7aw==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -19627,18 +19800,18 @@ } }, "testcafe-hammerhead": { - "version": "14.7.3", - "resolved": "https://registry.npmjs.org/testcafe-hammerhead/-/testcafe-hammerhead-14.7.3.tgz", - "integrity": "sha512-R630XXtwKjMVvvOHNW7sB4ZhUgkMnvG/BNHbpkZCrT2PuFA6JMzEv70Af3NR5dUVZ2Ep/e5pERWgrzRJlcCCYQ==", + "version": "14.10.2", + "resolved": "https://registry.npmjs.org/testcafe-hammerhead/-/testcafe-hammerhead-14.10.2.tgz", + "integrity": "sha512-6xxaVU4vO9wHXFpDdyDWVnU1fuDMkvSjuYpKzjrsoA8kNc+zA9T35AMT7EI+pyh7amteJRtsD0jnRU+ASeAfdQ==", "dev": true, "requires": { - "acorn-hammerhead": "^0.2.0", + "acorn-hammerhead": "^0.3.0", "asar": "^2.0.1", "bowser": "1.6.0", "brotli": "^1.3.1", "crypto-md5": "^1.0.0", "css": "2.2.3", - "esotope-hammerhead": "0.3.0", + "esotope-hammerhead": "^0.4.0", "iconv-lite": "0.4.11", "lodash": "^4.17.13", "lru-cache": "2.6.3", @@ -19649,7 +19822,6 @@ "nanoid": "^0.2.2", "os-family": "^1.0.0", "parse5": "2.2.3", - "pify": "^2.3.0", "pinkie": "1.0.0", "read-file-relative": "^1.2.0", "semver": "5.5.0", @@ -19670,6 +19842,15 @@ "integrity": "sha1-UczQtPwMhDWH16VwnOTTt2Kb7cU=", "dev": true }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", @@ -19688,12 +19869,6 @@ "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=", "dev": true }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, "pinkie": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", @@ -19757,16 +19932,14 @@ "dev": true, "requires": { "core-js": "^1.0.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - } } }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + }, "dedent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz", @@ -19849,6 +20022,12 @@ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", "dev": true }, + "throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -19874,9 +20053,9 @@ } }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "time-limit-promise": { @@ -19885,11 +20064,6 @@ "integrity": "sha512-FLHDDsIDducw7MBcRWlFtW2Tm50DoKOSFf0Nzx17qwXj8REXCte0eUkHrJl9QU3Bl9arG3XNYX0PcHpZ9xyuLw==", "dev": true }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -20065,7 +20239,8 @@ "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true }, "truncate-utf8-bytes": { "version": "1.0.2", @@ -20076,6 +20251,12 @@ "utf8-byte-length": "^1.0.1" } }, + "ts-dedent": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-1.1.0.tgz", + "integrity": "sha512-CVCvDwMBWZKjDxpN3mU/Dx1v3k+sJgE8nrhXcC9vRopRfoa7vVzilNvHEAUi5jQnmFHpnxDx5jZdI1TpG8ny2g==", + "dev": true + }, "ts-invariant": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", @@ -20119,9 +20300,9 @@ } }, "ts-node": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", - "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.4.1.tgz", + "integrity": "sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw==", "requires": { "arg": "^4.1.0", "diff": "^4.0.1", @@ -20131,30 +20312,23 @@ } }, "ts-pnp": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.2.tgz", - "integrity": "sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.4.tgz", + "integrity": "sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw==", "dev": true }, "tsconfig-paths": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.8.0.tgz", - "integrity": "sha512-zZEYFo4sjORK8W58ENkRn9s+HmQFkkwydDG7My5s/fnfr2YYCaiyXe/HBUcIgU8epEKOXwiahOO+KZYjiXlWyQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "deepmerge": "^2.0.1", "json5": "^1.0.1", "minimist": "^1.2.0", "strip-bom": "^3.0.0" }, "dependencies": { - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -20183,16 +20357,16 @@ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, "tslint": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz", - "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "builtin-modules": "^1.1.1", "chalk": "^2.3.0", "commander": "^2.12.1", - "diff": "^3.2.0", + "diff": "^4.0.1", "glob": "^7.1.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", @@ -20201,14 +20375,6 @@ "semver": "^5.3.0", "tslib": "^1.8.0", "tsutils": "^2.29.0" - }, - "dependencies": { - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - } } }, "tslint-config-prettier": { @@ -20294,9 +20460,9 @@ "dev": true }, "typescript": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", - "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==" }, "ua-parser-js": { "version": "0.7.20", @@ -20304,12 +20470,12 @@ "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" }, "uglify-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", - "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.8.tgz", + "integrity": "sha512-XhHJ3S3ZyMwP8kY1Gkugqx3CJh2C3O0y8NPiSxtm1tyD/pktLAkFZsFGpuNfTZddKDQ/bbDBLAd2YyA1pbi8HQ==", "dev": true, "requires": { - "commander": "~2.20.0", + "commander": "~2.20.3", "source-map": "~0.6.1" }, "dependencies": { @@ -20339,6 +20505,12 @@ "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", "dev": true }, + "unfetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", + "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -20462,13 +20634,19 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true } } }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "upper-case": { @@ -20488,7 +20666,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -20523,14 +20700,14 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.2.0.tgz", + "integrity": "sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.4.1" }, "dependencies": { "mime": { @@ -20538,6 +20715,16 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true + }, + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } } } }, @@ -20551,19 +20738,6 @@ "requires-port": "^1.0.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, "urlgrey": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", @@ -20664,7 +20838,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "util.promisify": { "version": "1.0.0", @@ -20688,9 +20863,9 @@ "dev": true }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", "dev": true }, "v8-compile-cache": { @@ -20719,9 +20894,9 @@ } }, "value-equal": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", - "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" }, "vary": { "version": "1.1.2", @@ -20741,9 +20916,9 @@ } }, "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, "vscode-jsonrpc": { @@ -20798,9 +20973,9 @@ } }, "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", "requires": { "loose-envify": "^1.0.0" } @@ -20847,9 +21022,9 @@ "dev": true }, "webpack": { - "version": "4.39.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.1.tgz", - "integrity": "sha512-/LAb2TJ2z+eVwisldp3dqTEoNhzp/TLCZlmZm3GGGAlnfIWDgOEE758j/9atklNLfRyhKbZTCOIoPqLJXeBLbQ==", + "version": "4.41.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", @@ -20906,9 +21081,9 @@ } }, "webpack-cli": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", - "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.10.tgz", + "integrity": "sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==", "dev": true, "requires": { "chalk": "2.4.2", @@ -20924,24 +21099,15 @@ "yargs": "13.2.4" }, "dependencies": { - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, "findup-sync": { @@ -20956,43 +21122,6 @@ "resolve-dir": "^1.0.1" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -21013,17 +21142,6 @@ "has-flag": "^3.0.0" } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, "yargs": { "version": "13.2.4", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", @@ -21042,27 +21160,18 @@ "y18n": "^4.0.0", "yargs-parser": "^13.1.0" } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "webpack-dev-middleware": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", - "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", "dev": true, "requires": { "memory-fs": "^0.4.1", - "mime": "^2.4.2", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", "range-parser": "^1.2.1", "webpack-log": "^2.0.0" }, @@ -21076,41 +21185,41 @@ } }, "webpack-dev-server": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.0.tgz", - "integrity": "sha512-Hs8K9yI6pyMvGkaPTeTonhD6JXVsigXDApYk9JLW4M7viVBspQvb1WdAcWxqtmttxNW4zf2UFLsLNe0y87pIGQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", + "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", "dev": true, "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", - "chokidar": "^2.1.6", + "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", + "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.0", + "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.3", + "loglevel": "^1.6.4", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.21", + "portfinder": "^1.0.25", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.4", + "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", "sockjs": "0.3.19", - "sockjs-client": "1.3.0", + "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.0", + "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", "yargs": "12.0.5" @@ -21122,15 +21231,109 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@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" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -21155,6 +21358,29 @@ "has-flag": "^3.0.0" } }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -21163,6 +21389,36 @@ "requires": { "async-limiter": "~1.0.0" } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "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-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -21336,6 +21592,12 @@ "string-width": "^2.1.1" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -21433,70 +21695,45 @@ "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -21504,9 +21741,9 @@ } }, "yarn": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.17.3.tgz", - "integrity": "sha512-CgA8o7nRZaQvmeF/WBx2FC7f9W/0X59T2IaLYqgMo6637wfp5mMEsM3YXoJtKUspnpmDJKl/gGFhnqS+sON7hA==" + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.19.1.tgz", + "integrity": "sha512-gBnfbL9rYY05Gt0cjJhs/siqQXHYlZalTjK3nXn2QO20xbkIFPob+LlH44ML47GcR4VU9/2dYck1BWFM0Javxw==" }, "yn": { "version": "3.1.1", @@ -21519,9 +21756,9 @@ "integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g==" }, "zen-observable-ts": { - "version": "0.8.19", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz", - "integrity": "sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ==", + "version": "0.8.20", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz", + "integrity": "sha512-2rkjiPALhOtRaDX6pWyNqK1fnP5KkJJybYebopNSn6wDG1lxBoFs2+nwwXKoA6glHIrtwrfBBy6da0stkKtTAA==", "requires": { "tslib": "^1.9.3", "zen-observable": "^0.8.0" diff --git a/package.json b/package.json index 8ffd9892f..e0895b046 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,13 @@ }, "homepage": "http://getsaleor.com/", "engines": { - "node": ">=10.6.0", - "npm": ">=6.1.0" + "node": ">=12.12.0", + "npm": ">=6.11.0" }, "dependencies": { - "@material-ui/core": "^3.9.3", - "@material-ui/icons": "^3.0.2", - "@material-ui/styles": "^3.0.0-alpha.10", + "@material-ui/core": "^4.5.1", + "@material-ui/icons": "^4.5.1", + "@material-ui/styles": "^4.5.2", "apollo": "^2.17.2", "apollo-cache-inmemory": "^1.6.2", "apollo-client": "^2.6.4", @@ -45,7 +45,7 @@ "lodash": "^4.17.14", "lodash-es": "^4.17.14", "moment-timezone": "^0.5.26", - "qs": "^6.7.0", + "qs": "^6.9.0", "react": "^16.9.0", "react-apollo": "^3.0.0", "react-dom": "^16.9.0", @@ -63,7 +63,7 @@ "react-sortable-tree": "^2.6.2", "react-svg": "^2.2.11", "slugify": "^1.3.4", - "typescript": "^3.5.3", + "typescript": "^3.6.4", "url-join": "^4.0.1", "use-react-router": "^1.0.7" }, @@ -108,6 +108,7 @@ "babel-plugin-react-intl-auto": "^2.3.0", "codecov": "^3.5.0", "core-js": "^3.2.1", + "cross-env": "^6.0.3", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.14.0", "enzyme-to-json": "^3.3.5", @@ -174,7 +175,7 @@ }, "scripts": { "build": "webpack -p", - "extract-json-messages": "rimraf build/locale && babel src 'src/**/*.{ts,tsx}' -o build/dashboard.bundle.js", + "extract-json-messages": "rimraf build/locale && cross-env NODE_ENV=extract babel src 'src/**/*.{ts,tsx}' -o build/dashboard.bundle.js", "extract-pot-messages": "rip json2pot \"build/locale/**/*.json\" -c description -o locale/messages.pot", "extract-messages": "npm run extract-json-messages && npm run extract-pot-messages", "build-messages": "rip po2json 'locale/**/*.po' -m 'build/locale/**/*.json' -o 'locale' -c 'description'", diff --git a/src/attributes/components/AttributeBulkDeleteDialog/AttributeBulkDeleteDialog.tsx b/src/attributes/components/AttributeBulkDeleteDialog/AttributeBulkDeleteDialog.tsx index 2aba36673..7d55cd49f 100644 --- a/src/attributes/components/AttributeBulkDeleteDialog/AttributeBulkDeleteDialog.tsx +++ b/src/attributes/components/AttributeBulkDeleteDialog/AttributeBulkDeleteDialog.tsx @@ -36,10 +36,7 @@ const AttributeBulkDeleteDialog: React.FC = ({ > ({ +const useStyles = makeStyles(theme => ({ [theme.breakpoints.up("lg")]: { colFaceted: { width: 150 diff --git a/src/attributes/components/AttributeList/index.ts b/src/attributes/components/AttributeList/index.ts index 4a094ce5f..9b2e63fa5 100644 --- a/src/attributes/components/AttributeList/index.ts +++ b/src/attributes/components/AttributeList/index.ts @@ -1,2 +1,2 @@ -export { default } from './AttributeList'; -export * from './AttributeList'; \ No newline at end of file +export { default } from "./AttributeList"; +export * from "./AttributeList"; diff --git a/src/attributes/components/AttributeListPage/index.ts b/src/attributes/components/AttributeListPage/index.ts index e044052b6..2633c7769 100644 --- a/src/attributes/components/AttributeListPage/index.ts +++ b/src/attributes/components/AttributeListPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './AttributeListPage'; -export * from './AttributeListPage'; \ No newline at end of file +export { default } from "./AttributeListPage"; +export * from "./AttributeListPage"; diff --git a/src/attributes/components/AttributePage/index.ts b/src/attributes/components/AttributePage/index.ts index 08880e9d8..b73b512a1 100644 --- a/src/attributes/components/AttributePage/index.ts +++ b/src/attributes/components/AttributePage/index.ts @@ -1,2 +1,2 @@ -export { default } from './AttributePage'; -export * from './AttributePage'; \ No newline at end of file +export { default } from "./AttributePage"; +export * from "./AttributePage"; diff --git a/src/attributes/components/AttributeProperties/index.ts b/src/attributes/components/AttributeProperties/index.ts index 4f02c2478..df50bbd1b 100644 --- a/src/attributes/components/AttributeProperties/index.ts +++ b/src/attributes/components/AttributeProperties/index.ts @@ -1,2 +1,2 @@ -export { default } from './AttributeProperties'; -export * from './AttributeProperties'; \ No newline at end of file +export { default } from "./AttributeProperties"; +export * from "./AttributeProperties"; diff --git a/src/attributes/components/AttributeValueDeleteDialog/AttributeValueDeleteDialog.tsx b/src/attributes/components/AttributeValueDeleteDialog/AttributeValueDeleteDialog.tsx index 032ddbf40..e8872a427 100644 --- a/src/attributes/components/AttributeValueDeleteDialog/AttributeValueDeleteDialog.tsx +++ b/src/attributes/components/AttributeValueDeleteDialog/AttributeValueDeleteDialog.tsx @@ -41,7 +41,7 @@ const AttributeValueDeleteDialog: React.FC = ({ {useName ? ( = ({ /> ) : ( void; } -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ columnAdmin: { width: "50%" }, columnDrag: { - width: 48 + theme.spacing.unit * 1.5 + width: 48 + theme.spacing(1.5) }, columnStore: { width: "50%" @@ -45,9 +44,9 @@ const useStyles = makeStyles((theme: Theme) => ({ }, iconCell: { "&:last-child": { - paddingRight: theme.spacing.unit + paddingRight: theme.spacing() }, - width: 48 + theme.spacing.unit * 1.5 + width: 48 + theme.spacing(1.5) }, link: { cursor: "pointer" diff --git a/src/attributes/components/AttributeValues/index.ts b/src/attributes/components/AttributeValues/index.ts index dae7f6baf..02874e273 100644 --- a/src/attributes/components/AttributeValues/index.ts +++ b/src/attributes/components/AttributeValues/index.ts @@ -1,2 +1,2 @@ -export { default } from './AttributeValues'; -export * from './AttributeValues'; \ No newline at end of file +export { default } from "./AttributeValues"; +export * from "./AttributeValues"; diff --git a/src/attributes/views/AttributeCreate/AttributeCreate.tsx b/src/attributes/views/AttributeCreate/AttributeCreate.tsx index 4a7f87aae..d027089b6 100644 --- a/src/attributes/views/AttributeCreate/AttributeCreate.tsx +++ b/src/attributes/views/AttributeCreate/AttributeCreate.tsx @@ -91,7 +91,7 @@ const AttributeDetails: React.FC = ({ params }) => { field: "name", message: intl.formatMessage( { - defaultMessage: "A value named { name } already exists", + defaultMessage: "A value named {name} already exists", description: "attribute value edit error" }, { @@ -112,7 +112,7 @@ const AttributeDetails: React.FC = ({ params }) => { field: "name", message: intl.formatMessage( { - defaultMessage: "A value named { name } already exists", + defaultMessage: "A value named {name} already exists", description: "attribute value edit error" }, { diff --git a/src/attributes/views/AttributeList/filters.ts b/src/attributes/views/AttributeList/filters.ts index 51db99dc9..e6f2b9d1d 100644 --- a/src/attributes/views/AttributeList/filters.ts +++ b/src/attributes/views/AttributeList/filters.ts @@ -12,12 +12,12 @@ import { export const PRODUCT_FILTERS_KEY = "productFilters"; export function getFilterVariables( - params: AttributeListUrlFilters - ): AttributeFilterInput { - return { - search: params.query - }; - } + params: AttributeListUrlFilters +): AttributeFilterInput { + return { + search: params.query + }; +} export const { deleteFilterTab, diff --git a/src/auth/components/Layout.tsx b/src/auth/components/Layout.tsx index 3d217293b..8a8d9edb7 100644 --- a/src/auth/components/Layout.tsx +++ b/src/auth/components/Layout.tsx @@ -1,5 +1,4 @@ -import { Theme } from "@material-ui/core/styles"; -import { makeStyles } from "@material-ui/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import SVG from "react-inlinesvg"; @@ -9,24 +8,24 @@ import saleorLightLogo from "@assets/images/logo-light.svg"; import useTheme from "@saleor/hooks/useTheme"; const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ logo: { "& svg": { display: "block", height: 40, - marginBottom: theme.spacing.unit * 4 + marginBottom: theme.spacing(4) } }, mainPanel: { [theme.breakpoints.down("sm")]: { - padding: theme.spacing.unit * 2 + padding: theme.spacing(2) }, background: theme.palette.background.paper, display: "flex", flexDirection: "column", height: "100vh", justifyContent: "center", - padding: theme.spacing.unit * 6, + padding: theme.spacing(6), width: "100%" }, mainPanelContent: { diff --git a/src/auth/components/LoginLoading/LoginLoading.tsx b/src/auth/components/LoginLoading/LoginLoading.tsx index f53b921aa..63ecfae8d 100644 --- a/src/auth/components/LoginLoading/LoginLoading.tsx +++ b/src/auth/components/LoginLoading/LoginLoading.tsx @@ -1,21 +1,26 @@ import CircularProgress from "@material-ui/core/CircularProgress"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; -const styles = createStyles({ - root: { - alignItems: "center", - display: "flex", - height: "100vh", - justifyContent: "center" - } -}); -const LoginLoading = withStyles(styles, { name: "LoginLoading" })( - ({ classes }: WithStyles) => ( +const useStyles = makeStyles( + { + root: { + alignItems: "center", + display: "flex", + height: "100vh", + justifyContent: "center" + } + }, + { name: "LoginLoading" } +); +const LoginLoading: React.FC = props => { + const classes = useStyles(props); + + return (
- ) -); + ); +}; LoginLoading.displayName = "LoginLoading"; export default LoginLoading; diff --git a/src/auth/components/LoginPage/LoginPage.tsx b/src/auth/components/LoginPage/LoginPage.tsx index eeb409627..fc68ed093 100644 --- a/src/auth/components/LoginPage/LoginPage.tsx +++ b/src/auth/components/LoginPage/LoginPage.tsx @@ -1,10 +1,5 @@ import Button from "@material-ui/core/Button"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import React from "react"; @@ -19,8 +14,8 @@ export interface FormData { password: string; } -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ buttonContainer: { display: "flex", justifyContent: "flex-end" @@ -38,93 +33,90 @@ const styles = (theme: Theme) => color: theme.palette.error.contrastText }, background: theme.palette.error.main, - borderRadius: theme.spacing.unit, - marginBottom: theme.spacing.unit * 3, - padding: theme.spacing.unit * 1.5 + borderRadius: theme.spacing(), + marginBottom: theme.spacing(3), + padding: theme.spacing(1.5) } - }); + }), + { name: "LoginCard" } +); -export interface LoginCardProps extends WithStyles { +export interface LoginCardProps { error: boolean; disableLoginButton: boolean; onPasswordRecovery: () => void; onSubmit?(event: FormData); } -const LoginCard = withStyles(styles, { name: "LoginCard" })( - ({ - classes, - error, - disableLoginButton, - onPasswordRecovery, - onSubmit - }: LoginCardProps) => { - const intl = useIntl(); +const LoginCard: React.FC = props => { + const { error, disableLoginButton, onPasswordRecovery, onSubmit } = props; - return ( -
- {({ change: handleChange, data, submit: handleSubmit }) => ( - <> - {error && ( -
- - - -
- )} - - - - -
- + const classes = useStyles(props); + const intl = useIntl(); + + return ( + + {({ change: handleChange, data, submit: handleSubmit }) => ( + <> + {error && ( +
+ + +
- - - - - - )} - - ); - } -); + )} + + + + +
+ +
+ + + + + + )} + + ); +}; LoginCard.displayName = "LoginCard"; export default LoginCard; diff --git a/src/auth/components/NewPasswordPage/NewPasswordPage.tsx b/src/auth/components/NewPasswordPage/NewPasswordPage.tsx index 48aa0ada7..83e003579 100644 --- a/src/auth/components/NewPasswordPage/NewPasswordPage.tsx +++ b/src/auth/components/NewPasswordPage/NewPasswordPage.tsx @@ -1,7 +1,7 @@ import Button from "@material-ui/core/Button"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; diff --git a/src/auth/components/ResetPasswordPage/ResetPasswordPage.tsx b/src/auth/components/ResetPasswordPage/ResetPasswordPage.tsx index 38e18d00b..e5647a944 100644 --- a/src/auth/components/ResetPasswordPage/ResetPasswordPage.tsx +++ b/src/auth/components/ResetPasswordPage/ResetPasswordPage.tsx @@ -1,8 +1,7 @@ import Button from "@material-ui/core/Button"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -11,15 +10,15 @@ import FormSpacer from "@saleor/components/FormSpacer"; import { commonMessages } from "@saleor/intl"; const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ + errorText: { + color: theme.palette.error.contrastText + }, panel: { - "& span": { - color: theme.palette.error.contrastText - }, background: theme.palette.error.main, - borderRadius: theme.spacing.unit, - marginBottom: theme.spacing.unit * 3, - padding: theme.spacing.unit * 1.5 + borderRadius: theme.spacing(), + marginBottom: theme.spacing(3), + padding: theme.spacing(1.5) }, submit: { width: "100%" @@ -51,7 +50,9 @@ const ResetPasswordPage: React.FC = props => { <> {!!error && (
- {error} + + {error} +
)} diff --git a/src/auth/components/ResetPasswordSuccessPage/ResetPasswordSuccessPage.tsx b/src/auth/components/ResetPasswordSuccessPage/ResetPasswordSuccessPage.tsx index 744737373..52c7697ff 100644 --- a/src/auth/components/ResetPasswordSuccessPage/ResetPasswordSuccessPage.tsx +++ b/src/auth/components/ResetPasswordSuccessPage/ResetPasswordSuccessPage.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; diff --git a/src/auth/misc.ts b/src/auth/misc.ts index 497d8a650..975ffc5cf 100644 --- a/src/auth/misc.ts +++ b/src/auth/misc.ts @@ -1,4 +1,4 @@ -import { PermissionEnum } from '../types/globalTypes' +import { PermissionEnum } from "../types/globalTypes"; import { User } from "./types/User"; export const hasPermission = (permission: PermissionEnum, user: User) => diff --git a/src/categories/components/CategoryBackground/CategoryBackground.tsx b/src/categories/components/CategoryBackground/CategoryBackground.tsx index 2d43de581..ca042996e 100644 --- a/src/categories/components/CategoryBackground/CategoryBackground.tsx +++ b/src/categories/components/CategoryBackground/CategoryBackground.tsx @@ -1,6 +1,5 @@ -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import TextField from "@material-ui/core/TextField"; -import makeStyles from "@material-ui/styles/makeStyles"; import React from "react"; import Button from "@material-ui/core/Button"; @@ -16,7 +15,7 @@ import { FormattedMessage, useIntl } from "react-intl"; import { CategoryDetails_category_backgroundImage } from "../../types/CategoryDetails"; import { FormData } from "../CategoryUpdatePage"; -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ fileField: { display: "none" }, @@ -29,11 +28,11 @@ const useStyles = makeStyles((theme: Theme) => ({ imageContainer: { background: "#ffffff", border: "1px solid #eaeaea", - borderRadius: theme.spacing.unit, + borderRadius: theme.spacing(), height: 148, justifySelf: "start", overflow: "hidden", - padding: theme.spacing.unit * 2, + padding: theme.spacing(2), position: "relative", width: 148 } diff --git a/src/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx b/src/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx index df277c317..aa1eb6a2b 100644 --- a/src/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx +++ b/src/categories/components/CategoryDeleteDialog/CategoryDeleteDialog.tsx @@ -4,19 +4,14 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogContentText from "@material-ui/core/DialogContentText"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; import { buttonMessages } from "@saleor/intl"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ deleteButton: { "&:hover": { backgroundColor: theme.palette.error.main @@ -24,49 +19,58 @@ const styles = (theme: Theme) => backgroundColor: theme.palette.error.main, color: theme.palette.error.contrastText } - }); + }), + { + name: "CategoryDeleteDialog" + } +); -export interface CategoryDeleteDialogProps extends WithStyles { +export interface CategoryDeleteDialogProps { open: boolean; name: string; onClose(); onConfirm(); } -const CategoryDeleteDialog = withStyles(styles, { - name: "CategoryDeleteDialog" -})(({ classes, name, open, onConfirm, onClose }: CategoryDeleteDialogProps) => ( - - - - - - +const CategoryDeleteDialog: React.FC = props => { + const { name, open, onConfirm, onClose } = props; + + const classes = useStyles(props); + + return ( + + {name} - }} + defaultMessage="Delete category" + description="dialog title" /> - - - - - - - -)); + + + + {name} + }} + /> + + + + + + + + ); +}; + CategoryDeleteDialog.displayName = "CategoryDeleteDialog"; export default CategoryDeleteDialog; diff --git a/src/categories/components/CategoryList/CategoryList.tsx b/src/categories/components/CategoryList/CategoryList.tsx index 5ae05489e..8426d628b 100644 --- a/src/categories/components/CategoryList/CategoryList.tsx +++ b/src/categories/components/CategoryList/CategoryList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -20,8 +15,8 @@ import TablePagination from "@saleor/components/TablePagination"; import { maybe, renderCollection } from "@saleor/misc"; import { ListActions, ListProps } from "@saleor/types"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ [theme.breakpoints.up("lg")]: { colName: { width: 840 @@ -45,7 +40,9 @@ const styles = (theme: Theme) => tableRow: { cursor: "pointer" } - }); + }), + { name: "CategoryList" } +); interface CategoryListProps extends ListProps, ListActions { categories?: CategoryFragment[]; @@ -55,10 +52,9 @@ interface CategoryListProps extends ListProps, ListActions { const numberOfColumns = 4; -const CategoryList = withStyles(styles, { name: "CategoryList" })( - ({ +const CategoryList: React.FC = props => { + const { categories, - classes, disabled, settings, pageInfo, @@ -72,7 +68,11 @@ const CategoryList = withStyles(styles, { name: "CategoryList" })( onPreviousPage, onUpdateListSettings, onRowClick - }: CategoryListProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; + CategoryList.displayName = "CategoryList"; export default CategoryList; diff --git a/src/categories/components/CategoryProductList/CategoryProductList.tsx b/src/categories/components/CategoryProductList/CategoryProductList.tsx index 1d7a894a6..82499e54f 100644 --- a/src/categories/components/CategoryProductList/CategoryProductList.tsx +++ b/src/categories/components/CategoryProductList/CategoryProductList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -25,8 +20,8 @@ import { ListActions, ListProps } from "@saleor/types"; import React from "react"; import { CategoryDetails_category_products_edges_node } from "../../types/CategoryDetails"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ [theme.breakpoints.up("lg")]: { colName: { width: "auto" @@ -69,20 +64,20 @@ const styles = (theme: Theme) => textRight: { textAlign: "right" } - }); + }), + { + name: "CategoryProductList" + } +); -interface CategoryProductListProps - extends ListProps, - ListActions, - WithStyles { +interface CategoryProductListProps extends ListProps, ListActions { products: CategoryDetails_category_products_edges_node[]; } -export const CategoryProductList = withStyles(styles, { - name: "CategoryProductList" -})( - ({ - classes, +export const CategoryProductList: React.FC< + CategoryProductListProps +> = props => { + const { disabled, isChecked, pageInfo, @@ -94,150 +89,150 @@ export const CategoryProductList = withStyles(styles, { onNextPage, onPreviousPage, onRowClick - }: CategoryProductListProps) => { - const intl = useIntl(); + } = props; - const numberOfColumns = 5; + const classes = useStyles(props); + const intl = useIntl(); - return ( -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {renderCollection( - products, - product => { - const isSelected = product ? isChecked(product.id) : false; + const numberOfColumns = 5; - return ( - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {renderCollection( + products, + product => { + const isSelected = product ? isChecked(product.id) : false; + + return ( + + + toggle(product.id)} + /> + + product.thumbnail.url)} > - - toggle(product.id)} + {product ? product.name : } + + + {product && product.productType ? ( + product.productType.name + ) : ( + + )} + + + {product && + maybe(() => product.isAvailable !== undefined) ? ( + - - product.thumbnail.url)} - > - {product ? product.name : } - - - {product && product.productType ? ( - product.productType.name - ) : ( - - )} - - - {product && - maybe(() => product.isAvailable !== undefined) ? ( - - ) : ( - - )} - - - {maybe(() => product.basePrice) && - maybe(() => product.basePrice.amount) !== undefined && - maybe(() => product.basePrice.currency) !== undefined ? ( - - ) : ( - - )} - - - ); - }, - () => ( - - - + ) : ( + + )} + + + {maybe(() => product.basePrice) && + maybe(() => product.basePrice.amount) !== undefined && + maybe(() => product.basePrice.currency) !== undefined ? ( + + ) : ( + + )} - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + +
+ ); +}; + CategoryProductList.displayName = "CategoryProductList"; export default CategoryProductList; diff --git a/src/categories/views/CategoryDetails.tsx b/src/categories/views/CategoryDetails.tsx index d0b5687a4..f5216d3f3 100644 --- a/src/categories/views/CategoryDetails.tsx +++ b/src/categories/views/CategoryDetails.tsx @@ -369,10 +369,7 @@ export const CategoryDetails: React.FC = ({ > params.ids.length @@ -409,10 +406,7 @@ export const CategoryDetails: React.FC = ({ {" "} params.ids.length diff --git a/src/categories/views/CategoryList/CategoryList.tsx b/src/categories/views/CategoryList/CategoryList.tsx index e9b61dcd5..d3ec14a44 100644 --- a/src/categories/views/CategoryList/CategoryList.tsx +++ b/src/categories/views/CategoryList/CategoryList.tsx @@ -222,10 +222,7 @@ export const CategoryList: React.FC = ({ params }) => { > params.ids.length), displayQuantity: ( diff --git a/src/collections/components/CollectionImage/CollectionImage.tsx b/src/collections/components/CollectionImage/CollectionImage.tsx index 8162c60b6..a4cb01d32 100644 --- a/src/collections/components/CollectionImage/CollectionImage.tsx +++ b/src/collections/components/CollectionImage/CollectionImage.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -19,15 +14,15 @@ import Skeleton from "@saleor/components/Skeleton"; import { commonMessages } from "@saleor/intl"; import { CollectionDetails_collection_backgroundImage } from "../../types/CollectionDetails"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ PhotosIcon: { height: "64px", margin: "0 auto", width: "64px" }, PhotosIconContainer: { - margin: `${theme.spacing.unit * 5}px 0`, + margin: theme.spacing(5, 0), textAlign: "center" }, fileField: { @@ -42,15 +37,19 @@ const styles = (theme: Theme) => imageContainer: { background: "#ffffff", border: "1px solid #eaeaea", - borderRadius: theme.spacing.unit, + borderRadius: theme.spacing(), height: 148, justifySelf: "start", overflow: "hidden", - padding: theme.spacing.unit * 2, + padding: theme.spacing(2), position: "relative", width: 148 } - }); + }), + { + name: "CollectionImage" + } +); export interface CollectionImageProps { data: { @@ -62,83 +61,78 @@ export interface CollectionImageProps { onImageUpload: (file: File) => void; } -export const CollectionImage = withStyles(styles)( - ({ - classes, - data, - onImageUpload, - image, - onChange, - onImageDelete - }: CollectionImageProps & WithStyles) => { - const anchor = React.useRef(); - const intl = useIntl(); +export const CollectionImage: React.FC = props => { + const { data, onImageUpload, image, onChange, onImageDelete } = props; - const handleImageUploadButtonClick = () => anchor.current.click(); + const anchor = React.useRef(); + const classes = useStyles(props); + const intl = useIntl(); - return ( - - - - onImageUpload(event.target.files[0])} - type="file" - ref={anchor} - /> - - } - /> - {image === undefined ? ( - -
-
- -
-
-
- ) : image === null ? ( - - ) : ( - - - - )} - {image && ( + const handleImageUploadButtonClick = () => anchor.current.click(); + + return ( + + -
- - - + + onImageUpload(event.target.files[0])} + type="file" + ref={anchor} + /> - )} -
- ); - } -); + } + /> + {image === undefined ? ( + +
+
+ +
+
+
+ ) : image === null ? ( + + ) : ( + + + + )} + {image && ( + <> +
+ + + + + )} +
+ ); +}; + CollectionImage.displayName = "CollectionImage"; export default CollectionImage; diff --git a/src/collections/components/CollectionList/CollectionList.tsx b/src/collections/components/CollectionList/CollectionList.tsx index aeca0420e..e54764f5d 100644 --- a/src/collections/components/CollectionList/CollectionList.tsx +++ b/src/collections/components/CollectionList/CollectionList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -21,8 +16,8 @@ import { maybe, renderCollection } from "@saleor/misc"; import { ListActions, ListProps } from "@saleor/types"; import { CollectionList_collections_edges_node } from "../../types/CollectionList"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ [theme.breakpoints.up("lg")]: { colAvailability: { width: 240 @@ -42,20 +37,18 @@ const styles = (theme: Theme) => tableRow: { cursor: "pointer" as "pointer" } - }); + }), + { name: "CollectionList" } +); -interface CollectionListProps - extends ListProps, - ListActions, - WithStyles { +interface CollectionListProps extends ListProps, ListActions { collections: CollectionList_collections_edges_node[]; } const numberOfColumns = 5; -const CollectionList = withStyles(styles, { name: "CollectionList" })( - ({ - classes, +const CollectionList: React.FC = props => { + const { collections, disabled, settings, @@ -69,122 +62,121 @@ const CollectionList = withStyles(styles, { name: "CollectionList" })( toggle, toggleAll, toolbar - }: CollectionListProps) => { - const intl = useIntl(); + } = props; - return ( - - - - - - - - - - - - - - - - - - - {renderCollection( - collections, - collection => { - const isSelected = collection ? isChecked(collection.id) : false; - return ( - collection.id)} + const classes = useStyles(props); + const intl = useIntl(); + + return ( +
+ + + + + + + + + + + + + + + + + + {renderCollection( + collections, + collection => { + const isSelected = collection ? isChecked(collection.id) : false; + return ( + collection.id)} + > + + toggle(collection.id)} + /> + + + {maybe(() => collection.name, )} + + + {maybe( + () => collection.products.totalCount, + + )} + + collection.isPublished)} > - - toggle(collection.id)} - /> - - - {maybe( - () => collection.name, - - )} - - - {maybe( - () => collection.products.totalCount, - - )} - - collection.isPublished)} - > - {maybe( - () => ( - - ), - - )} - - - ); - }, - () => ( - - - + {maybe( + () => ( + + ), + + )} - ) - )} - -
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + + ); +}; + CollectionList.displayName = "CollectionList"; export default CollectionList; diff --git a/src/collections/components/CollectionProducts/CollectionProducts.tsx b/src/collections/components/CollectionProducts/CollectionProducts.tsx index 8cc81be9f..871ba72b6 100644 --- a/src/collections/components/CollectionProducts/CollectionProducts.tsx +++ b/src/collections/components/CollectionProducts/CollectionProducts.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -29,13 +24,13 @@ import { maybe, renderCollection } from "../../../misc"; import { ListActions, PageListProps } from "../../../types"; import { CollectionDetails_collection } from "../../types/CollectionDetails"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ colActions: { "&:last-child": { paddingRight: 0 }, - width: 76 + theme.spacing.unit / 2 + width: 76 + theme.spacing(0.5) }, colName: { paddingLeft: 0, @@ -56,21 +51,19 @@ const styles = (theme: Theme) => tableRow: { cursor: "pointer" } - }); + }), + { name: "CollectionProducts" } +); -export interface CollectionProductsProps - extends PageListProps, - ListActions, - WithStyles { +export interface CollectionProductsProps extends PageListProps, ListActions { collection: CollectionDetails_collection; onProductUnassign: (id: string, event: React.MouseEvent) => void; } const numberOfColumns = 5; -const CollectionProducts = withStyles(styles, { name: "CollectionProducts" })( - ({ - classes, +const CollectionProducts: React.FC = props => { + const { collection, disabled, onAdd, @@ -84,165 +77,165 @@ const CollectionProducts = withStyles(styles, { name: "CollectionProducts" })( toggle, toggleAll, toolbar - }: CollectionProductsProps) => { - const intl = useIntl(); + } = props; - return ( - - collection.name, "...") - } - ) - ) : ( - - ) - } - toolbar={ - - } - /> - - - collection.products.edges.map(edge => edge.node) - )} - toggleAll={toggleAll} - toolbar={toolbar} - > - - - - - - - - - - - - - - - - pageInfo.hasNextPage)} - onNextPage={onNextPage} - hasPreviousPage={maybe(() => pageInfo.hasPreviousPage)} - onPreviousPage={onPreviousPage} - /> - - - - {renderCollection( - maybe(() => collection.products.edges.map(edge => edge.node)), - product => { - const isSelected = product ? isChecked(product.id) : false; + const classes = useStyles(props); + const intl = useIntl(); - return ( - - - toggle(product.id)} - /> - - product.thumbnail.url)} - > - {maybe(() => product.name, )} - - - {maybe( - () => product.productType.name, - - )} - - - {maybe( - () => ( - - ), - - )} - - - onProductUnassign(product.id, event)} - > - - - - - ); + return ( + + ( - - - - + { + name: maybe(() => collection.name, "...") + } + ) + ) : ( + + ) + } + toolbar={ + + } + /> +
+ collection.products.edges.map(edge => edge.node))} + toggleAll={toggleAll} + toolbar={toolbar} + > + + + + + + + + + + + + + + + + pageInfo.hasNextPage)} + onNextPage={onNextPage} + hasPreviousPage={maybe(() => pageInfo.hasPreviousPage)} + onPreviousPage={onPreviousPage} + /> + + + + {renderCollection( + maybe(() => collection.products.edges.map(edge => edge.node)), + product => { + const isSelected = product ? isChecked(product.id) : false; + + return ( + + + toggle(product.id)} + /> + + product.thumbnail.url)} + > + {maybe(() => product.name, )} + + + {maybe( + () => product.productType.name, + + )} + + + {maybe( + () => ( + + ), + + )} + + + onProductUnassign(product.id, event)} + > + + - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + + ) + )} + + + + ); +}; + CollectionProducts.displayName = "CollectionProducts"; export default CollectionProducts; diff --git a/src/collections/views/CollectionDetails.tsx b/src/collections/views/CollectionDetails.tsx index e2e708fc5..6832343bb 100644 --- a/src/collections/views/CollectionDetails.tsx +++ b/src/collections/views/CollectionDetails.tsx @@ -231,7 +231,7 @@ export const CollectionDetails: React.FC = ({ onAdd={() => openModal("assign")} onBack={() => navigate(collectionListUrl())} disabled={loading} - collection={data.collection} + collection={maybe(() => data.collection)} isFeatured={maybe( () => data.shop.homepageCollection.id === data.collection.id, @@ -349,10 +349,7 @@ export const CollectionDetails: React.FC = ({ > params.ids.length), displayQuantity: ( diff --git a/src/collections/views/CollectionList/CollectionList.tsx b/src/collections/views/CollectionList/CollectionList.tsx index c0828b362..c85b99e17 100644 --- a/src/collections/views/CollectionList/CollectionList.tsx +++ b/src/collections/views/CollectionList/CollectionList.tsx @@ -268,10 +268,7 @@ export const CollectionList: React.FC = ({ params }) => { > params.ids.length), displayQuantity: ( @@ -306,10 +303,7 @@ export const CollectionList: React.FC = ({ params }) => { > params.ids.length), displayQuantity: ( @@ -343,10 +337,7 @@ export const CollectionList: React.FC = ({ params }) => { > params.ids.length), displayQuantity: ( diff --git a/src/components/AccountPermissions/AccountPermissions.tsx b/src/components/AccountPermissions/AccountPermissions.tsx index c695a6663..d518673da 100644 --- a/src/components/AccountPermissions/AccountPermissions.tsx +++ b/src/components/AccountPermissions/AccountPermissions.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -15,21 +10,23 @@ import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; import { ShopInfo_shop_permissions } from "@saleor/components/Shop/types/ShopInfo"; import Skeleton from "@saleor/components/Skeleton"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ checkboxContainer: { - marginTop: theme.spacing.unit + marginTop: theme.spacing() }, hr: { - backgroundColor: theme.overrides.MuiCard.root.borderColor, + backgroundColor: theme.palette.divider, border: "none", height: 1, marginBottom: 0, marginTop: 0 } - }); + }), + { name: "AccountPermissions" } +); -interface AccountPermissionsProps extends WithStyles { +interface AccountPermissionsProps { permissions: ShopInfo_shop_permissions[]; data: { hasFullAccess: boolean; @@ -39,89 +36,85 @@ interface AccountPermissionsProps extends WithStyles { onChange: (event: React.ChangeEvent, cb?: () => void) => void; } -const AccountPermissions = withStyles(styles, { name: "AccountPermissions" })( - ({ - classes, - data, - disabled, - permissions, - onChange - }: AccountPermissionsProps) => { - const intl = useIntl(); +const AccountPermissions: React.FC = props => { + const { data, disabled, permissions, onChange } = props; - const handleFullAccessChange = (event: React.ChangeEvent) => - onChange(event, () => - onChange({ - target: { - name: "permissions", - value: event.target.value ? permissions.map(perm => perm.code) : [] - } - } as any) - ); - const handlePermissionChange = (event: React.ChangeEvent) => { + const classes = useStyles(props); + const intl = useIntl(); + + const handleFullAccessChange = (event: React.ChangeEvent) => + onChange(event, () => onChange({ target: { name: "permissions", - value: event.target.value - ? data.permissions.concat([event.target.name]) - : data.permissions.filter(perm => perm !== event.target.name) + value: event.target.value ? permissions.map(perm => perm.code) : [] } - } as any); - }; - return ( - - - - - - -
- -
-
- {!data.hasFullAccess && ( - <> -
- - {permissions === undefined ? ( - - ) : ( - permissions.map(perm => ( -
- userPerm === perm.code - ).length === 1 - } - disabled={disabled} - label={perm.name.replace(/\./, "")} - name={perm.code} - onChange={handlePermissionChange} - /> -
- )) - )} -
- - )} -
+ } as any) ); - } -); + const handlePermissionChange = (event: React.ChangeEvent) => { + onChange({ + target: { + name: "permissions", + value: event.target.value + ? data.permissions.concat([event.target.name]) + : data.permissions.filter(perm => perm !== event.target.name) + } + } as any); + }; + return ( + + + + + + +
+ +
+
+ {!data.hasFullAccess && ( + <> +
+ + {permissions === undefined ? ( + + ) : ( + permissions.map(perm => ( +
+ userPerm === perm.code + ).length === 1 + } + disabled={disabled} + label={perm.name.replace(/\./, "")} + name={perm.code} + onChange={handlePermissionChange} + /> +
+ )) + )} +
+ + )} +
+ ); +}; + AccountPermissions.displayName = "AccountPermissions"; export default AccountPermissions; diff --git a/src/components/ActionDialog/ActionDialog.tsx b/src/components/ActionDialog/ActionDialog.tsx index 24589a852..5607851ba 100644 --- a/src/components/ActionDialog/ActionDialog.tsx +++ b/src/components/ActionDialog/ActionDialog.tsx @@ -3,12 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -18,8 +13,8 @@ import ConfirmButton, { ConfirmButtonTransitionState } from "../ConfirmButton/ConfirmButton"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ deleteButton: { "&:hover": { backgroundColor: theme.palette.error.main @@ -27,12 +22,15 @@ const styles = (theme: Theme) => backgroundColor: theme.palette.error.main, color: theme.palette.error.contrastText } - }); + }), + { name: "ActionDialog" } +); -interface ActionDialogProps extends WithStyles { +interface ActionDialogProps { children?: React.ReactNode; confirmButtonLabel?: string; confirmButtonState: ConfirmButtonTransitionState; + maxWidth?: "xs" | "sm" | "md" | "lg" | "xl" | false; open: boolean; title: string; variant?: "default" | "delete"; @@ -40,46 +38,52 @@ interface ActionDialogProps extends WithStyles { onConfirm(); } -const ActionDialog = withStyles(styles, { name: "ActionDialog" })( - ({ +const ActionDialog: React.FC = props => { + const { children, - classes, confirmButtonLabel, confirmButtonState, open, title, variant, onConfirm, - onClose - }: ActionDialogProps) => { - const intl = useIntl(); + onClose, + ...rest + } = props; - return ( - - {title} - {children} - - - - {confirmButtonLabel || - (variant === "delete" - ? intl.formatMessage(buttonMessages.delete) - : intl.formatMessage(buttonMessages.confirm))} - - - - ); - } -); + const classes = useStyles(props); + const intl = useIntl(); + + return ( + + {title} + {children} + + + + {confirmButtonLabel || + (variant === "delete" + ? intl.formatMessage(buttonMessages.delete) + : intl.formatMessage(buttonMessages.confirm))} + + + + ); +}; + +ActionDialog.defaultProps = { + maxWidth: "xs", + variant: "default" +}; ActionDialog.displayName = "ActionDialog"; export default ActionDialog; diff --git a/src/components/AddressEdit/AddressEdit.tsx b/src/components/AddressEdit/AddressEdit.tsx index cd62da230..ebb4b9d5c 100644 --- a/src/components/AddressEdit/AddressEdit.tsx +++ b/src/components/AddressEdit/AddressEdit.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; @@ -16,16 +11,15 @@ import SingleAutocompleteSelectField, { SingleAutocompleteChoiceType } from "../SingleAutocompleteSelectField"; -const styles = (theme: Theme) => - createStyles({ - root: { - display: "grid", - gridColumnGap: `${theme.spacing.unit * 2}px`, - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "1fr 1fr" + } +})); -interface AddressEditProps extends WithStyles { +interface AddressEditProps { countries: SingleAutocompleteChoiceType[]; countryDisplayValue: string; data: AddressTypeInput; @@ -35,9 +29,8 @@ interface AddressEditProps extends WithStyles { onCountryChange(event: React.ChangeEvent); } -const AddressEdit = withStyles(styles, { name: "AddressEdit" })( - ({ - classes, +const AddressEdit: React.FC = props => { + const { countries, countryDisplayValue, data, @@ -45,164 +38,165 @@ const AddressEdit = withStyles(styles, { name: "AddressEdit" })( errors, onChange, onCountryChange - }: AddressEditProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - <> -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- - - - - -
-
- -
-
- -
-
+ const intl = useIntl(); - -
-
- -
-
- -
+ return ( + <> +
+
+
- - ); - } -); +
+ +
+
+ +
+
+ +
+
+ +
+
+ + + + + +
+
+ +
+
+ +
+
+ + +
+
+ +
+
+ +
+
+ + ); +}; AddressEdit.displayName = "AddressEdit"; export default AddressEdit; diff --git a/src/components/AddressFormatter/AddressFormatter.tsx b/src/components/AddressFormatter/AddressFormatter.tsx index e23c9fe1e..a7f7f59ac 100644 --- a/src/components/AddressFormatter/AddressFormatter.tsx +++ b/src/components/AddressFormatter/AddressFormatter.tsx @@ -18,23 +18,23 @@ const AddressFormatter: React.FC = ({ address }) => { fontStyle: "inherit" }} > - + {address.firstName} {address.lastName} {address.companyName && ( - {address.companyName} + {address.companyName} )} - + {address.streetAddress1}
{address.streetAddress2}
- + {" "} {address.postalCode} {address.city} {address.cityArea ? ", " + address.cityArea : ""} - + {address.countryArea ? address.countryArea + ", " + address.country.country : address.country.country} diff --git a/src/components/AppHeader/AppHeader.tsx b/src/components/AppHeader/AppHeader.tsx index 1ed5a063b..07f2e815e 100644 --- a/src/components/AppHeader/AppHeader.tsx +++ b/src/components/AppHeader/AppHeader.tsx @@ -1,10 +1,5 @@ import Portal from "@material-ui/core/Portal"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import ArrowBackIcon from "@material-ui/icons/ArrowBack"; import React from "react"; @@ -16,45 +11,44 @@ export interface AppHeaderProps { onBack(); } -const styles = (theme: Theme) => - createStyles({ - backArrow: { - fontSize: 30 +const useStyles = makeStyles(theme => ({ + backArrow: { + fontSize: 30 + }, + menuButton: { + flex: "0 0 auto", + marginLeft: -theme.spacing(2), + marginRight: theme.spacing(), + marginTop: -theme.spacing(2) + }, + root: { + "&:hover": { + color: theme.typography.body1.color }, - menuButton: { - flex: "0 0 auto", - marginLeft: theme.spacing.unit * -2, - marginRight: theme.spacing.unit, - marginTop: -theme.spacing.unit * 2 - }, - root: { - "&:hover": { - color: theme.typography.body2.color - }, - alignItems: "center", - color: theme.palette.grey[500], - cursor: "pointer", - display: "flex", - marginTop: theme.spacing.unit / 2, - transition: theme.transitions.duration.standard + "ms" - }, - skeleton: { - marginBottom: theme.spacing.unit * 2, - width: "10rem" - }, - title: { - color: "inherit", - flex: 1, - marginLeft: theme.spacing.unit, - textTransform: "uppercase" - } - }); -const AppHeader = withStyles(styles, { name: "AppHeader" })( - ({ - children, - classes, - onBack - }: AppHeaderProps & WithStyles) => ( + alignItems: "center", + color: theme.palette.grey[500], + cursor: "pointer", + display: "flex", + marginTop: theme.spacing(0.5), + transition: theme.transitions.duration.standard + "ms" + }, + skeleton: { + marginBottom: theme.spacing(2), + width: "10rem" + }, + title: { + color: "inherit", + flex: 1, + marginLeft: theme.spacing(), + textTransform: "uppercase" + } +})); +const AppHeader: React.FC = props => { + const { children, onBack } = props; + + const classes = useStyles(props); + + return ( {anchor => anchor ? ( @@ -71,7 +65,7 @@ const AppHeader = withStyles(styles, { name: "AppHeader" })( ) : null } - ) -); + ); +}; AppHeader.displayName = "AppHeader"; export default AppHeader; diff --git a/src/components/AppHeader/index.ts b/src/components/AppHeader/index.ts index a17981843..a54b9f38a 100644 --- a/src/components/AppHeader/index.ts +++ b/src/components/AppHeader/index.ts @@ -1,2 +1,2 @@ -export { default } from './AppHeader'; -export * from './AppHeader'; \ No newline at end of file +export { default } from "./AppHeader"; +export * from "./AppHeader"; diff --git a/src/components/AppLayout/AppLayout.tsx b/src/components/AppLayout/AppLayout.tsx index a379b5350..bacdc3954 100644 --- a/src/components/AppLayout/AppLayout.tsx +++ b/src/components/AppLayout/AppLayout.tsx @@ -8,12 +8,7 @@ import MenuItem from "@material-ui/core/MenuItem"; import Menu from "@material-ui/core/MenuList"; import Paper from "@material-ui/core/Paper"; import Popper from "@material-ui/core/Popper"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; import SVG from "react-inlinesvg"; @@ -41,8 +36,8 @@ import createMenuStructure from "./menuStructure"; import ResponsiveDrawer from "./ResponsiveDrawer"; import ThemeSwitch from "./ThemeSwitch"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ appAction: { [theme.breakpoints.down("sm")]: { left: 0, @@ -56,15 +51,15 @@ const styles = (theme: Theme) => }, appLoader: { height: appLoaderHeight, - marginBottom: theme.spacing.unit * 2, + marginBottom: theme.spacing(2), zIndex: 1201 }, appLoaderPlaceholder: { height: appLoaderHeight, - marginBottom: theme.spacing.unit * 2 + marginBottom: theme.spacing(2) }, arrow: { - marginLeft: theme.spacing.unit * 2, + marginLeft: theme.spacing(2), transition: theme.transitions.duration.standard + "ms" }, content: { @@ -82,12 +77,12 @@ const styles = (theme: Theme) => paddingLeft: drawerWidth }, darkThemeSwitch: { - marginRight: theme.spacing.unit * 2 + marginRight: theme.spacing(2) }, header: { display: "flex", height: 40, - marginBottom: theme.spacing.unit * 3 + marginBottom: theme.spacing(3) }, isMenuSmall: { "& path": { @@ -186,8 +181,8 @@ const styles = (theme: Theme) => borderRadius: "50%", cursor: "pointer", height: 42, - left: theme.spacing.unit, - marginRight: theme.spacing.unit * 2, + left: theme.spacing(), + marginRight: theme.spacing(2), position: "relative", transform: "rotate(0deg)", transition: `${theme.transitions.duration.shorter}ms ease-in-out`, @@ -236,7 +231,7 @@ const styles = (theme: Theme) => padding: 0 }, background: theme.palette.background.paper, - padding: `0 ${theme.spacing.unit * 4}px` + padding: `0 ${theme.spacing(4)}px` }, spacer: { flex: 1 @@ -260,259 +255,240 @@ const styles = (theme: Theme) => flex: 1, flexGrow: 1, marginLeft: 0, - paddingBottom: theme.spacing.unit, + paddingBottom: theme.spacing(), [theme.breakpoints.up("sm")]: { - paddingBottom: theme.spacing.unit * 3 + paddingBottom: theme.spacing(3) } }, viewContainer: { - minHeight: `calc(100vh - ${theme.spacing.unit * 2 + - appLoaderHeight + - 70}px)` + minHeight: `calc(100vh - ${theme.spacing(2) + appLoaderHeight + 70}px)` } - }); + }), + { + name: "AppLayout" + } +); interface AppLayoutProps { children: React.ReactNode; } -const AppLayout = withStyles(styles, { - name: "AppLayout" -})( - withRouter, any>( - ({ - classes, - children, - location - }: AppLayoutProps & - WithStyles & - RouteComponentProps) => { - const { isDark, toggleTheme } = useTheme(); - const [isMenuSmall, setMenuSmall] = useLocalStorage("isMenuSmall", false); - const [isDrawerOpened, setDrawerState] = React.useState(false); - const [isMenuOpened, setMenuState] = React.useState(false); - const appActionAnchor = React.useRef(); - const appHeaderAnchor = React.useRef(); - const anchor = React.useRef(); - const { logout, user } = useUser(); - const navigate = useNavigator(); - const intl = useIntl(); +const AppLayout = withRouter, any>( + ({ children, location }: AppLayoutProps & RouteComponentProps) => { + const classes = useStyles({}); + const { isDark, toggleTheme } = useTheme(); + const [isMenuSmall, setMenuSmall] = useLocalStorage("isMenuSmall", false); + const [isDrawerOpened, setDrawerState] = React.useState(false); + const [isMenuOpened, setMenuState] = React.useState(false); + const appActionAnchor = React.useRef(); + const appHeaderAnchor = React.useRef(); + const anchor = React.useRef(); + const { logout, user } = useUser(); + const navigate = useNavigator(); + const intl = useIntl(); - const menuStructure = createMenuStructure(intl); - const configurationMenu = createConfigurationMenu(intl); - const userPermissions = maybe(() => user.permissions, []); + const menuStructure = createMenuStructure(intl); + const configurationMenu = createConfigurationMenu(intl); + const userPermissions = maybe(() => user.permissions, []); - const renderConfigure = configurationMenu.some(section => - section.menuItems.some( - menuItem => - !!userPermissions.find( - userPermission => userPermission.code === menuItem.permission - ) - ) - ); + const renderConfigure = configurationMenu.some(section => + section.menuItems.some( + menuItem => + !!userPermissions.find( + userPermission => userPermission.code === menuItem.permission + ) + ) + ); - const handleLogout = () => { - setMenuState(false); - logout(); - }; + const handleLogout = () => { + setMenuState(false); + logout(); + }; - const handleViewerProfile = () => { - setMenuState(false); - navigate(staffMemberDetailsUrl(user.id)); - }; + const handleViewerProfile = () => { + setMenuState(false); + navigate(staffMemberDetailsUrl(user.id)); + }; - const handleMenuItemClick = ( - url: string, - event: React.MouseEvent - ) => { - event.stopPropagation(); - event.preventDefault(); - setDrawerState(false); - navigate(url); - }; + const handleMenuItemClick = (url: string, event: React.MouseEvent) => { + event.stopPropagation(); + event.preventDefault(); + setDrawerState(false); + navigate(url); + }; - const handleIsMenuSmall = () => { - setMenuSmall(!isMenuSmall); - }; + const handleIsMenuSmall = () => { + setMenuSmall(!isMenuSmall); + }; - return ( - - {({ isProgress }) => ( - - -
-
- setDrawerState(false)} - open={isDrawerOpened} - small={!isMenuSmall} - > -
- -
- -
- -
-
- -
-
-
+ {({ isProgress }) => ( + + +
+
+ setDrawerState(false)} + open={isDrawerOpened} + small={!isMenuSmall} > - {isProgress ? ( - + - ) : ( -
- )} -
-
- -
+
+ +
+ +
+
+ + +
+
+ {isProgress ? ( + + ) : ( +
+ )} +
+
+ +
+
setDrawerState(!isDrawerOpened)} + > + + + + +
+
+
+
+
setDrawerState(!isDrawerOpened)} + className={classes.userMenuContainer} + ref={anchor} > - - - - -
-
-
-
- + ) + } + className={classes.userChip} + label={ + <> + {user.email} + + + } + onClick={() => setMenuState(!isMenuOpened)} /> -
- - ) - } - className={classes.userChip} - label={ - <> - {user.email} - - - } - onClick={() => setMenuState(!isMenuOpened)} - /> - - {({ TransitionProps, placement }) => ( - - - - setMenuState(false) - } - mouseEvent="onClick" - > - - - - - - - - - - - - )} - -
+ {({ TransitionProps, placement }) => ( + + + setMenuState(false)} + mouseEvent="onClick" + > + + + + + + + + + + + + )} +
- -
-
{children}
+
+
-
+
{children}
+
- - - )} - - ); - } - ) +
+ + + )} + + ); + } ); export default AppLayout; diff --git a/src/components/AppLayout/MenuList.tsx b/src/components/AppLayout/MenuList.tsx index bd3e16ca9..410ac2301 100644 --- a/src/components/AppLayout/MenuList.tsx +++ b/src/components/AppLayout/MenuList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; import React from "react"; @@ -24,92 +19,41 @@ import { orderDraftListUrl, orderListUrl } from "../../orders/urls"; import MenuNested from "./MenuNested"; import { IMenuItem } from "./menuStructure"; -const styles = (theme: Theme) => - createStyles({ - menuIcon: { - "& svg": { - height: 32, - width: 32 - }, - display: "inline-block", - position: "relative", - top: 8 +const useStyles = makeStyles(theme => ({ + menuIcon: { + "& svg": { + height: 32, + width: 32 }, - menuIconDark: { - "& path": { - fill: theme.palette.common.white - } + display: "inline-block", + position: "relative", + top: 8 + }, + menuIconDark: { + "& path": { + fill: theme.palette.common.white + } + }, + menuIconSmall: { + left: -5 + }, + menuIsActive: { + boxShadow: "0px 0px 12px 1px rgba(0,0,0,0.2)" + }, + menuItemHover: { + "& p": { + fontSize: 14, + transition: "color 0.5s ease, opacity 0.3s ease-out" }, - menuIconSmall: { - left: -5 + "& path": { + transition: "fill 0.5s ease" }, - menuIsActive: { - boxShadow: "0px 0px 12px 1px rgba(0,0,0,0.2)" - }, - menuItemHover: { + "&:hover": { "& p": { - fontSize: 14, - transition: "color 0.5s ease, opacity 0.3s ease-out" - }, - "& path": { - transition: "fill 0.5s ease" - }, - "&:hover": { - "& p": { - color: theme.palette.primary.main - }, - "& path": { - fill: theme.palette.primary.main - }, - "&:before": { - borderLeft: `solid 2px ${theme.palette.primary.main}`, - content: "''", - height: 33, - left: -20, - position: "absolute", - top: 8 - }, - color: theme.palette.primary.main - }, - cursor: "pointer", - position: "relative" - }, - menuList: { - display: "flex", - flexDirection: "column", - height: "100%", - marginLeft: theme.spacing.unit * 4, - marginTop: theme.spacing.unit * 2, - paddingBottom: theme.spacing.unit * 3 - }, - menuListItem: { - alignItems: "center", - display: "block", - marginBottom: theme.spacing.unit * 5, - paddingLeft: 0, - textDecoration: "none", - transition: theme.transitions.duration.standard + "ms" - }, - menuListItemActive: { - "& $menuListItemText": { color: theme.palette.primary.main }, "& path": { - color: theme.palette.primary.main, fill: theme.palette.primary.main - } - }, - menuListItemOpen: { - "&:after": { - borderBottom: `10px solid transparent`, - borderLeft: `10px solid ${theme.palette.background.paper}`, - borderTop: `10px solid transparent`, - content: "''", - height: 0, - position: "absolute", - right: -35, - top: 15, - width: 0 }, "&:before": { borderLeft: `solid 2px ${theme.palette.primary.main}`, @@ -119,47 +63,97 @@ const styles = (theme: Theme) => position: "absolute", top: 8 }, - position: "relative" + color: theme.palette.primary.main }, - menuListItemText: { - "&:hover": { - color: theme.palette.primary.main - }, - bottom: 0, - cursor: "pointer", - fontSize: "1rem", - fontWeight: 500, - left: 30, - opacity: 1, - paddingLeft: 16, - position: "absolute", - textTransform: "uppercase", - transition: "opacity 0.5s ease" + cursor: "pointer", + position: "relative" + }, + menuList: { + display: "flex", + flexDirection: "column", + height: "100%", + marginLeft: theme.spacing(4), + marginTop: theme.spacing(2), + paddingBottom: theme.spacing(3) + }, + menuListItem: { + alignItems: "center", + display: "block", + marginBottom: theme.spacing(5), + paddingLeft: 0, + textDecoration: "none", + transition: theme.transitions.duration.standard + "ms" + }, + menuListItemActive: { + "& $menuListItemText": { + color: theme.palette.primary.main }, - menuListItemTextHide: { - bottom: 0, - left: 30, - opacity: 0, - position: "absolute" - }, - subMenu: { - padding: "0 15px" - }, - subMenuDrawer: { - background: "#000", - cursor: "pointer", - height: "100vh", - left: 0, - opacity: 0.2, - position: "absolute", - top: 0, - width: 0, - zIndex: -2 - }, - subMenuDrawerOpen: { - width: `100vw` + "& path": { + color: theme.palette.primary.main, + fill: theme.palette.primary.main } - }); + }, + menuListItemOpen: { + "&:after": { + borderBottom: `10px solid transparent`, + borderLeft: `10px solid ${theme.palette.background.paper}`, + borderTop: `10px solid transparent`, + content: "''", + height: 0, + position: "absolute", + right: -35, + top: 15, + width: 0 + }, + "&:before": { + borderLeft: `solid 2px ${theme.palette.primary.main}`, + content: "''", + height: 33, + left: -20, + position: "absolute", + top: 8 + }, + position: "relative" + }, + menuListItemText: { + "&:hover": { + color: theme.palette.primary.main + }, + bottom: 0, + cursor: "pointer", + fontSize: "1rem", + fontWeight: 500, + left: 30, + opacity: 1, + paddingLeft: 16, + position: "absolute", + textTransform: "uppercase", + transition: "opacity 0.5s ease" + }, + menuListItemTextHide: { + bottom: 0, + left: 30, + opacity: 0, + position: "absolute" + }, + subMenu: { + padding: "0 15px" + }, + subMenuDrawer: { + background: "#000", + cursor: "pointer", + height: "100vh", + left: 0, + opacity: 0.2, + position: "absolute", + top: 0, + width: 0, + zIndex: -2 + }, + subMenuDrawerOpen: { + width: `100vw` + } +})); interface MenuListProps { className?: string; @@ -176,9 +170,8 @@ export interface IActiveSubMenu { label: string | null; } -const MenuList = withStyles(styles, { name: "MenuList" })( - ({ - classes, +const MenuList: React.FC = props => { + const { className, menuItems, isMenuSmall, @@ -186,134 +179,89 @@ const MenuList = withStyles(styles, { name: "MenuList" })( user, renderConfigure, onMenuItemClick - }: MenuListProps & WithStyles) => { - const { isDark } = useTheme(); - const [activeSubMenu, setActiveSubMenu] = React.useState({ + } = props; + + const classes = useStyles(props); + + const { isDark } = useTheme(); + const [activeSubMenu, setActiveSubMenu] = React.useState({ + isActive: false, + label: null + }); + const intl = useIntl(); + + const configutationMenu = createConfigurationMenu(intl).map(menu => { + menu.menuItems.map(item => + user.permissions.map(perm => perm.code).includes(item.permission) + ); + }); + + const handleSubMenu = itemLabel => { + setActiveSubMenu({ + isActive: + itemLabel === activeSubMenu.label ? !activeSubMenu.isActive : true, + label: itemLabel + }); + }; + + const closeSubMenu = (menuItemUrl, event) => { + setActiveSubMenu({ isActive: false, label: null }); - const intl = useIntl(); + if (menuItemUrl && event) { + onMenuItemClick(menuItemUrl, event); + event.stopPropagation(); + event.preventDefault(); + } + }; - const configutationMenu = createConfigurationMenu(intl).map(menu => { - menu.menuItems.map(item => - user.permissions.map(perm => perm.code).includes(item.permission) - ); - }); + return ( +
+ {/* FIXME: this .split("?")[0] looks gross */} + {menuItems.map(menuItem => { + const isActive = (menuItem: IMenuItem) => + location.split("?")[0] === orderDraftListUrl().split("?")[0] && + menuItem.url.split("?")[0] === orderListUrl().split("?")[0] + ? false + : !!matchPath(location.split("?")[0], { + exact: menuItem.url.split("?")[0] === "/", + path: menuItem.url.split("?")[0] + }); - const handleSubMenu = itemLabel => { - setActiveSubMenu({ - isActive: - itemLabel === activeSubMenu.label ? !activeSubMenu.isActive : true, - label: itemLabel - }); - }; + if ( + menuItem.permission && + !user.permissions.map(perm => perm.code).includes(menuItem.permission) + ) { + return null; + } - const closeSubMenu = (menuItemUrl, event) => { - setActiveSubMenu({ - isActive: false, - label: null - }); - if (menuItemUrl && event) { - onMenuItemClick(menuItemUrl, event); - event.stopPropagation(); - event.preventDefault(); - } - }; - - return ( -
- {/* FIXME: this .split("?")[0] looks gross */} - {menuItems.map(menuItem => { - const isActive = (menuItem: IMenuItem) => - location.split("?")[0] === orderDraftListUrl().split("?")[0] && - menuItem.url.split("?")[0] === orderListUrl().split("?")[0] - ? false - : !!matchPath(location.split("?")[0], { - exact: menuItem.url.split("?")[0] === "/", - path: menuItem.url.split("?")[0] - }); - - if ( - menuItem.permission && - !user.permissions - .map(perm => perm.code) - .includes(menuItem.permission) - ) { - return null; - } - - if (!menuItem.url) { - const isAnyChildActive = menuItem.children.reduce( - (acc, child) => acc || isActive(child), - false - ); - - return ( -
-
handleSubMenu(menuItem.ariaLabel)} - > - - - {menuItem.label} - -
- -
closeSubMenu(null, event)} - className={classNames(classes.subMenuDrawer, { - [classes.subMenuDrawerOpen]: activeSubMenu.isActive - })} - /> -
- ); - } + if (!menuItem.url) { + const isAnyChildActive = menuItem.children.reduce( + (acc, child) => acc || isActive(child), + false + ); return ( - closeSubMenu(menuItem.url, event)} key={menuItem.label} > -
+
handleSubMenu(menuItem.ariaLabel)} + >
-
+ +
closeSubMenu(null, event)} + className={classNames(classes.subMenuDrawer, { + [classes.subMenuDrawerOpen]: activeSubMenu.isActive + })} + /> +
); - })} - {renderConfigure && configutationMenu.length > 0 && ( + } + + return ( closeSubMenu(configurationMenuUrl, event)} + className={classNames(classes.menuListItem, { + [classes.menuListItemActive]: isActive(menuItem) + })} + href={createHref(menuItem.url)} + onClick={event => closeSubMenu(menuItem.url, event)} + key={menuItem.label} >
- + {menuItem.label}
- )} -
- ); - } -); + ); + })} + {renderConfigure && configutationMenu.length > 0 && ( + closeSubMenu(configurationMenuUrl, event)} + > +
+ + + + +
+
+ )} +
+ ); +}; + +MenuList.displayName = "MenuList"; export default MenuList; diff --git a/src/components/AppLayout/MenuNested.tsx b/src/components/AppLayout/MenuNested.tsx index df3b69d9c..4b486f21d 100644 --- a/src/components/AppLayout/MenuNested.tsx +++ b/src/components/AppLayout/MenuNested.tsx @@ -1,10 +1,5 @@ import Hidden from "@material-ui/core/Hidden"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; import React from "react"; @@ -17,89 +12,88 @@ import { drawerWidthExpanded } from "./consts"; import { IActiveSubMenu } from "./MenuList"; import { IMenuItem } from "./menuStructure"; -const styles = (theme: Theme) => - createStyles({ - menuListNested: { - background: theme.palette.background.paper, - height: "100vh", - position: "absolute", - right: 0, - top: 0, - transition: `right ${theme.transitions.duration.shorter}ms ease`, - width: 300, - zIndex: -1 +const useStyles = makeStyles(theme => ({ + menuListNested: { + background: theme.palette.background.paper, + height: "100vh", + position: "absolute", + right: 0, + top: 0, + transition: `right ${theme.transitions.duration.shorter}ms ease`, + width: 300, + zIndex: -1 + }, + menuListNestedClose: { + "& svg": { + fill: theme.palette.primary.main, + left: 7, + position: "relative", + top: -2 }, - menuListNestedClose: { - "& svg": { - fill: theme.palette.primary.main, - left: 7, - position: "relative", - top: -2 - }, - border: `solid 1px #EAEAEA`, - borderRadius: "100%", - cursor: "pointer", - height: 32, - position: "absolute", - right: 32, - top: 35, - transform: "rotate(180deg)", - width: 32 + border: `solid 1px #EAEAEA`, + borderRadius: "100%", + cursor: "pointer", + height: 32, + position: "absolute", + right: 32, + top: 35, + transform: "rotate(180deg)", + width: 32 + }, + menuListNestedCloseDark: { + border: `solid 1px #252728` + }, + menuListNestedHide: { + opacity: 0 + }, + menuListNestedIcon: { + "& path": { + fill: "initial" }, - menuListNestedCloseDark: { - border: `solid 1px #252728` - }, - menuListNestedHide: { - opacity: 0 - }, - menuListNestedIcon: { - "& path": { - fill: "initial" - }, - "& svg": { height: 32, position: "relative", top: 7, width: 32 } - }, - menuListNestedIconDark: { - "& path": { - fill: theme.palette.common.white + "& svg": { height: 32, position: "relative", top: 7, width: 32 } + }, + menuListNestedIconDark: { + "& path": { + fill: theme.palette.common.white + } + }, + menuListNestedItem: { + "&:hover": { + "& p": { + color: theme.palette.primary.main } }, - menuListNestedItem: { - "&:hover": { - "& p": { - color: theme.palette.primary.main - } - }, - display: "block", - marginBottom: theme.spacing.unit * 2, - padding: "0px 30px", - textDecoration: "none" + display: "block", + marginBottom: theme.spacing(2), + padding: "0px 30px", + textDecoration: "none" + }, + menuListNestedOpen: { + [theme.breakpoints.down("sm")]: { + right: 0, + width: drawerWidthExpanded, + zIndex: 2 }, - menuListNestedOpen: { - [theme.breakpoints.down("sm")]: { - right: 0, - width: drawerWidthExpanded, - zIndex: 2 - }, - right: -300, - zIndex: -1 + right: -300, + zIndex: -1 + }, + subHeader: { + borderBottom: "solid 1px #EAEAEA", + margin: "30px", + marginBottom: 39, + paddingBottom: 22 + }, + subHeaderDark: { + borderBottom: "solid 1px #252728" + }, + subHeaderTitle: { + [theme.breakpoints.up("md")]: { + paddingLeft: 0 }, - subHeader: { - borderBottom: "solid 1px #EAEAEA", - margin: "30px", - marginBottom: 39, - paddingBottom: 22 - }, - subHeaderDark: { - borderBottom: "solid 1px #252728" - }, - subHeaderTitle: { - [theme.breakpoints.up("md")]: { - paddingLeft: 0 - }, - display: "inline", - paddingLeft: 10 - } - }); + display: "inline", + paddingLeft: 10 + } +})); export interface MenuNestedProps { activeItem: IActiveSubMenu; @@ -112,86 +106,85 @@ export interface MenuNestedProps { onMenuItemClick: (url: string, event: React.MouseEvent) => void; } -const MenuNested = withStyles(styles, { name: "MenuNested" })( - ({ +const MenuNested: React.FC = props => { + const { activeItem, ariaLabel, - classes, + closeSubMenu, icon, menuItem, onMenuItemClick, title - }: MenuNestedProps & WithStyles) => { - const menuItems = menuItem.children; - const { isDark } = useTheme(); - const closeMenu = (menuItemUrl, event) => { - onMenuItemClick(menuItemUrl, event); - closeSubMenu({ - isActive: false, - label: null - }); - event.stopPropagation(); - event.preventDefault(); - }; - return ( - <> -
{ + onMenuItemClick(menuItemUrl, event); + closeSubMenu({ + isActive: false, + label: null + }); + event.stopPropagation(); + event.preventDefault(); + }; + return ( + <> + - - ); - } -); + {item.label} + + ))} +
+ + ); +}; + +MenuNested.displayName = "MenuNested"; export default MenuNested; diff --git a/src/components/AppLayout/ResponsiveDrawer.tsx b/src/components/AppLayout/ResponsiveDrawer.tsx index cf109c53b..6925a5076 100644 --- a/src/components/AppLayout/ResponsiveDrawer.tsx +++ b/src/components/AppLayout/ResponsiveDrawer.tsx @@ -1,16 +1,11 @@ import Drawer from "@material-ui/core/Drawer"; import Hidden from "@material-ui/core/Hidden"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { drawerWidth, drawerWidthExpanded } from "./consts"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ drawerDesktop: { backgroundColor: theme.palette.background.paper, border: "none", @@ -29,17 +24,23 @@ const styles = (theme: Theme) => drawerMobile: { width: drawerWidthExpanded } - }); + }), + { name: "ResponsiveDrawer" } +); -interface ResponsiveDrawerProps extends WithStyles { +interface ResponsiveDrawerProps { children?: React.ReactNode; open: boolean; small: boolean; onClose?(); } -const ResponsiveDrawer = withStyles(styles, { name: "ResponsiveDrawer" })( - ({ children, classes, onClose, open, small }: ResponsiveDrawerProps) => ( +const ResponsiveDrawer: React.FC = props => { + const { children, onClose, open, small } = props; + + const classes = useStyles(props); + + return ( <> - ) -); + ); +}; export default ResponsiveDrawer; diff --git a/src/components/AppLayout/ThemeSwitch.tsx b/src/components/AppLayout/ThemeSwitch.tsx index 17112caf2..c4579054e 100644 --- a/src/components/AppLayout/ThemeSwitch.tsx +++ b/src/components/AppLayout/ThemeSwitch.tsx @@ -1,43 +1,51 @@ -import { Theme, withStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Switch, { SwitchProps } from "@material-ui/core/Switch"; import React from "react"; import MoonIcon from "../../icons/Moon"; import SunIcon from "../../icons/Sun"; -const switchStyles = (theme: Theme) => ({ - bar: { - "$colorPrimary$checked + &": { - backgroundColor: theme.palette.background.paper +const useStyles = makeStyles( + theme => ({ + checked: { + "& svg": { + background: theme.palette.primary.main, + color: theme.palette.background.paper + } }, - background: theme.palette.background.paper - }, - checked: { - "& svg": { - background: theme.palette.primary.main, - color: theme.palette.background.paper + colorPrimary: {}, + root: { + "& svg": { + background: theme.palette.primary.main, + borderRadius: "100%", + height: 20, + width: 20 + } + }, + track: { + "$colorPrimary$checked + &": { + backgroundColor: theme.palette.background.paper + }, + background: theme.palette.background.paper } - }, - colorPrimary: {}, - root: { - "& svg": { - background: theme.palette.primary.main, - borderRadius: "100%", - height: 20, - width: 20 - }, - width: 58 + }), + { + name: "ThemeSwitch" } -}); -const ThemeSwitch = withStyles(switchStyles, { - name: "ThemeSwitch" -})((props: SwitchProps) => ( - } - checkedIcon={} - /> -)); +); +const ThemeSwitch: React.FC = props => { + const classes = useStyles(props); + + return ( + } + checkedIcon={} + /> + ); +}; + ThemeSwitch.displayName = "ThemeSwitch"; export default ThemeSwitch; diff --git a/src/components/AppLayout/index.ts b/src/components/AppLayout/index.ts index 41632b30c..990e3e03d 100644 --- a/src/components/AppLayout/index.ts +++ b/src/components/AppLayout/index.ts @@ -1,2 +1,2 @@ -export { default } from './AppLayout'; -export * from './AppLayout'; \ No newline at end of file +export { default } from "./AppLayout"; +export * from "./AppLayout"; diff --git a/src/components/AssignCategoryDialog/AssignCategoryDialog.tsx b/src/components/AssignCategoryDialog/AssignCategoryDialog.tsx index f45196049..d58a01ba8 100644 --- a/src/components/AssignCategoryDialog/AssignCategoryDialog.tsx +++ b/src/components/AssignCategoryDialog/AssignCategoryDialog.tsx @@ -4,7 +4,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -27,7 +27,7 @@ export interface FormData { query: string; } -const styles = createStyles({ +const useStyles = makeStyles({ avatar: { "&:first-child": { paddingLeft: 0 @@ -44,7 +44,7 @@ const styles = createStyles({ } }); -interface AssignCategoriesDialogProps extends WithStyles { +interface AssignCategoriesDialogProps { categories: SearchCategories_search_edges_node[]; confirmButtonState: ConfirmButtonTransitionState; open: boolean; @@ -71,11 +71,8 @@ function handleCategoryAssign( } } -const AssignCategoriesDialog = withStyles(styles, { - name: "AssignCategoriesDialog" -})( - ({ - classes, +const AssignCategoriesDialog: React.FC = props => { + const { confirmButtonState, open, loading, @@ -83,102 +80,103 @@ const AssignCategoriesDialog = withStyles(styles, { onClose, onFetch, onSubmit - }: AssignCategoriesDialogProps) => { - const intl = useIntl(); - const [query, onQueryChange] = useSearchQuery(onFetch); - const [selectedCategories, setSelectedCategories] = React.useState< - SearchCategories_search_edges_node[] - >([]); + } = props; + const classes = useStyles(props); - const handleSubmit = () => onSubmit(selectedCategories); + const intl = useIntl(); + const [query, onQueryChange] = useSearchQuery(onFetch); + const [selectedCategories, setSelectedCategories] = React.useState< + SearchCategories_search_edges_node[] + >([]); - return ( - - + const handleSubmit = () => onSubmit(selectedCategories); + + return ( + + + + + + + }} + /> + + + + {categories && + categories.map(category => { + const isSelected = !!selectedCategories.find( + selectedCategories => selectedCategories.id === category.id + ); + + return ( + + + + handleCategoryAssign( + category, + isSelected, + selectedCategories, + setSelectedCategories + ) + } + /> + + + {category.name} + + + ); + })} + +
+
+ + + -
- - - }} - /> - - - - {categories && - categories.map(category => { - const isSelected = !!selectedCategories.find( - selectedCategories => selectedCategories.id === category.id - ); - - return ( - - - - handleCategoryAssign( - category, - isSelected, - selectedCategories, - setSelectedCategories - ) - } - /> - - - {category.name} - - - ); - })} - -
-
- - - - - - -
- ); - } -); + + + + ); +}; AssignCategoriesDialog.displayName = "AssignCategoriesDialog"; export default AssignCategoriesDialog; diff --git a/src/components/AssignCollectionDialog/AssignCollectionDialog.tsx b/src/components/AssignCollectionDialog/AssignCollectionDialog.tsx index f0e011c70..24ff87786 100644 --- a/src/components/AssignCollectionDialog/AssignCollectionDialog.tsx +++ b/src/components/AssignCollectionDialog/AssignCollectionDialog.tsx @@ -4,7 +4,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -27,7 +27,7 @@ export interface FormData { query: string; } -const styles = createStyles({ +const useStyles = makeStyles({ avatar: { "&:first-child": { paddingLeft: 0 @@ -44,7 +44,7 @@ const styles = createStyles({ } }); -interface AssignCollectionDialogProps extends WithStyles { +interface AssignCollectionDialogProps { collections: SearchCollections_search_edges_node[]; confirmButtonState: ConfirmButtonTransitionState; open: boolean; @@ -71,11 +71,8 @@ function handleCollectionAssign( } } -const AssignCollectionDialog = withStyles(styles, { - name: "AssignCollectionDialog" -})( - ({ - classes, +const AssignCollectionDialog: React.FC = props => { + const { confirmButtonState, open, loading, @@ -83,103 +80,103 @@ const AssignCollectionDialog = withStyles(styles, { onClose, onFetch, onSubmit - }: AssignCollectionDialogProps) => { - const intl = useIntl(); - const [query, onQueryChange] = useSearchQuery(onFetch); - const [selectedCollections, setSelectedCollections] = React.useState< - SearchCollections_search_edges_node[] - >([]); + } = props; + const classes = useStyles(props); - const handleSubmit = () => onSubmit(selectedCollections); + const intl = useIntl(); + const [query, onQueryChange] = useSearchQuery(onFetch); + const [selectedCollections, setSelectedCollections] = React.useState< + SearchCollections_search_edges_node[] + >([]); - return ( - - + const handleSubmit = () => onSubmit(selectedCollections); + + return ( + + + + + + + }} + /> + + + + {collections && + collections.map(collection => { + const isSelected = !!selectedCollections.find( + selectedCollection => selectedCollection.id === collection.id + ); + + return ( + + + + handleCollectionAssign( + collection, + isSelected, + selectedCollections, + setSelectedCollections + ) + } + /> + + + {collection.name} + + + ); + })} + +
+
+ + + -
- - - }} - /> - - - - {collections && - collections.map(collection => { - const isSelected = !!selectedCollections.find( - selectedCollection => - selectedCollection.id === collection.id - ); - - return ( - - - - handleCollectionAssign( - collection, - isSelected, - selectedCollections, - setSelectedCollections - ) - } - /> - - - {collection.name} - - - ); - })} - -
-
- - - - - - -
- ); - } -); + + + + ); +}; AssignCollectionDialog.displayName = "AssignCollectionDialog"; export default AssignCollectionDialog; diff --git a/src/components/AssignProductDialog/AssignProductDialog.tsx b/src/components/AssignProductDialog/AssignProductDialog.tsx index fff198a2e..9714965c0 100644 --- a/src/components/AssignProductDialog/AssignProductDialog.tsx +++ b/src/components/AssignProductDialog/AssignProductDialog.tsx @@ -4,7 +4,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -29,7 +29,7 @@ export interface FormData { query: string; } -const styles = createStyles({ +const useStyles = makeStyles({ avatar: { "&:first-child": { paddingLeft: 0 @@ -77,11 +77,8 @@ function handleProductAssign( } } -const AssignProductDialog = withStyles(styles, { - name: "AssignProductDialog" -})( - ({ - classes, +const AssignProductDialog: React.FC = props => { + const { confirmButtonState, open, loading, @@ -89,109 +86,110 @@ const AssignProductDialog = withStyles(styles, { onClose, onFetch, onSubmit - }: AssignProductDialogProps & WithStyles) => { - const intl = useIntl(); - const [query, onQueryChange] = useSearchQuery(onFetch); - const [selectedProducts, setSelectedProducts] = React.useState< - SearchProducts_search_edges_node[] - >([]); + } = props; + const classes = useStyles(props); - const handleSubmit = () => onSubmit(selectedProducts); + const intl = useIntl(); + const [query, onQueryChange] = useSearchQuery(onFetch); + const [selectedProducts, setSelectedProducts] = React.useState< + SearchProducts_search_edges_node[] + >([]); - return ( - - - - - - - }} - /> - -
- - - {products && - products.map(product => { - const isSelected = selectedProducts.some( - selectedProduct => selectedProduct.id === product.id - ); + const handleSubmit = () => onSubmit(selectedProducts); - return ( - - product.thumbnail.url)} + return ( + + + + + + + }} + /> + +
+
+ + {products && + products.map(product => { + const isSelected = selectedProducts.some( + selectedProduct => selectedProduct.id === product.id + ); + + return ( + + product.thumbnail.url)} + /> + + {product.name} + + + + handleProductAssign( + product, + isSelected, + selectedProducts, + setSelectedProducts + ) + } /> - - {product.name} - - - - handleProductAssign( - product, - isSelected, - selectedProducts, - setSelectedProducts - ) - } - /> - - - ); - })} - -
-
-
- - - - - - -
- ); - } -); + + + ); + })} + + +
+ + + + + + + + + ); +}; AssignProductDialog.displayName = "AssignProductDialog"; export default AssignProductDialog; diff --git a/src/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx b/src/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx index 209128e4e..a59c44723 100644 --- a/src/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx +++ b/src/components/AutocompleteSelectMenu/AutocompleteSelectMenu.tsx @@ -1,12 +1,7 @@ import CircularProgress from "@material-ui/core/CircularProgress"; import MenuItem from "@material-ui/core/MenuItem"; import Paper from "@material-ui/core/Paper"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import ArrowBack from "@material-ui/icons/ArrowBack"; import Downshift from "downshift"; @@ -43,31 +38,27 @@ const DebounceAutocomplete: React.ComponentType< DebounceProps > = Debounce; -const styles = (theme: Theme) => - createStyles({ - container: { - flexGrow: 1, - position: "relative" - }, - menuBack: { - marginLeft: -theme.spacing.unit / 2, - marginRight: theme.spacing.unit - }, - paper: { - left: 0, - marginTop: theme.spacing.unit, - padding: theme.spacing.unit, - position: "absolute", - right: 0, - zIndex: 2 - }, - root: {} - }); -const AutocompleteSelectMenu = withStyles(styles, { - name: "AutocompleteSelectMenu" -})( - ({ - classes, +const useStyles = makeStyles(theme => ({ + container: { + flexGrow: 1, + position: "relative" + }, + menuBack: { + marginLeft: -theme.spacing(0.5), + marginRight: theme.spacing(1) + }, + paper: { + left: 0, + marginTop: theme.spacing(), + padding: theme.spacing(), + position: "absolute", + right: 0, + zIndex: 2 + }, + root: {} +})); +const AutocompleteSelectMenu: React.FC = props => { + const { disabled, displayValue, error, @@ -79,117 +70,118 @@ const AutocompleteSelectMenu = withStyles(styles, { placeholder, onChange, onInputChange - }: AutocompleteSelectMenuProps & WithStyles) => { - const [inputValue, setInputValue] = React.useState(displayValue || ""); - const [menuPath, setMenuPath] = React.useState([]); + } = props; + const classes = useStyles(props); - const handleChange = (value: string) => - onChange({ - target: { - name, - value - } - } as any); + const [inputValue, setInputValue] = React.useState(displayValue || ""); + const [menuPath, setMenuPath] = React.useState([]); - // Validate if option values are duplicated - React.useEffect(() => { - if (!validateMenuOptions(options)) { - throw validationError; + const handleChange = (value: string) => + onChange({ + target: { + name, + value } - }, []); + } as any); - // Navigate back to main menu after input field change - React.useEffect(() => setMenuPath([]), [options]); + // Validate if option values are duplicated + React.useEffect(() => { + if (!validateMenuOptions(options)) { + throw validationError; + } + }, []); - // Reset input value after displayValue change - React.useEffect(() => setInputValue(displayValue), [displayValue]); + // Navigate back to main menu after input field change + React.useEffect(() => setMenuPath([]), [options]); - return ( - - {debounceFn => ( - (item ? item.label : "")} - onSelect={handleChange} - > - {({ getItemProps, isOpen, openMenu, closeMenu, selectItem }) => { - return ( -
- , - id: undefined, - onBlur: () => { - closeMenu(); - setMenuPath([]); - setInputValue(displayValue); - }, - onChange: event => { - debounceFn(event.target.value); - setInputValue(event.target.value); - }, - onFocus: () => openMenu(), - placeholder - }} - disabled={disabled} - error={error} - helperText={helperText} - label={label} - fullWidth={true} - value={inputValue} - /> - {isOpen && ( - - {options.length ? ( - <> - {menuPath.length > 0 && ( - - setMenuPath( - menuPath.slice(0, menuPath.length - 2) - ) - } - > - - - - )} - {(menuPath.length - ? getMenuItemByPath(options, menuPath).children - : options - ).map((suggestion, index) => ( - - suggestion.value - ? selectItem(suggestion.value) - : setMenuPath([...menuPath, index]) - } - > - {suggestion.label} - - ))} - - ) : ( - - - - )} - - )} -
- ); - }} -
- )} -
- ); - } -); + // Reset input value after displayValue change + React.useEffect(() => setInputValue(displayValue), [displayValue]); + + return ( + + {debounceFn => ( + (item ? item.label : "")} + onSelect={handleChange} + > + {({ getItemProps, isOpen, openMenu, closeMenu, selectItem }) => { + return ( +
+ , + id: undefined, + onBlur: () => { + closeMenu(); + setMenuPath([]); + setInputValue(displayValue); + }, + onChange: event => { + debounceFn(event.target.value); + setInputValue(event.target.value); + }, + onFocus: () => openMenu(), + placeholder + }} + disabled={disabled} + error={error} + helperText={helperText} + label={label} + fullWidth={true} + value={inputValue} + /> + {isOpen && ( + + {options.length ? ( + <> + {menuPath.length > 0 && ( + + setMenuPath( + menuPath.slice(0, menuPath.length - 2) + ) + } + > + + + + )} + {(menuPath.length + ? getMenuItemByPath(options, menuPath).children + : options + ).map((suggestion, index) => ( + + suggestion.value + ? selectItem(suggestion.value) + : setMenuPath([...menuPath, index]) + } + > + {suggestion.label} + + ))} + + ) : ( + + + + )} + + )} +
+ ); + }} +
+ )} +
+ ); +}; AutocompleteSelectMenu.displayName = "AutocompleteSelectMenu"; export default AutocompleteSelectMenu; diff --git a/src/components/AutocompleteSelectMenu/index.ts b/src/components/AutocompleteSelectMenu/index.ts index 3a0e4e0d2..a49ff0536 100644 --- a/src/components/AutocompleteSelectMenu/index.ts +++ b/src/components/AutocompleteSelectMenu/index.ts @@ -1,2 +1,2 @@ -export { default } from './AutocompleteSelectMenu'; -export * from './AutocompleteSelectMenu'; \ No newline at end of file +export { default } from "./AutocompleteSelectMenu"; +export * from "./AutocompleteSelectMenu"; diff --git a/src/components/CardMenu/CardMenu.tsx b/src/components/CardMenu/CardMenu.tsx index 1ce0e9c41..3de7e73be 100644 --- a/src/components/CardMenu/CardMenu.tsx +++ b/src/components/CardMenu/CardMenu.tsx @@ -1,12 +1,7 @@ import IconButton from "@material-ui/core/IconButton"; import Menu from "@material-ui/core/Menu"; import MenuItem from "@material-ui/core/MenuItem"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import MoreVertIcon from "@material-ui/icons/MoreVert"; import React from "react"; @@ -23,80 +18,73 @@ export interface CardMenuProps { menuItems: CardMenuItem[]; } -const styles = (theme: Theme) => - createStyles({ - iconButton: { - background: theme.palette.background.paper, - borderRadius: "100%", - height: 32, - padding: 0, - width: 32 - } - }); - -const CardMenu = withStyles(styles, { - name: "CardMenu" -})( - ({ - className, - classes, - disabled, - menuItems - }: CardMenuProps & WithStyles) => { - const [anchorEl, setAnchor] = React.useState(null); - - const handleClick = (event: React.MouseEvent) => { - setAnchor(event.currentTarget); - }; - - const handleClose = () => { - setAnchor(null); - }; - - const handleMenuClick = (menuItemIndex: number) => { - menuItems[menuItemIndex].onSelect(); - handleClose(); - }; - - const open = !!anchorEl; - - return ( -
- - - - - {menuItems.map((menuItem, menuItemIndex) => ( - handleMenuClick(menuItemIndex)} - key={menuItem.label} - > - {menuItem.label} - - ))} - -
- ); +const useStyles = makeStyles(theme => ({ + iconButton: { + background: theme.palette.background.paper, + borderRadius: "100%", + height: 32, + padding: 0, + width: 32 } -); +})); + +const CardMenu: React.FC = props => { + const { className, disabled, menuItems } = props; + const classes = useStyles(props); + + const [anchorEl, setAnchor] = React.useState(null); + + const handleClick = (event: React.MouseEvent) => { + setAnchor(event.currentTarget); + }; + + const handleClose = () => { + setAnchor(null); + }; + + const handleMenuClick = (menuItemIndex: number) => { + menuItems[menuItemIndex].onSelect(); + handleClose(); + }; + + const open = !!anchorEl; + + return ( +
+ + + + + {menuItems.map((menuItem, menuItemIndex) => ( + handleMenuClick(menuItemIndex)} + key={menuItem.label} + > + {menuItem.label} + + ))} + +
+ ); +}; CardMenu.displayName = "CardMenu"; export default CardMenu; diff --git a/src/components/CardSpacer.tsx b/src/components/CardSpacer.tsx index 9f205b573..71ca51d55 100644 --- a/src/components/CardSpacer.tsx +++ b/src/components/CardSpacer.tsx @@ -1,29 +1,25 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - spacer: { - [theme.breakpoints.down("sm")]: { - marginTop: theme.spacing.unit - }, - marginTop: theme.spacing.unit * 3 - } - }); +const useStyles = makeStyles(theme => ({ + spacer: { + [theme.breakpoints.down("sm")]: { + marginTop: theme.spacing(1) + }, + marginTop: theme.spacing(3) + } +})); -interface CardSpacerProps extends WithStyles { +interface CardSpacerProps { children?: React.ReactNode; } -export const CardSpacer = withStyles(styles, { name: "CardSpacer" })( - ({ classes, children }: CardSpacerProps) => ( -
{children}
- ) -); +export const CardSpacer: React.FC = props => { + const { children } = props; + + const classes = useStyles(props); + + return
{children}
; +}; CardSpacer.displayName = "CardSpacer"; export default CardSpacer; diff --git a/src/components/CardTitle/CardTitle.tsx b/src/components/CardTitle/CardTitle.tsx index 55b92178d..eb565e834 100644 --- a/src/components/CardTitle/CardTitle.tsx +++ b/src/components/CardTitle/CardTitle.tsx @@ -1,42 +1,36 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - children: theme.mixins.gutters({}), - constantHeight: { - height: 56 - }, - hr: { - border: "none", - borderTop: `1px solid ${theme.overrides.MuiCard.root.borderColor}`, - height: 0, - marginBottom: 0, - marginTop: 0, - width: "100%" - }, - root: theme.mixins.gutters({ - alignItems: "center", - display: "flex", - minHeight: 56 - }), - title: { - flex: 1, - lineHeight: 1 - }, - toolbar: { - marginRight: -theme.spacing.unit - } - }); +const useStyles = makeStyles(theme => ({ + children: theme.mixins.gutters({}), + constantHeight: { + height: 56 + }, + hr: { + border: "none", + borderTop: `1px solid ${theme.palette.divider}`, + height: 0, + marginBottom: 0, + marginTop: 0, + width: "100%" + }, + root: theme.mixins.gutters({ + alignItems: "center", + display: "flex", + minHeight: 56 + }), + title: { + flex: 1, + lineHeight: 1 + }, + toolbar: { + marginRight: -theme.spacing(1) + } +})); -interface CardTitleProps extends WithStyles { +interface CardTitleProps { children?: React.ReactNode; className?: string; height?: "default" | "const"; @@ -45,24 +39,27 @@ interface CardTitleProps extends WithStyles { onClick?: (event: React.MouseEvent) => void; } -const CardTitle = withStyles(styles, { name: "CardTitle" })( - ({ - classes, +const CardTitle: React.FC = props => { + const { className, children, height, title, toolbar, onClick, - ...props - }: CardTitleProps) => ( + ...rest + } = props; + + const classes = useStyles(props); + + return ( <>
{children}

- ) -); + ); +}; CardTitle.displayName = "CardTitle"; export default CardTitle; diff --git a/src/components/Checkbox/Checkbox.tsx b/src/components/Checkbox/Checkbox.tsx index c0ebe2025..63eb4ff0f 100644 --- a/src/components/Checkbox/Checkbox.tsx +++ b/src/components/Checkbox/Checkbox.tsx @@ -1,12 +1,6 @@ -import { Omit } from "@material-ui/core"; import ButtonBase from "@material-ui/core/ButtonBase"; import { CheckboxProps as MuiCheckboxProps } from "@material-ui/core/Checkbox"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import classNames from "classnames"; import React from "react"; @@ -25,116 +19,116 @@ export type CheckboxProps = Omit< onChange?: (event: React.ChangeEvent) => void; }; -const styles = (theme: Theme) => - createStyles({ - box: { - "&$checked": { - "&:before": { - background: theme.palette.primary.main, - color: theme.palette.background.paper, - content: '"\\2713"', - fontWeight: "bold", - textAlign: "center" - }, - borderColor: theme.palette.primary.main - }, - "&$disabled": { - borderColor: theme.palette.grey[200] - }, - "&$indeterminate": { - "&:before": { - background: theme.palette.primary.main, - height: 2, - top: 5 - }, - borderColor: theme.palette.primary.main - }, +const useStyles = makeStyles(theme => ({ + box: { + "&$checked": { "&:before": { - background: "rgba(0, 0, 0, 0)", - content: '""', - height: 14, - left: -1, - position: "absolute", - top: -1, - transition: theme.transitions.duration.short + "ms", - width: 14 + background: theme.palette.primary.main, + color: theme.palette.background.paper, + content: '"\\2713"', + fontWeight: "bold", + textAlign: "center" }, - - WebkitAppearance: "none", - border: `1px solid ${theme.palette.action.active}`, - boxSizing: "border-box", - cursor: "pointer", + borderColor: theme.palette.primary.main + }, + "&$disabled": { + borderColor: theme.palette.grey[200] + }, + "&$indeterminate": { + "&:before": { + background: theme.palette.primary.main, + height: 2, + top: 5 + }, + borderColor: theme.palette.primary.main + }, + "&:before": { + background: "rgba(0, 0, 0, 0)", + content: '""', height: 14, - outline: "0", - position: "relative", - userSelect: "none", + left: -1, + position: "absolute", + top: -1, + transition: theme.transitions.duration.short + "ms", width: 14 }, - checked: {}, - disabled: {}, - indeterminate: {}, - root: { - "&:hover": { - background: fade(theme.palette.primary.main, 0.1) - }, - alignSelf: "start", - borderRadius: "100%", - cursor: "pointer", - display: "flex", - height: 30, - justifyContent: "center", - margin: "5px 9px", - width: 30 - } - }); -const Checkbox = withStyles(styles, { name: "Checkbox" })( - ({ + + WebkitAppearance: "none", + border: `1px solid ${theme.palette.action.active}`, + boxSizing: "border-box", + cursor: "pointer", + height: 14, + outline: "0", + position: "relative", + userSelect: "none", + width: 14 + }, + checked: {}, + disabled: {}, + indeterminate: {}, + root: { + "&:hover": { + background: fade(theme.palette.primary.main, 0.1) + }, + alignSelf: "start", + borderRadius: "100%", + cursor: "pointer", + display: "flex", + height: 30, + justifyContent: "center", + margin: "5px 9px", + width: 30 + } +})); +const Checkbox: React.FC = props => { + const { checked, className, - classes, + disabled, disableClickPropagation, indeterminate, onChange, value, name, - ...props - }: CheckboxProps & WithStyles) => { - const inputRef = React.useRef(null); - const handleClick = React.useCallback( - disableClickPropagation - ? event => { - event.stopPropagation(); - inputRef.current.click(); - } - : () => inputRef.current.click(), - [] - ); + ...rest + } = props; + const classes = useStyles(props); - return ( - (null); + const handleClick = React.useCallback( + disableClickPropagation + ? event => { + event.stopPropagation(); + inputRef.current.click(); + } + : () => inputRef.current.click(), + [] + ); + + return ( + + - - - ); - } -); + type="checkbox" + name={name} + value={checked !== undefined && checked.toString()} + ref={inputRef} + onChange={onChange} + /> + + ); +}; Checkbox.displayName = "Checkbox"; export default Checkbox; diff --git a/src/components/Checkbox/index.ts b/src/components/Checkbox/index.ts index 3d46e4f82..364664ba8 100644 --- a/src/components/Checkbox/index.ts +++ b/src/components/Checkbox/index.ts @@ -1,2 +1,2 @@ -export { default } from './Checkbox'; -export * from './Checkbox'; \ No newline at end of file +export { default } from "./Checkbox"; +export * from "./Checkbox"; diff --git a/src/components/Chip/Chip.tsx b/src/components/Chip/Chip.tsx index 0c3b22da9..db1456434 100644 --- a/src/components/Chip/Chip.tsx +++ b/src/components/Chip/Chip.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import CloseIcon from "@material-ui/icons/Close"; @@ -16,32 +11,30 @@ export interface ChipProps { onClose?: () => void; } -const styles = (theme: Theme) => - createStyles({ - closeIcon: { - cursor: "pointer", - fontSize: 16, - marginLeft: theme.spacing.unit, - verticalAlign: "middle" - }, - label: { - color: theme.palette.common.white - }, - root: { - background: fade(theme.palette.secondary.main, 0.8), - borderRadius: 8, - display: "inline-block", - marginRight: theme.spacing.unit * 2, - padding: "6px 12px" - } - }); -const Chip = withStyles(styles, { name: "Chip" })( - ({ - classes, - className, - label, - onClose - }: ChipProps & WithStyles) => ( +const useStyles = makeStyles(theme => ({ + closeIcon: { + cursor: "pointer", + fontSize: 16, + marginLeft: theme.spacing(), + verticalAlign: "middle" + }, + label: { + color: theme.palette.common.white + }, + root: { + background: fade(theme.palette.secondary.main, 0.8), + borderRadius: 8, + display: "inline-block", + marginRight: theme.spacing(2), + padding: "6px 12px" + } +})); +const Chip: React.FC = props => { + const { className, label, onClose } = props; + + const classes = useStyles(props); + + return (
{label} @@ -50,7 +43,7 @@ const Chip = withStyles(styles, { name: "Chip" })( )}
- ) -); + ); +}; Chip.displayName = "Chip"; export default Chip; diff --git a/src/components/Chip/index.ts b/src/components/Chip/index.ts index 6de8518ff..a548b9f1e 100644 --- a/src/components/Chip/index.ts +++ b/src/components/Chip/index.ts @@ -1,2 +1,2 @@ -export { default } from './Chip'; -export * from './Chip'; \ No newline at end of file +export { default } from "./Chip"; +export * from "./Chip"; diff --git a/src/components/ColumnPicker/ColumnPicker.tsx b/src/components/ColumnPicker/ColumnPicker.tsx index dfef82983..aa1f55275 100644 --- a/src/components/ColumnPicker/ColumnPicker.tsx +++ b/src/components/ColumnPicker/ColumnPicker.tsx @@ -1,9 +1,8 @@ import ClickAwayListener from "@material-ui/core/ClickAwayListener"; import Grow from "@material-ui/core/Grow"; import Popper from "@material-ui/core/Popper"; -import { Theme } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; -import makeStyles from "@material-ui/styles/makeStyles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import React from "react"; import useStateFromProps from "@saleor/hooks/useStateFromProps"; @@ -26,10 +25,10 @@ export interface ColumnPickerProps } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ popper: { boxShadow: `0px 5px 10px 0 ${fade(theme.palette.common.black, 0.05)}`, - marginTop: theme.spacing.unit * 2, + marginTop: theme.spacing(2), zIndex: 1 } }), diff --git a/src/components/ColumnPicker/ColumnPickerButton.tsx b/src/components/ColumnPicker/ColumnPickerButton.tsx index b57b8991e..b4778d0d9 100644 --- a/src/components/ColumnPicker/ColumnPickerButton.tsx +++ b/src/components/ColumnPicker/ColumnPickerButton.tsx @@ -1,8 +1,7 @@ import Button from "@material-ui/core/Button"; -import { Theme } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import ArrowDropDownIcon from "@material-ui/icons/ArrowDropDown"; -import makeStyles from "@material-ui/styles/makeStyles"; import classNames from "classnames"; import React from "react"; import { FormattedMessage } from "react-intl"; @@ -14,16 +13,16 @@ interface ColumnPickerButtonProps { } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ icon: { - marginLeft: theme.spacing.unit * 2, + marginLeft: theme.spacing(2), transition: theme.transitions.duration.short + "ms" }, root: { "& span": { color: theme.palette.primary.main }, - paddingRight: theme.spacing.unit + paddingRight: theme.spacing(1) }, rootActive: { background: fade(theme.palette.primary.main, 0.1) diff --git a/src/components/ColumnPicker/ColumnPickerContent.tsx b/src/components/ColumnPicker/ColumnPickerContent.tsx index bffe1bc82..8580d4391 100644 --- a/src/components/ColumnPicker/ColumnPickerContent.tsx +++ b/src/components/ColumnPicker/ColumnPickerContent.tsx @@ -2,9 +2,8 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import CircularProgress from "@material-ui/core/CircularProgress"; -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import Typography from "@material-ui/core/Typography"; -import makeStyles from "@material-ui/styles/makeStyles"; import classNames from "classnames"; import React from "react"; import InfiniteScroll from "react-infinite-scroller"; @@ -31,7 +30,7 @@ export interface ColumnPickerContentProps extends Partial { onSave: () => void; } -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ actionBar: { display: "flex", justifyContent: "space-between" @@ -41,28 +40,28 @@ const useStyles = makeStyles((theme: Theme) => ({ transition: theme.transitions.duration.short + "ms" }, cancelButton: { - marginRight: theme.spacing.unit * 2 + marginRight: theme.spacing(2) }, content: { display: "grid", - gridColumnGap: theme.spacing.unit * 3, + gridColumnGap: theme.spacing(3), gridTemplateColumns: "repeat(3, 1fr)", maxHeight: 256, overflowX: "visible", overflowY: "scroll", - padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px` + padding: theme.spacing(2, 3) }, contentContainer: { padding: 0 }, dropShadow: { - boxShadow: `0px -5px 10px 0px ${theme.overrides.MuiCard.root.borderColor}` + boxShadow: `0px -5px 10px 0px ${theme.palette.divider}` }, loadMoreLoaderContainer: { alignItems: "center", display: "flex", gridColumnEnd: "span 3", - height: theme.spacing.unit * 3, + height: theme.spacing(3), justifyContent: "center" }, root: { diff --git a/src/components/ConfirmButton/ConfirmButton.tsx b/src/components/ConfirmButton/ConfirmButton.tsx index e105eafbc..d570afbf4 100644 --- a/src/components/ConfirmButton/ConfirmButton.tsx +++ b/src/components/ConfirmButton/ConfirmButton.tsx @@ -1,11 +1,10 @@ -import { Omit } from "@material-ui/core"; import Button, { ButtonProps } from "@material-ui/core/Button"; import CircularProgress from "@material-ui/core/CircularProgress"; import { createStyles, Theme, - withStyles, - WithStyles + WithStyles, + withStyles } from "@material-ui/core/styles"; import CheckIcon from "@material-ui/icons/Check"; import { buttonMessages } from "@saleor/intl"; diff --git a/src/components/Container.tsx b/src/components/Container.tsx index 289563bc3..c2e48752a 100644 --- a/src/components/Container.tsx +++ b/src/components/Container.tsx @@ -1,35 +1,31 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - root: { - [theme.breakpoints.up("lg")]: { - marginLeft: "auto", - marginRight: "auto", - maxWidth: theme.breakpoints.width("lg") - }, - [theme.breakpoints.up("sm")]: { - padding: `0 ${theme.spacing.unit * 3}px` - }, - padding: `0 ${theme.spacing.unit}px` - } - }); +const useStyles = makeStyles(theme => ({ + root: { + [theme.breakpoints.up("lg")]: { + marginLeft: "auto", + marginRight: "auto", + maxWidth: theme.breakpoints.width("lg") + }, + [theme.breakpoints.up("sm")]: { + padding: theme.spacing(0, 3) + }, + padding: theme.spacing(0, 1) + } +})); -interface ContainerProps extends WithStyles { +interface ContainerProps { className?: string; } -export const Container = withStyles(styles, { - name: "Container" -})(({ classes, className, ...props }: ContainerProps) => ( -
-)); +export const Container: React.FC = props => { + const { className, ...rest } = props; + + const classes = useStyles(props); + + return
; +}; Container.displayName = "Container"; export default Container; diff --git a/src/components/ControlledSwitch.tsx b/src/components/ControlledSwitch.tsx index b9d9e6a36..2254a485a 100644 --- a/src/components/ControlledSwitch.tsx +++ b/src/components/ControlledSwitch.tsx @@ -1,19 +1,18 @@ -import { createStyles, Theme, withStyles, WithStyles } from "@material-ui/core"; +import { makeStyles } from "@material-ui/core"; import FormControlLabel from "@material-ui/core/FormControlLabel"; import Switch from "@material-ui/core/Switch"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - label: { - marginLeft: theme.spacing.unit * 3.5 - }, - labelText: { - fontSize: 14 - } - }); +const useStyles = makeStyles(theme => ({ + label: { + marginLeft: theme.spacing(3.5) + }, + labelText: { + fontSize: 14 + } +})); -interface ControlledSwitchProps extends WithStyles { +interface ControlledSwitchProps { checked: boolean; disabled?: boolean; label: string | React.ReactNode; @@ -23,11 +22,8 @@ interface ControlledSwitchProps extends WithStyles { onChange?(event: React.ChangeEvent); } -export const ControlledSwitch = withStyles(styles, { - name: "ControlledSwitch" -})( - ({ - classes, +export const ControlledSwitch: React.FC = props => { + const { checked, disabled, onChange, @@ -35,7 +31,11 @@ export const ControlledSwitch = withStyles(styles, { name, secondLabel, uncheckedLabel - }: ControlledSwitchProps) => ( + } = props; + + const classes = useStyles(props); + + return ( - ) -); + ); +}; ControlledSwitch.displayName = "ControlledSwitch"; export default ControlledSwitch; diff --git a/src/components/CountryList/CountryList.tsx b/src/components/CountryList/CountryList.tsx index f7fe18a79..7924c0d3f 100644 --- a/src/components/CountryList/CountryList.tsx +++ b/src/components/CountryList/CountryList.tsx @@ -2,12 +2,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -32,158 +27,155 @@ export interface CountryListProps { onCountryUnassign: (country: string) => void; } -const styles = (theme: Theme) => - createStyles({ - iconCell: { - "&:last-child": { - paddingRight: 0 - }, - width: 48 + theme.spacing.unit / 2 +const useStyles = makeStyles(theme => ({ + iconCell: { + "&:last-child": { + paddingRight: 0 }, - indicator: { - color: theme.palette.text.disabled, - display: "inline-block", - left: 0, - marginRight: theme.spacing.unit * 2, - position: "absolute" + width: 48 + theme.spacing(2) + }, + indicator: { + color: theme.palette.text.disabled, + display: "inline-block", + left: 0, + marginRight: theme.spacing(0.5), + position: "absolute" + }, + offsetCell: { + "&:first-child": { + paddingLeft: theme.spacing(3) }, - offsetCell: { - "&:first-child": { - paddingLeft: theme.spacing.unit * 3 - }, - position: "relative" + position: "relative" + }, + pointer: { + cursor: "pointer" + }, + root: { + "&:last-child": { + paddingBottom: 0 }, - pointer: { - cursor: "pointer" - }, - root: { - "&:last-child": { - paddingBottom: 0 - }, - paddingTop: 0 - }, - rotate: { - transform: "rotate(180deg)" - }, - textRight: { - textAlign: "right" - }, - toLeft: { - "&:first-child": { - paddingLeft: 0 - } - }, - wideColumn: { - width: "100%" + paddingTop: 0 + }, + rotate: { + transform: "rotate(180deg)" + }, + textRight: { + textAlign: "right" + }, + toLeft: { + "&:first-child": { + paddingLeft: 0 } - }); + }, + wideColumn: { + width: "100%" + } +})); -const CountryList = withStyles(styles, { - name: "CountryList" -})( - ({ - classes, +const CountryList: React.FC = props => { + const { countries, disabled, emptyText, title, onCountryAssign, onCountryUnassign - }: CountryListProps & WithStyles) => { - const [isCollapsed, setCollapseStatus] = React.useState(true); - const toggleCollapse = () => setCollapseStatus(!isCollapsed); + } = props; + const classes = useStyles(props); - return ( - - - - - } - /> - - - - - - countries.length.toString(), "...") - }} + const [isCollapsed, setCollapseStatus] = React.useState(true); + const toggleCollapse = () => setCollapseStatus(!isCollapsed); + + return ( + + + + + } + /> + +
+ + + + countries.length.toString(), "...") + }} + /> + + + + - - - - - - - - {!isCollapsed && - renderCollection( - countries, - (country, countryIndex) => ( - - - {maybe( - () => ( - <> - {(countryIndex === 0 || - countries[countryIndex].country[0] !== - countries[countryIndex - 1].country[0]) && ( - - {country.country[0]} - - )} - {country.country} - - ), - - )} - - + + + {!isCollapsed && + renderCollection( + countries, + (country, countryIndex) => ( + + + {maybe( + () => ( + <> + {(countryIndex === 0 || + countries[countryIndex].country[0] !== + countries[countryIndex - 1].country[0]) && ( + + {country.country[0]} + + )} + {country.country} + + ), + + )} + + + onCountryUnassign(country.code)} > - onCountryUnassign(country.code)} - > - - - - - ), - () => ( - - - {emptyText} - - - ) - )} - -
-
-
- ); - } -); + + + + + ), + () => ( + + + {emptyText} + + + ) + )} + + + + + ); +}; export default CountryList; diff --git a/src/components/Debounce.tsx b/src/components/Debounce.tsx index 5d5c67571..6189ba60c 100644 --- a/src/components/Debounce.tsx +++ b/src/components/Debounce.tsx @@ -1,7 +1,7 @@ import React from "react"; export interface DebounceProps { - children: ((props: (...args: T[]) => void) => React.ReactNode); + children: (props: (...args: T[]) => void) => React.ReactNode; debounceFn: (...args: T[]) => void; time?: number; } diff --git a/src/components/DeleteFilterTabDialog/index.ts b/src/components/DeleteFilterTabDialog/index.ts index 3f4ef0d56..0502c29ae 100644 --- a/src/components/DeleteFilterTabDialog/index.ts +++ b/src/components/DeleteFilterTabDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './DeleteFilterTabDialog'; -export * from './DeleteFilterTabDialog'; \ No newline at end of file +export { default } from "./DeleteFilterTabDialog"; +export * from "./DeleteFilterTabDialog"; diff --git a/src/components/EditableTableCell/EditableTableCell.tsx b/src/components/EditableTableCell/EditableTableCell.tsx index 594c244ca..b9acac21b 100644 --- a/src/components/EditableTableCell/EditableTableCell.tsx +++ b/src/components/EditableTableCell/EditableTableCell.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TableCell from "@material-ui/core/TableCell"; import TextField, { TextFieldProps } from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; @@ -14,38 +9,37 @@ import React from "react"; import useForm from "@saleor/hooks/useForm"; -const styles = (theme: Theme) => - createStyles({ - card: { - border: `1px solid ${theme.overrides.MuiCard.root.borderColor}` - }, - container: { - position: "relative" - }, - overlay: { - cursor: "pointer", - height: "100vh", - left: 0, - position: "fixed", - top: 0, - width: "100vw", - zIndex: 1 - }, - root: { - left: 0, - minWidth: theme.spacing.unit * 20, - position: "absolute", - top: 0, - width: `calc(100% + ${4 * theme.spacing.unit}px)`, - zIndex: 2 - }, - text: { - cursor: "pointer", - fontSize: "0.8125rem" - } - }); +const useStyles = makeStyles(theme => ({ + card: { + border: `1px solid ${theme.palette.divider}` + }, + container: { + position: "relative" + }, + overlay: { + cursor: "pointer", + height: "100vh", + left: 0, + position: "fixed", + top: 0, + width: "100vw", + zIndex: 1 + }, + root: { + left: 0, + minWidth: theme.spacing(20), + position: "absolute", + top: 0, + width: `calc(100% + ${theme.spacing(4)}px)`, + zIndex: 2 + }, + text: { + cursor: "pointer", + fontSize: "0.8125rem" + } +})); -interface EditableTableCellProps extends WithStyles { +interface EditableTableCellProps { className?: string; defaultValue?: string; focused?: boolean; @@ -54,54 +48,52 @@ interface EditableTableCellProps extends WithStyles { onConfirm(value: string): any; } -export const EditableTableCell = withStyles(styles, { - name: "EditableTableCell" -})( - ({ - classes, +export const EditableTableCell: React.FC = props => { + const { className, defaultValue, focused, InputProps, value, onConfirm - }: EditableTableCellProps) => { - const handleConfirm = (data: { value: string }) => { - disable(); - onConfirm(data.value); - }; + } = props; + const classes = useStyles(props); - const [opened, setOpenStatus] = React.useState(focused); - const { change, data } = useForm({ value }, [], handleConfirm); - const enable = () => setOpenStatus(true); - const disable = () => setOpenStatus(false); + const handleConfirm = (data: { value: string }) => { + disable(); + onConfirm(data.value); + }; - return ( - - {opened &&
} - - {value || defaultValue} - - {opened && ( -
- - - - - -
- )} - - ); - } -); + const [opened, setOpenStatus] = React.useState(focused); + const { change, data } = useForm({ value }, [], handleConfirm); + const enable = () => setOpenStatus(true); + const disable = () => setOpenStatus(false); + + return ( + + {opened &&
} + + {value || defaultValue} + + {opened && ( +
+ + + + + +
+ )} + + ); +}; EditableTableCell.displayName = "EditableTableCell"; export default EditableTableCell; diff --git a/src/components/ErrorMessageCard/ErrorMessageCard.tsx b/src/components/ErrorMessageCard/ErrorMessageCard.tsx index 585813799..423976bea 100644 --- a/src/components/ErrorMessageCard/ErrorMessageCard.tsx +++ b/src/components/ErrorMessageCard/ErrorMessageCard.tsx @@ -13,7 +13,7 @@ const ErrorMessageCard: React.FC = ({ message }) => ( - {message} + {message} ); diff --git a/src/components/ErrorPage/ErrorPage.tsx b/src/components/ErrorPage/ErrorPage.tsx index 38b374c22..77b6ba041 100644 --- a/src/components/ErrorPage/ErrorPage.tsx +++ b/src/components/ErrorPage/ErrorPage.tsx @@ -1,10 +1,5 @@ import Button from "@material-ui/core/Button"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import SVG from "react-inlinesvg"; @@ -12,57 +7,60 @@ import { FormattedMessage } from "react-intl"; import notFoundImage from "@assets/images/what.svg"; -export interface ErrorPageProps extends WithStyles { +export interface ErrorPageProps { onBack: () => void; } -const styles = (theme: Theme) => - createStyles({ - bottomHeader: { - fontWeight: 600 as 600, - textTransform: "uppercase" +const useStyles = makeStyles(theme => ({ + bottomHeader: { + fontWeight: 600 as 600, + textTransform: "uppercase" + }, + button: { + marginTop: theme.spacing(2), + padding: 20 + }, + container: { + [theme.breakpoints.down("sm")]: { + gridTemplateColumns: "1fr", + padding: theme.spacing(3), + width: "100%" }, - button: { - marginTop: theme.spacing.unit * 2, - padding: 20 + display: "grid", + gridTemplateColumns: "1fr 487px", + margin: "0 auto", + width: 830 + }, + innerContainer: { + [theme.breakpoints.down("sm")]: { + order: 1, + textAlign: "center" }, - container: { - [theme.breakpoints.down("sm")]: { - gridTemplateColumns: "1fr", - padding: theme.spacing.unit * 3, - width: "100%" - }, - display: "grid", - gridTemplateColumns: "1fr 487px", - margin: "0 auto", - width: 830 - }, - innerContainer: { - [theme.breakpoints.down("sm")]: { - order: 1, - textAlign: "center" - }, - display: "flex", - flexDirection: "column", - justifyContent: "center" - }, - notFoundImage: { - "& svg": { - width: "100%" - } - }, - root: { - alignItems: "center", - display: "flex", - height: "calc(100vh - 88px)" - }, - upperHeader: { - fontWeight: 600 as 600 + display: "flex", + flexDirection: "column", + justifyContent: "center" + }, + notFoundImage: { + "& svg": { + width: "100%" } - }); + }, + root: { + alignItems: "center", + display: "flex", + height: "calc(100vh - 88px)" + }, + upperHeader: { + fontWeight: 600 as 600 + } +})); -const ErrorPage = withStyles(styles, { name: "NotFoundPage" })( - ({ classes, onBack }: ErrorPageProps) => ( +const ErrorPage: React.FC = props => { + const { onBack } = props; + + const classes = useStyles(props); + + return (
@@ -99,7 +97,7 @@ const ErrorPage = withStyles(styles, { name: "NotFoundPage" })(
- ) -); + ); +}; ErrorPage.displayName = "ErrorPage"; export default ErrorPage; diff --git a/src/components/ExtendedPageHeader/ExtendedPageHeader.tsx b/src/components/ExtendedPageHeader/ExtendedPageHeader.tsx index 7a71d6375..70d1c6a1a 100644 --- a/src/components/ExtendedPageHeader/ExtendedPageHeader.tsx +++ b/src/components/ExtendedPageHeader/ExtendedPageHeader.tsx @@ -1,55 +1,53 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - action: { - flex: "0 0 auto" - }, - grid: { - padding: theme.spacing.unit * 2 - }, - menuButton: { - flex: "0 0 auto", - marginLeft: theme.spacing.unit * -2, - marginRight: theme.spacing.unit * 3, - marginTop: -theme.spacing.unit * 2 - }, - root: { - alignItems: "center", - display: "flex", - marginBottom: theme.spacing.unit * 3 - }, - subtitle: { - alignItems: "center", - display: "flex", - marginBottom: theme.spacing.unit * 2 - }, - title: { - flex: 1, - paddingBottom: theme.spacing.unit * 2 - } - }); +const useStyles = makeStyles(theme => ({ + action: { + flex: "0 0 auto" + }, + grid: { + padding: theme.spacing(2) + }, + menuButton: { + flex: "0 0 auto", + marginLeft: -theme.spacing(2), + marginRight: theme.spacing(3), + marginTop: -theme.spacing(2) + }, + root: { + alignItems: "center", + display: "flex", + marginBottom: theme.spacing(3) + }, + subtitle: { + alignItems: "center", + display: "flex", + marginBottom: theme.spacing(2) + }, + title: { + flex: 1, + paddingBottom: theme.spacing(2) + } +})); -interface ExtendedPageHeaderProps extends WithStyles { +interface ExtendedPageHeaderProps { children?: React.ReactNode; className?: string; title?: React.ReactNode; } -const ExtendedPageHeader = withStyles(styles, { name: "ExtendedPageHeader" })( - ({ children, classes, className, title }: ExtendedPageHeaderProps) => ( +const ExtendedPageHeader: React.FC = props => { + const { children, className, title } = props; + + const classes = useStyles(props); + + return (
{title}
{children}
- ) -); + ); +}; ExtendedPageHeader.displayName = "ExtendedPageHeader"; export default ExtendedPageHeader; diff --git a/src/components/ExternalLink/ExternalLink.tsx b/src/components/ExternalLink/ExternalLink.tsx index 3255f54ea..d81d933ab 100644 --- a/src/components/ExternalLink/ExternalLink.tsx +++ b/src/components/ExternalLink/ExternalLink.tsx @@ -1,36 +1,31 @@ -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography, { TypographyProps } from "@material-ui/core/Typography"; import React from "react"; -const styles = createStyles({ +const useStyles = makeStyles({ link: { textDecoration: "none" } }); -interface ExternalLinkProps - extends React.HTMLProps, - WithStyles { +interface ExternalLinkProps extends React.HTMLProps { href: string; className?: string; typographyProps?: TypographyProps; } -const ExternalLink = withStyles(styles, { name: "ExternalLink" })( - ({ - classes, - className, - children, - href, - typographyProps, - ...props - }: ExternalLinkProps) => ( - +const ExternalLink: React.FC = props => { + const { className, children, href, typographyProps, ...rest } = props; + + const classes = useStyles(props); + + return ( + {children} - ) -); + ); +}; ExternalLink.displayName = "ExternalLink"; export default ExternalLink; diff --git a/src/components/FileUpload/FileUpload.tsx b/src/components/FileUpload/FileUpload.tsx index 6c71f53f7..a70681b38 100644 --- a/src/components/FileUpload/FileUpload.tsx +++ b/src/components/FileUpload/FileUpload.tsx @@ -1,10 +1,10 @@ import Button from "@material-ui/core/Button"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { FormattedMessage } from "react-intl"; -const styles = createStyles({ +const useStyles = makeStyles({ fileUploadField: { display: "none" }, @@ -16,15 +16,19 @@ const styles = createStyles({ } }); -interface FileUploadProps extends WithStyles { +interface FileUploadProps { disabled?: boolean; name?: string; value?: any; onChange?(event: React.ChangeEvent); } -const FileUpload = withStyles(styles, { name: "FileUpload" })( - ({ classes, disabled, name, value, onChange }: FileUploadProps) => ( +const FileUpload: React.FC = props => { + const { disabled, name, value, onChange } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; FileUpload.displayName = "FileUpload"; export default FileUpload; diff --git a/src/components/Filter/Filter.tsx b/src/components/Filter/Filter.tsx index b9d216264..0f5e2a166 100644 --- a/src/components/Filter/Filter.tsx +++ b/src/components/Filter/Filter.tsx @@ -2,12 +2,7 @@ import ButtonBase from "@material-ui/core/ButtonBase"; import Grow from "@material-ui/core/Grow"; import Paper from "@material-ui/core/Paper"; import Popper from "@material-ui/core/Popper"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import ArrowDropDownIcon from "@material-ui/icons/ArrowDropDown"; @@ -26,130 +21,120 @@ export interface FilterProps { onFilterAdd: (filter: FilterContentSubmitData) => void; } -const styles = (theme: Theme) => - createStyles({ - addFilterButton: { - "&$filterButton": { - "&:hover, &:focus": { - backgroundColor: fade(theme.palette.primary.main, 0.1) - }, - backgroundColor: theme.palette.background.paper, - border: `1px solid ${theme.palette.primary.main}`, - cursor: "pointer", - marginBottom: 0, - marginRight: theme.spacing.unit * 2, - marginTop: 0, - transition: theme.transitions.duration.short + "ms" - } - }, - addFilterButtonActive: { - "&$addFilterButton": { +const useStyles = makeStyles(theme => ({ + addFilterButton: { + "&$filterButton": { + "&:hover, &:focus": { backgroundColor: fade(theme.palette.primary.main, 0.1) - } - }, - addFilterIcon: { - transition: theme.transitions.duration.short + "ms" - }, - addFilterText: { - color: theme.palette.primary.main, - fontSize: 14, - fontWeight: 600 as 600, - marginRight: 4, - textTransform: "uppercase" - }, - filterButton: { - alignItems: "center", - backgroundColor: fade(theme.palette.primary.main, 0.6), - borderRadius: "4px", - display: "flex", - height: "45px", - justifyContent: "space-around", - margin: `0 ${theme.spacing.unit * 2}px ${theme.spacing.unit}px`, - marginLeft: 0, - padding: "0 16px", - position: "relative", - top: -5 - }, - paper: { - "& p": { - paddingBottom: 10 }, - marginTop: theme.spacing.unit * 2, - padding: theme.spacing.unit * 2, - width: 240 - }, - popover: { - zIndex: 1 - }, - rotate: { - transform: "rotate(180deg)" + backgroundColor: theme.palette.background.paper, + border: `1px solid ${theme.palette.primary.main}`, + cursor: "pointer", + marginBottom: 0, + marginRight: theme.spacing(2), + marginTop: 0, + transition: theme.transitions.duration.short + "ms" } - }); -const Filter = withStyles(styles, { name: "Filter" })( - ({ - classes, - currencySymbol, - filterLabel, - menu, - onFilterAdd - }: FilterProps & WithStyles) => { - const anchor = React.useRef(); - const [isFilterMenuOpened, setFilterMenuOpened] = React.useState(false); - - return ( -
- setFilterMenuOpened(!isFilterMenuOpened)} - > - - - - - - - {({ TransitionProps, placement }) => ( - - - {filterLabel} - { - onFilterAdd(data); - setFilterMenuOpened(false); - }} - /> - - - )} - -
- ); + }, + addFilterButtonActive: { + "&$addFilterButton": { + backgroundColor: fade(theme.palette.primary.main, 0.1) + } + }, + addFilterIcon: { + transition: theme.transitions.duration.short + "ms" + }, + addFilterText: { + color: theme.palette.primary.main, + fontSize: 14, + fontWeight: 600 as 600, + marginRight: 4, + textTransform: "uppercase" + }, + filterButton: { + alignItems: "center", + backgroundColor: fade(theme.palette.primary.main, 0.6), + borderRadius: "4px", + display: "flex", + height: 40, + justifyContent: "space-around", + margin: theme.spacing(2, 1), + marginLeft: 0, + padding: theme.spacing(0, 2), + position: "relative" + }, + paper: { + "& p": { + paddingBottom: 10 + }, + marginTop: theme.spacing(2), + padding: theme.spacing(2), + width: 240 + }, + popover: { + zIndex: 1 + }, + rotate: { + transform: "rotate(180deg)" } -); +})); +const Filter: React.FC = props => { + const { currencySymbol, filterLabel, menu, onFilterAdd } = props; + const classes = useStyles(props); + + const anchor = React.useRef(); + const [isFilterMenuOpened, setFilterMenuOpened] = React.useState(false); + + return ( +
+ setFilterMenuOpened(!isFilterMenuOpened)} + > + + + + + + + {({ TransitionProps, placement }) => ( + + + {filterLabel} + { + onFilterAdd(data); + setFilterMenuOpened(false); + }} + /> + + + )} + +
+ ); +}; Filter.displayName = "Filter"; export default Filter; diff --git a/src/components/Filter/FilterActions.tsx b/src/components/Filter/FilterActions.tsx index 21266ae12..3d5cdbcc7 100644 --- a/src/components/Filter/FilterActions.tsx +++ b/src/components/Filter/FilterActions.tsx @@ -1,6 +1,6 @@ -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField, { TextFieldProps } from "@material-ui/core/TextField"; -import { makeStyles } from "@material-ui/styles"; +import classNames from "classnames"; import React from "react"; import { FilterContentSubmitData, IFilter } from "../Filter"; @@ -8,7 +8,7 @@ import Filter from "./Filter"; const useInputStyles = makeStyles({ input: { - padding: "10px 12px" + padding: "10.5px 12px" }, root: { flex: 1 @@ -17,6 +17,7 @@ const useInputStyles = makeStyles({ const Search: React.FC = props => { const classes = useInputStyles({}); + return ( = props => { }; const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ actionContainer: { display: "flex", flexWrap: "wrap", - padding: `${theme.spacing.unit * 1.5}px ${theme.spacing.unit * 3}px ${ - theme.spacing.unit - }px` + padding: theme.spacing(1, 3) + }, + searchOnly: { + paddingBottom: theme.spacing(1.5) } }), { @@ -62,7 +64,7 @@ export const FilterActionsOnlySearch: React.FC< const classes = useStyles(props); return ( -
+
({ + theme => ({ tabAction: { display: "inline-block" }, @@ -25,8 +24,8 @@ const useStyles = makeStyles( borderBottom: `1px solid ${theme.palette.divider}`, display: "flex", justifyContent: "flex-end", - marginTop: theme.spacing.unit, - padding: `0 ${theme.spacing.unit * 3}px ${theme.spacing.unit}px` + marginTop: theme.spacing(), + padding: theme.spacing(0, 1, 3, 1) } }), { diff --git a/src/components/FilterBar/index.ts b/src/components/FilterBar/index.ts index 000078c21..1a6b6f6b5 100644 --- a/src/components/FilterBar/index.ts +++ b/src/components/FilterBar/index.ts @@ -1,2 +1,2 @@ -export { default } from './FilterBar'; -export * from './FilterBar'; \ No newline at end of file +export { default } from "./FilterBar"; +export * from "./FilterBar"; diff --git a/src/components/FormSpacer.tsx b/src/components/FormSpacer.tsx index 0ab94843d..5dc8cfb2c 100644 --- a/src/components/FormSpacer.tsx +++ b/src/components/FormSpacer.tsx @@ -1,27 +1,23 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - spacer: { - marginTop: theme.spacing.unit * 3 - } - }); +const useStyles = makeStyles(theme => ({ + spacer: { + marginTop: theme.spacing(3) + } +})); -interface FormSpacerProps extends WithStyles { +interface FormSpacerProps { children?: React.ReactNode; } -export const FormSpacer = withStyles(styles, { name: "FormSpacer" })( - ({ classes, children }: FormSpacerProps) => ( -
{children}
- ) -); +export const FormSpacer: React.FC = props => { + const { children } = props; + + const classes = useStyles(props); + + return
{children}
; +}; FormSpacer.displayName = "FormSpacer"; export default FormSpacer; diff --git a/src/components/Grid/Grid.tsx b/src/components/Grid/Grid.tsx index 31a58cd47..2d90dd9fa 100644 --- a/src/components/Grid/Grid.tsx +++ b/src/components/Grid/Grid.tsx @@ -1,43 +1,41 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; export type GridVariant = "default" | "inverted" | "uniform"; -export interface GridProps extends WithStyles { +export interface GridProps { children: React.ReactNodeArray | React.ReactNode; className?: string; variant?: GridVariant; } -const styles = (theme: Theme) => - createStyles({ - default: { - gridTemplateColumns: "9fr 4fr" - }, - inverted: { - gridTemplateColumns: "4fr 9fr" - }, - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 3 + "px", - gridRowGap: theme.spacing.unit * 3 + "px", - [theme.breakpoints.down("sm")]: { - gridRowGap: theme.spacing.unit + "px", - gridTemplateColumns: "1fr" - } - }, - uniform: { - gridTemplateColumns: "1fr 1fr" +const useStyles = makeStyles(theme => ({ + default: { + gridTemplateColumns: "9fr 4fr" + }, + inverted: { + gridTemplateColumns: "4fr 9fr" + }, + root: { + display: "grid", + gridColumnGap: theme.spacing(3), + gridRowGap: theme.spacing(3), + [theme.breakpoints.down("sm")]: { + gridRowGap: theme.spacing(1), + gridTemplateColumns: "1fr" } - }); + }, + uniform: { + gridTemplateColumns: "1fr 1fr" + } +})); -export const Grid = withStyles(styles, { name: "Grid" })( - ({ className, children, classes, variant }: GridProps) => ( +export const Grid: React.FC = props => { + const { className, children, variant } = props; + + const classes = useStyles(props); + + return (
{children}
- ) -); + ); +}; Grid.displayName = "Grid"; Grid.defaultProps = { variant: "default" diff --git a/src/components/Hr.tsx b/src/components/Hr.tsx index 63694a14b..edc39e5bc 100644 --- a/src/components/Hr.tsx +++ b/src/components/Hr.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; @@ -11,22 +6,23 @@ interface HrProps { className?: string; } -const styles = (theme: Theme) => - createStyles({ - root: { - backgroundColor: theme.overrides.MuiCard.root.borderColor, - border: "none", - display: "block", - height: 1, - margin: 0, - width: "100%" - } - }); +const useStyles = makeStyles(theme => ({ + root: { + backgroundColor: theme.palette.divider, + border: "none", + display: "block", + height: 1, + margin: 0, + width: "100%" + } +})); -export const Hr = withStyles(styles, { name: "Hr" })( - ({ className, classes }: HrProps & WithStyles) => ( -
- ) -); +export const Hr: React.FC = props => { + const { className } = props; + + const classes = useStyles(props); + + return
; +}; Hr.displayName = "Hr"; export default Hr; diff --git a/src/components/IconButtonTableCell/IconButtonTableCell.tsx b/src/components/IconButtonTableCell/IconButtonTableCell.tsx index 25bf1fed2..a8f58bd02 100644 --- a/src/components/IconButtonTableCell/IconButtonTableCell.tsx +++ b/src/components/IconButtonTableCell/IconButtonTableCell.tsx @@ -1,10 +1,5 @@ import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TableCell from "@material-ui/core/TableCell"; import React from "react"; @@ -17,23 +12,26 @@ export interface IconButtonTableCellProps { onClick: () => void; } -const styles = (theme: Theme) => - createStyles({ - root: { - "&:last-child": { - paddingRight: 0 - }, - paddingRight: 0, - width: ICONBUTTON_SIZE + theme.spacing.unit / 2 - } - }); -const IconButtonTableCell = withStyles(styles, { name: "IconButtonTableCell" })( - ({ +const useStyles = makeStyles(theme => ({ + root: { + "&:last-child": { + paddingRight: 0 + }, + paddingRight: 0, + width: ICONBUTTON_SIZE + theme.spacing(0.5) + } +})); +const IconButtonTableCell: React.FC = props => { + const { children, - classes, + disabled, onClick - }: IconButtonTableCellProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return ( - ) -); + ); +}; IconButtonTableCell.displayName = "IconButtonTableCell"; export default IconButtonTableCell; diff --git a/src/components/IconButtonTableCell/index.ts b/src/components/IconButtonTableCell/index.ts index ec9027bd4..aa267536f 100644 --- a/src/components/IconButtonTableCell/index.ts +++ b/src/components/IconButtonTableCell/index.ts @@ -1,2 +1,2 @@ -export { default } from './IconButtonTableCell'; -export * from './IconButtonTableCell'; \ No newline at end of file +export { default } from "./IconButtonTableCell"; +export * from "./IconButtonTableCell"; diff --git a/src/components/ImageTile/ImageTile.tsx b/src/components/ImageTile/ImageTile.tsx index 8becd3fa2..9e71294a5 100644 --- a/src/components/ImageTile/ImageTile.tsx +++ b/src/components/ImageTile/ImageTile.tsx @@ -1,55 +1,49 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import IconButton from "@material-ui/core/IconButton"; import DeleteIcon from "@material-ui/icons/Delete"; import EditIcon from "@material-ui/icons/Edit"; -const styles = (theme: Theme) => - createStyles({ - image: { - height: "100%", - objectFit: "contain", - userSelect: "none", - width: "100%" +const useStyles = makeStyles(theme => ({ + image: { + height: "100%", + objectFit: "contain", + userSelect: "none", + width: "100%" + }, + imageContainer: { + "&:hover, &.dragged": { + "& $imageOverlay": { + display: "block" + } }, - imageContainer: { - "&:hover, &.dragged": { - "& $imageOverlay": { - display: "block" - } - }, - background: theme.palette.background.paper, - border: `1px solid ${theme.overrides.MuiCard.root.borderColor}`, - borderRadius: theme.spacing.unit, - height: 148, - overflow: "hidden", - padding: theme.spacing.unit * 2, - position: "relative", - width: 148 - }, - imageOverlay: { - background: "rgba(0, 0, 0, 0.6)", - cursor: "move", - display: "none", - height: 148, - left: 0, - position: "absolute", - top: 0, - width: 148 - }, - imageOverlayToolbar: { - display: "flex", - justifyContent: "flex-end" - } - }); + background: theme.palette.background.paper, + border: `1px solid ${theme.palette.divider}`, + borderRadius: theme.spacing(), + height: 148, + overflow: "hidden", + padding: theme.spacing(2), + position: "relative", + width: 148 + }, + imageOverlay: { + background: "rgba(0, 0, 0, 0.6)", + cursor: "move", + display: "none", + height: 148, + left: 0, + position: "absolute", + top: 0, + width: 148 + }, + imageOverlayToolbar: { + display: "flex", + justifyContent: "flex-end" + } +})); -interface ImageTileProps extends WithStyles { +interface ImageTileProps { image: { alt?: string; url: string; @@ -58,8 +52,12 @@ interface ImageTileProps extends WithStyles { onImageEdit?: (event: React.ChangeEvent) => void; } -const ImageTile = withStyles(styles, { name: "ImageTile" })( - ({ classes, onImageDelete, onImageEdit, image }: ImageTileProps) => ( +const ImageTile: React.FC = props => { + const { onImageDelete, onImageEdit, image } = props; + + const classes = useStyles(props); + + return (
@@ -77,7 +75,7 @@ const ImageTile = withStyles(styles, { name: "ImageTile" })(
{image.alt}
- ) -); + ); +}; ImageTile.displayName = "ImageTile"; export default ImageTile; diff --git a/src/components/ImageUpload/ImageUpload.tsx b/src/components/ImageUpload/ImageUpload.tsx index 5ffc05d7f..5216a0013 100644 --- a/src/components/ImageUpload/ImageUpload.tsx +++ b/src/components/ImageUpload/ImageUpload.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; @@ -22,55 +17,58 @@ interface ImageUploadProps { onImageUpload: (file: File) => void; } -const styles = (theme: Theme) => - createStyles({ - containerDragActive: { - background: fade(theme.palette.primary.main, 0.1), - color: theme.palette.primary.main - }, - fileField: { - display: "none" - }, - imageContainer: { - background: "#ffffff", - border: "1px solid #eaeaea", - borderRadius: theme.spacing.unit, - height: 148, - justifySelf: "start", - overflow: "hidden", - padding: theme.spacing.unit * 2, - position: "relative", - transition: theme.transitions.duration.standard + "s", - width: 148 - }, - photosIcon: { - height: "64px", - margin: "0 auto", - width: "64px" - }, - photosIconContainer: { - padding: `${theme.spacing.unit * 5}px 0`, - textAlign: "center" - }, - uploadText: { - color: theme.typography.body2.color, - fontSize: 12, - fontWeight: 600, - textTransform: "uppercase" - } - }); +const useStyles = makeStyles(theme => ({ + containerDragActive: { + background: fade(theme.palette.primary.main, 0.1), + color: theme.palette.primary.main + }, + fileField: { + display: "none" + }, + imageContainer: { + background: "#ffffff", + border: "1px solid #eaeaea", + borderRadius: theme.spacing(), + height: 148, + justifySelf: "start", + overflow: "hidden", + padding: theme.spacing(2), + position: "relative", + transition: theme.transitions.duration.standard + "s", + width: 148 + }, + photosIcon: { + height: "64px", + margin: "0 auto", + width: "64px" + }, + photosIconContainer: { + padding: theme.spacing(5, 0), + textAlign: "center" + }, + uploadText: { + color: theme.typography.body1.color, + fontSize: 12, + fontWeight: 600, + textTransform: "uppercase" + } +})); -export const ImageUpload = withStyles(styles, { name: "ImageUpload" })( - ({ +export const ImageUpload: React.FC = props => { + const { children, - classes, + className, disableClick, isActiveClassName, iconContainerActiveClassName, iconContainerClassName, onImageUpload - }: ImageUploadProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return ( onImageUpload(files[0])} @@ -107,7 +105,7 @@ export const ImageUpload = withStyles(styles, { name: "ImageUpload" })( )} - ) -); + ); +}; ImageUpload.displayName = "ImageUpload"; export default ImageUpload; diff --git a/src/components/LanguageSwitch/LanguageSwitch.tsx b/src/components/LanguageSwitch/LanguageSwitch.tsx index fb0396797..d5235f703 100644 --- a/src/components/LanguageSwitch/LanguageSwitch.tsx +++ b/src/components/LanguageSwitch/LanguageSwitch.tsx @@ -5,12 +5,7 @@ import MenuItem from "@material-ui/core/MenuItem"; import Menu from "@material-ui/core/MenuList"; import Paper from "@material-ui/core/Paper"; import Popper from "@material-ui/core/Popper"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import ArrowDropDown from "@material-ui/icons/ArrowDropDown"; import classNames from "classnames"; @@ -26,109 +21,104 @@ export interface LanguageSwitchProps { onLanguageChange: (lang: LanguageCodeEnum) => void; } -const styles = (theme: Theme) => - createStyles({ - arrow: { - color: theme.palette.primary.main, - transition: theme.transitions.duration.standard + "ms" - }, - container: { - paddingBottom: theme.spacing.unit - }, - menuContainer: { - cursor: "pointer", - display: "flex", - justifyContent: "space-between", - minWidth: 90, - padding: theme.spacing.unit, - position: "relative" - }, - menuItem: { - textAlign: "justify" - }, - menuPaper: { - maxHeight: `calc(100vh - ${theme.spacing.unit * 2}px)`, - overflow: "scroll" - }, - popover: { - zIndex: 1 - }, - rotate: { - transform: "rotate(180deg)" - } - }); -const LanguageSwitch = withStyles(styles, { name: "LanguageSwitch" })( - ({ - classes, - currentLanguage, - languages, - onLanguageChange - }: LanguageSwitchProps & WithStyles) => { - const [isExpanded, setExpandedState] = React.useState(false); - const anchor = React.useRef(); - - return ( -
- setExpandedState(!isExpanded)} - > - {currentLanguage} - - - - {({ TransitionProps, placement }) => ( - - - setExpandedState(false)} - mouseEvent="onClick" - > - {languages.map(lang => ( - - { - setExpandedState(false); - onLanguageChange(lang.code); - }} - > - - - - ))} - - - - )} - -
- ); +const useStyles = makeStyles(theme => ({ + arrow: { + color: theme.palette.primary.main, + transition: theme.transitions.duration.standard + "ms" + }, + container: { + paddingBottom: theme.spacing(1) + }, + menuContainer: { + cursor: "pointer", + display: "flex", + justifyContent: "space-between", + minWidth: 90, + padding: theme.spacing(), + position: "relative" + }, + menuItem: { + textAlign: "justify" + }, + menuPaper: { + maxHeight: `calc(100vh - ${theme.spacing(2)}px)`, + overflow: "scroll" + }, + popover: { + zIndex: 1 + }, + rotate: { + transform: "rotate(180deg)" } -); +})); +const LanguageSwitch: React.FC = props => { + const { currentLanguage, languages, onLanguageChange } = props; + const classes = useStyles(props); + + const [isExpanded, setExpandedState] = React.useState(false); + const anchor = React.useRef(); + + return ( +
+ setExpandedState(!isExpanded)} + > + {currentLanguage} + + + + {({ TransitionProps, placement }) => ( + + + setExpandedState(false)} + mouseEvent="onClick" + > + {languages.map(lang => ( + + { + setExpandedState(false); + onLanguageChange(lang.code); + }} + > + + + + ))} + + + + )} + +
+ ); +}; LanguageSwitch.displayName = "LanguageSwitch"; export default LanguageSwitch; diff --git a/src/components/LanguageSwitch/index.ts b/src/components/LanguageSwitch/index.ts index 4c425527e..3d4e2e8f1 100644 --- a/src/components/LanguageSwitch/index.ts +++ b/src/components/LanguageSwitch/index.ts @@ -1,2 +1,2 @@ -export { default } from './LanguageSwitch'; -export * from './LanguageSwitch'; \ No newline at end of file +export { default } from "./LanguageSwitch"; +export * from "./LanguageSwitch"; diff --git a/src/components/Link.tsx b/src/components/Link.tsx index 762cd74a8..996f78a94 100644 --- a/src/components/Link.tsx +++ b/src/components/Link.tsx @@ -1,49 +1,44 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography, { TypographyProps } from "@material-ui/core/Typography"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - primary: { - color: theme.palette.primary.main - }, - root: { - cursor: "pointer", - display: "inline" - }, - secondary: { - color: theme.palette.primary.main - }, - underline: { - textDecoration: "underline" - } - }); +const useStyles = makeStyles(theme => ({ + primary: { + color: theme.palette.primary.main + }, + root: { + cursor: "pointer", + display: "inline" + }, + secondary: { + color: theme.palette.primary.main + }, + underline: { + textDecoration: "underline" + } +})); -interface LinkProps - extends React.AnchorHTMLAttributes, - WithStyles { +interface LinkProps extends React.AnchorHTMLAttributes { color?: "primary" | "secondary"; underline?: boolean; typographyProps?: TypographyProps; onClick: () => void; } -const Link = withStyles(styles, { name: "Link" })( - ({ - classes, +const Link: React.FC = props => { + const { className, children, color = "primary", underline = false, onClick, ...linkProps - }: LinkProps) => ( + } = props; + + const classes = useStyles(props); + + return ( {children} - ) -); + ); +}; Link.displayName = "Link"; export default Link; diff --git a/src/components/ListField/ListField.tsx b/src/components/ListField/ListField.tsx index 7dee20c3a..a1265c3d1 100644 --- a/src/components/ListField/ListField.tsx +++ b/src/components/ListField/ListField.tsx @@ -1,4 +1,3 @@ -import { Omit } from "@material-ui/core"; import Button from "@material-ui/core/Button"; import { createStyles, @@ -20,10 +19,10 @@ interface ListFieldState { const styles = (theme: Theme) => createStyles({ chip: { - marginBottom: theme.spacing.unit + marginBottom: theme.spacing(1) }, chipContainer: { - marginTop: theme.spacing.unit * 2, + marginTop: theme.spacing(2), width: 552 } }); diff --git a/src/components/MenuToggle.tsx b/src/components/MenuToggle.tsx index dc27ecccf..a7daaffab 100644 --- a/src/components/MenuToggle.tsx +++ b/src/components/MenuToggle.tsx @@ -2,15 +2,13 @@ import React from "react"; interface MenuToggleProps { ariaOwns?: string; - children: (( - props: { - actions: { - open: () => void; - close: () => void; - }; - open: boolean; - } - ) => React.ReactElement); + children: (props: { + actions: { + open: () => void; + close: () => void; + }; + open: boolean; + }) => React.ReactElement; } interface MenuToggleState { diff --git a/src/components/Money/index.ts b/src/components/Money/index.ts index e8e2d3a59..3589ba868 100644 --- a/src/components/Money/index.ts +++ b/src/components/Money/index.ts @@ -1,15 +1,15 @@ -import Money from "./Money"; +import { IMoney } from "./Money"; export { default } from "./Money"; export * from "./Money"; -export function addMoney(init: Money, ...args: Money[]): Money { +export function addMoney(init: IMoney, ...args: IMoney[]): IMoney { return { amount: args.reduce((acc, curr) => acc + curr.amount, init.amount), currency: init.currency }; } -export function subtractMoney(init: Money, ...args: Money[]): Money { +export function subtractMoney(init: IMoney, ...args: IMoney[]): IMoney { return { amount: args.reduce((acc, curr) => acc - curr.amount, init.amount), currency: init.currency diff --git a/src/components/MoneyRange/MoneyRange.tsx b/src/components/MoneyRange/MoneyRange.tsx index 5e789e36a..4e154ba7e 100644 --- a/src/components/MoneyRange/MoneyRange.tsx +++ b/src/components/MoneyRange/MoneyRange.tsx @@ -2,7 +2,7 @@ import React from "react"; import { useIntl } from "react-intl"; import { LocaleConsumer } from "../Locale"; -import IMoney from "../Money"; +import { IMoney } from "../Money"; export interface MoneyRangeProps { from?: IMoney; diff --git a/src/components/MoneyRange/index.ts b/src/components/MoneyRange/index.ts index 131c9f9a5..84826e016 100644 --- a/src/components/MoneyRange/index.ts +++ b/src/components/MoneyRange/index.ts @@ -1,2 +1,2 @@ -export { default } from './MoneyRange'; -export * from './MoneyRange'; \ No newline at end of file +export { default } from "./MoneyRange"; +export * from "./MoneyRange"; diff --git a/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx b/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx index 9181d7b1f..eee7f7831 100644 --- a/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx +++ b/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectField.tsx @@ -1,10 +1,5 @@ import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import CloseIcon from "@material-ui/icons/Close"; @@ -20,43 +15,42 @@ import MultiAutocompleteSelectFieldContent, { MultiAutocompleteChoiceType } from "./MultiAutocompleteSelectFieldContent"; -const styles = (theme: Theme) => - createStyles({ - chip: { - width: "100%" - }, - chipClose: { - height: 32, - padding: 0, - width: 32 - }, - chipContainer: { - display: "flex", - flexDirection: "column", - marginTop: theme.spacing.unit - }, - chipInner: { - "& svg": { - color: theme.palette.primary.contrastText - }, - alignItems: "center", - background: fade(theme.palette.primary.main, 0.8), - borderRadius: 18, - color: theme.palette.primary.contrastText, - display: "flex", - justifyContent: "space-between", - margin: `${theme.spacing.unit}px 0`, - paddingLeft: theme.spacing.unit * 2, - paddingRight: theme.spacing.unit - }, - chipLabel: { +const useStyles = makeStyles(theme => ({ + chip: { + width: "100%" + }, + chipClose: { + height: 32, + padding: 0, + width: 32 + }, + chipContainer: { + display: "flex", + flexDirection: "column", + marginTop: theme.spacing(1) + }, + chipInner: { + "& svg": { color: theme.palette.primary.contrastText }, - container: { - flexGrow: 1, - position: "relative" - } - }); + alignItems: "center", + background: fade(theme.palette.primary.main, 0.8), + borderRadius: 18, + color: theme.palette.primary.contrastText, + display: "flex", + justifyContent: "space-between", + margin: theme.spacing(1, 0), + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(1) + }, + chipLabel: { + color: theme.palette.primary.contrastText + }, + container: { + flexGrow: 1, + position: "relative" + } +})); export interface MultiAutocompleteSelectFieldProps extends Partial { @@ -77,14 +71,15 @@ const DebounceAutocomplete: React.ComponentType< DebounceProps > = Debounce; -export const MultiAutocompleteSelectFieldComponent = withStyles(styles, { - name: "MultiAutocompleteSelectField" -})( - ({ +const MultiAutocompleteSelectFieldComponent: React.FC< + MultiAutocompleteSelectFieldProps +> = props => { + const { allowCustomValues, choices, - classes, + displayValues, + hasMore, helperText, label, @@ -95,107 +90,109 @@ export const MultiAutocompleteSelectFieldComponent = withStyles(styles, { fetchChoices, onChange, onFetchMore, - ...props - }: MultiAutocompleteSelectFieldProps & WithStyles) => { - const handleSelect = ( - item: string, - downshiftOpts?: ControllerStateAndHelpers - ) => { - if (downshiftOpts) { - downshiftOpts.reset({ inputValue: "" }); - } - onChange({ - target: { name, value: item } - } as any); - }; + ...rest + } = props; + const classes = useStyles(props); - return ( - <> - ""} - > - {({ - getInputProps, - getItemProps, - isOpen, - toggleMenu, - highlightedIndex, - inputValue - }) => { - const displayCustomValue = - inputValue && - inputValue.length > 0 && - allowCustomValues && - !choices.find( - choice => - choice.label.toLowerCase() === inputValue.toLowerCase() - ); + const handleSelect = ( + item: string, + downshiftOpts?: ControllerStateAndHelpers + ) => { + if (downshiftOpts) { + downshiftOpts.reset({ inputValue: "" }); + } + onChange({ + target: { name, value: item } + } as any); + }; - return ( -
- - -
- ), - id: undefined, - onClick: toggleMenu - }} - helperText={helperText} - label={label} - fullWidth={true} - /> - {isOpen && (!!inputValue || !!choices.length) && ( - !value.includes(choice.value) - )} - displayCustomValue={displayCustomValue} - displayValues={displayValues} - getItemProps={getItemProps} - hasMore={hasMore} - highlightedIndex={highlightedIndex} - loading={loading} - inputValue={inputValue} - onFetchMore={onFetchMore} - /> - )} -
+ return ( + <> + ""} + > + {({ + getInputProps, + getItemProps, + isOpen, + toggleMenu, + highlightedIndex, + inputValue + }) => { + const displayCustomValue = + inputValue && + inputValue.length > 0 && + allowCustomValues && + !choices.find( + choice => choice.label.toLowerCase() === inputValue.toLowerCase() ); - }} - -
- {displayValues.map(value => ( -
-
- - {value.label} - - handleSelect(value.value)} - > - - -
+ + return ( +
+ + toggleMenu()} /> +
+ ), + id: undefined, + onClick: toggleMenu + }} + helperText={helperText} + label={label} + fullWidth={true} + /> + {isOpen && (!!inputValue || !!choices.length) && ( + !value.includes(choice.value) + )} + displayCustomValue={displayCustomValue} + displayValues={displayValues} + getItemProps={getItemProps} + hasMore={hasMore} + highlightedIndex={highlightedIndex} + loading={loading} + inputValue={inputValue} + onFetchMore={onFetchMore} + /> + )}
- ))} -
- - ); - } -); + ); + }} + +
+ {displayValues.map(value => ( +
+
+ + {value.label} + + handleSelect(value.value)} + > + + +
+
+ ))} +
+ + ); +}; + const MultiAutocompleteSelectField: React.FC< MultiAutocompleteSelectFieldProps > = ({ choices, fetchChoices, ...props }) => { const [query, setQuery] = React.useState(""); + if (fetchChoices) { return ( @@ -220,5 +217,6 @@ const MultiAutocompleteSelectField: React.FC< /> ); }; + MultiAutocompleteSelectField.displayName = "MultiAutocompleteSelectField"; export default MultiAutocompleteSelectField; diff --git a/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectFieldContent.tsx b/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectFieldContent.tsx index 276b7a5b7..cb99854fe 100644 --- a/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectFieldContent.tsx +++ b/src/components/MultiAutocompleteSelectField/MultiAutocompleteSelectFieldContent.tsx @@ -1,9 +1,8 @@ import CircularProgress from "@material-ui/core/CircularProgress"; import MenuItem from "@material-ui/core/MenuItem"; import Paper from "@material-ui/core/Paper"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import AddIcon from "@material-ui/icons/Add"; -import { makeStyles } from "@material-ui/styles"; import classNames from "classnames"; import { GetItemPropsOptions } from "downshift"; import React from "react"; @@ -37,7 +36,7 @@ export interface MultiAutocompleteSelectFieldContentProps } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ addIcon: { height: 24, margin: 9, @@ -48,7 +47,10 @@ const useStyles = makeStyles( }, arrowInnerContainer: { alignItems: "center", - background: theme.palette.grey[50], + background: + theme.palette.type === "light" + ? theme.palette.grey[50] + : theme.palette.grey[900], bottom: 0, display: "flex", height: 30, @@ -63,7 +65,7 @@ const useStyles = makeStyles( width: 20 }, content: { - maxHeight: menuItemHeight * maxMenuItems + theme.spacing.unit * 2, + maxHeight: menuItemHeight * maxMenuItems + theme.spacing(2), overflow: "scroll", padding: 8 }, @@ -71,7 +73,7 @@ const useStyles = makeStyles( opacity: 0 }, hr: { - margin: `${theme.spacing.unit}px 0` + margin: theme.spacing(1, 0) }, menuItem: { "&:focus": { @@ -92,7 +94,7 @@ const useStyles = makeStyles( }, borderRadius: 4, display: "grid", - gridColumnGap: theme.spacing.unit + "px", + gridColumnGap: theme.spacing(1), gridTemplateColumns: "30px 1fr", height: "auto", padding: 0, @@ -110,7 +112,7 @@ const useStyles = makeStyles( borderBottomLeftRadius: 8, borderBottomRightRadius: 8, left: 0, - marginTop: theme.spacing.unit, + marginTop: theme.spacing(), overflow: "hidden", position: "absolute", right: 0, diff --git a/src/components/MultiSelectField/MultiSelectField.tsx b/src/components/MultiSelectField/MultiSelectField.tsx index 5bf3743c1..4cc592a08 100644 --- a/src/components/MultiSelectField/MultiSelectField.tsx +++ b/src/components/MultiSelectField/MultiSelectField.tsx @@ -4,34 +4,28 @@ import FormHelperText from "@material-ui/core/FormHelperText"; import InputLabel from "@material-ui/core/InputLabel"; import MenuItem from "@material-ui/core/MenuItem"; import Select, { SelectProps } from "@material-ui/core/Select"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; import Checkbox from "../Checkbox"; -const styles = (theme: Theme) => - createStyles({ - checkbox: { - marginRight: -theme.spacing.unit * 2 - }, - formControl: { - width: "100%" - }, - menuItem: { - alignItems: "center", - display: "flex", - justifyContent: "space-between", - width: "100%" - } - }); +const useStyles = makeStyles(theme => ({ + checkbox: { + marginRight: -theme.spacing(2) + }, + formControl: { + width: "100%" + }, + menuItem: { + alignItems: "center", + display: "flex", + justifyContent: "space-between", + width: "100%" + } +})); -interface MultiSelectFieldProps extends WithStyles { +interface MultiSelectFieldProps { choices: Array<{ value: string; label: string; @@ -46,11 +40,8 @@ interface MultiSelectFieldProps extends WithStyles { onChange(event: any); } -export const MultiSelectField = withStyles(styles, { - name: "MultiSelectField" -})( - ({ - classes, +export const MultiSelectField: React.FC = props => { + const { disabled, error, label, @@ -60,66 +51,67 @@ export const MultiSelectField = withStyles(styles, { name, hint, selectProps - }: MultiSelectFieldProps) => { - const choicesByKey = disabled - ? {} - : choices.reduce((prev, curr) => { - prev[curr.value] = curr.label; - return prev; - }, {}); + } = props; + const classes = useStyles(props); - return ( - { + prev[curr.value] = curr.label; + return prev; + }, {}); + + return ( + + {label && {label}} + - (choiceValues as string[]) - .map(choiceValue => choicesByKey[choiceValue]) - .join(", ") - } - value={value} - name={name} - onChange={onChange} - input={} - {...selectProps} - > - {choices.length > 0 ? ( - choices.map(choice => { - const isSelected = !!value.find( - selectedChoice => selectedChoice === choice.value - ); + {choices.length > 0 ? ( + choices.map(choice => { + const isSelected = !!value.find( + selectedChoice => selectedChoice === choice.value + ); - return ( - -
- {choice.label} - -
-
- ); - }) - ) : ( - - - - )} - - {hint && {hint}} -
- ); - } -); + return ( + +
+ {choice.label} + +
+
+ ); + }) + ) : ( + + + + )} + + {hint && {hint}} +
+ ); +}; MultiSelectField.defaultProps = { value: [] }; diff --git a/src/components/NotFoundPage/NotFoundPage.tsx b/src/components/NotFoundPage/NotFoundPage.tsx index cac5306bc..3dc5d923f 100644 --- a/src/components/NotFoundPage/NotFoundPage.tsx +++ b/src/components/NotFoundPage/NotFoundPage.tsx @@ -1,10 +1,5 @@ import Button from "@material-ui/core/Button"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import SVG from "react-inlinesvg"; @@ -12,54 +7,57 @@ import { FormattedMessage } from "react-intl"; import notFoundImage from "@assets/images/not-found-404.svg"; -const styles = (theme: Theme) => - createStyles({ - button: { - marginTop: theme.spacing.unit * 2, - padding: 20 +const useStyles = makeStyles(theme => ({ + button: { + marginTop: theme.spacing(2), + padding: 20 + }, + container: { + [theme.breakpoints.down("sm")]: { + gridTemplateColumns: "1fr", + padding: theme.spacing(3), + width: "100%" }, - container: { - [theme.breakpoints.down("sm")]: { - gridTemplateColumns: "1fr", - padding: theme.spacing.unit * 3, - width: "100%" - }, - display: "grid", - gridTemplateColumns: "1fr 487px", - margin: "0 auto", - width: 830 + display: "grid", + gridTemplateColumns: "1fr 487px", + margin: "0 auto", + width: 830 + }, + header: { + fontWeight: 600 as 600 + }, + innerContainer: { + [theme.breakpoints.down("sm")]: { + order: 1, + textAlign: "center" }, - header: { - fontWeight: 600 as 600 - }, - innerContainer: { - [theme.breakpoints.down("sm")]: { - order: 1, - textAlign: "center" - }, - display: "flex", - flexDirection: "column", - justifyContent: "center" - }, - notFoundImage: { - "& svg": { - width: "100%" - } - }, - root: { - alignItems: "center", - display: "flex", - height: "100vh", - width: "100vw" + display: "flex", + flexDirection: "column", + justifyContent: "center" + }, + notFoundImage: { + "& svg": { + width: "100%" } - }); + }, + root: { + alignItems: "center", + display: "flex", + height: "100vh", + width: "100vw" + } +})); -interface NotFoundPageProps extends WithStyles { +interface NotFoundPageProps { onBack: () => void; } -const NotFoundPage = withStyles(styles, { name: "NotFoundPage" })( - ({ classes, onBack }: NotFoundPageProps) => ( +const NotFoundPage: React.FC = props => { + const { onBack } = props; + + const classes = useStyles(props); + + return (
@@ -93,7 +91,7 @@ const NotFoundPage = withStyles(styles, { name: "NotFoundPage" })(
- ) -); + ); +}; NotFoundPage.displayName = "NotFoundPage"; export default NotFoundPage; diff --git a/src/components/PageHeader/PageHeader.tsx b/src/components/PageHeader/PageHeader.tsx index 843be5df3..a78c57737 100644 --- a/src/components/PageHeader/PageHeader.tsx +++ b/src/components/PageHeader/PageHeader.tsx @@ -1,35 +1,33 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import ExtendedPageHeader from "../ExtendedPageHeader"; import Skeleton from "../Skeleton"; -const styles = (theme: Theme) => - createStyles({ - root: { - display: "flex" - }, - title: { - flex: 1, - fontSize: 24, - paddingBottom: theme.spacing.unit * 2 - } - }); +const useStyles = makeStyles(theme => ({ + root: { + display: "flex" + }, + title: { + flex: 1, + fontSize: 24, + paddingBottom: theme.spacing(2) + } +})); -interface PageHeaderProps extends WithStyles { +interface PageHeaderProps { children?: React.ReactNode; className?: string; title?: string; } -const PageHeader = withStyles(styles)( - ({ children, classes, className, title }: PageHeaderProps) => ( +const PageHeader: React.FC = props => { + const { children, className, title } = props; + + const classes = useStyles(props); + + return (
{children}
- ) -); + ); +}; + PageHeader.displayName = "PageHeader"; export default PageHeader; diff --git a/src/components/PhoneField/PhoneField.tsx b/src/components/PhoneField/PhoneField.tsx index 0c0267864..53d963aad 100644 --- a/src/components/PhoneField/PhoneField.tsx +++ b/src/components/PhoneField/PhoneField.tsx @@ -1,24 +1,18 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import SingleSelectField from "@saleor/components/SingleSelectField"; -const styles = (theme: Theme) => - createStyles({ - root: { - display: "grid", - gridColumnGap: `${theme.spacing.unit * 2}px`, - gridTemplateColumns: "5rem 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "5rem 1fr" + } +})); -interface PhoneFieldProps extends WithStyles { +interface PhoneFieldProps { name: string; prefix: string; number: string; @@ -27,16 +21,19 @@ interface PhoneFieldProps extends WithStyles { onChange(event: React.ChangeEvent); } -const PhoneField = withStyles(styles, { name: "PhoneField" })( - ({ - classes, +const PhoneField: React.FC = props => { + const { name, number: phoneNumber, prefix, prefixes, label, onChange - }: PhoneFieldProps) => ( + } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; PhoneField.displayName = "PhoneField"; export default PhoneField; diff --git a/src/components/PriceField/PriceField.tsx b/src/components/PriceField/PriceField.tsx index 847ac055d..7fe765662 100644 --- a/src/components/PriceField/PriceField.tsx +++ b/src/components/PriceField/PriceField.tsx @@ -1,37 +1,31 @@ import { InputProps } from "@material-ui/core/Input"; import InputAdornment from "@material-ui/core/InputAdornment"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - currencySymbol: { - fontSize: "0.875rem" - }, - inputContainer: { - display: "grid", - gridTemplateColumns: "1fr 2rem 1fr" - }, - pullDown: { - marginTop: theme.spacing.unit * 2 - }, - separator: { - marginTop: theme.spacing.unit * 3, - textAlign: "center", - width: "100%" - }, - widgetContainer: { - marginTop: theme.spacing.unit * 2 - } - }); +const useStyles = makeStyles(theme => ({ + currencySymbol: { + fontSize: "0.875rem" + }, + inputContainer: { + display: "grid", + gridTemplateColumns: "1fr 2rem 1fr" + }, + pullDown: { + marginTop: theme.spacing(2) + }, + separator: { + marginTop: theme.spacing(3), + textAlign: "center", + width: "100%" + }, + widgetContainer: { + marginTop: theme.spacing(2) + } +})); -interface PriceFieldProps extends WithStyles { +interface PriceFieldProps { className?: string; currencySymbol?: string; disabled?: boolean; @@ -44,8 +38,8 @@ interface PriceFieldProps extends WithStyles { onChange(event: any); } -export const PriceField = withStyles(styles, { name: "PriceField" })( - ({ +export const PriceField: React.FC = props => { + const { className, disabled, error, @@ -53,11 +47,14 @@ export const PriceField = withStyles(styles, { name: "PriceField" })( hint, currencySymbol, name, - classes, onChange, value, InputProps - }: PriceFieldProps) => ( + } = props; + + const classes = useStyles(props); + + return ( - ) -); + ); +}; PriceField.defaultProps = { name: "price" }; diff --git a/src/components/RadioGroupField/RadioGroupField.tsx b/src/components/RadioGroupField/RadioGroupField.tsx index 725e982e9..e44c9352e 100644 --- a/src/components/RadioGroupField/RadioGroupField.tsx +++ b/src/components/RadioGroupField/RadioGroupField.tsx @@ -5,19 +5,18 @@ import FormLabel from "@material-ui/core/FormLabel"; import MenuItem from "@material-ui/core/MenuItem"; import Radio from "@material-ui/core/Radio"; import RadioGroup from "@material-ui/core/RadioGroup"; -import { Theme } from "@material-ui/core/styles"; -import { makeStyles } from "@material-ui/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; import { FormattedMessage } from "react-intl"; const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ formLabel: { - marginBottom: theme.spacing.unit + marginBottom: theme.spacing(1) }, radioLabel: { - marginBottom: -theme.spacing.unit * 1.5 + marginBottom: -theme.spacing(0.5) }, root: { "& $radioLabel": { @@ -29,7 +28,7 @@ const useStyles = makeStyles( width: "100%" }, rootNoLabel: { - marginTop: -theme.spacing.unit * 1.5 + marginTop: -theme.spacing(1.5) } }), { diff --git a/src/components/RadioSwitchField/RadioSwitchField.tsx b/src/components/RadioSwitchField/RadioSwitchField.tsx index dbff28317..0c715f729 100644 --- a/src/components/RadioSwitchField/RadioSwitchField.tsx +++ b/src/components/RadioSwitchField/RadioSwitchField.tsx @@ -2,11 +2,11 @@ import FormControl from "@material-ui/core/FormControl"; import FormControlLabel from "@material-ui/core/FormControlLabel"; import Radio from "@material-ui/core/Radio"; import RadioGroup from "@material-ui/core/RadioGroup"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; -const styles = createStyles({ +const useStyles = makeStyles({ formControl: { padding: 0, width: "100%" @@ -37,12 +37,9 @@ interface RadioSwitchFieldProps { onChange: (event: React.ChangeEvent) => void; } -export const RadioSwitchField = withStyles(styles, { - name: "RadioSwitchField" -})( - ({ +export const RadioSwitchField: React.FC = props => { + const { className, - classes, disabled, error, firstOptionLabel, @@ -50,48 +47,49 @@ export const RadioSwitchField = withStyles(styles, { name, secondOptionLabel, value - }: RadioSwitchFieldProps & WithStyles) => { - const initialValue = value ? "true" : "false"; + } = props; + const classes = useStyles(props); - const change = event => { - onChange({ - target: { - name: event.target.name, - value: event.target.value === "true" ? true : false - } - } as any); - }; + const initialValue = value ? "true" : "false"; - return ( - { + onChange({ + target: { + name: event.target.name, + value: event.target.value === "true" ? true : false + } + } as any); + }; + + return ( + + change(event)} > - } + label={firstOptionLabel} name={name} - value={initialValue} - onChange={event => change(event)} - > - } - label={firstOptionLabel} - name={name} - /> - } - label={secondOptionLabel} - name={name} - /> - - - ); - } -); + /> + } + label={secondOptionLabel} + name={name} + /> + + + ); +}; RadioSwitchField.displayName = "RadioSwitchField"; export default RadioSwitchField; diff --git a/src/components/RichTextEditor/ImageEntity.tsx b/src/components/RichTextEditor/ImageEntity.tsx index d81beaaed..4f6787ad9 100644 --- a/src/components/RichTextEditor/ImageEntity.tsx +++ b/src/components/RichTextEditor/ImageEntity.tsx @@ -4,12 +4,7 @@ import Grow from "@material-ui/core/Grow"; import IconButton from "@material-ui/core/IconButton"; import Paper from "@material-ui/core/Paper"; import Popper from "@material-ui/core/Popper"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import DeleteIcon from "@material-ui/icons/Delete"; import { ContentState } from "draft-js"; import React from "react"; @@ -23,92 +18,84 @@ interface ImageEntityProps { onRemove: (entityKey: string) => void; } -const styles = (theme: Theme) => - createStyles({ - anchor: { - display: "inline-block" - }, - container: { - alignItems: "center", - display: "flex" - }, - image: { maxWidth: "100%" }, - inline: { - display: "inline-block" - }, - root: { - alignItems: "center", - display: "flex", - minHeight: 72, - padding: theme.spacing.unit * 1.5 - } - }); - -const ImageEntity = withStyles(styles, { - name: "ImageEntity" -})( - ({ - classes, - contentState, - entityKey, - onEdit, - onRemove - }: ImageEntityProps & WithStyles) => { - const [isOpened, setOpenStatus] = React.useState(false); - const anchor = React.useRef(); - - const disable = () => setOpenStatus(false); - const toggle = () => setOpenStatus(!isOpened); - - return ( - <> -
- - {({ TransitionProps, placement }) => ( - - - -
- - onRemove(entityKey)}> - - -
-
-
-
- )} -
-
- - - ); +const useStyles = makeStyles(theme => ({ + anchor: { + display: "inline-block" + }, + container: { + alignItems: "center", + display: "flex" + }, + image: { maxWidth: "100%" }, + inline: { + display: "inline-block" + }, + root: { + alignItems: "center", + display: "flex", + minHeight: 72, + padding: theme.spacing(1.5) } -); +})); + +const ImageEntity: React.FC = props => { + const { contentState, entityKey, onEdit, onRemove } = props; + const classes = useStyles(props); + + const [isOpened, setOpenStatus] = React.useState(false); + const anchor = React.useRef(); + + const disable = () => setOpenStatus(false); + const toggle = () => setOpenStatus(!isOpened); + + return ( + <> +
+ + {({ TransitionProps, placement }) => ( + + + +
+ + onRemove(entityKey)}> + + +
+
+
+
+ )} +
+
+ + + ); +}; export default ImageEntity; diff --git a/src/components/RichTextEditor/LinkEntity.tsx b/src/components/RichTextEditor/LinkEntity.tsx index 436d8451e..29c38a808 100644 --- a/src/components/RichTextEditor/LinkEntity.tsx +++ b/src/components/RichTextEditor/LinkEntity.tsx @@ -4,12 +4,7 @@ import Grow from "@material-ui/core/Grow"; import IconButton from "@material-ui/core/IconButton"; import Paper from "@material-ui/core/Paper"; import Popper from "@material-ui/core/Popper"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import DeleteIcon from "@material-ui/icons/Delete"; import { ContentState } from "draft-js"; @@ -27,107 +22,97 @@ interface LinkEntityProps { onRemove: (entityKey: string) => void; } -const styles = (theme: Theme) => - createStyles({ - anchor: { - display: "inline-block" - }, - container: { - alignItems: "center", - display: "flex" - }, - inline: { - display: "inline-block" - }, - popover: { - zIndex: 1 - }, - root: { - alignItems: "center", - display: "flex", - minHeight: 72, - padding: `${theme.spacing.unit * 1.5}px ${theme.spacing.unit * - 1.5}px ${theme.spacing.unit * 1.5}px ${theme.spacing.unit * 3}px` - }, - separator: { - backgroundColor: theme.palette.grey[300], - display: "inline-block", - height: 30, - marginLeft: theme.spacing.unit * 2, - marginRight: theme.spacing.unit, - width: 1 - } - }); - -const LinkEntity = withStyles(styles, { - name: "LinkEntity" -})( - ({ - classes, - children, - contentState, - entityKey, - onEdit, - onRemove - }: LinkEntityProps & WithStyles) => { - const [isOpened, setOpenStatus] = React.useState(false); - const anchor = React.useRef(); - - const disable = () => setOpenStatus(false); - const toggle = () => setOpenStatus(!isOpened); - - return ( - <> -
- - {({ TransitionProps, placement }) => ( - - - -
- - {contentState.getEntity(entityKey).getData().url} - - - - onRemove(entityKey)}> - - -
-
-
-
- )} -
-
- - {children} - - - ); +const useStyles = makeStyles(theme => ({ + anchor: { + display: "inline-block" + }, + container: { + alignItems: "center", + display: "flex" + }, + inline: { + display: "inline-block" + }, + popover: { + zIndex: 1 + }, + root: { + alignItems: "center", + display: "flex", + minHeight: 72, + padding: theme.spacing(1.5, 1.5, 1.5, 3) + }, + separator: { + backgroundColor: theme.palette.grey[300], + display: "inline-block", + height: 30, + marginLeft: theme.spacing(2), + marginRight: theme.spacing(), + width: 1 } -); +})); + +const LinkEntity: React.FC = props => { + const { children, contentState, entityKey, onEdit, onRemove } = props; + const classes = useStyles(props); + + const [isOpened, setOpenStatus] = React.useState(false); + const anchor = React.useRef(); + + const disable = () => setOpenStatus(false); + const toggle = () => setOpenStatus(!isOpened); + + return ( + <> +
+ + {({ TransitionProps, placement }) => ( + + + +
+ + {contentState.getEntity(entityKey).getData().url} + + + + onRemove(entityKey)}> + + +
+
+
+
+ )} +
+
+ + {children} + + + ); +}; export default LinkEntity; diff --git a/src/components/RichTextEditor/RichTextEditor.tsx b/src/components/RichTextEditor/RichTextEditor.tsx index badfabb74..08ed8dd8b 100644 --- a/src/components/RichTextEditor/RichTextEditor.tsx +++ b/src/components/RichTextEditor/RichTextEditor.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; @@ -45,159 +40,158 @@ export interface RichTextEditorProps { onChange: (event: React.ChangeEvent) => void; } -const styles = (theme: Theme) => - createStyles({ - error: { - color: theme.palette.error.main - }, - helperText: { - marginTop: theme.spacing.unit * 0.75 - }, - input: { - position: "relative" - }, - label: { - fontSize: theme.typography.caption.fontSize, - left: 12, - position: "absolute", - top: 9 - }, - linkIcon: { - marginTop: 2 - }, - root: { - "& .DraftEditor": { - "&-editorContainer": { - "& .public-DraftEditor-content": { - lineHeight: 1.62 - }, - "& a": { - color: theme.palette.primary.light - }, - "&:after": { - background: theme.palette.getContrastText( - theme.palette.background.default - ), - bottom: -11, - content: "''", - display: "block", - height: 2, - left: -12, - position: "absolute", - transform: "scaleX(0) scaleY(0)", - width: "calc(100% + 24px)" - }, - position: "relative" +const useStyles = makeStyles(theme => ({ + error: { + color: theme.palette.error.main + }, + helperText: { + marginTop: theme.spacing(0.75) + }, + input: { + position: "relative" + }, + label: { + fontSize: theme.typography.caption.fontSize, + left: 12, + position: "absolute", + top: 9 + }, + linkIcon: { + marginTop: 2 + }, + root: { + "& .DraftEditor": { + "&-editorContainer": { + "& .public-DraftEditor-content": { + lineHeight: 1.62 }, - "&-root": { - ...theme.typography.body2 - } + "& a": { + color: theme.palette.primary.light + }, + "&:after": { + background: theme.palette.getContrastText( + theme.palette.background.default + ), + bottom: -11, + content: "''", + display: "block", + height: 2, + left: -12, + position: "absolute", + transform: "scaleX(0) scaleY(0)", + width: "calc(100% + 24px)" + }, + position: "relative" }, - "& .Draftail": { - "&-Editor": { - "&--focus": { - boxShadow: `inset 0px 0px 0px 2px ${theme.palette.primary.main}` - }, - "&:hover": { - borderColor: theme.palette.primary.main - }, - border: `1px ${theme.overrides.MuiOutlinedInput.root.borderColor} solid`, - borderRadius: 4, - padding: "27px 12px 10px", - position: "relative", - transition: theme.transitions.duration.shortest + "ms" + "&-root": { + ...theme.typography.body1 + } + }, + "& .Draftail": { + "&-Editor": { + "&--focus": { + boxShadow: `inset 0px 0px 0px 2px ${theme.palette.primary.main}` }, - "&-Toolbar": { - "&Button": { - "& svg": { - padding: 2 - }, - "&--active": { - "&:hover": { - background: theme.palette.primary.main - }, - "&:not(:hover)": { - borderRightColor: theme.palette.primary.main - }, + "&:hover": { + borderColor: theme.palette.primary.main + }, + border: `1px ${theme.palette.divider} solid`, + borderRadius: 4, + padding: "27px 12px 10px", + position: "relative", + transition: theme.transitions.duration.shortest + "ms" + }, + "&-Toolbar": { + "&Button": { + "& svg": { + padding: 2 + }, + "&--active": { + "&:hover": { background: theme.palette.primary.main }, - "&:focus": { - "&:active": { - "&:after": { - background: fade(theme.palette.primary.main, 0.3), - borderRadius: "100%", - content: "''", - display: "block", - height: "100%", - width: "100%" - } - } + "&:not(:hover)": { + borderRightColor: theme.palette.primary.main }, - "&:hover": { - background: fade(theme.palette.primary.main, 0.3) - }, - alignItems: "center", - background: "none", - border: "none", - borderRight: `1px ${theme.overrides.MuiCard.root.borderColor} solid`, - color: theme.typography.body2.color, - cursor: "pointer", - display: "inline-flex", - height: 36, - justifyContent: "center", - padding: theme.spacing.unit + 2, - transition: theme.transitions.duration.short + "ms", - width: 36 + background: theme.palette.primary.main }, - "&Group": { - "&:last-of-type": { - "& .Draftail-ToolbarButton": { - "&:last-of-type": { - border: "none" - } + "&:focus": { + "&:active": { + "&:after": { + background: fade(theme.palette.primary.main, 0.3), + borderRadius: "100%", + content: "''", + display: "block", + height: "100%", + width: "100%" } - }, - display: "flex" + } }, - background: theme.palette.background.default, - border: `1px ${theme.overrides.MuiCard.root.borderColor} solid`, + "&:hover": { + background: fade(theme.palette.primary.main, 0.3) + }, + alignItems: "center", + background: "none", + border: "none", + borderRight: `1px ${theme.palette.divider} solid`, + color: theme.typography.body1.color, + cursor: "pointer", display: "inline-flex", - flexWrap: "wrap", - marginBottom: theme.spacing.unit, - marginTop: 10, - [theme.breakpoints.down(460)]: { - width: "min-content" - } + height: 36, + justifyContent: "center", + padding: theme.spacing(1) + 2, + transition: theme.transitions.duration.short + "ms", + width: 36 }, - "&-block": { - "&--blockquote": { - borderLeft: `2px solid ${theme.overrides.MuiCard.root.borderColor}`, - margin: 0, - padding: `${theme.spacing.unit}px ${theme.spacing.unit * 2}px` - } + "&Group": { + "&:last-of-type": { + "& .Draftail-ToolbarButton": { + "&:last-of-type": { + border: "none" + } + } + }, + display: "flex" + }, + background: theme.palette.background.default, + border: `1px ${theme.palette.divider} solid`, + display: "inline-flex", + flexWrap: "wrap", + marginBottom: theme.spacing(), + marginTop: 10, + [theme.breakpoints.down(460)]: { + width: "min-content" } }, - "&$error": { - "& .Draftail": { - "&-Editor": { - borderColor: theme.palette.error.main - } + "&-block": { + "&--blockquote": { + borderLeft: `2px solid ${theme.palette.divider}`, + margin: 0, + padding: theme.spacing(1, 2) } } }, - scroll: { - "& .DraftEditor": { - "&-editorContainer": { - "& .public-DraftEditor-content": { - lineHeight: 1.62 - } + "&$error": { + "& .Draftail": { + "&-Editor": { + borderColor: theme.palette.error.main } } - }, - smallIcon: { - marginLeft: 10 } - }); + }, + scroll: { + "& .DraftEditor": { + "&-editorContainer": { + "& .public-DraftEditor-content": { + lineHeight: 1.62 + } + } + } + }, + smallIcon: { + marginLeft: 10 + } +})); function handleSave( value: any, @@ -215,17 +209,12 @@ function handleSave( } } -const RichTextEditor = withStyles(styles, { name: "RichTextEditor" })( - ({ - classes, - error, - helperText, - initial, - label, - name, - scroll, - onChange - }: RichTextEditorProps & WithStyles) => ( +const RichTextEditor: React.FC = props => { + const { error, helperText, initial, label, name, scroll, onChange } = props; + + const classes = useStyles(props); + + return (
)}
- ) -); + ); +}; + RichTextEditor.displayName = "RichTextEditor"; RichTextEditor.defaultProps = { scroll: true diff --git a/src/components/RichTextEditor/index.ts b/src/components/RichTextEditor/index.ts index 2a07ed090..79b8bbcb3 100644 --- a/src/components/RichTextEditor/index.ts +++ b/src/components/RichTextEditor/index.ts @@ -1,2 +1,2 @@ -export { default } from './RichTextEditor'; -export * from './RichTextEditor'; \ No newline at end of file +export { default } from "./RichTextEditor"; +export * from "./RichTextEditor"; diff --git a/src/components/RowNumberSelect/RowNumberSelect.tsx b/src/components/RowNumberSelect/RowNumberSelect.tsx index 4ae050f80..55e7a473f 100644 --- a/src/components/RowNumberSelect/RowNumberSelect.tsx +++ b/src/components/RowNumberSelect/RowNumberSelect.tsx @@ -1,34 +1,32 @@ import MenuItem from "@material-ui/core/MenuItem"; import Select from "@material-ui/core/Select"; -import { Theme } from "@material-ui/core/styles"; -import { createStyles, makeStyles, useTheme } from "@material-ui/styles"; +import { makeStyles, useTheme } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; import { ListSettings } from "../../types"; const useStyles = makeStyles( - (theme: Theme) => - createStyles({ - label: { - fontSize: 14 + theme => ({ + label: { + fontSize: 14 + }, + select: { + "& div": { + "&:focus": { + background: "none" + }, + color: theme.palette.primary.main, + marginLeft: theme.spacing(1) }, - select: { - "& div": { - "&:focus": { - background: "none" - }, - color: theme.palette.primary.main, - padding: "0 10px 0 5px" - }, - "& svg": { - color: theme.palette.primary.main - }, - "&:after, &:before, &:hover": { - border: "none !important" - } + "& svg": { + color: theme.palette.primary.main + }, + "&:after, &:before, &:hover": { + border: "none !important" } - }), + } + }), { name: "RowNumberSelect" } diff --git a/src/components/SaveButtonBar/SaveButtonBar.tsx b/src/components/SaveButtonBar/SaveButtonBar.tsx index 701083526..079f675fc 100644 --- a/src/components/SaveButtonBar/SaveButtonBar.tsx +++ b/src/components/SaveButtonBar/SaveButtonBar.tsx @@ -1,11 +1,6 @@ import Button from "@material-ui/core/Button"; import Portal from "@material-ui/core/Portal"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; import { useIntl } from "react-intl"; @@ -19,48 +14,47 @@ import ConfirmButton, { } from "../ConfirmButton/ConfirmButton"; import Container from "../Container"; -const styles = (theme: Theme) => - createStyles({ - button: { - marginRight: theme.spacing.unit - }, - cancelButton: { - marginRight: theme.spacing.unit * 2 - }, - container: { - display: "flex", - paddingBottom: theme.spacing.unit * 2, - paddingTop: theme.spacing.unit * 2, - [theme.breakpoints.down("sm")]: { - marginTop: theme.spacing.unit - } - }, - deleteButton: { - "&:hover": { - backgroundColor: theme.palette.error.dark - }, - backgroundColor: theme.palette.error.main, - color: theme.palette.error.contrastText - }, - root: { - background: theme.palette.background.default, - borderTop: "1px solid transparent", - boxShadow: `0 -5px 5px 0 ${theme.overrides.MuiCard.root.borderColor}`, - height: "100%", - transition: `box-shadow ${theme.transitions.duration.shortest}ms` - }, - spacer: { - flex: "1" - }, - stop: { - "&$root": { - borderTopColor: theme.overrides.MuiCard.root.borderColor, - boxShadow: `0 0 0 0 ${theme.overrides.MuiCard.root.borderColor}` - } +const useStyles = makeStyles(theme => ({ + button: { + marginRight: theme.spacing(1) + }, + cancelButton: { + marginRight: theme.spacing(2) + }, + container: { + display: "flex", + paddingBottom: theme.spacing(2), + paddingTop: theme.spacing(2), + [theme.breakpoints.down("sm")]: { + marginTop: theme.spacing(1) } - }); + }, + deleteButton: { + "&:hover": { + backgroundColor: theme.palette.error.dark + }, + backgroundColor: theme.palette.error.main, + color: theme.palette.error.contrastText + }, + root: { + background: theme.palette.background.default, + borderTop: "1px solid transparent", + boxShadow: `0 -5px 5px 0 ${theme.palette.divider}`, + height: "100%", + transition: `box-shadow ${theme.transitions.duration.shortest}ms` + }, + spacer: { + flex: "1" + }, + stop: { + "&$root": { + borderTopColor: theme.palette.divider, + boxShadow: `0 0 0 0 ${theme.palette.divider}` + } + } +})); -interface SaveButtonBarProps extends WithStyles { +interface SaveButtonBarProps { disabled: boolean; state: ConfirmButtonTransitionState; labels?: { @@ -73,77 +67,77 @@ interface SaveButtonBarProps extends WithStyles { onSave(event: any); } -export const SaveButtonBar = withStyles(styles, { name: "SaveButtonBar" })( - ({ - classes, +export const SaveButtonBar: React.FC = props => { + const { disabled, labels, state, onCancel, onDelete, onSave, - ...props - }: SaveButtonBarProps) => { - const intl = useIntl(); - const scrollPosition = useWindowScroll(); - const scrolledToBottom = - scrollPosition.y + window.innerHeight >= document.body.scrollHeight; + ...rest + } = props; + const classes = useStyles(props); - return ( - - {anchor => - anchor ? ( - -
- - {!!onDelete && ( - - )} -
+ const intl = useIntl(); + const scrollPosition = useWindowScroll(); + const scrolledToBottom = + scrollPosition.y + window.innerHeight >= document.body.scrollHeight; + + return ( + + {anchor => + anchor ? ( + +
+ + {!!onDelete && ( - - {maybe( - () => labels.save, - intl.formatMessage(buttonMessages.save) - )} - - -
-
- ) : null - } -
- ); - } -); + )} +
+ + + {maybe( + () => labels.save, + intl.formatMessage(buttonMessages.save) + )} + + +
+ + ) : null + } + + ); +}; SaveButtonBar.displayName = "SaveButtonBar"; export default SaveButtonBar; diff --git a/src/components/SaveFilterTabDialog/index.ts b/src/components/SaveFilterTabDialog/index.ts index 8b281bdd2..3346fa1e7 100644 --- a/src/components/SaveFilterTabDialog/index.ts +++ b/src/components/SaveFilterTabDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './SaveFilterTabDialog'; -export * from './SaveFilterTabDialog'; \ No newline at end of file +export { default } from "./SaveFilterTabDialog"; +export * from "./SaveFilterTabDialog"; diff --git a/src/components/SeoForm/SeoForm.tsx b/src/components/SeoForm/SeoForm.tsx index 1673d8c8c..0363c8933 100644 --- a/src/components/SeoForm/SeoForm.tsx +++ b/src/components/SeoForm/SeoForm.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; @@ -16,55 +11,54 @@ import { FormattedMessage, useIntl } from "react-intl"; import CardTitle from "../CardTitle"; import FormSpacer from "../FormSpacer"; -const styles = (theme: Theme) => - createStyles({ - addressBar: { - color: "#006621", - fontSize: "13px", - lineHeight: "16px", - marginBottom: "2px", - overflow: "hidden", - textOverflow: "ellipsis", - whiteSpace: "nowrap" +const useStyles = makeStyles(theme => ({ + addressBar: { + color: "#006621", + fontSize: "13px", + lineHeight: "16px", + marginBottom: "2px", + overflow: "hidden", + textOverflow: "ellipsis", + whiteSpace: "nowrap" + }, + container: { + width: "100%" + }, + descriptionBar: { + color: "#545454", + fontSize: "13px", + lineHeight: "18px", + overflowWrap: "break-word" + }, + helperText: { + marginBottom: theme.spacing(3) + }, + label: { + flex: 1 + }, + labelContainer: { + "& span": { + paddingRight: 30 }, - container: { - width: "100%" - }, - descriptionBar: { - color: "#545454", - fontSize: "13px", - lineHeight: "18px", - overflowWrap: "break-word" - }, - helperText: { - marginBottom: theme.spacing.unit * 3 - }, - label: { - flex: 1 - }, - labelContainer: { - "& span": { - paddingRight: 30 - }, - display: "flex" - }, - preview: { - minHeight: theme.spacing.unit * 10 - }, - title: { - padding: 0 - }, - titleBar: { - color: "#1a0dab", - fontSize: "18px", - lineHeight: "21px", - overflowWrap: "break-word", - textDecoration: "none", - wordWrap: "break-word" - } - }); + display: "flex" + }, + preview: { + minHeight: theme.spacing(10) + }, + title: { + padding: 0 + }, + titleBar: { + color: "#1a0dab", + fontSize: "18px", + lineHeight: "21px", + overflowWrap: "break-word", + textDecoration: "none", + wordWrap: "break-word" + } +})); -interface SeoFormProps extends WithStyles { +interface SeoFormProps { description?: string; descriptionPlaceholder: string; disabled?: boolean; @@ -76,9 +70,8 @@ interface SeoFormProps extends WithStyles { onClick?(); } -const SeoForm = withStyles(styles, { name: "SeoForm" })( - ({ - classes, +const SeoForm: React.FC = props => { + const { description, descriptionPlaceholder, disabled, @@ -87,43 +80,46 @@ const SeoForm = withStyles(styles, { name: "SeoForm" })( title, titlePlaceholder, onChange - }: SeoFormProps) => { - const intl = useIntl(); - const [expanded, setExpansionStatus] = React.useState(false); - const toggleExpansion = () => setExpansionStatus(!expanded); + } = props; + const classes = useStyles(props); - return ( - - - - - } - /> - - {helperText && ( - - {helperText} - - )} - {expanded && ( -
- -
- -
+ const intl = useIntl(); + const [expanded, setExpansionStatus] = React.useState(false); + const toggleExpansion = () => setExpansionStatus(!expanded); + + return ( + + + + + } + /> + + {helperText && ( + + {helperText} + + )} + {expanded && ( +
+ +
+ +
+ {title.length > 0 && ( + )} +
+ } + helperText={intl.formatMessage({ + defaultMessage: + "If empty, the preview shows what will be autogenerated." + })} + value={title.slice(0, 69)} + disabled={loading || disabled} + placeholder={titlePlaceholder} + onChange={onChange} + fullWidth + /> + + +
+
- } - helperText={intl.formatMessage({ - defaultMessage: - "If empty, the preview shows what will be autogenerated." - })} - value={title.slice(0, 69)} - disabled={loading || disabled} - placeholder={titlePlaceholder} - onChange={onChange} - fullWidth - /> - - -
- -
+ {description.length > 0 && ( -
- } - helperText={intl.formatMessage({ - defaultMessage: - "If empty, the preview shows what will be autogenerated." - })} - value={description ? description.slice(0, 299) : undefined} - onChange={onChange} - disabled={loading || disabled} - fullWidth - multiline - placeholder={descriptionPlaceholder} - rows={10} - /> -
- )} - - - ); - } -); + )} +
+ } + helperText={intl.formatMessage({ + defaultMessage: + "If empty, the preview shows what will be autogenerated." + })} + value={description ? description.slice(0, 299) : undefined} + onChange={onChange} + disabled={loading || disabled} + fullWidth + multiline + placeholder={descriptionPlaceholder} + rows={10} + /> +
+ )} + + + ); +}; SeoForm.displayName = "SeoForm"; export default SeoForm; diff --git a/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx b/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx index d9ee6d375..374522e1f 100644 --- a/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx +++ b/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectField.tsx @@ -1,5 +1,5 @@ import { InputProps } from "@material-ui/core/Input"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Downshift from "downshift"; import { filter } from "fuzzaldrin"; @@ -13,7 +13,7 @@ import { FetchMoreProps } from "@saleor/types"; import ArrowDropdownIcon from "../../icons/ArrowDropdown"; import Debounce, { DebounceProps } from "../Debounce"; -const styles = createStyles({ +const useStyles = makeStyles({ container: { flexGrow: 1, position: "relative" @@ -42,12 +42,12 @@ const DebounceAutocomplete: React.ComponentType< DebounceProps > = Debounce; -const SingleAutocompleteSelectFieldComponent = withStyles(styles, { - name: "SingleAutocompleteSelectField" -})( - ({ +const SingleAutocompleteSelectFieldComponent: React.FC< + SingleAutocompleteSelectFieldProps +> = props => { + const { choices, - classes, + allowCustomValues, disabled, displayValue, @@ -64,110 +64,111 @@ const SingleAutocompleteSelectFieldComponent = withStyles(styles, { fetchChoices, onChange, onFetchMore, - ...props - }: SingleAutocompleteSelectFieldProps & WithStyles) => { - const [prevDisplayValue] = useStateFromProps(displayValue); + ...rest + } = props; + const classes = useStyles(props); - const handleChange = item => - onChange({ - target: { - name, - value: item - } - } as any); + const [prevDisplayValue] = useStateFromProps(displayValue); - return ( - - {debounceFn => ( - displayValue} - onInputValueChange={value => debounceFn(value)} - onSelect={handleChange} - selectedItem={value} - > - {({ - getInputProps, - getItemProps, - isOpen, - inputValue, - selectedItem, - toggleMenu, - closeMenu, - highlightedIndex, - reset - }) => { - const isCustomValueSelected = - choices && selectedItem - ? choices.filter(c => c.value === selectedItem).length === 0 - : false; - const hasInputValueChanged = prevDisplayValue !== displayValue; + const handleChange = item => + onChange({ + target: { + name, + value: item + } + } as any); - if (hasInputValueChanged) { - reset({ inputValue: displayValue }); - } + return ( + + {debounceFn => ( + displayValue} + onInputValueChange={value => debounceFn(value)} + onSelect={handleChange} + selectedItem={value} + > + {({ + getInputProps, + getItemProps, + isOpen, + inputValue, + selectedItem, + toggleMenu, + closeMenu, + highlightedIndex, + reset + }) => { + const isCustomValueSelected = + choices && selectedItem + ? choices.filter(c => c.value === selectedItem).length === 0 + : false; + const hasInputValueChanged = prevDisplayValue !== displayValue; - const displayCustomValue = - inputValue && - inputValue.length > 0 && - allowCustomValues && - !choices.find( - choice => - choice.label.toLowerCase() === inputValue.toLowerCase() - ); + if (hasInputValueChanged) { + reset({ inputValue: displayValue }); + } - return ( -
- - -
- ), - error, - id: undefined, - onBlur: closeMenu, - onClick: toggleMenu - }} - error={error} - disabled={disabled} - helperText={helperText} - label={label} - fullWidth={true} - /> - {isOpen && (!!inputValue || !!choices.length) && ( - - )} -
+ const displayCustomValue = + inputValue && + inputValue.length > 0 && + allowCustomValues && + !choices.find( + choice => + choice.label.toLowerCase() === inputValue.toLowerCase() ); - }} - - )} - - ); - } -); + + return ( +
+ + +
+ ), + error, + id: undefined, + onBlur: closeMenu, + onClick: toggleMenu + }} + error={error} + disabled={disabled} + helperText={helperText} + label={label} + fullWidth={true} + /> + {isOpen && (!!inputValue || !!choices.length) && ( + + )} +
+ ); + }} + + )} + + ); +}; const SingleAutocompleteSelectField: React.FC< SingleAutocompleteSelectFieldProps -> = ({ choices, fetchChoices, ...props }) => { +> = ({ choices, fetchChoices, ...rest }) => { const [query, setQuery] = React.useState(""); if (fetchChoices) { return ( @@ -175,7 +176,7 @@ const SingleAutocompleteSelectField: React.FC< {debounceFn => ( )} @@ -189,7 +190,7 @@ const SingleAutocompleteSelectField: React.FC< choices={filter(choices, query, { key: "label" })} - {...props} + {...rest} /> ); }; diff --git a/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectFieldContent.tsx b/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectFieldContent.tsx index 93a012993..35b56e9e9 100644 --- a/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectFieldContent.tsx +++ b/src/components/SingleAutocompleteSelectField/SingleAutocompleteSelectFieldContent.tsx @@ -1,9 +1,8 @@ import CircularProgress from "@material-ui/core/CircularProgress"; import MenuItem from "@material-ui/core/MenuItem"; import Paper from "@material-ui/core/Paper"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import classNames from "classnames"; import { GetItemPropsOptions } from "downshift"; import React from "react"; @@ -38,13 +37,16 @@ export interface SingleAutocompleteSelectFieldContentProps } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ arrowContainer: { position: "relative" }, arrowInnerContainer: { alignItems: "center", - background: theme.palette.grey[50], + background: + theme.palette.type === "light" + ? theme.palette.grey[50] + : theme.palette.grey[900], bottom: 0, display: "flex", height: 30, @@ -55,7 +57,7 @@ const useStyles = makeStyles( width: "100%" }, content: { - maxHeight: menuItemHeight * maxMenuItems + theme.spacing.unit * 2, + maxHeight: menuItemHeight * maxMenuItems + theme.spacing(2), overflow: "scroll", padding: 8 }, @@ -63,7 +65,7 @@ const useStyles = makeStyles( opacity: 0 }, hr: { - margin: `${theme.spacing.unit}px 0` + margin: theme.spacing(1, 0) }, menuItem: { height: "auto", @@ -78,7 +80,7 @@ const useStyles = makeStyles( borderBottomLeftRadius: 8, borderBottomRightRadius: 8, left: 0, - marginTop: theme.spacing.unit, + marginTop: theme.spacing(), overflow: "hidden", position: "absolute", right: 0, @@ -115,7 +117,6 @@ const SingleAutocompleteSelectFieldContent: React.FC< emptyOption, getItemProps, hasMore, - highlightedIndex, loading, inputValue, isCustomValueSelected, @@ -196,10 +197,7 @@ const SingleAutocompleteSelectFieldContent: React.FC< ({ formControl: { "& label": { top: "-3px" }, width: "100%" + }, + noLabel: { + padding: theme.spacing(2, 1.5) } -}); +})); -interface SingleSelectFieldProps extends WithStyles { +interface SingleSelectFieldProps { choices: Array<{ value: string; label: string | React.ReactNode; @@ -35,12 +38,10 @@ interface SingleSelectFieldProps extends WithStyles { onChange(event: any); } -export const SingleSelectField = withStyles(styles, { - name: "SingleSelectField" -})( - ({ +export const SingleSelectField: React.FC = props => { + const { className, - classes, + disabled, error, label, @@ -51,49 +52,60 @@ export const SingleSelectField = withStyles(styles, { hint, selectProps, placeholder - }: SingleSelectFieldProps) => { - const choicesByKey: { [key: string]: string } = - choices === undefined - ? {} - : choices.reduce((prev, curr) => { - prev[curr.value] = curr.label; - return prev; - }, {}); + } = props; + const classes = useStyles(props); - return ( - { + prev[curr.value] = curr.label; + return prev; + }, {}); + + return ( + + {label} + - choiceValue ? choicesByKey[choiceValue.toString()] : placeholder - } - value={value || ""} - onChange={onChange} - input={} - {...selectProps} - > - {choices.length > 0 ? ( - choices.map(choice => ( - - {choice.label} - - )) - ) : ( - - + {choices.length > 0 ? ( + choices.map(choice => ( + + {choice.label} - )} - - {hint && {hint}} - - ); - } -); + )) + ) : ( + + + + )} + + {hint && {hint}} + + ); +}; SingleSelectField.displayName = "SingleSelectField"; export default SingleSelectField; diff --git a/src/components/Skeleton.tsx b/src/components/Skeleton.tsx index 7327f3418..bb5ded45f 100644 --- a/src/components/Skeleton.tsx +++ b/src/components/Skeleton.tsx @@ -1,45 +1,43 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - "@keyframes skeleton-animation": { - "0%": { - opacity: 0.6 - }, - "100%": { - opacity: 1 - } +const useStyles = makeStyles(theme => ({ + "@keyframes skeleton-animation": { + "0%": { + opacity: 0.6 }, - primary: { - "&$skeleton": { - background: theme.palette.primary.main - } - }, - skeleton: { - animation: "skeleton-animation .75s linear infinite forwards alternate", - background: theme.palette.background.default, - borderRadius: 4, - display: "block", - height: "0.8em", - margin: "0.2em 0" + "100%": { + opacity: 1 } - }); + }, + primary: { + "&$skeleton": { + background: theme.palette.primary.main + } + }, + skeleton: { + animation: "skeleton-animation .75s linear infinite forwards alternate", + background: theme.palette.background.default, + borderRadius: 4, + display: "block", + height: "0.8em", + margin: "0.2em 0" + } +})); -interface SkeletonProps extends WithStyles { +interface SkeletonProps { className?: string; primary?: boolean; style?: React.CSSProperties; } -const Skeleton = withStyles(styles, { name: "Skeleton" })( - ({ className, classes, primary, style }: SkeletonProps) => ( +const Skeleton: React.FC = props => { + const { className, primary, style } = props; + + const classes = useStyles(props); + + return ( - ) -); + ); +}; Skeleton.displayName = "Skeleton"; export default Skeleton; diff --git a/src/components/SortableTable/SortableHandle.tsx b/src/components/SortableTable/SortableHandle.tsx index 13843db3b..571b2b588 100644 --- a/src/components/SortableTable/SortableHandle.tsx +++ b/src/components/SortableTable/SortableHandle.tsx @@ -1,18 +1,17 @@ -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import TableCell from "@material-ui/core/TableCell"; -import makeStyles from "@material-ui/styles/makeStyles"; import React from "react"; import { SortableHandle as SortableHandleHoc } from "react-sortable-hoc"; import Draggable from "@saleor/icons/Draggable"; -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ columnDrag: { "&:first-child": { - paddingRight: theme.spacing.unit * 2 + paddingRight: theme.spacing(2) }, cursor: "grab", - width: 48 + theme.spacing.unit * 1.5 + width: 48 + theme.spacing(1.5) } })); diff --git a/src/components/SortableTable/SortableTableBody.tsx b/src/components/SortableTable/SortableTableBody.tsx index 5a07bfb83..0902aca99 100644 --- a/src/components/SortableTable/SortableTableBody.tsx +++ b/src/components/SortableTable/SortableTableBody.tsx @@ -1,6 +1,5 @@ -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import TableBody, { TableBodyProps } from "@material-ui/core/TableBody"; -import makeStyles from "@material-ui/styles/makeStyles"; import React from "react"; import { SortableContainer } from "react-sortable-hoc"; @@ -14,20 +13,21 @@ export interface SortableTableBodyProps { onSortEnd: ReorderAction; } -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ ghost: { "& td": { borderBottom: "none" }, background: theme.palette.background.paper, fontFamily: theme.typography.fontFamily, - fontSize: theme.overrides.MuiTableCell.root.fontSize, + // FIXME: you damn know what + // fontSize: theme.overrides.MuiTableCell.root.fontSize, opacity: 0.5 } })); const SortableTableBody: React.FC< - TableBodyProps & SortableTableBodyProps + Omit > = props => { const classes = useStyles({}); diff --git a/src/components/StatusLabel/StatusLabel.tsx b/src/components/StatusLabel/StatusLabel.tsx index 267dcb89b..d1ad3d4e9 100644 --- a/src/components/StatusLabel/StatusLabel.tsx +++ b/src/components/StatusLabel/StatusLabel.tsx @@ -1,26 +1,22 @@ import yellow from "@material-ui/core/colors/yellow"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography, { TypographyProps } from "@material-ui/core/Typography"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => { +const useStyles = makeStyles(theme => { const dot = { borderRadius: "100%", content: "''", display: "block", height: 8, - left: -theme.spacing.unit * 2, + left: -theme.spacing(2), position: "absolute" as "absolute", top: "calc(50% - 5px)", width: 8 }; - return createStyles({ + + return { errorDot: { "&:before": { backgroundColor: theme.palette.error.main, ...dot } }, @@ -29,7 +25,7 @@ const styles = (theme: Theme) => { }, root: { display: "inline-block", - marginLeft: theme.spacing.unit + 8, + marginLeft: theme.spacing(1) + 8, position: "relative" }, span: { @@ -38,24 +34,22 @@ const styles = (theme: Theme) => { successDot: { "&:before": { backgroundColor: theme.palette.primary.main, ...dot } } - }); -}; + }; +}); -interface StatusLabelProps extends WithStyles { +interface StatusLabelProps { className?: string; label: string | React.ReactNode; status: "success" | "neutral" | "error" | string; typographyProps?: TypographyProps; } -const StatusLabel = withStyles(styles, { name: "StatusLabel" })( - ({ - classes, - className, - label, - status, - typographyProps - }: StatusLabelProps) => ( +const StatusLabel: React.FC = props => { + const { className, label, status, typographyProps } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; StatusLabel.displayName = "StatusLabel"; export default StatusLabel; diff --git a/src/components/Tab/Tab.tsx b/src/components/Tab/Tab.tsx index 5f7e10e3b..ac0b3d2ce 100644 --- a/src/components/Tab/Tab.tsx +++ b/src/components/Tab/Tab.tsx @@ -1,23 +1,18 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ active: { - color: theme.typography.caption.color + color: theme.palette.text.secondary }, root: { "&$active": { borderBottomColor: theme.palette.primary.main, - color: theme.typography.body2.color + color: theme.typography.body1.color }, "&:focus": { color: theme.palette.primary.main @@ -26,26 +21,32 @@ const styles = (theme: Theme) => color: theme.palette.primary.main }, borderBottom: "1px solid transparent", - color: fade(theme.typography.caption.color, 0.6), + color: fade(theme.palette.text.secondary, 0.6), cursor: "pointer", display: "inline-block", fontWeight: theme.typography.fontWeightRegular, - marginRight: theme.spacing.unit * 2, + marginRight: theme.spacing(2), minWidth: 40, - padding: `0 ${theme.spacing.unit}px`, + padding: theme.spacing(1), transition: theme.transitions.duration.short + "ms" } - }); + }), + { name: "Tab" } +); -interface TabProps extends WithStyles { +interface TabProps { children?: React.ReactNode; isActive: boolean; changeTab: (index: T) => void; } export function Tab(value: T) { - return withStyles(styles, { name: "Tab" })( - ({ classes, children, isActive, changeTab }: TabProps) => ( + const Component: React.FC> = props => { + const { children, isActive, changeTab } = props; + + const classes = useStyles(props); + + return ( (value: T) { > {children} - ) - ); + ); + }; + + return Component; } export default Tab; diff --git a/src/components/Tab/TabContainer.tsx b/src/components/Tab/TabContainer.tsx index e7562069f..74515878d 100644 --- a/src/components/Tab/TabContainer.tsx +++ b/src/components/Tab/TabContainer.tsx @@ -1,27 +1,23 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; export interface TabContainerProps { children: React.ReactNode | React.ReactNodeArray; } -const styles = (theme: Theme) => - createStyles({ - root: { - borderBottom: `1px solid ${theme.overrides.MuiCard.root.borderColor}` - } - }); +const useStyles = makeStyles(theme => ({ + root: { + borderBottom: `1px solid ${theme.palette.divider}` + } +})); -const TabContainer = withStyles(styles, { - name: "TabContainer" -})(({ classes, children }: TabContainerProps & WithStyles) => ( -
{children}
-)); +const TabContainer: React.FC = props => { + const { children } = props; + + const classes = useStyles(props); + + return
{children}
; +}; TabContainer.displayName = "TabContainer"; export default TabContainer; diff --git a/src/components/Tab/Tabs.tsx b/src/components/Tab/Tabs.tsx index 429553019..5c4b90202 100644 --- a/src/components/Tab/Tabs.tsx +++ b/src/components/Tab/Tabs.tsx @@ -1,12 +1,10 @@ import React from "react"; export interface TabsProps { - children: ( - props: { - changeTab: (index: number) => void; - currentTab: number; - } - ) => React.ReactNode; + children: (props: { + changeTab: (index: number) => void; + currentTab: number; + }) => React.ReactNode; } interface TabsState { diff --git a/src/components/TableCellAvatar/TableCellAvatar.tsx b/src/components/TableCellAvatar/TableCellAvatar.tsx index e35d9c8d0..2d689bf8c 100644 --- a/src/components/TableCellAvatar/TableCellAvatar.tsx +++ b/src/components/TableCellAvatar/TableCellAvatar.tsx @@ -1,10 +1,5 @@ import Avatar from "@material-ui/core/Avatar"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TableCell from "@material-ui/core/TableCell"; import Cached from "@material-ui/icons/Cached"; import classNames from "classnames"; @@ -12,50 +7,49 @@ import React from "react"; import Image from "../../icons/Image"; -export const AVATAR_MARGIN = 56; +export const AVATAR_MARGIN = 32; -const styles = (theme: Theme) => - createStyles({ - avatar: { - background: "none", - border: `1px solid ${theme.overrides.MuiCard.root.borderColor}`, - borderRadius: 2, - color: "#bdbdbd", - display: "inline-flex", - padding: theme.spacing.unit / 2 +const useStyles = makeStyles(theme => ({ + avatar: { + background: "none", + border: `1px solid ${theme.palette.divider}`, + borderRadius: 2, + color: "#bdbdbd", + display: "inline-flex", + padding: theme.spacing(0.5) + }, + children: { + alignSelf: "center", + marginLeft: theme.spacing(2), + width: "100%" + }, + content: { + alignItems: "center", + display: "flex" + }, + root: { + "&:not(first-child)": { + paddingLeft: 0 }, - children: { - alignSelf: "center", - marginLeft: theme.spacing.unit * 2, - width: "100%" - }, - content: { - alignItems: "center", - display: "flex" - }, - root: { - paddingRight: theme.spacing.unit * 3, - width: "1%" - } - }); + paddingRight: theme.spacing(3), + width: "1%" + } +})); -interface TableCellAvatarProps extends WithStyles { +interface TableCellAvatarProps { className?: string; thumbnail?: string; avatarProps?: string; children?: React.ReactNode | React.ReactNodeArray; } -const TableCellAvatar = withStyles(styles, { name: "TableCellAvatar" })( - ({ - classes, - children, - className, - thumbnail, - avatarProps, - ...props - }: TableCellAvatarProps) => ( - +const TableCellAvatar: React.FC = props => { + const { children, className, thumbnail, avatarProps, ...rest } = props; + + const classes = useStyles(props); + + return ( +
{thumbnail === undefined ? ( @@ -74,7 +68,7 @@ const TableCellAvatar = withStyles(styles, { name: "TableCellAvatar" })(
{children}
- ) -); + ); +}; TableCellAvatar.displayName = "TableCellAvatar"; export default TableCellAvatar; diff --git a/src/components/TableCellHeader/TableCellHeader.tsx b/src/components/TableCellHeader/TableCellHeader.tsx index 4da908fae..4a2cd67fc 100644 --- a/src/components/TableCellHeader/TableCellHeader.tsx +++ b/src/components/TableCellHeader/TableCellHeader.tsx @@ -1,12 +1,11 @@ -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import TableCell, { TableCellProps } from "@material-ui/core/TableCell"; -import makeStyles from "@material-ui/styles/makeStyles"; import classNames from "classnames"; import React from "react"; import ArrowSort from "../../icons/ArrowSort"; -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ arrow: { transition: theme.transitions.duration.short + "ms" }, diff --git a/src/components/TableFilter/FilterChips.tsx b/src/components/TableFilter/FilterChips.tsx index 6508f9f10..c71d71984 100644 --- a/src/components/TableFilter/FilterChips.tsx +++ b/src/components/TableFilter/FilterChips.tsx @@ -1,13 +1,11 @@ import ButtonBase from "@material-ui/core/ButtonBase"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles, useTheme } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import ClearIcon from "@material-ui/icons/Clear"; -import { makeStyles, useTheme } from "@material-ui/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; -import Filter from "../Filter"; import FilterActions, { FilterActionsProps } from "../Filter/FilterActions"; import Hr from "../Hr"; import Link from "../Link"; @@ -18,7 +16,7 @@ export interface Filter { } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ filterButton: { alignItems: "center", backgroundColor: fade(theme.palette.primary.main, 0.8), @@ -26,23 +24,25 @@ const useStyles = makeStyles( display: "flex", height: "38px", justifyContent: "space-around", - margin: `0 ${theme.spacing.unit * 2}px ${theme.spacing.unit}px`, + margin: theme.spacing(0, 1, 2), marginLeft: 0, - padding: `0 ${theme.spacing.unit * 2}px` + padding: theme.spacing(0, 2) }, filterChipContainer: { display: "flex", flex: 1, - flexWrap: "wrap" + flexWrap: "wrap", + paddingTop: theme.spacing(2) }, filterContainer: { "& a": { - paddingBottom: 10 + paddingBottom: 10, + paddingTop: theme.spacing(1) }, borderBottom: `1px solid ${theme.palette.divider}`, display: "flex", - marginTop: theme.spacing.unit, - padding: `0 ${theme.spacing.unit * 3}px ${theme.spacing.unit}px` + marginTop: -theme.spacing(1), + padding: theme.spacing(0, 2) }, filterIcon: { color: theme.palette.common.white, @@ -61,7 +61,7 @@ const useStyles = makeStyles( width: 32 }, filterLabel: { - marginBottom: theme.spacing.unit + marginBottom: theme.spacing(1) }, filterText: { color: theme.palette.common.white, diff --git a/src/components/TableFilter/FilterTab.tsx b/src/components/TableFilter/FilterTab.tsx index 462baf478..0042784ed 100644 --- a/src/components/TableFilter/FilterTab.tsx +++ b/src/components/TableFilter/FilterTab.tsx @@ -1,58 +1,56 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Tab from "@material-ui/core/Tab"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - selectedTabLabel: { - "&$tabLabel": { - color: theme.typography.body2.color - } - }, - tabLabel: { - "&:hover": { - color: theme.typography.body2.color - }, - color: theme.typography.caption.color, - fontSize: "1rem", - fontWeight: 400 - }, - tabRoot: { - minWidth: "80px", - opacity: 1, - paddingTop: `${theme.spacing.unit * 1}px`, - textTransform: "initial" as "initial" +const useStyles = makeStyles(theme => ({ + selectedTabLabel: { + "&$tabLabel": { + color: theme.typography.body1.color } - }); + }, + tabLabel: { + "&:hover": { + color: theme.typography.body1.color + }, + color: theme.typography.caption.color, + fontSize: "1rem", + fontWeight: 400 + }, + tabRoot: { + minWidth: "80px", + opacity: 1, + paddingTop: theme.spacing(1), + textTransform: "initial" as "initial" + } +})); -interface FilterTabProps extends WithStyles { +interface FilterTabProps { onClick: () => void; label: string; selected?: boolean; value?: number; } -export const FilterTab = withStyles(styles, { name: "FilterTab" })( - ({ classes, onClick, label, selected, value }: FilterTabProps) => ( +export const FilterTab: React.FC = props => { + const { onClick, label, selected, value } = props; + + const classes = useStyles(props); + + return ( - ) -); + ); +}; FilterTab.displayName = "FilterTab"; export default FilterTab; diff --git a/src/components/TableFilter/FilterTabs.tsx b/src/components/TableFilter/FilterTabs.tsx index ca89529ec..a516a64ca 100644 --- a/src/components/TableFilter/FilterTabs.tsx +++ b/src/components/TableFilter/FilterTabs.tsx @@ -1,27 +1,25 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Tabs from "@material-ui/core/Tabs"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - tabsRoot: { - borderBottom: `1px solid ${theme.overrides.MuiCard.root.borderColor}`, - paddingLeft: `${theme.spacing.unit * 3}px` - } - }); +const useStyles = makeStyles(theme => ({ + tabsRoot: { + borderBottom: `1px solid ${theme.palette.divider}`, + paddingLeft: theme.spacing(3) + } +})); -interface FilterTabsProps extends WithStyles { +interface FilterTabsProps { children?: React.ReactNode; currentTab: number; } -export const FilterTabs = withStyles(styles, { name: "FilterTabs" })( - ({ classes, children, currentTab }: FilterTabsProps) => ( +export const FilterTabs: React.FC = props => { + const { children, currentTab } = props; + + const classes = useStyles(props); + + return ( {children} - ) -); + ); +}; export default FilterTabs; diff --git a/src/components/TableHead/TableHead.tsx b/src/components/TableHead/TableHead.tsx index 180758eb1..b1c408a8e 100644 --- a/src/components/TableHead/TableHead.tsx +++ b/src/components/TableHead/TableHead.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import TableCell from "@material-ui/core/TableCell"; import MuiTableHead, { @@ -29,66 +24,62 @@ export interface TableHeadProps extends MuiTableHeadProps { toggleAll?: (items: Node[], selected: number) => void; } -const styles = (theme: Theme) => - createStyles({ - cell: { - padding: 0 - }, - checkboxPartialSelect: { - "& input": { - "&:before": { - background: [theme.palette.background.paper, "!important"] as any, - border: `solid 1px ${theme.palette.primary.main}`, - content: "''" - }, - background: theme.palette.background.paper +const useStyles = makeStyles(theme => ({ + cell: { + padding: 0 + }, + checkboxPartialSelect: { + "& input": { + "&:before": { + background: [theme.palette.background.paper, "!important"] as any, + border: `solid 1px ${theme.palette.primary.main}`, + content: "''" }, - "&:after": { - background: theme.palette.primary.main, - content: "''", - height: 2, - position: "absolute", - width: 6 - } + background: theme.palette.background.paper }, - checkboxSelected: { - backgroundColor: fade(theme.palette.primary.main, 0.05) - }, - container: { - alignItems: "center", - display: "flex", - height: 47, - marginRight: -theme.spacing.unit * 2 - }, - dragRows: { - padding: 0, - width: 52 - }, - padding: { - "&:last-child": { - padding: 0 - } - }, - root: { - backgroundColor: fade(theme.palette.primary.main, 0.05), - paddingLeft: 0, - paddingRight: 24 - }, - spacer: { - flex: 1 - }, - toolbar: { - "& > *": { - marginLeft: theme.spacing.unit - } + "&:after": { + background: theme.palette.primary.main, + content: "''", + height: 2, + position: "absolute", + width: 6 } - }); + }, + checkboxSelected: { + backgroundColor: fade(theme.palette.primary.main, 0.05) + }, + container: { + alignItems: "center", + display: "flex", + height: 47, + marginRight: -theme.spacing(2) + }, + dragRows: { + padding: 0, + width: 52 + }, + padding: { + "&:last-child": { + padding: 0 + } + }, + root: { + backgroundColor: fade(theme.palette.primary.main, 0.05), + paddingLeft: 0, + paddingRight: 24 + }, + spacer: { + flex: 1 + }, + toolbar: { + "& > *": { + marginLeft: theme.spacing(1) + } + } +})); -const TableHead = withStyles(styles, { - name: "TableHead" -})( - ({ - classes, +const TableHead: React.FC = props => { + const { children, colSpan, disabled, @@ -98,65 +89,66 @@ const TableHead = withStyles(styles, { toggleAll, toolbar, ...muiTableHeadProps - }: TableHeadProps & WithStyles) => { - return ( - - - {dragRows && (items === undefined || items.length > 0) && ( - + + {dragRows && (items === undefined || items.length > 0) && ( + + )} + {(items === undefined || items.length > 0) && ( + + selected && selected > 0 })} + checked={selected === 0 ? false : true} + disabled={disabled} + onChange={() => toggleAll(items, selected)} /> - )} - {(items === undefined || items.length > 0) && ( + + )} + {selected ? ( + <> - selected && selected > 0 - })} - checked={selected === 0 ? false : true} - disabled={disabled} - onChange={() => toggleAll(items, selected)} - /> +
+ {selected && ( + + + + )} +
+ {toolbar &&
{toolbar}
} +
- )} - {selected ? ( - <> - -
- {selected && ( - - - - )} -
- {toolbar &&
{toolbar}
} -
- - - ) : ( - children - )} - - - ); - } -); + + ) : ( + children + )} + + + ); +}; TableHead.displayName = "TableHead"; export default TableHead; diff --git a/src/components/TableHead/index.ts b/src/components/TableHead/index.ts index bbb62bd2f..c65d8a283 100644 --- a/src/components/TableHead/index.ts +++ b/src/components/TableHead/index.ts @@ -1,2 +1,2 @@ -export { default } from './TableHead'; -export * from './TableHead'; \ No newline at end of file +export { default } from "./TableHead"; +export * from "./TableHead"; diff --git a/src/components/TablePagination/TablePagination.tsx b/src/components/TablePagination/TablePagination.tsx index e36d93f21..ff64fb2ed 100644 --- a/src/components/TablePagination/TablePagination.tsx +++ b/src/components/TablePagination/TablePagination.tsx @@ -1,12 +1,5 @@ -// @inheritedComponent TableCell - import { IconButtonProps } from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TableCell from "@material-ui/core/TableCell"; import Toolbar from "@material-ui/core/Toolbar"; import React from "react"; @@ -16,50 +9,48 @@ import { maybe } from "@saleor/misc"; import { ListSettings } from "../../types"; import TablePaginationActions from "./TablePaginationActions"; -const styles = (theme: Theme) => - createStyles({ - actions: { - color: theme.palette.text.secondary, - flexShrink: 0, - marginLeft: theme.spacing.unit * 2.5 - }, - caption: { - flexShrink: 0 - }, - input: { - flexShrink: 0, - fontSize: "inherit" - }, - root: { - "&:last-child": { - padding: 0 - } - }, - select: { - paddingLeft: theme.spacing.unit, - paddingRight: theme.spacing.unit * 2 - }, - selectIcon: { - top: 1 - }, - selectRoot: { - color: theme.palette.text.secondary, - marginLeft: theme.spacing.unit, - marginRight: theme.spacing.unit * 4 - }, - spacer: { - flex: "1 1 100%" - }, - toolbar: { - height: 56, - minHeight: 56, - paddingLeft: 2, - paddingRight: 2 +const useStyles = makeStyles(theme => ({ + actions: { + color: theme.palette.text.secondary, + flexShrink: 0, + marginLeft: theme.spacing(2.5) + }, + caption: { + flexShrink: 0 + }, + input: { + flexShrink: 0, + fontSize: "inherit" + }, + root: { + "&:last-child": { + padding: 0 } - }); + }, + select: { + paddingLeft: theme.spacing(), + paddingRight: theme.spacing(2) + }, + selectIcon: { + top: 1 + }, + selectRoot: { + color: theme.palette.text.secondary, + marginLeft: theme.spacing(), + marginRight: theme.spacing(4) + }, + spacer: { + flex: "1 1 100%" + }, + toolbar: { + height: 56, + minHeight: 56, + paddingLeft: 2, + paddingRight: 2 + } +})); -interface TablePaginationProps extends WithStyles { - Actions?: typeof TablePaginationActions; +interface TablePaginationProps { backIconButtonProps?: Partial; colSpan: number; component?: string | typeof TableCell; @@ -72,11 +63,9 @@ interface TablePaginationProps extends WithStyles { onUpdateListSettings?(key: keyof ListSettings, value: any): void; } -const TablePagination = withStyles(styles, { name: "TablePagination" })( - ({ - Actions, +const TablePagination: React.FC = props => { + const { backIconButtonProps, - classes, colSpan: colSpanProp, component: Component, settings, @@ -87,40 +76,40 @@ const TablePagination = withStyles(styles, { name: "TablePagination" })( onPreviousPage, onUpdateListSettings, ...other - }: TablePaginationProps) => { - let colSpan; + } = props; + const classes = useStyles(props); - if (Component === TableCell || Component === "td") { - colSpan = colSpanProp || 1000; - } + let colSpan; - return ( - - -
- {maybe(() => settings.rowNumber) && ( - - )} -
- -
-
- ); + if (Component === TableCell || Component === "td") { + colSpan = colSpanProp || 1000; } -); + + return ( + + +
+ {maybe(() => settings.rowNumber) && ( + + )} +
+ +
+
+ ); +}; TablePagination.defaultProps = { - Actions: TablePaginationActions, component: TableCell }; diff --git a/src/components/TablePagination/TablePaginationActions.tsx b/src/components/TablePagination/TablePaginationActions.tsx index f22bd3670..d49020417 100644 --- a/src/components/TablePagination/TablePaginationActions.tsx +++ b/src/components/TablePagination/TablePaginationActions.tsx @@ -1,10 +1,5 @@ import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles, useTheme as useMuiTheme } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import ArrowLeft from "@material-ui/icons/ArrowLeft"; import ArrowRight from "@material-ui/icons/ArrowRight"; @@ -12,53 +7,50 @@ import useTheme from "@saleor/hooks/useTheme"; import classNames from "classnames"; import React from "react"; -const styles = (theme: Theme) => - createStyles({ - dark: { +const useStyles = makeStyles(theme => ({ + dark: { + "& svg": { + color: theme.palette.primary.main + }, + "&$disabled": { "& svg": { - color: theme.palette.primary.main - }, - "&$disabled": { - "& svg": { - color: fade(theme.palette.primary.main, 0.2) - } - }, - "&:focus, &:hover": { - "& > span:first-of-type": { - backgroundColor: fade(theme.palette.primary.main, 0.2) - } + color: fade(theme.palette.primary.main, 0.2) } }, - disabled: {}, - iconButton: { + "&:focus, &:hover": { "& > span:first-of-type": { - backgroundColor: theme.palette.background.default, - borderRadius: "100%", - transition: theme.transitions.duration.standard + "ms" - }, - "& svg": { - border: `solid 1px #BDBDBD`, - borderRadius: "50%" - }, - "&:focus, &:hover": { - "& > span:first-of-type": { - backgroundColor: fade(theme.palette.primary.main, 0.2) - }, - backgroundColor: "transparent" - }, - padding: 6 - }, - root: { - color: theme.palette.text.secondary, - flexShrink: 0, - margin: `0 ${theme.spacing.unit * 2.5}px` + backgroundColor: fade(theme.palette.primary.main, 0.2) + } } - }); + }, + disabled: {}, + iconButton: { + "& > span:first-of-type": { + backgroundColor: theme.palette.background.default, + borderRadius: "100%", + transition: theme.transitions.duration.standard + "ms" + }, + "& svg": { + border: `solid 1px #BDBDBD`, + borderRadius: "50%" + }, + "&:focus, &:hover": { + "& > span:first-of-type": { + backgroundColor: fade(theme.palette.primary.main, 0.2) + }, + backgroundColor: "transparent" + }, + padding: 6 + }, + root: { + color: theme.palette.text.secondary, + flexShrink: 0, + margin: theme.spacing(0, 2.5) + } +})); -export interface TablePaginationActionsProps - extends WithStyles { +export interface TablePaginationActionsProps { backIconButtonProps?: any; - classes: any; className?: string; hasNextPage: boolean; hasPreviousPage: boolean; @@ -67,53 +59,53 @@ export interface TablePaginationActionsProps onPreviousPage(event); } -export const TablePaginationActions = withStyles(styles, { - name: "TablePaginationActions", - withTheme: true -})( - ({ +export const TablePaginationActions: React.FC< + TablePaginationActionsProps +> = props => { + const { backIconButtonProps, - classes, className, hasNextPage, hasPreviousPage, nextIconButtonProps, onNextPage, onPreviousPage, - theme, ...other - }: TablePaginationActionsProps) => { - const { isDark } = useTheme(); - return ( -
- - {theme.direction === "rtl" ? : } - - - {theme.direction === "rtl" ? : } - -
- ); - } -); + } = props; + const classes = useStyles(props); + + const { isDark } = useTheme(); + const { direction } = useMuiTheme(); + + return ( +
+ + {direction === "rtl" ? : } + + + {direction === "rtl" ? : } + +
+ ); +}; TablePaginationActions.displayName = "TablePaginationActions"; export default TablePaginationActions; diff --git a/src/components/TextFieldWithChoice/TextFieldWithChoice.tsx b/src/components/TextFieldWithChoice/TextFieldWithChoice.tsx index 2bf8c6408..9f634bf5b 100644 --- a/src/components/TextFieldWithChoice/TextFieldWithChoice.tsx +++ b/src/components/TextFieldWithChoice/TextFieldWithChoice.tsx @@ -4,7 +4,7 @@ import MenuItem from "@material-ui/core/MenuItem"; import Menu from "@material-ui/core/MenuList"; import Paper from "@material-ui/core/Paper"; import Popper from "@material-ui/core/Popper"; -import { createStyles, WithStyles, withStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField, { TextFieldProps } from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import DropdownIcon from "@material-ui/icons/ArrowDropDown"; @@ -23,7 +23,7 @@ export type TextFieldWithChoiceProps = TextFieldProps & { }; }; -const styles = createStyles({ +const useStyles = makeStyles({ adornment: { alignItems: "center", cursor: "pointer", @@ -34,99 +34,93 @@ const styles = createStyles({ } }); -const TextFieldWithChoice = withStyles(styles, { - name: "TextFieldWithChoices" -})( - ({ - ChoiceProps, - InputProps, - classes, - onChange, - ...props - }: TextFieldWithChoiceProps & WithStyles) => { - const anchor = React.useRef(); +const TextFieldWithChoice: React.FC = props => { + const { ChoiceProps, InputProps, onChange, ...rest } = props; + const classes = useStyles(props); - return ( - - {({ - open: menuOpen, - actions: { open: openMenu, close: closeMenu } - }) => { - const handleSelect = value => { - onChange({ - target: { - name: ChoiceProps.name, - value - } - } as any); - closeMenu(); - }; + const anchor = React.useRef(); + + return ( + + {({ + open: menuOpen, + actions: { open: openMenu, close: closeMenu } + }) => { + const handleSelect = value => { + onChange({ + target: { + name: ChoiceProps.name, + value + } + } as any); + closeMenu(); + }; + + return ( + <> +
+ + {ChoiceProps.label} + + {ChoiceProps.values ? : null} +
+ + {({ TransitionProps, placement }) => ( + + + + + {ChoiceProps.values.map(choice => ( + handleSelect(choice.value)} + key={choice.value} + > + {choice.label} + + ))} + + + + + )} + + + ); + }} + + ) + }} + /> + ); +}; - return ( - <> -
- - {ChoiceProps.label} - - {ChoiceProps.values ? : null} -
- - {({ TransitionProps, placement }) => ( - - - - - {ChoiceProps.values.map(choice => ( - handleSelect(choice.value)} - key={choice.value} - > - {choice.label} - - ))} - - - - - )} - - - ); - }} - - ) - }} - /> - ); - } -); TextFieldWithChoice.displayName = "TextFieldWithChoice"; export default TextFieldWithChoice; diff --git a/src/components/Theme/ThemeProvider.tsx b/src/components/Theme/ThemeProvider.tsx index cc45447e2..169a663b6 100644 --- a/src/components/Theme/ThemeProvider.tsx +++ b/src/components/Theme/ThemeProvider.tsx @@ -1,83 +1,9 @@ -// FIXME: https://github.com/mirumee/saleor/issues/4174 -import OldMuiThemeProvider from "@material-ui/core/styles/MuiThemeProvider"; -import MuiThemeProvider from "@material-ui/styles/ThemeProvider"; +import { MuiThemeProvider } from "@material-ui/core/styles"; import React from "react"; import Baseline from "../../Baseline"; -import createTheme, { IThemeColors } from "../../theme"; - -const dark: IThemeColors = { - autofill: "#5D5881", - background: { - default: "#1D1E1F", - paper: "#2E2F31" - }, - checkbox: { - default: "#FFFFFF" - }, - divider: "#252728", - error: "#C22D74", - font: { - button: "#202124", - default: "#FCFCFC", - gray: "#9E9D9D", - textButton: "#FFFFFF", - textDisabled: "#FCFCFC" - }, - gray: { - default: "#202124", - disabled: "rgba(32, 33, 36, 0.6)" - }, - input: { - border: "#9d9d9d", - default: "#25262A", - disabled: "#393939", - disabledBackground: "#292A2D", - disabledText: "#9D9D9D", - error: "#8C2054", - text: "#FCFCFC", - textHover: "#616161" - }, - paperBorder: "#252728", - primary: "#13BEBB", - secondary: "#21125E" -}; -const light: IThemeColors = { - autofill: "#f4f6c5", - background: { - default: "#F1F6F6", - paper: "#FFFFFF" - }, - checkbox: { - default: "#616161" - }, - divider: "#EAEAEA", - error: "#C22D74", - font: { - button: "#FFFFFF", - default: "#3D3D3D", - gray: "#616161", - textButton: "#06847B", - textDisabled: "#616161" - }, - gray: { - default: "#C8C8C8", - disabled: "rgba(216, 216, 216, 0.3)" - }, - input: { - border: "#BDBDBD", - default: "#FFFFFF", - disabled: "#EAEAEA", - disabledBackground: "#F4F4F4", - disabledText: "#9D9D9D", - error: "#8C2054", - text: "#3D3D3D", - textHover: "#616161" - }, - paperBorder: "#EAEAEA", - primary: "#06847B", - secondary: "#21125E" -}; +import createTheme from "../../theme"; +import { dark, light } from "./themes"; interface IThemeContext { isDark: boolean; @@ -108,12 +34,10 @@ const ThemeProvider: React.FC = ({ toggleTheme }} > - - - - {children} - - + + + {children} + ); }; diff --git a/src/components/Theme/themes.ts b/src/components/Theme/themes.ts new file mode 100644 index 000000000..7dffeed5c --- /dev/null +++ b/src/components/Theme/themes.ts @@ -0,0 +1,106 @@ +export type IThemeColors = Record< + "primary" | "secondary" | "error" | "paperBorder" | "autofill", + string +> & { + background: Record<"default" | "paper", string>; +} & { + checkbox: Record<"default", string>; +} & { + divider: string; +} & { + font: Record< + "default" | "gray" | "button" | "textButton" | "textDisabled", + string + >; +} & { + gray: Record<"default" | "disabled", string>; +} & { + input: Record< + | "default" + | "border" + | "disabled" + | "disabledBackground" + | "disabledText" + | "error" + | "text" + | "textHover", + string + >; +} & { + theme: "dark" | "light"; +}; + +export const dark: IThemeColors = { + autofill: "#5D5881", + background: { + default: "#1D1E1F", + paper: "#2E2F31" + }, + checkbox: { + default: "#FFFFFF" + }, + divider: "#252728", + error: "#C22D74", + font: { + button: "#202124", + default: "#FCFCFC", + gray: "#9E9D9D", + textButton: "#FFFFFF", + textDisabled: "#FCFCFC" + }, + gray: { + default: "#202124", + disabled: "rgba(32, 33, 36, 0.6)" + }, + input: { + border: "#9d9d9d", + default: "#25262A", + disabled: "#393939", + disabledBackground: "#292A2D", + disabledText: "#9D9D9D", + error: "#8C2054", + text: "#FCFCFC", + textHover: "#616161" + }, + paperBorder: "#252728", + primary: "#13BEBB", + secondary: "#21125E", + theme: "dark" +}; +export const light: IThemeColors = { + autofill: "#f4f6c5", + background: { + default: "#F1F6F6", + paper: "#FFFFFF" + }, + checkbox: { + default: "#616161" + }, + divider: "#EAEAEA", + error: "#C22D74", + font: { + button: "#FFFFFF", + default: "#3D3D3D", + gray: "#616161", + textButton: "#06847B", + textDisabled: "#616161" + }, + gray: { + default: "#C8C8C8", + disabled: "rgba(216, 216, 216, 0.3)" + }, + input: { + border: "#BDBDBD", + default: "#FFFFFF", + disabled: "#EAEAEA", + disabledBackground: "#F4F4F4", + disabledText: "#9D9D9D", + error: "#8C2054", + text: "#3D3D3D", + textHover: "#616161" + }, + paperBorder: "#EAEAEA", + primary: "#06847B", + secondary: "#21125E", + theme: "light" +}; diff --git a/src/components/Timeline/Timeline.tsx b/src/components/Timeline/Timeline.tsx index 5489fa695..e5d26d3e1 100644 --- a/src/components/Timeline/Timeline.tsx +++ b/src/components/Timeline/Timeline.tsx @@ -2,29 +2,27 @@ import Avatar from "@material-ui/core/Avatar"; import Button from "@material-ui/core/Button"; import CardContent from "@material-ui/core/CardContent"; import deepPurple from "@material-ui/core/colors/deepPurple"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import PersonIcon from "@material-ui/icons/Person"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ avatar: { "& span": { height: "100%", width: "100%" }, alignSelf: "flex-start", - marginRight: theme.spacing.unit * 3.5 + marginRight: theme.spacing(3.5) + }, + button: { + zIndex: 2 }, cardActionsExpanded: { - maxHeight: theme.spacing.unit * 6 + maxHeight: theme.spacing(6) }, input: { "& > div": { @@ -36,15 +34,16 @@ const styles = (theme: Theme) => "& textarea": { "&::placeholder": { opacity: [[1], "!important"] as any - } + }, + zIndex: 2 }, background: theme.palette.background.paper }, noteRoot: { - left: -theme.spacing.unit * 8.5 - 1, - marginBottom: theme.spacing.unit * 3, + left: -theme.spacing(8.5) - 1, + marginBottom: theme.spacing(3), position: "relative", - width: `calc(100% + ${theme.spacing.unit * 8.5}px)` + width: `calc(100% + ${theme.spacing(8.5)}px)` }, noteTitle: { "&:last-child": { @@ -54,78 +53,88 @@ const styles = (theme: Theme) => alignItems: "center", background: theme.palette.background.default, display: "flex", - paddingLeft: theme.spacing.unit * 3 + paddingLeft: theme.spacing(3) }, root: { - borderColor: theme.overrides.MuiCard.root.borderColor, + borderColor: theme.palette.divider, borderStyle: "solid", borderWidth: "0 0 0 2px", marginLeft: 20, - paddingLeft: theme.spacing.unit * 3 + paddingLeft: theme.spacing(3) } - }); + }), + { name: "Timeline" } +); -interface TimelineProps extends WithStyles { +interface TimelineProps { children?: React.ReactNode; } -interface TimelineAddNoteProps extends WithStyles { +interface TimelineAddNoteProps { message: string; reset: () => void; onChange(event: React.ChangeEvent); onSubmit(event: React.FormEvent); } -export const Timeline = withStyles(styles, { name: "Timeline" })( - ({ classes, children }: TimelineProps) => ( -
{children}
- ) -); +export const Timeline: React.FC = props => { + const { children } = props; -export const TimelineAddNote = withStyles(styles, { name: "TimelineAddNote" })( - ({ classes, message, onChange, onSubmit, reset }: TimelineAddNoteProps) => { - const intl = useIntl(); + const classes = useStyles(props); - const submit = e => { - reset(); - onSubmit(e); - }; + return
{children}
; +}; + +export const TimelineAddNote: React.FC = props => { + const { message, onChange, onSubmit, reset } = props; + const classes = useStyles(props); + + const intl = useIntl(); + + const submit = e => { + reset(); + onSubmit(e); + }; + + return ( +
+ + + + + submit(e)} + > + + + ) + }} + variant="outlined" + /> + +
+ ); +}; - return ( -
- - - - - submit(e)}> - - - ) - }} - variant="outlined" - /> - -
- ); - } -); Timeline.displayName = "Timeline"; export default Timeline; diff --git a/src/components/Timeline/TimelineEvent.tsx b/src/components/Timeline/TimelineEvent.tsx index f3dd630ac..906b7dfa9 100644 --- a/src/components/Timeline/TimelineEvent.tsx +++ b/src/components/Timeline/TimelineEvent.tsx @@ -1,78 +1,76 @@ import ExpansionPanel from "@material-ui/core/ExpansionPanel"; import ExpansionPanelDetails from "@material-ui/core/ExpansionPanelDetails"; import ExpansionPanelSummary from "@material-ui/core/ExpansionPanelSummary"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import ExpandMoreIcon from "@material-ui/icons/ExpandMore"; import React from "react"; import { DateTime } from "../Date"; -const styles = (theme: Theme) => - createStyles({ - date: { - color: theme.typography.caption.color, +const useStyles = makeStyles(theme => ({ + date: { + color: theme.typography.caption.color + }, + dateExpander: { + color: theme.typography.caption.color, + position: "absolute", + right: theme.spacing(3) + }, + dot: { + backgroundColor: theme.palette.primary.main, + borderRadius: "100%", + height: 8, + left: -29, + position: "absolute", + top: 6, + width: 8 + }, + noExpander: { + alignItems: "center", + display: "flex", + justifyContent: "space-between", + marginBottom: theme.spacing(), + marginLeft: theme.spacing(3), + width: "100%" + }, + panel: { + "&:before": { + display: "none" }, - dateExpander:{ - color: theme.typography.caption.color, + background: "none", + width: "100%" + }, + root: { + "&:last-child:after": { + background: theme.palette.background.default, + content: "''", + height: "calc(50% - 4px)", + left: -theme.spacing(3) - 2, position: "absolute", - right: theme.spacing.unit * 3 + top: "calc(50% + 4px)", + width: "2px" }, - dot: { - backgroundColor: theme.palette.primary.main, - borderRadius: "100%", - height: 8, - left: -29, - position: "absolute", - top: 6, - width: 8 - }, - noExpander: { - alignItems: "center", - display: "flex", - justifyContent: "space-between", - marginBottom: theme.spacing.unit, - marginLeft: theme.spacing.unit * 3, - width: "100%" - }, - panel: { - "&:before": { - display: "none" - }, - background: "none", - width: "100%" - }, - root: { - "&:last-child:after": { - background: theme.palette.background.default, - content: "''", - height: "calc(50% - 4px)", - left: `${-theme.spacing.unit * 3 - 2}px`, - position: "absolute", - top: "calc(50% + 4px)", - width: "2px" - }, - alignItems: "center", - display: "flex", - marginBottom: theme.spacing.unit * 3, - position: "relative", - width: "100%" - } - }); + alignItems: "center", + display: "flex", + marginBottom: theme.spacing(3), + position: "relative", + width: "100%" + } +})); -interface TimelineEventProps extends WithStyles { +interface TimelineEventProps { children?: React.ReactNode; date: string; title: string; } -export const TimelineEvent = withStyles(styles)( - ({ classes, children, date, title }: TimelineEventProps) => ( +export const TimelineEvent: React.FC = props => { + const { children, date, title } = props; + + const classes = useStyles(props); + + return (
{children ? ( @@ -94,7 +92,7 @@ export const TimelineEvent = withStyles(styles)(
)}
- ) -); + ); +}; TimelineEvent.displayName = "TimelineEvent"; export default TimelineEvent; diff --git a/src/components/Timeline/TimelineNote.tsx b/src/components/Timeline/TimelineNote.tsx index 56568a199..83764208a 100644 --- a/src/components/Timeline/TimelineNote.tsx +++ b/src/components/Timeline/TimelineNote.tsx @@ -2,12 +2,7 @@ import Avatar from "@material-ui/core/Avatar"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import * as colors from "@material-ui/core/colors"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import PersonIcon from "@material-ui/icons/Person"; import CRC from "crc-32"; @@ -34,40 +29,39 @@ const palette = [ colors.yellow ].map(color => color[500]); -const styles = (theme: Theme) => - createStyles({ - avatar: { - left: -45, - position: "absolute", - top: 0 +const useStyles = makeStyles(theme => ({ + avatar: { + left: -45, + position: "absolute", + top: 0 + }, + card: { + marginBottom: theme.spacing(3), + marginLeft: theme.spacing(3), + position: "relative" + }, + cardContent: { + "&:last-child": { + padding: 16 }, - card: { - marginBottom: theme.spacing.unit * 3, - marginLeft: theme.spacing.unit * 3, - position: "relative" + boxShadow: "0px 5px 10px rgba(0, 0, 0, 0.05)" + }, + root: { + position: "relative" + }, + title: { + "& p": { + fontSize: "14px" }, - cardContent: { - "&:last-child": { - padding: 16 - }, - boxShadow: "0px 5px 10px rgba(0, 0, 0, 0.05)" - }, - root: { - position: "relative" - }, - title: { - "& p": { - fontSize: "14px" - }, - alignItems: "center", - display: "flex", - justifyContent: "space-between", - marginBottom: theme.spacing.unit, - paddingLeft: theme.spacing.unit * 3 - } - }); + alignItems: "center", + display: "flex", + justifyContent: "space-between", + marginBottom: theme.spacing(), + paddingLeft: theme.spacing(3) + } +})); -interface TimelineNoteProps extends WithStyles { +interface TimelineNoteProps { date: string; message: string | null; user: { @@ -75,8 +69,12 @@ interface TimelineNoteProps extends WithStyles { }; } -export const TimelineNote = withStyles(styles, { name: "TimelineNote" })( - ({ classes, date, user, message }: TimelineNoteProps) => ( +export const TimelineNote: React.FC = props => { + const { date, user, message } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; TimelineNote.displayName = "TimelineNote"; export default TimelineNote; diff --git a/src/components/VisibilityCard/VisibilityCard.tsx b/src/components/VisibilityCard/VisibilityCard.tsx index 8e6e4699b..01372d0ed 100644 --- a/src/components/VisibilityCard/VisibilityCard.tsx +++ b/src/components/VisibilityCard/VisibilityCard.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import React from "react"; @@ -15,39 +10,38 @@ import CardTitle from "@saleor/components/CardTitle"; import RadioSwitchField from "@saleor/components/RadioSwitchField"; import { DateContext } from "../Date/DateContext"; -const styles = (theme: Theme) => - createStyles({ - children: { - "& button": { - margin: "0 9px" - }, - "& label": { - marginTop: `${theme.spacing.unit * 2.5}px` - } +const useStyles = makeStyles(theme => ({ + children: { + "& button": { + margin: "0 9px" }, - date: { - "& svg": { - fill: theme.palette.primary.main - }, - marginTop: theme.spacing.unit * 3 - }, - label: { - lineHeight: 1, - margin: 0 - }, - secondLabel: { - fontSize: 12 - }, - setPublicationDate: { - color: theme.palette.primary.main, - cursor: "pointer", - fontSize: "14px", - paddingTop: "15px", - textDecoration: "underline" + "& label": { + marginTop: theme.spacing(2.5) } - }); + }, + date: { + "& svg": { + fill: theme.palette.primary.main + }, + marginTop: theme.spacing(3) + }, + label: { + lineHeight: 1, + margin: 0 + }, + secondLabel: { + fontSize: 12 + }, + setPublicationDate: { + color: theme.palette.primary.main, + cursor: "pointer", + fontSize: "14px", + paddingTop: "15px", + textDecoration: "underline" + } +})); -interface VisibilityCardProps extends WithStyles { +interface VisibilityCardProps { children?: React.ReactNode | React.ReactNodeArray; data: { isPublished: boolean; @@ -60,113 +54,110 @@ interface VisibilityCardProps extends WithStyles { visibleMessage: string; } -export const VisibilityCard = withStyles(styles, { - name: "VisibilityCard" -})( - ({ +export const VisibilityCard: React.FC = props => { + const { children, - classes, + data: { isPublished, publicationDate }, errors, disabled, hiddenMessage, onChange, visibleMessage - }: VisibilityCardProps) => { - const intl = useIntl(); - const [isPublicationDate, setPublicationDate] = React.useState( - publicationDate === null ? true : false - ); - const dateNow = React.useContext(DateContext); - const visibleSecondLabel = publicationDate - ? isPublished - ? visibleMessage - : null - : null; - const hiddenSecondLabel = publicationDate - ? isPublished - ? null - : Date.parse(publicationDate) > dateNow - ? hiddenMessage - : null - : null; + } = props; + const classes = useStyles(props); - return ( - - - - -

- {intl.formatMessage({ - defaultMessage: "Visible" - })} -

- - {visibleSecondLabel} - - - } - name={"isPublished" as keyof FormData} - secondOptionLabel={ - <> -

- {intl.formatMessage({ - defaultMessage: "Hidden" - })} -

- {hiddenSecondLabel} - - } - value={isPublished} - onChange={onChange} - /> - {!isPublished && ( + const intl = useIntl(); + const [isPublicationDate, setPublicationDate] = React.useState( + publicationDate === null ? true : false + ); + const dateNow = React.useContext(DateContext); + const visibleSecondLabel = publicationDate + ? isPublished + ? visibleMessage + : null + : null; + const hiddenSecondLabel = publicationDate + ? isPublished + ? null + : Date.parse(publicationDate) > dateNow + ? hiddenMessage + : null + : null; + + return ( + + + + - {!isPublished && ( - setPublicationDate(!isPublicationDate)} - > - {intl.formatMessage({ - defaultMessage: "Set publication date" - })} - - )} - {isPublicationDate && ( - - )} +

+ {intl.formatMessage({ + defaultMessage: "Visible" + })} +

+ {visibleSecondLabel} - )} -
{children}
-
-
- ); - } -); + } + name={"isPublished" as keyof FormData} + secondOptionLabel={ + <> +

+ {intl.formatMessage({ + defaultMessage: "Hidden" + })} +

+ {hiddenSecondLabel} + + } + value={isPublished} + onChange={onChange} + /> + {!isPublished && ( + <> + {!isPublished && ( + setPublicationDate(!isPublicationDate)} + > + {intl.formatMessage({ + defaultMessage: "Set publication date" + })} + + )} + {isPublicationDate && ( + + )} + + )} +
{children}
+
+
+ ); +}; VisibilityCard.displayName = "VisibilityCard"; export default VisibilityCard; diff --git a/src/components/Weight/index.ts b/src/components/Weight/index.ts index 1a73fcf9a..85ecccd23 100644 --- a/src/components/Weight/index.ts +++ b/src/components/Weight/index.ts @@ -1,2 +1,2 @@ -export { default } from './Weight'; -export * from './Weight'; \ No newline at end of file +export { default } from "./Weight"; +export * from "./Weight"; diff --git a/src/components/WeightRange/index.ts b/src/components/WeightRange/index.ts index b07752efe..a321e36f9 100644 --- a/src/components/WeightRange/index.ts +++ b/src/components/WeightRange/index.ts @@ -1,2 +1,2 @@ -export { default } from './WeightRange'; -export * from './WeightRange'; \ No newline at end of file +export { default } from "./WeightRange"; +export * from "./WeightRange"; diff --git a/src/configuration/ConfigurationPage.tsx b/src/configuration/ConfigurationPage.tsx index 62c2beeaa..ce6976363 100644 --- a/src/configuration/ConfigurationPage.tsx +++ b/src/configuration/ConfigurationPage.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { useIntl } from "react-intl"; @@ -31,62 +26,61 @@ export interface MenuSection { menuItems: MenuItem[]; } -const styles = (theme: Theme) => - createStyles({ - card: { - "&:hover": { - boxShadow: "0px 5px 15px rgba(0, 0, 0, 0.15);" - }, - cursor: "pointer", - marginBottom: theme.spacing.unit * 3, - transition: theme.transitions.duration.standard + "ms" +const useStyles = makeStyles(theme => ({ + card: { + "&:hover": { + boxShadow: "0px 5px 15px rgba(0, 0, 0, 0.15);" }, - cardContent: { - // Overrides Material-UI default theme - "&:last-child": { - paddingBottom: 16 - }, - display: "grid", - gridColumnGap: theme.spacing.unit * 4 + "px", - gridTemplateColumns: "48px 1fr" + cursor: "pointer", + marginBottom: theme.spacing(3), + transition: theme.transitions.duration.standard + "ms" + }, + cardContent: { + // Overrides Material-UI default theme + "&:last-child": { + paddingBottom: 16 }, - cardDisabled: { - "& $icon, & $sectionTitle, & $sectionDescription": { - color: theme.palette.text.disabled - }, - marginBottom: theme.spacing.unit * 3 + display: "grid", + gridColumnGap: theme.spacing(4), + gridTemplateColumns: "48px 1fr" + }, + cardDisabled: { + "& $icon, & $sectionTitle, & $sectionDescription": { + color: theme.palette.text.disabled }, - configurationCategory: { - [theme.breakpoints.down("md")]: { - gridTemplateColumns: "1fr" - }, - borderTop: `solid 1px ${theme.palette.divider}`, - display: "grid", - gridColumnGap: theme.spacing.unit * 4 + "px", - gridTemplateColumns: "1fr 3fr", - paddingTop: theme.spacing.unit * 3 + "px" + marginBottom: theme.spacing(3) + }, + configurationCategory: { + [theme.breakpoints.down("md")]: { + gridTemplateColumns: "1fr" }, - configurationItem: { - display: "grid", - gridColumnGap: theme.spacing.unit * 4 + "px", - gridTemplateColumns: "1fr 1fr" - }, - configurationLabel: { - paddingBottom: 20 - }, - header: { - margin: 0 - }, - icon: { - color: theme.palette.primary.main, - fontSize: 48 - }, - sectionDescription: {}, - sectionTitle: { - fontSize: 20, - fontWeight: 600 as 600 - } - }); + borderTop: `solid 1px ${theme.palette.divider}`, + display: "grid", + gridColumnGap: theme.spacing(4) + "px", + gridTemplateColumns: "1fr 3fr", + paddingTop: theme.spacing(3) + }, + configurationItem: { + display: "grid", + gridColumnGap: theme.spacing(4), + gridTemplateColumns: "1fr 1fr" + }, + configurationLabel: { + paddingBottom: 20 + }, + header: { + margin: 0 + }, + icon: { + color: theme.palette.primary.main, + fontSize: 48 + }, + sectionDescription: {}, + sectionTitle: { + fontSize: 20, + fontWeight: 600 as 600 + } +})); export interface ConfigurationPageProps { menu: MenuSection[]; @@ -94,64 +88,58 @@ export interface ConfigurationPageProps { onSectionClick: (sectionName: string) => void; } -export const ConfigurationPage = withStyles(styles, { - name: "ConfigurationPage" -})( - ({ - classes, - menu: menus, - user, - onSectionClick - }: ConfigurationPageProps & WithStyles) => { - const intl = useIntl(); - return ( - - - {menus - .filter(menu => - menu.menuItems.some(menuItem => - hasPermission(menuItem.permission, user) - ) +export const ConfigurationPage: React.FC = props => { + const { menu: menus, user, onSectionClick } = props; + const classes = useStyles(props); + + const intl = useIntl(); + return ( + + + {menus + .filter(menu => + menu.menuItems.some(menuItem => + hasPermission(menuItem.permission, user) ) - .map((menu, menuIndex) => ( -
-
- {menu.label} -
-
- {menu.menuItems - .filter(menuItem => hasPermission(menuItem.permission, user)) - .map((item, itemIndex) => ( - onSectionClick(item.url)} - key={itemIndex} - > - -
{item.icon}
-
- - {item.title} - - - {item.description} - -
-
-
- ))} -
+ ) + .map((menu, menuIndex) => ( +
+
+ {menu.label}
- ))} - - ); - } -); +
+ {menu.menuItems + .filter(menuItem => hasPermission(menuItem.permission, user)) + .map((item, itemIndex) => ( + onSectionClick(item.url)} + key={itemIndex} + > + +
{item.icon}
+
+ + {item.title} + + + {item.description} + +
+
+
+ ))} +
+
+ ))} + + ); +}; ConfigurationPage.displayName = "ConfigurationPage"; export default ConfigurationPage; diff --git a/src/customers/components/CustomerAddress/CustomerAddress.tsx b/src/customers/components/CustomerAddress/CustomerAddress.tsx index cc3da80ab..eb16509a3 100644 --- a/src/customers/components/CustomerAddress/CustomerAddress.tsx +++ b/src/customers/components/CustomerAddress/CustomerAddress.tsx @@ -2,7 +2,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardActions from "@material-ui/core/CardActions"; import CardContent from "@material-ui/core/CardContent"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -25,7 +25,7 @@ export interface CustomerAddressProps { onSetAsDefault: (type: AddressTypeEnum) => void; } -const styles = createStyles({ +const useStyles = makeStyles({ actions: { flexDirection: "row" }, @@ -40,82 +40,82 @@ const styles = createStyles({ flexDirection: "column" } }); -const CustomerAddress = withStyles(styles, { name: "CustomerAddress" })( - ({ +const CustomerAddress: React.FC = props => { + const { address, - classes, disabled, isDefaultBillingAddress, isDefaultShippingAddress, onEdit, onRemove, onSetAsDefault - }: CustomerAddressProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - - {isDefaultBillingAddress && isDefaultShippingAddress - ? intl.formatMessage({ - defaultMessage: "Default Address" - }) - : isDefaultShippingAddress - ? intl.formatMessage({ - defaultMessage: "Default Shipping Address" - }) - : isDefaultBillingAddress - ? intl.formatMessage({ - defaultMessage: "Default Billing Address" - }) - : null} - - ) : ( - - ) - } - height="const" - toolbar={ - onSetAsDefault(AddressTypeEnum.SHIPPING) - }, - { - label: intl.formatMessage({ - defaultMessage: "Set as default billing address", - description: "button" - }), - onSelect: () => onSetAsDefault(AddressTypeEnum.BILLING) - } - ]} - /> - } - /> - - - -
- - - - -
-
- ); - } -); + const intl = useIntl(); + + return ( + + + {isDefaultBillingAddress && isDefaultShippingAddress + ? intl.formatMessage({ + defaultMessage: "Default Address" + }) + : isDefaultShippingAddress + ? intl.formatMessage({ + defaultMessage: "Default Shipping Address" + }) + : isDefaultBillingAddress + ? intl.formatMessage({ + defaultMessage: "Default Billing Address" + }) + : null} + + ) : ( + + ) + } + height="const" + toolbar={ + onSetAsDefault(AddressTypeEnum.SHIPPING) + }, + { + label: intl.formatMessage({ + defaultMessage: "Set as default billing address", + description: "button" + }), + onSelect: () => onSetAsDefault(AddressTypeEnum.BILLING) + } + ]} + /> + } + /> + + + +
+ + + + +
+
+ ); +}; CustomerAddress.displayName = "CustomerAddress"; export default CustomerAddress; diff --git a/src/customers/components/CustomerAddress/index.ts b/src/customers/components/CustomerAddress/index.ts index 937bf0048..6dc6dd7dc 100644 --- a/src/customers/components/CustomerAddress/index.ts +++ b/src/customers/components/CustomerAddress/index.ts @@ -1,2 +1,2 @@ -export { default } from './CustomerAddress'; -export * from './CustomerAddress'; \ No newline at end of file +export { default } from "./CustomerAddress"; +export * from "./CustomerAddress"; diff --git a/src/customers/components/CustomerAddressDialog/index.ts b/src/customers/components/CustomerAddressDialog/index.ts index a5f6e9973..4206dac00 100644 --- a/src/customers/components/CustomerAddressDialog/index.ts +++ b/src/customers/components/CustomerAddressDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './CustomerAddressDialog'; -export * from './CustomerAddressDialog'; \ No newline at end of file +export { default } from "./CustomerAddressDialog"; +export * from "./CustomerAddressDialog"; diff --git a/src/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx b/src/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx index 3c88b28e7..4ff11c32b 100644 --- a/src/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx +++ b/src/customers/components/CustomerAddressListPage/CustomerAddressListPage.tsx @@ -1,10 +1,5 @@ import Button from "@material-ui/core/Button"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; @@ -28,32 +23,30 @@ export interface CustomerAddressListPageProps { onSetAsDefault: (id: string, type: AddressTypeEnum) => void; } -const styles = (theme: Theme) => - createStyles({ - addButton: { - marginTop: theme.spacing.unit * 2 - }, - description: { - marginTop: theme.spacing.unit - }, - empty: { - margin: `${theme.spacing.unit * 13}px auto 0`, - textAlign: "center", - width: 600 - }, - root: { - columnGap: theme.spacing.unit * 3 + "px", - display: "grid", - gridTemplateColumns: "repeat(3, 1fr)", - rowGap: theme.spacing.unit * 3 + "px" - } - }); +const useStyles = makeStyles(theme => ({ + addButton: { + marginTop: theme.spacing(2) + }, + description: { + marginTop: theme.spacing(1) + }, + empty: { + margin: `${theme.spacing(13)}px auto 0`, + textAlign: "center", + width: 600 + }, + root: { + columnGap: theme.spacing(3), + display: "grid", + gridTemplateColumns: "repeat(3, 1fr)", + rowGap: theme.spacing(3) + } +})); -const CustomerAddressListPage = withStyles(styles, { - name: "CustomerAddressListPage" -})( - ({ - classes, +const CustomerAddressListPage: React.FC< + CustomerAddressListPageProps +> = props => { + const { customer, disabled, onAdd, @@ -61,95 +54,96 @@ const CustomerAddressListPage = withStyles(styles, { onEdit, onRemove, onSetAsDefault - }: CustomerAddressListPageProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - const isEmpty = maybe(() => customer.addresses.length) === 0; - const fullName = maybe( - () => [customer.firstName, customer.lastName].join(" "), - "..." - ); + const intl = useIntl(); - return ( - - - customer.addresses.length) === 0; + const fullName = maybe( + () => [customer.firstName, customer.lastName].join(" "), + "..." + ); + + return ( + + + + + {!isEmpty && ( + - - {!isEmpty && ( - + + + )} + {isEmpty ? ( +
+ + + + + + + +
+ ) : ( +
+ {renderCollection( + maybe(() => customer.addresses), + (address, addressNumber) => ( + customer.defaultBillingAddress.id) === + maybe(() => address.id) + } + isDefaultShippingAddress={ + maybe(() => customer.defaultShippingAddress.id) === + maybe(() => address.id) + } + onEdit={() => onEdit(address.id)} + onRemove={() => onRemove(address.id)} + onSetAsDefault={type => onSetAsDefault(address.id, type)} + key={maybe(() => address.id, "skeleton")} /> - - - )} - {isEmpty ? ( -
- - - - - - - -
- ) : ( -
- {renderCollection( - maybe(() => customer.addresses), - (address, addressNumber) => ( - customer.defaultBillingAddress.id) === - maybe(() => address.id) - } - isDefaultShippingAddress={ - maybe(() => customer.defaultShippingAddress.id) === - maybe(() => address.id) - } - onEdit={() => onEdit(address.id)} - onRemove={() => onRemove(address.id)} - onSetAsDefault={type => onSetAsDefault(address.id, type)} - key={maybe(() => address.id, "skeleton")} - /> - ) - )} -
- )} - - ); - } -); + ) + )} +
+ )} +
+ ); +}; CustomerAddressListPage.displayName = "CustomerAddressListPage"; export default CustomerAddressListPage; diff --git a/src/customers/components/CustomerAddressListPage/index.ts b/src/customers/components/CustomerAddressListPage/index.ts index a2fe444c5..6bf91f468 100644 --- a/src/customers/components/CustomerAddressListPage/index.ts +++ b/src/customers/components/CustomerAddressListPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './CustomerAddressListPage'; -export * from './CustomerAddressListPage'; \ No newline at end of file +export { default } from "./CustomerAddressListPage"; +export * from "./CustomerAddressListPage"; diff --git a/src/customers/components/CustomerAddresses/CustomerAddresses.tsx b/src/customers/components/CustomerAddresses/CustomerAddresses.tsx index e85beb683..c2e85983a 100644 --- a/src/customers/components/CustomerAddresses/CustomerAddresses.tsx +++ b/src/customers/components/CustomerAddresses/CustomerAddresses.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -18,105 +13,99 @@ import { buttonMessages } from "@saleor/intl"; import { maybe } from "../../../misc"; import { CustomerDetails_user } from "../../types/CustomerDetails"; -const styles = (theme: Theme) => - createStyles({ - label: { - fontWeight: 600, - marginBottom: theme.spacing.unit - } - }); +const useStyles = makeStyles(theme => ({ + label: { + fontWeight: 600, + marginBottom: theme.spacing(1) + } +})); -export interface CustomerAddressesProps extends WithStyles { +export interface CustomerAddressesProps { customer: CustomerDetails_user; disabled: boolean; onAddressManageClick: () => void; } -const CustomerAddresses = withStyles(styles, { name: "CustomerAddresses" })( - ({ - classes, - customer, - disabled, - onAddressManageClick - }: CustomerAddressesProps) => { - const intl = useIntl(); +const CustomerAddresses: React.FC = props => { + const { customer, disabled, onAddressManageClick } = props; + const classes = useStyles(props); - return ( - - - - - } - /> - {maybe(() => customer.defaultBillingAddress.id) !== - maybe(() => customer.defaultShippingAddress.id) ? ( - <> - {maybe(() => customer.defaultBillingAddress) !== null && ( - - - - - customer.defaultBillingAddress)} + const intl = useIntl(); + + return ( + + + + + } + /> + {maybe(() => customer.defaultBillingAddress.id) !== + maybe(() => customer.defaultShippingAddress.id) ? ( + <> + {maybe(() => customer.defaultBillingAddress) !== null && ( + + + - - )} - {maybe( - () => - customer.defaultBillingAddress && - customer.defaultShippingAddress - ) &&
} - {maybe(() => customer.defaultShippingAddress) && ( - - - - - customer.defaultShippingAddress)} - /> - - )} - - ) : maybe(() => customer.defaultBillingAddress) === null && - maybe(() => customer.defaultShippingAddress) === null ? ( - - - - - - ) : ( - - - + customer.defaultBillingAddress)} /> - - customer.defaultBillingAddress)} + + )} + {maybe( + () => + customer.defaultBillingAddress && customer.defaultShippingAddress + ) &&
} + {maybe(() => customer.defaultShippingAddress) && ( + + + + + customer.defaultShippingAddress)} + /> + + )} + + ) : maybe(() => customer.defaultBillingAddress) === null && + maybe(() => customer.defaultShippingAddress) === null ? ( + + + + + + ) : ( + + + - - )} -
- ); - } -); + + customer.defaultBillingAddress)} + /> +
+ )} +
+ ); +}; CustomerAddresses.displayName = "CustomerAddresses"; export default CustomerAddresses; diff --git a/src/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx b/src/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx index efc42590a..9e43094cc 100644 --- a/src/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx +++ b/src/customers/components/CustomerCreateAddress/CustomerCreateAddress.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { createStyles, WithStyles, withStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -12,13 +12,13 @@ import { SingleAutocompleteChoiceType } from "@saleor/components/SingleAutocompl import { FormErrors } from "../../../types"; import { AddressTypeInput } from "../../types"; -const styles = createStyles({ +const useStyles = makeStyles({ overflow: { overflow: "visible" } }); -export interface CustomerCreateAddressProps extends WithStyles { +export interface CustomerCreateAddressProps { countries: SingleAutocompleteChoiceType[]; countryDisplayName: string; data: AddressTypeInput; @@ -28,11 +28,8 @@ export interface CustomerCreateAddressProps extends WithStyles { onCountryChange(event: React.ChangeEvent); } -const CustomerCreateAddress = withStyles(styles, { - name: "CustomerCreateAddress" -})( - ({ - classes, +const CustomerCreateAddress: React.FC = props => { + const { countries, countryDisplayName, data, @@ -40,35 +37,36 @@ const CustomerCreateAddress = withStyles(styles, { errors, onChange, onCountryChange - }: CustomerCreateAddressProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - + + + + + + + - - - - - - - - - ); - } -); + + + ); +}; CustomerCreateAddress.displayName = "CustomerCreateAddress"; export default CustomerCreateAddress; diff --git a/src/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx b/src/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx index f5220669f..fa3c16910 100644 --- a/src/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx +++ b/src/customers/components/CustomerCreateDetails/CustomerCreateDetails.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; @@ -15,83 +10,75 @@ import { commonMessages } from "@saleor/intl"; import { FormErrors } from "../../../types"; import { CustomerCreatePageFormData } from "../CustomerCreatePage"; -const styles = (theme: Theme) => - createStyles({ - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridRowGap: theme.spacing.unit * 3 + "px", - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridRowGap: theme.spacing(3), + gridTemplateColumns: "1fr 1fr" + } +})); -export interface CustomerCreateDetailsProps extends WithStyles { +export interface CustomerCreateDetailsProps { data: CustomerCreatePageFormData; disabled: boolean; errors: FormErrors<"customerFirstName" | "customerLastName" | "email">; onChange: (event: React.ChangeEvent) => void; } -const CustomerCreateDetails = withStyles(styles, { - name: "CustomerCreateDetails" -})( - ({ - classes, - data, - disabled, - errors, - onChange - }: CustomerCreateDetailsProps) => { - const intl = useIntl(); +const CustomerCreateDetails: React.FC = props => { + const { data, disabled, errors, onChange } = props; + const classes = useStyles(props); - return ( - - - -
- - - -
-
-
- ); - } -); + const intl = useIntl(); + + return ( + + + +
+ + + +
+
+
+ ); +}; CustomerCreateDetails.displayName = "CustomerCreateDetails"; export default CustomerCreateDetails; diff --git a/src/customers/components/CustomerDetails/CustomerDetails.tsx b/src/customers/components/CustomerDetails/CustomerDetails.tsx index 47fd970d1..5496ed387 100644 --- a/src/customers/components/CustomerDetails/CustomerDetails.tsx +++ b/src/customers/components/CustomerDetails/CustomerDetails.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import moment from "moment-timezone"; @@ -19,20 +14,19 @@ import Skeleton from "@saleor/components/Skeleton"; import { commonMessages } from "@saleor/intl"; import { CustomerDetails_user } from "../../types/CustomerDetails"; -const styles = (theme: Theme) => - createStyles({ - cardTitle: { - height: 64 - }, - root: { - display: "grid" as "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridRowGap: theme.spacing.unit * 3 + "px", - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + cardTitle: { + height: 64 + }, + root: { + display: "grid" as "grid", + gridColumnGap: theme.spacing(2), + gridRowGap: theme.spacing(3), + gridTemplateColumns: "1fr 1fr" + } +})); -export interface CustomerDetailsProps extends WithStyles { +export interface CustomerDetailsProps { customer: CustomerDetails_user; data: { firstName: string; @@ -51,107 +45,101 @@ export interface CustomerDetailsProps extends WithStyles { onChange: (event: React.ChangeEvent) => void; } -const CustomerDetails = withStyles(styles, { name: "CustomerDetails" })( - ({ - classes, - customer, - data, - disabled, - errors, - onChange - }: CustomerDetailsProps) => { - const intl = useIntl(); +const CustomerDetails: React.FC = props => { + const { customer, data, disabled, errors, onChange } = props; + const classes = useStyles(props); - return ( - - - - {customer && customer.dateJoined ? ( - - - - ) : ( - - )} - - } + const intl = useIntl(); + + return ( + + + + {customer && customer.dateJoined ? ( + + + + ) : ( + + )} + + } + /> + + - - - -
- - -
- + +
- - - - ); - } -); +
+ + + + +
+
+ ); +}; CustomerDetails.displayName = "CustomerDetails"; export default CustomerDetails; diff --git a/src/customers/components/CustomerList/CustomerList.tsx b/src/customers/components/CustomerList/CustomerList.tsx index c3c886440..6452f48b1 100644 --- a/src/customers/components/CustomerList/CustomerList.tsx +++ b/src/customers/components/CustomerList/CustomerList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -20,39 +15,34 @@ import { getUserName, maybe, renderCollection } from "@saleor/misc"; import { ListActions, ListProps } from "@saleor/types"; import { ListCustomers_customers_edges_node } from "../../types/ListCustomers"; -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colEmail: {}, - colName: {}, - colOrders: { - width: 200 - } - }, +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { colEmail: {}, - colName: { - paddingLeft: 0 - }, + colName: {}, colOrders: { - textAlign: "center" - }, - tableRow: { - cursor: "pointer" + width: 200 } - }); + }, + colEmail: {}, + colName: { + paddingLeft: 0 + }, + colOrders: { + textAlign: "center" + }, + tableRow: { + cursor: "pointer" + } +})); -export interface CustomerListProps - extends ListProps, - ListActions, - WithStyles { +export interface CustomerListProps extends ListProps, ListActions { customers: ListCustomers_customers_edges_node[]; } const numberOfColumns = 4; -const CustomerList = withStyles(styles, { name: "CustomerList" })( - ({ - classes, +const CustomerList: React.FC = props => { + const { settings, disabled, customers, @@ -66,7 +56,11 @@ const CustomerList = withStyles(styles, { name: "CustomerList" })( toggleAll, selected, isChecked - }: CustomerListProps) => ( + } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; CustomerList.displayName = "CustomerList"; export default CustomerList; diff --git a/src/customers/components/CustomerOrders/CustomerOrders.tsx b/src/customers/components/CustomerOrders/CustomerOrders.tsx index 61a8cb392..254d17e88 100644 --- a/src/customers/components/CustomerOrders/CustomerOrders.tsx +++ b/src/customers/components/CustomerOrders/CustomerOrders.tsx @@ -1,6 +1,6 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -17,7 +17,7 @@ import StatusLabel from "@saleor/components/StatusLabel"; import { maybe, renderCollection, transformPaymentStatus } from "../../../misc"; import { CustomerDetails_user_orders_edges_node } from "../../types/CustomerDetails"; -const styles = createStyles({ +const useStyles = makeStyles({ link: { cursor: "pointer" }, @@ -26,134 +26,127 @@ const styles = createStyles({ } }); -export interface CustomerOrdersProps extends WithStyles { +export interface CustomerOrdersProps { orders: CustomerDetails_user_orders_edges_node[]; onViewAllOrdersClick: () => void; onRowClick: (id: string) => void; } -const CustomerOrders = withStyles(styles, { name: "CustomerOrders" })( - ({ - classes, - orders, - onRowClick, - onViewAllOrdersClick - }: CustomerOrdersProps) => { - const intl = useIntl(); +const CustomerOrders: React.FC = props => { + const { orders, onRowClick, onViewAllOrdersClick } = props; + const classes = useStyles(props); - const orderList = orders - ? orders.map(order => ({ - ...order, - paymentStatus: transformPaymentStatus(order.paymentStatus, intl) - })) - : undefined; - return ( - - + const intl = useIntl(); + + const orderList = orders + ? orders.map(order => ({ + ...order, + paymentStatus: transformPaymentStatus(order.paymentStatus, intl) + })) + : undefined; + return ( + + + + + } + /> + + + + - - } - /> -
- - - - - - - - - - - - - - - - - - {renderCollection( - orderList, - order => ( - onRowClick(order.id) : undefined} - key={order ? order.id : "skeleton"} - > - - {maybe(() => order.number) ? ( - "#" + order.number - ) : ( - - )} - - - {maybe(() => order.created) ? ( - - ) : ( - - )} - - - {maybe(() => order.paymentStatus.status) !== undefined ? ( - order.paymentStatus.status === null ? null : ( - - ) - ) : ( - - )} - - - {maybe(() => order.total.gross) ? ( - - ) : ( - - )} - - - ), - () => ( - - - - - - ) - )} - -
-
- ); - } -); + + + + + + + + + + + + + + {renderCollection( + orderList, + order => ( + onRowClick(order.id) : undefined} + key={order ? order.id : "skeleton"} + > + + {maybe(() => order.number) ? ( + "#" + order.number + ) : ( + + )} + + + {maybe(() => order.created) ? ( + + ) : ( + + )} + + + {maybe(() => order.paymentStatus.status) !== undefined ? ( + order.paymentStatus.status === null ? null : ( + + ) + ) : ( + + )} + + + {maybe(() => order.total.gross) ? ( + + ) : ( + + )} + + + ), + () => ( + + + + + + ) + )} + + +
+ ); +}; + CustomerOrders.displayName = "CustomerOrders"; export default CustomerOrders; diff --git a/src/customers/components/CustomerStats/CustomerStats.tsx b/src/customers/components/CustomerStats/CustomerStats.tsx index 3cdfdd5b3..f751782ce 100644 --- a/src/customers/components/CustomerStats/CustomerStats.tsx +++ b/src/customers/components/CustomerStats/CustomerStats.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -17,75 +12,72 @@ import Skeleton from "@saleor/components/Skeleton"; import { maybe } from "../../../misc"; import { CustomerDetails_user } from "../../types/CustomerDetails"; -const styles = (theme: Theme) => - createStyles({ - label: { - marginBottom: theme.spacing.unit - }, - value: { - fontSize: 24 - } - }); +const useStyles = makeStyles(theme => ({ + label: { + marginBottom: theme.spacing(1) + }, + value: { + fontSize: 24 + } +})); -export interface CustomerStatsProps extends WithStyles { +export interface CustomerStatsProps { customer: CustomerDetails_user; } -const CustomerStats = withStyles(styles, { name: "CustomerStats" })( - ({ classes, customer }: CustomerStatsProps) => { - const intl = useIntl(); +const CustomerStats: React.FC = props => { + const { customer } = props; + const classes = useStyles(props); - return ( - - - - - - - {maybe( - () => ( - - {customer.lastLogin === null ? ( - "-" - ) : ( - - )} - - ), - - )} - -
- - - - - {maybe( - () => ( - - {customer.lastPlacedOrder.edges.length === 0 ? ( - "-" - ) : ( - - )} - - ), - - )} - -
- ); - } -); + const intl = useIntl(); + + return ( + + + + + + + {maybe( + () => ( + + {customer.lastLogin === null ? ( + "-" + ) : ( + + )} + + ), + + )} + +
+ + + + + {maybe( + () => ( + + {customer.lastPlacedOrder.edges.length === 0 ? ( + "-" + ) : ( + + )} + + ), + + )} + +
+ ); +}; CustomerStats.displayName = "CustomerStats"; export default CustomerStats; diff --git a/src/customers/views/CustomerDetails.tsx b/src/customers/views/CustomerDetails.tsx index e0154a9d0..d7da1b0a0 100644 --- a/src/customers/views/CustomerDetails.tsx +++ b/src/customers/views/CustomerDetails.tsx @@ -85,7 +85,7 @@ export const CustomerDetailsView: React.FC = ({ title={maybe(() => customerDetails.data.user.email)} /> customerDetails.data.user)} disabled={ customerDetails.loading || updateCustomerOpts.loading || diff --git a/src/customers/views/CustomerList/CustomerList.tsx b/src/customers/views/CustomerList/CustomerList.tsx index 88daaf791..e190dd121 100644 --- a/src/customers/views/CustomerList/CustomerList.tsx +++ b/src/customers/views/CustomerList/CustomerList.tsx @@ -220,10 +220,7 @@ export const CustomerList: React.FC = ({ params }) => { > params.ids.length), displayQuantity: ( diff --git a/src/discounts/components/DiscountCategories/DiscountCategories.tsx b/src/discounts/components/DiscountCategories/DiscountCategories.tsx index 70eaa1cd9..c7e60843a 100644 --- a/src/discounts/components/DiscountCategories/DiscountCategories.tsx +++ b/src/discounts/components/DiscountCategories/DiscountCategories.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -32,33 +27,30 @@ export interface DiscountCategoriesProps extends ListProps, ListActions { onCategoryUnassign: (id: string) => void; } -const styles = (theme: Theme) => - createStyles({ - iconCell: { - "&:last-child": { - paddingRight: 0 - }, - width: 48 + theme.spacing.unit / 2 +const useStyles = makeStyles(theme => ({ + iconCell: { + "&:last-child": { + paddingRight: 0 }, - tableRow: { - cursor: "pointer" - }, - textRight: { - textAlign: "right" - }, - wideColumn: { - width: "60%" - } - }); + width: 48 + theme.spacing(0.5) + }, + tableRow: { + cursor: "pointer" + }, + textRight: { + textAlign: "right" + }, + wideColumn: { + width: "60%" + } +})); const numberOfColumns = 4; -const DiscountCategories = withStyles(styles, { - name: "DiscountCategories" -})( - ({ +const DiscountCategories: React.FC = props => { + const { discount: sale, - classes, + disabled, pageInfo, onCategoryAssign, @@ -71,123 +63,119 @@ const DiscountCategories = withStyles(styles, { toggleAll, selected, isChecked - }: DiscountCategoriesProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - + const intl = useIntl(); + + return ( + + + + + } + /> + + sale.categories.edges.map(edge => edge.node))} + toggleAll={toggleAll} + toolbar={toolbar} + > + <> + + + + - - } - /> -
- sale.categories.edges.map(edge => edge.node))} - toggleAll={toggleAll} - toolbar={toolbar} - > - <> - - - - - - - - - - - - - - - - {renderCollection( - maybe(() => sale.categories.edges.map(edge => edge.node)), - category => { - const isSelected = category ? isChecked(category.id) : false; + + + + + + + + + + + {renderCollection( + maybe(() => sale.categories.edges.map(edge => edge.node)), + category => { + const isSelected = category ? isChecked(category.id) : false; - return ( - - - toggle(category.id)} - /> - - - {maybe( - () => category.name, - - )} - - - {maybe( - () => category.products.totalCount, - - )} - - - { - event.stopPropagation(); - onCategoryUnassign(category.id); - }} - > - - - - - ); - }, - () => ( - - - + return ( + + + toggle(category.id)} + /> + + + {maybe(() => category.name, )} + + + {maybe( + () => category.products.totalCount, + + )} + + + { + event.stopPropagation(); + onCategoryUnassign(category.id); + }} + > + + - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + +
+ ); +}; DiscountCategories.displayName = "DiscountCategories"; export default DiscountCategories; diff --git a/src/discounts/components/DiscountCollections/DiscountCollections.tsx b/src/discounts/components/DiscountCollections/DiscountCollections.tsx index 196b5eefa..b903b2cee 100644 --- a/src/discounts/components/DiscountCollections/DiscountCollections.tsx +++ b/src/discounts/components/DiscountCollections/DiscountCollections.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -32,33 +27,30 @@ export interface DiscountCollectionsProps extends ListProps, ListActions { onCollectionUnassign: (id: string) => void; } -const styles = (theme: Theme) => - createStyles({ - iconCell: { - "&:last-child": { - paddingRight: 0 - }, - width: 48 + theme.spacing.unit / 2 +const useStyles = makeStyles(theme => ({ + iconCell: { + "&:last-child": { + paddingRight: 0 }, - tableRow: { - cursor: "pointer" - }, - textRight: { - textAlign: "right" - }, - wideColumn: { - width: "60%" - } - }); + width: 48 + theme.spacing(0.5) + }, + tableRow: { + cursor: "pointer" + }, + textRight: { + textAlign: "right" + }, + wideColumn: { + width: "60%" + } +})); const numberOfColumns = 4; -const DiscountCollections = withStyles(styles, { - name: "DiscountCollections" -})( - ({ +const DiscountCollections: React.FC = props => { + const { discount: sale, - classes, + disabled, pageInfo, onCollectionAssign, @@ -71,122 +63,119 @@ const DiscountCollections = withStyles(styles, { toggle, toggleAll, toolbar - }: DiscountCollectionsProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - - - - } - /> - - sale.collections.edges.map(edge => edge.node))} - toggleAll={toggleAll} - toolbar={toolbar} - > - - - - - - - - - - - - - - - {renderCollection( - maybe(() => sale.collections.edges.map(edge => edge.node)), - collection => { - const isSelected = collection - ? isChecked(collection.id) - : false; - return ( - - - toggle(collection.id)} - /> - - - {maybe( - () => collection.name, - - )} - - - {maybe( - () => collection.products.totalCount, - - )} - - - { - event.stopPropagation(); - onCollectionUnassign(collection.id); - }} - > - - - - - ); - }, - () => ( - - - + const intl = useIntl(); + + return ( + + + + + } + /> +
+ sale.collections.edges.map(edge => edge.node))} + toggleAll={toggleAll} + toolbar={toolbar} + > + + + + + + + + + + + + + + + {renderCollection( + maybe(() => sale.collections.edges.map(edge => edge.node)), + collection => { + const isSelected = collection ? isChecked(collection.id) : false; + return ( + + + toggle(collection.id)} + /> + + + {maybe( + () => collection.name, + + )} + + + {maybe( + () => collection.products.totalCount, + + )} + + + { + event.stopPropagation(); + onCollectionUnassign(collection.id); + }} + > + + - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + +
+ ); +}; DiscountCollections.displayName = "DiscountCollections"; export default DiscountCollections; diff --git a/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx b/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx index 645924c05..5a865c866 100644 --- a/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx +++ b/src/discounts/components/DiscountCountrySelectDialog/DiscountCountrySelectDialog.tsx @@ -3,12 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -45,158 +40,154 @@ export interface DiscountCountrySelectDialogProps { onConfirm: (data: FormData) => void; } -const styles = (theme: Theme) => - createStyles({ - checkboxCell: { - paddingLeft: 0 - }, - container: { - maxHeight: 500 - }, - heading: { - marginBottom: theme.spacing.unit * 2, - marginTop: theme.spacing.unit * 2 - }, - wideCell: { - width: "100%" - } - }); -const DiscountCountrySelectDialog = withStyles(styles, { - name: "DiscountCountrySelectDialog" -})( - ({ - classes, +const useStyles = makeStyles(theme => ({ + checkboxCell: { + paddingLeft: 0 + }, + container: { + maxHeight: 500 + }, + heading: { + marginBottom: theme.spacing(2), + marginTop: theme.spacing(2) + }, + wideCell: { + width: "100%" + } +})); +const DiscountCountrySelectDialog: React.FC< + DiscountCountrySelectDialogProps +> = props => { + const { confirmButtonState, onClose, countries, open, initial, onConfirm - }: DiscountCountrySelectDialogProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - const initialForm: FormData = { - allCountries: true, - countries: initial, - query: "" - }; - return ( - -
- {({ data, change }) => { - const countrySelectionMap = countries.reduce((acc, country) => { - acc[country.code] = !!data.countries.find( - selectedCountries => selectedCountries === country.code - ); - return acc; - }, {}); + const intl = useIntl(); - return ( - <> - - - - - - - - - change(event, () => fetch(data.query))} - label={intl.formatMessage({ - defaultMessage: "Filter Countries", - description: "search box label" - })} - placeholder={intl.formatMessage({ - defaultMessage: "Search by country name", - description: "search box placeholder" - })} - fullWidth - /> - -
- - - - - - - {filter(countries, data.query, { - key: "country" - }).map(country => { - const isChecked = countrySelectionMap[country.code]; - - return ( - - - {country.country} - - - - isChecked - ? change({ - target: { - name: "countries" as keyof FormData, - value: data.countries.filter( - selectedCountries => - selectedCountries !== country.code - ) - } - } as any) - : change({ - target: { - name: "countries" as keyof FormData, - value: [ - ...data.countries, - country.code - ] - } - } as any) - } - /> - - - ); - })} - -
-
- - - - - - - + const initialForm: FormData = { + allCountries: true, + countries: initial, + query: "" + }; + return ( + + + {({ data, change }) => { + const countrySelectionMap = countries.reduce((acc, country) => { + acc[country.code] = !!data.countries.find( + selectedCountries => selectedCountries === country.code ); - }} - -
- ); - } -); + return acc; + }, {}); + + return ( + <> + + + + + + + + + change(event, () => fetch(data.query))} + label={intl.formatMessage({ + defaultMessage: "Filter Countries", + description: "search box label" + })} + placeholder={intl.formatMessage({ + defaultMessage: "Search by country name", + description: "search box placeholder" + })} + fullWidth + /> + +
+ + + + + + + {filter(countries, data.query, { + key: "country" + }).map(country => { + const isChecked = countrySelectionMap[country.code]; + + return ( + + + {country.country} + + + + isChecked + ? change({ + target: { + name: "countries" as keyof FormData, + value: data.countries.filter( + selectedCountries => + selectedCountries !== country.code + ) + } + } as any) + : change({ + target: { + name: "countries" as keyof FormData, + value: [...data.countries, country.code] + } + } as any) + } + /> + + + ); + })} + +
+
+ + + + + + + + ); + }} + +
+ ); +}; DiscountCountrySelectDialog.displayName = "DiscountCountrySelectDialog"; export default DiscountCountrySelectDialog; diff --git a/src/discounts/components/DiscountCountrySelectDialog/index.ts b/src/discounts/components/DiscountCountrySelectDialog/index.ts index cbbee8a48..c76469875 100644 --- a/src/discounts/components/DiscountCountrySelectDialog/index.ts +++ b/src/discounts/components/DiscountCountrySelectDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './DiscountCountrySelectDialog'; -export * from './DiscountCountrySelectDialog'; \ No newline at end of file +export { default } from "./DiscountCountrySelectDialog"; +export * from "./DiscountCountrySelectDialog"; diff --git a/src/discounts/components/DiscountProducts/DiscountProducts.tsx b/src/discounts/components/DiscountProducts/DiscountProducts.tsx index bb3ec90e2..a2436d017 100644 --- a/src/discounts/components/DiscountProducts/DiscountProducts.tsx +++ b/src/discounts/components/DiscountProducts/DiscountProducts.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -36,43 +31,40 @@ export interface SaleProductsProps extends ListProps, ListActions { onProductUnassign: (id: string) => void; } -const styles = (theme: Theme) => - createStyles({ - colActions: { - "&:last-child": { - paddingRight: 0 - }, - width: 76 + theme.spacing.unit / 2 +const useStyles = makeStyles(theme => ({ + colActions: { + "&:last-child": { + paddingRight: 0 }, - colName: { - paddingLeft: 0, - width: "auto" - }, - colNameLabel: { - marginLeft: AVATAR_MARGIN - }, - colPublished: { - width: 150 - }, - colType: { - width: 200 - }, - table: { - tableLayout: "fixed" - }, - tableRow: { - cursor: "pointer" - } - }); + width: 76 + theme.spacing(0.5) + }, + colName: { + paddingLeft: 0, + width: "auto" + }, + colNameLabel: { + marginLeft: AVATAR_MARGIN + }, + colPublished: { + width: 150 + }, + colType: { + width: 200 + }, + table: { + tableLayout: "fixed" + }, + tableRow: { + cursor: "pointer" + } +})); const numberOfColumns = 5; -const DiscountProducts = withStyles(styles, { - name: "DiscountProducts" -})( - ({ +const DiscountProducts: React.FC = props => { + const { discount: sale, - classes, + disabled, pageInfo, onRowClick, @@ -85,145 +77,144 @@ const DiscountProducts = withStyles(styles, { toggle, toggleAll, toolbar - }: SaleProductsProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - - - - } - /> - - sale.products.edges.map(edge => edge.node))} - toggleAll={toggleAll} - toolbar={toolbar} - > - - - - - - - - - - - - - - - - - - - - {renderCollection( - maybe(() => sale.products.edges.map(edge => edge.node)), - product => { - const isSelected = product ? isChecked(product.id) : false; - return ( - + + + + } + /> +
+ sale.products.edges.map(edge => edge.node))} + toggleAll={toggleAll} + toolbar={toolbar} + > + + + + + + + + + + + + + + + + + + + + {renderCollection( + maybe(() => sale.products.edges.map(edge => edge.node)), + product => { + const isSelected = product ? isChecked(product.id) : false; + return ( + + + toggle(product.id)} + /> + + product.thumbnail.url)} > - - toggle(product.id)} + {maybe(() => product.name, )} + + + {maybe( + () => product.productType.name, + + )} + + + {product && product.isPublished !== undefined ? ( + - - product.thumbnail.url)} + ) : ( + + )} + + + { + event.stopPropagation(); + onProductUnassign(product.id); + }} > - {maybe(() => product.name, )} - - - {maybe( - () => product.productType.name, - - )} - - - {product && product.isPublished !== undefined ? ( - - ) : ( - - )} - - - { - event.stopPropagation(); - onProductUnassign(product.id); - }} - > - - - - - ); - }, - () => ( - - - + + - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + + + ); +}; DiscountProducts.displayName = "DiscountProducts"; export default DiscountProducts; diff --git a/src/discounts/components/SaleList/SaleList.tsx b/src/discounts/components/SaleList/SaleList.tsx index 0573355c8..5cdcedae1 100644 --- a/src/discounts/components/SaleList/SaleList.tsx +++ b/src/discounts/components/SaleList/SaleList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - WithStyles, - withStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -29,44 +24,40 @@ export interface SaleListProps extends ListProps, ListActions { sales: SaleList_sales_edges_node[]; } -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colEnd: { - width: 250 - }, - colName: {}, - colStart: { - width: 250 - }, - colValue: { - width: 200 - } - }, +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { colEnd: { - textAlign: "right" - }, - colName: { - paddingLeft: 0 + width: 250 }, + colName: {}, colStart: { - textAlign: "right" + width: 250 }, colValue: { - textAlign: "right" - }, - tableRow: { - cursor: "pointer" + width: 200 } - }); + }, + colEnd: { + textAlign: "right" + }, + colName: { + paddingLeft: 0 + }, + colStart: { + textAlign: "right" + }, + colValue: { + textAlign: "right" + }, + tableRow: { + cursor: "pointer" + } +})); const numberOfColumns = 5; -const SaleList = withStyles(styles, { - name: "SaleList" -})( - ({ - classes, +const SaleList: React.FC = props => { + const { settings, defaultCurrency, disabled, @@ -81,7 +72,11 @@ const SaleList = withStyles(styles, { toggle, toggleAll, toolbar - }: SaleListProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; SaleList.displayName = "SaleList"; export default SaleList; diff --git a/src/discounts/components/SaleType/SaleType.tsx b/src/discounts/components/SaleType/SaleType.tsx index 8a977f8b1..333db8ef7 100644 --- a/src/discounts/components/SaleType/SaleType.tsx +++ b/src/discounts/components/SaleType/SaleType.tsx @@ -1,7 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { Theme } from "@material-ui/core/styles"; -import { makeStyles } from "@material-ui/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { IntlShape, useIntl } from "react-intl"; @@ -20,10 +19,10 @@ export interface SaleTypeProps { } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ root: { "&&": { - paddingBottom: theme.spacing.unit * 1.5 + paddingBottom: theme.spacing(1.5) } } }), diff --git a/src/discounts/components/VoucherCreatePage/index.ts b/src/discounts/components/VoucherCreatePage/index.ts index b38cb8083..b8c177c64 100644 --- a/src/discounts/components/VoucherCreatePage/index.ts +++ b/src/discounts/components/VoucherCreatePage/index.ts @@ -1,2 +1,2 @@ -export { default } from './VoucherCreatePage'; -export * from './VoucherCreatePage'; \ No newline at end of file +export { default } from "./VoucherCreatePage"; +export * from "./VoucherCreatePage"; diff --git a/src/discounts/components/VoucherList/VoucherList.tsx b/src/discounts/components/VoucherList/VoucherList.tsx index 4107c2794..9ed3c1974 100644 --- a/src/discounts/components/VoucherList/VoucherList.tsx +++ b/src/discounts/components/VoucherList/VoucherList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - WithStyles, - withStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -29,59 +24,55 @@ export interface VoucherListProps extends ListProps, ListActions { vouchers: VoucherList_vouchers_edges_node[]; } -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colEnd: { - width: 180 - }, - colMinSpent: { - width: 150 - }, - colName: {}, - colStart: { - width: 180 - }, - colUses: { - width: 150 - }, - colValue: { - width: 150 - } - }, +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { colEnd: { - textAlign: "right" + width: 180 }, colMinSpent: { - textAlign: "right" - }, - colName: { - paddingLeft: 0 + width: 150 }, + colName: {}, colStart: { - textAlign: "right" + width: 180 }, colUses: { - textAlign: "right" + width: 150 }, colValue: { - textAlign: "right" - }, - tableRow: { - cursor: "pointer" - }, - textRight: { - textAlign: "right" + width: 150 } - }); + }, + colEnd: { + textAlign: "right" + }, + colMinSpent: { + textAlign: "right" + }, + colName: { + paddingLeft: 0 + }, + colStart: { + textAlign: "right" + }, + colUses: { + textAlign: "right" + }, + colValue: { + textAlign: "right" + }, + tableRow: { + cursor: "pointer" + }, + textRight: { + textAlign: "right" + } +})); const numberOfColumns = 7; -const VoucherList = withStyles(styles, { - name: "VoucherList" -})( - ({ - classes, +const VoucherList: React.FC = props => { + const { settings, defaultCurrency, disabled, @@ -96,7 +87,11 @@ const VoucherList = withStyles(styles, { toggle, toggleAll, toolbar - }: VoucherListProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; VoucherList.displayName = "VoucherList"; export default VoucherList; diff --git a/src/discounts/components/VoucherValue/VoucherValue.tsx b/src/discounts/components/VoucherValue/VoucherValue.tsx index da47235df..b1aecdba2 100644 --- a/src/discounts/components/VoucherValue/VoucherValue.tsx +++ b/src/discounts/components/VoucherValue/VoucherValue.tsx @@ -1,8 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -32,9 +31,9 @@ export enum VoucherType { } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ hr: { - margin: `${theme.spacing.unit * 2}px 0` + margin: theme.spacing(2, 0) } }), { diff --git a/src/discounts/views/SaleDetails.tsx b/src/discounts/views/SaleDetails.tsx index aac84bbf6..987c2557d 100644 --- a/src/discounts/views/SaleDetails.tsx +++ b/src/discounts/views/SaleDetails.tsx @@ -469,10 +469,7 @@ export const SaleDetails: React.FC = ({ id, params }) => { {canOpenBulkActionDialog && ( = ({ id, params }) => { {canOpenBulkActionDialog && ( = ({ id, params }) => { {canOpenBulkActionDialog && ( = ({ params }) => { {canOpenBulkActionDialog && ( = ({ {canOpenBulkActionDialog && ( = ({ {canOpenBulkActionDialog && ( = ({ {canOpenBulkActionDialog && ( = ({ params }) => { {canOpenBulkActionDialog && ( { +interface HomeActivityCardProps { activities: Home_activities_edges_node[]; } -const HomeActivityCard = withStyles(styles, { name: "HomeActivityCard" })( - ({ classes, activities }: HomeActivityCardProps) => { - const intl = useIntl(); +const HomeActivityCard: React.FC = props => { + const { activities } = props; + const classes = useStyles(props); - return ( - - - - {renderCollection( - activities, - (activity, activityId) => ( - - {activity ? ( - - {getActivityMessage(activity, intl)} - - } - secondary={} - /> - ) : ( - - - - - - )} - - ), - () => ( - + const intl = useIntl(); + + return ( + + + + {renderCollection( + activities, + (activity, activityId) => ( + + {activity ? ( - + {getActivityMessage(activity, intl)} } + secondary={} /> - - ) - )} - - - ); - } -); + ) : ( + + + + + + )} + + ), + () => ( + + + + + } + /> + + ) + )} + + + ); +}; HomeActivityCard.displayName = "HomeActivityCard"; export default HomeActivityCard; diff --git a/src/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx b/src/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx index a44b61b3e..be53ce9e1 100644 --- a/src/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx +++ b/src/home/components/HomeAnalyticsCard/HomeAnalyticsCard.tsx @@ -1,68 +1,66 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { IconProps } from "@material-ui/core/Icon"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage } from "react-intl"; -const styles = (theme: Theme) => - createStyles({ - cardContent: { - "&:last-child": { - padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px` - }, - display: "grid", - gridColumnGap: theme.spacing.unit * 3 + "px", - gridTemplateColumns: "1fr 64px" +const useStyles = makeStyles(theme => ({ + cardContent: { + "&:last-child": { + padding: theme.spacing(2, 3) }, - cardSpacing: { - [theme.breakpoints.down("sm")]: { - marginBottom: theme.spacing.unit - }, - marginBottom: theme.spacing.unit * 3 + display: "grid", + gridColumnGap: theme.spacing(3), + gridTemplateColumns: "1fr 64px" + }, + cardSpacing: { + [theme.breakpoints.down("sm")]: { + marginBottom: theme.spacing(1) }, - cardSubtitle: { - fontSize: 12, - height: "20px", - lineHeight: 0.9 - }, - cardTitle: { - fontSize: 20, - fontWeight: 500 as 500 - }, - icon: { - color: theme.palette.primary.contrastText, - fontSize: 54, - margin: ".5rem .3rem" - }, - iconBackground: { - backgroundColor: theme.palette.background.default, - borderRadius: "8px", - color: "white", - fontSize: "54px", - height: "100%", - padding: "10px 5px 0px 5px", - width: "100%" - }, - value: { - textAlign: "right" - } - }); + marginBottom: theme.spacing(3) + }, + cardSubtitle: { + fontSize: 12, + height: "20px", + lineHeight: 0.9 + }, + cardTitle: { + fontSize: 20, + fontWeight: 500 as 500 + }, + icon: { + color: theme.palette.primary.contrastText, + fontSize: 54, + margin: ".5rem .3rem" + }, + iconBackground: { + backgroundColor: theme.palette.background.default, + borderRadius: "8px", + color: "white", + fontSize: "54px", + height: "100%", + padding: "10px 5px 0px 5px", + width: "100%" + }, + value: { + textAlign: "right" + } +})); -interface HomeAnalyticsCardProps extends WithStyles { +interface HomeAnalyticsCardProps { icon: React.ReactElement; title: string; children?: React.ReactNode; } -const HomeAnalyticsCard = withStyles(styles, { name: "HomeAnalyticsCard" })( - ({ children, classes, title, icon }: HomeAnalyticsCardProps) => ( +const HomeAnalyticsCard: React.FC = props => { + const { children, title, icon } = props; + + const classes = useStyles(props); + + return (
@@ -90,7 +88,7 @@ const HomeAnalyticsCard = withStyles(styles, { name: "HomeAnalyticsCard" })(
{icon}
- ) -); + ); +}; HomeAnalyticsCard.displayName = "HomeAnalyticsCard"; export default HomeAnalyticsCard; diff --git a/src/home/components/HomeHeader/HomeHeader.tsx b/src/home/components/HomeHeader/HomeHeader.tsx index 27729c104..fb61e5a77 100644 --- a/src/home/components/HomeHeader/HomeHeader.tsx +++ b/src/home/components/HomeHeader/HomeHeader.tsx @@ -1,34 +1,32 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage } from "react-intl"; import Skeleton from "@saleor/components/Skeleton"; -const styles = (theme: Theme) => - createStyles({ - headerContainer: { - marginBottom: theme.spacing.unit * 3 - }, - pageHeader: { - fontWeight: 600 as 600 - }, - subtitle: { - color: theme.typography.caption.color - } - }); +const useStyles = makeStyles(theme => ({ + headerContainer: { + marginBottom: theme.spacing(3) + }, + pageHeader: { + fontWeight: 600 as 600 + }, + subtitle: { + color: theme.typography.caption.color + } +})); -interface HomeOrdersCardProps extends WithStyles { +interface HomeOrdersCardProps { userName: string; } -const HomeOrdersCard = withStyles(styles, { name: "HomeOrdersCard" })( - ({ classes, userName }: HomeOrdersCardProps) => ( +const HomeOrdersCard: React.FC = props => { + const { userName } = props; + + const classes = useStyles(props); + + return (
{userName ? ( @@ -56,7 +54,7 @@ const HomeOrdersCard = withStyles(styles, { name: "HomeOrdersCard" })( )}
- ) -); + ); +}; HomeOrdersCard.displayName = "HomeOrdersCard"; export default HomeOrdersCard; diff --git a/src/home/components/HomeNotificationTable/HomeNotificationTable.tsx b/src/home/components/HomeNotificationTable/HomeNotificationTable.tsx index 2e66422b4..f7c311d69 100644 --- a/src/home/components/HomeNotificationTable/HomeNotificationTable.tsx +++ b/src/home/components/HomeNotificationTable/HomeNotificationTable.tsx @@ -1,10 +1,5 @@ import Card from "@material-ui/core/Card"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -19,15 +14,14 @@ import Skeleton from "@saleor/components/Skeleton"; import { UserPermissionProps } from "@saleor/types"; import { PermissionEnum } from "@saleor/types/globalTypes"; -const styles = (theme: Theme) => - createStyles({ - arrowIcon: { - width: theme.spacing.unit * 4 - }, - tableRow: { - cursor: "pointer" - } - }); +const useStyles = makeStyles(theme => ({ + arrowIcon: { + width: theme.spacing(4) + }, + tableRow: { + cursor: "pointer" + } +})); interface HomeNotificationTableProps extends UserPermissionProps { ordersToCapture: number; @@ -38,11 +32,8 @@ interface HomeNotificationTableProps extends UserPermissionProps { onProductsOutOfStockClick: () => void; } -const HomeNotificationTable = withStyles(styles, { - name: "HomeNotificationTable" -})( - ({ - classes, +const HomeNotificationTable: React.FC = props => { + const { onOrdersToCaptureClick, onOrdersToFulfillClick, onProductsOutOfStockClick, @@ -50,7 +41,11 @@ const HomeNotificationTable = withStyles(styles, { ordersToFulfill, productsOutOfStock, userPermissions - }: HomeNotificationTableProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return ( @@ -157,7 +152,7 @@ const HomeNotificationTable = withStyles(styles, {
- ) -); + ); +}; HomeNotificationTable.displayName = "HomeNotificationTable"; export default HomeNotificationTable; diff --git a/src/home/components/HomePage/HomePage.tsx b/src/home/components/HomePage/HomePage.tsx index 12c1368ab..916ec647f 100644 --- a/src/home/components/HomePage/HomePage.tsx +++ b/src/home/components/HomePage/HomePage.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import CardSpacer from "@saleor/components/CardSpacer"; @@ -27,20 +22,19 @@ import HomeHeader from "../HomeHeader"; import HomeNotificationTable from "../HomeNotificationTable/HomeNotificationTable"; import HomeProductListCard from "../HomeProductListCard"; -const styles = (theme: Theme) => - createStyles({ - cardContainer: { - display: "grid", - gridColumnGap: `${theme.spacing.unit * 3}px`, - gridTemplateColumns: "1fr 1fr", - [theme.breakpoints.down("sm")]: { - gridColumnGap: `${theme.spacing.unit}px` - }, - [theme.breakpoints.down("xs")]: { - gridTemplateColumns: "1fr" - } +const useStyles = makeStyles(theme => ({ + cardContainer: { + display: "grid", + gridColumnGap: theme.spacing(3), + gridTemplateColumns: "1fr 1fr", + [theme.breakpoints.down("sm")]: { + gridColumnGap: theme.spacing(1) + }, + [theme.breakpoints.down("xs")]: { + gridTemplateColumns: "1fr" } - }); + } +})); export interface HomePageProps extends UserPermissionProps { activities: Home_activities_edges_node[]; @@ -57,9 +51,8 @@ export interface HomePageProps extends UserPermissionProps { onProductsOutOfStockClick: () => void; } -const HomePage = withStyles(styles, { name: "HomePage" })( - ({ - classes, +const HomePage: React.FC = props => { + const { userName, orders, sales, @@ -73,7 +66,11 @@ const HomePage = withStyles(styles, { name: "HomePage" })( ordersToFulfill, productsOutOfStock, userPermissions - }: HomePageProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return ( @@ -140,7 +137,7 @@ const HomePage = withStyles(styles, { name: "HomePage" })(
- ) -); + ); +}; HomePage.displayName = "HomePage"; export default HomePage; diff --git a/src/home/components/HomeProductListCard/HomeProductListCard.tsx b/src/home/components/HomeProductListCard/HomeProductListCard.tsx index 80fb454ce..215ad30d4 100644 --- a/src/home/components/HomeProductListCard/HomeProductListCard.tsx +++ b/src/home/components/HomeProductListCard/HomeProductListCard.tsx @@ -1,10 +1,5 @@ import Card from "@material-ui/core/Card"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -21,133 +16,133 @@ import TableCellAvatar from "@saleor/components/TableCellAvatar"; import { maybe, renderCollection } from "../../../misc"; import { Home_productTopToday_edges_node } from "../../types/Home"; -const styles = (theme: Theme) => - createStyles({ - avatarProps: { - height: 64, - width: 64 - }, - avatarSpacing: { - paddingBottom: theme.spacing.unit * 2, - paddingRight: theme.spacing.unit, - paddingTop: theme.spacing.unit * 2 - }, - label: { - paddingLeft: 0 - }, - noProducts: { - paddingBottom: 20, - paddingTop: 20 - }, - tableRow: { - cursor: "pointer" - } - }); +const useStyles = makeStyles(theme => ({ + avatarProps: { + height: 64, + width: 64 + }, + avatarSpacing: { + paddingBottom: theme.spacing(2), + paddingRight: theme.spacing(), + paddingTop: theme.spacing(2) + }, + label: { + paddingLeft: 0 + }, + noProducts: { + paddingBottom: 20, + paddingTop: 20 + }, + tableRow: { + cursor: "pointer" + } +})); -interface HomeProductListProps extends WithStyles { +interface HomeProductListProps { topProducts: Home_productTopToday_edges_node[]; onRowClick: (productId: string, variantId: string) => void; } -export const HomeProductList = withStyles(styles, { name: "HomeProductList" })( - ({ classes, topProducts, onRowClick }: HomeProductListProps) => { - const intl = useIntl(); +export const HomeProductList: React.FC = props => { + const { topProducts, onRowClick } = props; + const classes = useStyles(props); - return ( - - - - - {renderCollection( - topProducts, - variant => ( - onRowClick(variant.product.id, variant.id) - : undefined - } - > - variant.product.thumbnail.url)} - avatarProps={classes.avatarProps} - /> + const intl = useIntl(); - - {variant ? ( - <> - - {variant.product.name} - - - {maybe(() => - variant.attributes - .map(attribute => attribute.value.name) - .join(" / ") - )} - - - +
+ + {renderCollection( + topProducts, + variant => ( + onRowClick(variant.product.id, variant.id) + : undefined + } + > + variant.product.thumbnail.url)} + avatarProps={classes.avatarProps} + /> + + + {variant ? ( + <> + + {variant.product.name} + + + {maybe(() => + variant.attributes + .map(attribute => attribute.value.name) + .join(" / ") + )} + + + - - - ) : ( + description="number of ordered products" + id="homeProductListCardOrders" + values={{ + amount: variant.quantityOrdered + }} + /> + + + ) : ( + + )} + + + + + {maybe( + () => ( + + ), )} - - - - - {maybe( - () => ( - - ), - - )} - - - - ), - () => ( - - - - - - - - ) - )} - -
-
- ); - } -); + + + + ), + () => ( + + + + + + + + ) + )} + + +
+ ); +}; HomeProductList.displayName = "HomeProductList"; export default HomeProductList; diff --git a/src/hooks/useElementScroll.ts b/src/hooks/useElementScroll.ts index 925a8bba4..fa4156ced 100644 --- a/src/hooks/useElementScroll.ts +++ b/src/hooks/useElementScroll.ts @@ -35,7 +35,11 @@ function useElementScroll(anchor: MutableRefObject): Position { ); anchor.current.addEventListener("scroll", handleScroll); - return () => anchor.current.removeEventListener("scroll", handleScroll); + return () => { + if (!!anchor.current) { + anchor.current.removeEventListener("scroll", handleScroll); + } + }; } }, [anchor.current]); diff --git a/src/hooks/useListActions.ts b/src/hooks/useListActions.ts index 43f38b88c..81fd789b1 100644 --- a/src/hooks/useListActions.ts +++ b/src/hooks/useListActions.ts @@ -1,12 +1,10 @@ -import { useEffect, useState } from "react"; +import useStateFromProps from "./useStateFromProps"; function useListActions( initial: TData[] = [], compareFunc: (a: TData, b: TData) => boolean = (a, b) => a === b ) { - const [listElements, setListElements] = useState(initial); - - useEffect(() => setListElements(initial), [JSON.stringify(initial)]); + const [listElements, setListElements] = useStateFromProps(initial); function isSelected(data: TData) { return !!listElements.find(listElement => compareFunc(listElement, data)); diff --git a/src/icons/AccountCircle.tsx b/src/icons/AccountCircle.tsx index efe95777e..f7c28d096 100644 --- a/src/icons/AccountCircle.tsx +++ b/src/icons/AccountCircle.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const AccountCircle = createSvgIcon( +const AccountCircle = createSvgIcon( <> @@ -14,7 +14,8 @@ export const AccountCircle = createSvgIcon( /> - + , + "AccountCircle" ); -AccountCircle.displayName = "AccountCircle"; + export default AccountCircle; diff --git a/src/icons/ArrowDropdown.tsx b/src/icons/ArrowDropdown.tsx index a072df495..472d8fc0e 100644 --- a/src/icons/ArrowDropdown.tsx +++ b/src/icons/ArrowDropdown.tsx @@ -1,10 +1,11 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const NoPhoto = createSvgIcon( +const ArrowDropdown = createSvgIcon( - + , + "ArrowDropdown" ); -NoPhoto.displayName = "NoPhoto"; -export default NoPhoto; + +export default ArrowDropdown; diff --git a/src/icons/ArrowSort.tsx b/src/icons/ArrowSort.tsx index 8fd77f548..4455903c0 100644 --- a/src/icons/ArrowSort.tsx +++ b/src/icons/ArrowSort.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const ArrowSort = createSvgIcon( +const ArrowSort = createSvgIcon( <> -); -ArrowSort.displayName = "ArrowSort"; +, "ArrowSort") + export default ArrowSort; diff --git a/src/icons/Attributes.tsx b/src/icons/Attributes.tsx index ff3b99560..bf3fb437b 100644 --- a/src/icons/Attributes.tsx +++ b/src/icons/Attributes.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Attributes = createSvgIcon( +const Attributes = createSvgIcon( <> -); -Attributes.displayName = "Attributes"; +, "Attributes") + export default Attributes; diff --git a/src/icons/Ballot.tsx b/src/icons/Ballot.tsx index 587c3379c..bb33bdb3c 100644 --- a/src/icons/Ballot.tsx +++ b/src/icons/Ballot.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Ballot = createSvgIcon( +const Ballot = createSvgIcon( <> @@ -12,6 +12,6 @@ export const Ballot = createSvgIcon( -); -Ballot.displayName = "Ballot"; +, "Ballot") + export default Ballot; diff --git a/src/icons/BoldIcon.tsx b/src/icons/BoldIcon.tsx index 56a480e56..bbc865c18 100644 --- a/src/icons/BoldIcon.tsx +++ b/src/icons/BoldIcon.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const BoldIcon = createSvgIcon( +const BoldIcon = createSvgIcon( <> -); -BoldIcon.displayName = "BoldIcon"; +, "BoldIcon") + export default BoldIcon; diff --git a/src/icons/Bot.tsx b/src/icons/Bot.tsx index 926c20fe0..176688f6c 100644 --- a/src/icons/Bot.tsx +++ b/src/icons/Bot.tsx @@ -1,13 +1,13 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Bot = createSvgIcon( +const Bot = createSvgIcon( -); -Bot.displayName = "Bot"; +, "Bot") + export default Bot; diff --git a/src/icons/Calendar.tsx b/src/icons/Calendar.tsx index 3df4eb749..abbf8ca86 100644 --- a/src/icons/Calendar.tsx +++ b/src/icons/Calendar.tsx @@ -22,7 +22,7 @@ export const Calendar = createSvgIcon( - + , + "Calendar" ); -Calendar.displayName = "Calendar"; export default Calendar; diff --git a/src/icons/Draggable.tsx b/src/icons/Draggable.tsx index 245d84a6f..e263aa752 100644 --- a/src/icons/Draggable.tsx +++ b/src/icons/Draggable.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Draggable = createSvgIcon( +const Draggable = createSvgIcon( <> -); -Draggable.displayName = "Draggable"; +, "Draggable") + export default Draggable; diff --git a/src/icons/Folder.tsx b/src/icons/Folder.tsx index 74a16ed95..3267c949b 100644 --- a/src/icons/Folder.tsx +++ b/src/icons/Folder.tsx @@ -1,12 +1,12 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Folder = createSvgIcon( +const Folder = createSvgIcon( <> -); -Folder.displayName = "Folder"; +, "Folder") + export default Folder; diff --git a/src/icons/HeaderOne.tsx b/src/icons/HeaderOne.tsx index 0d0d9eb07..1926b1e22 100644 --- a/src/icons/HeaderOne.tsx +++ b/src/icons/HeaderOne.tsx @@ -1,11 +1,11 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const HeaderOne = createSvgIcon( +const HeaderOne = createSvgIcon( <> -); -HeaderOne.displayName = "HeaderOne"; +, "HeaderOne") + export default HeaderOne; diff --git a/src/icons/HeaderThree.tsx b/src/icons/HeaderThree.tsx index f33495274..145256b38 100644 --- a/src/icons/HeaderThree.tsx +++ b/src/icons/HeaderThree.tsx @@ -1,11 +1,11 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const HeaderThree = createSvgIcon( +const HeaderThree = createSvgIcon( <> -); -HeaderThree.displayName = "HeaderThree"; +, "HeaderThree") + export default HeaderThree; diff --git a/src/icons/HeaderTwo.tsx b/src/icons/HeaderTwo.tsx index f2775da8f..a73ee3ff4 100644 --- a/src/icons/HeaderTwo.tsx +++ b/src/icons/HeaderTwo.tsx @@ -1,11 +1,11 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const HeaderTwo = createSvgIcon( +const HeaderTwo = createSvgIcon( <> -); -HeaderTwo.displayName = "HeaderTwo"; +, "HeaderTwo") + export default HeaderTwo; diff --git a/src/icons/Home.tsx b/src/icons/Home.tsx index 91b1fd8a7..3a06e35c4 100644 --- a/src/icons/Home.tsx +++ b/src/icons/Home.tsx @@ -1,12 +1,12 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Home = createSvgIcon( +const Home = createSvgIcon( <> -); -Home.displayName = "Home"; +, "Home") + export default Home; diff --git a/src/icons/Image.tsx b/src/icons/Image.tsx index 00e4e9238..85256850b 100644 --- a/src/icons/Image.tsx +++ b/src/icons/Image.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Image = createSvgIcon( +const Image = createSvgIcon( <> -); -Image.displayName = "Image"; +, "Image") + export default Image; diff --git a/src/icons/ItalicIcon.tsx b/src/icons/ItalicIcon.tsx index eb750528a..eaf45abdd 100644 --- a/src/icons/ItalicIcon.tsx +++ b/src/icons/ItalicIcon.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const ItalicIcon = createSvgIcon( +const ItalicIcon = createSvgIcon( <> -); -ItalicIcon.displayName = "ItalicIcon"; +, "ItalicIcon") + export default ItalicIcon; diff --git a/src/icons/LinkIcon.tsx b/src/icons/LinkIcon.tsx index 0865ae2a0..280970b39 100644 --- a/src/icons/LinkIcon.tsx +++ b/src/icons/LinkIcon.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const LinkIcon = createSvgIcon( +const LinkIcon = createSvgIcon( <> -); -LinkIcon.displayName = "LinkIcon"; +, "LinkIcon") + export default LinkIcon; diff --git a/src/icons/LocalShipping.tsx b/src/icons/LocalShipping.tsx index 6eab76ef3..c6e54804c 100644 --- a/src/icons/LocalShipping.tsx +++ b/src/icons/LocalShipping.tsx @@ -1,12 +1,12 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const LocalShipping = createSvgIcon( +const LocalShipping = createSvgIcon( <> -); -LocalShipping.displayName = "LocalShipping"; +, "LocalShipping") + export default LocalShipping; diff --git a/src/icons/Monetization.tsx b/src/icons/Monetization.tsx index b315a839d..d8a737c43 100644 --- a/src/icons/Monetization.tsx +++ b/src/icons/Monetization.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Monetization = createSvgIcon( +const Monetization = createSvgIcon( <> @@ -9,6 +9,6 @@ export const Monetization = createSvgIcon( -); -Monetization.displayName = "Monetization"; +, "Monetization") + export default Monetization; diff --git a/src/icons/Moon.tsx b/src/icons/Moon.tsx index acbd52ee2..dbfddea6d 100644 --- a/src/icons/Moon.tsx +++ b/src/icons/Moon.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Moon = createSvgIcon( +const Moon = createSvgIcon( <> -); -Moon.displayName = "Moon"; +, "Moon") + export default Moon; diff --git a/src/icons/Navigation.tsx b/src/icons/Navigation.tsx index 37056dad9..c128e30d2 100644 --- a/src/icons/Navigation.tsx +++ b/src/icons/Navigation.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Navigation = createSvgIcon( +const Navigation = createSvgIcon( <> -); -Navigation.displayName = "Navigation"; +, "Navigation") + export default Navigation; diff --git a/src/icons/NoPhoto.tsx b/src/icons/NoPhoto.tsx index c83d77a73..33dda5582 100644 --- a/src/icons/NoPhoto.tsx +++ b/src/icons/NoPhoto.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const NoPhoto = createSvgIcon( +const NoPhoto = createSvgIcon( -); -NoPhoto.displayName = "NoPhoto"; +, "NoPhoto") + export default NoPhoto; diff --git a/src/icons/OrderedListIcon.tsx b/src/icons/OrderedListIcon.tsx index 95a76af22..76517b348 100644 --- a/src/icons/OrderedListIcon.tsx +++ b/src/icons/OrderedListIcon.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const OrderedListIcon = createSvgIcon( +const OrderedListIcon = createSvgIcon( <> -); -OrderedListIcon.displayName = "OrderedListIcon"; +, "OrderedListIcon") + export default OrderedListIcon; diff --git a/src/icons/Orders.tsx b/src/icons/Orders.tsx index 40cba08f6..aca432220 100644 --- a/src/icons/Orders.tsx +++ b/src/icons/Orders.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Orders = createSvgIcon( +const Orders = createSvgIcon( <> -); -Orders.displayName = "Orders"; +, "Orders") + export default Orders; diff --git a/src/icons/Pages.tsx b/src/icons/Pages.tsx index 6db2775af..c4b010527 100644 --- a/src/icons/Pages.tsx +++ b/src/icons/Pages.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Pages = createSvgIcon( +const Pages = createSvgIcon( <> -); -Pages.displayName = "Pages"; +, "Pages") + export default Pages; diff --git a/src/icons/Plugins.tsx b/src/icons/Plugins.tsx index c5b518de5..ef23371dc 100644 --- a/src/icons/Plugins.tsx +++ b/src/icons/Plugins.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Plugins = createSvgIcon( +const Plugins = createSvgIcon( <> -); -Plugins.displayName = "Plugins"; +, "Plugins") + export default Plugins; diff --git a/src/icons/ProductTypes.tsx b/src/icons/ProductTypes.tsx index 54fdbda6a..bdeeea8a9 100644 --- a/src/icons/ProductTypes.tsx +++ b/src/icons/ProductTypes.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const ProductTypes = createSvgIcon( +const ProductTypes = createSvgIcon( <> -); -ProductTypes.displayName = "ProductTypes"; +, "ProductTypes") + export default ProductTypes; diff --git a/src/icons/QuotationIcon.tsx b/src/icons/QuotationIcon.tsx index 0d49f21b4..b67a5246b 100644 --- a/src/icons/QuotationIcon.tsx +++ b/src/icons/QuotationIcon.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const QuotationIcon = createSvgIcon( +const QuotationIcon = createSvgIcon( <> -); -QuotationIcon.displayName = "QuotationIcon"; +, "QuotationIcon") + export default QuotationIcon; diff --git a/src/icons/Sales.tsx b/src/icons/Sales.tsx index 7b9525679..f621216c5 100644 --- a/src/icons/Sales.tsx +++ b/src/icons/Sales.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Sales = createSvgIcon( +const Sales = createSvgIcon( <> -); -Sales.displayName = "Sales"; +, "Sales") + export default Sales; diff --git a/src/icons/ShippingMethods.tsx b/src/icons/ShippingMethods.tsx index 4ee47bf8f..e552267a0 100644 --- a/src/icons/ShippingMethods.tsx +++ b/src/icons/ShippingMethods.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const ShippingMethods = createSvgIcon( +const ShippingMethods = createSvgIcon( <> -); -ShippingMethods.displayName = "ShippingMethods"; +, "ShippingMethods") + export default ShippingMethods; diff --git a/src/icons/Shop.tsx b/src/icons/Shop.tsx index 1cc474bfb..215f80a0f 100644 --- a/src/icons/Shop.tsx +++ b/src/icons/Shop.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Shop = createSvgIcon( +const Shop = createSvgIcon( <> @@ -9,6 +9,6 @@ export const Shop = createSvgIcon( -); -Shop.displayName = "Shop"; +, "Shop") + export default Shop; diff --git a/src/icons/SiteSettings.tsx b/src/icons/SiteSettings.tsx index 53cc0388a..a161305eb 100644 --- a/src/icons/SiteSettings.tsx +++ b/src/icons/SiteSettings.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const SiteSettings = createSvgIcon( +const SiteSettings = createSvgIcon( <> -); -SiteSettings.displayName = "SiteSettings"; +, "SiteSettings") + export default SiteSettings; diff --git a/src/icons/StaffMembers.tsx b/src/icons/StaffMembers.tsx index 2b1e0a05b..6b1aa270e 100644 --- a/src/icons/StaffMembers.tsx +++ b/src/icons/StaffMembers.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const StaffMembers = createSvgIcon( +const StaffMembers = createSvgIcon( <> -); -StaffMembers.displayName = "StaffMembers"; +, "StaffMembers") + export default StaffMembers; diff --git a/src/icons/StoreMall.tsx b/src/icons/StoreMall.tsx index 753ba2d15..cacfd4df2 100644 --- a/src/icons/StoreMall.tsx +++ b/src/icons/StoreMall.tsx @@ -1,12 +1,12 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const StoreMall = createSvgIcon( +const StoreMall = createSvgIcon( <> -); -StoreMall.displayName = "StoreMall"; +, "StoreMall") + export default StoreMall; diff --git a/src/icons/StrikethroughIcon.tsx b/src/icons/StrikethroughIcon.tsx index accad0a5f..ef9a135b8 100644 --- a/src/icons/StrikethroughIcon.tsx +++ b/src/icons/StrikethroughIcon.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const HeaderOne = createSvgIcon( +const HeaderOne = createSvgIcon( <> -); -HeaderOne.displayName = "HeaderOne"; +, "HeaderOne") + export default HeaderOne; diff --git a/src/icons/Sun.tsx b/src/icons/Sun.tsx index 310ee1907..2a8b15aa9 100644 --- a/src/icons/Sun.tsx +++ b/src/icons/Sun.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Sun = createSvgIcon( +const Sun = createSvgIcon( <> -); -Sun.displayName = "Sun"; +, "Sun") + export default Sun; diff --git a/src/icons/Taxes.tsx b/src/icons/Taxes.tsx index 7e3ba83cd..08a77e56f 100644 --- a/src/icons/Taxes.tsx +++ b/src/icons/Taxes.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Taxes = createSvgIcon( +const Taxes = createSvgIcon( <> -); -Taxes.displayName = "Taxes"; +, "Taxes") + export default Taxes; diff --git a/src/icons/Truck.tsx b/src/icons/Truck.tsx index f90abaa5b..fea266be7 100644 --- a/src/icons/Truck.tsx +++ b/src/icons/Truck.tsx @@ -1,10 +1,13 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Truck = createSvgIcon( +const Truck = createSvgIcon( <> - + -); -Truck.displayName = "Truck"; +, "Truck") + export default Truck; diff --git a/src/icons/UnorderedListIcon.tsx b/src/icons/UnorderedListIcon.tsx index d92de9a2b..7d0242632 100644 --- a/src/icons/UnorderedListIcon.tsx +++ b/src/icons/UnorderedListIcon.tsx @@ -1,10 +1,10 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const UnorderedListIcon = createSvgIcon( +const UnorderedListIcon = createSvgIcon( <> -); -UnorderedListIcon.displayName = "UnorderedListIcon"; +, "UnorderedListIcon") + export default UnorderedListIcon; diff --git a/src/icons/Unstyled.tsx b/src/icons/Unstyled.tsx index 0fc19f44a..1a8b9bd8d 100644 --- a/src/icons/Unstyled.tsx +++ b/src/icons/Unstyled.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Unstyled = createSvgIcon( +const Unstyled = createSvgIcon( <> -); -Unstyled.displayName = "Unstyled"; +, "Unstyled") + export default Unstyled; diff --git a/src/icons/Webhooks.tsx b/src/icons/Webhooks.tsx index 051893abe..9b8387cbf 100644 --- a/src/icons/Webhooks.tsx +++ b/src/icons/Webhooks.tsx @@ -1,7 +1,7 @@ import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; import React from "react"; -export const Webhooks = createSvgIcon( +const Webhooks = createSvgIcon( <> -); -Webhooks.displayName = "Webhooks"; +, "Webhooks") + export default Webhooks; diff --git a/src/navigation/components/MenuCreateDialog/index.ts b/src/navigation/components/MenuCreateDialog/index.ts index afef4b52e..ee03b92ec 100644 --- a/src/navigation/components/MenuCreateDialog/index.ts +++ b/src/navigation/components/MenuCreateDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './MenuCreateDialog'; -export * from './MenuCreateDialog'; \ No newline at end of file +export { default } from "./MenuCreateDialog"; +export * from "./MenuCreateDialog"; diff --git a/src/navigation/components/MenuDetailsPage/index.ts b/src/navigation/components/MenuDetailsPage/index.ts index 3ebbd4695..253da8b34 100644 --- a/src/navigation/components/MenuDetailsPage/index.ts +++ b/src/navigation/components/MenuDetailsPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './MenuDetailsPage'; -export * from './MenuDetailsPage'; \ No newline at end of file +export { default } from "./MenuDetailsPage"; +export * from "./MenuDetailsPage"; diff --git a/src/navigation/components/MenuItems/MenuItems.tsx b/src/navigation/components/MenuItems/MenuItems.tsx index b5fc6d74d..a02954aa8 100644 --- a/src/navigation/components/MenuItems/MenuItems.tsx +++ b/src/navigation/components/MenuItems/MenuItems.tsx @@ -3,12 +3,7 @@ import Card from "@material-ui/core/Card"; import CardActions from "@material-ui/core/CardActions"; import IconButton from "@material-ui/core/IconButton"; import Paper from "@material-ui/core/Paper"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import DeleteIcon from "@material-ui/icons/Delete"; import EditIcon from "@material-ui/icons/Edit"; @@ -39,252 +34,250 @@ export interface MenuItemsProps { onUndo: () => void; } -const styles = (theme: Theme) => - createStyles({ - actions: { - flexDirection: "row" +const useStyles = makeStyles(theme => ({ + actions: { + flexDirection: "row" + }, + container: { + background: theme.palette.grey[200] + }, + darkContainer: { + background: `${theme.palette.grey[800]} !important` + }, + deleteButton: { + marginRight: theme.spacing(1) + }, + dragIcon: { + cursor: "grab" + }, + nodeTitle: { + cursor: "pointer", + marginLeft: theme.spacing(7) + }, + root: { + "& .rst__collapseButton": { + display: "none" }, - container: { - background: theme.palette.grey[200] - }, - darkContainer: { - background: `${theme.palette.grey[800]} !important` - }, - deleteButton: { - marginRight: theme.spacing.unit - }, - dragIcon: { - cursor: "grab" - }, - nodeTitle: { - cursor: "pointer", - marginLeft: theme.spacing.unit * 7 - }, - root: { - "& .rst__collapseButton": { - display: "none" - }, - "& .rst__node": { - "&:first-of-type": { - "& $row": { - borderTop: `1px ${theme.overrides.MuiCard.root.borderColor} solid` - } + "& .rst__node": { + "&:first-of-type": { + "& $row": { + borderTop: `1px ${theme.palette.divider} solid` } } - }, - row: { - alignItems: "center", - background: theme.palette.background.paper, - borderBottom: `1px ${theme.overrides.MuiCard.root.borderColor} solid`, - borderRadius: 0, - display: "flex", - flexDirection: "row", - height: NODE_HEIGHT, - justifyContent: "flex-start", - paddingLeft: theme.spacing.unit * 3 - }, - rowContainer: { - "& > *": { - opacity: 1, - transition: `opacity ${theme.transitions.duration.standard}ms` - }, - transition: `margin ${theme.transitions.duration.standard}ms` - }, - rowContainerDragged: { - "&$rowContainer": { - "&:before": { - background: theme.palette.background.paper, - border: `1px solid ${theme.palette.primary.main}`, - borderRadius: "100%", - content: "''", - height: 7, - left: 0, - position: "absolute", - top: -3, - width: 7 - }, - borderTop: `1px solid ${theme.palette.primary.main}`, - height: 0, - position: "relative", - top: -1 - } - }, - rowContainerPlaceholder: { - opacity: 0 - }, - spacer: { - flex: 1 } - }); + }, + row: { + alignItems: "center", + background: theme.palette.background.paper, + borderBottom: `1px ${theme.palette.divider} solid`, + borderRadius: 0, + display: "flex", + flexDirection: "row", + height: NODE_HEIGHT, + justifyContent: "flex-start", + paddingLeft: theme.spacing(3) + }, + rowContainer: { + "& > *": { + opacity: 1, + transition: `opacity ${theme.transitions.duration.standard}ms` + }, + transition: `margin ${theme.transitions.duration.standard}ms` + }, + rowContainerDragged: { + "&$rowContainer": { + "&:before": { + background: theme.palette.background.paper, + border: `1px solid ${theme.palette.primary.main}`, + borderRadius: "100%", + content: "''", + height: 7, + left: 0, + position: "absolute", + top: -3, + width: 7 + }, + borderTop: `1px solid ${theme.palette.primary.main}`, + height: 0, + position: "relative", + top: -1 + } + }, + rowContainerPlaceholder: { + opacity: 0 + }, + spacer: { + flex: 1 + } +})); -const Placeholder = withStyles(styles, { - name: "Placeholder" -})(({ classes }: WithStyles) => ( - - - - - -)); +const Placeholder: React.FC = props => { + const classes = useStyles(props); -const Node = withStyles(styles, { - name: "Node" -})( - ({ - classes, + return ( + + + + + + ); +}; + +const Node: React.FC = props => { + const { node, path, connectDragPreview, connectDragSource, isDragging - }: NodeRendererProps & WithStyles) => { - const draggedClassName = classNames( - classes.rowContainer, - classes.rowContainerDragged - ); - const defaultClassName = isDragging - ? draggedClassName - : classes.rowContainer; - const placeholderClassName = classNames( - classes.rowContainer, - classes.rowContainerPlaceholder - ); + } = props; + const classes = useStyles(props); - const [className, setClassName] = React.useState(defaultClassName); - React.useEffect(() => setClassName(defaultClassName), [isDragging]); + const draggedClassName = classNames( + classes.rowContainer, + classes.rowContainerDragged + ); + const defaultClassName = isDragging ? draggedClassName : classes.rowContainer; + const placeholderClassName = classNames( + classes.rowContainer, + classes.rowContainerPlaceholder + ); - const handleDragStart = () => { - setClassName(placeholderClassName); - setTimeout(() => setClassName(defaultClassName), 0); - }; + const [className, setClassName] = React.useState(defaultClassName); + React.useEffect(() => setClassName(defaultClassName), [isDragging]); - return connectDragPreview( -
- - {connectDragSource( -
- -
- )} - - {node.title} - -
- - - - - - node.onChange({ - id: node.id as any, - type: "remove" - }) - } - > - - - -
- ); - } -); + const handleDragStart = () => { + setClassName(placeholderClassName); + setTimeout(() => setClassName(defaultClassName), 0); + }; -const MenuItems = withStyles(styles, { name: "MenuItems" })( - ({ + return connectDragPreview( +
+ + {connectDragSource( +
+ +
+ )} + + {node.title} + +
+ + + + + + node.onChange({ + id: node.id as any, + type: "remove" + }) + } + > + + + +
+ ); +}; + +const MenuItems: React.FC = props => { + const { canUndo, - classes, + items, onChange, onItemAdd, onItemClick, onItemEdit, onUndo - }: MenuItemsProps & WithStyles) => { - const intl = useIntl(); - const { isDark } = useTheme(); + } = props; + const classes = useStyles(props); - return ( - - - - - } - /> -
- {items === undefined ? ( - - ) : ( - ({ - className: classes.row, - style: { - marginLeft: NODE_MARGIN * (path.length - 1) - } - })} - isVirtualized={false} - rowHeight={NODE_HEIGHT} - treeData={items.map(item => - getNodeData(item, onChange, onItemClick, onItemEdit) - )} - theme={{ - nodeContentRenderer: Node as any - }} - onChange={newTree => - onChange( - getDiff( - items.map(item => - getNodeData(item, onChange, onItemClick, onItemEdit) - ), - newTree as TreeItem[] - ) - ) - } - placeholderRenderer={Placeholder as any} - /> - )} -
- - - -
- ); - } -); + } + /> +
+ {items === undefined ? ( + + ) : ( + ({ + className: classes.row, + style: { + marginLeft: NODE_MARGIN * (path.length - 1) + } + })} + isVirtualized={false} + rowHeight={NODE_HEIGHT} + treeData={items.map(item => + getNodeData(item, onChange, onItemClick, onItemEdit) + )} + theme={{ + nodeContentRenderer: Node as any + }} + onChange={newTree => + onChange( + getDiff( + items.map(item => + getNodeData(item, onChange, onItemClick, onItemEdit) + ), + newTree as TreeItem[] + ) + ) + } + placeholderRenderer={Placeholder as any} + /> + )} +
+ + + + + ); +}; MenuItems.displayName = "MenuItems"; export default MenuItems; diff --git a/src/navigation/components/MenuList/MenuList.tsx b/src/navigation/components/MenuList/MenuList.tsx index 3bb49f988..191b0a19f 100644 --- a/src/navigation/components/MenuList/MenuList.tsx +++ b/src/navigation/components/MenuList/MenuList.tsx @@ -1,10 +1,5 @@ import Card from "@material-ui/core/Card"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -28,30 +23,28 @@ export interface MenuListProps extends ListProps, ListActions { onDelete: (id: string) => void; } -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colItems: { - width: 200 - }, - colTitle: {} - }, +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { colItems: { - textAlign: "right" + width: 200 }, - colTitle: { - paddingLeft: 0 - }, - row: { - cursor: "pointer" - } - }); + colTitle: {} + }, + colItems: { + textAlign: "right" + }, + colTitle: { + paddingLeft: 0 + }, + row: { + cursor: "pointer" + } +})); const numberOfColumns = 4; -const MenuList = withStyles(styles, { name: "MenuList" })( - ({ - classes, +const MenuList: React.FC = props => { + const { settings, disabled, isChecked, @@ -66,7 +59,11 @@ const MenuList = withStyles(styles, { name: "MenuList" })( toggle, toggleAll, toolbar - }: MenuListProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; MenuList.displayName = "MenuList"; export default MenuList; diff --git a/src/navigation/components/MenuList/index.ts b/src/navigation/components/MenuList/index.ts index 298313288..aea30ef3a 100644 --- a/src/navigation/components/MenuList/index.ts +++ b/src/navigation/components/MenuList/index.ts @@ -1,2 +1,2 @@ -export { default } from './MenuList'; -export * from './MenuList'; \ No newline at end of file +export { default } from "./MenuList"; +export * from "./MenuList"; diff --git a/src/navigation/components/MenuListPage/index.ts b/src/navigation/components/MenuListPage/index.ts index eac89a2b2..3fda12ebd 100644 --- a/src/navigation/components/MenuListPage/index.ts +++ b/src/navigation/components/MenuListPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './MenuListPage'; -export * from './MenuListPage'; \ No newline at end of file +export { default } from "./MenuListPage"; +export * from "./MenuListPage"; diff --git a/src/navigation/components/MenuProperties/index.ts b/src/navigation/components/MenuProperties/index.ts index cbbaabac0..7e8070acf 100644 --- a/src/navigation/components/MenuProperties/index.ts +++ b/src/navigation/components/MenuProperties/index.ts @@ -1,2 +1,2 @@ -export { default } from './MenuProperties'; -export * from './MenuProperties'; \ No newline at end of file +export { default } from "./MenuProperties"; +export * from "./MenuProperties"; diff --git a/src/navigation/views/MenuList.tsx b/src/navigation/views/MenuList.tsx index 9781d0697..77b1285e6 100644 --- a/src/navigation/views/MenuList.tsx +++ b/src/navigation/views/MenuList.tsx @@ -246,10 +246,7 @@ const MenuList: React.FC = ({ params }) => { > { +interface OrderAddressEditDialogProps { confirmButtonState: ConfirmButtonTransitionState; address: AddressTypeInput; open: boolean; @@ -42,12 +42,9 @@ interface OrderAddressEditDialogProps extends WithStyles { onConfirm(data: AddressInput); } -const OrderAddressEditDialog = withStyles(styles, { - name: "OrderAddressEditDialog" -})( - ({ +const OrderAddressEditDialog: React.FC = props => { + const { address, - classes, confirmButtonState, open, errors, @@ -55,85 +52,83 @@ const OrderAddressEditDialog = withStyles(styles, { countries, onClose, onConfirm - }: OrderAddressEditDialogProps) => { - const intl = useIntl(); - const [countryDisplayName, setCountryDisplayName] = useStateFromProps( - maybe( - () => countries.find(country => address.country === country.code).label - ) - ); - const { - errors: validationErrors, - submit: handleSubmit - } = useAddressValidation(onConfirm); - const dialogErrors = useModalDialogErrors( - [...errors, ...validationErrors], - open - ); + } = props; - const countryChoices = countries.map(country => ({ - label: country.label, - value: country.code - })); + const classes = useStyles(props); + const intl = useIntl(); + const [countryDisplayName, setCountryDisplayName] = useStateFromProps( + maybe( + () => countries.find(country => address.country === country.code).label + ) + ); + const { + errors: validationErrors, + submit: handleSubmit + } = useAddressValidation(onConfirm); + const dialogErrors = useModalDialogErrors( + [...errors, ...validationErrors], + open + ); - return ( - -
- {({ change, data, errors, submit }) => { - const handleCountrySelect = createSingleAutocompleteSelectHandler( - change, - setCountryDisplayName, - countryChoices - ); + const countryChoices = countries.map(country => ({ + label: country.label, + value: country.code + })); + + return ( + + + {({ change, data, errors, submit }) => { + const handleCountrySelect = createSingleAutocompleteSelectHandler( + change, + setCountryDisplayName, + countryChoices + ); + + return ( + <> + + {variant === "billing" + ? intl.formatMessage({ + defaultMessage: "Edit Billing Address", + description: "dialog header" + }) + : intl.formatMessage({ + defaultMessage: "Edit Shipping Address", + description: "dialog header" + })} + + + + + + + + + + + + ); + }} + +
+ ); +}; - return ( - <> - - {variant === "billing" - ? intl.formatMessage({ - defaultMessage: "Edit Billing Address", - description: "dialog header" - }) - : intl.formatMessage({ - defaultMessage: "Edit Shipping Address", - description: "dialog header" - })} - - - - - - - - - - - - ); - }} - -
- ); - } -); OrderAddressEditDialog.displayName = "OrderAddressEditDialog"; export default OrderAddressEditDialog; diff --git a/src/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx b/src/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx index 1fb62367f..ba16ba6c5 100644 --- a/src/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx +++ b/src/orders/components/OrderBulkCancelDialog/OrderBulkCancelDialog.tsx @@ -38,10 +38,7 @@ const OrderBulkCancelDialog: React.FC = ({ > {numberOfOrders} diff --git a/src/orders/components/OrderBulkCancelDialog/index.ts b/src/orders/components/OrderBulkCancelDialog/index.ts index 25c157c84..5571ff2a0 100644 --- a/src/orders/components/OrderBulkCancelDialog/index.ts +++ b/src/orders/components/OrderBulkCancelDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './OrderBulkCancelDialog'; -export * from './OrderBulkCancelDialog'; \ No newline at end of file +export { default } from "./OrderBulkCancelDialog"; +export * from "./OrderBulkCancelDialog"; diff --git a/src/orders/components/OrderCancelDialog/OrderCancelDialog.tsx b/src/orders/components/OrderCancelDialog/OrderCancelDialog.tsx index 8dd834d5e..2ace728db 100644 --- a/src/orders/components/OrderCancelDialog/OrderCancelDialog.tsx +++ b/src/orders/components/OrderCancelDialog/OrderCancelDialog.tsx @@ -4,12 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogContentText from "@material-ui/core/DialogContentText"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -24,18 +19,17 @@ export interface FormData { restock: boolean; } -const styles = (theme: Theme) => - createStyles({ - deleteButton: { - "&:hover": { - backgroundColor: theme.palette.error.main - }, - backgroundColor: theme.palette.error.main, - color: theme.palette.error.contrastText - } - }); +const useStyles = makeStyles(theme => ({ + deleteButton: { + "&:hover": { + backgroundColor: theme.palette.error.main + }, + backgroundColor: theme.palette.error.main, + color: theme.palette.error.contrastText + } +})); -interface OrderCancelDialogProps extends WithStyles { +interface OrderCancelDialogProps { confirmButtonState: ConfirmButtonTransitionState; number: string; open: boolean; @@ -43,79 +37,76 @@ interface OrderCancelDialogProps extends WithStyles { onSubmit(data: FormData); } -const OrderCancelDialog = withStyles(styles, { name: "OrderCancelDialog" })( - ({ - classes, +const OrderCancelDialog: React.FC = props => { + const { confirmButtonState, number: orderNumber, open, onSubmit, onClose - }: OrderCancelDialogProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - -
- {({ data, change }) => { - return ( - <> - - - - - - - - - - - - - - - - - ); - }} -
-
- ); - } -); + const intl = useIntl(); + + return ( + +
+ {({ data, change }) => ( + <> + + + + + + + + + + + + + + + + + )} +
+
+ ); +}; OrderCancelDialog.displayName = "OrderCancelDialog"; export default OrderCancelDialog; diff --git a/src/orders/components/OrderCustomer/OrderCustomer.tsx b/src/orders/components/OrderCustomer/OrderCustomer.tsx index 8b3677557..0665e269a 100644 --- a/src/orders/components/OrderCustomer/OrderCustomer.tsx +++ b/src/orders/components/OrderCustomer/OrderCustomer.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -29,27 +24,26 @@ import { customerUrl } from "../../../customers/urls"; import { createHref, maybe } from "../../../misc"; import { OrderDetails_order } from "../../types/OrderDetails"; -const styles = (theme: Theme) => - createStyles({ - sectionHeader: { - alignItems: "center", - display: "flex", - marginBottom: theme.spacing.unit * 3 - }, - sectionHeaderTitle: { - flex: 1, - fontWeight: 600 as 600, - lineHeight: 1, - textTransform: "uppercase" - }, - sectionHeaderToolbar: { - marginRight: -theme.spacing.unit * 2 - }, - userEmail: { - fontWeight: 600 as 600, - marginBottom: theme.spacing.unit - } - }); +const useStyles = makeStyles(theme => ({ + sectionHeader: { + alignItems: "center", + display: "flex", + marginBottom: theme.spacing(3) + }, + sectionHeaderTitle: { + flex: 1, + fontWeight: 600 as 600, + lineHeight: 1, + textTransform: "uppercase" + }, + sectionHeaderToolbar: { + marginRight: -theme.spacing(2) + }, + userEmail: { + fontWeight: 600 as 600, + marginBottom: theme.spacing(1) + } +})); export interface OrderCustomerProps extends Partial, @@ -66,9 +60,8 @@ export interface OrderCustomerProps onShippingAddressEdit?: () => void; } -const OrderCustomer = withStyles(styles, { name: "OrderCustomer" })( - ({ - classes, +const OrderCustomer: React.FC = props => { + const { canEditAddresses, canEditCustomer, fetchUsers, @@ -82,291 +75,289 @@ const OrderCustomer = withStyles(styles, { name: "OrderCustomer" })( onFetchMore: onFetchMoreUsers, onProfileView, onShippingAddressEdit - }: OrderCustomerProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - const user = maybe(() => order.user); - const userEmail = maybe(()=>order.userEmail) + const intl = useIntl(); - const [userDisplayName, setUserDisplayName] = useStateFromProps( - maybe(() => user.email, "") - ); - const [isInEditMode, setEditModeStatus] = React.useState(false); - const toggleEditMode = () => setEditModeStatus(!isInEditMode); + const user = maybe(() => order.user); + const userEmail = maybe(() => order.userEmail); - const billingAddress = maybe(() => order.billingAddress); - const shippingAddress = maybe(() => order.shippingAddress); + const [userDisplayName, setUserDisplayName] = useStateFromProps( + maybe(() => user.email, "") + ); + const [isInEditMode, setEditModeStatus] = React.useState(false); + const toggleEditMode = () => setEditModeStatus(!isInEditMode); - return ( - - order.billingAddress); + const shippingAddress = maybe(() => order.shippingAddress); + + return ( + + + - - ) - } - /> - - {user === undefined ? ( - - ) : isInEditMode && canEditCustomer ? ( -
- {({ change, data }) => { - const handleChange = (event: React.ChangeEvent) => { - change(event); - const value = event.target.value; + {intl.formatMessage(buttonMessages.edit)} + + + ) + } + /> + + {user === undefined ? ( + + ) : isInEditMode && canEditCustomer ? ( + + {({ change, data }) => { + const handleChange = (event: React.ChangeEvent) => { + change(event); + const value = event.target.value; - onCustomerEdit({ - [value.includes("@") ? "userEmail" : "user"]: value - }); - toggleEditMode(); - }; - const userChoices = maybe(() => users, []).map(user => ({ - label: user.email, - value: user.id - })); - const handleUserChange = createSingleAutocompleteSelectHandler( - handleChange, - setUserDisplayName, - userChoices - ); - return ( - - ); - }} - - ) : user === null ? ( - userEmail === null ? ( - - - - ) : ( - {userEmail} - ) + onCustomerEdit({ + [value.includes("@") ? "userEmail" : "user"]: value + }); + toggleEditMode(); + }; + const userChoices = maybe(() => users, []).map(user => ({ + label: user.email, + value: user.id + })); + const handleUserChange = createSingleAutocompleteSelectHandler( + handleChange, + setUserDisplayName, + userChoices + ); + return ( + + ); + }} + + ) : user === null ? ( + userEmail === null ? ( + + + ) : ( - <> - - {user.email} - - -
- - - -
-
- {/* TODO: Uncomment it after adding ability to filter + {userEmail} + ) + ) : ( + <> + {user.email} + +
+ + + +
+
+ {/* TODO: Uncomment it after adding ability to filter orders by customer */} - {/*
+ {/*
*/} - - )} - - {!!user && ( - <> -
- -
- - - -
- - {maybe(() => order.userEmail) === undefined ? ( - - ) : order.userEmail === null ? ( - - - - ) : ( - order.userEmail)}`} - typographyProps={{ color: "primary" }} - > - {maybe(() => order.userEmail)} - - )} -
)} -
- -
- - - - {canEditAddresses && ( -
- -
+ + {!!user && ( + <> +
+ +
+ + + +
+ + {maybe(() => order.userEmail) === undefined ? ( + + ) : order.userEmail === null ? ( + + + + ) : ( + order.userEmail)}`} + typographyProps={{ color: "primary" }} + > + {maybe(() => order.userEmail)} + )} -
- {shippingAddress === undefined ? ( - - ) : shippingAddress === null ? ( - - - - ) : ( - <> - {shippingAddress.companyName && ( - {shippingAddress.companyName} - )} - - {shippingAddress.firstName} {shippingAddress.lastName} - - - {shippingAddress.streetAddress1} -
- {shippingAddress.streetAddress2} -
- - {shippingAddress.postalCode} {shippingAddress.city} - {shippingAddress.cityArea - ? ", " + shippingAddress.cityArea - : ""} - - - {shippingAddress.countryArea - ? shippingAddress.countryArea + - ", " + - shippingAddress.country.country - : shippingAddress.country.country} - - {shippingAddress.phone} - +
+ + )} +
+ +
+ + + + {canEditAddresses && ( +
+ +
)} - -
- -
- - - - {canEditAddresses && ( -
- -
+
+ {shippingAddress === undefined ? ( + + ) : shippingAddress === null ? ( + + + + ) : ( + <> + {shippingAddress.companyName && ( + {shippingAddress.companyName} )} -
- {billingAddress === undefined ? ( - - ) : billingAddress === null ? ( - + {shippingAddress.firstName} {shippingAddress.lastName} - ) : maybe(() => shippingAddress.id) === billingAddress.id ? ( - + {shippingAddress.streetAddress1} +
+ {shippingAddress.streetAddress2}
- ) : ( - <> - {billingAddress.companyName && ( - {billingAddress.companyName} - )} - - {billingAddress.firstName} {billingAddress.lastName} - - - {billingAddress.streetAddress1} -
- {billingAddress.streetAddress2} -
- - {billingAddress.postalCode} {billingAddress.city} - {billingAddress.cityArea ? ", " + billingAddress.cityArea : ""} - - - {billingAddress.countryArea - ? billingAddress.countryArea + - ", " + - billingAddress.country.country - : billingAddress.country.country} - - {billingAddress.phone} - + + {shippingAddress.postalCode} {shippingAddress.city} + {shippingAddress.cityArea ? ", " + shippingAddress.cityArea : ""} + + + {shippingAddress.countryArea + ? shippingAddress.countryArea + + ", " + + shippingAddress.country.country + : shippingAddress.country.country} + + {shippingAddress.phone} + + )} +
+
+ +
+ + + + {canEditAddresses && ( +
+ +
)} - - - ); - } -); +
+ {billingAddress === undefined ? ( + + ) : billingAddress === null ? ( + + + + ) : maybe(() => shippingAddress.id) === billingAddress.id ? ( + + + + ) : ( + <> + {billingAddress.companyName && ( + {billingAddress.companyName} + )} + + {billingAddress.firstName} {billingAddress.lastName} + + + {billingAddress.streetAddress1} +
+ {billingAddress.streetAddress2} +
+ + {billingAddress.postalCode} {billingAddress.city} + {billingAddress.cityArea ? ", " + billingAddress.cityArea : ""} + + + {billingAddress.countryArea + ? billingAddress.countryArea + + ", " + + billingAddress.country.country + : billingAddress.country.country} + + {billingAddress.phone} + + )} +
+ + ); +}; + OrderCustomer.displayName = "OrderCustomer"; export default OrderCustomer; diff --git a/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx b/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx index 871ca148e..e26c1b47a 100644 --- a/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx +++ b/src/orders/components/OrderDetailsPage/OrderDetailsPage.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { useIntl } from "react-intl"; @@ -28,16 +23,15 @@ import OrderHistory, { FormData as HistoryFormData } from "../OrderHistory"; import OrderPayment from "../OrderPayment/OrderPayment"; import OrderUnfulfilledItems from "../OrderUnfulfilledItems/OrderUnfulfilledItems"; -const styles = (theme: Theme) => - createStyles({ - date: { - marginBottom: theme.spacing.unit * 3, - marginTop: -theme.spacing.unit * 2 - }, - header: { - marginBottom: 0 - } - }); +const useStyles = makeStyles(theme => ({ + date: { + marginBottom: theme.spacing(3), + marginTop: -theme.spacing(2) + }, + header: { + marginBottom: 0 + } +})); export interface OrderDetailsPageProps extends UserPermissionProps { order: OrderDetails_order; @@ -65,9 +59,8 @@ export interface OrderDetailsPageProps extends UserPermissionProps { onProfileView(); } -const OrderDetailsPage = withStyles(styles, { name: "OrderDetailsPage" })( - ({ - classes, +const OrderDetailsPage: React.FC = props => { + const { order, userPermissions, onBack, @@ -83,107 +76,108 @@ const OrderDetailsPage = withStyles(styles, { name: "OrderDetailsPage" })( onPaymentVoid, onShippingAddressEdit, onProfileView - }: OrderDetailsPageProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - const canCancel = maybe(() => order.status) !== OrderStatus.CANCELED; - const canEditAddresses = maybe(() => order.status) !== OrderStatus.CANCELED; - const canFulfill = maybe(() => order.status) !== OrderStatus.CANCELED; - const unfulfilled = maybe(() => order.lines, []).filter( - line => line.quantityFulfilled < line.quantity - ); + const intl = useIntl(); - return ( - - - {intl.formatMessage(sectionNames.orders)} - - order.number) ? "#" + order.number : undefined} - > - {canCancel && ( - order.status) !== OrderStatus.CANCELED; + const canEditAddresses = maybe(() => order.status) !== OrderStatus.CANCELED; + const canFulfill = maybe(() => order.status) !== OrderStatus.CANCELED; + const unfulfilled = maybe(() => order.lines, []).filter( + line => line.quantityFulfilled < line.quantity + ); + + return ( + + + {intl.formatMessage(sectionNames.orders)} + + order.number) ? "#" + order.number : undefined} + > + {canCancel && ( + + )} + +
+ {order && order.created ? ( + + + + ) : ( + + )} +
+ +
+ {unfulfilled.length > 0 && ( + )} - -
- {order && order.created ? ( - - - - ) : ( - + {renderCollection( + maybe(() => order.fulfillments), + (fulfillment, fulfillmentIndex) => ( + fulfillment.id, "loading")}> + {!(unfulfilled.length === 0 && fulfillmentIndex === 0) && ( + + )} + order.number)} + onOrderFulfillmentCancel={() => + onFulfillmentCancel(fulfillment.id) + } + onTrackingCodeAdd={() => + onFulfillmentTrackingNumberUpdate(fulfillment.id) + } + /> + + ) )} + + + order.events)} + onNoteAdd={onNoteAdd} + />
- -
- {unfulfilled.length > 0 && ( - - )} - {renderCollection( - maybe(() => order.fulfillments), - (fulfillment, fulfillmentIndex) => ( - fulfillment.id, "loading")}> - {!(unfulfilled.length === 0 && fulfillmentIndex === 0) && ( - - )} - order.number)} - onOrderFulfillmentCancel={() => - onFulfillmentCancel(fulfillment.id) - } - onTrackingCodeAdd={() => - onFulfillmentTrackingNumberUpdate(fulfillment.id) - } - /> - - ) - )} - - - order.events)} - onNoteAdd={onNoteAdd} - /> -
-
- - - order.customerNote)} /> -
-
- - ); - } -); +
+ + + order.customerNote)} /> +
+ + + ); +}; OrderDetailsPage.displayName = "OrderDetailsPage"; export default OrderDetailsPage; diff --git a/src/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx b/src/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx index 5d0a40c47..6b4d2d18d 100644 --- a/src/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx +++ b/src/orders/components/OrderDraftDetailsProducts/OrderDraftDetailsProducts.tsx @@ -1,10 +1,5 @@ import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -30,59 +25,57 @@ export interface FormData { quantity: number; } -const styles = (theme: Theme) => - createStyles({ - colAction: { - "&:last-child": { - paddingRight: 0 - }, - width: 76 + theme.spacing.unit / 2 +const useStyles = makeStyles(theme => ({ + colAction: { + "&:last-child": { + paddingRight: 0 }, - colName: { - width: "auto" + width: 76 + theme.spacing(0.5) + }, + colName: { + width: "auto" + }, + colNameLabel: { + marginLeft: AVATAR_MARGIN + }, + colPrice: { + textAlign: "right", + width: 150 + }, + colQuantity: { + textAlign: "right", + width: 80 + }, + colTotal: { + textAlign: "right", + width: 150 + }, + quantityField: { + "& input": { + padding: "12px 12px 10px", + textAlign: "right" }, - colNameLabel: { - marginLeft: AVATAR_MARGIN - }, - colPrice: { - textAlign: "right", - width: 150 - }, - colQuantity: { - textAlign: "right", - width: 80 - }, - colTotal: { - textAlign: "right", - width: 150 - }, - quantityField: { - "& input": { - padding: "12px 12px 10px", - textAlign: "right" - }, - width: 60 - }, - table: { - tableLayout: "fixed" - } - }); + width: 60 + }, + table: { + tableLayout: "fixed" + } +})); -interface OrderDraftDetailsProductsProps extends WithStyles { +interface OrderDraftDetailsProductsProps { lines: OrderDetails_order_lines[]; onOrderLineChange: (id: string, data: FormData) => void; onOrderLineRemove: (id: string) => void; } -const OrderDraftDetailsProducts = withStyles(styles, { - name: "OrderDraftDetailsProducts" -})( - ({ - classes, - lines, - onOrderLineChange, - onOrderLineRemove - }: OrderDraftDetailsProductsProps) => ( +const OrderDraftDetailsProducts: React.FC< + OrderDraftDetailsProductsProps +> = props => { + const { lines, onOrderLineChange, onOrderLineRemove } = props; + + const classes = useStyles(props); + + return ( {maybe(() => !!lines.length) && ( @@ -195,7 +188,7 @@ const OrderDraftDetailsProducts = withStyles(styles, { )}
- ) -); + ); +}; OrderDraftDetailsProducts.displayName = "OrderDraftDetailsProducts"; export default OrderDraftDetailsProducts; diff --git a/src/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx b/src/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx index 531799ba7..ab9a50f7c 100644 --- a/src/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx +++ b/src/orders/components/OrderDraftDetailsSummary/OrderDraftDetailsSummary.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; @@ -13,27 +8,30 @@ import Skeleton from "@saleor/components/Skeleton"; import { maybe } from "../../../misc"; import { OrderDetails_order } from "../../types/OrderDetails"; -const styles = (theme: Theme) => - createStyles({ - root: { - ...theme.typography.body2, - lineHeight: 1.9, - width: "100%" - }, - textRight: { - textAlign: "right" - } - }); +const useStyles = makeStyles(theme => ({ + root: { + ...theme.typography.body1, + lineHeight: 1.9, + width: "100%" + }, + textRight: { + textAlign: "right" + } +})); -interface OrderDraftDetailsSummaryProps extends WithStyles { +interface OrderDraftDetailsSummaryProps { order: OrderDetails_order; onShippingMethodEdit: () => void; } -const OrderDraftDetailsSummary = withStyles(styles, { - name: "OrderDraftDetailsSummary" -})( - ({ classes, order, onShippingMethodEdit }: OrderDraftDetailsSummaryProps) => ( +const OrderDraftDetailsSummary: React.FC< + OrderDraftDetailsSummaryProps +> = props => { + const { order, onShippingMethodEdit } = props; + + const classes = useStyles(props); + + return ( @@ -134,7 +132,7 @@ const OrderDraftDetailsSummary = withStyles(styles, {
- ) -); + ); +}; OrderDraftDetailsSummary.displayName = "OrderDraftDetailsSummary"; export default OrderDraftDetailsSummary; diff --git a/src/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx b/src/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx index 53a29a98d..32eed24dc 100644 --- a/src/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx +++ b/src/orders/components/OrderDraftFinalizeDialog/OrderDraftFinalizeDialog.tsx @@ -94,7 +94,7 @@ const OrderDraftFinalizeDialog: React.FC = ({ )} - createStyles({ - [theme.breakpoints.up("lg")]: { - colCustomer: { - width: 300 - }, - colDate: { - width: 300 - }, - colNumber: { - width: 120 - }, - colTotal: {} +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { + colCustomer: { + width: 300 + }, + colDate: { + width: 300 }, - colCustomer: {}, - colDate: {}, colNumber: { - paddingLeft: 0 + width: 120 }, - colTotal: { - textAlign: "right" - }, - link: { - cursor: "pointer" - } - }); + colTotal: {} + }, + colCustomer: {}, + colDate: {}, + colNumber: { + paddingLeft: 0 + }, + colTotal: { + textAlign: "right" + }, + link: { + cursor: "pointer" + } +})); -interface OrderDraftListProps - extends ListProps, - ListActions, - WithStyles { +interface OrderDraftListProps extends ListProps, ListActions { orders: OrderDraftList_draftOrders_edges_node[]; } const numberOfColumns = 5; -export const OrderDraftList = withStyles(styles, { name: "OrderDraftList" })( - ({ - classes, +export const OrderDraftList: React.FC = props => { + const { disabled, settings, orders, @@ -79,132 +69,133 @@ export const OrderDraftList = withStyles(styles, { name: "OrderDraftList" })( toggle, toggleAll, toolbar - }: OrderDraftListProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - const orderDraftList = orders - ? orders.map(order => ({ - ...order, - paymentStatus: transformPaymentStatus(order.paymentStatus, intl), - status: transformOrderStatus(order.status, intl) - })) - : undefined; + const intl = useIntl(); - return ( - - - - - - - - - - - - - - - - - - - - - - {renderCollection( - orderDraftList, - order => { - const isSelected = order ? isChecked(order.id) : false; + const orderDraftList = orders + ? orders.map(order => ({ + ...order, + paymentStatus: transformPaymentStatus(order.paymentStatus, intl), + status: transformOrderStatus(order.status, intl) + })) + : undefined; - return ( - - - toggle(order.id)} - /> - - - {maybe(() => order.number) ? ( - "#" + order.number - ) : ( - - )} - - - {maybe(() => order.created) ? ( - - ) : ( - - )} - - - {maybe(() => order.billingAddress) ? ( - <> - {order.billingAddress.firstName} -   - {order.billingAddress.lastName} - - ) : maybe(() => order.userEmail) !== undefined ? ( - order.userEmail - ) : ( - - )} - - - {maybe(() => order.total.gross) ? ( - - ) : ( - - )} - - - ); - }, - () => ( - - - + return ( +
+ + + + + + + + + + + + + + + + + + + + + {renderCollection( + orderDraftList, + order => { + const isSelected = order ? isChecked(order.id) : false; + + return ( + + + toggle(order.id)} + /> + + + {maybe(() => order.number) ? ( + "#" + order.number + ) : ( + + )} + + + {maybe(() => order.created) ? ( + + ) : ( + + )} + + + {maybe(() => order.billingAddress) ? ( + <> + {order.billingAddress.firstName} +   + {order.billingAddress.lastName} + + ) : maybe(() => order.userEmail) !== undefined ? ( + order.userEmail + ) : ( + + )} + + + {maybe(() => order.total.gross) ? ( + + ) : ( + + )} - ) - )} - -
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + + ); +}; OrderDraftList.displayName = "OrderDraftList"; export default OrderDraftList; diff --git a/src/orders/components/OrderDraftList/index.ts b/src/orders/components/OrderDraftList/index.ts index 96f0cae70..5733dc916 100644 --- a/src/orders/components/OrderDraftList/index.ts +++ b/src/orders/components/OrderDraftList/index.ts @@ -1,2 +1,2 @@ -export { default } from './OrderDraftList'; -export * from './OrderDraftList'; \ No newline at end of file +export { default } from "./OrderDraftList"; +export * from "./OrderDraftList"; diff --git a/src/orders/components/OrderDraftListPage/index.ts b/src/orders/components/OrderDraftListPage/index.ts index 5814e7cb1..de5e8daab 100644 --- a/src/orders/components/OrderDraftListPage/index.ts +++ b/src/orders/components/OrderDraftListPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './OrderDraftListPage'; -export * from './OrderDraftListPage'; \ No newline at end of file +export { default } from "./OrderDraftListPage"; +export * from "./OrderDraftListPage"; diff --git a/src/orders/components/OrderDraftPage/OrderDraftPage.tsx b/src/orders/components/OrderDraftPage/OrderDraftPage.tsx index e32a241ed..77cf46f3a 100644 --- a/src/orders/components/OrderDraftPage/OrderDraftPage.tsx +++ b/src/orders/components/OrderDraftPage/OrderDraftPage.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { useIntl } from "react-intl"; @@ -28,16 +23,15 @@ import OrderDraftDetails from "../OrderDraftDetails/OrderDraftDetails"; import { FormData as OrderDraftDetailsProductsFormData } from "../OrderDraftDetailsProducts"; import OrderHistory, { FormData as HistoryFormData } from "../OrderHistory"; -const styles = (theme: Theme) => - createStyles({ - date: { - marginBottom: theme.spacing.unit * 3, - marginLeft: theme.spacing.unit * 7 - }, - header: { - marginBottom: 0 - } - }); +const useStyles = makeStyles(theme => ({ + date: { + marginBottom: theme.spacing(3), + marginLeft: theme.spacing(7) + }, + header: { + marginBottom: 0 + } +})); export interface OrderDraftPageProps extends FetchMoreProps, @@ -70,9 +64,8 @@ export interface OrderDraftPageProps onProfileView: () => void; } -const OrderDraftPage = withStyles(styles, { name: "OrderDraftPage" })( - ({ - classes, +const OrderDraftPage: React.FC = props => { + const { disabled, fetchUsers, hasMore, @@ -94,86 +87,87 @@ const OrderDraftPage = withStyles(styles, { name: "OrderDraftPage" })( users, usersLoading, userPermissions - }: OrderDraftPageProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - - {intl.formatMessage(sectionNames.draftOrders)} - - order.number) ? "#" + order.number : undefined} - > - - -
- {order && order.created ? ( - - - - ) : ( - - )} -
- -
- - order.events)} - onNoteAdd={onNoteAdd} - /> -
-
- -
-
- order.canFinalize)} - onCancel={onBack} - onSave={onDraftFinalize} - labels={{ - save: intl.formatMessage({ - defaultMessage: "Finalize", - description: "button" - }) - }} + const intl = useIntl(); + + return ( + + + {intl.formatMessage(sectionNames.draftOrders)} + + order.number) ? "#" + order.number : undefined} + > + - - ); - } -); + +
+ {order && order.created ? ( + + + + ) : ( + + )} +
+ +
+ + order.events)} + onNoteAdd={onNoteAdd} + /> +
+
+ +
+
+ order.canFinalize)} + onCancel={onBack} + onSave={onDraftFinalize} + labels={{ + save: intl.formatMessage({ + defaultMessage: "Finalize", + description: "button" + }) + }} + /> +
+ ); +}; OrderDraftPage.displayName = "OrderDraftPage"; export default OrderDraftPage; diff --git a/src/orders/components/OrderFulfillment/OrderFulfillment.tsx b/src/orders/components/OrderFulfillment/OrderFulfillment.tsx index 8c35c4a49..a3be33a78 100644 --- a/src/orders/components/OrderFulfillment/OrderFulfillment.tsx +++ b/src/orders/components/OrderFulfillment/OrderFulfillment.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardActions from "@material-ui/core/CardActions"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -28,43 +23,42 @@ import { maybe, renderCollection } from "../../../misc"; import { FulfillmentStatus } from "../../../types/globalTypes"; import { OrderDetails_order_fulfillments } from "../../types/OrderDetails"; -const styles = (theme: Theme) => - createStyles({ - clickableRow: { - cursor: "pointer" - }, - colName: { - width: "auto" - }, - colNameLabel: { - marginLeft: AVATAR_MARGIN - }, - colPrice: { - textAlign: "right", - width: 120 - }, - colQuantity: { - textAlign: "center", - width: 120 - }, - colTotal: { - textAlign: "right", - width: 120 - }, +const useStyles = makeStyles(theme => ({ + clickableRow: { + cursor: "pointer" + }, + colName: { + width: "auto" + }, + colNameLabel: { + marginLeft: AVATAR_MARGIN + }, + colPrice: { + textAlign: "right", + width: 120 + }, + colQuantity: { + textAlign: "center", + width: 120 + }, + colTotal: { + textAlign: "right", + width: 120 + }, - orderNumber: { - display: "inline", - marginLeft: theme.spacing.unit - }, - statusBar: { - paddingTop: 0 - }, - table: { - tableLayout: "fixed" - } - }); + orderNumber: { + display: "inline", + marginLeft: theme.spacing(1) + }, + statusBar: { + paddingTop: 0 + }, + table: { + tableLayout: "fixed" + } +})); -interface OrderFulfillmentProps extends WithStyles { +interface OrderFulfillmentProps { fulfillment: OrderDetails_order_fulfillments; orderNumber: string; onOrderFulfillmentCancel: () => void; @@ -73,178 +67,178 @@ interface OrderFulfillmentProps extends WithStyles { const numberOfColumns = 3; -const OrderFulfillment = withStyles(styles, { name: "OrderFulfillment" })( - ({ - classes, +const OrderFulfillment: React.FC = props => { + const { fulfillment, orderNumber, onOrderFulfillmentCancel, onTrackingCodeAdd - }: OrderFulfillmentProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - const lines = maybe(() => fulfillment.lines); - const status = maybe(() => fulfillment.status); - const quantity = lines - ? lines.map(line => line.quantity).reduce((prev, curr) => prev + curr, 0) - : "..."; + const intl = useIntl(); - return ( - - - {status === FulfillmentStatus.FULFILLED - ? intl.formatMessage( - { - defaultMessage: "Fulfilled ({quantity})", - description: "section header" - }, - { - quantity - } - ) - : intl.formatMessage( - { - defaultMessage: "Fulfilled ({quantity})", - description: "section header" - }, - { - quantity - } - )} - - {maybe( - () => `#${orderNumber}-${fulfillment.fulfillmentOrder}` + const lines = maybe(() => fulfillment.lines); + const status = maybe(() => fulfillment.status); + const quantity = lines + ? lines.map(line => line.quantity).reduce((prev, curr) => prev + curr, 0) + : "..."; + + return ( + + + {status === FulfillmentStatus.FULFILLED + ? intl.formatMessage( + { + defaultMessage: "Fulfilled ({quantity})", + description: "section header" + }, + { + quantity + } + ) + : intl.formatMessage( + { + defaultMessage: "Fulfilled ({quantity})", + description: "section header" + }, + { + quantity + } )} - - + + {maybe( + () => `#${orderNumber}-${fulfillment.fulfillmentOrder}` + )} + + + } + status={ + status === FulfillmentStatus.FULFILLED ? "success" : "error" + } + /> + ) : ( + + ) + } + toolbar={ + maybe(() => fulfillment.status) === FulfillmentStatus.FULFILLED && ( + - ) : ( - - ) - } - toolbar={ - maybe(() => fulfillment.status) === FulfillmentStatus.FULFILLED && ( - - ) - } - /> - - - - - - - - - + ]} + /> + ) + } + /> +
+ + + + + + + + + + + + + + + + + + + {renderCollection(lines, line => ( + line.id)} + > + line.orderLine.thumbnail.url)} + > + {maybe(() => line.orderLine.productName) || } + + + {maybe(() => line.quantity) || } - + {maybe(() => line.orderLine.unitPrice.gross) ? ( + + ) : ( + + )} + {maybe( + () => line.quantity * line.orderLine.unitPrice.gross.amount + ) ? ( + + ) : ( + + )} + + + ))} + {maybe(() => fulfillment.trackingNumber) && ( + + - - - {renderCollection(lines, line => ( - line.id)} - > - line.orderLine.thumbnail.url)} - > - {maybe(() => line.orderLine.productName) || } - - - {maybe(() => line.quantity) || } - - - {maybe(() => line.orderLine.unitPrice.gross) ? ( - - ) : ( - - )} - - - {maybe( - () => line.quantity * line.orderLine.unitPrice.gross.amount - ) ? ( - - ) : ( - - )} - - - ))} - {maybe(() => fulfillment.trackingNumber) && ( - - - - - - )} - -
- {status === FulfillmentStatus.FULFILLED && !fulfillment.trackingNumber && ( - - - - )} -
- ); - } -); + )} + + + {status === FulfillmentStatus.FULFILLED && !fulfillment.trackingNumber && ( + + + + )} + + ); +}; OrderFulfillment.displayName = "OrderFulfillment"; export default OrderFulfillment; diff --git a/src/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx b/src/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx index 2517c6623..8272eb8e4 100644 --- a/src/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx +++ b/src/orders/components/OrderFulfillmentCancelDialog/OrderFulfillmentCancelDialog.tsx @@ -4,12 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogContentText from "@material-ui/core/DialogContentText"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -24,83 +19,83 @@ export interface FormData { restock: boolean; } -const styles = (theme: Theme) => - createStyles({ - deleteButton: { - "&:hover": { - backgroundColor: theme.palette.error.main - }, - backgroundColor: theme.palette.error.main, - color: theme.palette.error.contrastText - } - }); +const useStyles = makeStyles(theme => ({ + deleteButton: { + "&:hover": { + backgroundColor: theme.palette.error.main + }, + backgroundColor: theme.palette.error.main, + color: theme.palette.error.contrastText + } +})); -interface OrderFulfillmentCancelDialogProps extends WithStyles { +interface OrderFulfillmentCancelDialogProps { confirmButtonState: ConfirmButtonTransitionState; open: boolean; onClose(); onConfirm(data: FormData); } -const OrderFulfillmentCancelDialog = withStyles(styles, { - name: "OrderFulfillmentCancelDialog" -})( - ({ +const OrderFulfillmentCancelDialog: React.FC< + OrderFulfillmentCancelDialogProps +> = props => { + const { confirmButtonState, - classes, + open, onConfirm, onClose - }: OrderFulfillmentCancelDialogProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - -
- {({ change, data, submit }) => ( - <> - + const intl = useIntl(); + + return ( + + + {({ change, data, submit }) => ( + <> + + + + + + + + + + + + - - - - - - - - - - - - - - - )} -
-
- ); - } -); + + + + )} + + + ); +}; OrderFulfillmentCancelDialog.displayName = "OrderFulfillmentCancelDialog"; export default OrderFulfillmentCancelDialog; diff --git a/src/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx b/src/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx index 7cc07467d..e08f923e6 100644 --- a/src/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx +++ b/src/orders/components/OrderFulfillmentDialog/OrderFulfillmentDialog.tsx @@ -3,12 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -35,38 +30,37 @@ export interface FormData { trackingNumber: string; } -const styles = (theme: Theme) => - createStyles({ - colName: { - width: "auto" - }, - colNameLabel: { - marginLeft: AVATAR_MARGIN - }, - colQuantity: { - textAlign: "right", - width: 150 - }, - colQuantityContent: { - alignItems: "center", - display: "inline-flex" - }, - colSku: { - width: 120 - }, - quantityInput: { - width: "4rem" - }, - remainingQuantity: { - marginLeft: theme.spacing.unit, - paddingTop: 14 - }, - table: { - tableLayout: "fixed" - } - }); +const useStyles = makeStyles(theme => ({ + colName: { + width: "auto" + }, + colNameLabel: { + marginLeft: AVATAR_MARGIN + }, + colQuantity: { + textAlign: "right", + width: 150 + }, + colQuantityContent: { + alignItems: "center", + display: "inline-flex" + }, + colSku: { + width: 120 + }, + quantityInput: { + width: "4rem" + }, + remainingQuantity: { + marginLeft: theme.spacing(), + paddingTop: 14 + }, + table: { + tableLayout: "fixed" + } +})); -export interface OrderFulfillmentDialogProps extends WithStyles { +export interface OrderFulfillmentDialogProps { confirmButtonState: ConfirmButtonTransitionState; open: boolean; lines: OrderDetails_order_lines[]; @@ -74,153 +68,146 @@ export interface OrderFulfillmentDialogProps extends WithStyles { onSubmit(data: FormData); } -const OrderFulfillmentDialog = withStyles(styles, { - name: "OrderFulfillmentDialog" -})( - ({ - classes, - confirmButtonState, - open, - lines, - onClose, - onSubmit - }: OrderFulfillmentDialogProps) => { - const intl = useIntl(); +const OrderFulfillmentDialog: React.FC = props => { + const { confirmButtonState, open, lines, onClose, onSubmit } = props; - return ( - -
- lines.map( - product => product.quantity - product.quantityFulfilled - ), - [] - ), - trackingNumber: "" - }} - onSubmit={onSubmit} - > - {({ data, change }) => { - const handleQuantityChange = ( - productIndex: number, - event: React.ChangeEvent - ) => { - const newData = data.lines; - newData[productIndex] = event.target.value; - change({ - target: { - name: "lines", - value: newData - } - } as any); - }; - return ( - <> - - - - - - - - - - - - - - - - - - - - - {lines.map((product, productIndex) => { - const remainingQuantity = - product.quantity - product.quantityFulfilled; - return ( - - product.thumbnail.url)} - > - {product.productName} - - - {product.productSku} - - -
- - handleQuantityChange(productIndex, event) - } - error={ - remainingQuantity < data.lines[productIndex] - } - /> -
- / {remainingQuantity} -
+ const classes = useStyles(props); + const intl = useIntl(); + + return ( + + + lines.map( + product => product.quantity - product.quantityFulfilled + ), + [] + ), + trackingNumber: "" + }} + onSubmit={onSubmit} + > + {({ data, change }) => { + const handleQuantityChange = ( + productIndex: number, + event: React.ChangeEvent + ) => { + const newData = data.lines; + newData[productIndex] = event.target.value; + change({ + target: { + name: "lines", + value: newData + } + } as any); + }; + return ( + <> + + + +
+ + + + + + + + + + + + + + + + + {lines.map((product, productIndex) => { + const remainingQuantity = + product.quantity - product.quantityFulfilled; + return ( + + product.thumbnail.url)} + > + {product.productName} + + + {product.productSku} + + +
+ + handleQuantityChange(productIndex, event) + } + error={ + remainingQuantity < data.lines[productIndex] + } + /> +
+ / {remainingQuantity}
- - - ); - })} - -
- - - - - - - - - - - - ); - }} - -
- ); - } -); +
+ + + ); + })} + + + + + + + + + + + + + + ); + }} + + + ); +}; + OrderFulfillmentDialog.displayName = "OrderFulfillmentDialog"; export default OrderFulfillmentDialog; diff --git a/src/orders/components/OrderHistory/OrderHistory.tsx b/src/orders/components/OrderHistory/OrderHistory.tsx index aad80fb77..d33d4eab4 100644 --- a/src/orders/components/OrderHistory/OrderHistory.tsx +++ b/src/orders/components/OrderHistory/OrderHistory.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, IntlShape, useIntl } from "react-intl"; @@ -177,74 +172,74 @@ const getEventMessage = (event: OrderDetails_order_events, intl: IntlShape) => { } }; -const styles = (theme: Theme) => - createStyles({ - header: { - fontWeight: 500, - marginBottom: theme.spacing.unit - }, - root: { marginTop: theme.spacing.unit * 4 }, - user: { - marginBottom: theme.spacing.unit - } - }); +const useStyles = makeStyles(theme => ({ + header: { + fontWeight: 500, + marginBottom: theme.spacing(1) + }, + root: { marginTop: theme.spacing(4) }, + user: { + marginBottom: theme.spacing(1) + } +})); -interface OrderHistoryProps extends WithStyles { +interface OrderHistoryProps { history: OrderDetails_order_events[]; onNoteAdd: (data: FormData) => void; } -const OrderHistory = withStyles(styles, { name: "OrderHistory" })( - ({ classes, history, onNoteAdd }: OrderHistoryProps) => { - const intl = useIntl(); +const OrderHistory: React.FC = props => { + const { history, onNoteAdd } = props; + const classes = useStyles(props); - return ( -
- - - -
- {history ? ( - -
- {({ change, data, reset, submit }) => ( - - )} - - {history - .slice() - .reverse() - .map(event => { - if (event.type === OrderEventsEnum.NOTE_ADDED) { - return ( - - ); - } + const intl = useIntl(); + + return ( +
+ + + +
+ {history ? ( + +
+ {({ change, data, reset, submit }) => ( + + )} + + {history + .slice() + .reverse() + .map(event => { + if (event.type === OrderEventsEnum.NOTE_ADDED) { return ( - ); - })} -
- ) : ( - - )} -
- ); - } -); + } + return ( + + ); + })} +
+ ) : ( + + )} +
+ ); +}; OrderHistory.displayName = "OrderHistory"; export default OrderHistory; diff --git a/src/orders/components/OrderList/OrderList.tsx b/src/orders/components/OrderList/OrderList.tsx index fac1f596d..52babdc26 100644 --- a/src/orders/components/OrderList/OrderList.tsx +++ b/src/orders/components/OrderList/OrderList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -28,49 +23,44 @@ import { import { ListActions, ListProps } from "@saleor/types"; import { OrderList_orders_edges_node } from "../../types/OrderList"; -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colCustomer: { - width: 220 - }, - colDate: {}, - colFulfillment: { - width: 230 - }, - colNumber: { - width: 120 - }, - colPayment: { - width: 220 - }, - colTotal: {} +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { + colCustomer: { + width: 220 }, - colCustomer: {}, colDate: {}, - colFulfillment: {}, - colNumber: {}, - colPayment: {}, - colTotal: { - textAlign: "right" + colFulfillment: { + width: 230 }, - link: { - cursor: "pointer" - } - }); + colNumber: { + width: 120 + }, + colPayment: { + width: 220 + }, + colTotal: {} + }, + colCustomer: {}, + colDate: {}, + colFulfillment: {}, + colNumber: {}, + colPayment: {}, + colTotal: { + textAlign: "right" + }, + link: { + cursor: "pointer" + } +})); -interface OrderListProps - extends ListProps, - ListActions, - WithStyles { +interface OrderListProps extends ListProps, ListActions { orders: OrderList_orders_edges_node[]; } const numberOfColumns = 7; -export const OrderList = withStyles(styles, { name: "OrderList" })( - ({ - classes, +export const OrderList: React.FC = props => { + const { disabled, settings, orders, @@ -84,165 +74,166 @@ export const OrderList = withStyles(styles, { name: "OrderList" })( toggle, toggleAll, toolbar - }: OrderListProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - const orderList = orders - ? orders.map(order => ({ - ...order, - paymentStatus: transformPaymentStatus(order.paymentStatus, intl), - status: transformOrderStatus(order.status, intl) - })) - : undefined; - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - {renderCollection( - orderList, - order => { - const isSelected = order ? isChecked(order.id) : false; + const intl = useIntl(); - return ( - - - toggle(order.id)} - /> - - - {maybe(() => order.number) ? ( - "#" + order.number - ) : ( - - )} - - - {maybe(() => order.created) ? ( - - ) : ( - - )} - - - {maybe(() => order.billingAddress) ? ( - <> - {order.billingAddress.firstName} -   - {order.billingAddress.lastName} - - ) : maybe(() => order.userEmail) !== undefined ? ( - order.userEmail - ) : ( - - )} - - - {maybe(() => order.paymentStatus.status) !== undefined ? ( - order.paymentStatus.status === null ? null : ( - - ) - ) : ( - - )} - - - {maybe(() => order.status) ? ( + const orderList = orders + ? orders.map(order => ({ + ...order, + paymentStatus: transformPaymentStatus(order.paymentStatus, intl), + status: transformOrderStatus(order.status, intl) + })) + : undefined; + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + {renderCollection( + orderList, + order => { + const isSelected = order ? isChecked(order.id) : false; + + return ( + + + toggle(order.id)} + /> + + + {maybe(() => order.number) ? ( + "#" + order.number + ) : ( + + )} + + + {maybe(() => order.created) ? ( + + ) : ( + + )} + + + {maybe(() => order.billingAddress) ? ( + <> + {order.billingAddress.firstName} +   + {order.billingAddress.lastName} + + ) : maybe(() => order.userEmail) !== undefined ? ( + order.userEmail + ) : ( + + )} + + + {maybe(() => order.paymentStatus.status) !== undefined ? ( + order.paymentStatus.status === null ? null : ( - ) : ( - - )} - - - {maybe(() => order.total.gross) ? ( - - ) : ( - - )} - - - ); - }, - () => ( - - - + ) + ) : ( + + )} + + + {maybe(() => order.status) ? ( + + ) : ( + + )} + + + {maybe(() => order.total.gross) ? ( + + ) : ( + + )} - ) - )} - -
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + + ); +}; OrderList.displayName = "OrderList"; export default OrderList; diff --git a/src/orders/components/OrderPayment/OrderPayment.tsx b/src/orders/components/OrderPayment/OrderPayment.tsx index 80fc40273..e8b020c4a 100644 --- a/src/orders/components/OrderPayment/OrderPayment.tsx +++ b/src/orders/components/OrderPayment/OrderPayment.tsx @@ -2,12 +2,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardActions from "@material-ui/core/CardActions"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -20,22 +15,21 @@ import { maybe, transformPaymentStatus } from "../../../misc"; import { OrderAction, OrderStatus } from "../../../types/globalTypes"; import { OrderDetails_order } from "../../types/OrderDetails"; -const styles = (theme: Theme) => - createStyles({ - root: { - ...theme.typography.body2, - lineHeight: 1.9, - width: "100%" - }, - textRight: { - textAlign: "right" - }, - totalRow: { - fontWeight: 600 - } - }); +const useStyles = makeStyles(theme => ({ + root: { + ...theme.typography.body1, + lineHeight: 1.9, + width: "100%" + }, + textRight: { + textAlign: "right" + }, + totalRow: { + fontWeight: 600 + } +})); -interface OrderPaymentProps extends WithStyles { +interface OrderPaymentProps { order: OrderDetails_order; onCapture: () => void; onMarkAsPaid: () => void; @@ -43,253 +37,245 @@ interface OrderPaymentProps extends WithStyles { onVoid: () => void; } -const OrderPayment = withStyles(styles, { name: "OrderPayment" })( - ({ - classes, - order, - onCapture, - onMarkAsPaid, - onRefund, - onVoid - }: OrderPaymentProps) => { - const intl = useIntl(); +const OrderPayment: React.FC = props => { + const { order, onCapture, onMarkAsPaid, onRefund, onVoid } = props; + const classes = useStyles(props); - const canCapture = maybe(() => order.actions, []).includes( - OrderAction.CAPTURE - ); - const canVoid = maybe(() => order.actions, []).includes(OrderAction.VOID); - const canRefund = maybe(() => order.actions, []).includes( - OrderAction.REFUND - ); - const canMarkAsPaid = maybe(() => order.actions, []).includes( - OrderAction.MARK_AS_PAID - ); - const payment = transformPaymentStatus( - maybe(() => order.paymentStatus), - intl - ); - return ( - - order.paymentStatus) === undefined ? ( - - ) : ( - - ) - } - /> - - - - - + + + + + + + + + + + + + + + + + +
+ const intl = useIntl(); + + const canCapture = maybe(() => order.actions, []).includes( + OrderAction.CAPTURE + ); + const canVoid = maybe(() => order.actions, []).includes(OrderAction.VOID); + const canRefund = maybe(() => order.actions, []).includes(OrderAction.REFUND); + const canMarkAsPaid = maybe(() => order.actions, []).includes( + OrderAction.MARK_AS_PAID + ); + const payment = transformPaymentStatus( + maybe(() => order.paymentStatus), + intl + ); + return ( + + order.paymentStatus) === undefined ? ( + + ) : ( + + ) + } + /> + + + + + + - - - - - - - - - - - - - - - - - - -
+ + + {maybe(() => order.lines) === undefined ? ( + + ) : ( line.quantity) + .reduce((curr, prev) => prev + curr, 0) + }} /> - - {maybe(() => order.lines) === undefined ? ( - - ) : ( - line.quantity) - .reduce((curr, prev) => prev + curr, 0) - }} - /> - )} - - {maybe(() => order.subtotal.gross) === undefined ? ( - - ) : ( - - )} -
- - - {maybe(() => order.total.tax) === undefined ? ( - - ) : order.total.tax.amount > 0 ? ( - intl.formatMessage({ - defaultMessage: "VAT included", - description: "vat included in order price" - }) - ) : ( - intl.formatMessage({ - defaultMessage: "does not apply", - description: "vat not included in order price", - id: "orderPaymentVATDoesNotApply" - }) - )} - - {maybe(() => order.total.tax) === undefined ? ( - - ) : ( - - )} -
- - - {maybe(() => order.shippingMethodName) === undefined && - maybe(() => order.shippingPrice) === undefined ? ( - - ) : order.shippingMethodName === null ? ( - intl.formatMessage({ - defaultMessage: "does not apply", - description: "order does not require shipping", - id: "orderPaymentShippingDoesNotApply" - }) - ) : ( - order.shippingMethodName - )} - - {maybe(() => order.shippingPrice.gross) === undefined ? ( - - ) : ( - - )} -
- - - - {maybe(() => order.total.gross) === undefined ? ( - - ) : ( - - )} -
-
-
- - - - - - - - - - - - - - - - -
- - - {maybe(() => order.totalAuthorized.amount) === undefined ? ( - - ) : ( - - )} -
- - - {maybe(() => order.totalCaptured.amount) === undefined ? ( - - ) : ( - - )} -
- - - {maybe( - () => order.total.gross.amount && order.totalCaptured.amount - ) === undefined ? ( - - ) : ( - - )} -
-
- {maybe(() => order.status) !== OrderStatus.CANCELED && - (canCapture || canRefund || canVoid || canMarkAsPaid) && ( - <> -
- - {canCapture && ( - )} - {canRefund && ( - +
+ {maybe(() => order.subtotal.gross) === undefined ? ( + + ) : ( + )} - {canVoid && ( - +
+ + + {maybe(() => order.total.tax) === undefined ? ( + + ) : order.total.tax.amount > 0 ? ( + intl.formatMessage({ + defaultMessage: "VAT included", + description: "vat included in order price" + }) + ) : ( + intl.formatMessage({ + defaultMessage: "does not apply", + description: "vat not included in order price", + id: "orderPaymentVATDoesNotApply" + }) )} - {canMarkAsPaid && ( - + + {maybe(() => order.total.tax) === undefined ? ( + + ) : ( + )} - - - )} - - ); - } -); +
+ + + {maybe(() => order.shippingMethodName) === undefined && + maybe(() => order.shippingPrice) === undefined ? ( + + ) : order.shippingMethodName === null ? ( + intl.formatMessage({ + defaultMessage: "does not apply", + description: "order does not require shipping", + id: "orderPaymentShippingDoesNotApply" + }) + ) : ( + order.shippingMethodName + )} + + {maybe(() => order.shippingPrice.gross) === undefined ? ( + + ) : ( + + )} +
+ + + + {maybe(() => order.total.gross) === undefined ? ( + + ) : ( + + )} +
+
+
+ + + + + + + + + + + + + + + + +
+ + + {maybe(() => order.totalAuthorized.amount) === undefined ? ( + + ) : ( + + )} +
+ + + {maybe(() => order.totalCaptured.amount) === undefined ? ( + + ) : ( + + )} +
+ + + {maybe( + () => order.total.gross.amount && order.totalCaptured.amount + ) === undefined ? ( + + ) : ( + + )} +
+
+ {maybe(() => order.status) !== OrderStatus.CANCELED && + (canCapture || canRefund || canVoid || canMarkAsPaid) && ( + <> +
+ + {canCapture && ( + + )} + {canRefund && ( + + )} + {canVoid && ( + + )} + {canMarkAsPaid && ( + + )} + + + )} +
+ ); +}; OrderPayment.displayName = "OrderPayment"; export default OrderPayment; diff --git a/src/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx b/src/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx index c4d4b789e..e1d5b55da 100644 --- a/src/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx +++ b/src/orders/components/OrderProductAddDialog/OrderProductAddDialog.tsx @@ -4,12 +4,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -34,49 +29,48 @@ import { SearchOrderVariant_search_edges_node_variants } from "../../types/SearchOrderVariant"; -const styles = (theme: Theme) => - createStyles({ - avatar: { - paddingLeft: 0 - }, - colName: { - paddingLeft: 0 - }, - colVariantCheckbox: { - padding: 0 - }, - content: { - overflowY: "scroll" - }, - grayText: { - color: theme.palette.text.disabled - }, - loadMoreLoaderContainer: { - alignItems: "center", - display: "flex", - height: theme.spacing.unit * 3, - justifyContent: "center" - }, - overflow: { - overflowY: "visible" - }, - productCheckboxCell: { - "&:first-child": { - paddingLeft: 0, - paddingRight: 0 - } - }, - textRight: { - textAlign: "right" - }, - variantCheckbox: { - left: theme.spacing.unit, - position: "relative" - }, - wideCell: { - width: "100%" +const useStyles = makeStyles(theme => ({ + avatar: { + paddingLeft: 0 + }, + colName: { + paddingLeft: 0 + }, + colVariantCheckbox: { + padding: 0 + }, + content: { + overflowY: "scroll" + }, + grayText: { + color: theme.palette.text.disabled + }, + loadMoreLoaderContainer: { + alignItems: "center", + display: "flex", + height: theme.spacing(3), + justifyContent: "center" + }, + overflow: { + overflowY: "visible" + }, + productCheckboxCell: { + "&:first-child": { + paddingLeft: 0, + paddingRight: 0 } - }); + }, + textRight: { + textAlign: "right" + }, + variantCheckbox: { + left: theme.spacing(), + position: "relative" + }, + wideCell: { + width: "100%" + } +})); type SetVariantsAction = ( data: SearchOrderVariant_search_edges_node_variants[] @@ -154,11 +148,8 @@ const onVariantAdd = ( ) : setVariants([...variants, variant]); -const OrderProductAddDialog = withStyles(styles, { - name: "OrderProductAddDialog" -})( - ({ - classes, +const OrderProductAddDialog: React.FC = props => { + const { confirmButtonState, open, loading, @@ -168,181 +159,182 @@ const OrderProductAddDialog = withStyles(styles, { onFetchMore, onClose, onSubmit - }: OrderProductAddDialogProps & WithStyles) => { - const intl = useIntl(); - const [query, onQueryChange] = useSearchQuery(onFetch); - const [variants, setVariants] = React.useState< - SearchOrderVariant_search_edges_node_variants[] - >([]); + } = props; + const classes = useStyles(props); - const selectedVariantsToProductsMap = products - ? products.map(product => - product.variants.map(variant => isVariantSelected(variant, variants)) - ) - : []; - const productsWithAllVariantsSelected = products - ? products.map(product => - hasAllVariantsSelected(product.variants, variants) - ) - : []; + const intl = useIntl(); + const [query, onQueryChange] = useSearchQuery(onFetch); + const [variants, setVariants] = React.useState< + SearchOrderVariant_search_edges_node_variants[] + >([]); - const handleSubmit = () => onSubmit(variants); + const selectedVariantsToProductsMap = products + ? products.map(product => + product.variants.map(variant => isVariantSelected(variant, variants)) + ) + : []; + const productsWithAllVariantsSelected = products + ? products.map(product => + hasAllVariantsSelected(product.variants, variants) + ) + : []; - return ( - - - - - - - }} - /> - - - - -
- } - threshold={10} - > - - - {renderCollection( - products, - (product, productIndex) => ( - - - - - onProductAdd( - product, - productIndex, - productsWithAllVariantsSelected, - variants, - setVariants - ) - } - /> - - product.thumbnail.url)} - /> - - {maybe(() => product.name)} - - - {maybe(() => product.variants, []).map( - (variant, variantIndex) => ( - - - - - onVariantAdd( - variant, - variantIndex, - productIndex, - variants, - selectedVariantsToProductsMap, - setVariants - ) - } - /> - - -
{variant.name}
-
- -
-
- - - -
- ) - )} -
- ), - () => ( + const handleSubmit = () => onSubmit(variants); + + return ( + + + + + + + }} + /> + + + + + + } + threshold={10} + > +
+ + {renderCollection( + products, + (product, productIndex) => ( + - - + + + onProductAdd( + product, + productIndex, + productsWithAllVariantsSelected, + variants, + setVariants + ) + } + /> + + product.thumbnail.url)} + /> + + {maybe(() => product.name)} - ) - )} - -
- - - - - - - - - - ); - } -); + {maybe(() => product.variants, []).map( + (variant, variantIndex) => ( + + + + + onVariantAdd( + variant, + variantIndex, + productIndex, + variants, + selectedVariantsToProductsMap, + setVariants + ) + } + /> + + +
{variant.name}
+
+ +
+
+ + + +
+ ) + )} + + ), + () => ( + + + + + + ) + )} + + + + + + + + + + + + ); +}; OrderProductAddDialog.displayName = "OrderProductAddDialog"; export default OrderProductAddDialog; diff --git a/src/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx b/src/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx index 7c2ad2dcf..9c3960e84 100644 --- a/src/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx +++ b/src/orders/components/OrderShippingMethodEditDialog/OrderShippingMethodEditDialog.tsx @@ -3,12 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; @@ -25,27 +20,29 @@ export interface FormData { shippingMethod: string; } -const styles = (theme: Theme) => - createStyles({ - dialog: { - overflowY: "visible" - }, - menuItem: { - display: "flex", - width: "100%" - }, - root: { - overflowY: "visible", - width: theme.breakpoints.values.sm - }, - shippingMethodName: { - flex: 1, - overflowX: "hidden", - textOverflow: "ellipsis" - } - }); +const useStyles = makeStyles(theme => ({ + dialog: { + overflowY: "visible" + }, + menuItem: { + display: "flex", + width: "100%" + }, + price: { + marginRight: theme.spacing(3) + }, + root: { + overflowY: "visible", + width: theme.breakpoints.values.sm + }, + shippingMethodName: { + flex: 1, + overflowX: "hidden", + textOverflow: "ellipsis" + } +})); -interface OrderShippingMethodEditDialogProps extends WithStyles { +interface OrderShippingMethodEditDialogProps { confirmButtonState: ConfirmButtonTransitionState; open: boolean; shippingMethod: string; @@ -54,73 +51,73 @@ interface OrderShippingMethodEditDialogProps extends WithStyles { onSubmit?(data: FormData); } -const OrderShippingMethodEditDialog = withStyles(styles, { - name: "OrderShippingMethodEditDialog" -})( - ({ - classes, +const OrderShippingMethodEditDialog: React.FC< + OrderShippingMethodEditDialogProps +> = props => { + const { confirmButtonState, open, shippingMethod, shippingMethods, onClose, onSubmit - }: OrderShippingMethodEditDialogProps) => { - const choices = shippingMethods - ? shippingMethods.map(s => ({ - label: ( -
- {s.name} -   - - - -
- ), - value: s.id - })) - : []; - const initialForm: FormData = { - shippingMethod - }; - return ( - - - - -
- {({ change, data }) => ( - <> - - - - - - - - - - - )} -
-
- ); - } -); + } = props; + const classes = useStyles(props); + + const choices = shippingMethods + ? shippingMethods.map(s => ({ + label: ( +
+ {s.name} +   + + + +
+ ), + value: s.id + })) + : []; + const initialForm: FormData = { + shippingMethod + }; + return ( + + + + +
+ {({ change, data }) => ( + <> + + + + + + + + + + + )} +
+
+ ); +}; OrderShippingMethodEditDialog.displayName = "OrderShippingMethodEditDialog"; export default OrderShippingMethodEditDialog; diff --git a/src/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx b/src/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx index c0ff1a313..7dac6d301 100644 --- a/src/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx +++ b/src/orders/components/OrderUnfulfilledItems/OrderUnfulfilledItems.tsx @@ -1,7 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardActions from "@material-ui/core/CardActions"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -20,7 +20,7 @@ import TableCellAvatar, { import { maybe } from "../../../misc"; import { OrderDetails_order_lines } from "../../types/OrderDetails"; -const styles = createStyles({ +const useStyles = makeStyles({ clickableRow: { cursor: "pointer" }, @@ -51,15 +51,16 @@ const styles = createStyles({ } }); -interface OrderUnfulfilledItemsProps extends WithStyles { +interface OrderUnfulfilledItemsProps { canFulfill: boolean; lines: OrderDetails_order_lines[]; onFulfill: () => void; } -const OrderUnfulfilledItems = withStyles(styles, { - name: "OrderUnfulfilledItems" -})(({ canFulfill, classes, lines, onFulfill }: OrderUnfulfilledItemsProps) => { +const OrderUnfulfilledItems: React.FC = props => { + const { canFulfill, lines, onFulfill } = props; + const classes = useStyles(props); + const intl = useIntl(); return ( @@ -169,6 +170,6 @@ const OrderUnfulfilledItems = withStyles(styles, { )}
); -}); +}; OrderUnfulfilledItems.displayName = "OrderUnfulfilledItems"; export default OrderUnfulfilledItems; diff --git a/src/orders/views/OrderDraftList/OrderDraftList.tsx b/src/orders/views/OrderDraftList/OrderDraftList.tsx index 0743de001..bbda0756e 100644 --- a/src/orders/views/OrderDraftList/OrderDraftList.tsx +++ b/src/orders/views/OrderDraftList/OrderDraftList.tsx @@ -236,10 +236,7 @@ export const OrderDraftList: React.FC = ({ params }) => { > params.ids.length), diff --git a/src/pages/components/PageDetailsPage/index.ts b/src/pages/components/PageDetailsPage/index.ts index c299df7ee..20a714c9c 100644 --- a/src/pages/components/PageDetailsPage/index.ts +++ b/src/pages/components/PageDetailsPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './PageDetailsPage'; -export * from './PageDetailsPage'; \ No newline at end of file +export { default } from "./PageDetailsPage"; +export * from "./PageDetailsPage"; diff --git a/src/pages/components/PageInfo/PageInfo.tsx b/src/pages/components/PageInfo/PageInfo.tsx index 955aa6892..a319d8f72 100644 --- a/src/pages/components/PageInfo/PageInfo.tsx +++ b/src/pages/components/PageInfo/PageInfo.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; @@ -22,61 +22,53 @@ export interface PageInfoProps { onChange: (event: React.ChangeEvent) => void; } -const styles = createStyles({ +const useStyles = makeStyles({ root: { overflow: "visible" } }); -const PageInfo = withStyles(styles, { - name: "PageInfo" -})( - ({ - classes, - data, - disabled, - errors, - page, - onChange - }: PageInfoProps & WithStyles) => { - const intl = useIntl(); +const PageInfo: React.FC = props => { + const { data, disabled, errors, page, onChange } = props; + const classes = useStyles(props); - return ( - - + + + - - - - JSON.parse(page.contentJson))} - label={intl.formatMessage({ - defaultMessage: "Content", - description: "page content" - })} - name={"content" as keyof FormData} - onChange={onChange} - /> - - - ); - } -); + + JSON.parse(page.contentJson))} + label={intl.formatMessage({ + defaultMessage: "Content", + description: "page content" + })} + name={"content" as keyof FormData} + onChange={onChange} + /> + +
+ ); +}; PageInfo.displayName = "PageInfo"; export default PageInfo; diff --git a/src/pages/components/PageInfo/index.ts b/src/pages/components/PageInfo/index.ts index 8bcf98a76..ae5d57a86 100644 --- a/src/pages/components/PageInfo/index.ts +++ b/src/pages/components/PageInfo/index.ts @@ -1,2 +1,2 @@ -export { default } from './PageInfo'; -export * from './PageInfo'; \ No newline at end of file +export { default } from "./PageInfo"; +export * from "./PageInfo"; diff --git a/src/pages/components/PageList/PageList.tsx b/src/pages/components/PageList/PageList.tsx index 89e283529..006d96326 100644 --- a/src/pages/components/PageList/PageList.tsx +++ b/src/pages/components/PageList/PageList.tsx @@ -1,10 +1,5 @@ import Card from "@material-ui/core/Card"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -26,32 +21,30 @@ export interface PageListProps extends ListProps, ListActions { pages: PageList_pages_edges_node[]; } -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colSlug: { - width: 250 - }, - colTitle: {}, - colVisibility: { - width: 200 - } +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { + colSlug: { + width: 250 }, - colSlug: {}, - colTitle: { - paddingLeft: 0 - }, - colVisibility: {}, - link: { - cursor: "pointer" + colTitle: {}, + colVisibility: { + width: 200 } - }); + }, + colSlug: {}, + colTitle: { + paddingLeft: 0 + }, + colVisibility: {}, + link: { + cursor: "pointer" + } +})); const numberOfColumns = 4; -const PageList = withStyles(styles, { name: "PageList" })( - ({ - classes, +const PageList: React.FC = props => { + const { settings, pages, disabled, @@ -65,121 +58,120 @@ const PageList = withStyles(styles, { name: "PageList" })( toggle, toggleAll, toolbar - }: PageListProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - - - - - - - - - - - - - - - - - - - {renderCollection( - pages, - page => { - const isSelected = page ? isChecked(page.id) : false; + const intl = useIntl(); - return ( - - - toggle(page.id)} - /> - - - {maybe(() => page.title, )} - - - {maybe(() => page.slug, )} - - - {maybe( - () => ( - - ), - - )} - - - ); - }, - () => ( - - - + return ( + +
+ + + + + + + + + + + + + + + + + + {renderCollection( + pages, + page => { + const isSelected = page ? isChecked(page.id) : false; + + return ( + + + toggle(page.id)} + /> + + + {maybe(() => page.title, )} + + + {maybe(() => page.slug, )} + + + {maybe( + () => ( + + ), + + )} - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + + + ); +}; PageList.displayName = "PageList"; export default PageList; diff --git a/src/pages/components/PageList/index.ts b/src/pages/components/PageList/index.ts index 0b888e9db..ceef274c3 100644 --- a/src/pages/components/PageList/index.ts +++ b/src/pages/components/PageList/index.ts @@ -1,2 +1,2 @@ -export { default } from './PageList'; -export * from './PageList'; \ No newline at end of file +export { default } from "./PageList"; +export * from "./PageList"; diff --git a/src/pages/components/PageListPage/index.ts b/src/pages/components/PageListPage/index.ts index c5d589974..f91170df4 100644 --- a/src/pages/components/PageListPage/index.ts +++ b/src/pages/components/PageListPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './PageListPage'; -export * from './PageListPage'; \ No newline at end of file +export { default } from "./PageListPage"; +export * from "./PageListPage"; diff --git a/src/pages/components/PageSlug/index.ts b/src/pages/components/PageSlug/index.ts index 06056b307..d307cb899 100644 --- a/src/pages/components/PageSlug/index.ts +++ b/src/pages/components/PageSlug/index.ts @@ -1,2 +1,2 @@ -export { default } from './PageSlug'; -export * from './PageSlug'; \ No newline at end of file +export { default } from "./PageSlug"; +export * from "./PageSlug"; diff --git a/src/pages/views/PageList.tsx b/src/pages/views/PageList.tsx index 92ac477f0..b8a487efc 100644 --- a/src/pages/views/PageList.tsx +++ b/src/pages/views/PageList.tsx @@ -189,10 +189,7 @@ export const PageList: React.FC = ({ params }) => { > params.ids.length), @@ -223,10 +220,7 @@ export const PageList: React.FC = ({ params }) => { })} > params.ids.length), @@ -254,10 +248,7 @@ export const PageList: React.FC = ({ params }) => { })} > params.ids.length), diff --git a/src/plugins/components/PluginInfo/PluginInfo.tsx b/src/plugins/components/PluginInfo/PluginInfo.tsx index 0a7c66824..670786cd5 100644 --- a/src/plugins/components/PluginInfo/PluginInfo.tsx +++ b/src/plugins/components/PluginInfo/PluginInfo.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import Typography from "@material-ui/core/Typography"; -import makeStyles from "@material-ui/styles/makeStyles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; diff --git a/src/plugins/components/PluginSettings/PluginSettings.tsx b/src/plugins/components/PluginSettings/PluginSettings.tsx index 4a71b4a70..aba2a19de 100644 --- a/src/plugins/components/PluginSettings/PluginSettings.tsx +++ b/src/plugins/components/PluginSettings/PluginSettings.tsx @@ -1,7 +1,7 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import TextField from "@material-ui/core/TextField"; -import makeStyles from "@material-ui/styles/makeStyles"; import CardTitle from "@saleor/components/CardTitle"; import ControlledCheckbox from "@saleor/components/ControlledCheckbox"; import { FormErrors } from "@saleor/types"; diff --git a/src/plugins/components/PluginsList/PluginsList.tsx b/src/plugins/components/PluginsList/PluginsList.tsx index 357afa55c..b8e694d06 100644 --- a/src/plugins/components/PluginsList/PluginsList.tsx +++ b/src/plugins/components/PluginsList/PluginsList.tsx @@ -1,10 +1,5 @@ import Card from "@material-ui/core/Card"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -27,31 +22,29 @@ export interface PluginListProps extends ListProps { plugins: Plugins_plugins_edges_node[]; } -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colAction: { - "& svg": { - color: theme.palette.primary.main - }, - textAlign: "right" +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { + colAction: { + "& svg": { + color: theme.palette.primary.main }, - colActive: {}, - colName: {} + textAlign: "right" as "right" }, - colAction: {}, colActive: {}, - colName: {}, - link: { - cursor: "pointer" - } - }); + colName: {} + }, + colAction: {}, + colActive: {}, + colName: {}, + link: { + cursor: "pointer" + } +})); const numberOfColumns = 4; -const PluginList = withStyles(styles, { name: "PluginList" })( - ({ - classes, +const PluginList: React.FC = props => { + const { settings, plugins, disabled, @@ -60,96 +53,95 @@ const PluginList = withStyles(styles, { name: "PluginList" })( onRowClick, onUpdateListSettings, onPreviousPage - }: PluginListProps & WithStyles) => { - const intl = useIntl(); - return ( - - - - - {intl.formatMessage({ - defaultMessage: "Name", - description: "plugin name" - })} - - - {intl.formatMessage({ - defaultMessage: "Active", - description: "plugin status" - })} - - - {intl.formatMessage({ - defaultMessage: "Action", - description: "user action bar" - })} - - - - - - - - - {renderCollection( - plugins, - plugin => { - return ( - - - {maybe(() => plugin.name, )} - - - {maybe( - () => ( - - ), - - )} - - -
- -
-
-
- ); - }, - () => ( - - - {intl.formatMessage({ - defaultMessage: "No plugins found" - })} + } = props; + const classes = useStyles(props); + + const intl = useIntl(); + return ( + +
+ + + {intl.formatMessage({ + defaultMessage: "Name", + description: "plugin name" + })} + + + {intl.formatMessage({ + defaultMessage: "Active", + description: "plugin status" + })} + + + {intl.formatMessage({ + defaultMessage: "Action", + description: "user action bar" + })} + + + + + + + + + {renderCollection( + plugins, + plugin => { + return ( + + + {maybe(() => plugin.name, )} + + + {maybe( + () => ( + + ), + + )} + + +
+ +
- ) - )} -
-
-
- ); - } -); + ); + }, + () => ( + + + {intl.formatMessage({ + defaultMessage: "No plugins found" + })} + + + ) + )} + + + + ); +}; PluginList.displayName = "PluginList"; export default PluginList; diff --git a/src/productTypes/components/AssignAttributeDialog/AssignAttributeDialog.tsx b/src/productTypes/components/AssignAttributeDialog/AssignAttributeDialog.tsx index 6fd202086..addcf195a 100644 --- a/src/productTypes/components/AssignAttributeDialog/AssignAttributeDialog.tsx +++ b/src/productTypes/components/AssignAttributeDialog/AssignAttributeDialog.tsx @@ -5,14 +5,14 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogContentText from "@material-ui/core/DialogContentText"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import makeStyles from "@material-ui/styles/makeStyles"; +import classNames from "classnames"; import React from "react"; import InfiniteScroll from "react-infinite-scroller"; import { FormattedMessage, useIntl } from "react-intl"; @@ -21,6 +21,9 @@ import Checkbox from "@saleor/components/Checkbox"; import ConfirmButton, { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; +import useElementScroll, { + isScrolledToBottom +} from "@saleor/hooks/useElementScroll"; import useModalDialogErrors from "@saleor/hooks/useModalDialogErrors"; import useModalDialogOpen from "@saleor/hooks/useModalDialogOpen"; import useSearchQuery from "@saleor/hooks/useSearchQuery"; @@ -29,14 +32,20 @@ import { maybe, renderCollection } from "@saleor/misc"; import { FetchMoreProps } from "@saleor/types"; import { SearchAttributes_productType_availableAttributes_edges_node } from "../../containers/SearchAttributes/types/SearchAttributes"; -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ + actions: { + boxShadow: "0px 4px 4px rgba(0, 0, 0, 0.25)" + }, checkboxCell: { paddingLeft: 0 }, + dropShadow: { + boxShadow: `0px -5px 10px 0px ${theme.palette.divider}` + }, loadMoreLoaderContainer: { alignItems: "center", display: "flex", - height: theme.spacing.unit * 3, + height: theme.spacing(3), justifyContent: "center" }, scrollArea: { @@ -79,6 +88,8 @@ const AssignAttributeDialog: React.FC = ({ const classes = useStyles({}); const [query, onQueryChange, resetQuery] = useSearchQuery(onFetch); const errors = useModalDialogErrors(apiErrors, open); + const anchor = React.useRef(null); + const position = useElementScroll(anchor); useModalDialogOpen(open, { onClose: resetQuery, @@ -111,7 +122,7 @@ const AssignAttributeDialog: React.FC = ({ }} /> - + = ({ ))} )} - + diff --git a/src/productTypes/components/AssignAttributeDialog/index.ts b/src/productTypes/components/AssignAttributeDialog/index.ts index 2960aa002..b82623cee 100644 --- a/src/productTypes/components/AssignAttributeDialog/index.ts +++ b/src/productTypes/components/AssignAttributeDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './AssignAttributeDialog'; -export * from './AssignAttributeDialog'; \ No newline at end of file +export { default } from "./AssignAttributeDialog"; +export * from "./AssignAttributeDialog"; diff --git a/src/productTypes/components/ProductTypeAttributeUnassignDialog/index.ts b/src/productTypes/components/ProductTypeAttributeUnassignDialog/index.ts index dc8bd0a03..35eade813 100644 --- a/src/productTypes/components/ProductTypeAttributeUnassignDialog/index.ts +++ b/src/productTypes/components/ProductTypeAttributeUnassignDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './ProductTypeAttributeUnassignDialog'; -export * from './ProductTypeAttributeUnassignDialog'; \ No newline at end of file +export { default } from "./ProductTypeAttributeUnassignDialog"; +export * from "./ProductTypeAttributeUnassignDialog"; diff --git a/src/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx b/src/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx index 4a71c7edf..70ec32531 100644 --- a/src/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx +++ b/src/productTypes/components/ProductTypeAttributes/ProductTypeAttributes.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableCell from "@material-ui/core/TableCell"; import TableRow from "@material-ui/core/TableRow"; @@ -30,25 +25,24 @@ import { ProductTypeDetails_productType_variantAttributes } from "../../types/ProductTypeDetails"; -const styles = (theme: Theme) => - createStyles({ - colName: {}, - colSlug: { - width: 300 +const useStyles = makeStyles(theme => ({ + colName: {}, + colSlug: { + width: 300 + }, + iconCell: { + "&:last-child": { + paddingRight: 0 }, - iconCell: { - "&:last-child": { - paddingRight: 0 - }, - width: 48 + theme.spacing.unit * 1.5 - }, - link: { - cursor: "pointer" - }, - textLeft: { - textAlign: "left" - } - }); + width: 48 + theme.spacing(1.5) + }, + link: { + cursor: "pointer" + }, + textLeft: { + textAlign: "left" + } +})); interface ProductTypeAttributesProps extends ListActions { attributes: @@ -64,12 +58,10 @@ interface ProductTypeAttributesProps extends ListActions { const numberOfColumns = 5; -const ProductTypeAttributes = withStyles(styles, { - name: "ProductTypeAttributes" -})( - ({ +const ProductTypeAttributes: React.FC = props => { + const { attributes, - classes, + disabled, isChecked, selected, @@ -81,131 +73,132 @@ const ProductTypeAttributes = withStyles(styles, { onAttributeClick, onAttributeReorder, onAttributeUnassign - }: ProductTypeAttributesProps & WithStyles) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - + - onAttributeAssign(AttributeTypeEnum[type])} - > - - - } - /> - - onAttributeAssign(AttributeTypeEnum[type])} > - - - - - - - - - - {renderCollection( - attributes, - (attribute, attributeIndex) => { - const isSelected = attribute ? isChecked(attribute.id) : false; + + + } + /> +
+ + + + + + + + + + + {renderCollection( + attributes, + (attribute, attributeIndex) => { + const isSelected = attribute ? isChecked(attribute.id) : false; - return ( - onAttributeClick(attribute.id) - : undefined - } - key={maybe(() => attribute.id)} - index={attributeIndex || 0} - data-tc="id" - data-tc-id={maybe(() => attribute.id)} - > - - toggle(attribute.id)} - /> - - - {maybe(() => attribute.name) ? ( - attribute.name - ) : ( - - )} - - - {maybe(() => attribute.slug) ? ( - attribute.slug - ) : ( - - )} - - - - onAttributeUnassign(attribute.id) - )} - > - - - - - ); - }, - () => ( - - - + return ( + onAttributeClick(attribute.id) + : undefined + } + key={maybe(() => attribute.id)} + index={attributeIndex || 0} + data-tc="id" + data-tc-id={maybe(() => attribute.id)} + > + + toggle(attribute.id)} + /> - - ) - )} - -
-
- ); - } -); + + {maybe(() => attribute.name) ? ( + attribute.name + ) : ( + + )} + + + {maybe(() => attribute.slug) ? ( + attribute.slug + ) : ( + + )} + + + + onAttributeUnassign(attribute.id) + )} + > + + + + + ); + }, + () => ( + + + + + + ) + )} + + + + ); +}; ProductTypeAttributes.displayName = "ProductTypeAttributes"; export default ProductTypeAttributes; diff --git a/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/ProductTypeBulkAttributeUnassignDialog.tsx b/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/ProductTypeBulkAttributeUnassignDialog.tsx index 7f0de5fd4..874ecb7c7 100644 --- a/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/ProductTypeBulkAttributeUnassignDialog.tsx +++ b/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/ProductTypeBulkAttributeUnassignDialog.tsx @@ -39,10 +39,7 @@ const ProductTypeBulkAttributeUnassignDialog: React.FC< > {attributeQuantity}, diff --git a/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/index.ts b/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/index.ts index e6df37e86..8724c5f55 100644 --- a/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/index.ts +++ b/src/productTypes/components/ProductTypeBulkAttributeUnassignDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './ProductTypeBulkAttributeUnassignDialog'; -export * from './ProductTypeBulkAttributeUnassignDialog'; \ No newline at end of file +export { default } from "./ProductTypeBulkAttributeUnassignDialog"; +export * from "./ProductTypeBulkAttributeUnassignDialog"; diff --git a/src/productTypes/components/ProductTypeDeleteDialog/index.ts b/src/productTypes/components/ProductTypeDeleteDialog/index.ts index 4c9e6f92d..70a362a77 100644 --- a/src/productTypes/components/ProductTypeDeleteDialog/index.ts +++ b/src/productTypes/components/ProductTypeDeleteDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './ProductTypeDeleteDialog'; -export * from './ProductTypeDeleteDialog'; \ No newline at end of file +export { default } from "./ProductTypeDeleteDialog"; +export * from "./ProductTypeDeleteDialog"; diff --git a/src/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx b/src/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx index 6a9d6643d..4283e5587 100644 --- a/src/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx +++ b/src/productTypes/components/ProductTypeDetails/ProductTypeDetails.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; @@ -9,13 +9,13 @@ import CardTitle from "@saleor/components/CardTitle"; import { commonMessages } from "@saleor/intl"; import { FormErrors } from "@saleor/types"; -const styles = createStyles({ +const useStyles = makeStyles({ root: { overflow: "visible" } }); -interface ProductTypeDetailsProps extends WithStyles { +interface ProductTypeDetailsProps { data?: { name: string; }; @@ -24,32 +24,33 @@ interface ProductTypeDetailsProps extends WithStyles { onChange: (event: React.ChangeEvent) => void; } -const ProductTypeDetails = withStyles(styles, { name: "ProductTypeDetails" })( - ({ classes, data, disabled, errors, onChange }: ProductTypeDetailsProps) => { - const intl = useIntl(); +const ProductTypeDetails: React.FC = props => { + const { data, disabled, errors, onChange } = props; + const classes = useStyles(props); - return ( - - + + + - - - - - ); - } -); + + + ); +}; ProductTypeDetails.displayName = "ProductTypeDetails"; export default ProductTypeDetails; diff --git a/src/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx b/src/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx index 6ff04d80a..2ee600dd0 100644 --- a/src/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx +++ b/src/productTypes/components/ProductTypeDetailsPage/ProductTypeDetailsPage.tsx @@ -93,7 +93,7 @@ const ProductTypeDetailsPage: React.FC = ({ }) => { const intl = useIntl(); const [taxTypeDisplayName, setTaxTypeDisplayName] = useStateFromProps( - maybe(() => productType.taxType.description) + maybe(() => productType.taxType.description, "") ); const formInitialData: ProductTypeForm = { hasVariants: diff --git a/src/productTypes/components/ProductTypeList/ProductTypeList.tsx b/src/productTypes/components/ProductTypeList/ProductTypeList.tsx index 05cbb2825..eb45189aa 100644 --- a/src/productTypes/components/ProductTypeList/ProductTypeList.tsx +++ b/src/productTypes/components/ProductTypeList/ProductTypeList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -21,39 +16,34 @@ import { maybe, renderCollection } from "../../../misc"; import { ListActions, ListProps } from "../../../types"; import { ProductTypeList_productTypes_edges_node } from "../../types/ProductTypeList"; -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colName: {}, - colTax: { - width: 300 - }, - colType: { - width: 300 - } +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { + colName: {}, + colTax: { + width: 300 }, - colName: { - paddingLeft: 0 - }, - colTax: {}, - colType: {}, - link: { - cursor: "pointer" + colType: { + width: 300 } - }); + }, + colName: { + paddingLeft: 0 + }, + colTax: {}, + colType: {}, + link: { + cursor: "pointer" + } +})); -interface ProductTypeListProps - extends ListProps, - ListActions, - WithStyles { +interface ProductTypeListProps extends ListProps, ListActions { productTypes: ProductTypeList_productTypes_edges_node[]; } const numberOfColumns = 4; -const ProductTypeList = withStyles(styles, { name: "ProductTypeList" })( - ({ - classes, +const ProductTypeList: React.FC = props => { + const { disabled, productTypes, pageInfo, @@ -65,140 +55,138 @@ const ProductTypeList = withStyles(styles, { name: "ProductTypeList" })( toggle, toggleAll, toolbar - }: ProductTypeListProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - - - - - - - - - - - - - - - - - - {renderCollection( - productTypes, - productType => { - const isSelected = productType - ? isChecked(productType.id) - : false; - return ( - productType.id)} - > - - toggle(productType.id)} - /> - - - {productType ? ( + const intl = useIntl(); + + return ( +
+ + + + + + + + + + + + + + + + + + {renderCollection( + productTypes, + productType => { + const isSelected = productType ? isChecked(productType.id) : false; + return ( + productType.id)} + > + + toggle(productType.id)} + /> + + + {productType ? ( + <> + {productType.name} + + {maybe(() => productType.hasVariants) + ? intl.formatMessage({ + defaultMessage: "Configurable", + description: "product type" + }) + : intl.formatMessage({ + defaultMessage: "Simple product", + description: "product type" + })} + + + ) : ( + + )} + + + {maybe(() => productType.isShippingRequired) !== undefined ? ( + productType.isShippingRequired ? ( <> - {productType.name} - - {maybe(() => productType.hasVariants) - ? intl.formatMessage({ - defaultMessage: "Configurable", - description: "product type" - }) - : intl.formatMessage({ - defaultMessage: "Simple product", - description: "product type" - })} - + ) : ( - - )} - - - {maybe(() => productType.isShippingRequired) !== - undefined ? ( - productType.isShippingRequired ? ( - <> - - - ) : ( - <> - - - ) - ) : ( - - )} - - - {maybe(() => productType.taxType) ? ( - productType.taxType.description - ) : ( - - )} - - - ); - }, - () => ( - - - + <> + + + ) + ) : ( + + )} + + + {maybe(() => productType.taxType) ? ( + productType.taxType.description + ) : ( + + )} - ) - )} - -
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + + ); +}; ProductTypeList.displayName = "ProductTypeList"; export default ProductTypeList; diff --git a/src/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx b/src/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx index 3b2985c9a..ac2cdc27f 100644 --- a/src/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx +++ b/src/productTypes/components/ProductTypeTaxes/ProductTypeTaxes.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { useIntl } from "react-intl"; @@ -10,7 +10,7 @@ import { ProductTypeDetails_taxTypes } from "@saleor/productTypes/types/ProductT import { maybe } from "../../../misc"; import { ProductTypeForm } from "../ProductTypeDetailsPage/ProductTypeDetailsPage"; -interface ProductTypeTaxesProps extends WithStyles { +interface ProductTypeTaxesProps { data: { taxType: string; }; @@ -20,56 +20,50 @@ interface ProductTypeTaxesProps extends WithStyles { onChange: (event: React.ChangeEvent) => void; } -const styles = createStyles({ +const useStyles = makeStyles({ root: { overflow: "visible" } }); -const ProductTypeTaxes = withStyles(styles, { name: "ProductTypeTaxes" })( - ({ - classes, - data, - disabled, - taxTypes, - taxTypeDisplayName, - onChange - }: ProductTypeTaxesProps) => { - const intl = useIntl(); +const ProductTypeTaxes: React.FC = props => { + const { data, disabled, taxTypes, taxTypeDisplayName, onChange } = props; + const classes = useStyles(props); - return ( - - + + + + taxTypes.map(c => ({ label: c.description, value: c.taxCode })), + [] + )} + InputProps={{ + autoComplete: "off" + }} /> - - - taxTypes.map(c => ({ label: c.description, value: c.taxCode })), - [] - )} - InputProps={{ - autoComplete: "off" - }} - /> - - - ); - } -); + + + ); +}; ProductTypeTaxes.displayName = "ProductTypeTaxes"; export default ProductTypeTaxes; diff --git a/src/productTypes/views/ProductTypeList/ProductTypeList.tsx b/src/productTypes/views/ProductTypeList/ProductTypeList.tsx index 71cae8521..3c09b3a14 100644 --- a/src/productTypes/views/ProductTypeList/ProductTypeList.tsx +++ b/src/productTypes/views/ProductTypeList/ProductTypeList.tsx @@ -224,10 +224,7 @@ export const ProductTypeList: React.FC = ({ params }) => { > params.ids.length), diff --git a/src/productTypes/views/ProductTypeUpdate/errors.tsx b/src/productTypes/views/ProductTypeUpdate/errors.tsx index d61ce121b..5e2c83535 100644 --- a/src/productTypes/views/ProductTypeUpdate/errors.tsx +++ b/src/productTypes/views/ProductTypeUpdate/errors.tsx @@ -8,16 +8,14 @@ interface ProductTypeUpdateErrorsState { formErrors: UserError[]; } interface ProductTypeUpdateErrorsProps { - children: ( - props: { - errors: ProductTypeUpdateErrorsState; - set: { - addAttributeErrors: (errors: UserError[]) => void; - editAttributeErrors: (errors: UserError[]) => void; - formErrors: (errors: UserError[]) => void; - }; - } - ) => React.ReactNode; + children: (props: { + errors: ProductTypeUpdateErrorsState; + set: { + addAttributeErrors: (errors: UserError[]) => void; + editAttributeErrors: (errors: UserError[]) => void; + formErrors: (errors: UserError[]) => void; + }; + }) => React.ReactNode; } export class ProductTypeUpdateErrors extends React.Component< diff --git a/src/products/components/ProductAttributes/ProductAttributes.tsx b/src/products/components/ProductAttributes/ProductAttributes.tsx index 1da540333..cfb48c004 100644 --- a/src/products/components/ProductAttributes/ProductAttributes.tsx +++ b/src/products/components/ProductAttributes/ProductAttributes.tsx @@ -1,10 +1,9 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import IconButton from "@material-ui/core/IconButton"; -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import Typography from "@material-ui/core/Typography"; import ArrowDropDownIcon from "@material-ui/icons/ArrowDropDown"; -import makeStyles from "@material-ui/styles/makeStyles"; import classNames from "classnames"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -39,12 +38,12 @@ export interface ProductAttributesProps { onMultiChange: FormsetChange; } -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ attributeSection: { "&:last-of-type": { paddingBottom: 0 }, - padding: `${theme.spacing.unit * 2}px 0` + padding: theme.spacing(2, 0) }, attributeSectionLabel: { alignItems: "center", @@ -55,15 +54,15 @@ const useStyles = makeStyles((theme: Theme) => ({ }, cardContent: { "&:last-child": { - paddingBottom: theme.spacing.unit + paddingBottom: theme.spacing(1) }, - paddingTop: theme.spacing.unit + paddingTop: theme.spacing(1) }, expansionBar: { display: "flex" }, expansionBarButton: { - marginBottom: theme.spacing.unit + marginBottom: theme.spacing(1) }, expansionBarButtonIcon: { transition: theme.transitions.duration.short + "ms" diff --git a/src/products/components/ProductAttributes/index.ts b/src/products/components/ProductAttributes/index.ts index 090807d29..340bf9b54 100644 --- a/src/products/components/ProductAttributes/index.ts +++ b/src/products/components/ProductAttributes/index.ts @@ -1,2 +1,2 @@ -export { default } from './ProductAttributes'; -export * from './ProductAttributes'; \ No newline at end of file +export { default } from "./ProductAttributes"; +export * from "./ProductAttributes"; diff --git a/src/products/components/ProductImageNavigation/ProductImageNavigation.tsx b/src/products/components/ProductImageNavigation/ProductImageNavigation.tsx index 5873147ea..c56095efd 100644 --- a/src/products/components/ProductImageNavigation/ProductImageNavigation.tsx +++ b/src/products/components/ProductImageNavigation/ProductImageNavigation.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; import { useIntl } from "react-intl"; @@ -13,40 +8,39 @@ import { useIntl } from "react-intl"; import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; -const styles = (theme: Theme) => - createStyles({ - card: { - marginBottom: 2 * theme.spacing.unit - }, - highlightedImageContainer: { - borderColor: theme.palette.primary.main - }, - image: { - height: "100%", - objectFit: "contain", - userSelect: "none", - width: "100%" - }, - imageContainer: { - background: "#ffffff", - border: "2px solid #eaeaea", - borderRadius: theme.spacing.unit, - cursor: "pointer", - height: 48, - overflow: "hidden", - padding: theme.spacing.unit / 2, - position: "relative" - }, - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridRowGap: theme.spacing.unit + "px", - gridTemplateColumns: "repeat(4, 1fr)" - }, - toolbar: { marginTop: -theme.spacing.unit / 2 } - }); +const useStyles = makeStyles(theme => ({ + card: { + marginBottom: theme.spacing(2) + }, + highlightedImageContainer: { + borderColor: theme.palette.primary.main + }, + image: { + height: "100%", + objectFit: "contain", + userSelect: "none", + width: "100%" + }, + imageContainer: { + background: "#ffffff", + border: "2px solid #eaeaea", + borderRadius: theme.spacing(), + cursor: "pointer", + height: 48, + overflow: "hidden", + padding: theme.spacing(0.5), + position: "relative" + }, + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridRowGap: theme.spacing(1), + gridTemplateColumns: "repeat(4, 1fr)" + }, + toolbar: { marginTop: -theme.spacing(0.5) } +})); -interface ProductImageNavigationProps extends WithStyles { +interface ProductImageNavigationProps { disabled: boolean; images?: Array<{ id: string; @@ -56,49 +50,42 @@ interface ProductImageNavigationProps extends WithStyles { onRowClick: (id: string) => () => void; } -const ProductImageNavigation = withStyles(styles, { - name: "ProductImageNavigation" -})( - ({ - classes, - highlighted, - images, - onRowClick - }: ProductImageNavigationProps) => { - const intl = useIntl(); +const ProductImageNavigation: React.FC = props => { + const { highlighted, images, onRowClick } = props; + const classes = useStyles(props); - return ( - - - - {images === undefined ? ( - - ) : ( -
- {images.map(image => ( -
- -
- ))} -
- )} -
-
- ); - } -); + const intl = useIntl(); + + return ( + + + + {images === undefined ? ( + + ) : ( +
+ {images.map(image => ( +
+ +
+ ))} +
+ )} +
+
+ ); +}; ProductImageNavigation.displayName = "ProductImageNavigation"; export default ProductImageNavigation; diff --git a/src/products/components/ProductImagePage/ProductImagePage.tsx b/src/products/components/ProductImagePage/ProductImagePage.tsx index 5d14a47be..69a988851 100644 --- a/src/products/components/ProductImagePage/ProductImagePage.tsx +++ b/src/products/components/ProductImagePage/ProductImagePage.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; @@ -22,24 +17,23 @@ import Skeleton from "@saleor/components/Skeleton"; import { commonMessages } from "@saleor/intl"; import ProductImageNavigation from "../ProductImageNavigation"; -const styles = (theme: Theme) => - createStyles({ - image: { - height: "100%", - objectFit: "contain", - width: "100%" - }, - imageContainer: { - background: "#ffffff", - border: "1px solid #eaeaea", - borderRadius: theme.spacing.unit, - margin: `0 auto ${theme.spacing.unit * 2}px`, - maxWidth: 552, - padding: theme.spacing.unit * 2 - } - }); +const useStyles = makeStyles(theme => ({ + image: { + height: "100%", + objectFit: "contain", + width: "100%" + }, + imageContainer: { + background: "#ffffff", + border: "1px solid #eaeaea", + borderRadius: theme.spacing(), + margin: `0 auto ${theme.spacing(2)}px`, + maxWidth: 552, + padding: theme.spacing(2) + } +})); -interface ProductImagePageProps extends WithStyles { +interface ProductImagePageProps { image?: { id: string; alt: string; @@ -58,9 +52,8 @@ interface ProductImagePageProps extends WithStyles { onSubmit: (data: { description: string }) => void; } -const ProductImagePage = withStyles(styles, { name: "ProductImagePage" })( - ({ - classes, +const ProductImagePage: React.FC = props => { + const { disabled, image, images, @@ -70,90 +63,89 @@ const ProductImagePage = withStyles(styles, { name: "ProductImagePage" })( onDelete, onRowClick, onSubmit - }: ProductImagePageProps) => { - const intl = useIntl(); + } = props; - return ( -
- {({ change, data, hasChanged, submit }) => { - return ( - - {product} - + {({ change, data, hasChanged, submit }) => ( + + {product} + + +
+ - -
- + + + - - - - - - -
-
- - - - {!!image ? ( -
- -
- ) : ( - - )} -
-
-
-
- - - ); - }} - - ); - } -); + + +
+
+ + + + {!!image ? ( +
+ +
+ ) : ( + + )} +
+
+
+
+ +
+ )} + + ); +}; ProductImagePage.displayName = "ProductImagePage"; export default ProductImagePage; diff --git a/src/products/components/ProductImages/ProductImages.tsx b/src/products/components/ProductImages/ProductImages.tsx index c5a389fe3..b132d134e 100644 --- a/src/products/components/ProductImages/ProductImages.tsx +++ b/src/products/components/ProductImages/ProductImages.tsx @@ -1,115 +1,108 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import classNames from "classnames"; -import { useIntl } from "react-intl"; - -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import CardTitle from "@saleor/components/CardTitle"; import ImageTile from "@saleor/components/ImageTile"; import ImageUpload from "@saleor/components/ImageUpload"; import { commonMessages } from "@saleor/intl"; import { ReorderAction } from "@saleor/types"; +import classNames from "classnames"; import React from "react"; +import { useIntl } from "react-intl"; import { SortableContainer, SortableElement } from "react-sortable-hoc"; import { ProductDetails_product_images } from "../../types/ProductDetails"; -const styles = (theme: Theme) => - createStyles({ - card: { - marginTop: theme.spacing.unit * 2, - [theme.breakpoints.down("sm")]: { - marginTop: 0 - } - }, - fileField: { - display: "none" - }, - icon: { - color: "rgba(255, 255, 255, 0.54)" - }, - image: { - height: "100%", - objectFit: "contain", - userSelect: "none", - width: "100%" - }, - imageContainer: { - "&:hover, &.dragged": { - "& $imageOverlay": { - display: "block" - } - }, - background: "#ffffff", - border: "1px solid #eaeaea", - borderRadius: theme.spacing.unit, - height: 140, - margin: "auto", - overflow: "hidden", - padding: theme.spacing.unit * 2, - position: "relative", - width: 140 - }, - imageGridContainer: { - position: "relative" - }, - imageOverlay: { - background: "rgba(0, 0, 0, 0.6)", - cursor: "move", - display: "none", - height: 140, - left: 0, - padding: theme.spacing.unit * 2, - position: "absolute", - top: 0, - width: 140 - }, - imageOverlayToolbar: { - alignContent: "flex-end", - display: "flex", - position: "relative", - right: -theme.spacing.unit * 3, - top: -theme.spacing.unit * 2 - }, - imageUpload: { - height: "100%", - left: 0, - position: "absolute", - top: 0, - width: "100%" - }, - imageUploadActive: { - zIndex: 1 - }, - imageUploadIcon: { - display: "none" - }, - imageUploadIconActive: { - display: "block" - }, - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridRowGap: theme.spacing.unit * 2 + "px", - gridTemplateColumns: "repeat(4, 1fr)", - [theme.breakpoints.down("sm")]: { - gridTemplateColumns: "repeat(3, 1fr)" - }, - [theme.breakpoints.down("xs")]: { - gridTemplateColumns: "repeat(2, 1fr)" - } - }, - rootDragActive: { - opacity: 0.2 +const useStyles = makeStyles(theme => ({ + card: { + marginTop: theme.spacing(2), + [theme.breakpoints.down("sm")]: { + marginTop: 0 } - }); + }, + fileField: { + display: "none" + }, + icon: { + color: "rgba(255, 255, 255, 0.54)" + }, + image: { + height: "100%", + objectFit: "contain", + userSelect: "none", + width: "100%" + }, + imageContainer: { + "&:hover, &.dragged": { + "& $imageOverlay": { + display: "block" + } + }, + background: "#ffffff", + border: "1px solid #eaeaea", + borderRadius: theme.spacing(), + height: 140, + margin: "auto", + overflow: "hidden", + padding: theme.spacing(2), + position: "relative", + width: 140 + }, + imageGridContainer: { + position: "relative" + }, + imageOverlay: { + background: "rgba(0, 0, 0, 0.6)", + cursor: "move", + display: "none", + height: 140, + left: 0, + padding: theme.spacing(2), + position: "absolute", + top: 0, + width: 140 + }, + imageOverlayToolbar: { + alignContent: "flex-end", + display: "flex", + position: "relative", + right: -theme.spacing(3), + top: -theme.spacing(2) + }, + imageUpload: { + height: "100%", + left: 0, + position: "absolute", + top: 0, + width: "100%" + }, + imageUploadActive: { + zIndex: 1 + }, + imageUploadIcon: { + display: "none" + }, + imageUploadIconActive: { + display: "block" + }, + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridRowGap: theme.spacing(2), + gridTemplateColumns: "repeat(4, 1fr)", + [theme.breakpoints.down("sm")]: { + gridTemplateColumns: "repeat(3, 1fr)" + }, + [theme.breakpoints.down("xs")]: { + gridTemplateColumns: "repeat(2, 1fr)" + } + }, + rootDragActive: { + opacity: 0.2 + } +})); -interface ProductImagesProps extends WithStyles { +interface ProductImagesProps { placeholderImage?: string; images: ProductDetails_product_images[]; loading?: boolean; @@ -147,34 +140,23 @@ interface ImageListContainerProps { } const ImageListContainer = SortableContainer( - withStyles(styles, { name: "ImageListContainer" })( - ({ - classes, - items, - onImageDelete, - onImageEdit, - ...props - }: ImageListContainerProps & WithStyles) => { - return ( -
- {items.map((image, index) => ( - - ))} -
- ); - } + ({ items, onImageDelete, onImageEdit, ...props }) => ( +
+ {items.map((image, index) => ( + + ))} +
) ); -const ProductImages = withStyles(styles, { name: "ProductImages" })( - ({ - classes, +const ProductImages: React.FC = props => { + const { images, placeholderImage, loading, @@ -182,83 +164,84 @@ const ProductImages = withStyles(styles, { name: "ProductImages" })( onImageDelete, onImageReorder, onImageUpload - }: ProductImagesProps) => { - const intl = useIntl(); - const upload = React.useRef(null); + } = props; - return ( - - - - onImageUpload(event.target.files[0])} - type="file" - ref={upload} - /> - - } - /> -
- {images === undefined ? ( - -
-
- -
+ const classes = useStyles(props); + const intl = useIntl(); + const upload = React.useRef(null); + + return ( + + + + onImageUpload(event.target.files[0])} + type="file" + ref={upload} + /> + + } + /> +
+ {images === undefined ? ( + +
+
+
- - ) : images.length > 0 ? ( - <> - - {({ isDragActive }) => ( - - - - )} - - - ) : ( - - )} -
- - ); - } -); +
+ + ) : images.length > 0 ? ( + <> + + {({ isDragActive }) => ( + + + + )} + + + ) : ( + + )} +
+ + ); +}; ProductImages.displayName = "ProductImages"; export default ProductImages; diff --git a/src/products/components/ProductList/ProductList.tsx b/src/products/components/ProductList/ProductList.tsx index 2d4db195f..2040e6235 100644 --- a/src/products/components/ProductList/ProductList.tsx +++ b/src/products/components/ProductList/ProductList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -38,59 +33,58 @@ import TDisplayColumn, { } from "@saleor/utils/columns/DisplayColumn"; import { getArrowDirection } from "@saleor/utils/sort"; -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colName: { - width: "auto" - }, - colPrice: { - width: 200 - }, - colPublished: { - width: 200 - }, - colType: { - width: 200 - } - }, - colAttribute: { - width: 150 - }, - colFill: { - padding: 0, - width: "100%" - }, +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { colName: { - "&$colNameFixed": { - width: 250 - } - }, - colNameFixed: {}, - colNameHeader: { - marginLeft: AVATAR_MARGIN + width: "auto" }, colPrice: { - textAlign: "right" + width: 200 }, - colPublished: {}, - colType: {}, - link: { - cursor: "pointer" + colPublished: { + width: 200 }, - table: { - tableLayout: "fixed" - }, - tableContainer: { - overflowX: "scroll" - }, - textLeft: { - textAlign: "left" - }, - textRight: { - textAlign: "right" + colType: { + width: 200 } - }); + }, + colAttribute: { + width: 150 + }, + colFill: { + padding: 0, + width: "100%" + }, + colName: { + "&$colNameFixed": { + width: 250 + } + }, + colNameFixed: {}, + colNameHeader: { + marginLeft: AVATAR_MARGIN + }, + colPrice: { + textAlign: "right" + }, + colPublished: {}, + colType: {}, + link: { + cursor: "pointer" + }, + table: { + tableLayout: "fixed" + }, + tableContainer: { + overflowX: "scroll" + }, + textLeft: { + textAlign: "left" + }, + textRight: { + textAlign: "right" + } +})); const DisplayColumn = TDisplayColumn as React.FunctionComponent< DisplayColumnProps @@ -99,17 +93,16 @@ const DisplayColumn = TDisplayColumn as React.FunctionComponent< interface ProductListProps extends ListProps, ListActions, - SortPage, - WithStyles { + SortPage { activeAttributeSortId: string; gridAttributes: AvailableInGridAttributes_grid_edges_node[]; products: ProductList_products_edges_node[]; } -export const ProductList = withStyles(styles, { name: "ProductList" })( - ({ +export const ProductList: React.FC = props => { + const { activeAttributeSortId, - classes, + settings, disabled, isChecked, @@ -126,296 +119,282 @@ export const ProductList = withStyles(styles, { name: "ProductList" })( onUpdateListSettings, onRowClick, onSort - }: ProductListProps) => { - const intl = useIntl(); + } = props; - const gridAttributesFromSettings = settings.columns.filter( - isAttributeColumnValue - ); - const numberOfColumns = 2 + settings.columns.length; + const classes = useStyles(props); + const intl = useIntl(); - return ( -
- - - - - - - - - - - {gridAttributesFromSettings.map(gridAttribute => ( - - ))} - - - - - +
+ + + + + + + + + + {gridAttributesFromSettings.map(gridAttribute => ( + + ))} + + + + + + 4 + })} + direction={ + sort.sort === ProductListUrlSortField.name + ? getArrowDirection(sort.asc) + : undefined + } + onClick={() => onSort(ProductListUrlSortField.name)} > + + + + + 4 - })} + className={classes.colType} direction={ - sort.sort === ProductListUrlSortField.name + sort.sort === ProductListUrlSortField.productType ? getArrowDirection(sort.asc) : undefined } - onClick={() => onSort(ProductListUrlSortField.name)} + onClick={() => onSort(ProductListUrlSortField.productType)} > - - - + - + + onSort(ProductListUrlSortField.status)} > + + + + {gridAttributesFromSettings.map(gridAttributeFromSettings => { + const attributeId = getAttributeIdFromColumnValue( + gridAttributeFromSettings + ); + + return ( onSort(ProductListUrlSortField.productType)} - > - - - - - + onSort(ProductListUrlSortField.attribute, attributeId) } - onClick={() => onSort(ProductListUrlSortField.status)} + key={gridAttributeFromSettings} > - + {maybe( + () => + gridAttributes.find( + gridAttribute => attributeId === gridAttribute.id + ).name, + + )} - - {gridAttributesFromSettings.map(gridAttributeFromSettings => { - const attributeId = getAttributeIdFromColumnValue( - gridAttributeFromSettings - ); + ); + })} + + onSort(ProductListUrlSortField.price)} + > + + + + + + + + + + + {renderCollection( + products, + product => { + const isSelected = product ? isChecked(product.id) : false; return ( - - onSort(ProductListUrlSortField.attribute, attributeId) - } - key={gridAttributeFromSettings} + product.id)} > - {maybe( - () => - gridAttributes.find( - gridAttribute => attributeId === gridAttribute.id - ).name, - - )} - - ); - })} - - onSort(ProductListUrlSortField.price)} - > - - - - - - - - - - - {renderCollection( - products, - product => { - const isSelected = product ? isChecked(product.id) : false; - - return ( - product.id)} - > - - toggle(product.id)} - /> - - product.thumbnail.url)} - data-tc="name" - > - {maybe(() => product.name, )} - - - - {product && product.productType ? ( - product.productType.name - ) : ( - - )} - - - - product.isAvailable)} - > - {product && - maybe(() => product.isAvailable !== undefined) ? ( - - ) : ( - - )} - - - {gridAttributesFromSettings.map(gridAttribute => ( - - {maybe(() => { - const attribute = product.attributes.find( - attribute => - attribute.attribute.id === - getAttributeIdFromColumnValue(gridAttribute) - ); - if (attribute) { - return attribute.values - .map(value => value.name) - .join(", "); - } - return "-"; - }, )} - - ))} - - - {maybe(() => product.basePrice) && - maybe(() => product.basePrice.amount) !== undefined && - maybe(() => product.basePrice.currency) !== - undefined ? ( - - ) : ( - - )} - - - - ); - }, - () => ( - - - + + toggle(product.id)} + /> + product.thumbnail.url)} + data-tc="name" + > + {maybe(() => product.name, )} + + + + {product && product.productType ? ( + product.productType.name + ) : ( + + )} + + + + product.isAvailable)} + > + {product && + maybe(() => product.isAvailable !== undefined) ? ( + + ) : ( + + )} + + + {gridAttributesFromSettings.map(gridAttribute => ( + + {maybe(() => { + const attribute = product.attributes.find( + attribute => + attribute.attribute.id === + getAttributeIdFromColumnValue(gridAttribute) + ); + if (attribute) { + return attribute.values + .map(value => value.name) + .join(", "); + } + return "-"; + }, )} + + ))} + + + {maybe(() => product.basePrice) && + maybe(() => product.basePrice.amount) !== undefined && + maybe(() => product.basePrice.currency) !== undefined ? ( + + ) : ( + + )} + + - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + +
+ ); +}; ProductList.displayName = "ProductList"; export default ProductList; diff --git a/src/products/components/ProductListPage/ProductListPage.tsx b/src/products/components/ProductListPage/ProductListPage.tsx index afd31881a..fdb9fabee 100644 --- a/src/products/components/ProductListPage/ProductListPage.tsx +++ b/src/products/components/ProductListPage/ProductListPage.tsx @@ -1,7 +1,6 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; -import { Theme } from "@material-ui/core/styles"; -import makeStyles from "@material-ui/styles/makeStyles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -42,9 +41,9 @@ export interface ProductListPageProps products: ProductList_products_edges_node[]; } -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ columnPicker: { - marginRight: theme.spacing.unit * 3 + marginRight: theme.spacing(3) } })); diff --git a/src/products/components/ProductOrganization/ProductOrganization.tsx b/src/products/components/ProductOrganization/ProductOrganization.tsx index c52a85bf1..312e7188d 100644 --- a/src/products/components/ProductOrganization/ProductOrganization.tsx +++ b/src/products/components/ProductOrganization/ProductOrganization.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -30,21 +25,20 @@ interface ProductType { name: string; } -const styles = (theme: Theme) => - createStyles({ - card: { - overflow: "visible" - }, - cardSubtitle: { - fontSize: "1rem", - marginBottom: theme.spacing.unit / 2 - }, - label: { - marginBottom: theme.spacing.unit / 2 - } - }); +const useStyles = makeStyles(theme => ({ + card: { + overflow: "visible" + }, + cardSubtitle: { + fontSize: "1rem", + marginBottom: theme.spacing(0.5) + }, + label: { + marginBottom: theme.spacing(0.5) + } +})); -interface ProductOrganizationProps extends WithStyles { +interface ProductOrganizationProps { canChangeType: boolean; categories?: SingleAutocompleteChoiceType[]; categoryInputDisplayValue: string; @@ -71,12 +65,12 @@ interface ProductOrganizationProps extends WithStyles { onProductTypeChange?: (event: ChangeEvent) => void; } -const ProductOrganization = withStyles(styles, { name: "ProductOrganization" })( - ({ +const ProductOrganization: React.FC = props => { + const { canChangeType, categories, categoryInputDisplayValue, - classes, + collections, collectionsInputDisplayValue, data, @@ -94,106 +88,107 @@ const ProductOrganization = withStyles(styles, { name: "ProductOrganization" })( onCategoryChange, onCollectionChange, onProductTypeChange - }: ProductOrganizationProps) => { - const intl = useIntl(); + } = props; - return ( - - - - {canChangeType ? ( - - ) : ( - <> - - - - {maybe(() => productType.name, "...")} - - - - - - {maybe( - () => - productType.hasVariants - ? intl.formatMessage({ - defaultMessage: "Configurable", - description: "product is configurable" - }) - : intl.formatMessage({ - defaultMessage: "Simple", - description: "product is not configurable" - }), - "..." - )} - - - )} - -
- + const classes = useStyles(props); + const intl = useIntl(); + + return ( + + + + {canChangeType ? ( - -
- - -
-
- ); - } -); + ) : ( + <> + + + + {maybe(() => productType.name, "...")} + + + + + + {maybe( + () => + productType.hasVariants + ? intl.formatMessage({ + defaultMessage: "Configurable", + description: "product is configurable" + }) + : intl.formatMessage({ + defaultMessage: "Simple", + description: "product is not configurable" + }), + "..." + )} + + + )} + +
+ + + +
+ + +
+
+ ); +}; ProductOrganization.displayName = "ProductOrganization"; export default ProductOrganization; diff --git a/src/products/components/ProductPricing/ProductPricing.tsx b/src/products/components/ProductPricing/ProductPricing.tsx index fc74d5d38..e49b1b2c8 100644 --- a/src/products/components/ProductPricing/ProductPricing.tsx +++ b/src/products/components/ProductPricing/ProductPricing.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { useIntl } from "react-intl"; @@ -13,16 +8,15 @@ import CardTitle from "@saleor/components/CardTitle"; import ControlledCheckbox from "@saleor/components/ControlledCheckbox"; import PriceField from "@saleor/components/PriceField"; -const styles = (theme: Theme) => - createStyles({ - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "1fr 1fr" + } +})); -interface ProductPricingProps extends WithStyles { +interface ProductPricingProps { currency?: string; data: { chargeTaxes: boolean; @@ -32,46 +26,47 @@ interface ProductPricingProps extends WithStyles { onChange: (event: React.ChangeEvent) => void; } -const ProductPricing = withStyles(styles, { name: "ProductPricing" })( - ({ classes, currency, data, disabled, onChange }: ProductPricingProps) => { - const intl = useIntl(); +const ProductPricing: React.FC = props => { + const { currency, data, disabled, onChange } = props; + const classes = useStyles(props); - return ( - - + + - + + +
+ - - -
- -
-
- - ); - } -); +
+
+
+ ); +}; ProductPricing.displayName = "ProductPricing"; export default ProductPricing; diff --git a/src/products/components/ProductStock/ProductStock.tsx b/src/products/components/ProductStock/ProductStock.tsx index f60d5f2fa..a7f1fe670 100644 --- a/src/products/components/ProductStock/ProductStock.tsx +++ b/src/products/components/ProductStock/ProductStock.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; @@ -14,16 +9,15 @@ import CardTitle from "@saleor/components/CardTitle"; import { maybe } from "../../../misc"; import { ProductDetails_product } from "../../types/ProductDetails"; -const styles = (theme: Theme) => - createStyles({ - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "1fr 1fr" + } +})); -interface ProductStockProps extends WithStyles { +interface ProductStockProps { data: { sku: string; stockQuantity: number; @@ -34,71 +28,65 @@ interface ProductStockProps extends WithStyles { onChange: (event: React.ChangeEvent) => void; } -const ProductStock = withStyles(styles, { name: "ProductStock" })( - ({ - classes, - data, - disabled, - product, - onChange, - errors - }: ProductStockProps) => { - const intl = useIntl(); +const ProductStock: React.FC = props => { + const { data, disabled, product, onChange, errors } = props; + const classes = useStyles(props); - return ( - - - -
- - product.variants[0].quantityAllocated - ) - } - ) - : undefined - } - /> -
-
-
- ); - } -); + const intl = useIntl(); + + return ( + + + +
+ + product.variants[0].quantityAllocated + ) + } + ) + : undefined + } + /> +
+
+
+ ); +}; ProductStock.displayName = "ProductStock"; export default ProductStock; diff --git a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateContent.tsx b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateContent.tsx index cbc32664f..34bdb7ee9 100644 --- a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateContent.tsx +++ b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateContent.tsx @@ -1,5 +1,4 @@ -import { Theme } from "@material-ui/core/styles"; -import { makeStyles } from "@material-ui/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { ProductDetails_product_productType_variantAttributes } from "@saleor/products/types/ProductDetails"; @@ -13,16 +12,16 @@ import ProductVariantCreateValues from "./ProductVariantCreateValues"; import { ProductVariantCreateReducerAction } from "./reducer"; import { ProductVariantCreateStep } from "./types"; -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ root: { maxHeight: 400, overflowX: "hidden", overflowY: "scroll", - paddingLeft: theme.spacing.unit * 3, - paddingRight: theme.spacing.unit * 2, + paddingLeft: theme.spacing(3), + paddingRight: theme.spacing(2), position: "relative", - right: theme.spacing.unit * 3, - width: `calc(100% + ${theme.spacing.unit * 3}px)` + right: theme.spacing(3), + width: `calc(100% + ${theme.spacing(3)}px)` } })); diff --git a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateDialog.tsx b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateDialog.tsx index c898e9157..658a53c55 100644 --- a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateDialog.tsx +++ b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateDialog.tsx @@ -3,8 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { Theme } from "@material-ui/core/styles"; -import { makeStyles } from "@material-ui/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; @@ -18,9 +17,9 @@ import ProductVariantCreateContent, { import reduceProductVariantCreateFormData from "./reducer"; import { ProductVariantCreateStep } from "./types"; -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ button: { - marginLeft: theme.spacing.unit * 2 + marginLeft: theme.spacing(2) }, content: { overflowX: "visible", diff --git a/src/products/components/ProductVariantCreateDialog/ProductVariantCreatePrices.tsx b/src/products/components/ProductVariantCreateDialog/ProductVariantCreatePrices.tsx index bdfe40469..efffeddaf 100644 --- a/src/products/components/ProductVariantCreateDialog/ProductVariantCreatePrices.tsx +++ b/src/products/components/ProductVariantCreateDialog/ProductVariantCreatePrices.tsx @@ -1,10 +1,9 @@ import FormControlLabel from "@material-ui/core/FormControlLabel"; import Radio from "@material-ui/core/Radio"; import RadioGroup from "@material-ui/core/RadioGroup"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -15,13 +14,13 @@ import SingleSelectField from "@saleor/components/SingleSelectField"; import { ProductDetails_product_productType_variantAttributes } from "@saleor/products/types/ProductDetails"; import { ProductVariantCreateFormData } from "./form"; -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ hr: { - marginBottom: theme.spacing.unit, - marginTop: theme.spacing.unit / 2 + marginBottom: theme.spacing(), + marginTop: theme.spacing(0.5) }, hrAttribute: { - marginTop: theme.spacing.unit * 2 + marginTop: theme.spacing(2) }, label: { alignSelf: "center" diff --git a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateSummary.tsx b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateSummary.tsx index ff87cda05..86cf5cc90 100644 --- a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateSummary.tsx +++ b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateSummary.tsx @@ -4,11 +4,10 @@ import green from "@material-ui/core/colors/green"; import purple from "@material-ui/core/colors/purple"; import yellow from "@material-ui/core/colors/yellow"; import IconButton from "@material-ui/core/IconButton"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import DeleteIcon from "@material-ui/icons/Delete"; -import { makeStyles } from "@material-ui/styles"; import classNames from "classnames"; import React from "react"; import { FormattedMessage } from "react-intl"; @@ -37,19 +36,19 @@ export interface ProductVariantCreateSummaryProps { const colors = [blue, cyan, green, purple, yellow].map(color => color[800]); const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ attributeValue: { display: "inline-block", - marginRight: theme.spacing.unit + marginRight: theme.spacing(1) }, col: { - ...theme.typography.body2, + ...theme.typography.body1, fontSize: 14, - paddingLeft: theme.spacing.unit, - paddingRight: theme.spacing.unit + paddingLeft: theme.spacing(), + paddingRight: theme.spacing(1) }, colHeader: { - ...theme.typography.body2, + ...theme.typography.body1, fontSize: 14 }, colName: { @@ -57,31 +56,31 @@ const useStyles = makeStyles( paddingLeft: "0 !important" }, "&:not($colHeader)": { - paddingTop: theme.spacing.unit * 2 + paddingTop: theme.spacing(2) } }, colPrice: {}, colSku: {}, colStock: {}, delete: { - marginTop: theme.spacing.unit / 2 + marginTop: theme.spacing(0.5) }, errorRow: {}, hr: { - marginBottom: theme.spacing.unit, - marginTop: theme.spacing.unit / 2 + marginBottom: theme.spacing(), + marginTop: theme.spacing(0.5) }, input: { "& input": { padding: "16px 12px 17px" }, - marginTop: theme.spacing.unit / 2 + marginTop: theme.spacing(0.5) }, row: { borderBottom: `1px solid ${theme.palette.divider}`, display: "grid", gridTemplateColumns: "1fr 180px 120px 180px 64px", - padding: `${theme.spacing.unit}px 0` + padding: theme.spacing(1, 0) } }), { diff --git a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateTabs.tsx b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateTabs.tsx index 3d4667f23..40f03e03f 100644 --- a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateTabs.tsx +++ b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateTabs.tsx @@ -1,6 +1,5 @@ -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import classNames from "classnames"; import React from "react"; import { IntlShape, useIntl } from "react-intl"; @@ -38,7 +37,7 @@ function getSteps(intl: IntlShape): Step[] { } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ label: { fontSize: 14, textAlign: "center" @@ -47,11 +46,11 @@ const useStyles = makeStyles( borderBottom: `1px solid ${theme.palette.divider}`, display: "flex", justifyContent: "space-between", - marginBottom: theme.spacing.unit * 3 + marginBottom: theme.spacing(3) }, tab: { flex: 1, - paddingBottom: theme.spacing.unit, + paddingBottom: theme.spacing(), userSelect: "none" }, tabActive: { diff --git a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateValues.tsx b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateValues.tsx index dd6fe6dc3..d74533db6 100644 --- a/src/products/components/ProductVariantCreateDialog/ProductVariantCreateValues.tsx +++ b/src/products/components/ProductVariantCreateDialog/ProductVariantCreateValues.tsx @@ -1,6 +1,5 @@ -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import Typography from "@material-ui/core/Typography"; -import makeStyles from "@material-ui/styles/makeStyles"; import React from "react"; import ControlledCheckbox from "@saleor/components/ControlledCheckbox"; @@ -18,16 +17,16 @@ export interface ProductVariantCreateValuesProps { onValueClick: (attributeId: string, valueId: string) => void; } -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ hr: { - marginBottom: theme.spacing.unit, - marginTop: theme.spacing.unit / 2 + marginBottom: theme.spacing(), + marginTop: theme.spacing(0.5) }, valueContainer: { display: "grid", - gridColumnGap: theme.spacing.unit * 3 + "px", + gridColumnGap: theme.spacing(3), gridTemplateColumns: "repeat(3, 1fr)", - marginBottom: theme.spacing.unit * 3 + marginBottom: theme.spacing(3) } })); diff --git a/src/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx b/src/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx index feea12b9f..48a77b484 100644 --- a/src/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx +++ b/src/products/components/ProductVariantDeleteDialog/ProductVariantDeleteDialog.tsx @@ -4,12 +4,7 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogContentText from "@material-ui/core/DialogContentText"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { FormattedMessage } from "react-intl"; @@ -18,19 +13,17 @@ import ConfirmButton, { } from "@saleor/components/ConfirmButton"; import { buttonMessages } from "@saleor/intl"; -const styles = (theme: Theme) => - createStyles({ - deleteButton: { - "&:hover": { - backgroundColor: theme.palette.error.main - }, - backgroundColor: theme.palette.error.main, - color: theme.palette.error.contrastText - } - }); +const useStyles = makeStyles(theme => ({ + deleteButton: { + "&:hover": { + backgroundColor: theme.palette.error.main + }, + backgroundColor: theme.palette.error.main, + color: theme.palette.error.contrastText + } +})); -export interface ProductVariantDeleteDialogProps - extends WithStyles { +export interface ProductVariantDeleteDialogProps { confirmButtonState: ConfirmButtonTransitionState; open: boolean; name: string; @@ -38,17 +31,14 @@ export interface ProductVariantDeleteDialogProps onConfirm?(); } -const ProductVariantDeleteDialog = withStyles(styles, { - name: "ProductVariantDeleteDialog" -})( - ({ - classes, - confirmButtonState, - name, - open, - onConfirm, - onClose - }: ProductVariantDeleteDialogProps) => ( +const ProductVariantDeleteDialog: React.FC< + ProductVariantDeleteDialogProps +> = props => { + const { confirmButtonState, name, open, onConfirm, onClose } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; ProductVariantDeleteDialog.displayName = "ProductVariantDeleteDialog"; export default ProductVariantDeleteDialog; diff --git a/src/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx b/src/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx index bd7e1717d..4c85038d1 100644 --- a/src/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx +++ b/src/products/components/ProductVariantImageSelectDialog/ProductVariantImageSelectDialog.tsx @@ -3,12 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import classNames from "classnames"; import React from "react"; import { FormattedMessage } from "react-intl"; @@ -16,43 +11,41 @@ import { FormattedMessage } from "react-intl"; import { buttonMessages } from "@saleor/intl"; import { ProductImage } from "../../types/ProductImage"; -const styles = (theme: Theme) => - createStyles({ - image: { - height: "100%", - objectFit: "contain", - userSelect: "none", - width: "100%" - }, - imageContainer: { - background: "#ffffff", - border: "1px solid #eaeaea", - borderRadius: theme.spacing.unit, - cursor: "pointer", - height: theme.spacing.unit * 21.5, - overflow: "hidden", - padding: theme.spacing.unit * 2, - position: "relative", - transitionDuration: theme.transitions.duration.standard + "ms" - }, - root: { - display: "grid", - gridColumnGap: `${theme.spacing.unit * 2}px`, - gridRowGap: `${theme.spacing.unit * 2}px`, - gridTemplateColumns: "repeat(3, 1fr)", - maxWidth: "100%", - width: theme.breakpoints.values.lg, - [theme.breakpoints.down("sm")]: { - gridTemplateColumns: "repeat(2, 1fr)" - } - }, - selectedImageContainer: { - borderColor: theme.palette.primary.main +const useStyles = makeStyles(theme => ({ + image: { + height: "100%", + objectFit: "contain", + userSelect: "none", + width: "100%" + }, + imageContainer: { + background: "#ffffff", + border: "1px solid #eaeaea", + borderRadius: theme.spacing(), + cursor: "pointer", + height: theme.spacing(21.5), + overflow: "hidden", + padding: theme.spacing(2), + position: "relative", + transitionDuration: theme.transitions.duration.standard + "ms" + }, + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridRowGap: theme.spacing(2), + gridTemplateColumns: "repeat(3, 1fr)", + maxWidth: "100%", + width: theme.breakpoints.values.lg, + [theme.breakpoints.down("sm")]: { + gridTemplateColumns: "repeat(2, 1fr)" } - }); + }, + selectedImageContainer: { + borderColor: theme.palette.primary.main + } +})); -interface ProductVariantImageSelectDialogProps - extends WithStyles { +interface ProductVariantImageSelectDialogProps { images?: ProductImage[]; selectedImages?: string[]; open: boolean; @@ -60,17 +53,14 @@ interface ProductVariantImageSelectDialogProps onImageSelect(id: string); } -const ProductVariantImageSelectDialog = withStyles(styles, { - name: "ProductVariantImageSelectDialog" -})( - ({ - classes, - images, - open, - selectedImages, - onClose, - onImageSelect - }: ProductVariantImageSelectDialogProps) => ( +const ProductVariantImageSelectDialog: React.FC< + ProductVariantImageSelectDialogProps +> = props => { + const { images, open, selectedImages, onClose, onImageSelect } = props; + + const classes = useStyles(props); + + return (
- ) -); + ); +}; ProductVariantImageSelectDialog.displayName = "ProductVariantImageSelectDialog"; export default ProductVariantImageSelectDialog; diff --git a/src/products/components/ProductVariantImages/ProductVariantImages.tsx b/src/products/components/ProductVariantImages/ProductVariantImages.tsx index 7d492930f..68a8209ca 100644 --- a/src/products/components/ProductVariantImages/ProductVariantImages.tsx +++ b/src/products/components/ProductVariantImages/ProductVariantImages.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -15,46 +10,48 @@ import CardTitle from "@saleor/components/CardTitle"; import Skeleton from "@saleor/components/Skeleton"; import { ProductImage } from "../../types/ProductImage"; -const styles = (theme: Theme) => - createStyles({ - gridElement: { - "& img": { - width: "100%" - } - }, - helpText: { - gridColumnEnd: "span 4" - }, - image: { - height: "100%", - objectFit: "contain", +const useStyles = makeStyles(theme => ({ + gridElement: { + "& img": { width: "100%" - }, - imageContainer: { - background: "#ffffff", - border: "1px solid #eaeaea", - borderRadius: theme.spacing.unit, - height: theme.spacing.unit * 17.5, - marginBottom: theme.spacing.unit * 2, - padding: theme.spacing.unit * 2 - }, - root: { - display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridTemplateColumns: "repeat(4, 1fr)" } - }); + }, + helpText: { + gridColumnEnd: "span 4" + }, + image: { + height: "100%", + objectFit: "contain", + width: "100%" + }, + imageContainer: { + background: "#ffffff", + border: "1px solid #eaeaea", + borderRadius: theme.spacing(), + height: theme.spacing(17.5), + marginBottom: theme.spacing(2), + padding: theme.spacing(2) + }, + root: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "repeat(4, 1fr)" + } +})); -interface ProductVariantImagesProps extends WithStyles { +interface ProductVariantImagesProps { images?: ProductImage[]; placeholderImage?: string; disabled: boolean; onImageAdd(); } -export const ProductVariantImages = withStyles(styles, { - name: "ProductVariantImages" -})(({ classes, disabled, images, onImageAdd }: ProductVariantImagesProps) => { +export const ProductVariantImages: React.FC< + ProductVariantImagesProps +> = props => { + const { disabled, images, onImageAdd } = props; + + const classes = useStyles(props); const intl = useIntl(); return ( @@ -99,6 +96,6 @@ export const ProductVariantImages = withStyles(styles, { ); -}); +}; ProductVariantImages.displayName = "ProductVariantImages"; export default ProductVariantImages; diff --git a/src/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx b/src/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx index 4d4915cb1..8e3dc7661 100644 --- a/src/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx +++ b/src/products/components/ProductVariantNavigation/ProductVariantNavigation.tsx @@ -1,11 +1,6 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -21,30 +16,29 @@ import { maybe, renderCollection } from "../../../misc"; import { ProductVariantCreateData_product_variants } from "../../types/ProductVariantCreateData"; import { ProductVariantDetails_productVariant } from "../../types/ProductVariantDetails"; -const styles = (theme: Theme) => - createStyles({ - colName: { - paddingLeft: 0, - textAlign: [["left"], "!important"] as any +const useStyles = makeStyles(theme => ({ + colName: { + paddingLeft: 0, + textAlign: [["left"], "!important"] as any + }, + link: { + cursor: "pointer" + }, + tabActive: { + "&:before": { + background: theme.palette.primary.main, + content: '""', + height: "100%", + left: 0, + position: "absolute", + top: 0, + width: 2 }, - link: { - cursor: "pointer" - }, - tabActive: { - "&:before": { - background: theme.palette.primary.main, - content: '""', - height: "100%", - left: 0, - position: "absolute", - top: 0, - width: 2 - }, - position: "relative" - } - }); + position: "relative" + } +})); -interface ProductVariantNavigationProps extends WithStyles { +interface ProductVariantNavigationProps { current?: string; fallbackThumbnail: string; variants: @@ -54,80 +48,71 @@ interface ProductVariantNavigationProps extends WithStyles { onRowClick: (variantId: string) => void; } -const ProductVariantNavigation = withStyles(styles, { - name: "ProductVariantNavigation" -})( - ({ - classes, - current, - fallbackThumbnail, - variants, - onAdd, - onRowClick - }: ProductVariantNavigationProps) => { - const intl = useIntl(); +const ProductVariantNavigation: React.FC< + ProductVariantNavigationProps +> = props => { + const { current, fallbackThumbnail, variants, onAdd, onRowClick } = props; - return ( - - - - - {renderCollection(variants, variant => ( - onRowClick(variant.id) : undefined} - > - variant.images[0].url, - fallbackThumbnail - )} - /> - - {variant ? variant.name || variant.sku : } - - - ))} - {onAdd ? ( - - - - - - ) : ( - - - + const classes = useStyles(props); + const intl = useIntl(); + + return ( + + +
+ + {renderCollection(variants, variant => ( + onRowClick(variant.id) : undefined} + > + variant.images[0].url, + fallbackThumbnail + )} + /> + + {variant ? variant.name || variant.sku : } + + + ))} + {onAdd ? ( + + +
-
- ); - } -); + + + + ) : ( + + + + + + + )} + + + + ); +}; ProductVariantNavigation.displayName = "ProductVariantNavigation"; export default ProductVariantNavigation; diff --git a/src/products/components/ProductVariantPrice/ProductVariantPrice.tsx b/src/products/components/ProductVariantPrice/ProductVariantPrice.tsx index 8cfd5bc12..f5c4e069f 100644 --- a/src/products/components/ProductVariantPrice/ProductVariantPrice.tsx +++ b/src/products/components/ProductVariantPrice/ProductVariantPrice.tsx @@ -1,27 +1,21 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import React from "react"; import { useIntl } from "react-intl"; import CardTitle from "@saleor/components/CardTitle"; import PriceField from "@saleor/components/PriceField"; -const styles = (theme: Theme) => - createStyles({ - grid: { - display: "grid", - gridColumnGap: `${theme.spacing.unit * 2}px`, - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + grid: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "1fr 1fr" + } +})); -interface ProductVariantPriceProps extends WithStyles { +interface ProductVariantPriceProps { currencySymbol?: string; priceOverride?: string; costPrice?: string; @@ -30,77 +24,77 @@ interface ProductVariantPriceProps extends WithStyles { onChange(event: any); } -const ProductVariantPrice = withStyles(styles, { name: "ProductVariantPrice" })( - ({ - classes, +const ProductVariantPrice: React.FC = props => { + const { currencySymbol, costPrice, errors, priceOverride, loading, onChange - }: ProductVariantPriceProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - - -
-
- -
-
- -
+ const intl = useIntl(); + + return ( + + + +
+
+
- - - ); - } -); +
+ +
+
+
+
+ ); +}; ProductVariantPrice.displayName = "ProductVariantPrice"; export default ProductVariantPrice; diff --git a/src/products/components/ProductVariantStock/ProductVariantStock.tsx b/src/products/components/ProductVariantStock/ProductVariantStock.tsx index 295d0962b..8e1e2d99b 100644 --- a/src/products/components/ProductVariantStock/ProductVariantStock.tsx +++ b/src/products/components/ProductVariantStock/ProductVariantStock.tsx @@ -1,27 +1,21 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; import CardTitle from "@saleor/components/CardTitle"; -const styles = (theme: Theme) => - createStyles({ - grid: { - display: "grid", - gridColumnGap: `${theme.spacing.unit * 2}px`, - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + grid: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "1fr 1fr" + } +})); -interface ProductVariantStockProps extends WithStyles { +interface ProductVariantStockProps { errors: { quantity?: string; sku?: string; @@ -33,76 +27,69 @@ interface ProductVariantStockProps extends WithStyles { onChange(event: any); } -const ProductVariantStock = withStyles(styles, { name: "ProductVariantStock" })( - ({ - classes, - errors, - sku, - quantity, - stockAllocated, - loading, - onChange - }: ProductVariantStockProps) => { - const intl = useIntl(); +const ProductVariantStock: React.FC = props => { + const { errors, sku, quantity, stockAllocated, loading, onChange } = props; + const classes = useStyles(props); - return ( - - - -
-
- -
-
- -
+ const intl = useIntl(); + + return ( + + + +
+
+
- - - ); - } -); +
+ +
+
+
+
+ ); +}; ProductVariantStock.displayName = "ProductVariantStock"; export default ProductVariantStock; diff --git a/src/products/components/ProductVariants/ProductVariants.tsx b/src/products/components/ProductVariants/ProductVariants.tsx index 0de9f974d..3e81ee4f2 100644 --- a/src/products/components/ProductVariants/ProductVariants.tsx +++ b/src/products/components/ProductVariants/ProductVariants.tsx @@ -2,12 +2,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import Hidden from "@material-ui/core/Hidden"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -27,8 +22,8 @@ import { ListActions } from "../../../types"; import { ProductDetails_product_variants } from "../../types/ProductDetails"; import { ProductVariant_costPrice } from "../../types/ProductVariant"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ [theme.breakpoints.up("lg")]: { colName: {}, colPrice: { @@ -49,7 +44,7 @@ const styles = (theme: Theme) => colStatus: {}, denseTable: { "& td, & th": { - paddingRight: theme.spacing.unit * 3 + paddingRight: theme.spacing(3) } }, link: { @@ -61,9 +56,11 @@ const styles = (theme: Theme) => textRight: { textAlign: "right" as "right" } - }); + }), + { name: "ProductVariants" } +); -interface ProductVariantsProps extends ListActions, WithStyles { +interface ProductVariantsProps extends ListActions { disabled: boolean; variants: ProductDetails_product_variants[]; fallbackPrice?: ProductVariant_costPrice; @@ -74,9 +71,8 @@ interface ProductVariantsProps extends ListActions, WithStyles { const numberOfColumns = 5; -export const ProductVariants = withStyles(styles, { name: "ProductVariants" })( - ({ - classes, +export const ProductVariants: React.FC = props => { + const { disabled, variants, fallbackPrice, @@ -88,164 +84,163 @@ export const ProductVariants = withStyles(styles, { name: "ProductVariants" })( toggle, toggleAll, toolbar - }: ProductVariantsProps) => { - const intl = useIntl(); - const hasVariants = maybe(() => variants.length > 0, true); + } = props; + const classes = useStyles(props); - return ( - - - - - ) : ( - - ) - } - /> - {!variants.length && ( - - - - - - )} - {hasVariants && ( - - variants.length > 0, true); + + return ( + + - + + + ) : ( + + ) + } + /> + {!variants.length && ( + + + + + + )} + {hasVariants && ( +
+ + + + + + + + + + + + - - - - - - - - - - - - - - {renderCollection(variants, variant => { - const isSelected = variant ? isChecked(variant.id) : false; + + + + {renderCollection(variants, variant => { + const isSelected = variant ? isChecked(variant.id) : false; - return ( - + + toggle(variant.id)} + /> + + + {variant ? variant.name || variant.sku : } + + variant.stockQuantity > 0 + )} > - - toggle(variant.id)} + {variant ? ( + 0 ? "success" : "error"} + label={ + variant.stockQuantity > 0 + ? intl.formatMessage({ + defaultMessage: "Available", + description: "product variant status" + }) + : intl.formatMessage({ + defaultMessage: "Unavailable", + description: "product variant status" + }) + } /> - - - {variant ? variant.name || variant.sku : } - - variant.stockQuantity > 0 - )} - > + ) : ( + + )} + + + {variant ? variant.sku : } + + + {variant ? ( - 0 ? "success" : "error" - } - label={ - variant.stockQuantity > 0 - ? intl.formatMessage({ - defaultMessage: "Available", - description: "product variant status" - }) - : intl.formatMessage({ - defaultMessage: "Unavailable", - description: "product variant status" - }) - } - /> + variant.priceOverride ? ( + + ) : fallbackPrice ? ( + + ) : ( + + ) ) : ( )} - - {variant ? variant.sku : } - - - - {variant ? ( - variant.priceOverride ? ( - - ) : fallbackPrice ? ( - - ) : ( - - ) - ) : ( - - )} - - - - ); - })} - -
- )} -
- ); - } -); + + + ); + })} + + + )} + + ); +}; ProductVariants.displayName = "ProductVariants"; export default ProductVariants; diff --git a/src/products/index.tsx b/src/products/index.tsx index 5116bb43f..e08553b87 100644 --- a/src/products/index.tsx +++ b/src/products/index.tsx @@ -35,6 +35,7 @@ const ProductList: React.FC> = ({ location }) => { ? findInEnum(qs.sort, ProductListUrlSortField) : ProductListUrlSortField.name }; + return ; }; diff --git a/src/products/urls.ts b/src/products/urls.ts index 2f240496f..a24f7e570 100644 --- a/src/products/urls.ts +++ b/src/products/urls.ts @@ -1,6 +1,7 @@ -import { stringify as stringifyQs } from "qs"; import urlJoin from "url-join"; +import { stringifyQs } from "../utils/urls"; + import { ActiveTab, BulkAction, diff --git a/src/products/views/ProductList/ProductList.tsx b/src/products/views/ProductList/ProductList.tsx index 5e6ecb30b..6d9944608 100644 --- a/src/products/views/ProductList/ProductList.tsx +++ b/src/products/views/ProductList/ProductList.tsx @@ -395,10 +395,7 @@ export const ProductList: React.FC = ({ params }) => { > params.ids.length), @@ -430,10 +427,7 @@ export const ProductList: React.FC = ({ params }) => { > params.ids.length), @@ -465,10 +459,7 @@ export const ProductList: React.FC = ({ params }) => { > params.ids.length), diff --git a/src/products/views/ProductUpdate/ProductUpdate.tsx b/src/products/views/ProductUpdate/ProductUpdate.tsx index fdd453416..33ed7c1a2 100644 --- a/src/products/views/ProductUpdate/ProductUpdate.tsx +++ b/src/products/views/ProductUpdate/ProductUpdate.tsx @@ -359,10 +359,7 @@ export const ProductUpdate: React.FC = ({ id, params }) => { > params.ids.length), diff --git a/src/services/components/ServiceDefaultToken/ServiceDefaultToken.tsx b/src/services/components/ServiceDefaultToken/ServiceDefaultToken.tsx index 8e781bee8..bcbe7f1fb 100644 --- a/src/services/components/ServiceDefaultToken/ServiceDefaultToken.tsx +++ b/src/services/components/ServiceDefaultToken/ServiceDefaultToken.tsx @@ -3,11 +3,10 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import IconButton from "@material-ui/core/IconButton"; import Paper from "@material-ui/core/Paper"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import { fade } from "@material-ui/core/styles/colorManipulator"; import Typography from "@material-ui/core/Typography"; import CloseIcon from "@material-ui/icons/Close"; -import { makeStyles } from "@material-ui/styles"; import Link from "@saleor/components/Link"; import useClipboard from "@saleor/hooks/useClipboard"; import React from "react"; @@ -21,31 +20,31 @@ export interface ServiceDefaultTokenProps { } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ cancel: { - marginRight: theme.spacing.unit + marginRight: theme.spacing(1) }, closeContainer: { display: "flex", justifyContent: "flex-end", position: "relative", - right: -theme.spacing.unit, - top: -theme.spacing.unit + right: -theme.spacing(), + top: -theme.spacing(1) }, content: { display: "grid", - gridColumnGap: theme.spacing.unit * 3 + "px", + gridColumnGap: theme.spacing(3), gridTemplateColumns: "1fr 60px", - marginBottom: theme.spacing.unit * 3 + marginBottom: theme.spacing(3) }, copy: { - marginTop: theme.spacing.unit, + marginTop: theme.spacing(), position: "relative", - right: theme.spacing.unit + right: theme.spacing(1) }, paper: { background: fade(theme.palette.primary.main, 0.05), - padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px` + padding: theme.spacing(2, 3) }, root: { boxShadow: "0px 5px 10px rgba(0, 0, 0, 0.05)" diff --git a/src/services/components/ServiceList/ServiceList.tsx b/src/services/components/ServiceList/ServiceList.tsx index 9efeb2899..576b87f22 100644 --- a/src/services/components/ServiceList/ServiceList.tsx +++ b/src/services/components/ServiceList/ServiceList.tsx @@ -1,10 +1,5 @@ import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - WithStyles, - withStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -28,41 +23,37 @@ export interface ServiceListProps extends ListProps { onRemove: (id: string) => void; } -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colName: { - "&&": { - width: "auto" - } - } - }, - colAction: { - "&&": { - paddingRight: theme.spacing.unit - }, - textAlign: "right", - width: 100 - }, +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { colName: { - paddingLeft: 0, - width: 250 - }, - table: { - tableLayout: "fixed" - }, - tableRow: { - cursor: "pointer" + "&&": { + width: "auto" + } } - }); + }, + colAction: { + "&&": { + paddingRight: theme.spacing(1) + }, + textAlign: "right", + width: 100 + }, + colName: { + paddingLeft: 0, + width: 250 + }, + table: { + tableLayout: "fixed" + }, + tableRow: { + cursor: "pointer" + } +})); const numberOfColumns = 2; -const ServiceList = withStyles(styles, { - name: "ServiceList" -})( - ({ - classes, +const ServiceList: React.FC = props => { + const { settings, disabled, onNextPage, @@ -72,7 +63,11 @@ const ServiceList = withStyles(styles, { onRowClick, pageInfo, services - }: ServiceListProps & WithStyles) => ( + } = props; + + const classes = useStyles(props); + + return ( @@ -160,7 +155,7 @@ const ServiceList = withStyles(styles, { )}
- ) -); + ); +}; ServiceList.displayName = "ServiceList"; export default ServiceList; diff --git a/src/services/components/ServiceTokenCreateDialog/ServiceTokenCreateDialog.tsx b/src/services/components/ServiceTokenCreateDialog/ServiceTokenCreateDialog.tsx index 40d065b85..782d1e500 100644 --- a/src/services/components/ServiceTokenCreateDialog/ServiceTokenCreateDialog.tsx +++ b/src/services/components/ServiceTokenCreateDialog/ServiceTokenCreateDialog.tsx @@ -4,10 +4,9 @@ import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import Paper from "@material-ui/core/Paper"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -32,18 +31,18 @@ export interface ServiceTokenCreateDialogProps { type ServiceTokenCreateStep = "form" | "summary"; const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ cancel: { - marginRight: theme.spacing.unit + marginRight: theme.spacing(1) }, copy: { - marginTop: theme.spacing.unit, + marginTop: theme.spacing(), position: "relative", - right: theme.spacing.unit + right: theme.spacing(1) }, paper: { background: fade(theme.palette.primary.main, 0.05), - padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px` + padding: theme.spacing(2, 3) } }), { diff --git a/src/services/components/ServiceTokens/ServiceTokens.tsx b/src/services/components/ServiceTokens/ServiceTokens.tsx index 8258808dd..fee1fb703 100644 --- a/src/services/components/ServiceTokens/ServiceTokens.tsx +++ b/src/services/components/ServiceTokens/ServiceTokens.tsx @@ -1,14 +1,13 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { Theme } from "@material-ui/core/styles"; +import makeStyles from "@material-ui/core/styles/makeStyles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import DeleteIcon from "@material-ui/icons/Delete"; -import makeStyles from "@material-ui/styles/makeStyles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -23,7 +22,7 @@ export interface ServiceTokensProps { onDelete: (id: string) => void; } -const useStyles = makeStyles((theme: Theme) => ({ +const useStyles = makeStyles(theme => ({ [theme.breakpoints.down("md")]: { colNote: { width: 200 diff --git a/src/shipping/components/ShippingWeightUnitForm/index.ts b/src/shipping/components/ShippingWeightUnitForm/index.ts index 8c4dc991f..e33895dee 100644 --- a/src/shipping/components/ShippingWeightUnitForm/index.ts +++ b/src/shipping/components/ShippingWeightUnitForm/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingWeightUnitForm'; -export * from './ShippingWeightUnitForm'; \ No newline at end of file +export { default } from "./ShippingWeightUnitForm"; +export * from "./ShippingWeightUnitForm"; diff --git a/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx b/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx index bea0d3879..0503a31f0 100644 --- a/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx +++ b/src/shipping/components/ShippingZoneCountriesAssignDialog/ShippingZoneCountriesAssignDialog.tsx @@ -3,12 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -26,7 +21,6 @@ import ConfirmButton, { import Form from "@saleor/components/Form"; import FormSpacer from "@saleor/components/FormSpacer"; import Hr from "@saleor/components/Hr"; -// tslint:disable no-submodule-imports import { ShopInfo_shop_countries } from "@saleor/components/Shop/types/ShopInfo"; import { buttonMessages } from "@saleor/intl"; @@ -46,30 +40,28 @@ export interface ShippingZoneCountriesAssignDialogProps { onConfirm: (data: FormData) => void; } -const styles = (theme: Theme) => - createStyles({ - checkboxCell: { - paddingLeft: 0 - }, - container: { - maxHeight: 400 - }, - heading: { - marginBottom: theme.spacing.unit * 2, - marginTop: theme.spacing.unit * 2 - }, - table: { - border: "1px solid " + theme.palette.grey[200] - }, - wideCell: { - width: "100%" - } - }); -const ShippingZoneCountriesAssignDialog = withStyles(styles, { - name: "ShippingZoneCountriesAssignDialog" -})( - ({ - classes, +const useStyles = makeStyles(theme => ({ + checkboxCell: { + paddingLeft: 0 + }, + container: { + maxHeight: 400 + }, + heading: { + marginBottom: theme.spacing(2), + marginTop: theme.spacing(2) + }, + table: { + border: "1px solid " + theme.palette.grey[200] + }, + wideCell: { + width: "100%" + } +})); +const ShippingZoneCountriesAssignDialog: React.FC< + ShippingZoneCountriesAssignDialogProps +> = props => { + const { confirmButtonState, isDefault, onClose, @@ -77,165 +69,163 @@ const ShippingZoneCountriesAssignDialog = withStyles(styles, { open, initial, onConfirm - }: ShippingZoneCountriesAssignDialogProps & WithStyles) => { - const intl = useIntl(); + } = props; - const initialForm: FormData = { - countries: initial, - query: "", - restOfTheWorld: isDefault - }; - return ( - -
- {({ data, change }) => { - const countrySelectionMap = countries.reduce((acc, country) => { - acc[country.code] = !!data.countries.find( - selectedCountries => selectedCountries === country.code - ); - return acc; - }, {}); + const classes = useStyles(props); + const intl = useIntl(); - return ( - <> - - - - - - - - - change(event, () => fetch(data.query))} - label={intl.formatMessage({ - defaultMessage: "Search Countries" - })} - placeholder={intl.formatMessage({ - defaultMessage: "Search by country name" - })} - fullWidth - /> - -
- - - - - - - - - - - - - - - - - change({ - target: { - name: "restOfTheWorld" as keyof FormData, - value: !data.restOfTheWorld - } - } as any) - } - /> - - - -
-
- - - - - - - - {filter(countries, data.query, { - key: "country" - }).map(country => { - const isChecked = countrySelectionMap[country.code]; - - return ( - - - {country.country} - - - - isChecked - ? change({ - target: { - name: "countries" as keyof FormData, - value: data.countries.filter( - selectedCountries => - selectedCountries !== country.code - ) - } - } as any) - : change({ - target: { - name: "countries" as keyof FormData, - value: [ - ...data.countries, - country.code - ] - } - } as any) - } - /> - - - ); - })} - -
-
- - - - - - - + const initialForm: FormData = { + countries: initial, + query: "", + restOfTheWorld: isDefault + }; + return ( + + + {({ data, change }) => { + const countrySelectionMap = countries.reduce((acc, country) => { + acc[country.code] = !!data.countries.find( + selectedCountries => selectedCountries === country.code ); - }} - -
- ); - } -); + return acc; + }, {}); + + return ( + <> + + + + + + + + + change(event, () => fetch(data.query))} + label={intl.formatMessage({ + defaultMessage: "Search Countries" + })} + placeholder={intl.formatMessage({ + defaultMessage: "Search by country name" + })} + fullWidth + /> + +
+ + + + + + + + + + + + + + + + + change({ + target: { + name: "restOfTheWorld" as keyof FormData, + value: !data.restOfTheWorld + } + } as any) + } + /> + + + +
+
+ + + + + + + + {filter(countries, data.query, { + key: "country" + }).map(country => { + const isChecked = countrySelectionMap[country.code]; + + return ( + + + {country.country} + + + + isChecked + ? change({ + target: { + name: "countries" as keyof FormData, + value: data.countries.filter( + selectedCountries => + selectedCountries !== country.code + ) + } + } as any) + : change({ + target: { + name: "countries" as keyof FormData, + value: [...data.countries, country.code] + } + } as any) + } + /> + + + ); + })} + +
+
+ + + + + + + + ); + }} + +
+ ); +}; ShippingZoneCountriesAssignDialog.displayName = "ShippingZoneCountriesAssignDialog"; export default ShippingZoneCountriesAssignDialog; diff --git a/src/shipping/components/ShippingZoneCountriesAssignDialog/index.ts b/src/shipping/components/ShippingZoneCountriesAssignDialog/index.ts index 882ec3f99..500b27dd1 100644 --- a/src/shipping/components/ShippingZoneCountriesAssignDialog/index.ts +++ b/src/shipping/components/ShippingZoneCountriesAssignDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZoneCountriesAssignDialog'; -export * from './ShippingZoneCountriesAssignDialog'; \ No newline at end of file +export { default } from "./ShippingZoneCountriesAssignDialog"; +export * from "./ShippingZoneCountriesAssignDialog"; diff --git a/src/shipping/components/ShippingZoneCreatePage/index.ts b/src/shipping/components/ShippingZoneCreatePage/index.ts index 6c7ccbdd5..3a73c93ea 100644 --- a/src/shipping/components/ShippingZoneCreatePage/index.ts +++ b/src/shipping/components/ShippingZoneCreatePage/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZoneCreatePage'; -export * from './ShippingZoneCreatePage'; \ No newline at end of file +export { default } from "./ShippingZoneCreatePage"; +export * from "./ShippingZoneCreatePage"; diff --git a/src/shipping/components/ShippingZoneDetailsPage/index.ts b/src/shipping/components/ShippingZoneDetailsPage/index.ts index 1bfd26b13..17871daff 100644 --- a/src/shipping/components/ShippingZoneDetailsPage/index.ts +++ b/src/shipping/components/ShippingZoneDetailsPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZoneDetailsPage'; -export * from './ShippingZoneDetailsPage'; \ No newline at end of file +export { default } from "./ShippingZoneDetailsPage"; +export * from "./ShippingZoneDetailsPage"; diff --git a/src/shipping/components/ShippingZoneInfo/index.ts b/src/shipping/components/ShippingZoneInfo/index.ts index a04821eb0..bdf18dd66 100644 --- a/src/shipping/components/ShippingZoneInfo/index.ts +++ b/src/shipping/components/ShippingZoneInfo/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZoneInfo'; -export * from './ShippingZoneInfo'; \ No newline at end of file +export { default } from "./ShippingZoneInfo"; +export * from "./ShippingZoneInfo"; diff --git a/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx b/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx index 8fc583c73..2ef00d1f1 100644 --- a/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx +++ b/src/shipping/components/ShippingZoneRateDialog/ShippingZoneRateDialog.tsx @@ -3,12 +3,7 @@ import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import React from "react"; @@ -50,24 +45,26 @@ export interface ShippingZoneRateDialogProps { onSubmit: (data: FormData) => void; } -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ grid: { display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", + gridColumnGap: theme.spacing(2), gridTemplateColumns: "1fr 1fr" }, subheading: { - marginBottom: theme.spacing.unit * 2, - marginTop: theme.spacing.unit * 2 + marginBottom: theme.spacing(2), + marginTop: theme.spacing(2) } - }); -const ShippingZoneRateDialog = withStyles(styles, { - name: "ShippingZoneRateDialog" -})( - ({ + }), + { + name: "ShippingZoneRateDialog" + } +); +const ShippingZoneRateDialog: React.FC = props => { + const { action, - classes, + confirmButtonState, defaultCurrency, disabled, @@ -77,283 +74,281 @@ const ShippingZoneRateDialog = withStyles(styles, { open, rate, variant - }: ShippingZoneRateDialogProps & WithStyles) => { - const intl = useIntl(); + } = props; - const initialForm: FormData = - action === "create" - ? { - isFree: false, - maxValue: "", - minValue: "", - name: "", - noLimits: false, - price: "" - } - : { - isFree: maybe(() => rate.price.amount === 0, false), - maxValue: - variant === ShippingMethodTypeEnum.PRICE - ? maybe(() => rate.maximumOrderPrice.amount.toString(), "") - : maybe(() => rate.maximumOrderWeight.value.toString(), ""), - minValue: - variant === ShippingMethodTypeEnum.PRICE - ? maybe(() => rate.minimumOrderPrice.amount.toString(), "") - : maybe(() => rate.minimumOrderWeight.value.toString(), ""), - name: maybe(() => rate.name, ""), - noLimits: false, - price: maybe(() => rate.price.amount.toString(), "") - }; - if (action === "edit") { - initialForm.noLimits = !initialForm.maxValue && !initialForm.minValue; - } + const classes = useStyles(props); + const intl = useIntl(); - return ( - -
- {({ change, data, errors: formErrors, hasChanged }) => { - const typedFormErrors: FormErrors< - | "minimumOrderPrice" - | "minimumOrderWeight" - | "maximumOrderPrice" - | "maximumOrderWeight" - | "price" - | "name" - > = formErrors; - return ( - <> - - {variant === ShippingMethodTypeEnum.PRICE - ? action === "create" - ? intl.formatMessage({ - defaultMessage: "Add Price Rate", - description: "dialog header" - }) - : intl.formatMessage({ - defaultMessage: "Edit Price Rate", - description: "dialog header" - }) - : action === "create" + const initialForm: FormData = + action === "create" + ? { + isFree: false, + maxValue: "", + minValue: "", + name: "", + noLimits: false, + price: "" + } + : { + isFree: maybe(() => rate.price.amount === 0, false), + maxValue: + variant === ShippingMethodTypeEnum.PRICE + ? maybe(() => rate.maximumOrderPrice.amount.toString(), "") + : maybe(() => rate.maximumOrderWeight.value.toString(), ""), + minValue: + variant === ShippingMethodTypeEnum.PRICE + ? maybe(() => rate.minimumOrderPrice.amount.toString(), "") + : maybe(() => rate.minimumOrderWeight.value.toString(), ""), + name: maybe(() => rate.name, ""), + noLimits: false, + price: maybe(() => rate.price.amount.toString(), "") + }; + if (action === "edit") { + initialForm.noLimits = !initialForm.maxValue && !initialForm.minValue; + } + + return ( + + + {({ change, data, errors: formErrors, hasChanged }) => { + const typedFormErrors: FormErrors< + | "minimumOrderPrice" + | "minimumOrderWeight" + | "maximumOrderPrice" + | "maximumOrderWeight" + | "price" + | "name" + > = formErrors; + return ( + <> + + {variant === ShippingMethodTypeEnum.PRICE + ? action === "create" ? intl.formatMessage({ - defaultMessage: "Add Weight Rate", - description: - "add weight based shipping method, dialog header" + defaultMessage: "Add Price Rate", + description: "dialog header" }) : intl.formatMessage({ - defaultMessage: "Edit Weight Rate", - description: - "edit weight based shipping method, dialog header" - })} - - - - -
- - {!!variant ? ( - <> - - {variant === ShippingMethodTypeEnum.PRICE - ? intl.formatMessage({ - defaultMessage: "Value range", - description: "order price range" - }) - : intl.formatMessage({ - defaultMessage: "Weight range", - description: "order weight range" - })} - - - - - {variant === ShippingMethodTypeEnum.PRICE - ? intl.formatMessage({ - defaultMessage: - "This rate will apply to all orders of all prices" - }) - : intl.formatMessage({ - defaultMessage: - "This rate will apply to all orders of all weights" - })} - - - } - checked={data.noLimits} - onChange={change} - disabled={disabled} - /> - {!data.noLimits && ( - <> - -
- - -
- - )} - - ) : ( - - )} -
-
- - - - - - {!data.isFree && ( - <> - -
- + + + +
+ + {!!variant ? ( + <> + + {variant === ShippingMethodTypeEnum.PRICE + ? intl.formatMessage({ + defaultMessage: "Value range", + description: "order price range" + }) + : intl.formatMessage({ + defaultMessage: "Weight range", + description: "order weight range" })} - name={"price" as keyof FormData} - type="number" - value={data.price} - onChange={change} - InputProps={{ - endAdornment: defaultCurrency - }} - /> -
- - )} -
- - - - {action === "create" - ? intl.formatMessage({ - defaultMessage: "Create rate", - description: "button" - }) - : intl.formatMessage({ - defaultMessage: "Update rate", - description: "button" + + + + + {variant === ShippingMethodTypeEnum.PRICE + ? intl.formatMessage({ + defaultMessage: + "This rate will apply to all orders of all prices" + }) + : intl.formatMessage({ + defaultMessage: + "This rate will apply to all orders of all weights" + })} + + + } + checked={data.noLimits} + onChange={change} + disabled={disabled} + /> + {!data.noLimits && ( + <> + +
+ + +
+ + )} + + ) : ( + + )} + +
+ + + + + + {!data.isFree && ( + <> + +
+ - - - ); - }} - -
- ); - } -); + name={"price" as keyof FormData} + type="number" + value={data.price} + onChange={change} + InputProps={{ + endAdornment: defaultCurrency + }} + /> +
+ + )} + + + + + {action === "create" + ? intl.formatMessage({ + defaultMessage: "Create rate", + description: "button" + }) + : intl.formatMessage({ + defaultMessage: "Update rate", + description: "button" + })} + + + + ); + }} + + + ); +}; ShippingZoneRateDialog.displayName = "ShippingZoneRateDialog"; export default ShippingZoneRateDialog; diff --git a/src/shipping/components/ShippingZoneRateDialog/index.ts b/src/shipping/components/ShippingZoneRateDialog/index.ts index 3aa84f45e..45ef7d694 100644 --- a/src/shipping/components/ShippingZoneRateDialog/index.ts +++ b/src/shipping/components/ShippingZoneRateDialog/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZoneRateDialog'; -export * from './ShippingZoneRateDialog'; \ No newline at end of file +export { default } from "./ShippingZoneRateDialog"; +export * from "./ShippingZoneRateDialog"; diff --git a/src/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx b/src/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx index 530e5da4e..6645be304 100644 --- a/src/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx +++ b/src/shipping/components/ShippingZoneRates/ShippingZoneRates.tsx @@ -1,11 +1,6 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -35,152 +30,151 @@ export interface ShippingZoneRatesProps { onRateRemove: (id: string) => void; } -const styles = (theme: Theme) => - createStyles({ - alignRight: { - "&:last-child": { - paddingRight: 0 - }, - paddingRight: 0, - width: ICONBUTTON_SIZE + theme.spacing.unit / 2 +const useStyles = makeStyles(theme => ({ + alignRight: { + "&:last-child": { + paddingRight: 0 }, - nameColumn: { - width: 300 - }, - valueColumn: { - width: 300 - } - }); -const ShippingZoneRates = withStyles(styles, { name: "ShippingZoneRates" })( - ({ - classes, + paddingRight: 0, + width: ICONBUTTON_SIZE + theme.spacing(0.5) + }, + nameColumn: { + width: 300 + }, + valueColumn: { + width: 300 + } +})); +const ShippingZoneRates: React.FC = props => { + const { disabled, onRateAdd, onRateEdit, onRateRemove, rates, variant - }: ShippingZoneRatesProps & WithStyles) => { - const intl = useIntl(); + } = props; - return ( - - + const classes = useStyles(props); + const intl = useIntl(); + + return ( + + + + + } + /> + + + + - - } - /> -
- - - - - - - {variant === "price" - ? intl.formatMessage({ - defaultMessage: "Value Range", - description: "shipping method price range" - }) - : intl.formatMessage({ - defaultMessage: "Weight Range", - description: "shipping method weight range" - })} - - - - - - - - - - {renderCollection( - rates, - rate => ( - onRateEdit(rate.id) : undefined} - > - - {maybe(() => rate.name, )} - - - {maybe( - () => - variant === "price" ? ( - - ) : ( - - ), - - )} - - - {maybe( - () => ( - + + + {variant === "price" + ? intl.formatMessage({ + defaultMessage: "Value Range", + description: "shipping method price range" + }) + : intl.formatMessage({ + defaultMessage: "Weight Range", + description: "shipping method weight range" + })} + + + + + + + + + + {renderCollection( + rates, + rate => ( + onRateEdit(rate.id) : undefined} + > + + {maybe(() => rate.name, )} + + + {maybe( + () => + variant === "price" ? ( + + ) : ( + ), - - )} - - onRateEdit(rate.id)} - > - - - onRateRemove(rate.id)} - > - - - - ), - () => ( - - - - - - ) - )} - -
-
- ); - } -); + + )} + + + {maybe( + () => ( + + ), + + )} + + onRateEdit(rate.id)} + > + + + onRateRemove(rate.id)} + > + + + + ), + () => ( + + + + + + ) + )} + + +
+ ); +}; ShippingZoneRates.displayName = "ShippingZoneRates"; export default ShippingZoneRates; diff --git a/src/shipping/components/ShippingZoneRates/index.ts b/src/shipping/components/ShippingZoneRates/index.ts index 65c1ae1ce..7e1c9215f 100644 --- a/src/shipping/components/ShippingZoneRates/index.ts +++ b/src/shipping/components/ShippingZoneRates/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZoneRates'; -export * from './ShippingZoneRates'; \ No newline at end of file +export { default } from "./ShippingZoneRates"; +export * from "./ShippingZoneRates"; diff --git a/src/shipping/components/ShippingZonesList/ShippingZonesList.tsx b/src/shipping/components/ShippingZonesList/ShippingZonesList.tsx index 920d955b3..aa7f12cd2 100644 --- a/src/shipping/components/ShippingZonesList/ShippingZonesList.tsx +++ b/src/shipping/components/ShippingZonesList/ShippingZonesList.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -32,32 +27,30 @@ export interface ShippingZonesListProps extends ListProps, ListActions { onRemove: (id: string) => void; } -const styles = (theme: Theme) => - createStyles({ - [theme.breakpoints.up("lg")]: { - colCountries: {}, - colName: { width: 200 } - }, - alignRight: { - "&:last-child": { - paddingRight: theme.spacing.unit - }, - width: ICONBUTTON_SIZE + theme.spacing.unit / 2 - }, +const useStyles = makeStyles(theme => ({ + [theme.breakpoints.up("lg")]: { colCountries: {}, - colName: { - paddingLeft: 0 + colName: { width: 200 } + }, + alignRight: { + "&:last-child": { + paddingRight: theme.spacing(1) }, - row: { - cursor: "pointer" - } - }); + width: ICONBUTTON_SIZE + theme.spacing(0.5) + }, + colCountries: {}, + colName: { + paddingLeft: 0 + }, + row: { + cursor: "pointer" + } +})); const numberOfColumns = 4; -const ShippingZonesList = withStyles(styles, { name: "ShippingZonesList" })( - ({ - classes, +const ShippingZonesList: React.FC = props => { + const { disabled, settings, onAdd, @@ -73,127 +66,126 @@ const ShippingZonesList = withStyles(styles, { name: "ShippingZonesList" })( toggle, toggleAll, toolbar - }: ShippingZonesListProps & WithStyles) => { - const intl = useIntl(); + } = props; - return ( - - - - - } - /> - - - - - - - - - - - - - - - - - {renderCollection( - shippingZones, - shippingZone => { - const isSelected = shippingZone - ? isChecked(shippingZone.id) - : false; + const classes = useStyles(props); + const intl = useIntl(); - return ( - - - toggle(shippingZone.id)} - /> - - - {maybe( - () => shippingZone.name, - - )} - - - {maybe( - () => shippingZone.countries.length, - - )} - - - { - event.stopPropagation(); - onRemove(shippingZone.id); - }} - > - - - - - ); - }, - () => ( - - - + return ( + + + + + } + /> +
+ + + + + + + + + + + + + + + + {renderCollection( + shippingZones, + shippingZone => { + const isSelected = shippingZone + ? isChecked(shippingZone.id) + : false; + + return ( + + + toggle(shippingZone.id)} + /> + + + {maybe( + () => shippingZone.name, + + )} + + + {maybe( + () => shippingZone.countries.length, + + )} + + + { + event.stopPropagation(); + onRemove(shippingZone.id); + }} + > + + - ) - )} - -
-
- ); - } -); + ); + }, + () => ( + + + + + + ) + )} + + +
+ ); +}; ShippingZonesList.displayName = "ShippingZonesList"; export default ShippingZonesList; diff --git a/src/shipping/components/ShippingZonesList/index.ts b/src/shipping/components/ShippingZonesList/index.ts index f6f03db27..eb4b4d6b8 100644 --- a/src/shipping/components/ShippingZonesList/index.ts +++ b/src/shipping/components/ShippingZonesList/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZonesList'; -export * from './ShippingZonesList'; \ No newline at end of file +export { default } from "./ShippingZonesList"; +export * from "./ShippingZonesList"; diff --git a/src/shipping/components/ShippingZonesListPage/index.ts b/src/shipping/components/ShippingZonesListPage/index.ts index 199420676..6a8b2e669 100644 --- a/src/shipping/components/ShippingZonesListPage/index.ts +++ b/src/shipping/components/ShippingZonesListPage/index.ts @@ -1,2 +1,2 @@ -export { default } from './ShippingZonesListPage'; -export * from './ShippingZonesListPage'; \ No newline at end of file +export { default } from "./ShippingZonesListPage"; +export * from "./ShippingZonesListPage"; diff --git a/src/shipping/views/ShippingZoneDetails/index.tsx b/src/shipping/views/ShippingZoneDetails/index.tsx index 8c4db4858..599c95bcc 100644 --- a/src/shipping/views/ShippingZoneDetails/index.tsx +++ b/src/shipping/views/ShippingZoneDetails/index.tsx @@ -221,7 +221,7 @@ const ShippingZoneDetails: React.FC = ({ id={id} ops={ops} params={params} - shippingZone={data.shippingZone} + shippingZone={maybe(() => data.shippingZone)} unassignCountryTransitionState={formTransitionState} updateRateTransitionState={updateRateTransitionState} /> diff --git a/src/shipping/views/ShippingZonesList.tsx b/src/shipping/views/ShippingZonesList.tsx index f1a970f4b..6c8751520 100644 --- a/src/shipping/views/ShippingZonesList.tsx +++ b/src/shipping/views/ShippingZonesList.tsx @@ -251,10 +251,7 @@ export const ShippingZonesList: React.FC = ({ > params.ids.length), diff --git a/src/siteSettings/components/SiteSettingsAddress/SiteSettingsAddress.tsx b/src/siteSettings/components/SiteSettingsAddress/SiteSettingsAddress.tsx index 214a21ac0..aeda43ec6 100644 --- a/src/siteSettings/components/SiteSettingsAddress/SiteSettingsAddress.tsx +++ b/src/siteSettings/components/SiteSettingsAddress/SiteSettingsAddress.tsx @@ -1,6 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { createStyles, withStyles, WithStyles } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import React from "react"; import { useIntl } from "react-intl"; @@ -16,7 +16,7 @@ import { ChangeEvent } from "@saleor/hooks/useForm"; import { FormErrors } from "@saleor/types"; import { SiteSettingsPageFormData } from "../SiteSettingsPage"; -interface SiteSettingsAddressProps extends WithStyles { +interface SiteSettingsAddressProps { countries: SingleAutocompleteChoiceType[]; data: SiteSettingsPageFormData; displayCountry: string; @@ -26,15 +26,14 @@ interface SiteSettingsAddressProps extends WithStyles { onCountryChange: (event: ChangeEvent) => void; } -const styles = createStyles({ +const useStyles = makeStyles({ root: { overflow: "visible" } }); -const SiteSettingsAddress = withStyles(styles, { name: "SiteSettingsAddress" })( - ({ - classes, +const SiteSettingsAddress: React.FC = props => { + const { countries, data, disabled, @@ -42,131 +41,132 @@ const SiteSettingsAddress = withStyles(styles, { name: "SiteSettingsAddress" })( errors, onChange, onCountryChange - }: SiteSettingsAddressProps) => { - const intl = useIntl(); + } = props; + const classes = useStyles(props); - return ( - - + + + - + + + + + + - - + + + + - - - - - - - - - - - - - - - ); - } -); + + + + + + ); +}; SiteSettingsAddress.displayName = "SiteSettingsAddress"; export default SiteSettingsAddress; diff --git a/src/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx b/src/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx index a2eaaeadc..995cf39d3 100644 --- a/src/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx +++ b/src/siteSettings/components/SiteSettingsKeys/SiteSettingsKeys.tsx @@ -1,12 +1,7 @@ import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; import IconButton from "@material-ui/core/IconButton"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -23,103 +18,100 @@ import { ICONBUTTON_SIZE } from "../../../theme"; import { AuthorizationKeyType } from "../../../types/globalTypes"; import { SiteSettings_shop_authorizationKeys } from "../../types/SiteSettings"; -const styles = (theme: Theme) => - createStyles({ - iconCell: { - "&:last-child": { - paddingRight: 0 - }, - width: ICONBUTTON_SIZE + theme.spacing.unit / 2 - } - }); +const useStyles = makeStyles(theme => ({ + iconCell: { + "&:last-child": { + paddingRight: 0 + }, + width: ICONBUTTON_SIZE + theme.spacing(0.5) + } +})); -interface SiteSettingsKeysProps extends WithStyles { +interface SiteSettingsKeysProps { disabled: boolean; keys: SiteSettings_shop_authorizationKeys[]; onAdd: () => void; onRemove: (name: AuthorizationKeyType) => void; } -const SiteSettingsKeys = withStyles(styles, { name: "SiteSettingsKeys" })( - ({ classes, disabled, keys, onAdd, onRemove }: SiteSettingsKeysProps) => { - const intl = useIntl(); +const SiteSettingsKeys: React.FC = props => { + const { disabled, keys, onAdd, onRemove } = props; + const classes = useStyles(props); - return ( - - - - - } - /> - - - - - - - - - - - - - - {renderCollection( - keys, - key => ( - key.name)} - > - - {maybe( - () => authorizationKeyTypes[key.name], - - )} - - - {maybe(() => key.key, )} - - - onRemove(key.name)}> - - - - - ), - () => ( - - - - - - ) - )} - -
-
- ); - } -); + const intl = useIntl(); + + return ( + + + + + } + /> + + + + + + + + + + + + + + {renderCollection( + keys, + key => ( + key.name)}> + + {maybe( + () => authorizationKeyTypes[key.name], + + )} + + + {maybe(() => key.key, )} + + + onRemove(key.name)}> + + + + + ), + () => ( + + + + + + ) + )} + +
+
+ ); +}; SiteSettingsKeys.displayName = "SiteSettingsKeys"; export default SiteSettingsKeys; diff --git a/src/siteSettings/components/SiteSettingsMailing/SiteSettingsMailing.tsx b/src/siteSettings/components/SiteSettingsMailing/SiteSettingsMailing.tsx index e0bd5f9d2..425a86fb5 100644 --- a/src/siteSettings/components/SiteSettingsMailing/SiteSettingsMailing.tsx +++ b/src/siteSettings/components/SiteSettingsMailing/SiteSettingsMailing.tsx @@ -1,9 +1,8 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { Theme } from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; -import { makeStyles } from "@material-ui/styles"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -29,13 +28,13 @@ interface SiteSettingsMailingProps { } const useStyles = makeStyles( - (theme: Theme) => ({ + theme => ({ cardHelperText: { position: "relative", - top: -theme.spacing.unit + top: -theme.spacing(1) }, cardHelperTextCaption: { - marginBottom: theme.spacing.unit * 2 + marginBottom: theme.spacing(2) } }), { @@ -64,7 +63,7 @@ const SiteSettingsMailing: React.FC = props => { id="siteSettingsMailingHelperText" /> - + ({ + theme => ({ hr: { gridColumnEnd: "span 2", - margin: `${theme.spacing.unit}px 0` + margin: theme.spacing(1, 0) } }), { @@ -136,7 +135,7 @@ const SiteSettingsPage: React.FC = props => { {intl.formatMessage(sectionNames.siteSettings)} - +
@@ -154,7 +153,7 @@ const SiteSettingsPage: React.FC = props => { description="section header" /> - +
@@ -172,7 +171,7 @@ const SiteSettingsPage: React.FC = props => { description="section header" /> - + @@ -194,8 +193,8 @@ const SiteSettingsPage: React.FC = props => { description="section header" /> - - + +
- createStyles({ - hr: { - backgroundColor: "#eaeaea", - border: "none", - height: 1, - marginBottom: 0 - }, - sectionTitle: { - fontWeight: 600 as 600, - marginBottom: theme.spacing.unit, - marginTop: theme.spacing.unit * 2 - }, - textFieldGrid: { - display: "grid", - gridColumnGap: `${theme.spacing.unit * 2}px`, - gridTemplateColumns: "1fr 1fr" - } - }); +const useStyles = makeStyles(theme => ({ + hr: { + backgroundColor: "#eaeaea", + border: "none", + height: 1, + marginBottom: 0 + }, + sectionTitle: { + fontWeight: 600 as 600, + marginBottom: theme.spacing(), + marginTop: theme.spacing(2) + }, + textFieldGrid: { + display: "grid", + gridColumnGap: theme.spacing(2), + gridTemplateColumns: "1fr 1fr" + } +})); -interface StaffAddMemberDialogProps extends WithStyles { +interface StaffAddMemberDialogProps { confirmButtonState: ConfirmButtonTransitionState; errors: UserError[]; open: boolean; @@ -65,103 +59,95 @@ interface StaffAddMemberDialogProps extends WithStyles { onConfirm: (data: FormData) => void; } -const StaffAddMemberDialog = withStyles(styles, { - name: "StaffAddMemberDialog" -})( - ({ - classes, - confirmButtonState, - errors, - open, - onClose, - onConfirm - }: StaffAddMemberDialogProps) => { - const intl = useIntl(); +const StaffAddMemberDialog: React.FC = props => { + const { confirmButtonState, errors, open, onClose, onConfirm } = props; + const classes = useStyles(props); - return ( - -
- {({ change, data, errors: formErrors, hasChanged }) => ( - <> - - - - -
- - -
- + const intl = useIntl(); + + return ( + + + {({ change, data, errors: formErrors, hasChanged }) => ( + <> + + + + +
- -
- - - - - - - - - - - - - - - - - )} - -
- ); - } -); +
+ + + +
+ + + + + + + + + + + + + + + + + )} + + + ); +}; StaffAddMemberDialog.displayName = "StaffAddMemberDialog"; export default StaffAddMemberDialog; diff --git a/src/staff/components/StaffList/StaffList.tsx b/src/staff/components/StaffList/StaffList.tsx index f359027c6..1c65cd16f 100644 --- a/src/staff/components/StaffList/StaffList.tsx +++ b/src/staff/components/StaffList/StaffList.tsx @@ -1,9 +1,4 @@ -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; @@ -26,51 +21,49 @@ import { import { ListProps } from "@saleor/types"; import { StaffList_staffUsers_edges_node } from "../../types/StaffList"; -const styles = (theme: Theme) => - createStyles({ - avatar: { - alignItems: "center", - borderRadius: "100%", - display: "grid", - float: "left", - height: 47, - justifyContent: "center", - marginRight: theme.spacing.unit * 1 + "px", - overflow: "hidden", - width: 47 +const useStyles = makeStyles(theme => ({ + avatar: { + alignItems: "center", + borderRadius: "100%", + display: "grid", + float: "left", + height: 47, + justifyContent: "center", + marginRight: theme.spacing(1), + overflow: "hidden", + width: 47 + }, + avatarDefault: { + "& p": { + color: "#fff", + lineHeight: "47px" }, - avatarDefault: { - "& p": { - color: "#fff", - lineHeight: "47px" - }, - background: theme.palette.primary.main, - height: 47, - textAlign: "center", - width: 47 - }, - avatarImage: { - pointerEvents: "none", - width: "100%" - }, - statusText: { - color: "#9E9D9D" - }, - tableRow: { - cursor: "pointer" - }, - wideColumn: { - width: "80%" - } - }); + background: theme.palette.primary.main, + height: 47, + textAlign: "center", + width: 47 + }, + avatarImage: { + pointerEvents: "none", + width: "100%" + }, + statusText: { + color: "#9E9D9D" + }, + tableRow: { + cursor: "pointer" + }, + wideColumn: { + width: "80%" + } +})); -interface StaffListProps extends ListProps, WithStyles { +interface StaffListProps extends ListProps { staffMembers: StaffList_staffUsers_edges_node[]; } -const StaffList = withStyles(styles, { name: "StaffList" })( - ({ - classes, +const StaffList: React.FC = props => { + const { settings, disabled, onNextPage, @@ -79,108 +72,103 @@ const StaffList = withStyles(styles, { name: "StaffList" })( onRowClick, pageInfo, staffMembers - }: StaffListProps) => { - const intl = useIntl(); + } = props; - return ( - - - - - - - - - - - - - - + + + + - - - - {renderCollection( - staffMembers, - staffMember => ( - - -
- {maybe(() => staffMember.avatar.url) ? ( - staffMember.avatar.url)} - /> - ) : ( -
- {getUserInitials(staffMember)} -
- )} -
- - {getUserName(staffMember) || } - - - {maybe( - () => - staffMember.isActive - ? intl.formatMessage({ - defaultMessage: "Active", - description: "staff member status" - }) - : intl.formatMessage({ - defaultMessage: "Inactive", - description: "staff member status" - }), - - )} - -
- + + + + +
+ + + + + + + + {renderCollection( + staffMembers, + staffMember => ( + + +
+ {maybe(() => staffMember.avatar.url) ? ( + staffMember.avatar.url)} + /> + ) : ( +
+ {getUserInitials(staffMember)} +
+ )} +
+ + {getUserName(staffMember) || } + + {maybe( - () => staffMember.email, + () => + staffMember.isActive + ? intl.formatMessage({ + defaultMessage: "Active", + description: "staff member status" + }) + : intl.formatMessage({ + defaultMessage: "Inactive", + description: "staff member status" + }), )} -
-
- ), - () => ( - - - - - - ) - )} -
-
- ); - } -); + +
+ + {maybe(() => staffMember.email, )} + + + ), + () => ( + + + + + + ) + )} + + + ); +}; StaffList.displayName = "StaffList"; export default StaffList; diff --git a/src/staff/components/StaffProperties/StaffProperties.tsx b/src/staff/components/StaffProperties/StaffProperties.tsx index e80b61a08..b6a5e8311 100644 --- a/src/staff/components/StaffProperties/StaffProperties.tsx +++ b/src/staff/components/StaffProperties/StaffProperties.tsx @@ -1,11 +1,6 @@ import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; -import { - createStyles, - Theme, - withStyles, - WithStyles -} from "@material-ui/core/styles"; +import { makeStyles } from "@material-ui/core/styles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import React from "react"; @@ -18,8 +13,8 @@ import { commonMessages } from "@saleor/intl"; import { getUserInitials, maybe } from "../../../misc"; import { StaffMemberDetails_user } from "../../types/StaffMemberDetails"; -const styles = (theme: Theme) => - createStyles({ +const useStyles = makeStyles( + theme => ({ avatar: { "& svg": { fill: "#fff" @@ -62,7 +57,7 @@ const styles = (theme: Theme) => borderRadius: "100%", height: 120, opacity: 0, - padding: `${theme.spacing.unit * 2.5}px 0`, + padding: theme.spacing(2.5, 0), position: "absolute", textAlign: "center", textTransform: "uppercase", @@ -77,12 +72,12 @@ const styles = (theme: Theme) => display: "none" }, prop: { - marginBottom: theme.spacing.unit * 2 + "px" + marginBottom: theme.spacing(2) }, propGrid: { display: "grid", - gridColumnGap: theme.spacing.unit * 2 + "px", - gridRowGap: theme.spacing.unit + "px", + gridColumnGap: theme.spacing(2), + gridRowGap: theme.spacing(1), gridTemplateColumns: "1fr 1fr", [theme.breakpoints.down("xs")]: { gridTemplateColumns: "1fr" @@ -90,12 +85,14 @@ const styles = (theme: Theme) => }, root: { display: "grid", - gridColumnGap: theme.spacing.unit * 4 + "px", + gridColumnGap: theme.spacing(4), gridTemplateColumns: "120px 1fr" } - }); + }), + { name: "StaffProperties" } +); -interface StaffPropertiesProps extends WithStyles { +interface StaffPropertiesProps { canEditAvatar: boolean; className?: string; data: { @@ -110,106 +107,106 @@ interface StaffPropertiesProps extends WithStyles { onImageUpload: (file: File) => void; } -const StaffProperties = withStyles(styles, { name: "StaffProperties" })( - ({ +const StaffProperties: React.FC = props => { + const { canEditAvatar, - classes, className, data, staffMember, onChange, onImageDelete, onImageUpload - }: StaffPropertiesProps) => { - const intl = useIntl(); - const imgInputAnchor = React.createRef(); + } = props; - const clickImgInput = () => imgInputAnchor.current.click(); + const classes = useStyles(props); + const intl = useIntl(); + const imgInputAnchor = React.createRef(); - return ( - - - -
-
-
- {maybe(() => staffMember.avatar.url) ? ( - staffMember.avatar.url)} - /> - ) : ( -
- {getUserInitials(data)} -
- )} - {canEditAvatar && ( -
- - - - - - - - onImageUpload(event.target.files[0])} - type="file" - ref={imgInputAnchor} + const clickImgInput = () => imgInputAnchor.current.click(); + + return ( + + + +
+
+
+ {maybe(() => staffMember.avatar.url) ? ( + staffMember.avatar.url)} + /> + ) : ( +
+ {getUserInitials(data)} +
+ )} + {canEditAvatar && ( +
+ + + -
- )} -
+ + + + + onImageUpload(event.target.files[0])} + type="file" + ref={imgInputAnchor} + /> +
+ )}
-
-
-
- -
-
- -
-
- -
+
+
+
+
+ +
+
+ +
+
+
- - - ); - } -); +
+
+
+ ); +}; StaffProperties.displayName = "StaffProperties"; export default StaffProperties; diff --git a/src/storybook/Stories.test.ts b/src/storybook/Stories.test.ts index a79facced..08fa67c17 100644 --- a/src/storybook/Stories.test.ts +++ b/src/storybook/Stories.test.ts @@ -1,31 +1,25 @@ -import createGenerateClassName from "@material-ui/core/styles/createGenerateClassName"; -import createHookGenerateClassName from "@material-ui/styles/createGenerateClassName"; +import createGenerateClassName from "@material-ui/styles/createGenerateClassName"; import initStoryshots from "@storybook/addon-storyshots"; // tslint:disable no-submodule-imports import generateRandomKey from "draft-js/lib/generateRandomKey"; import { configure, render } from "enzyme"; import Adapter from "enzyme-adapter-react-16"; import toJSON from "enzyme-to-json"; +import React from "react"; + +// Fixes useLayoutEffect warnings +React.useLayoutEffect = React.useEffect; configure({ adapter: new Adapter() }); -jest.mock("@material-ui/core/styles/createGenerateClassName"); -(createGenerateClassName as any).mockImplementation( - () => (rule, stylesheet) => { - return [stylesheet.options.meta, rule.key, "id"].join("-"); - } -); - -jest.mock("@material-ui/styles/createGenerateClassName"); -(createHookGenerateClassName as any).mockImplementation( - () => (rule, stylesheet) => { - return [stylesheet.options.meta, rule.key, "id"].join("-"); - } -); - jest.mock("draft-js/lib/generateRandomKey"); (generateRandomKey as any).mockImplementation(() => "testKey"); +jest.mock("@material-ui/styles/createGenerateClassName"); +(createGenerateClassName as any).mockImplementation(() => (rule, stylesheet) => + [stylesheet.options.meta, rule.key, "id"].join("-") +); + initStoryshots({ configPath: "src/storybook/", test({ story }) { diff --git a/src/storybook/__snapshots__/Stories.test.ts.snap b/src/storybook/__snapshots__/Stories.test.ts.snap index 6db1eeb87..ef3360572 100644 --- a/src/storybook/__snapshots__/Stories.test.ts.snap +++ b/src/storybook/__snapshots__/Stories.test.ts.snap @@ -59,21 +59,21 @@ exports[`Storyshots Generics / AddressEdit default 1`] = ` style="padding:24px" >
-
-
-
- -
+
+
+
+
+
+ +
+
-
-
-
- -
+
+
+
+
+
+ +
+
+
@@ -496,7 +496,7 @@ exports[`Storyshots Generics / AddressFormatter default 1`] = ` style="padding:24px" >
- Elizabeth Vaughn - - +

419 Ruiz Orchard Apt. 199
- - +

52203 Port Danielshire - - +

Szwecja - +

@@ -537,14 +537,14 @@ exports[`Storyshots Generics / AddressFormatter when loading 1`] = ` style="padding:24px" >
@@ -582,20 +582,20 @@ exports[`Storyshots Generics / Autocomplete Menu default 1`] = ` style="padding:24px" >
@@ -637,20 +637,20 @@ exports[`Storyshots Generics / Autocomplete Menu error 1`] = ` style="padding:24px" >