@threekit-tools/treble 0.0.50 → 0.0.54

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 (45) hide show
  1. package/dist/Treble/Treble.d.ts +6 -2
  2. package/dist/Treble/Treble.js +19 -2
  3. package/dist/api/catalog.d.ts +1 -0
  4. package/dist/api/catalog.js +86 -0
  5. package/dist/api/index.d.ts +2 -0
  6. package/dist/api/index.js +2 -0
  7. package/dist/components/FlatForm/index.js +9 -3
  8. package/dist/components/Upload/index.d.ts +12 -0
  9. package/dist/components/Upload/index.js +137 -0
  10. package/dist/components/Upload/upload.styles.d.ts +7 -0
  11. package/dist/components/Upload/upload.styles.js +16 -0
  12. package/dist/components/containers/formInputContainer.d.ts +7 -15
  13. package/dist/components/formComponents.d.ts +2 -0
  14. package/dist/components/formComponents.js +5 -1
  15. package/dist/constants.d.ts +4 -0
  16. package/dist/constants.js +5 -1
  17. package/dist/hooks/useArrayAttribute/index.d.ts +2 -0
  18. package/dist/hooks/useArrayAttribute/index.js +184 -0
  19. package/dist/hooks/useAttribute/index.d.ts +3 -3
  20. package/dist/hooks/useAttribute/index.js +65 -6
  21. package/dist/hooks/useWishlist/index.d.ts +1 -1
  22. package/dist/http/catalog.d.ts +53 -2
  23. package/dist/http/catalog.js +3 -3
  24. package/dist/http/index.d.ts +2 -0
  25. package/dist/http/index.js +2 -0
  26. package/dist/icons/Spinner.d.ts +9 -0
  27. package/dist/icons/Spinner.js +38 -0
  28. package/dist/icons/index.d.ts +3 -2
  29. package/dist/icons/index.js +4 -1
  30. package/dist/index.d.ts +2 -1
  31. package/dist/index.js +3 -1
  32. package/dist/store/attributes.d.ts +1 -1
  33. package/dist/store/attributes.js +13 -9
  34. package/dist/store/price.d.ts +1 -0
  35. package/dist/store/price.js +64 -4
  36. package/dist/store/product.d.ts +2 -1
  37. package/dist/store/product.js +25 -6
  38. package/dist/store/translations.d.ts +2 -1
  39. package/dist/store/translations.js +58 -4
  40. package/dist/store/treble.js +35 -55
  41. package/dist/store/wishlist.d.ts +5 -6
  42. package/dist/store/wishlist.js +44 -31
  43. package/dist/threekit.d.ts +18 -3
  44. package/dist/utils.d.ts +4 -3
  45. package/package.json +1 -1
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ // import { useThreekitSelector, useThreekitDispatch } from '../../store';
3
+ // import { getAttributes, setConfiguration } from '../../store/attributes';
4
+ // import { selectionToConfiguration } from '../../utils';
5
+ // import {
6
+ // IConfigurationColor,
7
+ // ISetConfiguration,
8
+ // IThreekitDisplayAttribute,
9
+ // } from '../../threekit';
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.useArrayAttribute = void 0;
12
+ // export type AttributeValue = string | number | boolean | IConfigurationColor;
13
+ // type UseAttributeError = [undefined, undefined];
14
+ // type UseAttributeSuccess = [
15
+ // IThreekitDisplayAttribute,
16
+ // (val: AttributeValue) => void
17
+ // ];
18
+ var useArrayAttribute = function (attributeIdentifier) {
19
+ if (!attributeIdentifier)
20
+ return [];
21
+ return attributeIdentifier;
22
+ };
23
+ exports.useArrayAttribute = useArrayAttribute;
24
+ // Ordinal Configurator (Psuedo-Array type attribute)
25
+ // export const addItemToArray = (arrayLabel) => (
26
+ // assetId,
27
+ // addToIdx = undefined
28
+ // ) => async (dispatch, getState) => {
29
+ // if (!assetId?.length) return;
30
+ // const { threekit } = getState();
31
+ // const attributesRegExp = new RegExp(`${arrayLabel} [0-9]`);
32
+ // const arrayAttributes = filterAttributesArray(
33
+ // attributesRegExp,
34
+ // threekit.attributes
35
+ // );
36
+ // let updateAttrIdx = addToIdx;
37
+ // let attributeToUpdate;
38
+ // if (isNaN(updateAttrIdx))
39
+ // attributeToUpdate = Object.values(arrayAttributes).find((el, idx) => {
40
+ // if (!el.value.assetId?.length) {
41
+ // updateAttrIdx = idx;
42
+ // return true;
43
+ // }
44
+ // });
45
+ // else attributeToUpdate = arrayAttributes[updateAttrIdx];
46
+ // if (!attributeToUpdate) return message.info('Max items reached');
47
+ // let error;
48
+ // const options = Object.values(arrayAttributes)[0].values.reduce(
49
+ // (output, item) => Object.assign(output, { [item.assetId]: item }),
50
+ // {}
51
+ // );
52
+ // const updatedArray = Object.values(arrayAttributes).reduce(
53
+ // (output, attr, i) => {
54
+ // if (i !== updateAttrIdx) output.push(attr);
55
+ // else output.push({ ...attr, value: { assetId } });
56
+ // return output;
57
+ // },
58
+ // []
59
+ // );
60
+ // // Default Validator
61
+ // error = arrayValidator(options, updatedArray);
62
+ // if (error) return message.info(error);
63
+ // // Custom Validator
64
+ // if (MIDDLEWARE.arrayValidation?.[arrayLabel])
65
+ // error = MIDDLEWARE.arrayValidation?.[arrayLabel](options, updatedArray);
66
+ // if (error) return message.info(error);
67
+ // dispatch(setConfiguration({ [attributeToUpdate.name]: { assetId } }));
68
+ // };
69
+ // export const deleteItemFromArray = (arrayLabel) => (idx) => async (
70
+ // dispatch,
71
+ // getState
72
+ // ) => {
73
+ // if (isNaN(idx)) return;
74
+ // const { threekit } = getState();
75
+ // const attributesRegExp = new RegExp(`${arrayLabel} [0-9]`);
76
+ // const arrayAttributes = filterAttributesArray(
77
+ // attributesRegExp,
78
+ // threekit.attributes
79
+ // );
80
+ // let error;
81
+ // const options = Object.values(arrayAttributes)[0].values.reduce(
82
+ // (output, item) => Object.assign(output, { [item.assetId]: item }),
83
+ // {}
84
+ // );
85
+ // const updatedArray = Object.values(arrayAttributes).filter(
86
+ // (_, i) => i !== idx
87
+ // );
88
+ // // Default Validator
89
+ // error = arrayValidator(options, updatedArray);
90
+ // if (error) return message.info(error);
91
+ // // Custom Validator
92
+ // if (MIDDLEWARE.arrayValidation?.[arrayLabel])
93
+ // error = MIDDLEWARE.arrayValidation?.[arrayLabel](options, updatedArray);
94
+ // if (error) return message.info(error);
95
+ // const arrayConfigurationObj = filterAttributesArray(
96
+ // attributesRegExp,
97
+ // window.threekit.configurator.getConfiguration()
98
+ // );
99
+ // const arrayConfiguration = Object.entries(arrayConfigurationObj);
100
+ // const updatedConfiguration = arrayConfiguration.reduce(
101
+ // (output, [attributeName], i) => {
102
+ // if (i < idx) return output;
103
+ // if (!arrayConfiguration[i + 1])
104
+ // return Object.assign(output, { [attributeName]: { assetId: '' } });
105
+ // return Object.assign(output, {
106
+ // [attributeName]: arrayConfiguration[i + 1][1],
107
+ // });
108
+ // },
109
+ // {}
110
+ // );
111
+ // dispatch(setConfiguration(updatedConfiguration));
112
+ // };
113
+ // export const moveItemWithinArray = (arrayLabel) => (
114
+ // fromIdx,
115
+ // toIdx,
116
+ // config
117
+ // ) => async (dispatch, getState) => {
118
+ // if (isNaN(fromIdx) || isNaN(fromIdx)) return;
119
+ // const { threekit } = getState();
120
+ // const { method } = Object.assign({ method: 'move' }, config);
121
+ // const attributesRegExp =
122
+ // typeof arrayLabel === 'string'
123
+ // ? new RegExp(`${arrayLabel} [0-9]`)
124
+ // : arrayLabel;
125
+ // const arrayAttributes = filterAttributesArray(
126
+ // attributesRegExp,
127
+ // threekit.attributes
128
+ // );
129
+ // let error;
130
+ // const options = Object.values(arrayAttributes)[0].values.reduce(
131
+ // (output, item) => Object.assign(output, { [item.assetId]: item }),
132
+ // {}
133
+ // );
134
+ // let updatedArray;
135
+ // switch (method) {
136
+ // case 'move':
137
+ // updatedArray = Object.values(arrayAttributes).reduce(
138
+ // (output, attr, idx, srcArray) => {
139
+ // if (idx === fromIdx) return output;
140
+ // output.push(attr);
141
+ // if (idx === toIdx) output.push(srcArray[fromIdx]);
142
+ // return output;
143
+ // },
144
+ // []
145
+ // );
146
+ // break;
147
+ // default:
148
+ // break;
149
+ // }
150
+ // // Default Validator
151
+ // error = arrayValidator(options, updatedArray);
152
+ // if (error) return message.info(error);
153
+ // // Custom Validator
154
+ // if (MIDDLEWARE.arrayValidation?.[arrayLabel])
155
+ // error = MIDDLEWARE.arrayValidation?.[arrayLabel](options, updatedArray);
156
+ // if (error) return message.info(error);
157
+ // const arrayConfigurationObj = filterAttributesArray(
158
+ // attributesRegExp,
159
+ // window.threekit.configurator.getConfiguration()
160
+ // );
161
+ // const attributeKeys = Object.keys(arrayConfigurationObj);
162
+ // const arrayConfiguration = Object.values(arrayConfigurationObj);
163
+ // let updatedConfiguration;
164
+ // switch (method) {
165
+ // case 'move':
166
+ // updatedConfiguration = arrayConfiguration.reduce(
167
+ // (output, configuration, idx, srcArray) => {
168
+ // if (idx === fromIdx) return output;
169
+ // output = Object.assign(output, {
170
+ // [attributeKeys.shift()]: configuration,
171
+ // });
172
+ // if (idx === toIdx)
173
+ // output = Object.assign(output, {
174
+ // [attributeKeys.shift()]: srcArray[fromIdx],
175
+ // });
176
+ // return output;
177
+ // },
178
+ // {}
179
+ // );
180
+ // break;
181
+ // default:
182
+ // break;
183
+ // }
184
+ // dispatch(setConfiguration(updatedConfiguration));
@@ -1,9 +1,9 @@
1
- import { IConfigurationColor, IThreekitDisplayAttribute } from '../../threekit';
2
- export declare type AttributeValue = string | number | boolean | IConfigurationColor;
1
+ import { IThreekitDisplayAttribute, IConfigurationColor } from '../../threekit';
2
+ export declare type RawAttributeValue = string | number | boolean | IConfigurationColor | File;
3
3
  declare type UseAttributeError = [undefined, undefined];
4
4
  declare type UseAttributeSuccess = [
5
5
  IThreekitDisplayAttribute,
6
- (val: AttributeValue) => void
6
+ (val: RawAttributeValue) => Promise<void>
7
7
  ];
8
8
  declare type UseAttributeHook = UseAttributeError | UseAttributeSuccess;
9
9
  declare const useAttribute: (attributeName?: string | undefined) => UseAttributeHook;
@@ -1,8 +1,49 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
2
41
  Object.defineProperty(exports, "__esModule", { value: true });
3
42
  var store_1 = require("../../store");
4
43
  var attributes_1 = require("../../store/attributes");
5
44
  var utils_1 = require("../../utils");
45
+ var constants_1 = require("../../constants");
46
+ var api_1 = __importDefault(require("../../api"));
6
47
  var useAttribute = function (attributeName) {
7
48
  if (!attributeName)
8
49
  return [undefined, undefined];
@@ -13,13 +54,31 @@ var useAttribute = function (attributeName) {
13
54
  var attribute = attributes[attributeName];
14
55
  if (!attribute)
15
56
  return [undefined, undefined];
16
- var handleChange = function (value) {
57
+ var handleChange = function (value) { return __awaiter(void 0, void 0, void 0, function () {
58
+ var preppedValue, assetId;
17
59
  var _a;
18
- var preppedValue = (0, utils_1.selectionToConfiguration)(value, attribute.type);
19
- dispatch((0, attributes_1.setConfiguration)((_a = {},
20
- _a[attributeName] = preppedValue,
21
- _a)));
22
- };
60
+ return __generator(this, function (_b) {
61
+ switch (_b.label) {
62
+ case 0:
63
+ if (!(attribute.type === 'Asset' &&
64
+ attribute.assetType === constants_1.ASSET_TYPES.upload)) return [3 /*break*/, 2];
65
+ return [4 /*yield*/, api_1.default.catalog.uploadAsset(value)];
66
+ case 1:
67
+ assetId = _b.sent();
68
+ if (assetId)
69
+ preppedValue = (0, utils_1.selectionToConfiguration)(assetId, attribute.type);
70
+ return [3 /*break*/, 3];
71
+ case 2:
72
+ preppedValue = (0, utils_1.selectionToConfiguration)(value, attribute.type);
73
+ _b.label = 3;
74
+ case 3:
75
+ dispatch((0, attributes_1.setConfiguration)((_a = {},
76
+ _a[attributeName] = preppedValue,
77
+ _a)));
78
+ return [2 /*return*/];
79
+ }
80
+ });
81
+ }); };
23
82
  return [attribute, handleChange];
24
83
  };
25
84
  exports.default = useAttribute;
@@ -1,7 +1,7 @@
1
1
  import { ISaveConfigurationConfig, WishlistArray } from '../../Treble';
2
2
  declare type UseWishlistHook = [
3
3
  WishlistArray,
4
- (config?: ISaveConfigurationConfig) => Promise<void>,
4
+ (config?: ISaveConfigurationConfig) => void,
5
5
  (idx: number) => void,
6
6
  (idx: number) => void,
7
7
  (idx: number) => void,
@@ -1,2 +1,53 @@
1
- export declare const uploadAsset: (formData: FormData) => Promise<import("axios").AxiosResponse<unknown>>;
2
- export declare const getJobStatus: (jobId: string) => Promise<import("axios").AxiosResponse<unknown>>;
1
+ export interface IJob {
2
+ createdAt: string;
3
+ createdBy: string;
4
+ duration: null;
5
+ id: string;
6
+ orgId: string;
7
+ parameters: {
8
+ files: Array<any>;
9
+ image: string;
10
+ };
11
+ priority: number;
12
+ schedulerState: string | 'active';
13
+ status: string | 'pending' | 'stopped';
14
+ taskCount: number;
15
+ taskProgress: null | number;
16
+ taskResultFailures: number;
17
+ taskResultSuccesses: number;
18
+ taskStatusPending: number;
19
+ taskStatusRunning: number;
20
+ taskStatusStopped: number;
21
+ tasks: Array<any>;
22
+ timeElapsed: string;
23
+ timeRemaining: string;
24
+ title: string;
25
+ type: string | 'import';
26
+ updatedAt: string;
27
+ }
28
+ export interface IUploadAsset {
29
+ name: string;
30
+ assetId: string;
31
+ }
32
+ export interface IUploadResponse {
33
+ job: IJob;
34
+ jobId: string;
35
+ msg: string;
36
+ }
37
+ export interface IJobResponse {
38
+ job: IJob;
39
+ output?: {
40
+ font: Array<any>;
41
+ lut: Array<any>;
42
+ material: Array<any>;
43
+ model: Array<any>;
44
+ scene: Array<any>;
45
+ texture: Array<IUploadAsset>;
46
+ upload: Array<any>;
47
+ vector: Array<IUploadAsset>;
48
+ vfb: Array<any>;
49
+ video: Array<any>;
50
+ };
51
+ }
52
+ export declare const uploadAsset: (formData: FormData) => Promise<import("axios").AxiosResponse<IUploadResponse[]>>;
53
+ export declare const getJobStatus: (jobId: string) => Promise<import("axios").AxiosResponse<IJobResponse>>;
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getJobStatus = exports.uploadAsset = void 0;
7
7
  var request_1 = __importDefault(require("./request"));
8
- var CONFIGURATIONS_API_ROUTE = "/api/catalog";
8
+ var CATALOG_API_ROUTE = "/api/catalog";
9
9
  var uploadAsset = function (formData) {
10
10
  var error;
11
11
  if (!formData)
@@ -13,7 +13,7 @@ var uploadAsset = function (formData) {
13
13
  if (error)
14
14
  throw new Error(error);
15
15
  return request_1.default.post({
16
- url: "".concat(CONFIGURATIONS_API_ROUTE, "/assets/upload"),
16
+ url: "".concat(CATALOG_API_ROUTE, "/assets/upload"),
17
17
  formData: formData,
18
18
  });
19
19
  };
@@ -24,6 +24,6 @@ var getJobStatus = function (jobId) {
24
24
  error = 'Requires a jobId';
25
25
  if (error)
26
26
  throw new Error(error);
27
- return request_1.default.get("".concat(CONFIGURATIONS_API_ROUTE, "/jobs/").concat(jobId));
27
+ return request_1.default.get("".concat(CATALOG_API_ROUTE, "/jobs/").concat(jobId));
28
28
  };
29
29
  exports.getJobStatus = getJobStatus;
@@ -2,10 +2,12 @@ import * as orders from './orders';
2
2
  import * as products from './products';
3
3
  import * as configurations from './configurations';
4
4
  import * as pricebook from './pricebook';
5
+ import * as catalog from './catalog';
5
6
  declare const _default: {
6
7
  orders: typeof orders;
7
8
  products: typeof products;
8
9
  configurations: typeof configurations;
9
10
  pricebook: typeof pricebook;
11
+ catalog: typeof catalog;
10
12
  };
11
13
  export default _default;
@@ -23,9 +23,11 @@ var orders = __importStar(require("./orders"));
23
23
  var products = __importStar(require("./products"));
24
24
  var configurations = __importStar(require("./configurations"));
25
25
  var pricebook = __importStar(require("./pricebook"));
26
+ var catalog = __importStar(require("./catalog"));
26
27
  exports.default = {
27
28
  orders: orders,
28
29
  products: products,
29
30
  configurations: configurations,
30
31
  pricebook: pricebook,
32
+ catalog: catalog,
31
33
  };
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ interface ISpinnerProps {
3
+ size?: string;
4
+ }
5
+ declare function Spinner(props: ISpinnerProps): JSX.Element;
6
+ declare namespace Spinner {
7
+ var iconName: string;
8
+ }
9
+ export default Spinner;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ var react_1 = __importDefault(require("react"));
30
+ var styled_components_1 = __importStar(require("styled-components"));
31
+ function Spinner(props) {
32
+ return react_1.default.createElement(Wrapper, { size: props.size });
33
+ }
34
+ var spin = (0, styled_components_1.keyframes)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\nto {\n transform: rotate(360deg);\n}\n"], ["\nto {\n transform: rotate(360deg);\n}\n"])));
35
+ var Wrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: inline-block;\n width: ", ";\n height: ", ";\n border: 5px solid rgba(0, 0, 0, 0.3);\n border-radius: 50%;\n border-top-color: #000;\n animation: ", " 1s ease-in-out infinite;\n"], ["\n display: inline-block;\n width: ", ";\n height: ", ";\n border: 5px solid rgba(0, 0, 0, 0.3);\n border-radius: 50%;\n border-top-color: #000;\n animation: ", " 1s ease-in-out infinite;\n"])), function (props) { return props.size || '40px'; }, function (props) { return props.size || '40px'; }, spin);
36
+ Spinner.iconName = 'spinner';
37
+ exports.default = Spinner;
38
+ var templateObject_1, templateObject_2;
@@ -39,11 +39,12 @@ import UndoIcon from './Undo';
39
39
  import WishlistIcon from './Wishlist';
40
40
  import ZoomInIcon from './ZoomIn';
41
41
  import ZoomOutIcon from './ZoomOut';
42
+ import SpinnerIcon from './Spinner';
42
43
  export interface IIcon extends React.FC {
43
44
  iconName: string;
44
45
  }
45
- export { AddIcon, ArrowLeftIcon, ArrowRightIcon, CameraIcon, CaretDownIcon, CaretUpIcon, CaretLeftIcon, CaretRightIcon, CartIcon, CheckmateIcon, ClipboardIcon, ColorPickerIcon, CopyIcon, DeleteIcon, DoubleCaretLeftIcon, DoubleCaretRightIcon, DownloadIcon, DragIcon, EditIcon, HeartIcon, ImageIcon, InfoIcon, MailIcon, MenuIcon, MoreIcon, NewWindowIcon, PauseIcon, PlayIcon, RedoIcon, RemoveIcon, RulerIcon, SearchIcon, SettingsIcon, ShareIcon, SwitchIcon, TagIcon, UndoIcon, WishlistIcon, ZoomInIcon, ZoomOutIcon, };
46
+ export { AddIcon, ArrowLeftIcon, ArrowRightIcon, CameraIcon, CaretDownIcon, CaretUpIcon, CaretLeftIcon, CaretRightIcon, CartIcon, CheckmateIcon, ClipboardIcon, ColorPickerIcon, CopyIcon, DeleteIcon, DoubleCaretLeftIcon, DoubleCaretRightIcon, DownloadIcon, DragIcon, EditIcon, HeartIcon, ImageIcon, InfoIcon, MailIcon, MenuIcon, MoreIcon, NewWindowIcon, PauseIcon, PlayIcon, RedoIcon, RemoveIcon, RulerIcon, SearchIcon, SettingsIcon, ShareIcon, SwitchIcon, TagIcon, UndoIcon, WishlistIcon, ZoomInIcon, ZoomOutIcon, SpinnerIcon, };
46
47
  declare const _default: {
47
- [x: string]: IIcon;
48
+ [x: string]: IIcon | typeof SpinnerIcon;
48
49
  };
49
50
  export default _default;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  var _a;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ZoomOutIcon = exports.ZoomInIcon = exports.WishlistIcon = exports.UndoIcon = exports.TagIcon = exports.SwitchIcon = exports.ShareIcon = exports.SettingsIcon = exports.SearchIcon = exports.RulerIcon = exports.RemoveIcon = exports.RedoIcon = exports.PlayIcon = exports.PauseIcon = exports.NewWindowIcon = exports.MoreIcon = exports.MenuIcon = exports.MailIcon = exports.InfoIcon = exports.ImageIcon = exports.HeartIcon = exports.EditIcon = exports.DragIcon = exports.DownloadIcon = exports.DoubleCaretRightIcon = exports.DoubleCaretLeftIcon = exports.DeleteIcon = exports.CopyIcon = exports.ColorPickerIcon = exports.ClipboardIcon = exports.CheckmateIcon = exports.CartIcon = exports.CaretRightIcon = exports.CaretLeftIcon = exports.CaretUpIcon = exports.CaretDownIcon = exports.CameraIcon = exports.ArrowRightIcon = exports.ArrowLeftIcon = exports.AddIcon = void 0;
7
+ exports.SpinnerIcon = exports.ZoomOutIcon = exports.ZoomInIcon = exports.WishlistIcon = exports.UndoIcon = exports.TagIcon = exports.SwitchIcon = exports.ShareIcon = exports.SettingsIcon = exports.SearchIcon = exports.RulerIcon = exports.RemoveIcon = exports.RedoIcon = exports.PlayIcon = exports.PauseIcon = exports.NewWindowIcon = exports.MoreIcon = exports.MenuIcon = exports.MailIcon = exports.InfoIcon = exports.ImageIcon = exports.HeartIcon = exports.EditIcon = exports.DragIcon = exports.DownloadIcon = exports.DoubleCaretRightIcon = exports.DoubleCaretLeftIcon = exports.DeleteIcon = exports.CopyIcon = exports.ColorPickerIcon = exports.ClipboardIcon = exports.CheckmateIcon = exports.CartIcon = exports.CaretRightIcon = exports.CaretLeftIcon = exports.CaretUpIcon = exports.CaretDownIcon = exports.CameraIcon = exports.ArrowRightIcon = exports.ArrowLeftIcon = exports.AddIcon = void 0;
8
8
  var Add_1 = __importDefault(require("./Add"));
9
9
  exports.AddIcon = Add_1.default;
10
10
  var ArrowLeft_1 = __importDefault(require("./ArrowLeft"));
@@ -85,6 +85,8 @@ var ZoomIn_1 = __importDefault(require("./ZoomIn"));
85
85
  exports.ZoomInIcon = ZoomIn_1.default;
86
86
  var ZoomOut_1 = __importDefault(require("./ZoomOut"));
87
87
  exports.ZoomOutIcon = ZoomOut_1.default;
88
+ var Spinner_1 = __importDefault(require("./Spinner"));
89
+ exports.SpinnerIcon = Spinner_1.default;
88
90
  exports.default = (_a = {},
89
91
  _a[Add_1.default.iconName] = Add_1.default,
90
92
  _a[ArrowLeft_1.default.iconName] = ArrowLeft_1.default,
@@ -126,4 +128,5 @@ exports.default = (_a = {},
126
128
  _a[Wishlist_1.default.iconName] = Wishlist_1.default,
127
129
  _a[ZoomIn_1.default.iconName] = ZoomIn_1.default,
128
130
  _a[ZoomOut_1.default.iconName] = ZoomOut_1.default,
131
+ _a[Spinner_1.default.iconName] = Spinner_1.default,
129
132
  _a);
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ import Strips from './components/Strips';
19
19
  import Swatch from './components/Swatch';
20
20
  import Tiles from './components/Tiles';
21
21
  import TilesGroup from './components/TilesGroup';
22
+ import Upload from './components/Upload';
22
23
  import ProductName from './components/ProductName';
23
24
  import ProductDescription from './components/ProductDescription';
24
25
  import AttributeTitle from './components/AttributeTitle';
@@ -40,4 +41,4 @@ import icons from './icons';
40
41
  export * from './icons';
41
42
  import TrebleApp from './components/TrebleApp';
42
43
  import ProductLayout from './components/ProductLayout';
43
- export { useAttribute, useConfigurator, useMetadata, useName, usePlayerLoadingStatus, usePrice, useThreekitInitStatus, useZoom, useSnapshot, useWishlist, useShare, usePlayerPortal, ThreekitProvider, Player, Button, Cards, Dropdown, Strips, Swatch, Tiles, TilesGroup, ProductName, ProductDescription, AttributeTitle, AttributeValue, TotalPrice, message, Modal, Drawer, Accordion, Tabs, PortalToElement, AwaitThreekitLoad, FlatForm, Zoom, Snapshots, Wishlist, Share, icons, TrebleApp, ProductLayout, };
44
+ export { useAttribute, useConfigurator, useMetadata, useName, usePlayerLoadingStatus, usePrice, useThreekitInitStatus, useZoom, useSnapshot, useWishlist, useShare, usePlayerPortal, ThreekitProvider, Player, Button, Cards, Dropdown, Strips, Swatch, Tiles, TilesGroup, Upload, ProductName, ProductDescription, AttributeTitle, AttributeValue, TotalPrice, message, Modal, Drawer, Accordion, Tabs, PortalToElement, AwaitThreekitLoad, FlatForm, Zoom, Snapshots, Wishlist, Share, icons, TrebleApp, ProductLayout, };
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  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.Tabs = exports.Accordion = exports.Drawer = exports.Modal = exports.message = exports.TotalPrice = exports.AttributeValue = exports.AttributeTitle = exports.ProductDescription = exports.ProductName = exports.TilesGroup = exports.Tiles = exports.Swatch = exports.Strips = exports.Dropdown = exports.Cards = exports.Button = exports.Player = exports.ThreekitProvider = exports.usePlayerPortal = exports.useShare = exports.useWishlist = exports.useSnapshot = exports.useZoom = exports.useThreekitInitStatus = exports.usePrice = exports.usePlayerLoadingStatus = exports.useName = exports.useMetadata = exports.useConfigurator = exports.useAttribute = void 0;
16
+ exports.ProductLayout = exports.TrebleApp = exports.icons = exports.Share = exports.Wishlist = exports.Snapshots = exports.Zoom = exports.FlatForm = exports.AwaitThreekitLoad = exports.PortalToElement = exports.Tabs = exports.Accordion = exports.Drawer = exports.Modal = exports.message = exports.TotalPrice = exports.AttributeValue = exports.AttributeTitle = exports.ProductDescription = exports.ProductName = exports.Upload = exports.TilesGroup = exports.Tiles = exports.Swatch = exports.Strips = exports.Dropdown = exports.Cards = exports.Button = exports.Player = exports.ThreekitProvider = exports.usePlayerPortal = exports.useShare = exports.useWishlist = exports.useSnapshot = exports.useZoom = exports.useThreekitInitStatus = exports.usePrice = exports.usePlayerLoadingStatus = exports.useName = exports.useMetadata = exports.useConfigurator = exports.useAttribute = void 0;
17
17
  // Hooks
18
18
  var useAttribute_1 = __importDefault(require("./hooks/useAttribute"));
19
19
  exports.useAttribute = useAttribute_1.default;
@@ -59,6 +59,8 @@ var Tiles_1 = __importDefault(require("./components/Tiles"));
59
59
  exports.Tiles = Tiles_1.default;
60
60
  var TilesGroup_1 = __importDefault(require("./components/TilesGroup"));
61
61
  exports.TilesGroup = TilesGroup_1.default;
62
+ var Upload_1 = __importDefault(require("./components/Upload"));
63
+ exports.Upload = Upload_1.default;
62
64
  // Display
63
65
  var ProductName_1 = __importDefault(require("./components/ProductName"));
64
66
  exports.ProductName = ProductName_1.default;
@@ -7,7 +7,7 @@ export declare type AttributesState = Record<string, IThreekitDisplayAttribute>;
7
7
  /*****************************************************
8
8
  * Actions
9
9
  ****************************************************/
10
- export declare const setAttributes: import("@reduxjs/toolkit").ActionCreatorWithPayload<IThreekitDisplayAttribute[], string>;
10
+ export declare const setAttributes: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[attributes: IThreekitDisplayAttribute[]], Record<string, IThreekitDisplayAttribute>, "treble/attributes/set-attributes", never, never>;
11
11
  /*****************************************************
12
12
  * Slice
13
13
  ****************************************************/
@@ -39,13 +39,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.setConfiguration = exports.getAttributes = exports.setAttributes = void 0;
40
40
  var toolkit_1 = require("@reduxjs/toolkit");
41
41
  var treble_1 = require("./treble");
42
- // export interface AttributesState {
43
- // attributes: Record<string, IThreekitDisplayAttribute>;
44
- // }
45
42
  /*****************************************************
46
43
  * Actions
47
44
  ****************************************************/
48
- exports.setAttributes = (0, toolkit_1.createAction)('setAttributes');
45
+ exports.setAttributes = (0, toolkit_1.createAction)('treble/attributes/set-attributes', function (attributes) {
46
+ var payload = attributes.reduce(function (output, attr) {
47
+ var _a;
48
+ return Object.assign(output, (_a = {}, _a[attr.name] = attr, _a));
49
+ }, {});
50
+ return { payload: payload };
51
+ });
49
52
  /*****************************************************
50
53
  * State and Data
51
54
  ****************************************************/
@@ -58,12 +61,15 @@ var reducer = (0, toolkit_1.createSlice)({
58
61
  initialState: initialState,
59
62
  reducers: {},
60
63
  extraReducers: function (builder) {
61
- builder.addCase(exports.setAttributes, function (state, action) {
62
- state = action.payload.reduce(function (output, attr) {
64
+ builder.addCase(treble_1.setThreekitInitialized, function () {
65
+ var attributes = window.threekit.configurator.getDisplayAttributes();
66
+ return attributes.reduce(function (output, attr) {
63
67
  var _a;
64
68
  return Object.assign(output, (_a = {}, _a[attr.name] = attr, _a));
65
69
  }, {});
66
- return state;
70
+ });
71
+ builder.addCase(exports.setAttributes, function (_, action) {
72
+ return action.payload;
67
73
  });
68
74
  },
69
75
  }).reducer;
@@ -72,8 +78,6 @@ var reducer = (0, toolkit_1.createSlice)({
72
78
  ****************************************************/
73
79
  // Attributes
74
80
  var getAttributes = function (state) {
75
- // const { isThreekitLoaded, attributes, language, translations } =
76
- // state.threekit;
77
81
  var attributes = state.attributes;
78
82
  var isThreekitInitialized = state.treble.isThreekitInitialized;
79
83
  var _a = state.translations, language = _a.language, translations = _a.translations;
@@ -20,6 +20,7 @@ export interface IPrice {
20
20
  ****************************************************/
21
21
  export declare const setPriceConfig: import("@reduxjs/toolkit").ActionCreatorWithPayload<IPriceConfig, string>;
22
22
  export declare const setPrice: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, string>;
23
+ export declare const initPrice: () => (dispatch: ThreekitDispatch) => Promise<void>;
23
24
  declare const reducer: import("redux").Reducer<PriceState, import("redux").AnyAction>;
24
25
  /*****************************************************
25
26
  * Standard Selectors