@usereactify/search 5.53.0-beta.2 → 5.53.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,27 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [5.53.0](https://bitbucket.org/usereactify/reactify-search-ui/compare/release-v5.52.0...release-v5.53.0) (2024-10-16)
6
+
7
+
8
+ ### Features
9
+
10
+ * add maths for autofill callouts when callouts span multiple rows and use displayedResults and numberOfResults when determining if autofill callout should be displayed ([abebb33](https://bitbucket.org/usereactify/reactify-search-ui/commit/abebb3306f20e347d92688b8fc74a3304a53cf24))
11
+ * add support for different callout autofill behaviour ([e48bda2](https://bitbucket.org/usereactify/reactify-search-ui/commit/e48bda22dcd85582eb3d58feadf1ed68fdae7c79))
12
+ * add support for filler callouts ([4f5936b](https://bitbucket.org/usereactify/reactify-search-ui/commit/4f5936b96aed898d3919517624e68e119538dd24))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * improve maths for calculating autofill callout ([62e65a4](https://bitbucket.org/usereactify/reactify-search-ui/commit/62e65a461667b1ab8235cba6a3956a89fea33946))
18
+
19
+ ## [5.53.0-beta.3](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.53.0-beta.2...beta-v5.53.0-beta.3) (2024-10-07)
20
+
21
+
22
+ ### Features
23
+
24
+ * add support for different callout autofill behaviour ([e48bda2](https://bitbucket.org/usereactify/reactify-search-ui/commit/e48bda22dcd85582eb3d58feadf1ed68fdae7c79))
25
+
5
26
  ## [5.53.0-beta.2](https://bitbucket.org/usereactify/reactify-search-ui/compare/beta-v5.53.0-beta.1...beta-v5.53.0-beta.2) (2024-10-04)
6
27
 
7
28
 
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usereactify/search",
3
3
  "description": "React UI library for Reactify Search",
4
- "version": "5.53.0-beta.2",
4
+ "version": "5.53.0",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
@@ -15,6 +15,7 @@ const ResultPaginationInfiniteScroll_1 = require("./ResultPaginationInfiniteScro
15
15
  const types_1 = require("../../types");
16
16
  const hooks_1 = require("../../hooks");
17
17
  const props_1 = require("../../utility/props");
18
+ const firestore_1 = require("../../types/firestore");
18
19
  const Results = (props) => {
19
20
  const reactifySearchContext = (0, hooks_1.useReactifySearchContext)();
20
21
  const filtersHook = (0, hooks_1.useFilters)();
@@ -108,8 +109,12 @@ const ResultsInner = (props) => {
108
109
  return overflow === props.gridColumns ? undefined : overflow;
109
110
  }, [props.gridColumns]);
110
111
  const gridOverflowCallout = react_1.default.useMemo(() => {
112
+ // check if there are more results
111
113
  if (props.reactivesearchResultProps.resultStats.displayedResults === props.reactivesearchResultProps.resultStats.numberOfResults) {
112
- return;
114
+ // check if we should only autofill when there are more results
115
+ if (context.config.merchandising.calloutAutofillBehaviour === firestore_1.MerchandisingCalloutAutofillBehaviour.MoreResults) {
116
+ return;
117
+ }
113
118
  }
114
119
  const overflow = calculateGridOverflow(props.reactivesearchResultProps.data);
115
120
  const callout = context.config.callouts.find((item) => item.displayColumns === `${overflow}`);
@@ -1 +1 @@
1
- {"version":3,"file":"Results.js","sourceRoot":"","sources":["../../../../src/components/Result/Results.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveList from \"@usereactify/search-internals/lib/components/result/ReactiveList\";\n\nimport { ResultCardCallout } from \"./ResultCardCallout\";\nimport { ResultCardProduct } from \"./ResultCardProduct\";\nimport { ResultPaginationNumbered } from \"./ResultPaginationNumbered\";\nimport { ResultPaginationLoadMore } from \"./ResultPaginationLoadMore\";\nimport { ResultPaginationNextPrev } from \"./ResultPaginationNextPrev\";\nimport { ResultPaginationInfiniteScroll } from \"./ResultPaginationInfiniteScroll\";\n\nimport {\n ElasticCallout,\n ElasticProduct,\n ElasticDocumentType,\n ReactivesearchError,\n ReactivesearchResultProps,\n ReactivesearchPaginationProps,\n ElasticHit,\n ElasticDocument,\n} from \"../../types\";\nimport {\n useReactifySearchContext,\n useAnalytics,\n useSearch,\n useFilters,\n useProductPrice,\n usePagination,\n usePaginationLoadable,\n useResults,\n} from \"../../hooks\";\nimport { getPropsResults } from \"../../utility/props\";\n\nexport type ResultProps = ReactivesearchResultProps & {\n callouts: ElasticCallout[];\n products: ElasticProduct[];\n};\n\nexport type ResultsProps = {\n /** Style prop for the list wrapper */\n listStyle?: React.HTMLAttributes<HTMLElement>[\"style\"];\n /** Classname prop for the list wrapper */\n listClassName?: string;\n /** Render method called when an error occurs */\n renderError?: React.FC<{ error: ReactivesearchError }>;\n /** Render method called while loading for the first time */\n renderLoading?: React.FC;\n /** Render method called when no results are found */\n renderNoResults?: React.FC;\n /** Render method called once for each product result */\n renderResultCardProduct?: React.FC<\n ReturnType<typeof useProductPrice> & {\n pagePosition: number;\n product: ElasticProduct;\n document: ElasticProduct;\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }\n >;\n /** Render method called once for each callout result */\n renderResultCardCallout?: React.FC<{\n pagePosition: number;\n document: ElasticCallout;\n callout: ElasticCallout[\"callout\"];\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }>;\n /** Render method called for pagination type \"pagination\" */\n renderPaginationNumbered?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"next_prev\" */\n renderPaginationNextPrev?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"load_more\" */\n renderPaginationLoadMore?: React.FC<ReturnType<typeof usePaginationLoadable>>;\n /** Render method called for pagination type \"infinite_scroll\" */\n renderPaginationInfiniteScroll?: React.FC<\n ReturnType<typeof usePaginationLoadable>\n >;\n /** Used to determine which filler callouts to use when there is an uneven grid */\n gridColumns?: number;\n /** Advanced Usage: Override the default amount of results per page */\n pageSize?: number;\n /** Advanced Usage: Override the default scrollTarget used to determine when infinite load should be triggered (infinite scroll) */\n infiniteScrollContainer?: React.ComponentProps<\n typeof ReactiveList\n >[\"scrollTarget\"];\n /** Advanced Usage: Provide a specific result position to trigger loading more results (infinite scroll) */\n infiniteScrollPosition?: number;\n /** Advanced Usage: Shows subsequent loading states after initial results are loaded */\n showSubsequentLoadingStates?: boolean;\n};\n\nexport const Results: React.FC<ResultsProps> = (props) => {\n const reactifySearchContext = useReactifySearchContext();\n const filtersHook = useFilters();\n const reactiveProps = getPropsResults({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n filterGroup: filtersHook.filterStack,\n scrollTarget: props.infiniteScrollContainer,\n pageSize: props.pageSize\n });\n\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n return (\n <ReactiveList\n {...reactiveProps}\n render={(reactivesearchResultProps: ReactivesearchResultProps) => (\n <ResultsInner\n {...props}\n reactivesearchResultProps={reactivesearchResultProps}\n />\n )}\n onData={(renderProps) => {\n if (renderProps.resultStats.numberOfResults === 0) {\n let trimmedSearchTerm = searchTerm.trim();\n\n if (\n !trimmedSearchTerm ||\n (trimmedSearchTerm && trimmedSearchTerm.length < 3)\n ) {\n return;\n }\n\n track({\n eventName: \"zeroResults\",\n payload: {\n searchTerm: trimmedSearchTerm,\n },\n });\n }\n }}\n renderPagination={(\n reactivesearchPaginationProps: ReactivesearchPaginationProps\n ) => (\n <ResultsPaginationStack {...props} {...reactivesearchPaginationProps} />\n )}\n />\n );\n};\n\nconst ResultsRenderErrorComponent: ResultsProps[\"renderError\"] = (props) => {\n return (\n <div>\n {\"Error: \"}\n {props.error.statusText}\n </div>\n );\n};\n\nconst ResultsRenderLoadingComponent: ResultsProps[\"renderLoading\"] = () => {\n return <div>{\"Loading\"}</div>;\n};\n\nconst ResultsRenderNoResultsComponent: ResultsProps[\"renderNoResults\"] = () => {\n return <div>{\"No results\"}</div>;\n};\n\nconst ResultsInner: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const context = useReactifySearchContext();\n const filtersHook = useFilters();\n const resultsHook = useResults();\n const initialSearchHasRun = React.useMemo(\n () =>\n \"undefined\" !==\n typeof props.reactivesearchResultProps.resultStats.numberOfResults,\n [props.reactivesearchResultProps]\n );\n\n const listStyle = React.useMemo<React.HTMLAttributes<HTMLElement>[\"style\"]>(\n () =>\n props.listStyle ?? {\n display: \"grid\",\n gap: \"8px\",\n gridTemplateColumns: \"repeat(4, minmax(0, 1fr))\",\n },\n [props.listStyle]\n );\n\n const infiniteScrollPosition = React.useMemo<number>(() => {\n if (!props.infiniteScrollPosition) {\n return NaN;\n }\n\n const scrollPositionOffset =\n props.reactivesearchResultProps.resultStats.displayedResults -\n (props.pageSize ?? filtersHook.filterStack?.pageSize ?? 0);\n\n return scrollPositionOffset + (props.infiniteScrollPosition ?? 0);\n }, [\n props.pageSize ?? filtersHook.filterStack?.pageSize,\n props.reactivesearchResultProps.resultStats.displayedResults,\n props.infiniteScrollPosition,\n ]);\n\n React.useEffect(() => {\n resultsHook.setResults(props.reactivesearchResultProps.data);\n resultsHook.setResultStats(props.reactivesearchResultProps.resultStats);\n }, [\n props.reactivesearchResultProps.resultStats.numberOfResults,\n props.reactivesearchResultProps.data.map((item) => item._id).join(\"\"),\n ]);\n\n const calculateGridOverflow = React.useCallback((results: ReactivesearchResultProps[\"data\"]) => {\n if (!props.gridColumns) {\n return;\n\n }\n let total = results.length;\n for (const result of results) {\n if (result.type === ElasticDocumentType.Product) {\n continue;\n }\n total += ((parseInt(result.callout.displayColumns) * parseInt(result.callout.displayRows)) - 1);\n }\n\n const overflow = props.gridColumns - (total % props.gridColumns);\n\n if (overflow === props.gridColumns) {\n return;\n }\n\n return overflow === props.gridColumns ? undefined : overflow;\n }, [props.gridColumns]);\n\n const gridOverflowCallout = React.useMemo((): Omit<ElasticHit, \"_source\"> & ElasticCallout | undefined => {\n if (props.reactivesearchResultProps.resultStats.displayedResults === props.reactivesearchResultProps.resultStats.numberOfResults) {\n return;\n }\n\n const overflow = calculateGridOverflow(props.reactivesearchResultProps.data);\n\n const callout = context.config.callouts.find((item) => item.displayColumns === `${overflow}`);\n if (!callout) {\n return;\n }\n\n return {\n _id: callout.id,\n _score: 0,\n type: ElasticDocumentType.Callout,\n key: Math.random().toString(16),\n callout: {\n ...callout,\n enabled: true,\n },\n published: true,\n curations: [],\n }\n }, [props.reactivesearchResultProps.resultStats, props.reactivesearchResultProps.data, context.config.callouts]);\n\n const results = React.useMemo(() => ([\n ...props.reactivesearchResultProps.data,\n ...gridOverflowCallout ? [gridOverflowCallout] : [],\n ]), [props.reactivesearchResultProps.data, gridOverflowCallout]);\n\n if (props.reactivesearchResultProps.error) {\n const RenderErrorComponent =\n props.renderError ?? ResultsRenderErrorComponent;\n\n return (\n <RenderErrorComponent error={props.reactivesearchResultProps.error} />\n );\n }\n\n if (!initialSearchHasRun) {\n const RenderLoadingComponent =\n props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n \n if (props.showSubsequentLoadingStates === true) {\n if (props.reactivesearchResultProps.loading) {\n const RenderLoadingComponent = props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n }\n\n if (\n !props.reactivesearchResultProps.loading &&\n !props.reactivesearchResultProps.resultStats.numberOfResults\n ) {\n const RenderNoResultsComponent =\n props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n\n if ([\"search\", \"instant-search\"].includes(context.options.mode)) {\n if (!context.search.searchTerm) {\n const RenderNoResultsComponent =\n props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n }\n\n return (\n <>\n <section style={listStyle} className={props.listClassName}>\n {results.map((item, key) => {\n if (ElasticDocumentType.Product === item.type) {\n return (\n <ResultCardProduct\n key={item._id}\n product={item}\n document={item}\n pagePosition={key + 1}\n render={props.renderResultCardProduct}\n {...(infiniteScrollPosition === key + 1\n ? {\n onView: () => props.reactivesearchResultProps.loadMore(),\n }\n : {})}\n />\n );\n }\n\n if (ElasticDocumentType.Callout === item.type) {\n return (\n <ResultCardCallout\n key={item._id}\n document={item}\n pagePosition={key + 1}\n callout={item.callout}\n render={props.renderResultCardCallout}\n {...(infiniteScrollPosition === key + 1\n ? {\n onView: () => props.reactivesearchResultProps.loadMore(),\n }\n : {})}\n />\n );\n }\n\n return null;\n })}\n </section>\n <ResultsPaginationStackLoadable\n {...props}\n {...props.reactivesearchResultProps}\n />\n </>\n );\n};\n\n/** Handles rendering pagination for types that use \"pagination props\" */\nconst ResultsPaginationStack: React.FC<\n ResultsProps & ReactivesearchPaginationProps\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"pagination\" === filterStack?.paginationType) {\n return (\n <ResultPaginationNumbered\n {...props}\n render={props.renderPaginationNumbered}\n />\n );\n }\n\n if (\"next_prev\" === filterStack?.paginationType) {\n return (\n <ResultPaginationNextPrev\n {...props}\n render={props.renderPaginationNextPrev}\n />\n );\n }\n\n return null;\n};\n\n/** Handles rendering pagination for types that use \"result props\" */\nconst ResultsPaginationStackLoadable: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"load_more\" === filterStack?.paginationType) {\n return (\n <ResultPaginationLoadMore\n {...props.reactivesearchResultProps}\n render={props.renderPaginationLoadMore}\n />\n );\n }\n\n if (\"infinite_scroll\" === filterStack?.paginationType) {\n return (\n <ResultPaginationInfiniteScroll\n {...props.reactivesearchResultProps}\n render={props.renderPaginationInfiniteScroll}\n />\n );\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"file":"Results.js","sourceRoot":"","sources":["../../../../src/components/Result/Results.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveList from \"@usereactify/search-internals/lib/components/result/ReactiveList\";\n\nimport { ResultCardCallout } from \"./ResultCardCallout\";\nimport { ResultCardProduct } from \"./ResultCardProduct\";\nimport { ResultPaginationNumbered } from \"./ResultPaginationNumbered\";\nimport { ResultPaginationLoadMore } from \"./ResultPaginationLoadMore\";\nimport { ResultPaginationNextPrev } from \"./ResultPaginationNextPrev\";\nimport { ResultPaginationInfiniteScroll } from \"./ResultPaginationInfiniteScroll\";\n\nimport {\n ElasticCallout,\n ElasticProduct,\n ElasticDocumentType,\n ReactivesearchError,\n ReactivesearchResultProps,\n ReactivesearchPaginationProps,\n ElasticHit,\n ElasticDocument,\n} from \"../../types\";\nimport {\n useReactifySearchContext,\n useAnalytics,\n useSearch,\n useFilters,\n useProductPrice,\n usePagination,\n usePaginationLoadable,\n useResults,\n} from \"../../hooks\";\nimport { getPropsResults } from \"../../utility/props\";\nimport { MerchandisingCalloutAutofillBehaviour } from \"../../types/firestore\";\n\nexport type ResultProps = ReactivesearchResultProps & {\n callouts: ElasticCallout[];\n products: ElasticProduct[];\n};\n\nexport type ResultsProps = {\n /** Style prop for the list wrapper */\n listStyle?: React.HTMLAttributes<HTMLElement>[\"style\"];\n /** Classname prop for the list wrapper */\n listClassName?: string;\n /** Render method called when an error occurs */\n renderError?: React.FC<{ error: ReactivesearchError }>;\n /** Render method called while loading for the first time */\n renderLoading?: React.FC;\n /** Render method called when no results are found */\n renderNoResults?: React.FC;\n /** Render method called once for each product result */\n renderResultCardProduct?: React.FC<\n ReturnType<typeof useProductPrice> & {\n pagePosition: number;\n product: ElasticProduct;\n document: ElasticProduct;\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }\n >;\n /** Render method called once for each callout result */\n renderResultCardCallout?: React.FC<{\n pagePosition: number;\n document: ElasticCallout;\n callout: ElasticCallout[\"callout\"];\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }>;\n /** Render method called for pagination type \"pagination\" */\n renderPaginationNumbered?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"next_prev\" */\n renderPaginationNextPrev?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"load_more\" */\n renderPaginationLoadMore?: React.FC<ReturnType<typeof usePaginationLoadable>>;\n /** Render method called for pagination type \"infinite_scroll\" */\n renderPaginationInfiniteScroll?: React.FC<\n ReturnType<typeof usePaginationLoadable>\n >;\n /** Used to determine which filler callouts to use when there is an uneven grid */\n gridColumns?: number;\n /** Advanced Usage: Override the default amount of results per page */\n pageSize?: number;\n /** Advanced Usage: Override the default scrollTarget used to determine when infinite load should be triggered (infinite scroll) */\n infiniteScrollContainer?: React.ComponentProps<\n typeof ReactiveList\n >[\"scrollTarget\"];\n /** Advanced Usage: Provide a specific result position to trigger loading more results (infinite scroll) */\n infiniteScrollPosition?: number;\n /** Advanced Usage: Shows subsequent loading states after initial results are loaded */\n showSubsequentLoadingStates?: boolean;\n};\n\nexport const Results: React.FC<ResultsProps> = (props) => {\n const reactifySearchContext = useReactifySearchContext();\n const filtersHook = useFilters();\n const reactiveProps = getPropsResults({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n filterGroup: filtersHook.filterStack,\n scrollTarget: props.infiniteScrollContainer,\n pageSize: props.pageSize\n });\n\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n return (\n <ReactiveList\n {...reactiveProps}\n render={(reactivesearchResultProps: ReactivesearchResultProps) => (\n <ResultsInner\n {...props}\n reactivesearchResultProps={reactivesearchResultProps}\n />\n )}\n onData={(renderProps) => {\n if (renderProps.resultStats.numberOfResults === 0) {\n let trimmedSearchTerm = searchTerm.trim();\n\n if (\n !trimmedSearchTerm ||\n (trimmedSearchTerm && trimmedSearchTerm.length < 3)\n ) {\n return;\n }\n\n track({\n eventName: \"zeroResults\",\n payload: {\n searchTerm: trimmedSearchTerm,\n },\n });\n }\n }}\n renderPagination={(\n reactivesearchPaginationProps: ReactivesearchPaginationProps\n ) => (\n <ResultsPaginationStack {...props} {...reactivesearchPaginationProps} />\n )}\n />\n );\n};\n\nconst ResultsRenderErrorComponent: ResultsProps[\"renderError\"] = (props) => {\n return (\n <div>\n {\"Error: \"}\n {props.error.statusText}\n </div>\n );\n};\n\nconst ResultsRenderLoadingComponent: ResultsProps[\"renderLoading\"] = () => {\n return <div>{\"Loading\"}</div>;\n};\n\nconst ResultsRenderNoResultsComponent: ResultsProps[\"renderNoResults\"] = () => {\n return <div>{\"No results\"}</div>;\n};\n\nconst ResultsInner: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const context = useReactifySearchContext();\n const filtersHook = useFilters();\n const resultsHook = useResults();\n const initialSearchHasRun = React.useMemo(\n () =>\n \"undefined\" !==\n typeof props.reactivesearchResultProps.resultStats.numberOfResults,\n [props.reactivesearchResultProps]\n );\n\n const listStyle = React.useMemo<React.HTMLAttributes<HTMLElement>[\"style\"]>(\n () =>\n props.listStyle ?? {\n display: \"grid\",\n gap: \"8px\",\n gridTemplateColumns: \"repeat(4, minmax(0, 1fr))\",\n },\n [props.listStyle]\n );\n\n const infiniteScrollPosition = React.useMemo<number>(() => {\n if (!props.infiniteScrollPosition) {\n return NaN;\n }\n\n const scrollPositionOffset =\n props.reactivesearchResultProps.resultStats.displayedResults -\n (props.pageSize ?? filtersHook.filterStack?.pageSize ?? 0);\n\n return scrollPositionOffset + (props.infiniteScrollPosition ?? 0);\n }, [\n props.pageSize ?? filtersHook.filterStack?.pageSize,\n props.reactivesearchResultProps.resultStats.displayedResults,\n props.infiniteScrollPosition,\n ]);\n\n React.useEffect(() => {\n resultsHook.setResults(props.reactivesearchResultProps.data);\n resultsHook.setResultStats(props.reactivesearchResultProps.resultStats);\n }, [\n props.reactivesearchResultProps.resultStats.numberOfResults,\n props.reactivesearchResultProps.data.map((item) => item._id).join(\"\"),\n ]);\n\n const calculateGridOverflow = React.useCallback((results: ReactivesearchResultProps[\"data\"]) => {\n if (!props.gridColumns) {\n return;\n\n }\n let total = results.length;\n for (const result of results) {\n if (result.type === ElasticDocumentType.Product) {\n continue;\n }\n total += ((parseInt(result.callout.displayColumns) * parseInt(result.callout.displayRows)) - 1);\n }\n\n const overflow = props.gridColumns - (total % props.gridColumns);\n\n if (overflow === props.gridColumns) {\n return;\n }\n\n return overflow === props.gridColumns ? undefined : overflow;\n }, [props.gridColumns]);\n\n const gridOverflowCallout = React.useMemo((): Omit<ElasticHit, \"_source\"> & ElasticCallout | undefined => {\n // check if there are more results\n if (props.reactivesearchResultProps.resultStats.displayedResults === props.reactivesearchResultProps.resultStats.numberOfResults) {\n // check if we should only autofill when there are more results\n if (context.config.merchandising.calloutAutofillBehaviour === MerchandisingCalloutAutofillBehaviour.MoreResults) {\n return;\n }\n }\n\n const overflow = calculateGridOverflow(props.reactivesearchResultProps.data);\n\n const callout = context.config.callouts.find((item) => item.displayColumns === `${overflow}`);\n if (!callout) {\n return;\n }\n\n return {\n _id: callout.id,\n _score: 0,\n type: ElasticDocumentType.Callout,\n key: Math.random().toString(16),\n callout: {\n ...callout,\n enabled: true,\n },\n published: true,\n curations: [],\n }\n }, [props.reactivesearchResultProps.resultStats, props.reactivesearchResultProps.data, context.config.callouts]);\n\n const results = React.useMemo(() => ([\n ...props.reactivesearchResultProps.data,\n ...gridOverflowCallout ? [gridOverflowCallout] : [],\n ]), [props.reactivesearchResultProps.data, gridOverflowCallout]);\n\n if (props.reactivesearchResultProps.error) {\n const RenderErrorComponent =\n props.renderError ?? ResultsRenderErrorComponent;\n\n return (\n <RenderErrorComponent error={props.reactivesearchResultProps.error} />\n );\n }\n\n if (!initialSearchHasRun) {\n const RenderLoadingComponent =\n props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n \n if (props.showSubsequentLoadingStates === true) {\n if (props.reactivesearchResultProps.loading) {\n const RenderLoadingComponent = props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n }\n\n if (\n !props.reactivesearchResultProps.loading &&\n !props.reactivesearchResultProps.resultStats.numberOfResults\n ) {\n const RenderNoResultsComponent =\n props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n\n if ([\"search\", \"instant-search\"].includes(context.options.mode)) {\n if (!context.search.searchTerm) {\n const RenderNoResultsComponent =\n props.renderNoResults ?? ResultsRenderNoResultsComponent;\n\n return <RenderNoResultsComponent />;\n }\n }\n\n return (\n <>\n <section style={listStyle} className={props.listClassName}>\n {results.map((item, key) => {\n if (ElasticDocumentType.Product === item.type) {\n return (\n <ResultCardProduct\n key={item._id}\n product={item}\n document={item}\n pagePosition={key + 1}\n render={props.renderResultCardProduct}\n {...(infiniteScrollPosition === key + 1\n ? {\n onView: () => props.reactivesearchResultProps.loadMore(),\n }\n : {})}\n />\n );\n }\n\n if (ElasticDocumentType.Callout === item.type) {\n return (\n <ResultCardCallout\n key={item._id}\n document={item}\n pagePosition={key + 1}\n callout={item.callout}\n render={props.renderResultCardCallout}\n {...(infiniteScrollPosition === key + 1\n ? {\n onView: () => props.reactivesearchResultProps.loadMore(),\n }\n : {})}\n />\n );\n }\n\n return null;\n })}\n </section>\n <ResultsPaginationStackLoadable\n {...props}\n {...props.reactivesearchResultProps}\n />\n </>\n );\n};\n\n/** Handles rendering pagination for types that use \"pagination props\" */\nconst ResultsPaginationStack: React.FC<\n ResultsProps & ReactivesearchPaginationProps\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"pagination\" === filterStack?.paginationType) {\n return (\n <ResultPaginationNumbered\n {...props}\n render={props.renderPaginationNumbered}\n />\n );\n }\n\n if (\"next_prev\" === filterStack?.paginationType) {\n return (\n <ResultPaginationNextPrev\n {...props}\n render={props.renderPaginationNextPrev}\n />\n );\n }\n\n return null;\n};\n\n/** Handles rendering pagination for types that use \"result props\" */\nconst ResultsPaginationStackLoadable: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"load_more\" === filterStack?.paginationType) {\n return (\n <ResultPaginationLoadMore\n {...props.reactivesearchResultProps}\n render={props.renderPaginationLoadMore}\n />\n );\n }\n\n if (\"infinite_scroll\" === filterStack?.paginationType) {\n return (\n <ResultPaginationInfiniteScroll\n {...props.reactivesearchResultProps}\n render={props.renderPaginationInfiniteScroll}\n />\n );\n }\n\n return null;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { Sort, FilterGroup, FilterFacet, Redirect, Relevance, Curation, Market, Antonym, Synonym, Callout } from "./firestore";
1
+ import { Sort, FilterGroup, FilterFacet, Redirect, Relevance, Curation, Market, Antonym, Synonym, Callout, MerchandisingCalloutAutofillBehaviour } from "./firestore";
2
2
  export declare type Config = {
3
3
  index: string;
4
4
  endpoint: string;
@@ -9,6 +9,9 @@ export declare type Config = {
9
9
  enabled: boolean;
10
10
  seconds: number;
11
11
  };
12
+ merchandising: {
13
+ calloutAutofillBehaviour: MerchandisingCalloutAutofillBehaviour;
14
+ };
12
15
  sort: Array<ConfigSort>;
13
16
  fields: Array<ConfigField>;
14
17
  filters: Array<ConfigFilter>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"","sourcesContent":["import { Sort, FilterGroup, FilterFacet, Redirect, Relevance, Curation, Market, Antonym, Synonym, Callout } from \"./firestore\";\n\n// when exposed as config, most resources have the `enabled` and `keywords` attributes removed\n// curation boosting groupings and sortings both have a json encoded elastic query added to them\n\nexport type Config = {\n index: string;\n endpoint: string;\n cluster: string;\n version: string;\n key: string;\n cache: {\n enabled: boolean;\n seconds: number;\n };\n sort: Array<ConfigSort>;\n fields: Array<ConfigField>;\n filters: Array<ConfigFilter>;\n redirects: Array<ConfigRedirect>;\n curations: Array<ConfigCuration>;\n antonyms: Array<ConfigAntonym>;\n synonyms: Array<ConfigSynonym>;\n callouts: Array<ConfigCallout>;\n markets: Array<Market>;\n suggestions: {\n exclude: Array<string>;\n };\n sensors: {\n search: Array<unknown>;\n collection: Array<unknown>;\n };\n}\n\nexport type ConfigAntonym = Omit<Antonym, \"enabled\">;\nexport type ConfigSynonym = Omit<Synonym, \"enabled\">;\nexport type ConfigCallout = Omit<Callout, \"enabled\">;\nexport type ConfigSort = Omit<Sort, \"enabled\">;\nexport type ConfigField = Omit<Relevance, \"enabled\">;\nexport type ConfigRedirect = Omit<Redirect, \"enabled\" | \"keywords\">;\nexport type ConfigFilter = Omit<FilterGroup, \"enabled\" | \"keywords\"> & { options: Omit<FilterFacet, \"enabled\">[] };\nexport type ConfigFilterFacet = Omit<FilterFacet, \"enabled\">;\nexport type ConfigCuration = Omit<Curation, \"keywords\" | \"boosting\" | \"longRunningTask\" | \"callouts\"> & {\n boosting: {\n groupings: Array<(NonNullable<NonNullable<Curation[\"boosting\"]>[\"groupings\"]>[0] & { query: string })>;\n sortings: Array<(NonNullable<NonNullable<Curation[\"boosting\"]>[\"sortings\"]>[0] & { query: string })>;\n };\n};"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"","sourcesContent":["import { Sort, FilterGroup, FilterFacet, Redirect, Relevance, Curation, Market, Antonym, Synonym, Callout, MerchandisingCalloutAutofillBehaviour } from \"./firestore\";\n\n// when exposed as config, most resources have the `enabled` and `keywords` attributes removed\n// curation boosting groupings and sortings both have a json encoded elastic query added to them\n\nexport type Config = {\n index: string;\n endpoint: string;\n cluster: string;\n version: string;\n key: string;\n cache: {\n enabled: boolean;\n seconds: number;\n };\n merchandising: {\n calloutAutofillBehaviour: MerchandisingCalloutAutofillBehaviour;\n };\n sort: Array<ConfigSort>;\n fields: Array<ConfigField>;\n filters: Array<ConfigFilter>;\n redirects: Array<ConfigRedirect>;\n curations: Array<ConfigCuration>;\n antonyms: Array<ConfigAntonym>;\n synonyms: Array<ConfigSynonym>;\n callouts: Array<ConfigCallout>;\n markets: Array<Market>;\n suggestions: {\n exclude: Array<string>;\n };\n sensors: {\n search: Array<unknown>;\n collection: Array<unknown>;\n };\n}\n\nexport type ConfigAntonym = Omit<Antonym, \"enabled\">;\nexport type ConfigSynonym = Omit<Synonym, \"enabled\">;\nexport type ConfigCallout = Omit<Callout, \"enabled\">;\nexport type ConfigSort = Omit<Sort, \"enabled\">;\nexport type ConfigField = Omit<Relevance, \"enabled\">;\nexport type ConfigRedirect = Omit<Redirect, \"enabled\" | \"keywords\">;\nexport type ConfigFilter = Omit<FilterGroup, \"enabled\" | \"keywords\"> & { options: Omit<FilterFacet, \"enabled\">[] };\nexport type ConfigFilterFacet = Omit<FilterFacet, \"enabled\">;\nexport type ConfigCuration = Omit<Curation, \"keywords\" | \"boosting\" | \"longRunningTask\" | \"callouts\"> & {\n boosting: {\n groupings: Array<(NonNullable<NonNullable<Curation[\"boosting\"]>[\"groupings\"]>[0] & { query: string })>;\n sortings: Array<(NonNullable<NonNullable<Curation[\"boosting\"]>[\"sortings\"]>[0] & { query: string })>;\n };\n};"]}
@@ -238,6 +238,11 @@ export interface ManageProduct {
238
238
  externalAppReactifyImageAI: boolean;
239
239
  suggestionsExclude?: Array<string>;
240
240
  automaticCleanCurations?: boolean;
241
+ merchandisingCalloutAutofillBehaviour: MerchandisingCalloutAutofillBehaviour;
242
+ }
243
+ export declare enum MerchandisingCalloutAutofillBehaviour {
244
+ Always = "always",
245
+ MoreResults = "more_results"
241
246
  }
242
247
  export interface ManageAutomation {
243
248
  sync: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActivityLogAction = exports.AnalyticsReports = exports.SynonymType = exports.CalloutType = exports.isPinCallout = exports.isPinProduct = exports.PinType = exports.PinSource = exports.CurationStatusLabel = exports.CurationStatus = exports.CurationTypeLabel = exports.CurationType = exports.SettingsCurationsImageOption = exports.ManageAdminFlag = exports.TaskSyncBulkDownloadTypeLabel = exports.ResourceTypeLabel = exports.ResourceType = void 0;
3
+ exports.ActivityLogAction = exports.AnalyticsReports = exports.SynonymType = exports.CalloutType = exports.isPinCallout = exports.isPinProduct = exports.PinType = exports.PinSource = exports.CurationStatusLabel = exports.CurationStatus = exports.CurationTypeLabel = exports.CurationType = exports.SettingsCurationsImageOption = exports.MerchandisingCalloutAutofillBehaviour = exports.ManageAdminFlag = exports.TaskSyncBulkDownloadTypeLabel = exports.ResourceTypeLabel = exports.ResourceType = void 0;
4
4
  var ResourceType;
5
5
  (function (ResourceType) {
6
6
  ResourceType["ActivityLog"] = "activity_log";
@@ -49,6 +49,11 @@ var ManageAdminFlag;
49
49
  (function (ManageAdminFlag) {
50
50
  ManageAdminFlag["Example"] = "example";
51
51
  })(ManageAdminFlag = exports.ManageAdminFlag || (exports.ManageAdminFlag = {}));
52
+ var MerchandisingCalloutAutofillBehaviour;
53
+ (function (MerchandisingCalloutAutofillBehaviour) {
54
+ MerchandisingCalloutAutofillBehaviour["Always"] = "always";
55
+ MerchandisingCalloutAutofillBehaviour["MoreResults"] = "more_results";
56
+ })(MerchandisingCalloutAutofillBehaviour = exports.MerchandisingCalloutAutofillBehaviour || (exports.MerchandisingCalloutAutofillBehaviour = {}));
52
57
  var SettingsCurationsImageOption;
53
58
  (function (SettingsCurationsImageOption) {
54
59
  SettingsCurationsImageOption["Index"] = "index";
@@ -1 +1 @@
1
- {"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../src/types/firestore.ts"],"names":[],"mappings":"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","sourcesContent":["import { ShopifyAppPurchaseOneTime, ShopifyAppSubscription, ShopifyProduct, ShopifyProductImage } from \"./shopify\";\nimport { ElasticDataType } from \"./elastic\";\nimport { AppPurchaseStatus } from \"./graphql\";\n\nexport interface ResourceDocument {\n id: string;\n keywords: Array<string>;\n version?: string;\n createdAt?: string;\n updatedAt?: string;\n}\n\nexport enum ResourceType {\n ActivityLog = \"activity_log\",\n Product = \"product\",\n Collection = \"collection\",\n Curation = \"curation\",\n Callout = \"callout\",\n SettingsAccount = \"account_settings\",\n SettingsAutomation = \"automation_settings\",\n SettingsProduct = \"product_settings\",\n FilterGroup = \"filter_group\",\n FilterFacet = \"filter_facet\",\n MergedValue = \"merged_value\",\n Redirect = \"redirect\",\n Relevancy = \"relevancy\",\n Sort = \"sort\",\n Antonym = \"antonym\",\n Synonym = \"synonym\",\n Task = \"task\",\n}\n\nexport const ResourceTypeLabel: Record<ResourceType, string> = {\n [ResourceType.ActivityLog]: \"Activity log\",\n [ResourceType.Product]: \"Product\",\n [ResourceType.Collection]: \"Collection\",\n [ResourceType.Curation]: \"Curation\",\n [ResourceType.Callout]: \"Callout\",\n [ResourceType.SettingsAccount]: \"Settings account\",\n [ResourceType.SettingsAutomation]: \"Settings automation\",\n [ResourceType.SettingsProduct]: \"Settings product\",\n [ResourceType.FilterGroup]: \"Filter group\",\n [ResourceType.FilterFacet]: \"Filter facet\",\n [ResourceType.MergedValue]: \"Merged value\",\n [ResourceType.Redirect]: \"Redirect\",\n [ResourceType.Relevancy]: \"Relevancy\",\n [ResourceType.Sort]: \"Sort\",\n [ResourceType.Antonym]: \"Antonym\",\n [ResourceType.Synonym]: \"Synonym\",\n [ResourceType.Task]: \"Task\",\n};\n\nexport interface Log {\n id: string\n keywords: Array<string>\n message: string\n platform: \"reactify\" | \"shopify\" | \"google\" | \"elastic\"\n percentCompleted: number\n action?: {\n type: \"retry\"\n label: string\n task: Task[\"taskId\"]\n }\n step:\n | \"syncMainDownload\"\n | \"syncBulkStart\"\n | \"syncBulkDownload\"\n | \"syncBulkTransform\"\n | \"syncBulkMerge\"\n | \"syncBulkUpload\"\n | \"syncBulkCleanup\"\n | \"syncBulkCleanupCurations\"\n | \"analyticsDownload\"\n | \"analyticsTransform\"\n | \"analyticsUpload\"\n | \"complete\"\n | \"analyticsStart\"\n title: string\n type: \"bulk\" | \"analytics\"\n data?: string // JSON sringified data\n progress: \"new\" | \"error\" | \"complete\" | \"partiallyComplete\"\n status: \"success\" | \"info\" | \"warning\" | \"critical\" // polaris banner status\n createdAt: string;\n updatedAt?: string;\n finishedAt?: string;\n}\n\nexport interface Task {\n logId: string\n taskId:\n | \"setupInstall\"\n | \"setupWebhook\"\n | \"syncCollectionId\"\n | \"syncProductId\"\n | \"syncMainDownload\"\n | \"syncBulkReset\"\n | \"syncBulkStart\"\n | \"syncBulkDownload\"\n | \"syncBulkTransform\"\n | \"syncBulkMerge\"\n | \"syncBulkUpload\"\n | \"syncBulkCleanup\"\n | \"syncBulkCleanupCurations\"\n | \"cleanCuration\"\n | \"cleanCurationId\"\n | \"plantSeeds\"\n | \"refreshMappings\"\n | \"refreshDefinedFields\"\n | \"refreshCurations\"\n | \"analyticsStart\"\n | \"analyticsDownload\"\n | \"analyticsTransform\"\n | \"analyticsUpload\"\n | \"indexCleanup\"\n | \"cacheClear\"\n | \"syncMarkets\"\n | \"syncConfig\"\n | \"syncShop\"\n firstRun?: boolean\n createdAt: string;\n updatedAt?: string;\n}\nexport interface TaskSub extends Task {\n taskSubId: string;\n}\n\nexport interface TaskSubSyncCollectionId extends TaskSub {\n taskId: \"syncCollectionId\"\n collectionGid: string\n}\nexport interface TaskSubSyncProductId extends TaskSub {\n taskId: \"syncProductId\"\n productGid: string\n}\nexport interface TaskSyncShop extends Task {\n taskId: \"syncShop\"\n manual?: boolean\n}\n\nexport interface TaskSyncMainDownload extends Task {\n taskId: \"syncMainDownload\"\n type: \"product_download\" | \"product_polling\" | \"collection_download\" | \"collection_polling\";\n productUrl?: string\n collectionUrl?: string\n manual?: boolean\n}\n\nexport interface TaskSyncBulkReset extends Task {\n taskId: \"syncBulkReset\"\n manual?: boolean\n}\n\nexport interface TaskSyncBulkStart extends Task {\n taskId: \"syncBulkStart\"\n manual?: boolean\n}\n\nexport interface TaskSyncBulkDownload extends Task {\n taskId: \"syncBulkDownload\"\n type: \"collection\" | \"product\" | \"product_market\"\n productUrl?: string\n productMarketUrl?: string\n collectionUrl?: string\n syncAt: string\n}\n\nexport const TaskSyncBulkDownloadTypeLabel: Record<\"collection\" | \"product\" | \"product_market\", string> = {\n collection: \"collection details\",\n product: \"product details\",\n product_market: \"product market details\",\n};\n\nexport interface TaskSyncBulkTransform extends Task {\n taskId: \"syncBulkTransform\"\n productUrl: string\n productMarketUrl?: string\n collectionUrl: string\n collectionCount?: number\n lastCollectionCursor?: string\n syncAt: string\n}\n\nexport interface TaskSyncBulkMerge extends Task {\n taskId: \"syncBulkMerge\"\n productCount: number\n collectionCount: number\n productCompletedCount?: number\n startAfterId?: string\n syncAt: string\n}\n\nexport interface TaskSyncBulkUpload extends Task {\n taskId: \"syncBulkUpload\"\n productCount: number\n collectionCount: number\n productCompletedCount?: number\n startAfterId?: string\n syncAt: string\n}\n\nexport interface TaskSyncBulkCleanup extends Task {\n taskId: \"syncBulkCleanup\"\n syncAt: string\n}\n\nexport interface TaskSyncBulkCleanupCurations extends Task {\n taskId: \"syncBulkCleanupCurations\"\n}\n\nexport interface TaskCleanCuration extends Task {\n taskId: \"cleanCuration\";\n startAfterId?: string;\n manual?: boolean;\n}\nexport interface TaskSubCleanCurationId extends TaskSub {\n taskId: \"cleanCurationId\";\n curationId: string;\n manual?: boolean;\n}\nexport interface TaskSetupInstall extends Task {\n taskId: \"setupInstall\"\n}\n\nexport interface TaskSetupWebhook extends Task {\n taskId: \"setupWebhook\"\n}\n\nexport interface TaskPlantSeeds extends Task {\n taskId: \"plantSeeds\"\n}\n\nexport interface TaskRefreshMappings extends Task {\n taskId: \"refreshMappings\"\n manual?: boolean\n}\n\nexport interface TaskRefreshDefinedFields extends Task {\n taskId: \"refreshDefinedFields\"\n manual?: boolean\n}\n\nexport interface TaskRefreshCurations extends Task {\n taskId: \"refreshCurations\"\n manual?: boolean\n}\n\nexport interface TaskAnalyticsStart extends Task {\n taskId: \"analyticsStart\"\n manual?: boolean\n}\n\nexport interface TaskAnalyticsDownload extends Task {\n taskId: \"analyticsDownload\"\n reports: AnalyticsReports[]\n manual?: boolean\n}\n\nexport interface TaskAnalyticsTransform extends Task {\n taskId: \"analyticsTransform\"\n startAfterId?: string\n manual?: boolean\n}\n\nexport interface TaskAnalyticsUpload extends Task {\n taskId: \"analyticsUpload\"\n startAfterId?: string\n manual?: boolean\n}\n\nexport interface TaskIndexCleanup extends Task {\n taskId: \"indexCleanup\"\n manual?: boolean\n}\n\nexport interface TaskCacheClear extends Task {\n taskId: \"cacheClear\"\n manual?: boolean\n}\n\nexport interface TaskSyncMarkets extends Task {\n taskId: \"syncMarkets\"\n manual?: boolean\n}\n\nexport interface TaskSyncConfig extends Task {\n taskId: \"syncConfig\"\n manual?: boolean\n}\nexport interface Lock {\n logId: string\n taskType: \"sync\" | \"syncConfig\" | \"syncCollectionId\" | \"syncProductId\" | \"analytics\"\n createdAt: string;\n expiresAt: string\n}\n\nexport enum ManageAdminFlag {\n Example = \"example\",\n}\nexport interface ManageAdmin {\n installed: boolean;\n indexRead: string;\n indexWrite: string;\n indexAlias: string;\n indexAutomatic: boolean;\n indexRollback: Array<{\n indexName: string;\n documentCount: number;\n createdAt: number;\n }>;\n indexRefreshInterval: string;\n // indexSettingsPending: boolean;\n endpoint: string;\n cluster: string;\n customMappings: string; // JSON sringified data\n customFilters: string; // JSON sringified data\n timezone: string;\n cacheEnabled: boolean;\n cacheSeconds: number;\n flags?: Array<ManageAdminFlag>;\n production: boolean;\n}\n\nexport interface ManageProduct {\n tagChild?: string\n tagKeys?: Array<string>\n tagParent?: string\n tagRelated?: string\n syncObjects?: Array<string>\n tagExclude?: Array<string>\n tagExcludeSearch?: Array<string>\n tagExcludeCollection?: Array<string>\n tagSeparator?: string\n metafieldWhitelist?: Array<string>\n externalAppReactifyImageAI: boolean\n suggestionsExclude?: Array<string>;\n automaticCleanCurations?: boolean;\n}\n\nexport interface ManageAutomation {\n sync: boolean\n webhooks: boolean\n mappings: boolean\n curations: boolean\n analytics: boolean\n syncFrequency: string\n syncThreshold: number\n notificationEnabled?: boolean;\n notificationEmail?: string;\n\n syncCatalogueCompletedAt?: number;\n syncAnalyticsCompletedAt?: number;\n syncConfigCompletedAt?: number;\n\n syncSpecialResourcePendingAt?: number | null;\n\n syncConfigHash?: string;\n}\n\nexport interface ManageAccount {\n shopifyPlanCustomCost?: number;\n shopifyPlanType?: \"general\" | \"partner\" | \"custom\";\n shopifyPlanStore?: \"primary\" | \"addon\";\n shopifyPlan?: \"non-plus\" | \"plus\" | \"development\";\n shopifyPlanSubscriptionShareCode?: string;\n stripeCustomerId?: string\n googleAnalyticsId?: string\n googleEmail?: string\n googleAccessToken?: string\n googleRefreshToken?: string\n googleAccessTokenExpiryDate?: number\n googleAnalyticsType?: \"UA\" | \"GA4\"\n googleIdField?: \"shopify_code\" | \"product_id\" | \"variant_id\" | \"variant_sku\" | \"variant_barcode\"\n}\n\nexport enum SettingsCurationsImageOption {\n Index = \"index\",\n Suffix = \"suffix\",\n}\n\nexport interface SettingsCurations {\n pageSize?: number\n gridColumns?: number\n imageOption: SettingsCurationsImageOption\n imagePosition: number\n imageSuffix: string\n imageSize?: \"small\" | \"medium\" | \"large\"\n imageSizePx: number;\n\n showCardDetailTitle?: boolean;\n showCardDetailContent?: boolean;\n showCardDetailPrice?: boolean;\n showCardDetailVendor?: boolean;\n showCardDetailPreorder?: boolean;\n showCardDetailDiscount?: boolean;\n showCardDetailInventory?: boolean;\n showCardDetailAvailability?: boolean;\n showCardDetailProfitMargin?: boolean;\n showCardDetailPublishedDays?: boolean;\n showCardDetailAnalyticsSales7Days?: boolean;\n showCardDetailAnalyticsSales30Days?: boolean;\n showCardDetailAnalyticsRevenue7Days?: boolean;\n showCardDetailAnalyticsRevenue30Days?: boolean;\n}\n\nexport interface Relevance extends ResourceDocument {\n field: string\n enabled: boolean\n importance: number\n searchType: \"always_search\" | \"search_page\" | \"instant_search\"\n hidden?: boolean\n}\n\nexport interface DefinedField {\n label: string\n value: string\n type: ElasticDataType | string\n}\n\nexport interface Sort extends ResourceDocument {\n name: string\n handle: string\n field: string\n position: number\n enabled: boolean\n direction: \"desc\" | \"asc\"\n visibility: \"all\" | \"search\" | \"collection\"\n hidden?: boolean\n}\n\nexport interface FilterGroup extends ResourceDocument {\n name: string\n handle: string\n enabled: boolean\n pageSize: number\n keywords: Array<string>\n collections: Array<string>\n type: \"search\" | \"collection\"\n paginationType: \"pagination\" | \"load_more\" | \"next_prev\" | \"infinite_scroll\"\n inventoryVisibility: \"show_all\" | \"hide_products\" | \"hide_variants\" | \"hide_all\"\n}\n\nexport interface FilterFacet extends ResourceDocument {\n name: string\n field: string\n handle: string\n position: number\n enabled: boolean\n keywords: Array<string>\n customSortOrder?: string\n displayType: \"multi\" | \"single\" | \"slider\"\n displayView: \"list\" | \"check\" | \"swatch\" | \"range\" | \"box\"\n displaySize: string\n displaySliderStep: string\n displaySliderPrefix: string\n displaySliderSuffix: string\n displayRangeOptions: Array<string>\n settingsShowMore: boolean\n settingsUppercase: boolean\n settingsShowSearch: boolean\n settingsShowFilter: boolean\n settingsShowEmptyValues: boolean\n settingsHideUnavailable: boolean\n settingsCollapsedMobile: boolean\n settingsCollapsedDesktop: boolean\n settingsFilterLogic: \"and\" | \"or\"\n valuesShow: \"all\" | \"manual\"\n valuesManual: Array<string>\n valuesExclude: Array<string>\n}\n\nexport interface Redirect extends ResourceDocument {\n url: string\n query: string\n enabled: boolean\n keywords: Array<string>\n hidden?: boolean\n}\n\nexport interface Curation extends ResourceDocument {\n title: string\n status: CurationStatus\n published: boolean\n keywords: Array<string>\n searchTerm?: string\n longRunningTask?: boolean\n collectionHandle?: string\n collectionId?: string\n type: CurationType;\n boosting?: {\n groupings?: BoostGrouping[]\n sortings?: BoostSorting[]\n }\n sort?: CurationSort\n schedule?: CurationSchedule\n hidden?: boolean\n\n markets?: Array<string>;\n}\n\nexport enum CurationType {\n Search = \"search\",\n Collection = \"collection\",\n};\n\nexport const CurationTypeLabel: Record<CurationType, string> = {\n [CurationType.Search]: \"Search\",\n [CurationType.Collection]: \"Collection\",\n};\n\nexport interface CurationSort {\n sortTag?: string\n sortOption: string\n sortDirection: \"asc\" | \"desc\"\n sortVariantOption?: \"option1\" | \"option2\" | \"option3\"\n}\n\nexport interface CurationSchedule {\n schedulePublish: string\n schedulePublishEnabled: boolean\n scheduleUnpublish: string\n scheduleUnpublishEnabled: boolean\n}\n\nexport enum CurationStatus {\n Draft = \"draft\",\n Publishing = \"publishing\",\n Published = \"published\",\n Error = \"error\",\n Unpublishing = \"unpublishing\",\n Resetting = \"resetting\",\n Pinning = \"pinning\",\n Sorting = \"sorting\",\n}\n\nexport const CurationStatusLabel: Record<CurationStatus, string> = {\n [CurationStatus.Draft]: \"Draft\",\n [CurationStatus.Publishing]: \"Publishing\",\n [CurationStatus.Published]: \"Published\",\n [CurationStatus.Error]: \"Error\",\n [CurationStatus.Unpublishing]: \"Unpublishing\",\n [CurationStatus.Resetting]: \"Resetting\",\n [CurationStatus.Pinning]: \"Pinning\",\n [CurationStatus.Sorting]: \"Sorting\",\n}\n\nexport interface CurationHiding {\n productId: number;\n}\n\nexport interface Market {\n id: string;\n label: string;\n enabled: boolean;\n publicationId: string;\n}\n\nexport interface BoostGrouping {\n key: string\n value: string\n field: string\n position: number\n operation: string\n}\n\nexport interface BoostSorting {\n key: string\n field: string\n query?: string\n position: number\n direction: \"asc\" | \"desc\"\n}\n\nexport type Pin = PinProduct | PinCallout\n\nexport enum PinSource {\n Manual = \"manual\",\n Automatic = \"automatic\",\n}\n\nexport enum PinType {\n Product = \"product\",\n Callout = \"callout\",\n}\n\nexport type PinTypeOnly = Pick<Pin, \"type\">\n\nexport function isPinProduct(pin: PinTypeOnly): pin is PinProduct {\n return PinType.Product === pin.type;\n}\n\nexport function isPinCallout(pin: PinTypeOnly): pin is PinCallout {\n return PinType.Callout === pin.type;\n}\n\nexport interface PinProduct {\n key: string\n type: PinType.Product\n position: number\n productId: number\n source?: PinSource // @todo migrate and change to non-optional field\n}\n\nexport interface PinCallout {\n key: string\n type: PinType.Callout\n position: number\n calloutId: string\n source?: PinSource // @todo migrate and change to non-optional field\n}\n\nexport interface Link {\n content: string\n url: string\n key: string\n}\n\nexport interface Callout extends ResourceDocument {\n id: string;\n type: CalloutType;\n link: string;\n links: Array<Link>;\n // name: string;\n title: string;\n content: string;\n enabled: boolean;\n textColor: string;\n keywords: Array<string>;\n mobileImage: string;\n mobileVideo: string;\n desktopVideo: string;\n desktopImage: string;\n backgroundColor: string;\n visibility: \"desktop\" | \"mobile\" | \"all\";\n displayColumns: string; // @todo this should be a number\n displayRows: string; // @todo this should be a number\n selectedDates?: {\n end: string;\n start: string;\n };\n hidden?: boolean;\n}\n\nexport enum CalloutType {\n Standard = \"standard\",\n Filler = \"filler\",\n}\n\nexport enum SynonymType {\n Group = \"group\",\n Oneway = \"oneway\",\n}\nexport interface Synonym extends ResourceDocument {\n id: string\n name: string\n enabled: boolean\n keywords: Array<string>\n synonyms: Array<string>\n type: SynonymType\n hidden?: boolean\n}\nexport interface Antonym extends ResourceDocument {\n id: string\n name: string\n enabled: boolean\n keywords: Array<string>\n antonyms: Array<string>\n hidden?: boolean\n}\n\nexport interface MergedValue extends ResourceDocument {\n id: string\n name: string\n field: string\n enabled: boolean\n keywords: Array<string>\n values: Array<string>\n hidden?: boolean\n}\n\nexport interface Collection extends ResourceDocument {\n title: string\n handle: string\n shopifyId: string\n productIds: Array<string>\n storefrontId: string\n legacyResourceId: number\n syncStatus?: \"error\" | \"complete\" | \"partiallyComplete\"\n syncAt?: string\n}\n\n// product is the shopify product with edges and nodes normalised\n\nexport type Product = ResourceDocument & Omit<ShopifyProduct, \"variants\" | \"images\" | \"media\" | \"metafields\" | \"category\" | \"unpublishedPublications\"> & {\n category: string;\n unpublishedPublications: ShopifyProduct[\"unpublishedPublications\"][\"edges\"][0][\"node\"][]\n variants: (Omit<ShopifyProduct[\"variants\"][\"edges\"][0][\"node\"], \"presentmentPrices\"> & {\n images?: Array<ShopifyProductImage> // from child product if this variant is from a child\n presentmentPrices: ShopifyProduct[\"variants\"][\"edges\"][0][\"node\"][\"presentmentPrices\"][\"edges\"][0][\"node\"][]\n productId?: string\n })[]\n related?: Array<string>\n images: Array<ShopifyProductImage>\n media: ShopifyProduct[\"media\"][\"edges\"][0][\"node\"][]\n metafields: ShopifyProduct[\"metafields\"][\"edges\"][0][\"node\"][]\n keywords: Array<string>\n syncStatus?: \"error\" | \"complete\" | \"partiallyComplete\"\n syncAt?: string;\n markets?: Array<string>;\n}\n\nexport interface Analytics {\n query: AnalyticsQueryDoc & {\n items: AnalyticsDownloadItem[]\n }\n}\n\nexport interface AnalyticsQueryDoc {\n tableId: string\n accountId: string\n profileId: string\n profileName: string\n webPropertyId: string\n internalWebPropertyId: string\n}\n\nexport interface AnalyticsDownloadItem {\n id: string\n name: string\n value: number\n externalId: string\n type: AnalyticsReports\n}\n\nexport interface AnalyticsUploadItems {\n id: string\n [AnalyticsReports.Sales7Days]: number\n [AnalyticsReports.Sales30Days]: number\n [AnalyticsReports.Revenue7Days]: number\n [AnalyticsReports.Revenue30Days]: number\n}\n\nexport enum AnalyticsReports {\n Sales7Days = \"sales_7days\",\n Sales30Days = \"sales_30days\",\n Revenue7Days = \"revenue_7days\",\n Revenue30Days = \"revenue_30days\",\n}\n\nexport enum ActivityLogAction {\n Create = \"create\",\n Delete = \"delete\",\n Duplicate = \"duplicate\",\n Sync = \"sync\",\n Trigger = \"trigger\",\n Update = \"update\",\n}\n\nexport interface ShopifyUser {\n account_owner: boolean\n bio: string\n email: string\n first_name: string\n id: string\n im: string\n last_name: string\n permissions: Array<string>\n phone: string\n receive_announcements: number\n screen_name: string\n url: string\n locale: string\n user_type: string\n}\n\nexport interface ActivityLog extends ResourceDocument {\n action: ActivityLogAction\n resourceDisplayName: string\n resourceId: string\n resourceType: ResourceType\n shopifyStaffMemberId: string | undefined\n}\n\nexport type BillingAppSubscription = ShopifyAppSubscription\nexport type BillingAppPurchaseOneTime = ShopifyAppPurchaseOneTime\nexport type BillingAppPurchaseCredit = {\n id: string;\n name: string;\n status: AppPurchaseStatus;\n amount: string;\n}"]}
1
+ {"version":3,"file":"firestore.js","sourceRoot":"","sources":["../../../src/types/firestore.ts"],"names":[],"mappings":"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","sourcesContent":["import { ShopifyAppPurchaseOneTime, ShopifyAppSubscription, ShopifyProduct, ShopifyProductImage } from \"./shopify\";\nimport { ElasticDataType } from \"./elastic\";\nimport { AppPurchaseStatus } from \"./graphql\";\n\nexport interface ResourceDocument {\n id: string;\n keywords: Array<string>;\n version?: string;\n createdAt?: string;\n updatedAt?: string;\n}\n\nexport enum ResourceType {\n ActivityLog = \"activity_log\",\n Product = \"product\",\n Collection = \"collection\",\n Curation = \"curation\",\n Callout = \"callout\",\n SettingsAccount = \"account_settings\",\n SettingsAutomation = \"automation_settings\",\n SettingsProduct = \"product_settings\",\n FilterGroup = \"filter_group\",\n FilterFacet = \"filter_facet\",\n MergedValue = \"merged_value\",\n Redirect = \"redirect\",\n Relevancy = \"relevancy\",\n Sort = \"sort\",\n Antonym = \"antonym\",\n Synonym = \"synonym\",\n Task = \"task\",\n}\n\nexport const ResourceTypeLabel: Record<ResourceType, string> = {\n [ResourceType.ActivityLog]: \"Activity log\",\n [ResourceType.Product]: \"Product\",\n [ResourceType.Collection]: \"Collection\",\n [ResourceType.Curation]: \"Curation\",\n [ResourceType.Callout]: \"Callout\",\n [ResourceType.SettingsAccount]: \"Settings account\",\n [ResourceType.SettingsAutomation]: \"Settings automation\",\n [ResourceType.SettingsProduct]: \"Settings product\",\n [ResourceType.FilterGroup]: \"Filter group\",\n [ResourceType.FilterFacet]: \"Filter facet\",\n [ResourceType.MergedValue]: \"Merged value\",\n [ResourceType.Redirect]: \"Redirect\",\n [ResourceType.Relevancy]: \"Relevancy\",\n [ResourceType.Sort]: \"Sort\",\n [ResourceType.Antonym]: \"Antonym\",\n [ResourceType.Synonym]: \"Synonym\",\n [ResourceType.Task]: \"Task\",\n};\n\nexport interface Log {\n id: string\n keywords: Array<string>\n message: string\n platform: \"reactify\" | \"shopify\" | \"google\" | \"elastic\"\n percentCompleted: number\n action?: {\n type: \"retry\"\n label: string\n task: Task[\"taskId\"]\n }\n step:\n | \"syncMainDownload\"\n | \"syncBulkStart\"\n | \"syncBulkDownload\"\n | \"syncBulkTransform\"\n | \"syncBulkMerge\"\n | \"syncBulkUpload\"\n | \"syncBulkCleanup\"\n | \"syncBulkCleanupCurations\"\n | \"analyticsDownload\"\n | \"analyticsTransform\"\n | \"analyticsUpload\"\n | \"complete\"\n | \"analyticsStart\"\n title: string\n type: \"bulk\" | \"analytics\"\n data?: string // JSON sringified data\n progress: \"new\" | \"error\" | \"complete\" | \"partiallyComplete\"\n status: \"success\" | \"info\" | \"warning\" | \"critical\" // polaris banner status\n createdAt: string;\n updatedAt?: string;\n finishedAt?: string;\n}\n\nexport interface Task {\n logId: string\n taskId:\n | \"setupInstall\"\n | \"setupWebhook\"\n | \"syncCollectionId\"\n | \"syncProductId\"\n | \"syncMainDownload\"\n | \"syncBulkReset\"\n | \"syncBulkStart\"\n | \"syncBulkDownload\"\n | \"syncBulkTransform\"\n | \"syncBulkMerge\"\n | \"syncBulkUpload\"\n | \"syncBulkCleanup\"\n | \"syncBulkCleanupCurations\"\n | \"cleanCuration\"\n | \"cleanCurationId\"\n | \"plantSeeds\"\n | \"refreshMappings\"\n | \"refreshDefinedFields\"\n | \"refreshCurations\"\n | \"analyticsStart\"\n | \"analyticsDownload\"\n | \"analyticsTransform\"\n | \"analyticsUpload\"\n | \"indexCleanup\"\n | \"cacheClear\"\n | \"syncMarkets\"\n | \"syncConfig\"\n | \"syncShop\"\n firstRun?: boolean\n createdAt: string;\n updatedAt?: string;\n}\nexport interface TaskSub extends Task {\n taskSubId: string;\n}\n\nexport interface TaskSubSyncCollectionId extends TaskSub {\n taskId: \"syncCollectionId\"\n collectionGid: string\n}\nexport interface TaskSubSyncProductId extends TaskSub {\n taskId: \"syncProductId\"\n productGid: string\n}\nexport interface TaskSyncShop extends Task {\n taskId: \"syncShop\"\n manual?: boolean\n}\n\nexport interface TaskSyncMainDownload extends Task {\n taskId: \"syncMainDownload\"\n type: \"product_download\" | \"product_polling\" | \"collection_download\" | \"collection_polling\";\n productUrl?: string\n collectionUrl?: string\n manual?: boolean\n}\n\nexport interface TaskSyncBulkReset extends Task {\n taskId: \"syncBulkReset\"\n manual?: boolean\n}\n\nexport interface TaskSyncBulkStart extends Task {\n taskId: \"syncBulkStart\"\n manual?: boolean\n}\n\nexport interface TaskSyncBulkDownload extends Task {\n taskId: \"syncBulkDownload\"\n type: \"collection\" | \"product\" | \"product_market\"\n productUrl?: string\n productMarketUrl?: string\n collectionUrl?: string\n syncAt: string\n}\n\nexport const TaskSyncBulkDownloadTypeLabel: Record<\"collection\" | \"product\" | \"product_market\", string> = {\n collection: \"collection details\",\n product: \"product details\",\n product_market: \"product market details\",\n};\n\nexport interface TaskSyncBulkTransform extends Task {\n taskId: \"syncBulkTransform\"\n productUrl: string\n productMarketUrl?: string\n collectionUrl: string\n collectionCount?: number\n lastCollectionCursor?: string\n syncAt: string\n}\n\nexport interface TaskSyncBulkMerge extends Task {\n taskId: \"syncBulkMerge\"\n productCount: number\n collectionCount: number\n productCompletedCount?: number\n startAfterId?: string\n syncAt: string\n}\n\nexport interface TaskSyncBulkUpload extends Task {\n taskId: \"syncBulkUpload\"\n productCount: number\n collectionCount: number\n productCompletedCount?: number\n startAfterId?: string\n syncAt: string\n}\n\nexport interface TaskSyncBulkCleanup extends Task {\n taskId: \"syncBulkCleanup\"\n syncAt: string\n}\n\nexport interface TaskSyncBulkCleanupCurations extends Task {\n taskId: \"syncBulkCleanupCurations\"\n}\n\nexport interface TaskCleanCuration extends Task {\n taskId: \"cleanCuration\";\n startAfterId?: string;\n manual?: boolean;\n}\nexport interface TaskSubCleanCurationId extends TaskSub {\n taskId: \"cleanCurationId\";\n curationId: string;\n manual?: boolean;\n}\nexport interface TaskSetupInstall extends Task {\n taskId: \"setupInstall\"\n}\n\nexport interface TaskSetupWebhook extends Task {\n taskId: \"setupWebhook\"\n}\n\nexport interface TaskPlantSeeds extends Task {\n taskId: \"plantSeeds\"\n}\n\nexport interface TaskRefreshMappings extends Task {\n taskId: \"refreshMappings\"\n manual?: boolean\n}\n\nexport interface TaskRefreshDefinedFields extends Task {\n taskId: \"refreshDefinedFields\"\n manual?: boolean\n}\n\nexport interface TaskRefreshCurations extends Task {\n taskId: \"refreshCurations\"\n manual?: boolean\n}\n\nexport interface TaskAnalyticsStart extends Task {\n taskId: \"analyticsStart\"\n manual?: boolean\n}\n\nexport interface TaskAnalyticsDownload extends Task {\n taskId: \"analyticsDownload\"\n reports: AnalyticsReports[]\n manual?: boolean\n}\n\nexport interface TaskAnalyticsTransform extends Task {\n taskId: \"analyticsTransform\"\n startAfterId?: string\n manual?: boolean\n}\n\nexport interface TaskAnalyticsUpload extends Task {\n taskId: \"analyticsUpload\"\n startAfterId?: string\n manual?: boolean\n}\n\nexport interface TaskIndexCleanup extends Task {\n taskId: \"indexCleanup\"\n manual?: boolean\n}\n\nexport interface TaskCacheClear extends Task {\n taskId: \"cacheClear\"\n manual?: boolean\n}\n\nexport interface TaskSyncMarkets extends Task {\n taskId: \"syncMarkets\"\n manual?: boolean\n}\n\nexport interface TaskSyncConfig extends Task {\n taskId: \"syncConfig\"\n manual?: boolean\n}\nexport interface Lock {\n logId: string\n taskType: \"sync\" | \"syncConfig\" | \"syncCollectionId\" | \"syncProductId\" | \"analytics\"\n createdAt: string;\n expiresAt: string\n}\n\nexport enum ManageAdminFlag {\n Example = \"example\",\n}\nexport interface ManageAdmin {\n installed: boolean;\n indexRead: string;\n indexWrite: string;\n indexAlias: string;\n indexAutomatic: boolean;\n indexRollback: Array<{\n indexName: string;\n documentCount: number;\n createdAt: number;\n }>;\n indexRefreshInterval: string;\n // indexSettingsPending: boolean;\n endpoint: string;\n cluster: string;\n customMappings: string; // JSON sringified data\n customFilters: string; // JSON sringified data\n timezone: string;\n cacheEnabled: boolean;\n cacheSeconds: number;\n flags?: Array<ManageAdminFlag>;\n production: boolean;\n}\n\nexport interface ManageProduct {\n tagChild?: string\n tagKeys?: Array<string>\n tagParent?: string\n tagRelated?: string\n syncObjects?: Array<string>\n tagExclude?: Array<string>\n tagExcludeSearch?: Array<string>\n tagExcludeCollection?: Array<string>\n tagSeparator?: string\n metafieldWhitelist?: Array<string>\n externalAppReactifyImageAI: boolean\n suggestionsExclude?: Array<string>;\n automaticCleanCurations?: boolean;\n\n merchandisingCalloutAutofillBehaviour: MerchandisingCalloutAutofillBehaviour;\n}\n\nexport enum MerchandisingCalloutAutofillBehaviour {\n Always = \"always\",\n MoreResults = \"more_results\",\n}\n\nexport interface ManageAutomation {\n sync: boolean\n webhooks: boolean\n mappings: boolean\n curations: boolean\n analytics: boolean\n syncFrequency: string\n syncThreshold: number\n notificationEnabled?: boolean;\n notificationEmail?: string;\n\n syncCatalogueCompletedAt?: number;\n syncAnalyticsCompletedAt?: number;\n syncConfigCompletedAt?: number;\n\n syncSpecialResourcePendingAt?: number | null;\n\n syncConfigHash?: string;\n}\n\nexport interface ManageAccount {\n shopifyPlanCustomCost?: number;\n shopifyPlanType?: \"general\" | \"partner\" | \"custom\";\n shopifyPlanStore?: \"primary\" | \"addon\";\n shopifyPlan?: \"non-plus\" | \"plus\" | \"development\";\n shopifyPlanSubscriptionShareCode?: string;\n stripeCustomerId?: string\n googleAnalyticsId?: string\n googleEmail?: string\n googleAccessToken?: string\n googleRefreshToken?: string\n googleAccessTokenExpiryDate?: number\n googleAnalyticsType?: \"UA\" | \"GA4\"\n googleIdField?: \"shopify_code\" | \"product_id\" | \"variant_id\" | \"variant_sku\" | \"variant_barcode\"\n}\n\nexport enum SettingsCurationsImageOption {\n Index = \"index\",\n Suffix = \"suffix\",\n}\n\nexport interface SettingsCurations {\n pageSize?: number\n gridColumns?: number\n imageOption: SettingsCurationsImageOption\n imagePosition: number\n imageSuffix: string\n imageSize?: \"small\" | \"medium\" | \"large\"\n imageSizePx: number;\n\n showCardDetailTitle?: boolean;\n showCardDetailContent?: boolean;\n showCardDetailPrice?: boolean;\n showCardDetailVendor?: boolean;\n showCardDetailPreorder?: boolean;\n showCardDetailDiscount?: boolean;\n showCardDetailInventory?: boolean;\n showCardDetailAvailability?: boolean;\n showCardDetailProfitMargin?: boolean;\n showCardDetailPublishedDays?: boolean;\n showCardDetailAnalyticsSales7Days?: boolean;\n showCardDetailAnalyticsSales30Days?: boolean;\n showCardDetailAnalyticsRevenue7Days?: boolean;\n showCardDetailAnalyticsRevenue30Days?: boolean;\n}\n\nexport interface Relevance extends ResourceDocument {\n field: string\n enabled: boolean\n importance: number\n searchType: \"always_search\" | \"search_page\" | \"instant_search\"\n hidden?: boolean\n}\n\nexport interface DefinedField {\n label: string\n value: string\n type: ElasticDataType | string\n}\n\nexport interface Sort extends ResourceDocument {\n name: string\n handle: string\n field: string\n position: number\n enabled: boolean\n direction: \"desc\" | \"asc\"\n visibility: \"all\" | \"search\" | \"collection\"\n hidden?: boolean\n}\n\nexport interface FilterGroup extends ResourceDocument {\n name: string\n handle: string\n enabled: boolean\n pageSize: number\n keywords: Array<string>\n collections: Array<string>\n type: \"search\" | \"collection\"\n paginationType: \"pagination\" | \"load_more\" | \"next_prev\" | \"infinite_scroll\"\n inventoryVisibility: \"show_all\" | \"hide_products\" | \"hide_variants\" | \"hide_all\"\n}\n\nexport interface FilterFacet extends ResourceDocument {\n name: string\n field: string\n handle: string\n position: number\n enabled: boolean\n keywords: Array<string>\n customSortOrder?: string\n displayType: \"multi\" | \"single\" | \"slider\"\n displayView: \"list\" | \"check\" | \"swatch\" | \"range\" | \"box\"\n displaySize: string\n displaySliderStep: string\n displaySliderPrefix: string\n displaySliderSuffix: string\n displayRangeOptions: Array<string>\n settingsShowMore: boolean\n settingsUppercase: boolean\n settingsShowSearch: boolean\n settingsShowFilter: boolean\n settingsShowEmptyValues: boolean\n settingsHideUnavailable: boolean\n settingsCollapsedMobile: boolean\n settingsCollapsedDesktop: boolean\n settingsFilterLogic: \"and\" | \"or\"\n valuesShow: \"all\" | \"manual\"\n valuesManual: Array<string>\n valuesExclude: Array<string>\n}\n\nexport interface Redirect extends ResourceDocument {\n url: string\n query: string\n enabled: boolean\n keywords: Array<string>\n hidden?: boolean\n}\n\nexport interface Curation extends ResourceDocument {\n title: string\n status: CurationStatus\n published: boolean\n keywords: Array<string>\n searchTerm?: string\n longRunningTask?: boolean\n collectionHandle?: string\n collectionId?: string\n type: CurationType;\n boosting?: {\n groupings?: BoostGrouping[]\n sortings?: BoostSorting[]\n }\n sort?: CurationSort\n schedule?: CurationSchedule\n hidden?: boolean\n\n markets?: Array<string>;\n}\n\nexport enum CurationType {\n Search = \"search\",\n Collection = \"collection\",\n};\n\nexport const CurationTypeLabel: Record<CurationType, string> = {\n [CurationType.Search]: \"Search\",\n [CurationType.Collection]: \"Collection\",\n};\n\nexport interface CurationSort {\n sortTag?: string\n sortOption: string\n sortDirection: \"asc\" | \"desc\"\n sortVariantOption?: \"option1\" | \"option2\" | \"option3\"\n}\n\nexport interface CurationSchedule {\n schedulePublish: string\n schedulePublishEnabled: boolean\n scheduleUnpublish: string\n scheduleUnpublishEnabled: boolean\n}\n\nexport enum CurationStatus {\n Draft = \"draft\",\n Publishing = \"publishing\",\n Published = \"published\",\n Error = \"error\",\n Unpublishing = \"unpublishing\",\n Resetting = \"resetting\",\n Pinning = \"pinning\",\n Sorting = \"sorting\",\n}\n\nexport const CurationStatusLabel: Record<CurationStatus, string> = {\n [CurationStatus.Draft]: \"Draft\",\n [CurationStatus.Publishing]: \"Publishing\",\n [CurationStatus.Published]: \"Published\",\n [CurationStatus.Error]: \"Error\",\n [CurationStatus.Unpublishing]: \"Unpublishing\",\n [CurationStatus.Resetting]: \"Resetting\",\n [CurationStatus.Pinning]: \"Pinning\",\n [CurationStatus.Sorting]: \"Sorting\",\n}\n\nexport interface CurationHiding {\n productId: number;\n}\n\nexport interface Market {\n id: string;\n label: string;\n enabled: boolean;\n publicationId: string;\n}\n\nexport interface BoostGrouping {\n key: string\n value: string\n field: string\n position: number\n operation: string\n}\n\nexport interface BoostSorting {\n key: string\n field: string\n query?: string\n position: number\n direction: \"asc\" | \"desc\"\n}\n\nexport type Pin = PinProduct | PinCallout\n\nexport enum PinSource {\n Manual = \"manual\",\n Automatic = \"automatic\",\n}\n\nexport enum PinType {\n Product = \"product\",\n Callout = \"callout\",\n}\n\nexport type PinTypeOnly = Pick<Pin, \"type\">\n\nexport function isPinProduct(pin: PinTypeOnly): pin is PinProduct {\n return PinType.Product === pin.type;\n}\n\nexport function isPinCallout(pin: PinTypeOnly): pin is PinCallout {\n return PinType.Callout === pin.type;\n}\n\nexport interface PinProduct {\n key: string\n type: PinType.Product\n position: number\n productId: number\n source?: PinSource // @todo migrate and change to non-optional field\n}\n\nexport interface PinCallout {\n key: string\n type: PinType.Callout\n position: number\n calloutId: string\n source?: PinSource // @todo migrate and change to non-optional field\n}\n\nexport interface Link {\n content: string\n url: string\n key: string\n}\n\nexport interface Callout extends ResourceDocument {\n id: string;\n type: CalloutType;\n link: string;\n links: Array<Link>;\n // name: string;\n title: string;\n content: string;\n enabled: boolean;\n textColor: string;\n keywords: Array<string>;\n mobileImage: string;\n mobileVideo: string;\n desktopVideo: string;\n desktopImage: string;\n backgroundColor: string;\n visibility: \"desktop\" | \"mobile\" | \"all\";\n displayColumns: string; // @todo this should be a number\n displayRows: string; // @todo this should be a number\n selectedDates?: {\n end: string;\n start: string;\n };\n hidden?: boolean;\n}\n\nexport enum CalloutType {\n Standard = \"standard\",\n Filler = \"filler\",\n}\n\nexport enum SynonymType {\n Group = \"group\",\n Oneway = \"oneway\",\n}\nexport interface Synonym extends ResourceDocument {\n id: string\n name: string\n enabled: boolean\n keywords: Array<string>\n synonyms: Array<string>\n type: SynonymType\n hidden?: boolean\n}\nexport interface Antonym extends ResourceDocument {\n id: string\n name: string\n enabled: boolean\n keywords: Array<string>\n antonyms: Array<string>\n hidden?: boolean\n}\n\nexport interface MergedValue extends ResourceDocument {\n id: string\n name: string\n field: string\n enabled: boolean\n keywords: Array<string>\n values: Array<string>\n hidden?: boolean\n}\n\nexport interface Collection extends ResourceDocument {\n title: string\n handle: string\n shopifyId: string\n productIds: Array<string>\n storefrontId: string\n legacyResourceId: number\n syncStatus?: \"error\" | \"complete\" | \"partiallyComplete\"\n syncAt?: string\n}\n\n// product is the shopify product with edges and nodes normalised\n\nexport type Product = ResourceDocument & Omit<ShopifyProduct, \"variants\" | \"images\" | \"media\" | \"metafields\" | \"category\" | \"unpublishedPublications\"> & {\n category: string;\n unpublishedPublications: ShopifyProduct[\"unpublishedPublications\"][\"edges\"][0][\"node\"][]\n variants: (Omit<ShopifyProduct[\"variants\"][\"edges\"][0][\"node\"], \"presentmentPrices\"> & {\n images?: Array<ShopifyProductImage> // from child product if this variant is from a child\n presentmentPrices: ShopifyProduct[\"variants\"][\"edges\"][0][\"node\"][\"presentmentPrices\"][\"edges\"][0][\"node\"][]\n productId?: string\n })[]\n related?: Array<string>\n images: Array<ShopifyProductImage>\n media: ShopifyProduct[\"media\"][\"edges\"][0][\"node\"][]\n metafields: ShopifyProduct[\"metafields\"][\"edges\"][0][\"node\"][]\n keywords: Array<string>\n syncStatus?: \"error\" | \"complete\" | \"partiallyComplete\"\n syncAt?: string;\n markets?: Array<string>;\n}\n\nexport interface Analytics {\n query: AnalyticsQueryDoc & {\n items: AnalyticsDownloadItem[]\n }\n}\n\nexport interface AnalyticsQueryDoc {\n tableId: string\n accountId: string\n profileId: string\n profileName: string\n webPropertyId: string\n internalWebPropertyId: string\n}\n\nexport interface AnalyticsDownloadItem {\n id: string\n name: string\n value: number\n externalId: string\n type: AnalyticsReports\n}\n\nexport interface AnalyticsUploadItems {\n id: string\n [AnalyticsReports.Sales7Days]: number\n [AnalyticsReports.Sales30Days]: number\n [AnalyticsReports.Revenue7Days]: number\n [AnalyticsReports.Revenue30Days]: number\n}\n\nexport enum AnalyticsReports {\n Sales7Days = \"sales_7days\",\n Sales30Days = \"sales_30days\",\n Revenue7Days = \"revenue_7days\",\n Revenue30Days = \"revenue_30days\",\n}\n\nexport enum ActivityLogAction {\n Create = \"create\",\n Delete = \"delete\",\n Duplicate = \"duplicate\",\n Sync = \"sync\",\n Trigger = \"trigger\",\n Update = \"update\",\n}\n\nexport interface ShopifyUser {\n account_owner: boolean\n bio: string\n email: string\n first_name: string\n id: string\n im: string\n last_name: string\n permissions: Array<string>\n phone: string\n receive_announcements: number\n screen_name: string\n url: string\n locale: string\n user_type: string\n}\n\nexport interface ActivityLog extends ResourceDocument {\n action: ActivityLogAction\n resourceDisplayName: string\n resourceId: string\n resourceType: ResourceType\n shopifyStaffMemberId: string | undefined\n}\n\nexport type BillingAppSubscription = ShopifyAppSubscription\nexport type BillingAppPurchaseOneTime = ShopifyAppPurchaseOneTime\nexport type BillingAppPurchaseCredit = {\n id: string;\n name: string;\n status: AppPurchaseStatus;\n amount: string;\n}"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usereactify/search",
3
3
  "description": "React UI library for Reactify Search",
4
- "version": "5.53.0-beta.2",
4
+ "version": "5.53.0",
5
5
  "license": "MIT",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",