@threekit-tools/treble 0.0.79 → 0.0.82

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 (48) hide show
  1. package/dist/Treble/Snapshots.d.ts +2 -2
  2. package/dist/Treble/Treble.d.ts +2 -2
  3. package/dist/Treble/Treble.js +1 -1
  4. package/dist/Treble/Wishlist.d.ts +2 -2
  5. package/dist/Treble/Wishlist.js +13 -15
  6. package/dist/Treble/index.js +5 -1
  7. package/dist/api/index.js +5 -1
  8. package/dist/components/Accordion/index.js +5 -1
  9. package/dist/components/Drawer/index.js +7 -3
  10. package/dist/components/Dropdown/index.js +7 -3
  11. package/dist/components/FlatForm/index.js +5 -1
  12. package/dist/components/Modal/index.js +2 -2
  13. package/dist/components/Player/index.d.ts +0 -1
  14. package/dist/components/Player/index.js +4 -38
  15. package/dist/components/PortalToArOverlay/index.js +5 -1
  16. package/dist/components/Share/index.js +2 -2
  17. package/dist/components/Snapshots/index.js +2 -2
  18. package/dist/components/Tabs/index.js +5 -1
  19. package/dist/components/ThreekitProvider/index.js +10 -4
  20. package/dist/components/TrebleApp/index.js +5 -1
  21. package/dist/components/Upload/index.js +14 -9
  22. package/dist/components/UploadArea/index.js +12 -8
  23. package/dist/components/Wishlist/index.d.ts +1 -1
  24. package/dist/components/Wishlist/index.js +10 -5
  25. package/dist/components/Zoom/index.d.ts +1 -1
  26. package/dist/components/Zoom/index.js +5 -4
  27. package/dist/components/formComponents.js +5 -1
  28. package/dist/components/message/index.js +4 -22
  29. package/dist/hooks/useAttribute/index.d.ts +1 -1
  30. package/dist/hooks/useLoadingProgress/index.d.ts +2 -0
  31. package/dist/hooks/useLoadingProgress/index.js +9 -0
  32. package/dist/hooks/usePlayer/index.d.ts +3 -0
  33. package/dist/hooks/usePlayer/index.js +38 -0
  34. package/dist/hooks/useSnapshot/index.d.ts +1 -1
  35. package/dist/hooks/useWishlist/index.d.ts +1 -1
  36. package/dist/http/index.js +5 -1
  37. package/dist/icons/Spinner.js +5 -1
  38. package/dist/index.d.ts +3 -1
  39. package/dist/index.js +10 -2
  40. package/dist/store/index.d.ts +1 -1
  41. package/dist/store/product.d.ts +4 -4
  42. package/dist/store/translations.d.ts +1 -1
  43. package/dist/store/treble.d.ts +5 -1
  44. package/dist/store/treble.js +21 -4
  45. package/dist/store/wishlist.d.ts +1 -1
  46. package/dist/types.d.ts +50 -10
  47. package/dist/utils.d.ts +8 -8
  48. package/package.json +1 -1
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -61,7 +65,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
61
65
  exports.Wishlist = exports.WishlistButton = exports.AddWishlistButton = void 0;
62
66
  var react_1 = __importStar(require("react"));
63
67
  var prop_types_1 = __importDefault(require("prop-types"));
64
- var icons_1 = require("../../icons");
68
+ var Heart_1 = __importDefault(require("../../icons/Heart"));
69
+ var Wishlist_1 = __importDefault(require("../../icons/Wishlist"));
65
70
  var Button_1 = require("../Button");
66
71
  var Drawer_1 = __importDefault(require("../Drawer"));
67
72
  var shared_styles_1 = require("../shared.styles");
@@ -71,12 +76,12 @@ var wishlist_styles_1 = require("./wishlist.styles");
71
76
  var useWishlist_1 = __importDefault(require("../../hooks/useWishlist"));
72
77
  var AddWishlistButton = function (props) {
73
78
  var title = props.title, type = props.type, shape = props.shape, className = props.className, onClick = props.onClick;
74
- return (react_1.default.createElement(Button_1.Button, { title: title, icon: icons_1.HeartIcon.iconName, className: className, onClick: onClick, type: type, shape: shape }));
79
+ return (react_1.default.createElement(Button_1.Button, { title: title, icon: Heart_1.default.iconName, className: className, onClick: onClick, type: type, shape: shape }));
75
80
  };
76
81
  exports.AddWishlistButton = AddWishlistButton;
77
82
  var WishlistButton = function (props) {
78
83
  var title = props.title, type = props.type, shape = props.shape, className = props.className, onClick = props.onClick;
79
- return (react_1.default.createElement(Button_1.Button, { title: title, icon: icons_1.WishlistIcon.iconName, className: className, onClick: onClick, type: type, shape: shape }));
84
+ return (react_1.default.createElement(Button_1.Button, { title: title, icon: Wishlist_1.default.iconName, className: className, onClick: onClick, type: type, shape: shape }));
80
85
  };
81
86
  exports.WishlistButton = WishlistButton;
82
87
  var Wishlist = function (props) {
@@ -122,5 +127,5 @@ exports.Wishlist.defaultProps = {
122
127
  type: 'threekit',
123
128
  };
124
129
  exports.Wishlist.componentName = 'wishlist';
125
- exports.Wishlist.Icon = icons_1.WishlistIcon;
130
+ exports.Wishlist.Icon = Wishlist_1.default;
126
131
  exports.default = exports.Wishlist;
@@ -46,7 +46,7 @@ export declare const Zoom: {
46
46
  type: string;
47
47
  };
48
48
  componentName: string;
49
- Icon: import("../../icons").IIcon;
49
+ Icon: import("../..").IIcon;
50
50
  ZoomOut: (props: ZoomComponentProps) => JSX.Element | null;
51
51
  ZoomIn: (props: ZoomComponentProps) => JSX.Element | null;
52
52
  };
@@ -19,7 +19,8 @@ var react_1 = __importDefault(require("react"));
19
19
  var prop_types_1 = __importDefault(require("prop-types"));
20
20
  var shared_styles_1 = require("../shared.styles");
21
21
  var Button_1 = __importDefault(require("../Button"));
22
- var icons_1 = require("../../icons");
22
+ var ZoomIn_1 = __importDefault(require("../../icons/ZoomIn"));
23
+ var ZoomOut_1 = __importDefault(require("../../icons/ZoomOut"));
23
24
  var useThreekitInitStatus_1 = __importDefault(require("../../hooks/useThreekitInitStatus"));
24
25
  var useZoom_1 = __importDefault(require("../../hooks/useZoom"));
25
26
  var utils_1 = require("../../utils");
@@ -40,7 +41,7 @@ var ZoomOutComponent = function (props) {
40
41
  return null;
41
42
  var handleZoomOut = function () { return zoomOut(Math.abs(step)); };
42
43
  var cls = (0, utils_1.generateWidgetClassName)('zoom', className);
43
- return (react_1.default.createElement(Button_1.default, { className: "".concat(cls, " zoom-out"), shape: shape, type: type, icon: icons_1.ZoomOutIcon.iconName, onClick: handleZoomOut }));
44
+ return (react_1.default.createElement(Button_1.default, { className: "".concat(cls, " zoom-out"), shape: shape, type: type, icon: ZoomOut_1.default.iconName, onClick: handleZoomOut }));
44
45
  };
45
46
  exports.ZoomOutComponent = ZoomOutComponent;
46
47
  var ZoomInComponent = function (props) {
@@ -55,7 +56,7 @@ var ZoomInComponent = function (props) {
55
56
  return null;
56
57
  var handleZoomOut = function () { return zoomIn(Math.abs(step)); };
57
58
  var cls = (0, utils_1.generateWidgetClassName)('zoom', className);
58
- return (react_1.default.createElement(Button_1.default, { className: "".concat(cls, " zoom-in"), shape: shape, type: type, icon: icons_1.ZoomInIcon.iconName, onClick: handleZoomOut }));
59
+ return (react_1.default.createElement(Button_1.default, { className: "".concat(cls, " zoom-in"), shape: shape, type: type, icon: ZoomIn_1.default.iconName, onClick: handleZoomOut }));
59
60
  };
60
61
  exports.ZoomInComponent = ZoomInComponent;
61
62
  var Zoom = function (props) {
@@ -113,7 +114,7 @@ exports.Zoom.defaultProps = {
113
114
  type: 'threekit',
114
115
  };
115
116
  exports.Zoom.componentName = 'zoom';
116
- exports.Zoom.Icon = icons_1.ZoomInIcon;
117
+ exports.Zoom.Icon = ZoomIn_1.default;
117
118
  exports.Zoom.ZoomOut = exports.ZoomOutComponent;
118
119
  exports.Zoom.ZoomIn = exports.ZoomInComponent;
119
120
  exports.default = exports.Zoom;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,23 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
22
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
4
  };
@@ -27,7 +8,8 @@ var react_1 = __importDefault(require("react"));
27
8
  var react_dom_1 = __importDefault(require("react-dom"));
28
9
  var prop_types_1 = __importDefault(require("prop-types"));
29
10
  var message_styles_1 = require("./message.styles");
30
- var icons_1 = __importStar(require("../../icons"));
11
+ var icons_1 = __importDefault(require("../../icons"));
12
+ var Info_1 = __importDefault(require("../../icons/Info"));
31
13
  var styled_components_1 = require("styled-components");
32
14
  var theme_1 = __importDefault(require("../../theme"));
33
15
  var messagesEl;
@@ -57,7 +39,7 @@ var MessageComponent = function (props) {
57
39
  var content = props.content, icon = props.icon;
58
40
  if (!content)
59
41
  return null;
60
- var Icon = icon ? icons_1.default[icon] : icons_1.InfoIcon;
42
+ var Icon = icon ? icons_1.default[icon] : Info_1.default;
61
43
  return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme_1.default },
62
44
  react_1.default.createElement(message_styles_1.Wrapper, null,
63
45
  react_1.default.createElement(message_styles_1.IconWrapper, null,
@@ -105,7 +87,7 @@ exports.MessageComponent.propTypes = {
105
87
  };
106
88
  exports.MessageComponent.defaultProps = {
107
89
  content: undefined,
108
- icon: icons_1.InfoIcon.iconName,
90
+ icon: Info_1.default.iconName,
109
91
  className: undefined,
110
92
  };
111
93
  exports.default = { config: config, info: info };
@@ -6,5 +6,5 @@ declare type UseAttributeSuccess = [
6
6
  (val: RawAttributeValue) => Promise<void>
7
7
  ];
8
8
  declare type UseAttributeHook = UseAttributeError | UseAttributeSuccess;
9
- declare const useAttribute: (attributeName?: string | undefined) => UseAttributeHook;
9
+ declare const useAttribute: (attributeName?: string) => UseAttributeHook;
10
10
  export default useAttribute;
@@ -0,0 +1,2 @@
1
+ declare const useLoadingProgress: () => number;
2
+ export default useLoadingProgress;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var store_1 = require("../../store");
4
+ var treble_1 = require("../../store/treble");
5
+ var useLoadingProgress = function () {
6
+ var progress = (0, store_1.useThreekitSelector)(treble_1.getLoadingProgress);
7
+ return progress;
8
+ };
9
+ exports.default = useLoadingProgress;
@@ -0,0 +1,3 @@
1
+ declare type UsePlayer = [undefined] | [(node: null | HTMLDivElement) => void];
2
+ declare const usePlayer: () => UsePlayer;
3
+ export default usePlayer;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var react_1 = require("react");
4
+ var react_redux_1 = require("react-redux");
5
+ var treble_1 = require("../../store/treble");
6
+ var constants_1 = require("../../constants");
7
+ var usePlayer = function () {
8
+ var playerElRef = (0, react_1.useRef)(null);
9
+ var playerLoaderRef = (0, react_1.useRef)(null);
10
+ var playerWrapperRef = (0, react_1.useRef)(null);
11
+ var playerElementId = (0, react_redux_1.useSelector)(treble_1.getPlayerElementId);
12
+ var playerRef = (0, react_1.useCallback)(function (node) {
13
+ var _a;
14
+ if (node !== null) {
15
+ playerWrapperRef.current = node;
16
+ if (!playerElementId)
17
+ return;
18
+ playerElRef.current = document.getElementById(playerElementId);
19
+ (_a = playerWrapperRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(playerElRef.current);
20
+ return;
21
+ }
22
+ }, [playerElementId]);
23
+ (0, react_1.useEffect)(function () { return function () {
24
+ if (!playerElRef.current)
25
+ return;
26
+ if (!playerLoaderRef.current)
27
+ playerLoaderRef.current = document.getElementById(constants_1.TK_PLAYER_LOADER_DIV);
28
+ if (!playerElRef.current)
29
+ throw new Error('Move from element not found');
30
+ if (!playerLoaderRef.current)
31
+ throw new Error('Player Loader element not found');
32
+ playerLoaderRef.current.appendChild(playerElRef.current);
33
+ }; }, []);
34
+ if (!playerElementId)
35
+ return [undefined];
36
+ return [playerRef];
37
+ };
38
+ exports.default = usePlayer;
@@ -1,3 +1,3 @@
1
1
  import { ISnapshotsCameras, ITakeSnapshotsConfig } from '../../Treble';
2
- declare const useSnapshot: (cameras: ISnapshotsCameras, config: ITakeSnapshotsConfig) => (() => Promise<void | string[] | Blob[] | null>) | undefined;
2
+ declare const useSnapshot: (cameras: ISnapshotsCameras, config: ITakeSnapshotsConfig) => (() => Promise<void | string[] | File[] | Blob[] | null>) | undefined;
3
3
  export default useSnapshot;
@@ -7,7 +7,7 @@ interface HydratedWishlistItem extends IConfigurationResponse {
7
7
  }
8
8
  declare type UseWishlistHook = [
9
9
  Array<HydratedWishlistItem>,
10
- (config?: Omit<ISaveConfiguration, 'configurator'>) => void,
10
+ (config?: Omit<ISaveConfiguration, 'configuration'>) => void,
11
11
  () => void
12
12
  ] | [undefined, undefined, undefined];
13
13
  declare const useWishlist: () => UseWishlistHook;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -5,7 +5,11 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
5
5
  };
6
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
7
  if (k2 === undefined) k2 = k;
8
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
9
13
  }) : (function(o, m, k, k2) {
10
14
  if (k2 === undefined) k2 = k;
11
15
  o[k2] = m[k];
package/dist/index.d.ts CHANGED
@@ -13,6 +13,8 @@ import useShare from './hooks/useShare';
13
13
  import usePlayerPortal from './hooks/usePlayerPortal';
14
14
  import useProductCache from './hooks/useProductCache';
15
15
  import useNestedConfigurator from './hooks/useNestedConfigurator';
16
+ import useLoadingProgress from './hooks/useLoadingProgress';
17
+ import usePlayer from './hooks/usePlayer';
16
18
  import ThreekitProvider from './components/ThreekitProvider';
17
19
  import Player from './components/Player';
18
20
  import Button from './components/Button';
@@ -46,4 +48,4 @@ import icons from './icons';
46
48
  export * from './icons';
47
49
  import TrebleApp from './components/TrebleApp';
48
50
  import ProductLayout from './components/ProductLayout';
49
- export { useAttribute, useConfigurator, useConfigurationLoader, useMetadata, useName, usePlayerLoadingStatus, usePrice, useThreekitInitStatus, useZoom, useSnapshot, useWishlist, useShare, usePlayerPortal, useProductCache, useNestedConfigurator, ThreekitProvider, Player, Button, Cards, Dropdown, Strips, Swatch, Tiles, TilesGroup, Upload, Switch, ProductName, ProductDescription, AttributeTitle, AttributeValue, TotalPrice, message, Modal, Drawer, Accordion, Tabs, PortalToArOverlay, PortalToElement, AwaitThreekitLoad, FlatForm, Zoom, Snapshots, Wishlist, Share, icons, TrebleApp, ProductLayout, };
51
+ export { useAttribute, useConfigurator, useConfigurationLoader, useMetadata, useName, usePlayerLoadingStatus, usePrice, useThreekitInitStatus, useZoom, useSnapshot, useWishlist, useShare, usePlayerPortal, useProductCache, useNestedConfigurator, useLoadingProgress, usePlayer, ThreekitProvider, Player, Button, Cards, Dropdown, Strips, Swatch, Tiles, TilesGroup, Upload, Switch, ProductName, ProductDescription, AttributeTitle, AttributeValue, TotalPrice, message, Modal, Drawer, Accordion, Tabs, PortalToArOverlay, PortalToElement, AwaitThreekitLoad, FlatForm, Zoom, Snapshots, Wishlist, Share, icons, TrebleApp, ProductLayout, };
package/dist/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -13,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
18
  };
15
19
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.ProductLayout = exports.TrebleApp = exports.icons = exports.Share = exports.Wishlist = exports.Snapshots = exports.Zoom = exports.FlatForm = exports.AwaitThreekitLoad = exports.PortalToElement = exports.PortalToArOverlay = exports.Tabs = exports.Accordion = exports.Drawer = exports.Modal = exports.message = exports.TotalPrice = exports.AttributeValue = exports.AttributeTitle = exports.ProductDescription = exports.ProductName = exports.Switch = exports.Upload = exports.TilesGroup = exports.Tiles = exports.Swatch = exports.Strips = exports.Dropdown = exports.Cards = exports.Button = exports.Player = exports.ThreekitProvider = exports.useNestedConfigurator = exports.useProductCache = exports.usePlayerPortal = exports.useShare = exports.useWishlist = exports.useSnapshot = exports.useZoom = exports.useThreekitInitStatus = exports.usePrice = exports.usePlayerLoadingStatus = exports.useName = exports.useMetadata = exports.useConfigurationLoader = exports.useConfigurator = exports.useAttribute = void 0;
20
+ exports.ProductLayout = exports.TrebleApp = exports.icons = exports.Share = exports.Wishlist = exports.Snapshots = exports.Zoom = exports.FlatForm = exports.AwaitThreekitLoad = exports.PortalToElement = exports.PortalToArOverlay = exports.Tabs = exports.Accordion = exports.Drawer = exports.Modal = exports.message = exports.TotalPrice = exports.AttributeValue = exports.AttributeTitle = exports.ProductDescription = exports.ProductName = exports.Switch = exports.Upload = exports.TilesGroup = exports.Tiles = exports.Swatch = exports.Strips = exports.Dropdown = exports.Cards = exports.Button = exports.Player = exports.ThreekitProvider = exports.usePlayer = exports.useLoadingProgress = exports.useNestedConfigurator = exports.useProductCache = exports.usePlayerPortal = exports.useShare = exports.useWishlist = exports.useSnapshot = exports.useZoom = exports.useThreekitInitStatus = exports.usePrice = exports.usePlayerLoadingStatus = exports.useName = exports.useMetadata = exports.useConfigurationLoader = exports.useConfigurator = exports.useAttribute = void 0;
17
21
  // Hooks
18
22
  var useAttribute_1 = __importDefault(require("./hooks/useAttribute"));
19
23
  exports.useAttribute = useAttribute_1.default;
@@ -46,6 +50,10 @@ var useProductCache_1 = __importDefault(require("./hooks/useProductCache"));
46
50
  exports.useProductCache = useProductCache_1.default;
47
51
  var useNestedConfigurator_1 = __importDefault(require("./hooks/useNestedConfigurator"));
48
52
  exports.useNestedConfigurator = useNestedConfigurator_1.default;
53
+ var useLoadingProgress_1 = __importDefault(require("./hooks/useLoadingProgress"));
54
+ exports.useLoadingProgress = useLoadingProgress_1.default;
55
+ var usePlayer_1 = __importDefault(require("./hooks/usePlayer"));
56
+ exports.usePlayer = usePlayer_1.default;
49
57
  // Components
50
58
  var ThreekitProvider_1 = __importDefault(require("./components/ThreekitProvider"));
51
59
  exports.ThreekitProvider = ThreekitProvider_1.default;
@@ -29,7 +29,7 @@ declare const store: import("@reduxjs/toolkit").EnhancedStore<{
29
29
  wishlist: import("../Treble").WishlistArray;
30
30
  price: import("./price").PriceState;
31
31
  }, import("redux").Dispatch<import("redux").AnyAction>>>>;
32
- export declare const createStore: (reducer?: Record<string, Reducer<any, import("redux").AnyAction>> | undefined) => import("@reduxjs/toolkit").EnhancedStore<{
32
+ export declare const createStore: (reducer?: Record<string, Reducer>) => import("@reduxjs/toolkit").EnhancedStore<{
33
33
  treble: import("./treble").TrebleState;
34
34
  product: import("./product").ProductState;
35
35
  attributes: import("./attributes").AttributesState;
@@ -58,13 +58,13 @@ export declare const getProductCache: (state: RootState) => Array<Pick<CachedPro
58
58
  /*****************************************************
59
59
  * Complex Actions
60
60
  ****************************************************/
61
- export declare const initProduct: (prods?: IHydratedProducts | undefined) => (dispatch: ThreekitDispatch, getState: () => RootState) => void;
62
- export declare const cacheActiveProduct: (config?: Pick<IReloadConfig, "label" | "thumbnail"> | undefined) => (dispatch: ThreekitDispatch, getState: () => RootState) => {
61
+ export declare const initProduct: (prods?: IHydratedProducts) => (dispatch: ThreekitDispatch, getState: () => RootState) => void;
62
+ export declare const cacheActiveProduct: (config?: Pick<IReloadConfig, 'label' | 'thumbnail'>) => (dispatch: ThreekitDispatch, getState: () => RootState) => {
63
63
  payload: CachedProductState;
64
64
  type: string;
65
65
  };
66
- export declare const loadProduct: (id: string, config?: LoadProductConfig | undefined) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
66
+ export declare const loadProduct: (id: string, config?: LoadProductConfig) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
67
67
  export declare const loadNewProduct: (config: undefined | string | IReloadConfig) => (dispatch: ThreekitDispatch) => Promise<void>;
68
68
  export declare const changeActiveCacheIdx: (idx: number) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
69
- export declare const removeProductIdx: (idx?: number | undefined) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
69
+ export declare const removeProductIdx: (idx?: number) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
70
70
  export default reducer;
@@ -14,7 +14,7 @@ export declare let TRANSLATIONS: undefined | ITranslationMap;
14
14
  * Actions
15
15
  ****************************************************/
16
16
  export declare const setLanguage: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>;
17
- export declare const initTranslations: (language?: string | undefined) => (dispatch: ThreekitDispatch) => Promise<void>;
17
+ export declare const initTranslations: (language?: string) => (dispatch: ThreekitDispatch) => Promise<void>;
18
18
  declare const reducer: import("redux").Reducer<TranslationsState, import("redux").AnyAction>;
19
19
  /*****************************************************
20
20
  * Standard Selectors
@@ -13,6 +13,7 @@ export interface IPlayerInit {
13
13
  initialConfiguration?: IConfiguration;
14
14
  }
15
15
  export interface ILaunchConfig {
16
+ assetId?: string;
16
17
  productId: string;
17
18
  threekitEnv: string;
18
19
  serverUrl: string;
@@ -36,6 +37,7 @@ export interface TrebleState {
36
37
  isThreekitInitialized: boolean;
37
38
  playerElId: undefined | string;
38
39
  notifications: boolean;
40
+ loadingProgress: number;
39
41
  }
40
42
  export interface NotificationEvent extends Event {
41
43
  detail: {
@@ -54,6 +56,7 @@ export declare const setThreekitInitialized: import("@reduxjs/toolkit").ActionCr
54
56
  export declare const setPlayerLoading: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>;
55
57
  export declare const setPlayerElement: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>;
56
58
  export declare const reloadTreble: import("@reduxjs/toolkit").ActionCreatorWithPayload<Partial<TrebleState>, string>;
59
+ export declare const updateLoadingProgress: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, string>;
57
60
  /*****************************************************
58
61
  * Slice
59
62
  ****************************************************/
@@ -65,11 +68,12 @@ export declare const getThreekitEnv: (state: RootState) => string;
65
68
  export declare const isThreekitInitialized: (state: RootState) => boolean;
66
69
  export declare const isPlayerLoading: (state: RootState) => boolean;
67
70
  export declare const getPlayerElementId: (state: RootState) => undefined | string;
71
+ export declare const getLoadingProgress: (state: RootState) => number;
68
72
  /*****************************************************
69
73
  * Complex Actions
70
74
  ****************************************************/
71
75
  export declare const initPlayer: (config: IPlayerInit) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
72
- export declare const launch: (launchConfig?: Partial<ILaunchConfig> | undefined) => (dispatch: ThreekitDispatch) => Promise<void>;
76
+ export declare const launch: (launchConfig?: Partial<ILaunchConfig>) => (dispatch: ThreekitDispatch) => Promise<void>;
73
77
  export declare const unloadPlayer: () => (dispatch: ThreekitDispatch) => Promise<void>;
74
78
  export declare const reloadPlayer: (config: undefined | string | Pick<IReloadConfig, 'assetId' | 'stageId' | 'configurationId' | 'configuration'>) => (dispatch: ThreekitDispatch, getState: () => RootState) => Promise<void>;
75
79
  export default reducer;
@@ -50,7 +50,7 @@ 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.getPlayerElementId = exports.isPlayerLoading = exports.isThreekitInitialized = exports.getThreekitEnv = exports.reloadTreble = exports.setPlayerElement = exports.setPlayerLoading = exports.setThreekitInitialized = exports.setThreekitEnv = void 0;
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;
54
54
  var connection_1 = __importDefault(require("../connection"));
55
55
  var toolkit_1 = require("@reduxjs/toolkit");
56
56
  var api_1 = __importDefault(require("../api"));
@@ -103,6 +103,7 @@ var initialState = {
103
103
  isPlayerLoading: false,
104
104
  playerElId: undefined,
105
105
  notifications: true,
106
+ loadingProgress: 0,
106
107
  };
107
108
  /*****************************************************
108
109
  * Actions
@@ -112,6 +113,7 @@ exports.setThreekitInitialized = (0, toolkit_1.createAction)('treble/set-threeki
112
113
  exports.setPlayerLoading = (0, toolkit_1.createAction)('treble/set-player-loading');
113
114
  exports.setPlayerElement = (0, toolkit_1.createAction)('treble/set-player-element');
114
115
  exports.reloadTreble = (0, toolkit_1.createAction)('treble/reload');
116
+ exports.updateLoadingProgress = (0, toolkit_1.createAction)('treble/update-loading-progress');
115
117
  /*****************************************************
116
118
  * Slice
117
119
  ****************************************************/
@@ -139,6 +141,10 @@ var reducer = (0, toolkit_1.createSlice)({
139
141
  builder.addCase(exports.reloadTreble, function (state, action) {
140
142
  return __assign(__assign({}, state), action.payload);
141
143
  });
144
+ builder.addCase(exports.updateLoadingProgress, function (state, action) {
145
+ state.loadingProgress = Math.round(action.payload * 100);
146
+ return state;
147
+ });
142
148
  },
143
149
  }).reducer;
144
150
  /*****************************************************
@@ -163,6 +169,11 @@ var getPlayerElementId = function (state) {
163
169
  return state.treble.playerElId;
164
170
  };
165
171
  exports.getPlayerElementId = getPlayerElementId;
172
+ // Player's HTML element
173
+ var getLoadingProgress = function (state) {
174
+ return state.treble.loadingProgress;
175
+ };
176
+ exports.getLoadingProgress = getLoadingProgress;
166
177
  /*****************************************************
167
178
  * Complex Actions
168
179
  ****************************************************/
@@ -175,7 +186,11 @@ var initPlayer = function (config) {
175
186
  el = config.el, authToken = config.authToken, assetId = config.assetId, stageId = config.stageId, orgId = config.orgId, playerConfig = config.playerConfig, initialConfiguration = config.initialConfiguration;
176
187
  return [4 /*yield*/, window.threekitPlayer(__assign(__assign({ el: el,
177
188
  // Variables to sort out
178
- authToken: authToken, stageId: stageId, assetId: assetId }, playerConfig), { initialConfiguration: initialConfiguration }))];
189
+ authToken: authToken, stageId: stageId, assetId: assetId }, playerConfig), { initialConfiguration: initialConfiguration, onLoadingProgress: function (progress) {
190
+ var _a;
191
+ dispatch((0, exports.updateLoadingProgress)(progress));
192
+ (_a = playerConfig === null || playerConfig === void 0 ? void 0 : playerConfig.onLoadingProgress) === null || _a === void 0 ? void 0 : _a.call(playerConfig, progress);
193
+ } }))];
179
194
  case 1:
180
195
  player = _a.sent();
181
196
  return [4 /*yield*/, player.getConfigurator()];
@@ -200,6 +215,7 @@ var initPlayer = function (config) {
200
215
  };
201
216
  dispatch((0, exports.setThreekitInitialized)(true));
202
217
  dispatch((0, exports.setPlayerLoading)(false));
218
+ dispatch((0, exports.updateLoadingProgress)(1));
203
219
  if (window.threekit.treble._debugMode)
204
220
  (0, utils_1.runDebugger)();
205
221
  window.threekit.player.on('setConfiguration', function () { return __awaiter(void 0, void 0, void 0, function () {
@@ -227,7 +243,7 @@ var initPlayer = function (config) {
227
243
  exports.initPlayer = initPlayer;
228
244
  var launch = function (launchConfig) {
229
245
  return function (dispatch) { return __awaiter(void 0, void 0, void 0, function () {
230
- var config, productId, credentials, productsRaw, products, threekitEnv, serverUrl, playerConfig, envCredentials, _a, assetId, stageId, configurationId, initialConfigurationRaw, threekitDomainRaw, orgId, authToken, el, threekitDomain, initialConfiguration, updatedAssetId, params, configId, configuration;
246
+ 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;
231
247
  var _b, _c, _d, _e, _f, _g, _h;
232
248
  return __generator(this, function (_j) {
233
249
  switch (_j.label) {
@@ -285,7 +301,8 @@ var launch = function (launchConfig) {
285
301
  serverUrl = (launchConfig === null || launchConfig === void 0 ? void 0 : launchConfig.serverUrl) || ((_g = config === null || config === void 0 ? void 0 : config.project) === null || _g === void 0 ? void 0 : _g.serverUrl);
286
302
  playerConfig = Object.assign({}, constants_1.DEFAULT_PLAYER_CONFIG, config.player, launchConfig === null || launchConfig === void 0 ? void 0 : launchConfig.playerConfig);
287
303
  envCredentials = credentials[threekitEnv];
288
- _a = products[productId][threekitEnv], assetId = _a.assetId, stageId = _a.stageId, configurationId = _a.configurationId, initialConfigurationRaw = _a.initialConfiguration;
304
+ _a = products[productId][threekitEnv], assetIdRaw = _a.assetId, stageId = _a.stageId, configurationId = _a.configurationId, initialConfigurationRaw = _a.initialConfiguration;
305
+ assetId = (launchConfig === null || launchConfig === void 0 ? void 0 : launchConfig.assetId) || assetIdRaw;
289
306
  threekitDomainRaw = envCredentials.threekitDomain || "".concat(threekitEnv, ".threekit.com");
290
307
  orgId = envCredentials.orgId, authToken = envCredentials.publicToken;
291
308
  if (playerConfig.elementId) {
@@ -9,7 +9,7 @@ export declare type WishlistState = WishlistArray;
9
9
  * Standard Selectors
10
10
  ****************************************************/
11
11
  export declare const refreshWishlist: import("@reduxjs/toolkit").AsyncThunk<import("../http/configurations").IConfigurationResponse[], void, {}>;
12
- export declare const addToWishlist: import("@reduxjs/toolkit").AsyncThunk<import("../http/configurations").IConfigurationResponse[], Omit<ISaveConfiguration, "configurator">, {}>;
12
+ export declare const addToWishlist: import("@reduxjs/toolkit").AsyncThunk<import("../http/configurations").IConfigurationResponse[], Omit<ISaveConfiguration, "configuration">, {}>;
13
13
  export declare const clearWishlist: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[], import("../http/configurations").IConfigurationResponse[], "treble/wishlist/clear", never, never>;
14
14
  export declare const removeFromWishlist: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[idx: number], import("../http/configurations").IConfigurationResponse[], "treble/wishlist/remove-item", never, never>;
15
15
  /*****************************************************
package/dist/types.d.ts CHANGED
@@ -161,6 +161,56 @@ export interface ISnapshotConfig {
161
161
  };
162
162
  }
163
163
  export declare type SNAPSHOT_FORMAT_TYPES = 'jpg' | 'png';
164
+ /***************************************************
165
+ * Tools
166
+ **************************************************/
167
+ export interface Node {
168
+ name: string;
169
+ nodeId: string;
170
+ type: string;
171
+ }
172
+ export interface HitNode {
173
+ distance: number;
174
+ intersection: ICoordinates;
175
+ nodeId: string;
176
+ hierarchy: Array<Node>;
177
+ }
178
+ export interface PlayerToolEvent {
179
+ altKey: boolean;
180
+ clientX: number;
181
+ clientY: number;
182
+ deltaX: number;
183
+ deltaY: number;
184
+ ctrlKey: boolean;
185
+ isTouch: boolean;
186
+ metaKey: boolean;
187
+ shiftKey: boolean;
188
+ which: number;
189
+ originalEvent: MouseEvent;
190
+ rect: DOMRect;
191
+ hitNodes: Array<HitNode>;
192
+ }
193
+ export interface CustomPlayerTool {
194
+ key: string;
195
+ label: string;
196
+ active: boolean;
197
+ enabled: boolean;
198
+ handlers: {
199
+ click?: (event: PlayerToolEvent) => void | Promise<void>;
200
+ mousedown?: (event: PlayerToolEvent) => void | Promise<void>;
201
+ mouseup?: (event: PlayerToolEvent) => void | Promise<void>;
202
+ };
203
+ }
204
+ export interface IThreekitTools {
205
+ addTool: (tool: string | CustomPlayerTool) => void;
206
+ addTools: (tools: Array<string | CustomPlayerTool>) => void;
207
+ removeTool: (tool: string) => void;
208
+ removeTools: (tools: Array<string>) => void;
209
+ setPrimary: (tool: string) => void;
210
+ getPrimaryTool: () => string;
211
+ setTool: () => void;
212
+ setTools: () => void;
213
+ }
164
214
  /***************************************************
165
215
  * Threekit Api
166
216
  **************************************************/
@@ -189,16 +239,6 @@ export interface IThreekitScene {
189
239
  find: (query: ISceneQuery | string) => ISceneResult;
190
240
  set: (query: ISceneQuery | string, transform: ICoordinates) => void;
191
241
  }
192
- export interface IThreekitTools {
193
- addTool: (tool: string) => void;
194
- addTools: (tools: string[]) => void;
195
- removeTool: (tool: string) => void;
196
- removeTools: (tools: string[]) => void;
197
- setPrimary: (tool: string) => void;
198
- getPrimaryTool: () => string;
199
- setTool: () => void;
200
- setTools: () => void;
201
- }
202
242
  export interface IThreekitCamera {
203
243
  frameBoundingSphere: () => void;
204
244
  getPosition: () => ICoordinates;
package/dist/utils.d.ts CHANGED
@@ -15,13 +15,13 @@ interface IAttributeComponentProps {
15
15
  interface IAttributesComponentProps {
16
16
  [attributeName: string]: undefined | false | IAttributeComponentProps;
17
17
  }
18
- export declare const generateClassName: (baseClass: string) => (component: string, customClassName?: string | undefined, title?: string | undefined) => string;
19
- export declare const generateInputClassName: (component: string, customClassName?: string | undefined, title?: string | undefined) => string;
20
- export declare const generateWidgetClassName: (component: string, customClassName?: string | undefined, title?: string | undefined) => string;
21
- export declare const generateLayoutClassName: (component: string, customClassName?: string | undefined, title?: string | undefined) => string;
22
- export declare const generateToolClassName: (component: string, customClassName?: string | undefined, title?: string | undefined) => string;
23
- export declare const generateDisplayClassName: (component: string, customClassName?: string | undefined, title?: string | undefined) => string;
24
- export declare const generateFormClassName: (component: string, customClassName?: string | undefined, title?: string | undefined) => string;
18
+ export declare const generateClassName: (baseClass: string) => (component: string, customClassName?: string, title?: string) => string;
19
+ export declare const generateInputClassName: (component: string, customClassName?: string, title?: string) => string;
20
+ export declare const generateWidgetClassName: (component: string, customClassName?: string, title?: string) => string;
21
+ export declare const generateLayoutClassName: (component: string, customClassName?: string, title?: string) => string;
22
+ export declare const generateToolClassName: (component: string, customClassName?: string, title?: string) => string;
23
+ export declare const generateDisplayClassName: (component: string, customClassName?: string, title?: string) => string;
24
+ export declare const generateFormClassName: (component: string, customClassName?: string, title?: string) => string;
25
25
  export declare const isIOS: () => RegExpMatchArray | null;
26
26
  export declare const isJsonString: (str: string) => boolean;
27
27
  export declare const objectToQueryStr: (obj: Record<string, any>) => string;
@@ -57,7 +57,7 @@ export declare const selectionToConfiguration: (value: RawAttributeValue, attrib
57
57
  assetId: RawAttributeValue;
58
58
  } | undefined;
59
59
  export declare const filterFormAttributes: (attributes: Record<string, IThreekitDisplayAttribute>, attributeComponentProps: IAttributesComponentProps, includeReservedAttributes: boolean) => IThreekitDisplayAttribute[];
60
- export declare const isUuid: (str?: string | undefined) => boolean;
60
+ export declare const isUuid: (str?: string) => boolean;
61
61
  export declare const runDebugger: () => Promise<void>;
62
62
  export declare const loadTrebleConfig: () => Partial<ITrebleConfig>;
63
63
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threekit-tools/treble",
3
- "version": "0.0.79",
3
+ "version": "0.0.82",
4
4
  "author": "Amaan Saeed",
5
5
  "license": "MIT",
6
6
  "files": [