UNPKG

4 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11var _getIterator2 = require('babel-runtime/core-js/get-iterator');
12
13var _getIterator3 = _interopRequireDefault(_getIterator2);
14
15var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
16
17var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
18
19var _createClass2 = require('babel-runtime/helpers/createClass');
20
21var _createClass3 = _interopRequireDefault(_createClass2);
22
23var _Buttons = require('./Buttons');
24
25var _Buttons2 = _interopRequireDefault(_Buttons);
26
27function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
29var 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
123exports.default = Elements;
124//# sourceMappingURL=Elements.js.map