@blaze-cms/react-page-builder 0.141.0-core-styles.10 → 0.141.0-core-styles.20
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 +22 -0
- package/lib/components/List/ListRender.js +3 -1
- package/lib/components/List/ListRender.js.map +1 -1
- package/lib/components/List/helpers/build-query-booster.js +57 -0
- package/lib/components/List/helpers/build-query-booster.js.map +1 -0
- package/lib/components/List/helpers/index.js +7 -0
- package/lib/components/List/helpers/index.js.map +1 -1
- package/lib/variants/ThumbnailCarousel/ThumbnailCarousel.js +65 -0
- package/lib/variants/ThumbnailCarousel/ThumbnailCarousel.js.map +1 -0
- package/lib/variants/ThumbnailCarousel/ThumbnailImage/ThumbnailImage.js +41 -0
- package/lib/variants/ThumbnailCarousel/ThumbnailImage/ThumbnailImage.js.map +1 -0
- package/lib/variants/ThumbnailCarousel/ThumbnailImage/index.js +11 -0
- package/lib/variants/ThumbnailCarousel/ThumbnailImage/index.js.map +1 -0
- package/lib/variants/ThumbnailCarousel/ThumbnailImage/useThumbnailImage.js +82 -0
- package/lib/variants/ThumbnailCarousel/ThumbnailImage/useThumbnailImage.js.map +1 -0
- package/lib/variants/ThumbnailCarousel/index.js +29 -0
- package/lib/variants/ThumbnailCarousel/index.js.map +1 -0
- package/lib/variants/ThumbnailCarousel/useThumbnailCarousel.js +62 -0
- package/lib/variants/ThumbnailCarousel/useThumbnailCarousel.js.map +1 -0
- package/lib/variants/index.js +5 -1
- package/lib/variants/index.js.map +1 -1
- package/lib-es/components/List/ListRender.js +3 -1
- package/lib-es/components/List/ListRender.js.map +1 -1
- package/lib-es/components/List/helpers/build-query-booster.js +41 -0
- package/lib-es/components/List/helpers/build-query-booster.js.map +1 -0
- package/lib-es/components/List/helpers/index.js +1 -0
- package/lib-es/components/List/helpers/index.js.map +1 -1
- package/lib-es/variants/ThumbnailCarousel/ThumbnailCarousel.js +51 -0
- package/lib-es/variants/ThumbnailCarousel/ThumbnailCarousel.js.map +1 -0
- package/lib-es/variants/ThumbnailCarousel/ThumbnailImage/ThumbnailImage.js +34 -0
- package/lib-es/variants/ThumbnailCarousel/ThumbnailImage/ThumbnailImage.js.map +1 -0
- package/lib-es/variants/ThumbnailCarousel/ThumbnailImage/index.js +3 -0
- package/lib-es/variants/ThumbnailCarousel/ThumbnailImage/index.js.map +1 -0
- package/lib-es/variants/ThumbnailCarousel/ThumbnailImage/useThumbnailImage.js +75 -0
- package/lib-es/variants/ThumbnailCarousel/ThumbnailImage/useThumbnailImage.js.map +1 -0
- package/lib-es/variants/ThumbnailCarousel/index.js +10 -0
- package/lib-es/variants/ThumbnailCarousel/index.js.map +1 -0
- package/lib-es/variants/ThumbnailCarousel/useThumbnailCarousel.js +42 -0
- package/lib-es/variants/ThumbnailCarousel/useThumbnailCarousel.js.map +1 -0
- package/lib-es/variants/index.js +4 -1
- package/lib-es/variants/index.js.map +1 -1
- package/package.json +3 -3
- package/src/components/List/ListRender.js +3 -1
- package/src/components/List/helpers/build-query-booster.js +35 -0
- package/src/components/List/helpers/index.js +1 -0
- package/src/variants/ThumbnailCarousel/ThumbnailCarousel.js +55 -0
- package/src/variants/ThumbnailCarousel/ThumbnailImage/ThumbnailImage.js +40 -0
- package/src/variants/ThumbnailCarousel/ThumbnailImage/index.js +3 -0
- package/src/variants/ThumbnailCarousel/ThumbnailImage/useThumbnailImage.js +75 -0
- package/src/variants/ThumbnailCarousel/index.js +10 -0
- package/src/variants/ThumbnailCarousel/useThumbnailCarousel.js +37 -0
- package/src/variants/index.js +5 -1
- package/tests/unit/src/components/List/helpers/build-query-booster.test.js +33 -0
- package/tests/unit/src/variants/ThumbnailCarousel/ThumbnailCarousel.test.js +29 -0
- package/tests/unit/src/variants/ThumbnailCarousel/ThumbnailImage.test.js +45 -0
- package/tests/unit/src/variants/ThumbnailCarousel/__snapshots__/ThumbnailCarousel.test.js.snap +76 -0
- package/tests/unit/src/variants/ThumbnailCarousel/__snapshots__/ThumbnailImage.test.js.snap +19 -0
- package/tests/unit/src/variants/ThumbnailCarousel/mocks.js +64 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListRender.js","names":["React","useQuery","PropTypes","ListPagination","ListHeader","sortResponseData","LOAD_MORE","useAppSyncEventHook","ListRender","props","variables","actionKey","action","name","itemsToDisplay","itemsPerPageToUse","limitToUse","initialOffset","isInfinite","omitWrappers","paginationType","listComponent","ListComponent","query","url","listAggregations","isAZ","azFilter","displayTotal","data","updatedVariables","eventName","error","loading","fetchMore","message","results","listData","listTotal","total","orderedListData","length","currentListLength","currentPage","Math","ceil","totalDisplay","createElement","Fragment","className","_extends","itemsPerPage","propTypes","string","isRequired","object","number","bool","func","array","defaultProps"],"sources":["../../../src/components/List/ListRender.js"],"sourcesContent":["import React from 'react';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport ListPagination from './components/Pagination';\nimport ListHeader from './components/Header';\nimport { sortResponseData } from '../../helpers';\nimport { LOAD_MORE } from '../../constants';\nimport { useAppSyncEventHook } from '../../hooks';\n\nconst ListRender = props => {\n const {\n variables,\n actionKey,\n action,\n name,\n itemsToDisplay,\n itemsPerPageToUse,\n limitToUse,\n initialOffset,\n isInfinite,\n omitWrappers,\n paginationType,\n listComponent: ListComponent,\n query,\n url,\n listAggregations,\n isAZ,\n azFilter,\n displayTotal\n } = props;\n const { data: updatedVariables } = useAppSyncEventHook({\n eventName: 'list:query-variables',\n data: variables,\n props\n });\n\n const { data = {}, error, loading, fetchMore } = useQuery(action, {\n variables:
|
|
1
|
+
{"version":3,"file":"ListRender.js","names":["React","useQuery","PropTypes","ListPagination","ListHeader","sortResponseData","LOAD_MORE","useAppSyncEventHook","buildQueryBooster","ListRender","props","variables","actionKey","action","name","itemsToDisplay","itemsPerPageToUse","limitToUse","initialOffset","isInfinite","omitWrappers","paginationType","listComponent","ListComponent","query","url","listAggregations","isAZ","azFilter","displayTotal","data","updatedVariables","eventName","boostedVariables","error","loading","fetchMore","message","results","listData","listTotal","total","orderedListData","length","currentListLength","currentPage","Math","ceil","totalDisplay","createElement","Fragment","className","_extends","itemsPerPage","propTypes","string","isRequired","object","number","bool","func","array","defaultProps"],"sources":["../../../src/components/List/ListRender.js"],"sourcesContent":["import React from 'react';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport ListPagination from './components/Pagination';\nimport ListHeader from './components/Header';\nimport { sortResponseData } from '../../helpers';\nimport { LOAD_MORE } from '../../constants';\nimport { useAppSyncEventHook } from '../../hooks';\nimport { buildQueryBooster } from './helpers';\n\nconst ListRender = props => {\n const {\n variables,\n actionKey,\n action,\n name,\n itemsToDisplay,\n itemsPerPageToUse,\n limitToUse,\n initialOffset,\n isInfinite,\n omitWrappers,\n paginationType,\n listComponent: ListComponent,\n query,\n url,\n listAggregations,\n isAZ,\n azFilter,\n displayTotal\n } = props;\n const { data: updatedVariables } = useAppSyncEventHook({\n eventName: 'list:query-variables',\n data: variables,\n props\n });\n const boostedVariables = buildQueryBooster(props, updatedVariables);\n\n const { data = {}, error, loading, fetchMore } = useQuery(action, {\n variables: boostedVariables\n });\n\n if (loading) return '';\n if (error) return error.message;\n if (!data[actionKey] || !data[actionKey].results) return null;\n\n const listData = data[actionKey].results;\n const listTotal = data[actionKey].total;\n const orderedListData = sortResponseData(listData, itemsToDisplay);\n if (!orderedListData || !orderedListData.length) return null;\n const { length: currentListLength } = orderedListData;\n const currentPage = Math.ceil((initialOffset + currentListLength) / itemsPerPageToUse);\n const totalDisplay = limitToUse && listTotal > limitToUse ? limitToUse : listTotal;\n\n return (\n <>\n <span className=\"list-top\" />\n {isAZ && <ListHeader name={name} listAggregations={listAggregations} azFilter={azFilter} />}\n {displayTotal && (\n <div className=\"list_total_results w-full text-left p-4\">Total results: {totalDisplay}</div>\n )}\n <ListComponent\n orderedListData={orderedListData}\n isInfinite={isInfinite}\n initialOffset={initialOffset}\n actionKey={actionKey}\n limitToUse={limitToUse}\n fetchMore={fetchMore}\n omitWrappers={omitWrappers}\n itemsPerPageToUse={itemsPerPageToUse || listData.length}\n listTotal={listTotal}\n currentListLength={currentListLength}\n currentPage={currentPage}\n query={query}\n url={url}\n itemsToDisplay={itemsToDisplay}\n {...props}\n />\n {paginationType !== LOAD_MORE && (\n <ListPagination\n limitToUse={limitToUse}\n itemsPerPage={itemsPerPageToUse}\n listTotal={listTotal}\n name={name}\n isInfinite={isInfinite}\n currentListLength={currentListLength}\n paginationType={paginationType}\n currentPage={currentPage}\n query={query}\n url={url}\n />\n )}\n </>\n );\n};\n\nListRender.propTypes = {\n name: PropTypes.string.isRequired,\n paginationType: PropTypes.string.isRequired,\n variables: PropTypes.object.isRequired,\n actionKey: PropTypes.string.isRequired,\n action: PropTypes.object.isRequired,\n itemsPerPageToUse: PropTypes.number.isRequired,\n limitToUse: PropTypes.number.isRequired,\n initialOffset: PropTypes.number.isRequired,\n isInfinite: PropTypes.bool.isRequired,\n omitWrappers: PropTypes.bool,\n query: PropTypes.object.isRequired,\n url: PropTypes.string.isRequired,\n listComponent: PropTypes.func.isRequired,\n isAZ: PropTypes.bool.isRequired,\n azFilter: PropTypes.string.isRequired,\n listAggregations: PropTypes.array,\n itemsToDisplay: PropTypes.array,\n displayTotal: PropTypes.bool\n};\n\nListRender.defaultProps = {\n omitWrappers: false,\n itemsToDisplay: [],\n listAggregations: [],\n displayTotal: false\n};\n\nexport default ListRender;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
const buildQueryBooster = (props, data) => {
|
|
5
|
+
const {
|
|
6
|
+
recencyBoostProperty
|
|
7
|
+
} = props;
|
|
8
|
+
if (!recencyBoostProperty || !recencyBoostProperty.length) return data;
|
|
9
|
+
const {
|
|
10
|
+
rawQueryStringified = ''
|
|
11
|
+
} = data;
|
|
12
|
+
const parsedRawQuery = JSON.parse(rawQueryStringified);
|
|
13
|
+
const {
|
|
14
|
+
function_score: {
|
|
15
|
+
query,
|
|
16
|
+
functions = []
|
|
17
|
+
} = {}
|
|
18
|
+
} = parsedRawQuery;
|
|
19
|
+
const boostedPropsFunctios = recencyBoostProperty.map(propToBoost => ({
|
|
20
|
+
gauss: {
|
|
21
|
+
[propToBoost]: {
|
|
22
|
+
origin: 'now',
|
|
23
|
+
scale: '30d',
|
|
24
|
+
offset: '7d',
|
|
25
|
+
decay: 0.5
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
const updatedData = {
|
|
30
|
+
function_score: {
|
|
31
|
+
query: functions.length ? query : parsedRawQuery,
|
|
32
|
+
functions: [...functions, ...boostedPropsFunctios],
|
|
33
|
+
boost_mode: 'multiply'
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return _objectSpread(_objectSpread({}, data), {}, {
|
|
37
|
+
rawQueryStringified: JSON.stringify(updatedData)
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
export default buildQueryBooster;
|
|
41
|
+
//# sourceMappingURL=build-query-booster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-query-booster.js","names":["buildQueryBooster","props","data","recencyBoostProperty","length","rawQueryStringified","parsedRawQuery","JSON","parse","function_score","query","functions","boostedPropsFunctios","map","propToBoost","gauss","origin","scale","offset","decay","updatedData","boost_mode","_objectSpread","stringify"],"sources":["../../../../src/components/List/helpers/build-query-booster.js"],"sourcesContent":["const buildQueryBooster = (props, data) => {\n const { recencyBoostProperty } = props;\n\n if (!recencyBoostProperty || !recencyBoostProperty.length) return data;\n const { rawQueryStringified = '' } = data;\n\n const parsedRawQuery = JSON.parse(rawQueryStringified);\n const { function_score: { query, functions = [] } = {} } = parsedRawQuery;\n\n const boostedPropsFunctios = recencyBoostProperty.map(propToBoost => ({\n gauss: {\n [propToBoost]: {\n origin: 'now',\n scale: '30d',\n offset: '7d',\n decay: 0.5\n }\n }\n }));\n\n const updatedData = {\n function_score: {\n query: functions.length ? query : parsedRawQuery,\n functions: [...functions, ...boostedPropsFunctios],\n boost_mode: 'multiply'\n }\n };\n\n return {\n ...data,\n rawQueryStringified: JSON.stringify(updatedData)\n };\n};\n\nexport default buildQueryBooster;\n"],"mappings":";;;AAAA,MAAMA,iBAAiB,GAAGA,CAACC,KAAK,EAAEC,IAAI,KAAK;EACzC,MAAM;IAAEC;EAAqB,CAAC,GAAGF,KAAK;EAEtC,IAAI,CAACE,oBAAoB,IAAI,CAACA,oBAAoB,CAACC,MAAM,EAAE,OAAOF,IAAI;EACtE,MAAM;IAAEG,mBAAmB,GAAG;EAAG,CAAC,GAAGH,IAAI;EAEzC,MAAMI,cAAc,GAAGC,IAAI,CAACC,KAAK,CAACH,mBAAmB,CAAC;EACtD,MAAM;IAAEI,cAAc,EAAE;MAAEC,KAAK;MAAEC,SAAS,GAAG;IAAG,CAAC,GAAG,CAAC;EAAE,CAAC,GAAGL,cAAc;EAEzE,MAAMM,oBAAoB,GAAGT,oBAAoB,CAACU,GAAG,CAACC,WAAW,KAAK;IACpEC,KAAK,EAAE;MACL,CAACD,WAAW,GAAG;QACbE,MAAM,EAAE,KAAK;QACbC,KAAK,EAAE,KAAK;QACZC,MAAM,EAAE,IAAI;QACZC,KAAK,EAAE;MACT;IACF;EACF,CAAC,CAAC,CAAC;EAEH,MAAMC,WAAW,GAAG;IAClBX,cAAc,EAAE;MACdC,KAAK,EAAEC,SAAS,CAACP,MAAM,GAAGM,KAAK,GAAGJ,cAAc;MAChDK,SAAS,EAAE,CAAC,GAAGA,SAAS,EAAE,GAAGC,oBAAoB,CAAC;MAClDS,UAAU,EAAE;IACd;EACF,CAAC;EAED,OAAAC,aAAA,CAAAA,aAAA,KACKpB,IAAI;IACPG,mBAAmB,EAAEE,IAAI,CAACgB,SAAS,CAACH,WAAW;EAAC;AAEpD,CAAC;AAED,eAAepB,iBAAiB"}
|
|
@@ -9,4 +9,5 @@ export { default as hasRequiredItemListDetails } from './has-required-item-list-
|
|
|
9
9
|
export { default as getListComponent } from './get-list-component';
|
|
10
10
|
export { default as getListQuery } from './get-list-query';
|
|
11
11
|
export { default as getListSpecificSearchFilter } from './get-list-specific-search-filter';
|
|
12
|
+
export { default as buildQueryBooster } from './build-query-booster';
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","buildPaginationItems","getAzQueryFilter","buildAzAggregations","buildAzUrl","sortAggs","getItemsPerPageToUse","getSortProps","hasRequiredItemListDetails","getListComponent","getListQuery","getListSpecificSearchFilter"],"sources":["../../../../src/components/List/helpers/index.js"],"sourcesContent":["export { default as buildPaginationItems } from './build-pagination-items';\nexport { default as getAzQueryFilter } from './get-az-query-filter';\nexport { default as buildAzAggregations } from './build-az-aggregations';\nexport { default as buildAzUrl } from './build-az-url';\nexport { default as sortAggs } from './sort-aggs';\nexport { default as getItemsPerPageToUse } from './get-items-per-page-to-use';\nexport { default as getSortProps } from './get-sort-props';\nexport { default as hasRequiredItemListDetails } from './has-required-item-list-details';\nexport { default as getListComponent } from './get-list-component';\nexport { default as getListQuery } from './get-list-query';\nexport { default as getListSpecificSearchFilter } from './get-list-specific-search-filter';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,0BAA0B;AAC1E,SAASD,OAAO,IAAIE,gBAAgB,QAAQ,uBAAuB;AACnE,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,yBAAyB;AACxE,SAASH,OAAO,IAAII,UAAU,QAAQ,gBAAgB;AACtD,SAASJ,OAAO,IAAIK,QAAQ,QAAQ,aAAa;AACjD,SAASL,OAAO,IAAIM,oBAAoB,QAAQ,6BAA6B;AAC7E,SAASN,OAAO,IAAIO,YAAY,QAAQ,kBAAkB;AAC1D,SAASP,OAAO,IAAIQ,0BAA0B,QAAQ,kCAAkC;AACxF,SAASR,OAAO,IAAIS,gBAAgB,QAAQ,sBAAsB;AAClE,SAAST,OAAO,IAAIU,YAAY,QAAQ,kBAAkB;AAC1D,SAASV,OAAO,IAAIW,2BAA2B,QAAQ,mCAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","buildPaginationItems","getAzQueryFilter","buildAzAggregations","buildAzUrl","sortAggs","getItemsPerPageToUse","getSortProps","hasRequiredItemListDetails","getListComponent","getListQuery","getListSpecificSearchFilter","buildQueryBooster"],"sources":["../../../../src/components/List/helpers/index.js"],"sourcesContent":["export { default as buildPaginationItems } from './build-pagination-items';\nexport { default as getAzQueryFilter } from './get-az-query-filter';\nexport { default as buildAzAggregations } from './build-az-aggregations';\nexport { default as buildAzUrl } from './build-az-url';\nexport { default as sortAggs } from './sort-aggs';\nexport { default as getItemsPerPageToUse } from './get-items-per-page-to-use';\nexport { default as getSortProps } from './get-sort-props';\nexport { default as hasRequiredItemListDetails } from './has-required-item-list-details';\nexport { default as getListComponent } from './get-list-component';\nexport { default as getListQuery } from './get-list-query';\nexport { default as getListSpecificSearchFilter } from './get-list-specific-search-filter';\nexport { default as buildQueryBooster } from './build-query-booster';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,0BAA0B;AAC1E,SAASD,OAAO,IAAIE,gBAAgB,QAAQ,uBAAuB;AACnE,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,yBAAyB;AACxE,SAASH,OAAO,IAAII,UAAU,QAAQ,gBAAgB;AACtD,SAASJ,OAAO,IAAIK,QAAQ,QAAQ,aAAa;AACjD,SAASL,OAAO,IAAIM,oBAAoB,QAAQ,6BAA6B;AAC7E,SAASN,OAAO,IAAIO,YAAY,QAAQ,kBAAkB;AAC1D,SAASP,OAAO,IAAIQ,0BAA0B,QAAQ,kCAAkC;AACxF,SAASR,OAAO,IAAIS,gBAAgB,QAAQ,sBAAsB;AAClE,SAAST,OAAO,IAAIU,YAAY,QAAQ,kBAAkB;AAC1D,SAASV,OAAO,IAAIW,2BAA2B,QAAQ,mCAAmC;AAC1F,SAASX,OAAO,IAAIY,iBAAiB,QAAQ,uBAAuB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import useThumbnailCarousel from './useThumbnailCarousel';
|
|
4
|
+
import ThumbnailImage from './ThumbnailImage';
|
|
5
|
+
const ThumbnailCarousel = props => {
|
|
6
|
+
const {
|
|
7
|
+
thumbnailsListRef,
|
|
8
|
+
imageIds,
|
|
9
|
+
selectedImageId,
|
|
10
|
+
priorityLimit,
|
|
11
|
+
mainImageButtonClick,
|
|
12
|
+
thumbnailImageClick
|
|
13
|
+
} = useThumbnailCarousel(props);
|
|
14
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
15
|
+
className: "thumbnail-carousel",
|
|
16
|
+
"data-testid": "thumbnail-carousel"
|
|
17
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
18
|
+
className: "thumbnail-carousel__main_image_container"
|
|
19
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
20
|
+
id: "previous-button",
|
|
21
|
+
className: "thumbnail-carousel__main_image_container__button",
|
|
22
|
+
role: "button",
|
|
23
|
+
onClick: () => mainImageButtonClick()
|
|
24
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
25
|
+
className: "arrow arrow--left"
|
|
26
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
27
|
+
className: "thumbnail-carousel__main_image_container__main-image",
|
|
28
|
+
"data-testid": "thumbnail-main-image",
|
|
29
|
+
ref: thumbnailsListRef
|
|
30
|
+
}, /*#__PURE__*/React.createElement(ThumbnailImage, _extends({}, props, {
|
|
31
|
+
priority: true,
|
|
32
|
+
imageId: selectedImageId
|
|
33
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
34
|
+
id: "next-button",
|
|
35
|
+
className: "thumbnail-carousel__main_image_container__button next",
|
|
36
|
+
role: "button",
|
|
37
|
+
onClick: () => mainImageButtonClick(true)
|
|
38
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
39
|
+
className: "arrow arrow--right"
|
|
40
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
41
|
+
className: "thumbnail-carousel__list"
|
|
42
|
+
}, imageIds.map((imageId, index) => /*#__PURE__*/React.createElement(ThumbnailImage, _extends({}, props, {
|
|
43
|
+
key: imageId,
|
|
44
|
+
priority: index < priorityLimit,
|
|
45
|
+
imageId: imageId,
|
|
46
|
+
selectedImageId: selectedImageId,
|
|
47
|
+
handleOnClick: thumbnailImageClick
|
|
48
|
+
})))));
|
|
49
|
+
};
|
|
50
|
+
export default ThumbnailCarousel;
|
|
51
|
+
//# sourceMappingURL=ThumbnailCarousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThumbnailCarousel.js","names":["React","useThumbnailCarousel","ThumbnailImage","ThumbnailCarousel","props","thumbnailsListRef","imageIds","selectedImageId","priorityLimit","mainImageButtonClick","thumbnailImageClick","createElement","className","id","role","onClick","ref","_extends","priority","imageId","map","index","key","handleOnClick"],"sources":["../../../src/variants/ThumbnailCarousel/ThumbnailCarousel.js"],"sourcesContent":["import React from 'react';\nimport useThumbnailCarousel from './useThumbnailCarousel';\nimport ThumbnailImage from './ThumbnailImage';\n\nconst ThumbnailCarousel = props => {\n const {\n thumbnailsListRef,\n imageIds,\n selectedImageId,\n priorityLimit,\n mainImageButtonClick,\n thumbnailImageClick\n } = useThumbnailCarousel(props);\n\n return (\n <div className=\"thumbnail-carousel\" data-testid=\"thumbnail-carousel\">\n <div className=\"thumbnail-carousel__main_image_container\">\n <div\n id=\"previous-button\"\n className=\"thumbnail-carousel__main_image_container__button\"\n role=\"button\"\n onClick={() => mainImageButtonClick()}>\n <div className=\"arrow arrow--left\" />\n </div>\n <div\n className=\"thumbnail-carousel__main_image_container__main-image\"\n data-testid=\"thumbnail-main-image\"\n ref={thumbnailsListRef}>\n <ThumbnailImage {...props} priority imageId={selectedImageId} />\n </div>\n <div\n id=\"next-button\"\n className=\"thumbnail-carousel__main_image_container__button next\"\n role=\"button\"\n onClick={() => mainImageButtonClick(true)}>\n <div className=\"arrow arrow--right\" />\n </div>\n </div>\n <div className=\"thumbnail-carousel__list\">\n {imageIds.map((imageId, index) => (\n <ThumbnailImage\n {...props}\n key={imageId}\n priority={index < priorityLimit}\n imageId={imageId}\n selectedImageId={selectedImageId}\n handleOnClick={thumbnailImageClick}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default ThumbnailCarousel;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,cAAc,MAAM,kBAAkB;AAE7C,MAAMC,iBAAiB,GAAGC,KAAK,IAAI;EACjC,MAAM;IACJC,iBAAiB;IACjBC,QAAQ;IACRC,eAAe;IACfC,aAAa;IACbC,oBAAoB;IACpBC;EACF,CAAC,GAAGT,oBAAoB,CAACG,KAAK,CAAC;EAE/B,oBACEJ,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAC,oBAAoB;IAAC,eAAY;EAAoB,gBAClEZ,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAC;EAA0C,gBACvDZ,KAAA,CAAAW,aAAA;IACEE,EAAE,EAAC,iBAAiB;IACpBD,SAAS,EAAC,kDAAkD;IAC5DE,IAAI,EAAC,QAAQ;IACbC,OAAO,EAAEA,CAAA,KAAMN,oBAAoB,CAAC;EAAE,gBACtCT,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAC;EAAmB,CAAE,CACjC,CAAC,eACNZ,KAAA,CAAAW,aAAA;IACEC,SAAS,EAAC,sDAAsD;IAChE,eAAY,sBAAsB;IAClCI,GAAG,EAAEX;EAAkB,gBACvBL,KAAA,CAAAW,aAAA,CAACT,cAAc,EAAAe,QAAA,KAAKb,KAAK;IAAEc,QAAQ;IAACC,OAAO,EAAEZ;EAAgB,EAAE,CAC5D,CAAC,eACNP,KAAA,CAAAW,aAAA;IACEE,EAAE,EAAC,aAAa;IAChBD,SAAS,EAAC,uDAAuD;IACjEE,IAAI,EAAC,QAAQ;IACbC,OAAO,EAAEA,CAAA,KAAMN,oBAAoB,CAAC,IAAI;EAAE,gBAC1CT,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAC;EAAoB,CAAE,CAClC,CACF,CAAC,eACNZ,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAC;EAA0B,GACtCN,QAAQ,CAACc,GAAG,CAAC,CAACD,OAAO,EAAEE,KAAK,kBAC3BrB,KAAA,CAAAW,aAAA,CAACT,cAAc,EAAAe,QAAA,KACTb,KAAK;IACTkB,GAAG,EAAEH,OAAQ;IACbD,QAAQ,EAAEG,KAAK,GAAGb,aAAc;IAChCW,OAAO,EAAEA,OAAQ;IACjBZ,eAAe,EAAEA,eAAgB;IACjCgB,aAAa,EAAEb;EAAoB,EACpC,CACF,CACE,CACF,CAAC;AAEV,CAAC;AAED,eAAeP,iBAAiB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import LazyImage from '../../../components/LazyImage';
|
|
3
|
+
import useThumbnailImage from './useThumbnailImage';
|
|
4
|
+
const ThumbnailImage = props => {
|
|
5
|
+
const {
|
|
6
|
+
loading,
|
|
7
|
+
error,
|
|
8
|
+
className,
|
|
9
|
+
imageRef,
|
|
10
|
+
imageUrl,
|
|
11
|
+
altText,
|
|
12
|
+
priority,
|
|
13
|
+
handleClick,
|
|
14
|
+
handleEnableLightbox
|
|
15
|
+
} = useThumbnailImage(props);
|
|
16
|
+
if (error) return error.message;
|
|
17
|
+
if (loading) return null;
|
|
18
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
19
|
+
ref: imageRef,
|
|
20
|
+
className: className,
|
|
21
|
+
onClick: handleClick,
|
|
22
|
+
role: "button",
|
|
23
|
+
"data-testid": "thumbnail-image"
|
|
24
|
+
}, /*#__PURE__*/React.createElement(LazyImage, {
|
|
25
|
+
src: imageUrl,
|
|
26
|
+
alt: altText,
|
|
27
|
+
sizeKey: "carousel",
|
|
28
|
+
onClick: handleEnableLightbox,
|
|
29
|
+
role: "button",
|
|
30
|
+
priority: priority
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
export default ThumbnailImage;
|
|
34
|
+
//# sourceMappingURL=ThumbnailImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThumbnailImage.js","names":["React","LazyImage","useThumbnailImage","ThumbnailImage","props","loading","error","className","imageRef","imageUrl","altText","priority","handleClick","handleEnableLightbox","message","createElement","ref","onClick","role","src","alt","sizeKey"],"sources":["../../../../src/variants/ThumbnailCarousel/ThumbnailImage/ThumbnailImage.js"],"sourcesContent":["import React from 'react';\nimport LazyImage from '../../../components/LazyImage';\nimport useThumbnailImage from './useThumbnailImage';\n\nconst ThumbnailImage = props => {\n const {\n loading,\n error,\n className,\n imageRef,\n imageUrl,\n altText,\n priority,\n handleClick,\n handleEnableLightbox\n } = useThumbnailImage(props);\n\n if (error) return error.message;\n if (loading) return null;\n\n return (\n <div\n ref={imageRef}\n className={className}\n onClick={handleClick}\n role=\"button\"\n data-testid=\"thumbnail-image\">\n <LazyImage\n src={imageUrl}\n alt={altText}\n sizeKey=\"carousel\"\n onClick={handleEnableLightbox}\n role=\"button\"\n priority={priority}\n />\n </div>\n );\n};\n\nexport default ThumbnailImage;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,+BAA+B;AACrD,OAAOC,iBAAiB,MAAM,qBAAqB;AAEnD,MAAMC,cAAc,GAAGC,KAAK,IAAI;EAC9B,MAAM;IACJC,OAAO;IACPC,KAAK;IACLC,SAAS;IACTC,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC,QAAQ;IACRC,WAAW;IACXC;EACF,CAAC,GAAGX,iBAAiB,CAACE,KAAK,CAAC;EAE5B,IAAIE,KAAK,EAAE,OAAOA,KAAK,CAACQ,OAAO;EAC/B,IAAIT,OAAO,EAAE,OAAO,IAAI;EAExB,oBACEL,KAAA,CAAAe,aAAA;IACEC,GAAG,EAAER,QAAS;IACdD,SAAS,EAAEA,SAAU;IACrBU,OAAO,EAAEL,WAAY;IACrBM,IAAI,EAAC,QAAQ;IACb,eAAY;EAAiB,gBAC7BlB,KAAA,CAAAe,aAAA,CAACd,SAAS;IACRkB,GAAG,EAAEV,QAAS;IACdW,GAAG,EAAEV,OAAQ;IACbW,OAAO,EAAC,UAAU;IAClBJ,OAAO,EAAEJ,oBAAqB;IAC9BK,IAAI,EAAC,QAAQ;IACbP,QAAQ,EAAEA;EAAS,CACpB,CACE,CAAC;AAEV,CAAC;AAED,eAAeR,cAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["ThumbnailImage"],"sources":["../../../../src/variants/ThumbnailCarousel/ThumbnailImage/index.js"],"sourcesContent":["import ThumbnailImage from './ThumbnailImage';\n\nexport default ThumbnailImage;\n"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAE7C,eAAeA,cAAc"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { useGetImages } from '../../../hooks';
|
|
4
|
+
import { getImageData } from '../../../utils';
|
|
5
|
+
const useThumbnailImage = ({
|
|
6
|
+
imageId,
|
|
7
|
+
enableLightbox,
|
|
8
|
+
toggleModal,
|
|
9
|
+
handleSelectedImage,
|
|
10
|
+
priority,
|
|
11
|
+
selectedImageId,
|
|
12
|
+
handleOnClick
|
|
13
|
+
}) => {
|
|
14
|
+
const imageRef = useRef(null);
|
|
15
|
+
const isSelected = selectedImageId === imageId;
|
|
16
|
+
const {
|
|
17
|
+
data = {},
|
|
18
|
+
loading,
|
|
19
|
+
error
|
|
20
|
+
} = useGetImages(imageId);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (imageRef.current && isSelected) {
|
|
23
|
+
imageRef.current.scrollIntoView({
|
|
24
|
+
behavior: 'smooth',
|
|
25
|
+
block: 'start'
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}, [isSelected]);
|
|
29
|
+
const handleEnableLightbox = () => {
|
|
30
|
+
if (!enableLightbox) return;
|
|
31
|
+
toggleModal();
|
|
32
|
+
handleSelectedImage(imageId);
|
|
33
|
+
};
|
|
34
|
+
const handleClick = () => {
|
|
35
|
+
handleOnClick(imageId);
|
|
36
|
+
};
|
|
37
|
+
const {
|
|
38
|
+
url: imageUrl = '',
|
|
39
|
+
data: imageData = {}
|
|
40
|
+
} = data.getFile || {
|
|
41
|
+
getFile: {
|
|
42
|
+
url: '',
|
|
43
|
+
data: {}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const {
|
|
47
|
+
altText
|
|
48
|
+
} = getImageData({}, imageData);
|
|
49
|
+
const className = selectedImageId === imageId ? 'thumbnail-carousel-image thumbnail-carousel-image--selected' : 'thumbnail-carousel-image';
|
|
50
|
+
return {
|
|
51
|
+
loading,
|
|
52
|
+
error,
|
|
53
|
+
className,
|
|
54
|
+
imageRef,
|
|
55
|
+
imageUrl,
|
|
56
|
+
altText,
|
|
57
|
+
priority,
|
|
58
|
+
handleClick,
|
|
59
|
+
handleEnableLightbox
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
useThumbnailImage.propTypes = {
|
|
63
|
+
imageId: PropTypes.string.isRequired,
|
|
64
|
+
selectedImageId: PropTypes.string.isRequired,
|
|
65
|
+
enableLightbox: PropTypes.bool.isRequired,
|
|
66
|
+
toggleModal: PropTypes.func.isRequired,
|
|
67
|
+
handleSelectedImage: PropTypes.func.isRequired,
|
|
68
|
+
priority: PropTypes.bool.isRequired,
|
|
69
|
+
handleOnClick: PropTypes.func
|
|
70
|
+
};
|
|
71
|
+
useThumbnailImage.defaultProps = {
|
|
72
|
+
handleOnClick: () => {}
|
|
73
|
+
};
|
|
74
|
+
export default useThumbnailImage;
|
|
75
|
+
//# sourceMappingURL=useThumbnailImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThumbnailImage.js","names":["useEffect","useRef","PropTypes","useGetImages","getImageData","useThumbnailImage","imageId","enableLightbox","toggleModal","handleSelectedImage","priority","selectedImageId","handleOnClick","imageRef","isSelected","data","loading","error","current","scrollIntoView","behavior","block","handleEnableLightbox","handleClick","url","imageUrl","imageData","getFile","altText","className","propTypes","string","isRequired","bool","func","defaultProps"],"sources":["../../../../src/variants/ThumbnailCarousel/ThumbnailImage/useThumbnailImage.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useGetImages } from '../../../hooks';\nimport { getImageData } from '../../../utils';\n\nconst useThumbnailImage = ({\n imageId,\n enableLightbox,\n toggleModal,\n handleSelectedImage,\n priority,\n selectedImageId,\n handleOnClick\n}) => {\n const imageRef = useRef(null);\n const isSelected = selectedImageId === imageId;\n const { data = {}, loading, error } = useGetImages(imageId);\n\n useEffect(\n () => {\n if (imageRef.current && isSelected) {\n imageRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n },\n [isSelected]\n );\n\n const handleEnableLightbox = () => {\n if (!enableLightbox) return;\n toggleModal();\n handleSelectedImage(imageId);\n };\n\n const handleClick = () => {\n handleOnClick(imageId);\n };\n\n const { url: imageUrl = '', data: imageData = {} } = data.getFile || {\n getFile: { url: '', data: {} }\n };\n const { altText } = getImageData({}, imageData);\n\n const className =\n selectedImageId === imageId\n ? 'thumbnail-carousel-image thumbnail-carousel-image--selected'\n : 'thumbnail-carousel-image';\n\n return {\n loading,\n error,\n className,\n imageRef,\n imageUrl,\n altText,\n priority,\n handleClick,\n handleEnableLightbox\n };\n};\n\nuseThumbnailImage.propTypes = {\n imageId: PropTypes.string.isRequired,\n selectedImageId: PropTypes.string.isRequired,\n enableLightbox: PropTypes.bool.isRequired,\n toggleModal: PropTypes.func.isRequired,\n handleSelectedImage: PropTypes.func.isRequired,\n priority: PropTypes.bool.isRequired,\n handleOnClick: PropTypes.func\n};\n\nuseThumbnailImage.defaultProps = {\n handleOnClick: () => {}\n};\n\nexport default useThumbnailImage;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACzC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,MAAMC,iBAAiB,GAAGA,CAAC;EACzBC,OAAO;EACPC,cAAc;EACdC,WAAW;EACXC,mBAAmB;EACnBC,QAAQ;EACRC,eAAe;EACfC;AACF,CAAC,KAAK;EACJ,MAAMC,QAAQ,GAAGZ,MAAM,CAAC,IAAI,CAAC;EAC7B,MAAMa,UAAU,GAAGH,eAAe,KAAKL,OAAO;EAC9C,MAAM;IAAES,IAAI,GAAG,CAAC,CAAC;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGd,YAAY,CAACG,OAAO,CAAC;EAE3DN,SAAS,CACP,MAAM;IACJ,IAAIa,QAAQ,CAACK,OAAO,IAAIJ,UAAU,EAAE;MAClCD,QAAQ,CAACK,OAAO,CAACC,cAAc,CAAC;QAAEC,QAAQ,EAAE,QAAQ;QAAEC,KAAK,EAAE;MAAQ,CAAC,CAAC;IACzE;EACF,CAAC,EACD,CAACP,UAAU,CACb,CAAC;EAED,MAAMQ,oBAAoB,GAAGA,CAAA,KAAM;IACjC,IAAI,CAACf,cAAc,EAAE;IACrBC,WAAW,CAAC,CAAC;IACbC,mBAAmB,CAACH,OAAO,CAAC;EAC9B,CAAC;EAED,MAAMiB,WAAW,GAAGA,CAAA,KAAM;IACxBX,aAAa,CAACN,OAAO,CAAC;EACxB,CAAC;EAED,MAAM;IAAEkB,GAAG,EAAEC,QAAQ,GAAG,EAAE;IAAEV,IAAI,EAAEW,SAAS,GAAG,CAAC;EAAE,CAAC,GAAGX,IAAI,CAACY,OAAO,IAAI;IACnEA,OAAO,EAAE;MAAEH,GAAG,EAAE,EAAE;MAAET,IAAI,EAAE,CAAC;IAAE;EAC/B,CAAC;EACD,MAAM;IAAEa;EAAQ,CAAC,GAAGxB,YAAY,CAAC,CAAC,CAAC,EAAEsB,SAAS,CAAC;EAE/C,MAAMG,SAAS,GACblB,eAAe,KAAKL,OAAO,GACvB,6DAA6D,GAC7D,0BAA0B;EAEhC,OAAO;IACLU,OAAO;IACPC,KAAK;IACLY,SAAS;IACThB,QAAQ;IACRY,QAAQ;IACRG,OAAO;IACPlB,QAAQ;IACRa,WAAW;IACXD;EACF,CAAC;AACH,CAAC;AAEDjB,iBAAiB,CAACyB,SAAS,GAAG;EAC5BxB,OAAO,EAAEJ,SAAS,CAAC6B,MAAM,CAACC,UAAU;EACpCrB,eAAe,EAAET,SAAS,CAAC6B,MAAM,CAACC,UAAU;EAC5CzB,cAAc,EAAEL,SAAS,CAAC+B,IAAI,CAACD,UAAU;EACzCxB,WAAW,EAAEN,SAAS,CAACgC,IAAI,CAACF,UAAU;EACtCvB,mBAAmB,EAAEP,SAAS,CAACgC,IAAI,CAACF,UAAU;EAC9CtB,QAAQ,EAAER,SAAS,CAAC+B,IAAI,CAACD,UAAU;EACnCpB,aAAa,EAAEV,SAAS,CAACgC;AAC3B,CAAC;AAED7B,iBAAiB,CAAC8B,YAAY,GAAG;EAC/BvB,aAAa,EAAEA,CAAA,KAAM,CAAC;AACxB,CAAC;AAED,eAAeP,iBAAiB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import ThumbnailCarouselComponent from './ThumbnailCarousel';
|
|
5
|
+
const ThumbnailCarousel = {
|
|
6
|
+
getSettings: componentSettings => _objectSpread({}, componentSettings),
|
|
7
|
+
VariantComponent: ThumbnailCarouselComponent
|
|
8
|
+
};
|
|
9
|
+
export default ThumbnailCarousel;
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["ThumbnailCarouselComponent","ThumbnailCarousel","getSettings","componentSettings","_objectSpread","VariantComponent"],"sources":["../../../src/variants/ThumbnailCarousel/index.js"],"sourcesContent":["import ThumbnailCarouselComponent from './ThumbnailCarousel';\n\nconst ThumbnailCarousel = {\n getSettings: componentSettings => ({\n ...componentSettings\n }),\n VariantComponent: ThumbnailCarouselComponent\n};\n\nexport default ThumbnailCarousel;\n"],"mappings":";;;AAAA,OAAOA,0BAA0B,MAAM,qBAAqB;AAE5D,MAAMC,iBAAiB,GAAG;EACxBC,WAAW,EAAEC,iBAAiB,IAAAC,aAAA,KACzBD,iBAAiB,CACpB;EACFE,gBAAgB,EAAEL;AACpB,CAAC;AAED,eAAeC,iBAAiB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
const _excluded = ["imageIds", "priorityLimit"];
|
|
4
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
+
import { useState, useRef } from 'react';
|
|
7
|
+
const useThumbnailCarousel = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
imageIds,
|
|
10
|
+
priorityLimit
|
|
11
|
+
} = _ref,
|
|
12
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
13
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState(0);
|
|
14
|
+
const thumbnailsListRef = useRef(null);
|
|
15
|
+
const selectedImageId = imageIds[selectedImageIndex];
|
|
16
|
+
const mainImageButtonClick = next => {
|
|
17
|
+
if (next) {
|
|
18
|
+
const isLast = imageIds.length - 1 === selectedImageIndex;
|
|
19
|
+
const newIndex = isLast ? 0 : selectedImageIndex + 1;
|
|
20
|
+
setSelectedImageIndex(newIndex);
|
|
21
|
+
} else {
|
|
22
|
+
const isFirst = selectedImageIndex === 0;
|
|
23
|
+
const newIndex = isFirst ? imageIds.length - 1 : selectedImageIndex - 1;
|
|
24
|
+
setSelectedImageIndex(newIndex);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const thumbnailImageClick = id => {
|
|
28
|
+
const newIndex = imageIds.indexOf(id);
|
|
29
|
+
if (newIndex !== -1) setSelectedImageIndex(newIndex);
|
|
30
|
+
};
|
|
31
|
+
return _objectSpread(_objectSpread({}, props), {}, {
|
|
32
|
+
imageIds,
|
|
33
|
+
selectedImageId,
|
|
34
|
+
selectedImageIndex,
|
|
35
|
+
thumbnailsListRef,
|
|
36
|
+
priorityLimit,
|
|
37
|
+
thumbnailImageClick,
|
|
38
|
+
mainImageButtonClick
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
export default useThumbnailCarousel;
|
|
42
|
+
//# sourceMappingURL=useThumbnailCarousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThumbnailCarousel.js","names":["useState","useRef","useThumbnailCarousel","_ref","imageIds","priorityLimit","props","_objectWithoutProperties","_excluded","selectedImageIndex","setSelectedImageIndex","thumbnailsListRef","selectedImageId","mainImageButtonClick","next","isLast","length","newIndex","isFirst","thumbnailImageClick","id","indexOf","_objectSpread"],"sources":["../../../src/variants/ThumbnailCarousel/useThumbnailCarousel.js"],"sourcesContent":["import { useState, useRef } from 'react';\n\nconst useThumbnailCarousel = ({ imageIds, priorityLimit, ...props }) => {\n const [selectedImageIndex, setSelectedImageIndex] = useState(0);\n const thumbnailsListRef = useRef(null);\n const selectedImageId = imageIds[selectedImageIndex];\n\n const mainImageButtonClick = next => {\n if (next) {\n const isLast = imageIds.length - 1 === selectedImageIndex;\n const newIndex = isLast ? 0 : selectedImageIndex + 1;\n setSelectedImageIndex(newIndex);\n } else {\n const isFirst = selectedImageIndex === 0;\n const newIndex = isFirst ? imageIds.length - 1 : selectedImageIndex - 1;\n setSelectedImageIndex(newIndex);\n }\n };\n\n const thumbnailImageClick = id => {\n const newIndex = imageIds.indexOf(id);\n if (newIndex !== -1) setSelectedImageIndex(newIndex);\n };\n\n return {\n ...props,\n imageIds,\n selectedImageId,\n selectedImageIndex,\n thumbnailsListRef,\n priorityLimit,\n thumbnailImageClick,\n mainImageButtonClick\n };\n};\n\nexport default useThumbnailCarousel;\n"],"mappings":";;;;;AAAA,SAASA,QAAQ,EAAEC,MAAM,QAAQ,OAAO;AAExC,MAAMC,oBAAoB,GAAGC,IAAA,IAA2C;EAAA,IAA1C;MAAEC,QAAQ;MAAEC;IAAwB,CAAC,GAAAF,IAAA;IAAPG,KAAK,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EAC/D,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGV,QAAQ,CAAC,CAAC,CAAC;EAC/D,MAAMW,iBAAiB,GAAGV,MAAM,CAAC,IAAI,CAAC;EACtC,MAAMW,eAAe,GAAGR,QAAQ,CAACK,kBAAkB,CAAC;EAEpD,MAAMI,oBAAoB,GAAGC,IAAI,IAAI;IACnC,IAAIA,IAAI,EAAE;MACR,MAAMC,MAAM,GAAGX,QAAQ,CAACY,MAAM,GAAG,CAAC,KAAKP,kBAAkB;MACzD,MAAMQ,QAAQ,GAAGF,MAAM,GAAG,CAAC,GAAGN,kBAAkB,GAAG,CAAC;MACpDC,qBAAqB,CAACO,QAAQ,CAAC;IACjC,CAAC,MAAM;MACL,MAAMC,OAAO,GAAGT,kBAAkB,KAAK,CAAC;MACxC,MAAMQ,QAAQ,GAAGC,OAAO,GAAGd,QAAQ,CAACY,MAAM,GAAG,CAAC,GAAGP,kBAAkB,GAAG,CAAC;MACvEC,qBAAqB,CAACO,QAAQ,CAAC;IACjC;EACF,CAAC;EAED,MAAME,mBAAmB,GAAGC,EAAE,IAAI;IAChC,MAAMH,QAAQ,GAAGb,QAAQ,CAACiB,OAAO,CAACD,EAAE,CAAC;IACrC,IAAIH,QAAQ,KAAK,CAAC,CAAC,EAAEP,qBAAqB,CAACO,QAAQ,CAAC;EACtD,CAAC;EAED,OAAAK,aAAA,CAAAA,aAAA,KACKhB,KAAK;IACRF,QAAQ;IACRQ,eAAe;IACfH,kBAAkB;IAClBE,iBAAiB;IACjBN,aAAa;IACbc,mBAAmB;IACnBN;EAAoB;AAExB,CAAC;AAED,eAAeX,oBAAoB"}
|
package/lib-es/variants/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/variants/index.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["thumbnailCarousel"],"sources":["../../src/variants/index.js"],"sourcesContent":["import thumbnailCarousel from './ThumbnailCarousel';\n\nexport default {\n thumbnailCarousel\n};\n"],"mappings":"AAAA,OAAOA,iBAAiB,MAAM,qBAAqB;AAEnD,eAAe;EACbA;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.141.0-core-styles.
|
|
3
|
+
"version": "0.141.0-core-styles.20",
|
|
4
4
|
"description": "Blaze react page builder",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@blaze-cms/core-errors-ui": "0.140.2-core-styles.1",
|
|
33
33
|
"@blaze-cms/image-cdn-react": "0.3.0-alpha.6",
|
|
34
34
|
"@blaze-cms/nextjs-components": "0.141.0-core-styles.0",
|
|
35
|
-
"@blaze-cms/plugin-search-ui": "0.141.0-core-styles.
|
|
35
|
+
"@blaze-cms/plugin-search-ui": "0.141.0-core-styles.16",
|
|
36
36
|
"@blaze-cms/setup-ui": "0.140.2-core-styles.1",
|
|
37
37
|
"@blaze-cms/utils": "0.140.2-core-styles.1",
|
|
38
38
|
"@blaze-cms/utils-handlebars": "0.141.0-core-styles.0",
|
|
@@ -89,5 +89,5 @@
|
|
|
89
89
|
"lib/*",
|
|
90
90
|
"lib-es/*"
|
|
91
91
|
],
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "4e9b6cfffbc04fa32476c3daed008594a54838e9"
|
|
93
93
|
}
|
|
@@ -6,6 +6,7 @@ import ListHeader from './components/Header';
|
|
|
6
6
|
import { sortResponseData } from '../../helpers';
|
|
7
7
|
import { LOAD_MORE } from '../../constants';
|
|
8
8
|
import { useAppSyncEventHook } from '../../hooks';
|
|
9
|
+
import { buildQueryBooster } from './helpers';
|
|
9
10
|
|
|
10
11
|
const ListRender = props => {
|
|
11
12
|
const {
|
|
@@ -33,9 +34,10 @@ const ListRender = props => {
|
|
|
33
34
|
data: variables,
|
|
34
35
|
props
|
|
35
36
|
});
|
|
37
|
+
const boostedVariables = buildQueryBooster(props, updatedVariables);
|
|
36
38
|
|
|
37
39
|
const { data = {}, error, loading, fetchMore } = useQuery(action, {
|
|
38
|
-
variables:
|
|
40
|
+
variables: boostedVariables
|
|
39
41
|
});
|
|
40
42
|
|
|
41
43
|
if (loading) return '';
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const buildQueryBooster = (props, data) => {
|
|
2
|
+
const { recencyBoostProperty } = props;
|
|
3
|
+
|
|
4
|
+
if (!recencyBoostProperty || !recencyBoostProperty.length) return data;
|
|
5
|
+
const { rawQueryStringified = '' } = data;
|
|
6
|
+
|
|
7
|
+
const parsedRawQuery = JSON.parse(rawQueryStringified);
|
|
8
|
+
const { function_score: { query, functions = [] } = {} } = parsedRawQuery;
|
|
9
|
+
|
|
10
|
+
const boostedPropsFunctios = recencyBoostProperty.map(propToBoost => ({
|
|
11
|
+
gauss: {
|
|
12
|
+
[propToBoost]: {
|
|
13
|
+
origin: 'now',
|
|
14
|
+
scale: '30d',
|
|
15
|
+
offset: '7d',
|
|
16
|
+
decay: 0.5
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
const updatedData = {
|
|
22
|
+
function_score: {
|
|
23
|
+
query: functions.length ? query : parsedRawQuery,
|
|
24
|
+
functions: [...functions, ...boostedPropsFunctios],
|
|
25
|
+
boost_mode: 'multiply'
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
...data,
|
|
31
|
+
rawQueryStringified: JSON.stringify(updatedData)
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export default buildQueryBooster;
|
|
@@ -9,3 +9,4 @@ export { default as hasRequiredItemListDetails } from './has-required-item-list-
|
|
|
9
9
|
export { default as getListComponent } from './get-list-component';
|
|
10
10
|
export { default as getListQuery } from './get-list-query';
|
|
11
11
|
export { default as getListSpecificSearchFilter } from './get-list-specific-search-filter';
|
|
12
|
+
export { default as buildQueryBooster } from './build-query-booster';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import useThumbnailCarousel from './useThumbnailCarousel';
|
|
3
|
+
import ThumbnailImage from './ThumbnailImage';
|
|
4
|
+
|
|
5
|
+
const ThumbnailCarousel = props => {
|
|
6
|
+
const {
|
|
7
|
+
thumbnailsListRef,
|
|
8
|
+
imageIds,
|
|
9
|
+
selectedImageId,
|
|
10
|
+
priorityLimit,
|
|
11
|
+
mainImageButtonClick,
|
|
12
|
+
thumbnailImageClick
|
|
13
|
+
} = useThumbnailCarousel(props);
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<div className="thumbnail-carousel" data-testid="thumbnail-carousel">
|
|
17
|
+
<div className="thumbnail-carousel__main_image_container">
|
|
18
|
+
<div
|
|
19
|
+
id="previous-button"
|
|
20
|
+
className="thumbnail-carousel__main_image_container__button"
|
|
21
|
+
role="button"
|
|
22
|
+
onClick={() => mainImageButtonClick()}>
|
|
23
|
+
<div className="arrow arrow--left" />
|
|
24
|
+
</div>
|
|
25
|
+
<div
|
|
26
|
+
className="thumbnail-carousel__main_image_container__main-image"
|
|
27
|
+
data-testid="thumbnail-main-image"
|
|
28
|
+
ref={thumbnailsListRef}>
|
|
29
|
+
<ThumbnailImage {...props} priority imageId={selectedImageId} />
|
|
30
|
+
</div>
|
|
31
|
+
<div
|
|
32
|
+
id="next-button"
|
|
33
|
+
className="thumbnail-carousel__main_image_container__button next"
|
|
34
|
+
role="button"
|
|
35
|
+
onClick={() => mainImageButtonClick(true)}>
|
|
36
|
+
<div className="arrow arrow--right" />
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
<div className="thumbnail-carousel__list">
|
|
40
|
+
{imageIds.map((imageId, index) => (
|
|
41
|
+
<ThumbnailImage
|
|
42
|
+
{...props}
|
|
43
|
+
key={imageId}
|
|
44
|
+
priority={index < priorityLimit}
|
|
45
|
+
imageId={imageId}
|
|
46
|
+
selectedImageId={selectedImageId}
|
|
47
|
+
handleOnClick={thumbnailImageClick}
|
|
48
|
+
/>
|
|
49
|
+
))}
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export default ThumbnailCarousel;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import LazyImage from '../../../components/LazyImage';
|
|
3
|
+
import useThumbnailImage from './useThumbnailImage';
|
|
4
|
+
|
|
5
|
+
const ThumbnailImage = props => {
|
|
6
|
+
const {
|
|
7
|
+
loading,
|
|
8
|
+
error,
|
|
9
|
+
className,
|
|
10
|
+
imageRef,
|
|
11
|
+
imageUrl,
|
|
12
|
+
altText,
|
|
13
|
+
priority,
|
|
14
|
+
handleClick,
|
|
15
|
+
handleEnableLightbox
|
|
16
|
+
} = useThumbnailImage(props);
|
|
17
|
+
|
|
18
|
+
if (error) return error.message;
|
|
19
|
+
if (loading) return null;
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<div
|
|
23
|
+
ref={imageRef}
|
|
24
|
+
className={className}
|
|
25
|
+
onClick={handleClick}
|
|
26
|
+
role="button"
|
|
27
|
+
data-testid="thumbnail-image">
|
|
28
|
+
<LazyImage
|
|
29
|
+
src={imageUrl}
|
|
30
|
+
alt={altText}
|
|
31
|
+
sizeKey="carousel"
|
|
32
|
+
onClick={handleEnableLightbox}
|
|
33
|
+
role="button"
|
|
34
|
+
priority={priority}
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default ThumbnailImage;
|