vviinn-widgets 2.48.3 → 2.48.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{customized-slots-1b59bd38.js → customized-slots-67b24737.js} +0 -1
- package/dist/cjs/{index-279a6a0f.js → index-4445cb70.js} +1 -1
- package/dist/cjs/{package-1762509d.js → package-d6dae17b.js} +1 -1
- package/dist/cjs/search-filters_17.cjs.entry.js +2 -2
- package/dist/cjs/{search.store-0b319593.js → search.store-7605f369.js} +10 -26
- package/dist/cjs/vviinn-carousel_4.cjs.entry.js +4 -4
- package/dist/cjs/vviinn-preloader.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-vpr-button.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-vps-button.cjs.entry.js +2 -2
- package/dist/cjs/vviinn-vps-widget.cjs.entry.js +5 -9
- package/dist/collection/components/customized-slots.js +0 -1
- package/dist/collection/components/vviinn-vps-button/vviinn-vps-button.js +0 -7
- package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js +1 -14
- package/dist/collection/searchSession/searchSession.js +2 -2
- package/dist/collection/store/search.store.js +8 -7
- package/dist/esm/{customized-slots-3bea41d2.js → customized-slots-e56251a2.js} +0 -1
- package/dist/esm/{index-9c15b8f1.js → index-ff13425d.js} +1 -1
- package/dist/esm/{package-47553c09.js → package-3c563a3a.js} +1 -1
- package/dist/esm/search-filters_17.entry.js +2 -2
- package/dist/esm/{search.store-5eebcfbe.js → search.store-eaa5f165.js} +11 -26
- package/dist/esm/vviinn-carousel_4.entry.js +4 -4
- package/dist/esm/vviinn-preloader.entry.js +1 -1
- package/dist/esm/vviinn-vpr-button.entry.js +1 -1
- package/dist/esm/vviinn-vps-button.entry.js +2 -2
- package/dist/esm/vviinn-vps-widget.entry.js +5 -9
- package/dist/types/components/vviinn-vps-button/vviinn-vps-button.d.ts +0 -7
- package/dist/types/components/vviinn-vps-widget/vviinn-vps-widget.d.ts +0 -7
- package/dist/types/searchSession/searchSession.d.ts +1 -2
- package/dist/types/store/search.store.d.ts +2 -2
- package/{www/build/p-368e9b0b.entry.js → dist/vviinn-widgets/p-08ef6197.entry.js} +1 -1
- package/dist/vviinn-widgets/{p-04cdf7c5.js → p-150f1108.js} +1 -1
- package/dist/vviinn-widgets/p-49417192.js +1 -0
- package/dist/vviinn-widgets/{p-7195889c.entry.js → p-554d2c34.entry.js} +1 -1
- package/dist/vviinn-widgets/{p-e5fac7ef.entry.js → p-8589dbde.entry.js} +1 -1
- package/dist/vviinn-widgets/p-909e2781.js +1 -0
- package/dist/vviinn-widgets/p-ad25945b.entry.js +1 -0
- package/dist/vviinn-widgets/{p-ec7b07a0.entry.js → p-c99391f1.entry.js} +1 -1
- package/dist/vviinn-widgets/{p-09de9d7d.entry.js → p-dc4d6669.entry.js} +1 -1
- package/{www/build/p-41ab810c.js → dist/vviinn-widgets/p-ec4782a6.js} +1 -1
- package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
- package/package.json +1 -1
- package/{dist/vviinn-widgets/p-368e9b0b.entry.js → www/build/p-08ef6197.entry.js} +1 -1
- package/www/build/{p-04cdf7c5.js → p-150f1108.js} +1 -1
- package/www/build/p-49417192.js +1 -0
- package/www/build/{p-7195889c.entry.js → p-554d2c34.entry.js} +1 -1
- package/www/build/{p-e5fac7ef.entry.js → p-8589dbde.entry.js} +1 -1
- package/www/build/p-909e2781.js +1 -0
- package/www/build/p-ad25945b.entry.js +1 -0
- package/www/build/{p-ec7b07a0.entry.js → p-c99391f1.entry.js} +1 -1
- package/www/build/{p-09de9d7d.entry.js → p-dc4d6669.entry.js} +1 -1
- package/{dist/vviinn-widgets/p-41ab810c.js → www/build/p-ec4782a6.js} +1 -1
- package/www/build/vviinn-widgets.esm.js +1 -1
- package/dist/vviinn-widgets/p-8699147a.entry.js +0 -1
- package/dist/vviinn-widgets/p-af67c2ee.js +0 -1
- package/dist/vviinn-widgets/p-ed482314.js +0 -1
- package/www/build/p-8699147a.entry.js +0 -1
- package/www/build/p-af67c2ee.js +0 -1
- package/www/build/p-ed482314.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const search_store = require('./search.store-
|
|
3
|
+
const search_store = require('./search.store-7605f369.js');
|
|
4
4
|
|
|
5
5
|
// Unique ID creation requires a high quality random # generator. In the browser we therefore
|
|
6
6
|
// require the crypto API and do not support built-in fallback to lower quality random number
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const search_store = require('./search.store-
|
|
6
|
+
const search_store = require('./search.store-7605f369.js');
|
|
7
7
|
const i18next = require('./i18next-74ff3413.js');
|
|
8
8
|
const PlusIcon = require('./PlusIcon-5e585127.js');
|
|
9
|
-
const customizedSlots = require('./customized-slots-
|
|
9
|
+
const customizedSlots = require('./customized-slots-67b24737.js');
|
|
10
10
|
|
|
11
11
|
const ArrowIcon = () => (index.h("svg", { width: "12", height: "20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
12
12
|
index.h("path", { d: "M0 10 10 0l1.4 1.4L2.8 10l8.6 8.6L10 20 0 10Z" })));
|
|
@@ -16403,22 +16403,6 @@ var Monoid = {
|
|
|
16403
16403
|
concat: Semigroup.concat,
|
|
16404
16404
|
empty: empty
|
|
16405
16405
|
};
|
|
16406
|
-
// -------------------------------------------------------------------------------------
|
|
16407
|
-
// utils
|
|
16408
|
-
// -------------------------------------------------------------------------------------
|
|
16409
|
-
/**
|
|
16410
|
-
* Test whether a `string` is empty.
|
|
16411
|
-
*
|
|
16412
|
-
* @example
|
|
16413
|
-
* import * as S from 'fp-ts/string'
|
|
16414
|
-
* import { pipe } from 'fp-ts/function'
|
|
16415
|
-
*
|
|
16416
|
-
* assert.deepStrictEqual(pipe('', S.isEmpty), true)
|
|
16417
|
-
* assert.deepStrictEqual(pipe('a', S.isEmpty), false)
|
|
16418
|
-
*
|
|
16419
|
-
* @since 2.10.0
|
|
16420
|
-
*/
|
|
16421
|
-
var isEmpty$1 = function (s) { return s.length === 0; };
|
|
16422
16406
|
|
|
16423
16407
|
const basicErrorFromResponse = (error) => {
|
|
16424
16408
|
return {
|
|
@@ -16504,9 +16488,9 @@ const detectedObjectEq = {
|
|
|
16504
16488
|
x.rectangle.height === y.rectangle.height &&
|
|
16505
16489
|
x.rectangle.width === y.rectangle.width,
|
|
16506
16490
|
};
|
|
16507
|
-
const imageSearchSessionClient = (initialData, campaignId
|
|
16491
|
+
const imageSearchSessionClient = (initialData, campaignId, excludedFilters) => {
|
|
16508
16492
|
const searchUrl = "search/session";
|
|
16509
|
-
const requestUrl = _function.pipe(campaignId, fold(() => {
|
|
16493
|
+
const requestUrl = _function.pipe(fromNullable(campaignId), fold(() => {
|
|
16510
16494
|
const params = [];
|
|
16511
16495
|
if (excludedFilters)
|
|
16512
16496
|
params.push(excludedFilters);
|
|
@@ -17258,13 +17242,14 @@ const optionalResize = (image, size) => image.naturalWidth > size ? resizeImage(
|
|
|
17258
17242
|
const resizeFileTo = (size) => (file) => _function.pipe(file, imageFromFileTask, Task.map((image) => optionalResize(image, size)), Task.chain(convertB64toFileTask));
|
|
17259
17243
|
|
|
17260
17244
|
const RESIZED_IMAGE_WIDTH = 500;
|
|
17245
|
+
const HI_RES_RESIZED_IMAGE_WIDTH = 1024;
|
|
17261
17246
|
const makeAuthorizedRequest = (token) => pipe(token, processBearerToken, map$4((headers) => {
|
|
17262
17247
|
return {
|
|
17263
17248
|
headers,
|
|
17264
17249
|
};
|
|
17265
17250
|
}));
|
|
17266
17251
|
const { state, onChange } = createStore({
|
|
17267
|
-
campaignId:
|
|
17252
|
+
campaignId: "",
|
|
17268
17253
|
excluded: "",
|
|
17269
17254
|
results: [],
|
|
17270
17255
|
filters: [],
|
|
@@ -17301,7 +17286,7 @@ const detectObjects = async (data) => {
|
|
|
17301
17286
|
await pipe(getLink(data, "detectedObjects"), fromOption(() => error), chain(makeLinkRequest), map((objects) => (state.detectedObjects = foldValueObject(objects))))();
|
|
17302
17287
|
state.objectDetectionInProgress = false;
|
|
17303
17288
|
};
|
|
17304
|
-
const
|
|
17289
|
+
const uploadHiResFile = async (sessionResponse, file) => {
|
|
17305
17290
|
const ionFile = await fromFile(file);
|
|
17306
17291
|
const formPayload = {
|
|
17307
17292
|
image: ionFile,
|
|
@@ -17346,10 +17331,7 @@ const uploadFile = (file) => {
|
|
|
17346
17331
|
const uploadText = (query) => {
|
|
17347
17332
|
state.searchType = "text";
|
|
17348
17333
|
state.loading = true;
|
|
17349
|
-
const body = JSON.stringify({
|
|
17350
|
-
query,
|
|
17351
|
-
campaign: Option.getOrElse(() => "")(state.campaignId),
|
|
17352
|
-
});
|
|
17334
|
+
const body = JSON.stringify(Object.assign({ query }, (state.campaignId.length ? { campaign: state.campaignId } : {})));
|
|
17353
17335
|
const tokenWithBody = sequenceToEither(processBearerToken(state.token), right(body));
|
|
17354
17336
|
return pipe(tokenWithBody, map$4(([headers, body]) => {
|
|
17355
17337
|
headers.set("Content-Type", "application/json");
|
|
@@ -17398,10 +17380,13 @@ const setSelectedImage = (image) => {
|
|
|
17398
17380
|
const processSelectedFile = async (file) => {
|
|
17399
17381
|
const originFile = checkFileWithExtention(file);
|
|
17400
17382
|
const fileResizer = resizeFileTo(RESIZED_IMAGE_WIDTH);
|
|
17383
|
+
const hiResFileResizer = resizeFileTo(HI_RES_RESIZED_IMAGE_WIDTH);
|
|
17401
17384
|
const resizeFileTask = pipe(originFile, fromEither, chainTaskK(fileResizer));
|
|
17385
|
+
const resizeHiResFileTask = pipe(originFile, fromEither, chainTaskK(hiResFileResizer));
|
|
17402
17386
|
const session = await pipe(resizeFileTask, chain(uploadFile))();
|
|
17403
|
-
pipe(sequenceToEither(session, originFile), map$4(([sessionObject, file]) => uploadHiresFile(sessionObject, file)));
|
|
17404
17387
|
await pipe(resizeFileTask, chainTaskK(imageFromFileTask), map(setSelectedImage))();
|
|
17388
|
+
const resizedHiResFile = await resizeHiResFileTask();
|
|
17389
|
+
pipe(sequenceToEither(session, resizedHiResFile), map$4(([sessionObject, file]) => uploadHiResFile(sessionObject, file)));
|
|
17405
17390
|
return session;
|
|
17406
17391
|
};
|
|
17407
17392
|
|
|
@@ -17428,7 +17413,6 @@ exports.fromEither = fromEither;
|
|
|
17428
17413
|
exports.fromImage = fromImage;
|
|
17429
17414
|
exports.getApiPath = getApiPath;
|
|
17430
17415
|
exports.has = has;
|
|
17431
|
-
exports.isEmpty = isEmpty$1;
|
|
17432
17416
|
exports.makeRectangularSearchRequest = makeRectangularSearchRequest;
|
|
17433
17417
|
exports.makeRequest = makeRequest;
|
|
17434
17418
|
exports.map = map$3;
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const search_store = require('./search.store-
|
|
6
|
+
const search_store = require('./search.store-7605f369.js');
|
|
7
7
|
const i18next = require('./i18next-74ff3413.js');
|
|
8
8
|
const PlusIcon = require('./PlusIcon-5e585127.js');
|
|
9
|
-
const customizedSlots = require('./customized-slots-
|
|
10
|
-
const _package = require('./package-
|
|
11
|
-
const index$1 = require('./index-
|
|
9
|
+
const customizedSlots = require('./customized-slots-67b24737.js');
|
|
10
|
+
const _package = require('./package-d6dae17b.js');
|
|
11
|
+
const index$1 = require('./index-4445cb70.js');
|
|
12
12
|
|
|
13
13
|
const BasketIcon = () => (index.h("svg", { width: "25", height: "24", viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
14
14
|
index.h("path", { d: "M7.5 22C6.95 22 6.47917 21.8042 6.0875 21.4125C5.69583 21.0208 5.5 20.55 5.5 20C5.5 19.45 5.69583 18.9792 6.0875 18.5875C6.47917 18.1958 6.95 18 7.5 18C8.05 18 8.52083 18.1958 8.9125 18.5875C9.30417 18.9792 9.5 19.45 9.5 20C9.5 20.55 9.30417 21.0208 8.9125 21.4125C8.52083 21.8042 8.05 22 7.5 22ZM17.5 22C16.95 22 16.4792 21.8042 16.0875 21.4125C15.6958 21.0208 15.5 20.55 15.5 20C15.5 19.45 15.6958 18.9792 16.0875 18.5875C16.4792 18.1958 16.95 18 17.5 18C18.05 18 18.5208 18.1958 18.9125 18.5875C19.3042 18.9792 19.5 19.45 19.5 20C19.5 20.55 19.3042 21.0208 18.9125 21.4125C18.5208 21.8042 18.05 22 17.5 22ZM6.65 6L9.05 11H16.05L18.8 6H6.65ZM5.7 4H20.45C20.8333 4 21.125 4.17083 21.325 4.5125C21.525 4.85417 21.5333 5.2 21.35 5.55L17.8 11.95C17.6167 12.2833 17.3708 12.5417 17.0625 12.725C16.7542 12.9083 16.4167 13 16.05 13H8.6L7.5 15H18.5C18.7833 15 19.0208 15.0958 19.2125 15.2875C19.4042 15.4792 19.5 15.7167 19.5 16C19.5 16.2833 19.4042 16.5208 19.2125 16.7125C19.0208 16.9042 18.7833 17 18.5 17H7.5C6.75 17 6.18333 16.6708 5.8 16.0125C5.41667 15.3542 5.4 14.7 5.75 14.05L7.1 11.6L3.5 4H2.5C2.21667 4 1.97917 3.90417 1.7875 3.7125C1.59583 3.52083 1.5 3.28333 1.5 3C1.5 2.71667 1.59583 2.47917 1.7875 2.2875C1.97917 2.09583 2.21667 2 2.5 2H4.125C4.30833 2 4.48333 2.05 4.65 2.15C4.81667 2.25 4.94167 2.39167 5.025 2.575L5.7 4Z", fill: "#525252" })));
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const search_store = require('./search.store-
|
|
6
|
+
const search_store = require('./search.store-7605f369.js');
|
|
7
7
|
|
|
8
8
|
const vviinnPreloaderCss = ":host{--preloader-size:24px;--preloader-width:calc(var(--preloader-size) / 6);transform-origin:center;animation:rotate 3s linear infinite;border:var(--preloader-width) solid currentColor;border-radius:50%;border-top-color:transparent;display:none;outline:0;width:var(--preloader-size);height:var(--preloader-size);box-sizing:border-box}:host(.active){display:flex}@keyframes rotate{from{transform:rotate(-360deg)}to{transform:rotate(360deg)}}";
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const _package = require('./package-
|
|
6
|
+
const _package = require('./package-d6dae17b.js');
|
|
7
7
|
const VisualSearchIcon = require('./VisualSearchIcon-1180d079.js');
|
|
8
8
|
|
|
9
9
|
const vviinnVprButtonCss = ":host{display:block}";
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const _package = require('./package-
|
|
7
|
-
const customizedSlots = require('./customized-slots-
|
|
6
|
+
const _package = require('./package-d6dae17b.js');
|
|
7
|
+
const customizedSlots = require('./customized-slots-67b24737.js');
|
|
8
8
|
const constants = require('./constants-7684cbfc.js');
|
|
9
9
|
|
|
10
10
|
const CameraIcon = () => (index.h("svg", { width: "22", height: "20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const search_store = require('./search.store-
|
|
6
|
+
const search_store = require('./search.store-7605f369.js');
|
|
7
7
|
const i18next = require('./i18next-74ff3413.js');
|
|
8
|
-
const _package = require('./package-
|
|
9
|
-
const customizedSlots = require('./customized-slots-
|
|
10
|
-
const index$1 = require('./index-
|
|
8
|
+
const _package = require('./package-d6dae17b.js');
|
|
9
|
+
const customizedSlots = require('./customized-slots-67b24737.js');
|
|
10
|
+
const index$1 = require('./index-4445cb70.js');
|
|
11
11
|
const constants = require('./constants-7684cbfc.js');
|
|
12
12
|
|
|
13
13
|
const CameraActionIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" },
|
|
@@ -98,9 +98,6 @@ var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
|
98
98
|
}
|
|
99
99
|
return t;
|
|
100
100
|
};
|
|
101
|
-
const filterInt = (value) => /^[-+]?(\d+|Infinity)$/.test(value) ? Number(value) : NaN;
|
|
102
|
-
const notEmptyString = (s) => !search_store.isEmpty(s);
|
|
103
|
-
const notNan = (n) => !isNaN(n);
|
|
104
101
|
const checkDeviceType = () => {
|
|
105
102
|
const ua = navigator.userAgent;
|
|
106
103
|
if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {
|
|
@@ -395,12 +392,11 @@ const VviinnVpsWidget = class {
|
|
|
395
392
|
search_store.state.locale = this.locale;
|
|
396
393
|
this.cameraAvailable =
|
|
397
394
|
!!navigator.mediaDevices && !!navigator.mediaDevices.getUserMedia;
|
|
398
|
-
const campaignId = search_store._function.pipe(this.campaignId, search_store.Option.fromNullable, search_store.Option.chain(search_store.Option.fromPredicate(notEmptyString)), search_store.Option.map(filterInt), search_store.Option.chain(search_store.Option.fromPredicate(notNan)), search_store.Option.map((s) => `${s}`));
|
|
399
395
|
if (this.excluded) {
|
|
400
396
|
this.excluded = search_store.parseExcluded(this.excluded);
|
|
401
397
|
}
|
|
402
398
|
search_store.searchState.token = this.token;
|
|
403
|
-
search_store.searchState.campaignId = campaignId;
|
|
399
|
+
search_store.searchState.campaignId = this.campaignId;
|
|
404
400
|
search_store.searchState.excluded = this.excluded;
|
|
405
401
|
this.uiSessionId = index$1.v4();
|
|
406
402
|
this.trackingApi = index$1.createTrackingApi(this.apiPath, this.token);
|
|
@@ -5,13 +5,6 @@ import { SlotSkeleton } from "../customized-slots";
|
|
|
5
5
|
import { campaignTypeNames } from "../../campaign/Campaign";
|
|
6
6
|
import { DEFAULT_EXAMPLE_IMAGE } from "../../assets/constants";
|
|
7
7
|
/**
|
|
8
|
-
* @slot vviinn-onboarding-title - Title of onboarding section.
|
|
9
|
-
* @slot onboarding-card-1-icon - Icon (or other graphics) on the first onboarding slide.
|
|
10
|
-
* @slot onboarding-card-1-text - Text content of first onboarding slide.
|
|
11
|
-
* @slot onboarding-card-2-icon - Icon (or other graphics) on the second onboarding slide.
|
|
12
|
-
* @slot onboarding-card-2-text - Text content of second onboarding slide.
|
|
13
|
-
* @slot onboarding-card-3-icon - Icon (or other graphics) on the third onboarding slide.
|
|
14
|
-
* @slot onboarding-card-3-text - Text content of third onboarding slide.
|
|
15
8
|
* @slot vviinn-teaser-text - Text on widget's main screen.
|
|
16
9
|
* @slot vviinn-image-upload-button-text - Title of Upload Button.
|
|
17
10
|
* @slot vviinn-show-files-button-text - Title of Show Files Button.
|
|
@@ -12,8 +12,6 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
import { Host, h, } from "@stencil/core";
|
|
14
14
|
import * as O from "fp-ts/lib/Option";
|
|
15
|
-
import { pipe } from "fp-ts/lib/function";
|
|
16
|
-
import { isEmpty } from "fp-ts/string";
|
|
17
15
|
import { v4 as uuidv4 } from "uuid";
|
|
18
16
|
import i18next from "i18next";
|
|
19
17
|
import { version } from "../../../package.json";
|
|
@@ -29,9 +27,6 @@ import { resources } from "../../locale/resources-vps";
|
|
|
29
27
|
import { CameraActionIcon, UploadActionIcon } from "../vviinn-icons";
|
|
30
28
|
import { DEFAULT_EXAMPLE_IMAGE } from "../../assets/constants";
|
|
31
29
|
import { videoStreamSettings } from "../../video/settings";
|
|
32
|
-
const filterInt = (value) => /^[-+]?(\d+|Infinity)$/.test(value) ? Number(value) : NaN;
|
|
33
|
-
const notEmptyString = (s) => !isEmpty(s);
|
|
34
|
-
const notNan = (n) => !isNaN(n);
|
|
35
30
|
const checkDeviceType = () => {
|
|
36
31
|
const ua = navigator.userAgent;
|
|
37
32
|
if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {
|
|
@@ -66,13 +61,6 @@ const checkDeviceType = () => {
|
|
|
66
61
|
* @part title - Title inside Product Card.
|
|
67
62
|
* @part text-search-input - Text search input.
|
|
68
63
|
|
|
69
|
-
* @slot vviinn-onboarding-title - Title of onboarding section.
|
|
70
|
-
* @slot onboarding-card-1-icon - Icon (or other graphics) on the first onboarding slide.
|
|
71
|
-
* @slot onboarding-card-1-text - Text content of first onboarding slide.
|
|
72
|
-
* @slot onboarding-card-2-icon - Icon (or other graphics) on the second onboarding slide.
|
|
73
|
-
* @slot onboarding-card-2-text - Text content of second onboarding slide.
|
|
74
|
-
* @slot onboarding-card-3-icon - Icon (or other graphics) on the third onboarding slide.
|
|
75
|
-
* @slot onboarding-card-3-text - Text content of third onboarding slide.
|
|
76
64
|
* @slot vviinn-teaser-text - Text on widget's main screen.
|
|
77
65
|
* @slot vviinn-image-upload-button-text - Title of Upload Button.
|
|
78
66
|
* @slot vviinn-image-upload-icon - Icon of Upload Button.
|
|
@@ -354,12 +342,11 @@ export class VviinnVpsWidget {
|
|
|
354
342
|
state.locale = this.locale;
|
|
355
343
|
this.cameraAvailable =
|
|
356
344
|
!!navigator.mediaDevices && !!navigator.mediaDevices.getUserMedia;
|
|
357
|
-
const campaignId = pipe(this.campaignId, O.fromNullable, O.chain(O.fromPredicate(notEmptyString)), O.map(filterInt), O.chain(O.fromPredicate(notNan)), O.map((s) => `${s}`));
|
|
358
345
|
if (this.excluded) {
|
|
359
346
|
this.excluded = parseExcluded(this.excluded);
|
|
360
347
|
}
|
|
361
348
|
searchState.token = this.token;
|
|
362
|
-
searchState.campaignId = campaignId;
|
|
349
|
+
searchState.campaignId = this.campaignId;
|
|
363
350
|
searchState.excluded = this.excluded;
|
|
364
351
|
this.uiSessionId = uuidv4();
|
|
365
352
|
this.trackingApi = createTrackingApi(this.apiPath, this.token);
|
|
@@ -16,9 +16,9 @@ export const detectedObjectEq = {
|
|
|
16
16
|
x.rectangle.height === y.rectangle.height &&
|
|
17
17
|
x.rectangle.width === y.rectangle.width,
|
|
18
18
|
};
|
|
19
|
-
export const imageSearchSessionClient = (initialData, campaignId
|
|
19
|
+
export const imageSearchSessionClient = (initialData, campaignId, excludedFilters) => {
|
|
20
20
|
const searchUrl = "search/session";
|
|
21
|
-
const requestUrl = pipe(campaignId, O.fold(() => {
|
|
21
|
+
const requestUrl = pipe(O.fromNullable(campaignId), O.fold(() => {
|
|
22
22
|
const params = [];
|
|
23
23
|
if (excludedFilters)
|
|
24
24
|
params.push(excludedFilters);
|
|
@@ -17,13 +17,14 @@ import { imageFormFromFile } from "../Image/form";
|
|
|
17
17
|
import { checkFileWithExtention, resizeFileTo } from "./file-processing";
|
|
18
18
|
import { imageFromFileTask } from "../Image/fromFile";
|
|
19
19
|
const RESIZED_IMAGE_WIDTH = 500;
|
|
20
|
+
const HI_RES_RESIZED_IMAGE_WIDTH = 1024;
|
|
20
21
|
const makeAuthorizedRequest = (token) => pipe(token, processBearerToken, E.map((headers) => {
|
|
21
22
|
return {
|
|
22
23
|
headers,
|
|
23
24
|
};
|
|
24
25
|
}));
|
|
25
26
|
const { state, onChange } = createStore({
|
|
26
|
-
campaignId:
|
|
27
|
+
campaignId: "",
|
|
27
28
|
excluded: "",
|
|
28
29
|
results: [],
|
|
29
30
|
filters: [],
|
|
@@ -60,7 +61,7 @@ const detectObjects = async (data) => {
|
|
|
60
61
|
await pipe(getLink(data, "detectedObjects"), TE.fromOption(() => error), TE.chain(makeLinkRequest), TE.map((objects) => (state.detectedObjects = foldValueObject(objects))))();
|
|
61
62
|
state.objectDetectionInProgress = false;
|
|
62
63
|
};
|
|
63
|
-
export const
|
|
64
|
+
export const uploadHiResFile = async (sessionResponse, file) => {
|
|
64
65
|
const ionFile = await F.fromFile(file);
|
|
65
66
|
const formPayload = {
|
|
66
67
|
image: ionFile,
|
|
@@ -105,10 +106,7 @@ export const uploadFile = (file) => {
|
|
|
105
106
|
const uploadText = (query) => {
|
|
106
107
|
state.searchType = "text";
|
|
107
108
|
state.loading = true;
|
|
108
|
-
const body = JSON.stringify({
|
|
109
|
-
query,
|
|
110
|
-
campaign: O.getOrElse(() => "")(state.campaignId),
|
|
111
|
-
});
|
|
109
|
+
const body = JSON.stringify(Object.assign({ query }, (state.campaignId.length ? { campaign: state.campaignId } : {})));
|
|
112
110
|
const tokenWithBody = sequenceToEither(processBearerToken(state.token), E.right(body));
|
|
113
111
|
return pipe(tokenWithBody, E.map(([headers, body]) => {
|
|
114
112
|
headers.set("Content-Type", "application/json");
|
|
@@ -157,9 +155,12 @@ const setSelectedImage = (image) => {
|
|
|
157
155
|
export const processSelectedFile = async (file) => {
|
|
158
156
|
const originFile = checkFileWithExtention(file);
|
|
159
157
|
const fileResizer = resizeFileTo(RESIZED_IMAGE_WIDTH);
|
|
158
|
+
const hiResFileResizer = resizeFileTo(HI_RES_RESIZED_IMAGE_WIDTH);
|
|
160
159
|
const resizeFileTask = pipe(originFile, TE.fromEither, TE.chainTaskK(fileResizer));
|
|
160
|
+
const resizeHiResFileTask = pipe(originFile, TE.fromEither, TE.chainTaskK(hiResFileResizer));
|
|
161
161
|
const session = await pipe(resizeFileTask, TE.chain(uploadFile))();
|
|
162
|
-
pipe(sequenceToEither(session, originFile), E.map(([sessionObject, file]) => uploadHiresFile(sessionObject, file)));
|
|
163
162
|
await pipe(resizeFileTask, TE.chainTaskK(imageFromFileTask), TE.map(setSelectedImage))();
|
|
163
|
+
const resizedHiResFile = await resizeHiResFileTask();
|
|
164
|
+
pipe(sequenceToEither(session, resizedHiResFile), E.map(([sessionObject, file]) => uploadHiResFile(sessionObject, file)));
|
|
164
165
|
return session;
|
|
165
166
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as commonjsGlobal, o as createCommonjsModule } from './search.store-
|
|
1
|
+
import { n as commonjsGlobal, o as createCommonjsModule } from './search.store-eaa5f165.js';
|
|
2
2
|
|
|
3
3
|
// Unique ID creation requires a high quality random # generator. In the browser we therefore
|
|
4
4
|
// require the crypto API and do not support built-in fallback to lower quality random number
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-1f3eaf12.js';
|
|
2
|
-
import { s as searchState, a as _function, O as Option,
|
|
2
|
+
import { s as searchState, a as _function, O as Option, q as fromAlt, r as foldValueObject, u as scaleWithSized, v as center, w as makeRectangularSearchRequest, x as detectedObjectEq, y as toFile, z as processSelectedFile, E as Either, B as match, o as createCommonjsModule, n as commonjsGlobal, C as sequenceToOption, D as fromImage, F as dimensionsFromImage, G as scaleByLargestSide, N as NonEmptyArray, H as processSelectedText } from './search.store-eaa5f165.js';
|
|
3
3
|
import { i as instance } from './i18next-387f2b0a.js';
|
|
4
4
|
import { P as PlusIcon } from './PlusIcon-af795e23.js';
|
|
5
|
-
import { s as slotChangeListener, c as campaignTypeNames } from './customized-slots-
|
|
5
|
+
import { s as slotChangeListener, c as campaignTypeNames } from './customized-slots-e56251a2.js';
|
|
6
6
|
|
|
7
7
|
const ArrowIcon = () => (h("svg", { width: "12", height: "20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
8
8
|
h("path", { d: "M0 10 10 0l1.4 1.4L2.8 10l8.6 8.6L10 20 0 10Z" })));
|
|
@@ -16401,22 +16401,6 @@ var Monoid = {
|
|
|
16401
16401
|
concat: Semigroup.concat,
|
|
16402
16402
|
empty: empty
|
|
16403
16403
|
};
|
|
16404
|
-
// -------------------------------------------------------------------------------------
|
|
16405
|
-
// utils
|
|
16406
|
-
// -------------------------------------------------------------------------------------
|
|
16407
|
-
/**
|
|
16408
|
-
* Test whether a `string` is empty.
|
|
16409
|
-
*
|
|
16410
|
-
* @example
|
|
16411
|
-
* import * as S from 'fp-ts/string'
|
|
16412
|
-
* import { pipe } from 'fp-ts/function'
|
|
16413
|
-
*
|
|
16414
|
-
* assert.deepStrictEqual(pipe('', S.isEmpty), true)
|
|
16415
|
-
* assert.deepStrictEqual(pipe('a', S.isEmpty), false)
|
|
16416
|
-
*
|
|
16417
|
-
* @since 2.10.0
|
|
16418
|
-
*/
|
|
16419
|
-
var isEmpty$1 = function (s) { return s.length === 0; };
|
|
16420
16404
|
|
|
16421
16405
|
const basicErrorFromResponse = (error) => {
|
|
16422
16406
|
return {
|
|
@@ -16502,9 +16486,9 @@ const detectedObjectEq = {
|
|
|
16502
16486
|
x.rectangle.height === y.rectangle.height &&
|
|
16503
16487
|
x.rectangle.width === y.rectangle.width,
|
|
16504
16488
|
};
|
|
16505
|
-
const imageSearchSessionClient = (initialData, campaignId
|
|
16489
|
+
const imageSearchSessionClient = (initialData, campaignId, excludedFilters) => {
|
|
16506
16490
|
const searchUrl = "search/session";
|
|
16507
|
-
const requestUrl = _function.pipe(campaignId, fold(() => {
|
|
16491
|
+
const requestUrl = _function.pipe(fromNullable(campaignId), fold(() => {
|
|
16508
16492
|
const params = [];
|
|
16509
16493
|
if (excludedFilters)
|
|
16510
16494
|
params.push(excludedFilters);
|
|
@@ -17256,13 +17240,14 @@ const optionalResize = (image, size) => image.naturalWidth > size ? resizeImage(
|
|
|
17256
17240
|
const resizeFileTo = (size) => (file) => _function.pipe(file, imageFromFileTask, Task.map((image) => optionalResize(image, size)), Task.chain(convertB64toFileTask));
|
|
17257
17241
|
|
|
17258
17242
|
const RESIZED_IMAGE_WIDTH = 500;
|
|
17243
|
+
const HI_RES_RESIZED_IMAGE_WIDTH = 1024;
|
|
17259
17244
|
const makeAuthorizedRequest = (token) => pipe(token, processBearerToken, map$4((headers) => {
|
|
17260
17245
|
return {
|
|
17261
17246
|
headers,
|
|
17262
17247
|
};
|
|
17263
17248
|
}));
|
|
17264
17249
|
const { state, onChange } = createStore({
|
|
17265
|
-
campaignId:
|
|
17250
|
+
campaignId: "",
|
|
17266
17251
|
excluded: "",
|
|
17267
17252
|
results: [],
|
|
17268
17253
|
filters: [],
|
|
@@ -17299,7 +17284,7 @@ const detectObjects = async (data) => {
|
|
|
17299
17284
|
await pipe(getLink(data, "detectedObjects"), fromOption(() => error), chain(makeLinkRequest), map((objects) => (state.detectedObjects = foldValueObject(objects))))();
|
|
17300
17285
|
state.objectDetectionInProgress = false;
|
|
17301
17286
|
};
|
|
17302
|
-
const
|
|
17287
|
+
const uploadHiResFile = async (sessionResponse, file) => {
|
|
17303
17288
|
const ionFile = await fromFile(file);
|
|
17304
17289
|
const formPayload = {
|
|
17305
17290
|
image: ionFile,
|
|
@@ -17344,10 +17329,7 @@ const uploadFile = (file) => {
|
|
|
17344
17329
|
const uploadText = (query) => {
|
|
17345
17330
|
state.searchType = "text";
|
|
17346
17331
|
state.loading = true;
|
|
17347
|
-
const body = JSON.stringify({
|
|
17348
|
-
query,
|
|
17349
|
-
campaign: Option.getOrElse(() => "")(state.campaignId),
|
|
17350
|
-
});
|
|
17332
|
+
const body = JSON.stringify(Object.assign({ query }, (state.campaignId.length ? { campaign: state.campaignId } : {})));
|
|
17351
17333
|
const tokenWithBody = sequenceToEither(processBearerToken(state.token), right(body));
|
|
17352
17334
|
return pipe(tokenWithBody, map$4(([headers, body]) => {
|
|
17353
17335
|
headers.set("Content-Type", "application/json");
|
|
@@ -17396,11 +17378,14 @@ const setSelectedImage = (image) => {
|
|
|
17396
17378
|
const processSelectedFile = async (file) => {
|
|
17397
17379
|
const originFile = checkFileWithExtention(file);
|
|
17398
17380
|
const fileResizer = resizeFileTo(RESIZED_IMAGE_WIDTH);
|
|
17381
|
+
const hiResFileResizer = resizeFileTo(HI_RES_RESIZED_IMAGE_WIDTH);
|
|
17399
17382
|
const resizeFileTask = pipe(originFile, fromEither, chainTaskK(fileResizer));
|
|
17383
|
+
const resizeHiResFileTask = pipe(originFile, fromEither, chainTaskK(hiResFileResizer));
|
|
17400
17384
|
const session = await pipe(resizeFileTask, chain(uploadFile))();
|
|
17401
|
-
pipe(sequenceToEither(session, originFile), map$4(([sessionObject, file]) => uploadHiresFile(sessionObject, file)));
|
|
17402
17385
|
await pipe(resizeFileTask, chainTaskK(imageFromFileTask), map(setSelectedImage))();
|
|
17386
|
+
const resizedHiResFile = await resizeHiResFileTask();
|
|
17387
|
+
pipe(sequenceToEither(session, resizedHiResFile), map$4(([sessionObject, file]) => uploadHiResFile(sessionObject, file)));
|
|
17403
17388
|
return session;
|
|
17404
17389
|
};
|
|
17405
17390
|
|
|
17406
|
-
export { Apply as A,
|
|
17391
|
+
export { Apply as A, match$1 as B, sequenceToOption as C, fromImage as D, Either as E, dimensionsFromImage as F, scaleByLargestSide as G, processSelectedText as H, NonEmptyArray as N, Option as O, Semigroup$1 as S, TaskEither as T, _Array as _, _function as a, state$1 as b, chainW as c, createInitGetRequest as d, map$3 as e, fromEither as f, getApiPath as g, has as h, match as i, arrayToQueryString as j, parseExcluded as k, checkEmpryString as l, makeRequest as m, commonjsGlobal as n, createCommonjsModule as o, pipe as p, fromAlt as q, foldValueObject as r, searchState as s, tuple as t, scaleWithSized as u, center as v, makeRectangularSearchRequest as w, detectedObjectEq as x, toFile as y, processSelectedFile as z };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { h, r as registerInstance, H as Host, g as getElement, c as createEvent, F as Fragment } from './index-1f3eaf12.js';
|
|
2
|
-
import { _ as _Array, O as Option, S as Semigroup, a as _function, h as has, t as tuple, E as Either, s as searchState, b as state, p as pipe, c as chainW, m as makeRequest, f as fromEither, g as getApiPath, d as createInitGetRequest, A as Apply, e as map, i as match, j as arrayToQueryString, k as parseExcluded, T as TaskEither, l as checkEmpryString } from './search.store-
|
|
2
|
+
import { _ as _Array, O as Option, S as Semigroup, a as _function, h as has, t as tuple, E as Either, s as searchState, b as state, p as pipe, c as chainW, m as makeRequest, f as fromEither, g as getApiPath, d as createInitGetRequest, A as Apply, e as map, i as match, j as arrayToQueryString, k as parseExcluded, T as TaskEither, l as checkEmpryString } from './search.store-eaa5f165.js';
|
|
3
3
|
import { i as instance } from './i18next-387f2b0a.js';
|
|
4
4
|
import { P as PlusIcon } from './PlusIcon-af795e23.js';
|
|
5
|
-
import { s as slotChangeListener, c as campaignTypeNames, f as fromString, a as fold, S as SlotSkeleton } from './customized-slots-
|
|
6
|
-
import { v as version } from './package-
|
|
7
|
-
import { v as v4, c as createTrackingApi, a as createAddToBasketVpcEvent, b as createAddToBasketVprEvent, d as createWidgetVpcEvent, e as createWidgetVprEvent, f as createResultVpcEventByType, g as createResultVprEventByType, h as createProductVpcEventByType, i as createProductVprEventByType } from './index-
|
|
5
|
+
import { s as slotChangeListener, c as campaignTypeNames, f as fromString, a as fold, S as SlotSkeleton } from './customized-slots-e56251a2.js';
|
|
6
|
+
import { v as version } from './package-3c563a3a.js';
|
|
7
|
+
import { v as v4, c as createTrackingApi, a as createAddToBasketVpcEvent, b as createAddToBasketVprEvent, d as createWidgetVpcEvent, e as createWidgetVprEvent, f as createResultVpcEventByType, g as createResultVprEventByType, h as createProductVpcEventByType, i as createProductVprEventByType } from './index-ff13425d.js';
|
|
8
8
|
|
|
9
9
|
const BasketIcon = () => (h("svg", { width: "25", height: "24", viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
10
10
|
h("path", { d: "M7.5 22C6.95 22 6.47917 21.8042 6.0875 21.4125C5.69583 21.0208 5.5 20.55 5.5 20C5.5 19.45 5.69583 18.9792 6.0875 18.5875C6.47917 18.1958 6.95 18 7.5 18C8.05 18 8.52083 18.1958 8.9125 18.5875C9.30417 18.9792 9.5 19.45 9.5 20C9.5 20.55 9.30417 21.0208 8.9125 21.4125C8.52083 21.8042 8.05 22 7.5 22ZM17.5 22C16.95 22 16.4792 21.8042 16.0875 21.4125C15.6958 21.0208 15.5 20.55 15.5 20C15.5 19.45 15.6958 18.9792 16.0875 18.5875C16.4792 18.1958 16.95 18 17.5 18C18.05 18 18.5208 18.1958 18.9125 18.5875C19.3042 18.9792 19.5 19.45 19.5 20C19.5 20.55 19.3042 21.0208 18.9125 21.4125C18.5208 21.8042 18.05 22 17.5 22ZM6.65 6L9.05 11H16.05L18.8 6H6.65ZM5.7 4H20.45C20.8333 4 21.125 4.17083 21.325 4.5125C21.525 4.85417 21.5333 5.2 21.35 5.55L17.8 11.95C17.6167 12.2833 17.3708 12.5417 17.0625 12.725C16.7542 12.9083 16.4167 13 16.05 13H8.6L7.5 15H18.5C18.7833 15 19.0208 15.0958 19.2125 15.2875C19.4042 15.4792 19.5 15.7167 19.5 16C19.5 16.2833 19.4042 16.5208 19.2125 16.7125C19.0208 16.9042 18.7833 17 18.5 17H7.5C6.75 17 6.18333 16.6708 5.8 16.0125C5.41667 15.3542 5.4 14.7 5.75 14.05L7.1 11.6L3.5 4H2.5C2.21667 4 1.97917 3.90417 1.7875 3.7125C1.59583 3.52083 1.5 3.28333 1.5 3C1.5 2.71667 1.59583 2.47917 1.7875 2.2875C1.97917 2.09583 2.21667 2 2.5 2H4.125C4.30833 2 4.48333 2.05 4.65 2.15C4.81667 2.25 4.94167 2.39167 5.025 2.575L5.7 4Z", fill: "#525252" })));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, h, H as Host } from './index-1f3eaf12.js';
|
|
2
|
-
import { s as searchState } from './search.store-
|
|
2
|
+
import { s as searchState } from './search.store-eaa5f165.js';
|
|
3
3
|
|
|
4
4
|
const vviinnPreloaderCss = ":host{--preloader-size:24px;--preloader-width:calc(var(--preloader-size) / 6);transform-origin:center;animation:rotate 3s linear infinite;border:var(--preloader-width) solid currentColor;border-radius:50%;border-top-color:transparent;display:none;outline:0;width:var(--preloader-size);height:var(--preloader-size);box-sizing:border-box}:host(.active){display:flex}@keyframes rotate{from{transform:rotate(-360deg)}to{transform:rotate(360deg)}}";
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-1f3eaf12.js';
|
|
2
|
-
import { v as version } from './package-
|
|
2
|
+
import { v as version } from './package-3c563a3a.js';
|
|
3
3
|
import { V as VisualSearchIcon } from './VisualSearchIcon-13f7da6a.js';
|
|
4
4
|
|
|
5
5
|
const vviinnVprButtonCss = ":host{display:block}";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-1f3eaf12.js';
|
|
2
|
-
import { v as version } from './package-
|
|
3
|
-
import { c as campaignTypeNames, S as SlotSkeleton } from './customized-slots-
|
|
2
|
+
import { v as version } from './package-3c563a3a.js';
|
|
3
|
+
import { c as campaignTypeNames, S as SlotSkeleton } from './customized-slots-e56251a2.js';
|
|
4
4
|
import { D as DEFAULT_EXAMPLE_IMAGE } from './constants-8bf233a9.js';
|
|
5
5
|
|
|
6
6
|
const CameraIcon = () => (h("svg", { width: "22", height: "20", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-1f3eaf12.js';
|
|
2
|
-
import { s as searchState, b as state,
|
|
2
|
+
import { s as searchState, b as state, k as parseExcluded, O as Option } from './search.store-eaa5f165.js';
|
|
3
3
|
import { i as instance } from './i18next-387f2b0a.js';
|
|
4
|
-
import { v as version } from './package-
|
|
5
|
-
import { c as campaignTypeNames, s as slotChangeListener, S as SlotSkeleton } from './customized-slots-
|
|
6
|
-
import { j as createSearchEvent, k as createFilterEvent, v as v4, c as createTrackingApi, l as createWidgetVpsEvent, m as createProductVpsEventByType, n as createResultVpsEventByType } from './index-
|
|
4
|
+
import { v as version } from './package-3c563a3a.js';
|
|
5
|
+
import { c as campaignTypeNames, s as slotChangeListener, S as SlotSkeleton } from './customized-slots-e56251a2.js';
|
|
6
|
+
import { j as createSearchEvent, k as createFilterEvent, v as v4, c as createTrackingApi, l as createWidgetVpsEvent, m as createProductVpsEventByType, n as createResultVpsEventByType } from './index-ff13425d.js';
|
|
7
7
|
import { D as DEFAULT_EXAMPLE_IMAGE } from './constants-8bf233a9.js';
|
|
8
8
|
|
|
9
9
|
const CameraActionIcon = () => (h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" },
|
|
@@ -94,9 +94,6 @@ var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
|
94
94
|
}
|
|
95
95
|
return t;
|
|
96
96
|
};
|
|
97
|
-
const filterInt = (value) => /^[-+]?(\d+|Infinity)$/.test(value) ? Number(value) : NaN;
|
|
98
|
-
const notEmptyString = (s) => !isEmpty(s);
|
|
99
|
-
const notNan = (n) => !isNaN(n);
|
|
100
97
|
const checkDeviceType = () => {
|
|
101
98
|
const ua = navigator.userAgent;
|
|
102
99
|
if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {
|
|
@@ -391,12 +388,11 @@ const VviinnVpsWidget = class {
|
|
|
391
388
|
state.locale = this.locale;
|
|
392
389
|
this.cameraAvailable =
|
|
393
390
|
!!navigator.mediaDevices && !!navigator.mediaDevices.getUserMedia;
|
|
394
|
-
const campaignId = _function.pipe(this.campaignId, Option.fromNullable, Option.chain(Option.fromPredicate(notEmptyString)), Option.map(filterInt), Option.chain(Option.fromPredicate(notNan)), Option.map((s) => `${s}`));
|
|
395
391
|
if (this.excluded) {
|
|
396
392
|
this.excluded = parseExcluded(this.excluded);
|
|
397
393
|
}
|
|
398
394
|
searchState.token = this.token;
|
|
399
|
-
searchState.campaignId = campaignId;
|
|
395
|
+
searchState.campaignId = this.campaignId;
|
|
400
396
|
searchState.excluded = this.excluded;
|
|
401
397
|
this.uiSessionId = v4();
|
|
402
398
|
this.trackingApi = createTrackingApi(this.apiPath, this.token);
|
|
@@ -2,13 +2,6 @@ import { EventEmitter } from "../../stencil-public-runtime";
|
|
|
2
2
|
import { BasicEventData, ProductCardEventData, SelectFilterEventData, SelectObjectEventData } from "../../recommendation/events";
|
|
3
3
|
import { Locale } from "../../locale";
|
|
4
4
|
/**
|
|
5
|
-
* @slot vviinn-onboarding-title - Title of onboarding section.
|
|
6
|
-
* @slot onboarding-card-1-icon - Icon (or other graphics) on the first onboarding slide.
|
|
7
|
-
* @slot onboarding-card-1-text - Text content of first onboarding slide.
|
|
8
|
-
* @slot onboarding-card-2-icon - Icon (or other graphics) on the second onboarding slide.
|
|
9
|
-
* @slot onboarding-card-2-text - Text content of second onboarding slide.
|
|
10
|
-
* @slot onboarding-card-3-icon - Icon (or other graphics) on the third onboarding slide.
|
|
11
|
-
* @slot onboarding-card-3-text - Text content of third onboarding slide.
|
|
12
5
|
* @slot vviinn-teaser-text - Text on widget's main screen.
|
|
13
6
|
* @slot vviinn-image-upload-button-text - Title of Upload Button.
|
|
14
7
|
* @slot vviinn-show-files-button-text - Title of Show Files Button.
|
|
@@ -28,13 +28,6 @@ type UploadSource = "uploadPhoto" | "startCamera";
|
|
|
28
28
|
* @part title - Title inside Product Card.
|
|
29
29
|
* @part text-search-input - Text search input.
|
|
30
30
|
|
|
31
|
-
* @slot vviinn-onboarding-title - Title of onboarding section.
|
|
32
|
-
* @slot onboarding-card-1-icon - Icon (or other graphics) on the first onboarding slide.
|
|
33
|
-
* @slot onboarding-card-1-text - Text content of first onboarding slide.
|
|
34
|
-
* @slot onboarding-card-2-icon - Icon (or other graphics) on the second onboarding slide.
|
|
35
|
-
* @slot onboarding-card-2-text - Text content of second onboarding slide.
|
|
36
|
-
* @slot onboarding-card-3-icon - Icon (or other graphics) on the third onboarding slide.
|
|
37
|
-
* @slot onboarding-card-3-text - Text content of third onboarding slide.
|
|
38
31
|
* @slot vviinn-teaser-text - Text on widget's main screen.
|
|
39
32
|
* @slot vviinn-image-upload-button-text - Title of Upload Button.
|
|
40
33
|
* @slot vviinn-image-upload-icon - Icon of Upload Button.
|
|
@@ -3,7 +3,6 @@ import { Link } from "../network/ion/Link";
|
|
|
3
3
|
import { Form } from "../network/ion/Form";
|
|
4
4
|
import { Recommendation } from "../recommendation/recommendation";
|
|
5
5
|
import * as TE from "fp-ts/TaskEither";
|
|
6
|
-
import * as O from "fp-ts/Option";
|
|
7
6
|
import { RectangleAlt } from "../geometry/RectangleAlt";
|
|
8
7
|
import { Eq } from "fp-ts/lib/Eq";
|
|
9
8
|
import { BasicError } from "../error";
|
|
@@ -50,6 +49,6 @@ type ContainsHiresImageUpload = {
|
|
|
50
49
|
};
|
|
51
50
|
export type SearchSession = ValueObject<Recommendation[]> & HasFilters & Partial<ContainsDetectedObjects> & ContainsRectangleSearch & ContainsHiresImageUpload;
|
|
52
51
|
export type ObjectsDetectedEvent = CustomEvent<ValueObject<DetectedObject>[]>;
|
|
53
|
-
export declare const imageSearchSessionClient: (initialData: RequestInit, campaignId:
|
|
52
|
+
export declare const imageSearchSessionClient: (initialData: RequestInit, campaignId: string, excludedFilters: string) => TE.TaskEither<BasicError<Response | string>, SearchSession>;
|
|
54
53
|
export declare const textSearchSessionClient: (initialData: RequestInit) => TE.TaskEither<BasicError<Response | string>, TextSearchSession>;
|
|
55
54
|
export {};
|