@threekit-tools/treble 0.0.85 → 0.0.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/components/Accordion/index.d.ts +1 -0
  2. package/dist/components/AttributeValue/index.js +2 -0
  3. package/dist/components/AwaitThreekitLoad/index.d.ts +3 -2
  4. package/dist/components/AwaitThreekitLoad/index.js +7 -2
  5. package/dist/components/BreatheAnimation/index.d.ts +8 -0
  6. package/dist/components/BreatheAnimation/index.js +182 -0
  7. package/dist/components/DraggableHint/draggableIndicator.styles.d.ts +5 -0
  8. package/dist/components/DraggableHint/draggableIndicator.styles.js +35 -0
  9. package/dist/components/DraggableHint/index.d.ts +8 -0
  10. package/dist/components/DraggableHint/index.js +52 -0
  11. package/dist/components/PlayerLoadingCircular/index.d.ts +6 -0
  12. package/dist/components/PlayerLoadingCircular/index.js +18 -0
  13. package/dist/components/PlayerLoadingCircular/playerLoadingCircular.styles.d.ts +7 -0
  14. package/dist/components/PlayerLoadingCircular/playerLoadingCircular.styles.js +17 -0
  15. package/dist/components/PlayerLoadingSpinner/index.d.ts +7 -0
  16. package/dist/components/PlayerLoadingSpinner/index.js +17 -0
  17. package/dist/components/PlayerLoadingSpinner/playerLoadingSpinner.styles.d.ts +4 -0
  18. package/dist/components/PlayerLoadingSpinner/playerLoadingSpinner.styles.js +35 -0
  19. package/dist/components/PortalToArOverlay/index.d.ts +4 -1
  20. package/dist/components/PortalToElement/index.d.ts +1 -0
  21. package/dist/components/ProductLayout/index.d.ts +1 -0
  22. package/dist/components/Skeleton/index.d.ts +18 -0
  23. package/dist/components/Skeleton/index.js +73 -0
  24. package/dist/components/Skeleton/skeleton.styles.d.ts +14 -0
  25. package/dist/components/Skeleton/skeleton.styles.js +43 -0
  26. package/dist/components/Tabs/index.d.ts +1 -0
  27. package/dist/components/TurntableAnimation/index.d.ts +12 -0
  28. package/dist/components/TurntableAnimation/index.js +161 -0
  29. package/dist/components/formComponents.d.ts +2 -2
  30. package/dist/hooks/useAnimationStart/index.d.ts +2 -0
  31. package/dist/hooks/useAnimationStart/index.js +8 -0
  32. package/dist/hooks/useConfigurationLoader/index.js +11 -1
  33. package/dist/hooks/useFirstPlayerInteraction/index.d.ts +6 -0
  34. package/dist/hooks/useFirstPlayerInteraction/index.js +9 -0
  35. package/dist/hooks/useLoadingProgress/index.d.ts +1 -1
  36. package/dist/hooks/useProductCache/index.d.ts +2 -5
  37. package/dist/hooks/useProductCache/index.js +2 -2
  38. package/dist/icons/Draggable.d.ts +3 -0
  39. package/dist/icons/Draggable.js +23 -0
  40. package/dist/icons/index.js +2 -0
  41. package/dist/index.d.ts +10 -1
  42. package/dist/index.js +20 -2
  43. package/dist/store/index.d.ts +8 -29
  44. package/dist/store/index.js +10 -6
  45. package/dist/store/treble.d.ts +8 -3
  46. package/dist/store/treble.js +49 -9
  47. package/dist/types.d.ts +17 -7
  48. package/dist/types.js +5 -5
  49. package/package.json +3 -2
@@ -34,18 +34,22 @@ var store = (0, toolkit_1.configureStore)({
34
34
  wishlist: wishlist_1.default,
35
35
  price: price_1.default,
36
36
  },
37
- middleware: constants_1.TREBLE_DEBUG
38
- ? function (getDefaultMiddleware) { return getDefaultMiddleware().concat(redux_logger_1.default); }
39
- : function (getDefaultMiddleware) { return getDefaultMiddleware(); },
37
+ middleware: function (getDefaultMiddleware) {
38
+ return constants_1.TREBLE_DEBUG
39
+ ? getDefaultMiddleware().concat(redux_logger_1.default)
40
+ : getDefaultMiddleware();
41
+ },
40
42
  });
41
43
  var createStore = function (reducer) {
42
44
  if (!reducer)
43
45
  return store;
44
46
  return (0, toolkit_1.configureStore)({
45
47
  reducer: __assign(__assign({}, reducer), { treble: treble_1.default, product: product_1.default, attributes: attributes_1.default, translations: translations_1.default, wishlist: wishlist_1.default, price: price_1.default }),
46
- middleware: constants_1.TREBLE_DEBUG
47
- ? function (getDefaultMiddleware) { return getDefaultMiddleware().concat(redux_logger_1.default); }
48
- : function (getDefaultMiddleware) { return getDefaultMiddleware(); },
48
+ middleware: function (getDefaultMiddleware) {
49
+ return constants_1.TREBLE_DEBUG
50
+ ? getDefaultMiddleware().concat(redux_logger_1.default)
51
+ : getDefaultMiddleware();
52
+ },
49
53
  });
50
54
  };
51
55
  exports.createStore = createStore;
@@ -5,7 +5,6 @@ export interface IPlayerInit {
5
5
  authToken: string;
6
6
  assetId: string;
7
7
  stageId?: string;
8
- orgId: string;
9
8
  playerConfig: IPlayerConfig;
10
9
  initialConfiguration?: IConfiguration;
11
10
  }
@@ -32,9 +31,11 @@ export interface TrebleState {
32
31
  threekitEnv: string;
33
32
  isPlayerLoading: boolean;
34
33
  isThreekitInitialized: boolean;
34
+ isFirstRenderComplete: boolean;
35
35
  playerElId: undefined | string;
36
36
  notifications: boolean;
37
- loadingProgress: number;
37
+ loadingProgress: undefined | number;
38
+ awaitingFirstInteraction: undefined | boolean;
38
39
  }
39
40
  export interface NotificationEvent extends Event {
40
41
  detail: {
@@ -47,16 +48,20 @@ interface EventHandlers {
47
48
  }
48
49
  export declare const setThreekitEnv: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>;
49
50
  export declare const setThreekitInitialized: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>;
51
+ export declare const setIsFirstRenderComplete: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>;
50
52
  export declare const setPlayerLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>;
51
53
  export declare const setPlayerElement: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>;
52
54
  export declare const reloadTreble: import("@reduxjs/toolkit").ActionCreatorWithPayload<Partial<TrebleState>, string>;
53
55
  export declare const updateLoadingProgress: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, string>;
56
+ export declare const setPlayerInteraction: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>;
54
57
  declare const reducer: import("redux").Reducer<TrebleState, import("redux").AnyAction>;
55
58
  export declare const getThreekitEnv: (state: RootState) => string;
56
59
  export declare const isThreekitInitialized: (state: RootState) => boolean;
60
+ export declare const isFirstRenderComplete: (state: RootState) => boolean;
57
61
  export declare const isPlayerLoading: (state: RootState) => boolean;
58
62
  export declare const getPlayerElementId: (state: RootState) => undefined | string;
59
- export declare const getLoadingProgress: (state: RootState) => number;
63
+ export declare const getLoadingProgress: (state: RootState) => undefined | number;
64
+ export declare const getPlayerInteraction: (state: RootState) => undefined | boolean;
60
65
  export declare const initPlayer: (config: IPlayerInit) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
61
66
  export declare const launch: (launchConfig?: Partial<ILaunchConfig>) => (dispatch: ThreekitDispatch) => Promise<void>;
62
67
  export declare const unloadPlayer: () => (dispatch: ThreekitDispatch) => Promise<void>;
@@ -50,12 +50,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.reloadPlayer = exports.unloadPlayer = exports.launch = exports.initPlayer = exports.getLoadingProgress = exports.getPlayerElementId = exports.isPlayerLoading = exports.isThreekitInitialized = exports.getThreekitEnv = exports.updateLoadingProgress = exports.reloadTreble = exports.setPlayerElement = exports.setPlayerLoading = exports.setThreekitInitialized = exports.setThreekitEnv = void 0;
53
+ exports.reloadPlayer = exports.unloadPlayer = exports.launch = exports.initPlayer = exports.getPlayerInteraction = exports.getLoadingProgress = exports.getPlayerElementId = exports.isPlayerLoading = exports.isFirstRenderComplete = exports.isThreekitInitialized = exports.getThreekitEnv = exports.setPlayerInteraction = exports.updateLoadingProgress = exports.reloadTreble = exports.setPlayerElement = exports.setPlayerLoading = exports.setIsFirstRenderComplete = exports.setThreekitInitialized = exports.setThreekitEnv = void 0;
54
54
  var connection_1 = __importDefault(require("../connection"));
55
55
  var toolkit_1 = require("@reduxjs/toolkit");
56
56
  var api_1 = __importDefault(require("../api"));
57
57
  var utils_1 = require("../utils");
58
58
  var constants_1 = require("../constants");
59
+ var types_1 = require("../types");
59
60
  var Treble_1 = __importDefault(require("../Treble"));
60
61
  var attributes_1 = require("./attributes");
61
62
  var price_1 = require("./price");
@@ -84,17 +85,21 @@ var EVENTS = {};
84
85
  var initialState = {
85
86
  threekitEnv: 'preview',
86
87
  isThreekitInitialized: false,
88
+ isFirstRenderComplete: false,
87
89
  isPlayerLoading: false,
88
90
  playerElId: undefined,
89
91
  notifications: true,
90
- loadingProgress: 0,
92
+ loadingProgress: undefined,
93
+ awaitingFirstInteraction: undefined,
91
94
  };
92
95
  exports.setThreekitEnv = (0, toolkit_1.createAction)('treble/set-threekit-env');
93
96
  exports.setThreekitInitialized = (0, toolkit_1.createAction)('treble/set-threekit-initialized');
97
+ exports.setIsFirstRenderComplete = (0, toolkit_1.createAction)('treble/set-is-first-render-complete');
94
98
  exports.setPlayerLoading = (0, toolkit_1.createAction)('treble/set-player-loading');
95
99
  exports.setPlayerElement = (0, toolkit_1.createAction)('treble/set-player-element');
96
100
  exports.reloadTreble = (0, toolkit_1.createAction)('treble/reload');
97
101
  exports.updateLoadingProgress = (0, toolkit_1.createAction)('treble/update-loading-progress');
102
+ exports.setPlayerInteraction = (0, toolkit_1.createAction)('treble/set-player-interaction');
98
103
  var reducer = (0, toolkit_1.createSlice)({
99
104
  name: 'treble',
100
105
  initialState: initialState,
@@ -108,6 +113,10 @@ var reducer = (0, toolkit_1.createSlice)({
108
113
  state.isThreekitInitialized = action.payload;
109
114
  return state;
110
115
  });
116
+ builder.addCase(exports.setIsFirstRenderComplete, function (state, action) {
117
+ state.isFirstRenderComplete = action.payload;
118
+ return state;
119
+ });
111
120
  builder.addCase(exports.setPlayerLoading, function (state, action) {
112
121
  state.isPlayerLoading = action.payload;
113
122
  return state;
@@ -123,6 +132,9 @@ var reducer = (0, toolkit_1.createSlice)({
123
132
  state.loadingProgress = Math.round(action.payload * 100);
124
133
  return state;
125
134
  });
135
+ builder.addCase(exports.setPlayerInteraction, function (state, action) {
136
+ return __assign(__assign({}, state), { awaitingFirstInteraction: action.payload });
137
+ });
126
138
  },
127
139
  }).reducer;
128
140
  var getThreekitEnv = function (state) {
@@ -133,6 +145,10 @@ var isThreekitInitialized = function (state) {
133
145
  return state.treble.isThreekitInitialized;
134
146
  };
135
147
  exports.isThreekitInitialized = isThreekitInitialized;
148
+ var isFirstRenderComplete = function (state) {
149
+ return state.treble.isFirstRenderComplete;
150
+ };
151
+ exports.isFirstRenderComplete = isFirstRenderComplete;
136
152
  var isPlayerLoading = function (state) {
137
153
  return state.treble.isPlayerLoading;
138
154
  };
@@ -145,13 +161,18 @@ var getLoadingProgress = function (state) {
145
161
  return state.treble.loadingProgress;
146
162
  };
147
163
  exports.getLoadingProgress = getLoadingProgress;
164
+ var getPlayerInteraction = function (state) {
165
+ return state.treble.awaitingFirstInteraction;
166
+ };
167
+ exports.getPlayerInteraction = getPlayerInteraction;
148
168
  var initPlayer = function (config) {
149
169
  return function (dispatch, getState) { return __awaiter(void 0, void 0, void 0, function () {
150
- var el, authToken, assetId, stageId, orgId, playerConfig, initialConfiguration, player, configurator;
170
+ var el, authToken, assetId, stageId, playerConfig, initialConfiguration, player, configurator, orgId, ruleName;
151
171
  return __generator(this, function (_a) {
152
172
  switch (_a.label) {
153
173
  case 0:
154
- el = config.el, authToken = config.authToken, assetId = config.assetId, stageId = config.stageId, orgId = config.orgId, playerConfig = config.playerConfig, initialConfiguration = config.initialConfiguration;
174
+ el = config.el, authToken = config.authToken, assetId = config.assetId, stageId = config.stageId, playerConfig = config.playerConfig, initialConfiguration = config.initialConfiguration;
175
+ dispatch((0, exports.updateLoadingProgress)(0));
155
176
  return [4, window.threekitPlayer(__assign(__assign({ el: el, authToken: authToken, stageId: stageId, assetId: assetId }, playerConfig), { initialConfiguration: initialConfiguration, onLoadingProgress: function (progress) {
156
177
  var _a;
157
178
  dispatch((0, exports.updateLoadingProgress)(progress));
@@ -162,6 +183,8 @@ var initPlayer = function (config) {
162
183
  return [4, player.getConfigurator()];
163
184
  case 2:
164
185
  configurator = _a.sent();
186
+ orgId = player.enableApi(types_1.PRIVATE_APIS.PLAYER).orgId;
187
+ connection_1.default.connect({ orgId: orgId });
165
188
  if (window.threekit) {
166
189
  window.threekit = Object.assign(window.threekit, {
167
190
  player: player,
@@ -182,6 +205,26 @@ var initPlayer = function (config) {
182
205
  dispatch((0, exports.setThreekitInitialized)(true));
183
206
  dispatch((0, exports.setPlayerLoading)(false));
184
207
  dispatch((0, exports.updateLoadingProgress)(1));
208
+ dispatch((0, exports.setPlayerInteraction)(true));
209
+ window.threekit.player.on(types_1.SCENE_PHASES.RENDERED, function () {
210
+ dispatch((0, exports.setIsFirstRenderComplete)(true));
211
+ });
212
+ ruleName = 'use-first-player-interaction';
213
+ window.threekit.player.tools.addTool({
214
+ key: ruleName,
215
+ label: 'use-first-player-interaction',
216
+ active: true,
217
+ enabled: true,
218
+ handlers: {
219
+ mousedown: function () { return __awaiter(void 0, void 0, void 0, function () {
220
+ return __generator(this, function (_a) {
221
+ dispatch((0, exports.setPlayerInteraction)(false));
222
+ window.threekit.player.tools.removeTool(ruleName);
223
+ return [2];
224
+ });
225
+ }); },
226
+ },
227
+ });
185
228
  if (window.threekit.treble._debugMode)
186
229
  (0, utils_1.runDebugger)();
187
230
  window.threekit.player.on('setConfiguration', function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -209,7 +252,7 @@ var initPlayer = function (config) {
209
252
  exports.initPlayer = initPlayer;
210
253
  var launch = function (launchConfig) {
211
254
  return function (dispatch) { return __awaiter(void 0, void 0, void 0, function () {
212
- var config, productId, credentials, productsRaw, products, threekitEnv, serverUrl, playerConfig, envCredentials, _a, assetIdRaw, stageId, configurationId, initialConfigurationRaw, assetId, threekitDomainRaw, orgId, authToken, el, threekitDomain, initialConfiguration, updatedAssetId, params, configId, configuration;
255
+ var config, productId, credentials, productsRaw, products, threekitEnv, serverUrl, playerConfig, envCredentials, _a, assetIdRaw, stageId, configurationId, initialConfigurationRaw, assetId, threekitDomainRaw, authToken, el, threekitDomain, initialConfiguration, updatedAssetId, params, configId, configuration;
213
256
  var _b, _c, _d, _e, _f, _g, _h;
214
257
  return __generator(this, function (_j) {
215
258
  switch (_j.label) {
@@ -272,7 +315,7 @@ var launch = function (launchConfig) {
272
315
  _a = products[productId][threekitEnv] || {}, assetIdRaw = _a.assetId, stageId = _a.stageId, configurationId = _a.configurationId, initialConfigurationRaw = _a.initialConfiguration;
273
316
  assetId = (launchConfig === null || launchConfig === void 0 ? void 0 : launchConfig.assetId) || assetIdRaw;
274
317
  threekitDomainRaw = envCredentials.threekitDomain || "".concat(threekitEnv, ".threekit.com");
275
- orgId = envCredentials.orgId, authToken = envCredentials.publicToken;
318
+ authToken = envCredentials.publicToken;
276
319
  if (playerConfig.elementId) {
277
320
  el = document.getElementById(playerConfig.elementId);
278
321
  if (el)
@@ -284,7 +327,6 @@ var launch = function (launchConfig) {
284
327
  }
285
328
  connection_1.default.connect({
286
329
  authToken: authToken,
287
- orgId: orgId,
288
330
  assetId: assetId,
289
331
  threekitDomain: threekitDomainRaw,
290
332
  serverUrl: serverUrl,
@@ -320,7 +362,6 @@ var launch = function (launchConfig) {
320
362
  _j.sent();
321
363
  return [4, dispatch((0, exports.initPlayer)({
322
364
  el: el,
323
- orgId: orgId,
324
365
  authToken: authToken,
325
366
  stageId: stageId,
326
367
  assetId: updatedAssetId,
@@ -405,7 +446,6 @@ var reloadPlayer = function (config) {
405
446
  _a.label = 6;
406
447
  case 6: return [4, dispatch((0, exports.initPlayer)({
407
448
  el: el,
408
- orgId: connectionObj.orgId,
409
449
  authToken: connectionObj.authToken,
410
450
  stageId: stageId,
411
451
  assetId: assetId,
package/dist/types.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /// <reference types="webpack-env" />
2
2
  import threekitAPI from './api';
3
3
  import Treble from './Treble';
4
- declare enum SCENE_PHASES {
5
- LOADED = 0,
6
- PRELOADED = 1,
7
- RENDERED = 2
4
+ export declare enum SCENE_PHASES {
5
+ LOADED = "loaded",
6
+ PRELOADED = "preloaded",
7
+ RENDERED = "rendered"
8
8
  }
9
9
  export declare enum PRIVATE_APIS {
10
10
  SCENE = "scene",
@@ -281,14 +281,24 @@ export interface IThreekitPlayer {
281
281
  unload: () => Promise<string>;
282
282
  }
283
283
  export interface IThreekitPrivateConfigurator extends IThreekitConfigurator {
284
+ name: string;
285
+ metadata: IMetadata;
284
286
  getAppliedConfiguration: (attributeName: string) => string;
285
287
  getFullConfiguration: () => IConfiguration;
286
288
  }
287
289
  export interface IThreekitPrivatePlayer {
290
+ v: string;
291
+ id: string;
292
+ assetId: string;
293
+ stageId: undefined | string;
294
+ instanceId: string;
295
+ assetType: string;
296
+ orgId: string;
297
+ rect: DOMRect;
298
+ isFullscreen: boolean;
299
+ zoomDisabled: boolean;
288
300
  getConfigurator: () => IThreekitPrivateConfigurator;
289
- configurator: {
290
- getFullConfiguration: () => IConfiguration;
291
- };
301
+ configurator: IThreekitPrivateConfigurator;
292
302
  calculateLogs: () => Promise<Record<string, any>>;
293
303
  getAssetInstance: (query: ISceneQueryNode | string) => Promise<string>;
294
304
  }
package/dist/types.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SNAPSHOT_OUTPUTS = exports.SNAPSHOT_FORMATS = exports.TRANSFORM_PROPERTY_TYPES = exports.PLUG_TYPES = exports.ASSET_TYPES = exports.ATTRIBUTE_TYPES = exports.DISPLAY_OPTIONS = exports.PRIVATE_APIS = void 0;
3
+ exports.SNAPSHOT_OUTPUTS = exports.SNAPSHOT_FORMATS = exports.TRANSFORM_PROPERTY_TYPES = exports.PLUG_TYPES = exports.ASSET_TYPES = exports.ATTRIBUTE_TYPES = exports.DISPLAY_OPTIONS = exports.PRIVATE_APIS = exports.SCENE_PHASES = void 0;
4
4
  var SCENE_PHASES;
5
5
  (function (SCENE_PHASES) {
6
- SCENE_PHASES[SCENE_PHASES["LOADED"] = 0] = "LOADED";
7
- SCENE_PHASES[SCENE_PHASES["PRELOADED"] = 1] = "PRELOADED";
8
- SCENE_PHASES[SCENE_PHASES["RENDERED"] = 2] = "RENDERED";
9
- })(SCENE_PHASES || (SCENE_PHASES = {}));
6
+ SCENE_PHASES["LOADED"] = "loaded";
7
+ SCENE_PHASES["PRELOADED"] = "preloaded";
8
+ SCENE_PHASES["RENDERED"] = "rendered";
9
+ })(SCENE_PHASES = exports.SCENE_PHASES || (exports.SCENE_PHASES = {}));
10
10
  var PRIVATE_APIS;
11
11
  (function (PRIVATE_APIS) {
12
12
  PRIVATE_APIS["SCENE"] = "scene";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threekit-tools/treble",
3
- "version": "0.0.85",
3
+ "version": "0.0.87",
4
4
  "author": "Amaan Saeed",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -32,7 +32,8 @@
32
32
  "lint-staged": "lint-staged",
33
33
  "check-format": "prettier -c ./src",
34
34
  "format": "prettier --write ./src",
35
- "test": "jest"
35
+ "test": "jest",
36
+ "deploy": "npm run build && npm publish"
36
37
  },
37
38
  "lint-staged": {
38
39
  "./src/**/*.{css,less,scss,html,json,jsx,js,tsx,ts}": [