@ninetailed/experience.js-react 4.2.0-beta.5 → 4.2.0-beta.7

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.
Files changed (3) hide show
  1. package/index.cjs +65 -52
  2. package/index.js +66 -53
  3. package/package.json +3 -3
package/index.cjs CHANGED
@@ -1946,6 +1946,35 @@ const useExperiments = () => {
1946
1946
  };
1947
1947
  };
1948
1948
 
1949
+ const useExperienceSelectionMiddleware = ({
1950
+ experiences,
1951
+ baseline,
1952
+ profile
1953
+ }) => {
1954
+ const {
1955
+ plugins
1956
+ } = useNinetailed();
1957
+ const [_, setCurrentTime] = React.useState(Date.now());
1958
+ const {
1959
+ addListeners,
1960
+ removeListeners,
1961
+ middleware
1962
+ } = React.useMemo(() => experience_js.makeExperienceSelectMiddleware({
1963
+ plugins,
1964
+ experiences,
1965
+ baseline,
1966
+ profile,
1967
+ onChange: () => setCurrentTime(Date.now())
1968
+ }), [plugins, experiences, baseline, profile]);
1969
+ React.useEffect(() => {
1970
+ addListeners();
1971
+ return () => {
1972
+ removeListeners();
1973
+ };
1974
+ }, [addListeners, removeListeners]);
1975
+ return middleware;
1976
+ };
1977
+
1949
1978
  const useExperience = ({
1950
1979
  baseline,
1951
1980
  experiences
@@ -1959,6 +1988,31 @@ const useExperience = ({
1959
1988
  status,
1960
1989
  profile
1961
1990
  } = profileState;
1991
+ const experienceSelectionMiddleware = useExperienceSelectionMiddleware({
1992
+ experiences,
1993
+ baseline,
1994
+ profile
1995
+ });
1996
+ const overrideResult = _a => {
1997
+ var {
1998
+ experience: originalExperience,
1999
+ variant: originalVariant
2000
+ } = _a,
2001
+ other = __rest(_a, ["experience", "variant"]);
2002
+ const {
2003
+ experience,
2004
+ variant
2005
+ } = experienceSelectionMiddleware({
2006
+ experience: originalExperience,
2007
+ variant: originalVariant
2008
+ });
2009
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2010
+ // @ts-ignore
2011
+ return Object.assign(Object.assign({}, other), {
2012
+ experience,
2013
+ variant
2014
+ });
2015
+ };
1962
2016
  const baseReturn = Object.assign(Object.assign({}, profileState), {
1963
2017
  hasVariants,
1964
2018
  baseline
@@ -1973,17 +2027,17 @@ const useExperience = ({
1973
2027
  if (status === 'loading') {
1974
2028
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1975
2029
  // @ts-ignore
1976
- return emptyReturn;
2030
+ return overrideResult(emptyReturn);
1977
2031
  }
1978
2032
  if (status === 'error') {
1979
2033
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1980
2034
  // @ts-ignore
1981
- return emptyReturn;
2035
+ return overrideResult(emptyReturn);
1982
2036
  }
1983
2037
  if (!profile) {
1984
2038
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1985
2039
  // @ts-ignore
1986
- return emptyReturn;
2040
+ return overrideResult(emptyReturn);
1987
2041
  }
1988
2042
  const activeExperiments = experience_js.selectActiveExperiments(experiments, profile);
1989
2043
  const experience = experience_js.selectExperience({
@@ -1994,9 +2048,9 @@ const useExperience = ({
1994
2048
  if (!experience) {
1995
2049
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1996
2050
  // @ts-ignore
1997
- return Object.assign(Object.assign({}, emptyReturn), {
2051
+ return overrideResult(Object.assign(Object.assign({}, emptyReturn), {
1998
2052
  profile
1999
- });
2053
+ }));
2000
2054
  }
2001
2055
  const audience = experience.audience;
2002
2056
  const variant = experience_js.selectExperienceVariant({
@@ -2005,7 +2059,7 @@ const useExperience = ({
2005
2059
  profile
2006
2060
  });
2007
2061
  if (!variant) {
2008
- return Object.assign(Object.assign({}, baseReturn), {
2062
+ return overrideResult(Object.assign(Object.assign({}, baseReturn), {
2009
2063
  status: 'success',
2010
2064
  loading: false,
2011
2065
  error: null,
@@ -2014,9 +2068,9 @@ const useExperience = ({
2014
2068
  audience: audience ? audience : null,
2015
2069
  profile,
2016
2070
  isPersonalized: false
2017
- });
2071
+ }));
2018
2072
  }
2019
- return Object.assign(Object.assign({}, baseReturn), {
2073
+ return overrideResult(Object.assign(Object.assign({}, baseReturn), {
2020
2074
  status: 'success',
2021
2075
  loading: false,
2022
2076
  error: null,
@@ -2025,7 +2079,7 @@ const useExperience = ({
2025
2079
  audience: audience ? audience : null,
2026
2080
  profile,
2027
2081
  isPersonalized: true
2028
- });
2082
+ }));
2029
2083
  };
2030
2084
 
2031
2085
  const useJoinExperiment = () => {
@@ -2033,35 +2087,6 @@ const useJoinExperiment = () => {
2033
2087
  return context.joinExperiment;
2034
2088
  };
2035
2089
 
2036
- const useExperienceSelectionMiddleware = ({
2037
- experiences,
2038
- baseline,
2039
- profile
2040
- }) => {
2041
- const {
2042
- plugins
2043
- } = useNinetailed();
2044
- const [_, setCurrentTime] = React.useState(Date.now());
2045
- const {
2046
- addListeners,
2047
- removeListeners,
2048
- middleware
2049
- } = React.useMemo(() => experience_js.makeExperienceSelectMiddleware({
2050
- plugins,
2051
- experiences,
2052
- baseline,
2053
- profile,
2054
- onChange: () => setCurrentTime(Date.now())
2055
- }), [plugins, experiences, baseline, profile]);
2056
- React.useEffect(() => {
2057
- addListeners();
2058
- return () => {
2059
- removeListeners();
2060
- };
2061
- }, [addListeners, removeListeners]);
2062
- return middleware;
2063
- };
2064
-
2065
2090
  const DefaultExperienceLoadingComponent = _a => {
2066
2091
  var {
2067
2092
  component: Component,
@@ -2119,8 +2144,8 @@ const Experience = _a => {
2119
2144
  const {
2120
2145
  status,
2121
2146
  hasVariants,
2122
- experience: originalExperience,
2123
- variant: originalVariant,
2147
+ experience,
2148
+ variant,
2124
2149
  audience,
2125
2150
  isPersonalized,
2126
2151
  profile
@@ -2128,18 +2153,6 @@ const Experience = _a => {
2128
2153
  baseline,
2129
2154
  experiences
2130
2155
  });
2131
- const experienceSelectionMiddleware = useExperienceSelectionMiddleware({
2132
- experiences,
2133
- baseline,
2134
- profile
2135
- });
2136
- const {
2137
- experience,
2138
- variant
2139
- } = experienceSelectionMiddleware({
2140
- experience: originalExperience,
2141
- variant: originalVariant
2142
- });
2143
2156
  const joinExperiment = useJoinExperiment();
2144
2157
  React.useEffect(() => {
2145
2158
  if (status === 'success' && experience && profile) {
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import React, { createContext, useContext, useEffect, useState, useRef, useMemo, createElement as createElement$1, useCallback } from 'react';
3
- import { selectDistribution, selectHasExperienceVariants, selectActiveExperiments, selectExperience, selectExperienceVariant, makeExperienceSelectMiddleware, Ninetailed, selectVariant } from '@ninetailed/experience.js';
3
+ import { selectDistribution, makeExperienceSelectMiddleware, selectHasExperienceVariants, selectActiveExperiments, selectExperience, selectExperienceVariant, Ninetailed, selectVariant } from '@ninetailed/experience.js';
4
4
  import { useInView } from 'react-intersection-observer';
5
5
  import { isBrowser, logger } from '@ninetailed/experience.js-shared';
6
6
  import { isEqual, debounce as debounce$1, get as get$1 } from 'radash';
@@ -1938,6 +1938,35 @@ const useExperiments = () => {
1938
1938
  };
1939
1939
  };
1940
1940
 
1941
+ const useExperienceSelectionMiddleware = ({
1942
+ experiences,
1943
+ baseline,
1944
+ profile
1945
+ }) => {
1946
+ const {
1947
+ plugins
1948
+ } = useNinetailed();
1949
+ const [_, setCurrentTime] = useState(Date.now());
1950
+ const {
1951
+ addListeners,
1952
+ removeListeners,
1953
+ middleware
1954
+ } = useMemo(() => makeExperienceSelectMiddleware({
1955
+ plugins,
1956
+ experiences,
1957
+ baseline,
1958
+ profile,
1959
+ onChange: () => setCurrentTime(Date.now())
1960
+ }), [plugins, experiences, baseline, profile]);
1961
+ useEffect(() => {
1962
+ addListeners();
1963
+ return () => {
1964
+ removeListeners();
1965
+ };
1966
+ }, [addListeners, removeListeners]);
1967
+ return middleware;
1968
+ };
1969
+
1941
1970
  const useExperience = ({
1942
1971
  baseline,
1943
1972
  experiences
@@ -1951,6 +1980,31 @@ const useExperience = ({
1951
1980
  status,
1952
1981
  profile
1953
1982
  } = profileState;
1983
+ const experienceSelectionMiddleware = useExperienceSelectionMiddleware({
1984
+ experiences,
1985
+ baseline,
1986
+ profile
1987
+ });
1988
+ const overrideResult = _a => {
1989
+ var {
1990
+ experience: originalExperience,
1991
+ variant: originalVariant
1992
+ } = _a,
1993
+ other = __rest(_a, ["experience", "variant"]);
1994
+ const {
1995
+ experience,
1996
+ variant
1997
+ } = experienceSelectionMiddleware({
1998
+ experience: originalExperience,
1999
+ variant: originalVariant
2000
+ });
2001
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2002
+ // @ts-ignore
2003
+ return Object.assign(Object.assign({}, other), {
2004
+ experience,
2005
+ variant
2006
+ });
2007
+ };
1954
2008
  const baseReturn = Object.assign(Object.assign({}, profileState), {
1955
2009
  hasVariants,
1956
2010
  baseline
@@ -1965,17 +2019,17 @@ const useExperience = ({
1965
2019
  if (status === 'loading') {
1966
2020
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1967
2021
  // @ts-ignore
1968
- return emptyReturn;
2022
+ return overrideResult(emptyReturn);
1969
2023
  }
1970
2024
  if (status === 'error') {
1971
2025
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1972
2026
  // @ts-ignore
1973
- return emptyReturn;
2027
+ return overrideResult(emptyReturn);
1974
2028
  }
1975
2029
  if (!profile) {
1976
2030
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1977
2031
  // @ts-ignore
1978
- return emptyReturn;
2032
+ return overrideResult(emptyReturn);
1979
2033
  }
1980
2034
  const activeExperiments = selectActiveExperiments(experiments, profile);
1981
2035
  const experience = selectExperience({
@@ -1986,9 +2040,9 @@ const useExperience = ({
1986
2040
  if (!experience) {
1987
2041
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1988
2042
  // @ts-ignore
1989
- return Object.assign(Object.assign({}, emptyReturn), {
2043
+ return overrideResult(Object.assign(Object.assign({}, emptyReturn), {
1990
2044
  profile
1991
- });
2045
+ }));
1992
2046
  }
1993
2047
  const audience = experience.audience;
1994
2048
  const variant = selectExperienceVariant({
@@ -1997,7 +2051,7 @@ const useExperience = ({
1997
2051
  profile
1998
2052
  });
1999
2053
  if (!variant) {
2000
- return Object.assign(Object.assign({}, baseReturn), {
2054
+ return overrideResult(Object.assign(Object.assign({}, baseReturn), {
2001
2055
  status: 'success',
2002
2056
  loading: false,
2003
2057
  error: null,
@@ -2006,9 +2060,9 @@ const useExperience = ({
2006
2060
  audience: audience ? audience : null,
2007
2061
  profile,
2008
2062
  isPersonalized: false
2009
- });
2063
+ }));
2010
2064
  }
2011
- return Object.assign(Object.assign({}, baseReturn), {
2065
+ return overrideResult(Object.assign(Object.assign({}, baseReturn), {
2012
2066
  status: 'success',
2013
2067
  loading: false,
2014
2068
  error: null,
@@ -2017,7 +2071,7 @@ const useExperience = ({
2017
2071
  audience: audience ? audience : null,
2018
2072
  profile,
2019
2073
  isPersonalized: true
2020
- });
2074
+ }));
2021
2075
  };
2022
2076
 
2023
2077
  const useJoinExperiment = () => {
@@ -2025,35 +2079,6 @@ const useJoinExperiment = () => {
2025
2079
  return context.joinExperiment;
2026
2080
  };
2027
2081
 
2028
- const useExperienceSelectionMiddleware = ({
2029
- experiences,
2030
- baseline,
2031
- profile
2032
- }) => {
2033
- const {
2034
- plugins
2035
- } = useNinetailed();
2036
- const [_, setCurrentTime] = useState(Date.now());
2037
- const {
2038
- addListeners,
2039
- removeListeners,
2040
- middleware
2041
- } = useMemo(() => makeExperienceSelectMiddleware({
2042
- plugins,
2043
- experiences,
2044
- baseline,
2045
- profile,
2046
- onChange: () => setCurrentTime(Date.now())
2047
- }), [plugins, experiences, baseline, profile]);
2048
- useEffect(() => {
2049
- addListeners();
2050
- return () => {
2051
- removeListeners();
2052
- };
2053
- }, [addListeners, removeListeners]);
2054
- return middleware;
2055
- };
2056
-
2057
2082
  const DefaultExperienceLoadingComponent = _a => {
2058
2083
  var {
2059
2084
  component: Component,
@@ -2111,8 +2136,8 @@ const Experience = _a => {
2111
2136
  const {
2112
2137
  status,
2113
2138
  hasVariants,
2114
- experience: originalExperience,
2115
- variant: originalVariant,
2139
+ experience,
2140
+ variant,
2116
2141
  audience,
2117
2142
  isPersonalized,
2118
2143
  profile
@@ -2120,18 +2145,6 @@ const Experience = _a => {
2120
2145
  baseline,
2121
2146
  experiences
2122
2147
  });
2123
- const experienceSelectionMiddleware = useExperienceSelectionMiddleware({
2124
- experiences,
2125
- baseline,
2126
- profile
2127
- });
2128
- const {
2129
- experience,
2130
- variant
2131
- } = experienceSelectionMiddleware({
2132
- experience: originalExperience,
2133
- variant: originalVariant
2134
- });
2135
2148
  const joinExperiment = useJoinExperiment();
2136
2149
  useEffect(() => {
2137
2150
  if (status === 'success' && experience && profile) {
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@ninetailed/experience.js-react",
3
- "version": "4.2.0-beta.5",
3
+ "version": "4.2.0-beta.7",
4
4
  "peerDependencies": {
5
5
  "react": ">=16.8.0"
6
6
  },
7
7
  "dependencies": {
8
8
  "@analytics/google-analytics": "0.5.3",
9
9
  "react-visibility-sensor": "5.1.1",
10
- "@ninetailed/experience.js": "4.2.0-beta.5",
10
+ "@ninetailed/experience.js": "4.2.0-beta.7",
11
11
  "react-intersection-observer": "8.34.0",
12
- "@ninetailed/experience.js-shared": "4.2.0-beta.5",
12
+ "@ninetailed/experience.js-shared": "4.2.0-beta.7",
13
13
  "radash": "10.9.0",
14
14
  "analytics": "0.8.1"
15
15
  },