1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _extends2 = require('babel-runtime/helpers/extends');
|
8 |
|
9 | var _extends3 = _interopRequireDefault(_extends2);
|
10 |
|
11 | var _getIterator2 = require('babel-runtime/core-js/get-iterator');
|
12 |
|
13 | var _getIterator3 = _interopRequireDefault(_getIterator2);
|
14 |
|
15 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
16 |
|
17 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
18 |
|
19 | var _createClass2 = require('babel-runtime/helpers/createClass');
|
20 |
|
21 | var _createClass3 = _interopRequireDefault(_createClass2);
|
22 |
|
23 | var _Buttons = require('./Buttons');
|
24 |
|
25 | var _Buttons2 = _interopRequireDefault(_Buttons);
|
26 |
|
27 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
28 |
|
29 | var Elements = function () {
|
30 | function Elements() {
|
31 | (0, _classCallCheck3.default)(this, Elements);
|
32 |
|
33 | this._elements = [];
|
34 | }
|
35 |
|
36 | (0, _createClass3.default)(Elements, [{
|
37 | key: 'add',
|
38 | value: function add(_ref) {
|
39 | var text = _ref.text;
|
40 | var image = _ref.image;
|
41 | var subtext = _ref.subtext;
|
42 | var buttons = _ref.buttons;
|
43 |
|
44 | if (buttons) {
|
45 | if (!(buttons instanceof _Buttons2.default)) {
|
46 | throw Error('buttons not instanceof Buttons');
|
47 | }
|
48 | } else {
|
49 | buttons = null;
|
50 | }
|
51 |
|
52 | this._elements.push({ text: text, image: image, subtext: subtext, buttons: buttons });
|
53 | return this;
|
54 | }
|
55 | }, {
|
56 | key: 'toJSON',
|
57 | value: function toJSON() {
|
58 | if (this._elements.length > 1) {
|
59 | var elements = [];
|
60 | var _iteratorNormalCompletion = true;
|
61 | var _didIteratorError = false;
|
62 | var _iteratorError = undefined;
|
63 |
|
64 | try {
|
65 | for (var _iterator = (0, _getIterator3.default)(this._elements), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
66 | var e = _step.value;
|
67 |
|
68 | var element = {};
|
69 | if (e.text) element.title = e.text;
|
70 | if (e.image) element.image_url = e.image;
|
71 | if (e.subtext) element.subtitle = e.subtext;
|
72 | if (e.buttons && e.buttons.length) element.buttons = e.buttons.toJSON();
|
73 | elements.push(element);
|
74 | }
|
75 | } catch (err) {
|
76 | _didIteratorError = true;
|
77 | _iteratorError = err;
|
78 | } finally {
|
79 | try {
|
80 | if (!_iteratorNormalCompletion && _iterator.return) {
|
81 | _iterator.return();
|
82 | }
|
83 | } finally {
|
84 | if (_didIteratorError) {
|
85 | throw _iteratorError;
|
86 | }
|
87 | }
|
88 | }
|
89 |
|
90 | return { attachment: { type: 'template', payload: { template_type: 'generic', elements: elements } } };
|
91 | } else if (this._elements.length === 1) {
|
92 | var _e = this._elements[0];
|
93 | var _element = {};
|
94 | if (_e.text && _e.buttons && _e.buttons.length && _e.image) {
|
95 | _element.title = _e.text;
|
96 | _element.image_url = _e.image;
|
97 | if (_e.subtext) _element.subtitle = _e.subtext;
|
98 | _element.buttons = _e.buttons.toJSON();
|
99 | return { attachment: { type: 'template', payload: { template_type: 'generic', elements: [_element] } } };
|
100 | } else if (_e.text && _e.buttons && _e.buttons.length) {
|
101 | _element.text = _e.text;
|
102 | if (_e.image) _element.image_url = _e.image;
|
103 | _element.buttons = _e.buttons.toJSON();
|
104 | return { attachment: { type: 'template', payload: (0, _extends3.default)({ template_type: 'button' }, _element) } };
|
105 | } else if (_e.text) {
|
106 | return { text: _e.text };
|
107 | } else if (_e.image) {
|
108 | return { attachment: { type: 'image', payload: { url: _e.image } } };
|
109 | }
|
110 | }
|
111 |
|
112 | throw Error('Could not form a message. Have you followed the format?');
|
113 | }
|
114 | }, {
|
115 | key: 'length',
|
116 | get: function get() {
|
117 | return this._elements.length;
|
118 | }
|
119 | }]);
|
120 | return Elements;
|
121 | }();
|
122 |
|
123 | exports.default = Elements;
|
124 |
|