@levi-gemcommerce/analytics 1.0.0-dev.36 → 1.0.0-dev.38
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.
- package/dist/esm/components/CardPathAnalysis/CardJourneyAnalysis.d.ts +3 -1
- package/dist/esm/components/CardPathAnalysis/components/PathAnalysisChart.d.ts +1 -0
- package/dist/esm/components/CardPathAnalysis/contexts/PathAnalysisConfigProvider.d.ts +23 -0
- package/dist/esm/components/CardPathAnalysis/contexts/PathAnalysisProvider.d.ts +2 -0
- package/dist/esm/components/CardPathAnalysis/contexts/index.d.ts +1 -0
- package/dist/esm/components/CardPathAnalysis/helpers/pathAnalysis.d.ts +1 -1
- package/dist/esm/gemxql.js +1 -1
- package/dist/esm/gemxql.mjs +1 -1
- package/dist/esm/index.js +361 -465
- package/dist/esm/index.mjs +361 -465
- package/dist/esm/modules/page-analytic/index.d.ts +1 -2
- package/dist/esm/providers/PricingProvider.d.ts +1 -1
- package/dist/esm/providers/index.d.ts +0 -2
- package/dist/esm/types/pricing.d.ts +1 -1
- package/dist/esm/types.js +1 -1
- package/dist/esm/types.mjs +1 -1
- package/dist/style.css +1 -1
- package/dist/umd/esm/components/CardPathAnalysis/CardJourneyAnalysis.d.ts +3 -1
- package/dist/umd/esm/components/CardPathAnalysis/components/PathAnalysisChart.d.ts +1 -0
- package/dist/umd/esm/components/CardPathAnalysis/contexts/PathAnalysisConfigProvider.d.ts +23 -0
- package/dist/umd/esm/components/CardPathAnalysis/contexts/PathAnalysisProvider.d.ts +2 -0
- package/dist/umd/esm/components/CardPathAnalysis/contexts/index.d.ts +1 -0
- package/dist/umd/esm/components/CardPathAnalysis/helpers/pathAnalysis.d.ts +1 -1
- package/dist/umd/esm/modules/page-analytic/index.d.ts +1 -2
- package/dist/umd/esm/providers/PricingProvider.d.ts +1 -1
- package/dist/umd/esm/providers/index.d.ts +0 -2
- package/dist/umd/esm/types/pricing.d.ts +1 -1
- package/dist/umd/index.js +1 -1
- package/package.json +4 -4
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare const LOCATION_PATH_KEY = "location_path";
|
|
1
|
+
import { IPAMetricKey } from '../analytics/types';
|
|
3
2
|
export declare const SHOPIFY_PAGE_TYPE_KEY = "shopify_page_type";
|
|
4
3
|
export declare const METRICS_COLUMNS: Record<IPAMetricKey, {
|
|
5
4
|
label: string;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { ConvertMoneyProvider, useConvertMoneyContext } from './ConvertMoneyProvider';
|
|
2
2
|
export type { IProps as IConvertMoneyProviderProps } from './ConvertMoneyProvider';
|
|
3
3
|
export { MetricChartProvider } from './MetricChartProvider';
|
|
4
|
-
export { PricingProvider, usePricingContext, usePricingPlanActive, usePricingPlanActiveState, useLimitPathAnalysis, usePricingModalMonitor, } from './PricingProvider';
|
|
5
|
-
export type { IPricingContextValue, IPricingProviderProps } from './PricingProvider';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* They are duplicated here so the SDK no longer needs to import the host's
|
|
5
5
|
* pricing module directly. The host can import these enums back from
|
|
6
|
-
* `@gem-sdk/analytics/types` to build the value passed to `
|
|
6
|
+
* `@gem-sdk/analytics/types` to build the value passed to `PathAnalysisConfigProvider`,
|
|
7
7
|
* which guarantees the string values stay in sync on both sides.
|
|
8
8
|
*/
|
|
9
9
|
export declare enum IPlanKey {
|
package/dist/esm/types.js
CHANGED
|
@@ -57,7 +57,7 @@ var ETrafficSourceType;
|
|
|
57
57
|
*
|
|
58
58
|
* They are duplicated here so the SDK no longer needs to import the host's
|
|
59
59
|
* pricing module directly. The host can import these enums back from
|
|
60
|
-
* `@gem-sdk/analytics/types` to build the value passed to `
|
|
60
|
+
* `@gem-sdk/analytics/types` to build the value passed to `PathAnalysisConfigProvider`,
|
|
61
61
|
* which guarantees the string values stay in sync on both sides.
|
|
62
62
|
*/
|
|
63
63
|
var IPlanKey;
|
package/dist/esm/types.mjs
CHANGED
|
@@ -57,7 +57,7 @@ var ETrafficSourceType;
|
|
|
57
57
|
*
|
|
58
58
|
* They are duplicated here so the SDK no longer needs to import the host's
|
|
59
59
|
* pricing module directly. The host can import these enums back from
|
|
60
|
-
* `@gem-sdk/analytics/types` to build the value passed to `
|
|
60
|
+
* `@gem-sdk/analytics/types` to build the value passed to `PathAnalysisConfigProvider`,
|
|
61
61
|
* which guarantees the string values stay in sync on both sides.
|
|
62
62
|
*/
|
|
63
63
|
var IPlanKey;
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.z-\[1000\]{z-index:1000}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.\!grid{display:grid!important}.grid{display:grid}.hidden{display:none}.h-7{height:1.75rem}.h-\[20px\]{height:20px}.h-\[2px\]{height:2px}.h-\[80px\]{height:80px}.h-\[8px\]{height:8px}.h-\[92px\]{height:92px}.h-full{height:100%}.max-h-\[250px\]{max-height:250px}.w-\[12px\]{width:12px}.w-\[20px\]{width:20px}.w-\[210px\]{width:210px}.w-\[320px\]{width:320px}.w-\[328px\]{width:328px}.w-\[50px\]{width:50px}.w-\[80px\]{width:80px}.w-\[8px\]{width:8px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[175px\]{min-width:175px}.min-w-\[184px\]{min-width:184px}.max-w-\[100\%\]{max-width:100%}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-\[2px\]{gap:2px}.overflow-hidden,.truncate{overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap}.rounded-\[10px\]{border-radius:10px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-dashed{border-style:dashed}.border-\[\#A1CAE7\]{--tw-border-opacity:1;border-color:rgb(161 202 231/var(--tw-border-opacity))}.bg-\[\#4FA9EA\]{--tw-bg-opacity:1;background-color:rgb(79 169 234/var(--tw-bg-opacity))}.bg-\[\#F1F1F1\]{--tw-bg-opacity:1;background-color:rgb(241 241 241/var(--tw-bg-opacity))}.bg-\[\#f7f7f7\]{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity))}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.pl-4{padding-left:1rem}.pr-1{padding-right:.25rem}.pr-\[5px\]{padding-right:5px}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.capitalize{text-transform:capitalize}.text-\[var\(--p-color-text\)\]{color:var(--p-color-text)}.text-\[var\(--p-color-text-disabled\)\]{color:var(--p-color-text-disabled)}.text-\[var\(--p-color-text-subdued\)\]{color:var(--p-color-text-subdued)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:bg-\[\#F1F1F1\]:hover{--tw-bg-opacity:1;background-color:rgb(241 241 241/var(--tw-bg-opacity))}.hover\:text-\[--p-color-text-link-hover\]:hover{color:var(--p-color-text-link-hover)}
|
|
1
|
+
.GPathSelectionItem{cursor:pointer;padding:8px 12px 12px;transition:background-color .2s ease}.GPathSelectionItem--selected{background-color:#f7f7f7}.GPathSelectionItem .GPathSelectionItem__view-icon{background-color:#ebebeb;border-radius:8px;display:none;margin-left:8px;padding:4px}.GPathSelectionItem:hover{background-color:#f7f7f7}.GPathSelectionItem:hover .GPathSelectionItem__percentage{display:none}.GPathSelectionItem:hover .GPathSelectionItem__view-icon{display:block}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.z-\[1000\]{z-index:1000}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.\!grid{display:grid!important}.grid{display:grid}.hidden{display:none}.h-7{height:1.75rem}.h-\[20px\]{height:20px}.h-\[2px\]{height:2px}.h-\[80px\]{height:80px}.h-\[8px\]{height:8px}.h-\[92px\]{height:92px}.h-full{height:100%}.max-h-\[250px\]{max-height:250px}.w-\[12px\]{width:12px}.w-\[20px\]{width:20px}.w-\[210px\]{width:210px}.w-\[320px\]{width:320px}.w-\[328px\]{width:328px}.w-\[50px\]{width:50px}.w-\[80px\]{width:80px}.w-\[8px\]{width:8px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[175px\]{min-width:175px}.min-w-\[184px\]{min-width:184px}.max-w-\[100\%\]{max-width:100%}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-\[2px\]{gap:2px}.overflow-hidden,.truncate{overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap}.rounded-\[10px\]{border-radius:10px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-dashed{border-style:dashed}.border-\[\#A1CAE7\]{--tw-border-opacity:1;border-color:rgb(161 202 231/var(--tw-border-opacity))}.bg-\[\#4FA9EA\]{--tw-bg-opacity:1;background-color:rgb(79 169 234/var(--tw-bg-opacity))}.bg-\[\#F1F1F1\]{--tw-bg-opacity:1;background-color:rgb(241 241 241/var(--tw-bg-opacity))}.bg-\[\#f7f7f7\]{--tw-bg-opacity:1;background-color:rgb(247 247 247/var(--tw-bg-opacity))}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.pl-4{padding-left:1rem}.pr-1{padding-right:.25rem}.pr-\[5px\]{padding-right:5px}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.capitalize{text-transform:capitalize}.text-\[var\(--p-color-text\)\]{color:var(--p-color-text)}.text-\[var\(--p-color-text-disabled\)\]{color:var(--p-color-text-disabled)}.text-\[var\(--p-color-text-subdued\)\]{color:var(--p-color-text-subdued)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:bg-\[\#F1F1F1\]:hover{--tw-bg-opacity:1;background-color:rgb(241 241 241/var(--tw-bg-opacity))}.hover\:text-\[--p-color-text-link-hover\]:hover{color:var(--p-color-text-link-hover)}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { CardPathAnalysisProps } from './components';
|
|
2
|
+
import type { IPathAnalysisConfig } from './contexts/PathAnalysisConfigProvider';
|
|
2
3
|
import { EAnalyticMode } from '@/types';
|
|
3
4
|
interface IProps extends CardPathAnalysisProps {
|
|
4
5
|
analyticMode: EAnalyticMode;
|
|
6
|
+
config: IPathAnalysisConfig;
|
|
5
7
|
}
|
|
6
|
-
export declare const CardJourneyAnalysis: ({ analyticMode, ...props }: IProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const CardJourneyAnalysis: ({ analyticMode, config, ...props }: IProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { IBasePathAnalyticPageWithChild } from '../types';
|
|
3
|
+
export interface IPathAnalysisPricingConfig {
|
|
4
|
+
isLoading: boolean;
|
|
5
|
+
isPathAnalysisEnabled: boolean;
|
|
6
|
+
onOpenModalPricing: () => void;
|
|
7
|
+
}
|
|
8
|
+
export interface IPathAnalysisHeatmapConfig {
|
|
9
|
+
isEnabledV1: boolean;
|
|
10
|
+
isEnabledV2: boolean;
|
|
11
|
+
onView: (level: number, pages: IBasePathAnalyticPageWithChild[]) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface IPathAnalysisConfig {
|
|
14
|
+
pricing: IPathAnalysisPricingConfig;
|
|
15
|
+
heatmap: IPathAnalysisHeatmapConfig;
|
|
16
|
+
}
|
|
17
|
+
export interface IPathAnalysisConfigProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
pricing: IPathAnalysisPricingConfig;
|
|
20
|
+
heatmap: IPathAnalysisHeatmapConfig;
|
|
21
|
+
}
|
|
22
|
+
export declare const PathAnalysisConfigProvider: ({ children, pricing, heatmap }: IPathAnalysisConfigProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare const usePathAnalysisConfig: () => IPathAnalysisConfig;
|
|
@@ -21,6 +21,7 @@ export interface IAnalyticsData {
|
|
|
21
21
|
previousPathAnalyticsMap?: Record<string, IBasePathAnalyticPageWithParent>;
|
|
22
22
|
isLoading?: boolean;
|
|
23
23
|
locationPath?: string;
|
|
24
|
+
shopifyPageType?: string;
|
|
24
25
|
}
|
|
25
26
|
export interface PathAnalysisType {
|
|
26
27
|
mode: EAnalyticMode;
|
|
@@ -30,6 +31,7 @@ export interface PathAnalysisType {
|
|
|
30
31
|
campaignVersionID?: string;
|
|
31
32
|
pathAnalytics?: IBasePathAnalyticPageWithParent[];
|
|
32
33
|
isLoadingMetric: boolean;
|
|
34
|
+
shopifyPageType?: string;
|
|
33
35
|
pageWithMetric: IBasePathAnalyticPageWithChild | undefined;
|
|
34
36
|
dynamicLevels: IBasePathAnalyticPageWithChild[];
|
|
35
37
|
nextLevelPages: IBasePathAnalyticPageWithChild[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IBasePathAnalyticPageWithChild, IBasePathAnalyticPageWithParent } from '../types';
|
|
2
1
|
import type { IGetTextPrice } from '@/modules/shopify';
|
|
2
|
+
import type { IBasePathAnalyticPageWithChild, IBasePathAnalyticPageWithParent } from '../types';
|
|
3
3
|
export declare const processPathAnalytics: (analyticsData: IBasePathAnalyticPageWithParent[] | undefined, locationPath: string) => IBasePathAnalyticPageWithChild | undefined;
|
|
4
4
|
export declare const processPathAnalyticsTree: (analyticsData: IBasePathAnalyticPageWithParent[] | undefined) => IBasePathAnalyticPageWithChild[] | undefined;
|
|
5
5
|
export declare const getFunnelChildrenPages: (page: IBasePathAnalyticPageWithChild | undefined) => IBasePathAnalyticPageWithChild[];
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare const LOCATION_PATH_KEY = "location_path";
|
|
1
|
+
import { IPAMetricKey } from '../analytics/types';
|
|
3
2
|
export declare const SHOPIFY_PAGE_TYPE_KEY = "shopify_page_type";
|
|
4
3
|
export declare const METRICS_COLUMNS: Record<IPAMetricKey, {
|
|
5
4
|
label: string;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { ConvertMoneyProvider, useConvertMoneyContext } from './ConvertMoneyProvider';
|
|
2
2
|
export type { IProps as IConvertMoneyProviderProps } from './ConvertMoneyProvider';
|
|
3
3
|
export { MetricChartProvider } from './MetricChartProvider';
|
|
4
|
-
export { PricingProvider, usePricingContext, usePricingPlanActive, usePricingPlanActiveState, useLimitPathAnalysis, usePricingModalMonitor, } from './PricingProvider';
|
|
5
|
-
export type { IPricingContextValue, IPricingProviderProps } from './PricingProvider';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* They are duplicated here so the SDK no longer needs to import the host's
|
|
5
5
|
* pricing module directly. The host can import these enums back from
|
|
6
|
-
* `@gem-sdk/analytics/types` to build the value passed to `
|
|
6
|
+
* `@gem-sdk/analytics/types` to build the value passed to `PathAnalysisConfigProvider`,
|
|
7
7
|
* which guarantees the string values stay in sync on both sides.
|
|
8
8
|
*/
|
|
9
9
|
export declare enum IPlanKey {
|