@threekit-tools/treble 0.0.10-alpha.16 → 0.0.14

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 (42) hide show
  1. package/README.md +163 -156
  2. package/dist/Treble/Snapshots.d.ts +28 -0
  3. package/dist/Treble/Snapshots.js +280 -0
  4. package/dist/Treble/Treble.d.ts +9 -27
  5. package/dist/Treble/Treble.js +34 -350
  6. package/dist/Treble/Wishlist.d.ts +18 -0
  7. package/dist/Treble/Wishlist.js +137 -0
  8. package/dist/Treble/index.d.ts +2 -0
  9. package/dist/Treble/index.js +2 -0
  10. package/dist/components/Accordion/accordion.styles.d.ts +5 -0
  11. package/dist/components/Accordion/accordion.styles.js +13 -0
  12. package/dist/components/Accordion/index.d.ts +14 -0
  13. package/dist/components/Accordion/index.js +63 -0
  14. package/dist/components/Cards/index.d.ts +2 -2
  15. package/dist/components/Drawer/index.js +0 -1
  16. package/dist/components/Dropdown/dropdown.styles.js +1 -3
  17. package/dist/components/Dropdown/index.d.ts +2 -2
  18. package/dist/components/FormComponentDescription/index.js +1 -1
  19. package/dist/components/Modal/index.js +3 -1
  20. package/dist/components/Share/index.d.ts +37 -0
  21. package/dist/components/Share/index.js +51 -0
  22. package/dist/components/Strips/index.d.ts +2 -2
  23. package/dist/components/Strips/index.js +1 -1
  24. package/dist/components/Swatch/index.d.ts +2 -2
  25. package/dist/components/Tabs/index.d.ts +14 -0
  26. package/dist/components/Tabs/index.js +53 -0
  27. package/dist/components/Tabs/tabs.styles.d.ts +8 -0
  28. package/dist/components/Tabs/tabs.styles.js +20 -0
  29. package/dist/components/ThreekitProvider/index.d.ts +11 -2
  30. package/dist/components/ThreekitProvider/index.js +3 -3
  31. package/dist/components/Tiles/index.d.ts +2 -2
  32. package/dist/components/TilesGroup/index.d.ts +2 -2
  33. package/dist/components/containers/formInputContainer.d.ts +1 -1
  34. package/dist/hooks/useShare/index.d.ts +3 -0
  35. package/dist/hooks/useShare/index.js +71 -0
  36. package/dist/hooks/useWishlist/index.d.ts +2 -3
  37. package/dist/index.d.ts +5 -1
  38. package/dist/index.js +9 -1
  39. package/dist/store/threekit.d.ts +5 -5
  40. package/dist/store/threekit.js +7 -6
  41. package/dist/threekit.d.ts +2 -0
  42. package/package.json +6 -4
@@ -0,0 +1,63 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.Accordion = void 0;
26
+ var react_1 = __importStar(require("react"));
27
+ var accordion_styles_1 = require("./accordion.styles");
28
+ var CaretDown_1 = __importDefault(require("../../icons/CaretDown"));
29
+ var AccordionItem = function (props) {
30
+ var selected = props.selected, handleClick = props.handleClick, label = props.label, children = props.children;
31
+ return (react_1.default.createElement(accordion_styles_1.Wrapper, { selected: selected },
32
+ react_1.default.createElement("div", { onClick: handleClick },
33
+ react_1.default.createElement("div", null, label),
34
+ react_1.default.createElement("div", null),
35
+ react_1.default.createElement("div", null,
36
+ react_1.default.createElement(CaretDown_1.default
37
+ // style={{
38
+ // transition: `all 0.3s`,
39
+ // transform: selected ? 'rotate(180deg)' : 'rotate(0)',
40
+ // }}
41
+ , null))),
42
+ react_1.default.createElement("div", null,
43
+ react_1.default.createElement("div", null, children))));
44
+ };
45
+ var Accordion = function (props) {
46
+ var _a = (0, react_1.useState)(undefined), selected = _a[0], setSelected = _a[1];
47
+ var handleSelect = function (idx) {
48
+ return setSelected(idx === selected ? undefined : idx);
49
+ };
50
+ if (!props.children)
51
+ return null;
52
+ return react_1.default.Children.map(props.children, function (child, idx) {
53
+ if (child.type !== AccordionItem)
54
+ return null;
55
+ return react_1.default.cloneElement(child, {
56
+ selected: selected === idx,
57
+ handleClick: function () { return handleSelect(idx); },
58
+ });
59
+ });
60
+ };
61
+ exports.Accordion = Accordion;
62
+ exports.Accordion.AccordionItem = AccordionItem;
63
+ exports.default = exports.Accordion;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import PropTypes from 'prop-types';
3
- import { IFormComponenetProps, IOption } from '../containers/formInputContainer';
4
- export interface ICards extends IFormComponenetProps<IOption> {
3
+ import { IFormComponentProps, IOption } from '../containers/formInputContainer';
4
+ export interface ICards extends IFormComponentProps<IOption> {
5
5
  showThumbnail?: boolean;
6
6
  showPrice?: boolean;
7
7
  showDescription?: boolean;
@@ -45,7 +45,6 @@ var Drawer = function (props) {
45
45
  var title = props.title, children = props.children, handleClose = props.handleClose, showHeader = props.showHeader, className = props.className;
46
46
  var _a = (0, react_1.useState)(false), show = _a[0], setShow = _a[1];
47
47
  (0, react_1.useEffect)(function () {
48
- ;
49
48
  (function () {
50
49
  setShow(true);
51
50
  })();
@@ -30,9 +30,7 @@ exports.OptionTitle = styled_components_1.default.div(templateObject_6 || (templ
30
30
  exports.OptionDescription = styled_components_1.default.div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n color: ", ";\n font-weight: 400;\n font-size: 13px;\n padding-bottom: 5px;\n margin-right: 10px;\n font-family: ", ";\n"], ["\n color: ", ";\n font-weight: 400;\n font-size: 13px;\n padding-bottom: 5px;\n margin-right: 10px;\n font-family: ", ";\n"])), function (props) { return props.theme.textColor; }, function (props) { return props.theme.fontFamily; });
31
31
  exports.OptionPrice = styled_components_1.default.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n color: ", ";\n font-weight: 600;\n font-size: 14px;\n text-align: right;\n font-family: ", ";\n\n height: max-content;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n"], ["\n color: ", ";\n font-weight: 600;\n font-size: 14px;\n text-align: right;\n font-family: ", ";\n\n height: max-content;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n"])), function (props) { return props.theme.textColorSecondary; }, function (props) { return props.theme.fontFamily; });
32
32
  exports.IconWrapper = styled_components_1.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n margin-left: 8px;\n height: 20px;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n"], ["\n margin-left: 8px;\n height: 20px;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n"])));
33
- exports.OptionWrapper = (0, styled_components_1.default)(exports.OptionWrapperStyles)(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n background: ", ";\n\n ", " {\n color: ", ";\n }\n\n ", " {\n color: ", ";\n }\n ", " {\n color: ", ";\n }\n\n &:hover {\n ", "\n }\n"], ["\n background: ", ";\n\n ", " {\n color: ", ";\n }\n\n ", " {\n color: ", ";\n }\n ", " {\n color: ", ";\n }\n\n &:hover {\n ", "\n }\n"])), function (props) {
34
- return props.selected ? props.theme.primaryColor : '#fff';
35
- }, exports.OptionDescription, function (props) { return (props.selected ? '#fff' : props.theme.textColor); }, exports.OptionTitle, function (props) { return (props.selected ? '#fff' : props.theme.textColor); }, exports.OptionPrice, function (props) { return (props.selected ? '#fff' : props.theme.textColor); }, function (props) {
33
+ exports.OptionWrapper = (0, styled_components_1.default)(exports.OptionWrapperStyles)(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n background: ", ";\n\n ", " {\n color: ", ";\n }\n\n ", " {\n color: ", ";\n }\n ", " {\n color: ", ";\n }\n\n &:hover {\n ", "\n }\n"], ["\n background: ", ";\n\n ", " {\n color: ", ";\n }\n\n ", " {\n color: ", ";\n }\n ", " {\n color: ", ";\n }\n\n &:hover {\n ", "\n }\n"])), function (props) { return (props.selected ? props.theme.primaryColor : '#fff'); }, exports.OptionDescription, function (props) { return (props.selected ? '#fff' : props.theme.textColor); }, exports.OptionTitle, function (props) { return (props.selected ? '#fff' : props.theme.textColor); }, exports.OptionPrice, function (props) { return (props.selected ? '#fff' : props.theme.textColor); }, function (props) {
36
34
  return props.selected ? '' : "background: ".concat(props.theme.primaryColor, "18;");
37
35
  });
38
36
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import PropTypes from 'prop-types';
3
- import { IFormComponenetProps, IOption } from '../containers/formInputContainer';
4
- export interface IDropdown extends IFormComponenetProps<IOption> {
3
+ import { IFormComponentProps, IOption } from '../containers/formInputContainer';
4
+ export interface IDropdown extends IFormComponentProps<IOption> {
5
5
  showThumbnail?: boolean;
6
6
  showPrice?: boolean;
7
7
  showDescription?: boolean;
@@ -10,7 +10,7 @@ var FormComponentDescription = function (props) {
10
10
  var description = props.description, className = props.className;
11
11
  if (!description)
12
12
  return null;
13
- return react_1.default.createElement(formComponentDescription_styles_1.Wrapper, { className: "".concat(className, "-description") }, description);
13
+ return (react_1.default.createElement(formComponentDescription_styles_1.Wrapper, { className: "".concat(className, "-description") }, description));
14
14
  };
15
15
  exports.FormComponentDescription = FormComponentDescription;
16
16
  exports.default = exports.FormComponentDescription;
@@ -65,5 +65,7 @@ exports.ModalComponent.defaultProps = {
65
65
  };
66
66
  exports.Modal.componentName = 'modal';
67
67
  exports.default = (function (props) {
68
- return props.show ? react_dom_1.default.createPortal(react_1.default.createElement(exports.Modal, __assign({}, props)), document.body) : null;
68
+ return props.show
69
+ ? react_dom_1.default.createPortal(react_1.default.createElement(exports.Modal, __assign({}, props)), document.body)
70
+ : null;
69
71
  });
@@ -0,0 +1,37 @@
1
+ /// <reference types="react" />
2
+ import PropTypes from 'prop-types';
3
+ import { BUTTON_SHAPES, BUTTON_TYPES } from '../Button';
4
+ interface ShareProps {
5
+ shape?: BUTTON_SHAPES;
6
+ type?: BUTTON_TYPES;
7
+ className?: string;
8
+ message?: string;
9
+ }
10
+ export declare const Share: {
11
+ (props: ShareProps): JSX.Element | null;
12
+ propTypes: {
13
+ className: PropTypes.Requireable<string>;
14
+ /**
15
+ * The presentational type of the input component. Options
16
+ * include: `hollow`, `standard`, `accent`, `primary`
17
+ */
18
+ type: PropTypes.Requireable<string>;
19
+ /**
20
+ * Used to set the shape of the Widget button. Options
21
+ * include: `square`, `round`
22
+ */
23
+ shape: PropTypes.Requireable<string>;
24
+ /**
25
+ * Used to set an overwrite of the message presented to the user
26
+ * when the share URL has been successfully copied.
27
+ */
28
+ message: PropTypes.Requireable<string>;
29
+ };
30
+ defaultProps: {
31
+ className: string;
32
+ shape: string;
33
+ type: string;
34
+ message: string;
35
+ };
36
+ };
37
+ export default Share;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Share = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var prop_types_1 = __importDefault(require("prop-types"));
9
+ var Button_1 = __importDefault(require("../Button"));
10
+ var icons_1 = require("../../icons");
11
+ var useThreekitInitStatus_1 = __importDefault(require("../../hooks/useThreekitInitStatus"));
12
+ var useShare_1 = __importDefault(require("../../hooks/useShare"));
13
+ var utils_1 = require("../../utils");
14
+ var Share = function (props) {
15
+ var _a = Object.assign({ type: 'threekit', shape: 'round', message: 'Link copied!' }, props), shape = _a.shape, type = _a.type, className = _a.className, message = _a.message;
16
+ var hasLoaded = (0, useThreekitInitStatus_1.default)();
17
+ var handleShare = (0, useShare_1.default)();
18
+ if (!hasLoaded || !handleShare)
19
+ return null;
20
+ var cls = (0, utils_1.generateWidgetClassName)('share', className);
21
+ var handleClick = function () {
22
+ handleShare(message);
23
+ };
24
+ return (react_1.default.createElement(Button_1.default, { className: cls, shape: shape, type: type, icon: icons_1.ShareIcon.iconName, onClick: handleClick }));
25
+ };
26
+ exports.Share = Share;
27
+ exports.Share.propTypes = {
28
+ className: prop_types_1.default.string,
29
+ /**
30
+ * The presentational type of the input component. Options
31
+ * include: `hollow`, `standard`, `accent`, `primary`
32
+ */
33
+ type: prop_types_1.default.string,
34
+ /**
35
+ * Used to set the shape of the Widget button. Options
36
+ * include: `square`, `round`
37
+ */
38
+ shape: prop_types_1.default.string,
39
+ /**
40
+ * Used to set an overwrite of the message presented to the user
41
+ * when the share URL has been successfully copied.
42
+ */
43
+ message: prop_types_1.default.string,
44
+ };
45
+ exports.Share.defaultProps = {
46
+ className: '',
47
+ shape: 'round',
48
+ type: 'threekit',
49
+ message: 'Link copied!',
50
+ };
51
+ exports.default = exports.Share;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import PropTypes from 'prop-types';
3
- import { IFormComponenetProps, IOption } from '../containers/formInputContainer';
4
- export interface IStrips extends IFormComponenetProps<IOption> {
3
+ import { IFormComponentProps, IOption } from '../containers/formInputContainer';
4
+ export interface IStrips extends IFormComponentProps<IOption> {
5
5
  showThumbnail?: boolean;
6
6
  showPrice?: boolean;
7
7
  showDescription?: boolean;
@@ -23,7 +23,7 @@ var Title = function (props) {
23
23
  var name = props.name, className = props.className;
24
24
  if (!name)
25
25
  return null;
26
- return react_1.default.createElement(strips_styles_1.StripTitle, { className: "".concat(className, " option-title") }, name);
26
+ return (react_1.default.createElement(strips_styles_1.StripTitle, { className: "".concat(className, " option-title") }, name));
27
27
  };
28
28
  var Description = function (props) {
29
29
  var description = props.description, className = props.className;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import PropTypes from 'prop-types';
3
- import { IFormComponenetProps, IOption } from '../containers/formInputContainer';
4
- export interface ISwatch extends IFormComponenetProps<IOption> {
3
+ import { IFormComponentProps, IOption } from '../containers/formInputContainer';
4
+ export interface ISwatch extends IFormComponentProps<IOption> {
5
5
  showThumbnail?: boolean;
6
6
  showPrice?: boolean;
7
7
  showDescription?: boolean;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface TabPaneProps extends React.FC {
3
+ selected: boolean;
4
+ label: string;
5
+ handleClick: () => void;
6
+ }
7
+ interface TabsProps<T> {
8
+ children: React.FunctionComponentElement<T>;
9
+ }
10
+ export declare const Tabs: {
11
+ ({ children }: TabsProps<TabPaneProps>): JSX.Element | null;
12
+ TabPane: React.FC<{}>;
13
+ };
14
+ export default Tabs;
@@ -0,0 +1,53 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.Tabs = void 0;
23
+ var react_1 = __importStar(require("react"));
24
+ var tabs_styles_1 = require("./tabs.styles");
25
+ var TabPane = function (props) { return react_1.default.createElement(react_1.default.Fragment, null, props.children); };
26
+ var Tabs = function (_a) {
27
+ var children = _a.children;
28
+ var _b = (0, react_1.useState)(0), selected = _b[0], setSelected = _b[1];
29
+ var handleSelect = function (idx) {
30
+ return setSelected(idx === selected ? undefined : idx);
31
+ };
32
+ if (!children)
33
+ return null;
34
+ return (react_1.default.createElement(tabs_styles_1.Wrapper, null,
35
+ react_1.default.createElement(tabs_styles_1.TabsWrapper, null, react_1.default.Children.map(children, function (child, idx) {
36
+ if (child.type !== TabPane)
37
+ return null;
38
+ return (react_1.default.createElement(tabs_styles_1.Tab, { selected: selected === idx, onClick: function () { return handleSelect(idx); } }, child.props.label));
39
+ })),
40
+ react_1.default.createElement(tabs_styles_1.TabContent, null, react_1.default.Children.map(children, function (child, idx) {
41
+ if (child.type !== TabPane)
42
+ return null;
43
+ if (selected !== idx)
44
+ return null;
45
+ return react_1.default.cloneElement(child, {
46
+ selected: selected === idx,
47
+ handleClick: function () { return handleSelect(idx); },
48
+ });
49
+ }))));
50
+ };
51
+ exports.Tabs = Tabs;
52
+ exports.Tabs.TabPane = TabPane;
53
+ exports.default = exports.Tabs;
@@ -0,0 +1,8 @@
1
+ interface TabWrapper {
2
+ selected?: boolean;
3
+ }
4
+ export declare const Wrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
5
+ export declare const TabsWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
6
+ export declare const Tab: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, TabWrapper, never>;
7
+ export declare const TabContent: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
8
+ export {};
@@ -0,0 +1,20 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TabContent = exports.Tab = exports.TabsWrapper = exports.Wrapper = void 0;
11
+ var styled_components_1 = __importDefault(require("styled-components"));
12
+ exports.Wrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([""], [""])));
13
+ exports.TabsWrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n flex-direction: row;\n\n width: 100%;\n border-bottom: 1px solid ", ";\n"], ["\n display: flex;\n flex-direction: row;\n\n width: 100%;\n border-bottom: 1px solid ", ";\n"])), function (props) { return props.theme.borderColorBase; });
14
+ exports.Tab = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n transform: translateY(1px);\n\n cursor: pointer;\n width: max-content;\n padding: 10px 2px;\n margin: 0px 15px;\n\n border-bottom: ", ";\n\n text-align: center;\n font-size: ", ";\n font-family: ", ";\n font-weight: 600;\n color: ", ";\n\n &:hover {\n color: ", ";\n }\n"], ["\n transform: translateY(1px);\n\n cursor: pointer;\n width: max-content;\n padding: 10px 2px;\n margin: 0px 15px;\n\n border-bottom: ", ";\n\n text-align: center;\n font-size: ", ";\n font-family: ", ";\n font-weight: 600;\n color: ", ";\n\n &:hover {\n color: ", ";\n }\n"])), function (props) {
15
+ return props.selected ? "2px solid ".concat(props.theme.primaryColor) : 'none';
16
+ }, function (props) { return props.theme.fontBaseSize; }, function (props) { return props.theme.fontFamily; }, function (props) {
17
+ return props.selected ? props.theme.primaryColor : props.theme.headingColor;
18
+ }, function (props) { return props.theme.primaryColor; });
19
+ exports.TabContent = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n padding: 10px;\n font-family: ", ";\n"], ["\n padding: 10px;\n font-family: ", ";\n"])), function (props) { return props.theme.fontFamily; });
20
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
@@ -1,7 +1,16 @@
1
1
  import React from 'react';
2
- import { ILaunchConfig } from '../../store/threekit';
2
+ import { ILaunchConfig, IThreekitCredentials } from '../../store/threekit';
3
+ interface ICredentials {
4
+ preview: IThreekitCredentials;
5
+ 'admin-fts': IThreekitCredentials;
6
+ }
7
+ interface Theme {
8
+ [key: string]: string | number;
9
+ }
3
10
  export interface ThreekitProviderProps {
4
- config: ILaunchConfig;
11
+ credentials: ICredentials;
12
+ playerConfig?: ILaunchConfig;
13
+ theme?: Theme;
5
14
  threekitEnv?: string;
6
15
  children: React.ReactNode;
7
16
  }
@@ -34,18 +34,18 @@ var App = function (props) {
34
34
  (0, react_1.useEffect)(function () {
35
35
  var init = function () {
36
36
  var threekitEnv = props.threekitEnv || process.env.THREEKIT_ENV;
37
- var threekitConfig = Object.assign({ threekitEnv: threekitEnv }, props.config);
37
+ var threekitConfig = Object.assign({ threekitEnv: threekitEnv }, props.credentials, props.playerConfig);
38
38
  dispatch((0, threekit_1.launch)(threekitConfig));
39
39
  };
40
40
  init();
41
41
  return;
42
- }, [props.config, props.threekitEnv]);
42
+ }, [props.credentials, props.threekitEnv, , props.playerConfig]);
43
43
  return react_1.default.createElement(react_1.default.Fragment, null, props.children);
44
44
  };
45
45
  var ThreekitProvider = function (props) {
46
46
  return (react_1.default.createElement(react_redux_1.Provider, { store: store_1.default },
47
47
  react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme_1.default },
48
48
  react_1.default.createElement(GlobalStyles_styles_1.default, null),
49
- react_1.default.createElement(App, { config: props.config, threekitEnv: props.threekitEnv }, props.children))));
49
+ react_1.default.createElement(App, { theme: props.theme, credentials: props.credentials, playerConfig: props.playerConfig, threekitEnv: props.threekitEnv }, props.children))));
50
50
  };
51
51
  exports.default = ThreekitProvider;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import PropTypes from 'prop-types';
3
- import { IFormComponenetProps, IOptionShared } from '../containers/formInputContainer';
4
- export interface ITiles extends IFormComponenetProps<IOptionShared> {
3
+ import { IFormComponentProps, IOptionShared } from '../containers/formInputContainer';
4
+ export interface ITiles extends IFormComponentProps<IOptionShared> {
5
5
  columns?: number;
6
6
  }
7
7
  export declare const Tiles: {
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import PropTypes from 'prop-types';
3
- import { IFormComponenetProps, IOptionShared } from '../containers/formInputContainer';
4
- export interface ITilesGroup extends IFormComponenetProps<IOptionShared> {
3
+ import { IFormComponentProps, IOptionShared } from '../containers/formInputContainer';
4
+ export interface ITilesGroup extends IFormComponentProps<IOptionShared> {
5
5
  columns?: number;
6
6
  }
7
7
  export declare const TilesGroup: {
@@ -23,7 +23,7 @@ export interface IFormContainerProps {
23
23
  onClick?: (value: string) => void;
24
24
  className?: string;
25
25
  }
26
- export interface IFormComponenetProps<T extends IOptionShared> {
26
+ export interface IFormComponentProps<T extends IOptionShared> {
27
27
  title?: string;
28
28
  description?: string;
29
29
  value?: string;
@@ -0,0 +1,3 @@
1
+ declare type UseShareHook = undefined | ((msg: string | undefined) => Promise<void>);
2
+ declare const useShare: () => UseShareHook;
3
+ export default useShare;
@@ -0,0 +1,71 @@
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
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var store_1 = require("../../store");
43
+ var threekit_1 = require("../../store/threekit");
44
+ var message_1 = __importDefault(require("../../components/message"));
45
+ var utils_1 = require("../../utils");
46
+ var useShare = function () {
47
+ var isLoaded = (0, store_1.useThreekitSelector)(threekit_1.isThreekitLoaded);
48
+ if (!isLoaded)
49
+ return undefined;
50
+ var handleShare = function (msg) {
51
+ if (msg === void 0) { msg = 'Link copied'; }
52
+ return __awaiter(void 0, void 0, void 0, function () {
53
+ var configuration;
54
+ return __generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0: return [4 /*yield*/, window.threekit.treble.saveConfiguration()];
57
+ case 1:
58
+ configuration = _a.sent();
59
+ if (!configuration)
60
+ return [2 /*return*/];
61
+ (0, utils_1.copyToClipboard)(configuration.resumableUrl);
62
+ if (msg === null || msg === void 0 ? void 0 : msg.length)
63
+ message_1.default.info(msg);
64
+ return [2 /*return*/];
65
+ }
66
+ });
67
+ });
68
+ };
69
+ return handleShare;
70
+ };
71
+ exports.default = useShare;
@@ -1,7 +1,6 @@
1
- import { IConfigurationResponse } from '../../http/configurations';
2
- import { ISaveConfigurationConfig } from '../../Treble';
1
+ import { ISaveConfigurationConfig, WishlistArray } from '../../Treble';
3
2
  declare type UseWishlistHook = [
4
- Array<IConfigurationResponse>,
3
+ WishlistArray,
5
4
  (config?: ISaveConfigurationConfig) => Promise<void>,
6
5
  (idx: number) => void,
7
6
  (idx: number) => void,
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ import useThreekitInitStatus from './hooks/useThreekitInitStatus';
8
8
  import useZoom from './hooks/useZoom';
9
9
  import useSnapshot from './hooks/useSnapshot';
10
10
  import useWishlist from './hooks/useWishlist';
11
+ import useShare from './hooks/useShare';
11
12
  import ThreekitProvider from './components/ThreekitProvider';
12
13
  import Player from './components/Player';
13
14
  import Button from './components/Button';
@@ -25,10 +26,13 @@ import TotalPrice from './components/TotalPrice';
25
26
  import message from './components/message';
26
27
  import Modal from './components/TotalPrice';
27
28
  import Drawer from './components/Drawer';
29
+ import Accordion from './components/Accordion';
30
+ import Tabs from './components/Tabs';
28
31
  import PortalToElement from './components/PortalToElement';
29
32
  import AwaitThreekitLoad from './components/AwaitThreekitLoad';
30
33
  import FlatForm from './components/FlatForm';
31
34
  import Zoom from './components/Zoom';
32
35
  import Snapshots from './components/Snapshots';
33
36
  import Wishlist from './components/Wishlist';
34
- export { useAttribute, useConfigurator, useMetadata, useName, usePlayerLoadingStatus, usePrice, useThreekitInitStatus, useZoom, useSnapshot, useWishlist, ThreekitProvider, Player, Button, Cards, Dropdown, Strips, Swatch, Tiles, TilesGroup, ProductName, ProductDescription, AttributeTitle, AttributeValue, TotalPrice, message, Modal, Drawer, PortalToElement, AwaitThreekitLoad, FlatForm, Zoom, Snapshots, Wishlist, };
37
+ import Share from './components/Share';
38
+ export { useAttribute, useConfigurator, useMetadata, useName, usePlayerLoadingStatus, usePrice, useThreekitInitStatus, useZoom, useSnapshot, useWishlist, useShare, 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, };
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Wishlist = exports.Snapshots = exports.Zoom = exports.FlatForm = exports.AwaitThreekitLoad = exports.PortalToElement = 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.useWishlist = exports.useSnapshot = exports.useZoom = exports.useThreekitInitStatus = exports.usePrice = exports.usePlayerLoadingStatus = exports.useName = exports.useMetadata = exports.useConfigurator = exports.useAttribute = void 0;
6
+ 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.useShare = exports.useWishlist = exports.useSnapshot = exports.useZoom = exports.useThreekitInitStatus = exports.usePrice = exports.usePlayerLoadingStatus = exports.useName = exports.useMetadata = exports.useConfigurator = exports.useAttribute = void 0;
7
7
  // Hooks
8
8
  var useAttribute_1 = __importDefault(require("./hooks/useAttribute"));
9
9
  exports.useAttribute = useAttribute_1.default;
@@ -25,6 +25,8 @@ var useSnapshot_1 = __importDefault(require("./hooks/useSnapshot"));
25
25
  exports.useSnapshot = useSnapshot_1.default;
26
26
  var useWishlist_1 = __importDefault(require("./hooks/useWishlist"));
27
27
  exports.useWishlist = useWishlist_1.default;
28
+ var useShare_1 = __importDefault(require("./hooks/useShare"));
29
+ exports.useShare = useShare_1.default;
28
30
  // Components
29
31
  var ThreekitProvider_1 = __importDefault(require("./components/ThreekitProvider"));
30
32
  exports.ThreekitProvider = ThreekitProvider_1.default;
@@ -64,6 +66,10 @@ var TotalPrice_2 = __importDefault(require("./components/TotalPrice"));
64
66
  exports.Modal = TotalPrice_2.default;
65
67
  var Drawer_1 = __importDefault(require("./components/Drawer"));
66
68
  exports.Drawer = Drawer_1.default;
69
+ var Accordion_1 = __importDefault(require("./components/Accordion"));
70
+ exports.Accordion = Accordion_1.default;
71
+ var Tabs_1 = __importDefault(require("./components/Tabs"));
72
+ exports.Tabs = Tabs_1.default;
67
73
  // Wrappers
68
74
  var PortalToElement_1 = __importDefault(require("./components/PortalToElement"));
69
75
  exports.PortalToElement = PortalToElement_1.default;
@@ -79,3 +85,5 @@ var Snapshots_1 = __importDefault(require("./components/Snapshots"));
79
85
  exports.Snapshots = Snapshots_1.default;
80
86
  var Wishlist_1 = __importDefault(require("./components/Wishlist"));
81
87
  exports.Wishlist = Wishlist_1.default;
88
+ var Share_1 = __importDefault(require("./components/Share"));
89
+ exports.Share = Share_1.default;
@@ -1,8 +1,7 @@
1
1
  import { RootState, ThreekitDispatch } from './index';
2
- import { IConfiguration, ISetConfiguration, IThreekitDisplayAttribute, IMetadata } from '../threekit';
2
+ import { IConfiguration, ISetConfiguration, IThreekitDisplayAttribute, IMetadata, DISPLAY_OPTIONS } from '../threekit';
3
3
  import { ITranslationMap } from '../api/products';
4
- import { ISaveConfigurationConfig } from '../Treble';
5
- import { IConfigurationResponse } from '../http/configurations';
4
+ import { ISaveConfigurationConfig, WishlistArray } from '../Treble';
6
5
  /*****************************************************
7
6
  * Types and Interfaces
8
7
  ****************************************************/
@@ -32,6 +31,7 @@ export interface ILaunchConfig {
32
31
  locale?: string;
33
32
  allowMobileVerticalOrbit?: boolean;
34
33
  publishStage?: string;
34
+ display?: DISPLAY_OPTIONS;
35
35
  language?: string | undefined;
36
36
  }
37
37
  interface IPriceConfig {
@@ -55,7 +55,7 @@ export interface ThreekitState {
55
55
  isPlayerLoading: boolean;
56
56
  isThreekitLoaded: boolean;
57
57
  attributes: undefined | Array<IThreekitDisplayAttribute>;
58
- wishlist: Array<IConfigurationResponse>;
58
+ wishlist: WishlistArray;
59
59
  }
60
60
  declare const reducer: import("redux").Reducer<ThreekitState, import("redux").AnyAction>;
61
61
  export declare const setThreekitLoaded: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
@@ -71,7 +71,7 @@ export declare const getMetadata: (state: RootState) => undefined | IMetadata;
71
71
  export declare const getLanguage: (state: RootState) => undefined | string;
72
72
  export declare const getLanguageOptions: (state: RootState) => Array<string>;
73
73
  export declare const getAttributes: (state: RootState) => undefined | Record<string, IThreekitDisplayAttribute>;
74
- export declare const getWishlist: (state: RootState) => IConfigurationResponse[];
74
+ export declare const getWishlist: (state: RootState) => WishlistArray;
75
75
  /*****************************************************
76
76
  * Complex Selectors
77
77
  ****************************************************/