@shipengine/alchemy 2.1.9 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ type ElementContainerContextValue = {
2
+ elementContainer: HTMLDivElement | null;
3
+ };
4
+ export type ElementContainerProviderProps = {
5
+ children: React.ReactNode;
6
+ className?: string;
7
+ };
8
+ /**
9
+ * Provides the HTML element marking the boundary of the Element
10
+ *
11
+ * Useful for re-targetting portal-based UI that would otherwise render at React's #root, placing it outside of
12
+ * the Element and lacking any styles.
13
+ *
14
+ * @example <IconTooltip container={elementContainer} {...otherProps} />
15
+ */
16
+ export declare const ElementContainerProvider: ({ children, className, }: ElementContainerProviderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
17
+ export declare const useElementContainer: () => ElementContainerContextValue;
18
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./element-container-provider";
@@ -1,3 +1,4 @@
1
1
  export * from "./alchemy-provider";
2
2
  export * from "./element";
3
+ export * from "./element-container-provider";
3
4
  export * from "./error-boundary";
package/index.js CHANGED
@@ -9778,6 +9778,24 @@ var classnames = {
9778
9778
 
9779
9779
  const cx = classnamesExports;
9780
9780
 
9781
+ const ElementContainerContext = React.createContext(void 0);
9782
+ const ElementContainerProvider = ({
9783
+ children,
9784
+ className
9785
+ }) => {
9786
+ const { scope } = useAlchemy();
9787
+ const elementContainerRef = React.useRef(null);
9788
+ return /* @__PURE__ */ jsx(ElementContainerContext.Provider, { value: { elementContainer: elementContainerRef.current }, children: /* @__PURE__ */ jsx("div", { className: cx(scope, className), "data-testid": scope, ref: elementContainerRef, children }) });
9789
+ };
9790
+ const useElementContainer = () => {
9791
+ const context = React.useContext(ElementContainerContext);
9792
+ if (!context)
9793
+ throw new Error(
9794
+ "useElementContainer must be called from within the scope of <ElementContainerProvider />"
9795
+ );
9796
+ return context;
9797
+ };
9798
+
9781
9799
  class ErrorBoundary extends React__namespace.Component {
9782
9800
  constructor(props) {
9783
9801
  super(props);
@@ -10249,7 +10267,7 @@ const Element = ({
10249
10267
  }) => {
10250
10268
  const { scope, onError } = useAlchemy();
10251
10269
  const i18n = useI18n({ resources });
10252
- return /* @__PURE__ */ jsx("div", { className: cx(scope, className), "data-testid": scope, children: /* @__PURE__ */ jsx(react.CacheProvider, { value: memoizedCreateCache(scope), children: /* @__PURE__ */ jsx(reactI18next.I18nextProvider, { i18n, children: /* @__PURE__ */ jsx(ErrorBoundary, { fallback: FallbackComponent, onError, children }) }) }) });
10270
+ return /* @__PURE__ */ jsx(ElementContainerProvider, { className, children: /* @__PURE__ */ jsx(react.CacheProvider, { value: memoizedCreateCache(scope), children: /* @__PURE__ */ jsx(reactI18next.I18nextProvider, { i18n, children: /* @__PURE__ */ jsx(ErrorBoundary, { fallback: FallbackComponent, onError, children }) }) }) });
10253
10271
  };
10254
10272
 
10255
10273
  var __defProp = Object.defineProperty;
@@ -10327,6 +10345,7 @@ exports.CustomPackagesAPI = CustomPackagesAPI;
10327
10345
  exports.CustomsContentsType = CustomsContentsType;
10328
10346
  exports.CustomsNonDeliveryType = CustomsNonDeliveryType;
10329
10347
  exports.Element = Element;
10348
+ exports.ElementContainerProvider = ElementContainerProvider;
10330
10349
  exports.ErrorBoundary = ErrorBoundary;
10331
10350
  exports.FundingSourcesAPI = FundingSourcesAPI;
10332
10351
  exports.InsuranceAPI = InsuranceAPI;
@@ -10367,6 +10386,7 @@ exports.useCreateShipment = useCreateShipment;
10367
10386
  exports.useCreateWarehouse = useCreateWarehouse;
10368
10387
  exports.useDeleteWarehouse = useDeleteWarehouse;
10369
10388
  exports.useDownloadRateCard = useDownloadRateCard;
10389
+ exports.useElementContainer = useElementContainer;
10370
10390
  exports.useFundingSourcesAddFunds = useFundingSourcesAddFunds;
10371
10391
  exports.useGetAccountSettings = useGetAccountSettings;
10372
10392
  exports.useGetAutoFundingConfiguration = useGetAutoFundingConfiguration;
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { createContext, forwardRef, useContext, createElement as createElement$1, Fragment, useState, useEffect, useCallback, useMemo } from 'react';
2
+ import { createContext, forwardRef, useContext, createElement as createElement$1, Fragment, useState, useEffect, useCallback, useMemo, useRef } from 'react';
3
3
  import { jsx as jsx$1, jsxs as jsxs$1 } from 'react/jsx-runtime';
4
4
  import { css, Global, ThemeProvider, CacheProvider } from '@emotion/react';
5
5
  import { BrandName } from '@packlink/brands';
@@ -9756,6 +9756,24 @@ var classnames = {
9756
9756
 
9757
9757
  const cx = classnamesExports;
9758
9758
 
9759
+ const ElementContainerContext = createContext(void 0);
9760
+ const ElementContainerProvider = ({
9761
+ children,
9762
+ className
9763
+ }) => {
9764
+ const { scope } = useAlchemy();
9765
+ const elementContainerRef = useRef(null);
9766
+ return /* @__PURE__ */ jsx(ElementContainerContext.Provider, { value: { elementContainer: elementContainerRef.current }, children: /* @__PURE__ */ jsx("div", { className: cx(scope, className), "data-testid": scope, ref: elementContainerRef, children }) });
9767
+ };
9768
+ const useElementContainer = () => {
9769
+ const context = useContext(ElementContainerContext);
9770
+ if (!context)
9771
+ throw new Error(
9772
+ "useElementContainer must be called from within the scope of <ElementContainerProvider />"
9773
+ );
9774
+ return context;
9775
+ };
9776
+
9759
9777
  class ErrorBoundary extends React.Component {
9760
9778
  constructor(props) {
9761
9779
  super(props);
@@ -10227,7 +10245,7 @@ const Element = ({
10227
10245
  }) => {
10228
10246
  const { scope, onError } = useAlchemy();
10229
10247
  const i18n = useI18n({ resources });
10230
- return /* @__PURE__ */ jsx("div", { className: cx(scope, className), "data-testid": scope, children: /* @__PURE__ */ jsx(CacheProvider, { value: memoizedCreateCache(scope), children: /* @__PURE__ */ jsx(I18nextProvider, { i18n, children: /* @__PURE__ */ jsx(ErrorBoundary, { fallback: FallbackComponent, onError, children }) }) }) });
10248
+ return /* @__PURE__ */ jsx(ElementContainerProvider, { className, children: /* @__PURE__ */ jsx(CacheProvider, { value: memoizedCreateCache(scope), children: /* @__PURE__ */ jsx(I18nextProvider, { i18n, children: /* @__PURE__ */ jsx(ErrorBoundary, { fallback: FallbackComponent, onError, children }) }) }) });
10231
10249
  };
10232
10250
 
10233
10251
  var __defProp = Object.defineProperty;
@@ -10291,4 +10309,4 @@ const alchemy = {
10291
10309
  createElement
10292
10310
  };
10293
10311
 
10294
- export { AccountSettingsAPI, AddressesAPI, AlchemyContext, AlchemyProvider, AlchemyTestProvider, CarriersAPI, CodedError, ConfirmationType, CreditCardVendor, Currency, CustomPackagesAPI, CustomsContentsType, CustomsNonDeliveryType, Element, ErrorBoundary, FundingSourcesAPI, InsuranceAPI, InsuranceProviderType, LabelsAPI, OrderSourcesAPI, RateCardStatus, RateCardsAPI, RatesAPI, types as SE, SalesOrderShipmentsAPI, SalesOrdersAPI, ShipEngine, ShipEngineAPI, ShipEngineContext, ShipmentsAPI, WarehousesAPI, alchemy, alchemy as default, delay, getEndUserIpAddress, isCodedError, isCodedErrors, logger, memoizedCreateCache, onError, renderAlchemyProviders, retryUntil, useAddFunds, useAlchemy, useCalculateRates, useConnectCarrier, useCreateFundingSource, useCreateLabel, useCreateRateCard, useCreateSalesOrderShipment, useCreateShipment, useCreateWarehouse, useDeleteWarehouse, useDownloadRateCard, useFundingSourcesAddFunds, useGetAccountSettings, useGetAutoFundingConfiguration, useGetCarrierById, useGetCountriesByCarrier, useGetCurrenciesByCarrier, useGetFundingSourceById, useGetInsuranceAccount, useGetLabel, useGetPackageRatingGroupByCarrier, useGetRateCardById, useGetSalesOrder, useGetSalesOrderShipment, useGetServicesByCarrier, useGetShipment, useGetShipmentRates, useGetWalletHistory, useI18n, useListCarriers, useListCustomPackageTypes, useListFundingSources, useListLabels, useListOrderSources, useListRateCards, useListSalesOrderShipments, useListSalesOrders, useListShipments, useListWarehouses, useLoadFonts, useLoadIcons, useLoadTheme, useNotifySalesOrderShipped, useParseAddress, usePublishRateCard, useRefreshOrderSource, useRefreshOrderSourceAsync, useRegisterCarrier, useShipEngine, useUpdateAccountSettings, useUpdateAutoFunding, useUpdateFundingSource, useUpdateRateCard, useUpdateSalesOrderShipment, useUpdateWarehouse, useUploadRateCard, useValidateAddresses, useVoidLabel };
10312
+ export { AccountSettingsAPI, AddressesAPI, AlchemyContext, AlchemyProvider, AlchemyTestProvider, CarriersAPI, CodedError, ConfirmationType, CreditCardVendor, Currency, CustomPackagesAPI, CustomsContentsType, CustomsNonDeliveryType, Element, ElementContainerProvider, ErrorBoundary, FundingSourcesAPI, InsuranceAPI, InsuranceProviderType, LabelsAPI, OrderSourcesAPI, RateCardStatus, RateCardsAPI, RatesAPI, types as SE, SalesOrderShipmentsAPI, SalesOrdersAPI, ShipEngine, ShipEngineAPI, ShipEngineContext, ShipmentsAPI, WarehousesAPI, alchemy, alchemy as default, delay, getEndUserIpAddress, isCodedError, isCodedErrors, logger, memoizedCreateCache, onError, renderAlchemyProviders, retryUntil, useAddFunds, useAlchemy, useCalculateRates, useConnectCarrier, useCreateFundingSource, useCreateLabel, useCreateRateCard, useCreateSalesOrderShipment, useCreateShipment, useCreateWarehouse, useDeleteWarehouse, useDownloadRateCard, useElementContainer, useFundingSourcesAddFunds, useGetAccountSettings, useGetAutoFundingConfiguration, useGetCarrierById, useGetCountriesByCarrier, useGetCurrenciesByCarrier, useGetFundingSourceById, useGetInsuranceAccount, useGetLabel, useGetPackageRatingGroupByCarrier, useGetRateCardById, useGetSalesOrder, useGetSalesOrderShipment, useGetServicesByCarrier, useGetShipment, useGetShipmentRates, useGetWalletHistory, useI18n, useListCarriers, useListCustomPackageTypes, useListFundingSources, useListLabels, useListOrderSources, useListRateCards, useListSalesOrderShipments, useListSalesOrders, useListShipments, useListWarehouses, useLoadFonts, useLoadIcons, useLoadTheme, useNotifySalesOrderShipped, useParseAddress, usePublishRateCard, useRefreshOrderSource, useRefreshOrderSourceAsync, useRegisterCarrier, useShipEngine, useUpdateAccountSettings, useUpdateAutoFunding, useUpdateFundingSource, useUpdateRateCard, useUpdateSalesOrderShipment, useUpdateWarehouse, useUploadRateCard, useValidateAddresses, useVoidLabel };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipengine/alchemy",
3
- "version": "2.1.9",
3
+ "version": "2.2.0",
4
4
  "main": "./index.js",
5
5
  "types": "./index.d.ts",
6
6
  "exports": {