@hellotext/hellotext 1.4.1 → 1.5.0
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.
- package/.babelrc +6 -3
- package/.github/workflows/ci.yml +1 -1
- package/.prettierignore +2 -0
- package/README.md +30 -170
- package/__tests__/api/sessions_test.js +12 -0
- package/__tests__/builders/input_builder_test.js +117 -0
- package/__tests__/{event_emitter_test.js → core/event_test.js} +26 -6
- package/__tests__/hellotext_test.js +12 -0
- package/__tests__/models/business_test.js +26 -0
- package/__tests__/models/cookies_test.js +25 -0
- package/__tests__/models/form_collection_test.js +100 -0
- package/__tests__/models/form_test.js +29 -0
- package/__tests__/models/query_test.js +97 -0
- package/dist/hellotext.js +1 -1
- package/docs/forms.md +127 -0
- package/docs/tracking.md +155 -0
- package/lib/api/businesses.js +45 -0
- package/lib/api/events.js +54 -0
- package/lib/api/forms.js +65 -0
- package/lib/api/index.js +51 -0
- package/lib/api/response.js +57 -0
- package/lib/api/sessions.js +46 -0
- package/lib/api/submissions.js +61 -0
- package/lib/api.js +73 -0
- package/lib/builders/inputBuilder.js +97 -0
- package/lib/builders/input_builder.js +61 -0
- package/lib/builders/logo_builder.js +38 -0
- package/lib/builders/otp_builder.js +39 -0
- package/lib/controllers/form_controller.js +139 -0
- package/lib/controllers/otp_controller.js +114 -0
- package/lib/core/configuration.js +37 -0
- package/lib/core/event.js +73 -0
- package/lib/core/index.js +20 -0
- package/lib/errors/index.js +19 -0
- package/lib/errors/invalid_event.js +34 -0
- package/lib/errors/not_initialized_error.js +34 -0
- package/lib/event.js +159 -32
- package/lib/eventEmitter.js +139 -46
- package/lib/forms.js +133 -0
- package/lib/hellotext.js +53 -105
- package/lib/index.js +7 -0
- package/lib/locales/en.js +20 -0
- package/lib/locales/es.js +20 -0
- package/lib/locales/index.js +14 -0
- package/lib/models/business.js +57 -0
- package/lib/models/configuration.js +66 -0
- package/lib/models/cookies.js +34 -0
- package/lib/models/form.js +148 -0
- package/lib/models/form_collection.js +96 -0
- package/lib/models/index.js +40 -0
- package/lib/models/query.js +51 -0
- package/lib/models/step.js +45 -0
- package/lib/query.js +65 -32
- package/lib/response.js +82 -42
- package/package.json +6 -3
- package/src/api/businesses.js +18 -0
- package/src/api/events.js +24 -0
- package/src/api/forms.js +30 -0
- package/src/api/index.js +24 -0
- package/src/{response.js → api/response.js} +9 -4
- package/src/api/sessions.js +23 -0
- package/src/api/submissions.js +30 -0
- package/src/builders/input_builder.js +55 -0
- package/src/builders/logo_builder.js +25 -0
- package/src/builders/otp_builder.js +42 -0
- package/src/controllers/form_controller.js +105 -0
- package/src/controllers/otp_controller.js +77 -0
- package/src/core/configuration.js +16 -0
- package/src/core/event.js +54 -0
- package/src/core/index.js +2 -0
- package/src/errors/index.js +2 -0
- package/src/hellotext.js +50 -72
- package/src/index.js +10 -0
- package/src/locales/en.js +13 -0
- package/src/locales/es.js +13 -0
- package/src/locales/index.js +7 -0
- package/src/models/business.js +41 -0
- package/src/models/cookies.js +16 -0
- package/src/models/form.js +133 -0
- package/src/models/form_collection.js +81 -0
- package/src/models/index.js +5 -0
- package/src/models/query.js +33 -0
- package/styles/index.css +32 -0
- package/webpack.config.js +15 -9
- package/__tests__/event_test.js +0 -21
- package/__tests__/query_test.js +0 -13
- package/src/event.js +0 -15
- package/src/eventEmitter.js +0 -28
- package/src/query.js +0 -21
- /package/src/errors/{invalidEvent.js → invalid_event.js} +0 -0
- /package/src/errors/{notInitializedError.js → not_initialized_error.js} +0 -0
package/lib/hellotext.js
CHANGED
|
@@ -4,12 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var _notInitializedError = require("./errors/notInitializedError");
|
|
12
|
-
var _invalidEvent = require("./errors/invalidEvent");
|
|
7
|
+
var _core = require("./core");
|
|
8
|
+
var _api = _interopRequireDefault(require("./api"));
|
|
9
|
+
var _models = require("./models");
|
|
10
|
+
var _errors = require("./errors");
|
|
13
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
12
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -25,15 +23,9 @@ function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototy
|
|
|
25
23
|
var id = 0;
|
|
26
24
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
27
25
|
var _session = /*#__PURE__*/_classPrivateFieldLooseKey("session");
|
|
28
|
-
var _business = /*#__PURE__*/_classPrivateFieldLooseKey("business");
|
|
29
26
|
var _config = /*#__PURE__*/_classPrivateFieldLooseKey("config");
|
|
30
|
-
var _eventEmitter = /*#__PURE__*/_classPrivateFieldLooseKey("eventEmitter");
|
|
31
27
|
var _query = /*#__PURE__*/_classPrivateFieldLooseKey("query");
|
|
32
|
-
var _notInitialized = /*#__PURE__*/_classPrivateFieldLooseKey("notInitialized");
|
|
33
28
|
var _mintAnonymousSession = /*#__PURE__*/_classPrivateFieldLooseKey("mintAnonymousSession");
|
|
34
|
-
var _headers = /*#__PURE__*/_classPrivateFieldLooseKey("headers");
|
|
35
|
-
var _setSessionCookie = /*#__PURE__*/_classPrivateFieldLooseKey("setSessionCookie");
|
|
36
|
-
var _cookie = /*#__PURE__*/_classPrivateFieldLooseKey("cookie");
|
|
37
29
|
/**
|
|
38
30
|
* @typedef {Object} Config
|
|
39
31
|
* @property {Boolean} autogenerateSession
|
|
@@ -54,21 +46,27 @@ var Hellotext = /*#__PURE__*/function () {
|
|
|
54
46
|
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
55
47
|
autogenerateSession: true
|
|
56
48
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
_classPrivateFieldLooseBase(this,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
49
|
+
this.business = new _models.Business(business);
|
|
50
|
+
this.forms = new _models.FormCollection();
|
|
51
|
+
_classPrivateFieldLooseBase(this, _config)[_config] = _core.Configuration.assign(config);
|
|
52
|
+
_classPrivateFieldLooseBase(this, _query)[_query] = new _models.Query();
|
|
53
|
+
addEventListener('load', () => {
|
|
54
|
+
this.forms.collect();
|
|
55
|
+
});
|
|
56
|
+
if (_classPrivateFieldLooseBase(this, _query)[_query].inPreviewMode) return;
|
|
57
|
+
if (_classPrivateFieldLooseBase(this, _query)[_query].session) {
|
|
58
|
+
_classPrivateFieldLooseBase(this, _session)[_session] = _models.Cookies.set('hello_session', _classPrivateFieldLooseBase(this, _query)[_query].session);
|
|
65
59
|
} else if (config.autogenerateSession) {
|
|
66
60
|
_classPrivateFieldLooseBase(this, _mintAnonymousSession)[_mintAnonymousSession]().then(response => {
|
|
67
|
-
_classPrivateFieldLooseBase(this, _session)[_session] = response.id;
|
|
68
|
-
_classPrivateFieldLooseBase(this, _setSessionCookie)[_setSessionCookie]();
|
|
61
|
+
_classPrivateFieldLooseBase(this, _session)[_session] = _models.Cookies.set('hello_session', response.id);
|
|
69
62
|
});
|
|
70
63
|
}
|
|
71
64
|
}
|
|
65
|
+
}, {
|
|
66
|
+
key: "setSession",
|
|
67
|
+
value: function setSession(value) {
|
|
68
|
+
_classPrivateFieldLooseBase(this, _session)[_session] = _models.Cookies.set('hello_session', value);
|
|
69
|
+
}
|
|
72
70
|
|
|
73
71
|
/**
|
|
74
72
|
* Tracks an action that has happened on the page
|
|
@@ -82,25 +80,18 @@ var Hellotext = /*#__PURE__*/function () {
|
|
|
82
80
|
value: function () {
|
|
83
81
|
var _track = _asyncToGenerator(function* (action) {
|
|
84
82
|
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
85
|
-
if (
|
|
86
|
-
throw new
|
|
87
|
-
}
|
|
88
|
-
if (_classPrivateFieldLooseBase(this, _query)[_query].has("preview")) {
|
|
89
|
-
return new _response.default(true, {
|
|
90
|
-
received: true
|
|
91
|
-
});
|
|
83
|
+
if (this.notInitialized) {
|
|
84
|
+
throw new _errors.NotInitializedError();
|
|
92
85
|
}
|
|
93
|
-
|
|
94
|
-
headers:
|
|
95
|
-
|
|
96
|
-
body: JSON.stringify(_objectSpread(_objectSpread({
|
|
86
|
+
return yield _api.default.events.create({
|
|
87
|
+
headers: this.headers,
|
|
88
|
+
body: _objectSpread(_objectSpread({
|
|
97
89
|
session: this.session,
|
|
98
90
|
action
|
|
99
91
|
}, params), {}, {
|
|
100
92
|
url: params && params.url || window.location.href
|
|
101
|
-
})
|
|
93
|
+
})
|
|
102
94
|
});
|
|
103
|
-
return new _response.default(response.status === 200, yield response.json());
|
|
104
95
|
});
|
|
105
96
|
function track(_x) {
|
|
106
97
|
return _track.apply(this, arguments);
|
|
@@ -115,10 +106,7 @@ var Hellotext = /*#__PURE__*/function () {
|
|
|
115
106
|
}, {
|
|
116
107
|
key: "on",
|
|
117
108
|
value: function on(event, callback) {
|
|
118
|
-
|
|
119
|
-
throw new _invalidEvent.InvalidEvent(event);
|
|
120
|
-
}
|
|
121
|
-
_classPrivateFieldLooseBase(this, _eventEmitter)[_eventEmitter].addSubscriber(event, callback);
|
|
109
|
+
this.eventEmitter.addSubscriber(event, callback);
|
|
122
110
|
}
|
|
123
111
|
|
|
124
112
|
/**
|
|
@@ -129,10 +117,7 @@ var Hellotext = /*#__PURE__*/function () {
|
|
|
129
117
|
}, {
|
|
130
118
|
key: "removeEventListener",
|
|
131
119
|
value: function removeEventListener(event, callback) {
|
|
132
|
-
|
|
133
|
-
throw new _invalidEvent.InvalidEvent(event);
|
|
134
|
-
}
|
|
135
|
-
_classPrivateFieldLooseBase(this, _eventEmitter)[_eventEmitter].removeSubscriber(event, callback);
|
|
120
|
+
this.eventEmitter.removeSubscriber(event, callback);
|
|
136
121
|
}
|
|
137
122
|
|
|
138
123
|
/**
|
|
@@ -142,8 +127,8 @@ var Hellotext = /*#__PURE__*/function () {
|
|
|
142
127
|
}, {
|
|
143
128
|
key: "session",
|
|
144
129
|
get: function get() {
|
|
145
|
-
if (
|
|
146
|
-
throw new
|
|
130
|
+
if (this.notInitialized) {
|
|
131
|
+
throw new _errors.NotInitializedError();
|
|
147
132
|
}
|
|
148
133
|
return _classPrivateFieldLooseBase(this, _session)[_session];
|
|
149
134
|
}
|
|
@@ -159,92 +144,55 @@ var Hellotext = /*#__PURE__*/function () {
|
|
|
159
144
|
}
|
|
160
145
|
|
|
161
146
|
// private
|
|
147
|
+
}, {
|
|
148
|
+
key: "notInitialized",
|
|
149
|
+
get: function get() {
|
|
150
|
+
return this.business.id === undefined;
|
|
151
|
+
}
|
|
152
|
+
}, {
|
|
153
|
+
key: "headers",
|
|
154
|
+
get: function get() {
|
|
155
|
+
if (this.notInitialized) {
|
|
156
|
+
throw new _errors.NotInitializedError();
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
Authorization: "Bearer ".concat(this.business.id),
|
|
160
|
+
Accept: 'application.json',
|
|
161
|
+
'Content-Type': 'application/json'
|
|
162
|
+
};
|
|
163
|
+
}
|
|
162
164
|
}]);
|
|
163
165
|
return Hellotext;
|
|
164
166
|
}();
|
|
165
|
-
function _get_notInitialized() {
|
|
166
|
-
return _classPrivateFieldLooseBase(this, _business)[_business] === undefined;
|
|
167
|
-
}
|
|
168
167
|
function _mintAnonymousSession2() {
|
|
169
168
|
return _mintAnonymousSession3.apply(this, arguments);
|
|
170
169
|
}
|
|
171
170
|
function _mintAnonymousSession3() {
|
|
172
171
|
_mintAnonymousSession3 = _asyncToGenerator(function* () {
|
|
173
|
-
if (
|
|
174
|
-
throw new
|
|
172
|
+
if (this.notInitialized) {
|
|
173
|
+
throw new _errors.NotInitializedError();
|
|
175
174
|
}
|
|
176
|
-
|
|
177
|
-
this.mintingPromise = yield fetch(trackingUrl, {
|
|
178
|
-
method: 'post',
|
|
179
|
-
headers: {
|
|
180
|
-
Authorization: "Bearer ".concat(_classPrivateFieldLooseBase(this, _business)[_business])
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
return this.mintingPromise.json();
|
|
175
|
+
return _api.default.sessions(this.business.id).create();
|
|
184
176
|
});
|
|
185
177
|
return _mintAnonymousSession3.apply(this, arguments);
|
|
186
178
|
}
|
|
187
|
-
function _get_headers() {
|
|
188
|
-
if (_classPrivateFieldLooseBase(this, _notInitialized)[_notInitialized]) {
|
|
189
|
-
throw new _notInitializedError.NotInitializedError();
|
|
190
|
-
}
|
|
191
|
-
return {
|
|
192
|
-
Authorization: "Bearer ".concat(_classPrivateFieldLooseBase(this, _business)[_business]),
|
|
193
|
-
Accept: 'application.json',
|
|
194
|
-
'Content-Type': 'application/json'
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
function _setSessionCookie2() {
|
|
198
|
-
if (_classPrivateFieldLooseBase(this, _notInitialized)[_notInitialized]) {
|
|
199
|
-
throw new _notInitializedError.NotInitializedError();
|
|
200
|
-
}
|
|
201
|
-
if (_classPrivateFieldLooseBase(this, _eventEmitter)[_eventEmitter].listeners) {
|
|
202
|
-
_classPrivateFieldLooseBase(this, _eventEmitter)[_eventEmitter].emit("session-set", _classPrivateFieldLooseBase(this, _session)[_session]);
|
|
203
|
-
}
|
|
204
|
-
document.cookie = "hello_session=".concat(_classPrivateFieldLooseBase(this, _session)[_session]);
|
|
205
|
-
}
|
|
206
|
-
function _get_cookie() {
|
|
207
|
-
var _document$cookie$matc;
|
|
208
|
-
return (_document$cookie$matc = document.cookie.match('(^|;)\\s*' + 'hello_session' + '\\s*=\\s*([^;]+)')) === null || _document$cookie$matc === void 0 ? void 0 : _document$cookie$matc.pop();
|
|
209
|
-
}
|
|
210
|
-
Object.defineProperty(Hellotext, _cookie, {
|
|
211
|
-
get: _get_cookie,
|
|
212
|
-
set: void 0
|
|
213
|
-
});
|
|
214
|
-
Object.defineProperty(Hellotext, _setSessionCookie, {
|
|
215
|
-
value: _setSessionCookie2
|
|
216
|
-
});
|
|
217
|
-
Object.defineProperty(Hellotext, _headers, {
|
|
218
|
-
get: _get_headers,
|
|
219
|
-
set: void 0
|
|
220
|
-
});
|
|
221
179
|
Object.defineProperty(Hellotext, _mintAnonymousSession, {
|
|
222
180
|
value: _mintAnonymousSession2
|
|
223
181
|
});
|
|
224
|
-
Object.defineProperty(Hellotext, _notInitialized, {
|
|
225
|
-
get: _get_notInitialized,
|
|
226
|
-
set: void 0
|
|
227
|
-
});
|
|
228
|
-
Hellotext.__apiURL = 'https://api.hellotext.com/v1/';
|
|
229
182
|
Object.defineProperty(Hellotext, _session, {
|
|
230
183
|
writable: true,
|
|
231
184
|
value: void 0
|
|
232
185
|
});
|
|
233
|
-
Object.defineProperty(Hellotext, _business, {
|
|
234
|
-
writable: true,
|
|
235
|
-
value: void 0
|
|
236
|
-
});
|
|
237
186
|
Object.defineProperty(Hellotext, _config, {
|
|
238
187
|
writable: true,
|
|
239
188
|
value: void 0
|
|
240
189
|
});
|
|
241
|
-
Object.defineProperty(Hellotext, _eventEmitter, {
|
|
242
|
-
writable: true,
|
|
243
|
-
value: new _eventEmitter2.default()
|
|
244
|
-
});
|
|
245
190
|
Object.defineProperty(Hellotext, _query, {
|
|
246
191
|
writable: true,
|
|
247
192
|
value: void 0
|
|
248
193
|
});
|
|
194
|
+
Hellotext.eventEmitter = new _core.Event();
|
|
195
|
+
Hellotext.forms = void 0;
|
|
196
|
+
Hellotext.business = void 0;
|
|
249
197
|
var _default = Hellotext;
|
|
250
198
|
exports.default = _default;
|
package/lib/index.js
CHANGED
|
@@ -4,7 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
var _stimulus = require("@hotwired/stimulus");
|
|
7
8
|
var _hellotext = _interopRequireDefault(require("./hellotext"));
|
|
9
|
+
var _form_controller = _interopRequireDefault(require("./controllers/form_controller"));
|
|
10
|
+
var _otp_controller = _interopRequireDefault(require("./controllers/otp_controller"));
|
|
11
|
+
require("../styles/index.css");
|
|
8
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
var application = _stimulus.Application.start();
|
|
14
|
+
application.register('hellotext--form', _form_controller.default);
|
|
15
|
+
application.register('hellotext--otp', _otp_controller.default);
|
|
9
16
|
var _default = _hellotext.default;
|
|
10
17
|
exports.default = _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = {
|
|
8
|
+
otp: {
|
|
9
|
+
sent_to_email: 'A One-Time Password has been sent to your email address',
|
|
10
|
+
sent_to_phone: 'An One-Time Password has been sent to your phone number',
|
|
11
|
+
resend_successful: 'The One-Time Password has been resent successfully',
|
|
12
|
+
invalid: 'Invalid One-Time Password',
|
|
13
|
+
resend: 'Resend OTP',
|
|
14
|
+
throttled: 'You have reached the maximum number of attempts. Please try again in 1 minute.'
|
|
15
|
+
},
|
|
16
|
+
white_label: {
|
|
17
|
+
powered_by: "Powered by"
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.default = _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = {
|
|
8
|
+
otp: {
|
|
9
|
+
sent_to_email: 'Un código de un solo uso ha sido enviado a tu correo electrónico',
|
|
10
|
+
sent_to_phone: 'Un código de un solo uso ha sido enviado a tu número de teléfono',
|
|
11
|
+
resend_successful: 'El código de un solo uso ha sido reenviado exitosamente',
|
|
12
|
+
invalid: 'Código de un solo uso inválido',
|
|
13
|
+
resend: 'Reenviar OTP',
|
|
14
|
+
throttled: 'Has alcanzado el número máximo de intentos. Por favor intenta de nuevo en 1 minuto.'
|
|
15
|
+
},
|
|
16
|
+
white_label: {
|
|
17
|
+
powered_by: "Desarrollado por"
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.default = _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _en = _interopRequireDefault(require("./en"));
|
|
8
|
+
var _es = _interopRequireDefault(require("./es"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
var _default = {
|
|
11
|
+
en: _en.default,
|
|
12
|
+
es: _es.default
|
|
13
|
+
};
|
|
14
|
+
exports.default = _default;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Business = void 0;
|
|
7
|
+
var _businesses = _interopRequireDefault(require("../api/businesses"));
|
|
8
|
+
var _locales = _interopRequireDefault(require("../locales"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
11
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
12
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
13
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
14
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
15
|
+
var Business = /*#__PURE__*/function () {
|
|
16
|
+
function Business(id) {
|
|
17
|
+
_classCallCheck(this, Business);
|
|
18
|
+
this.id = id;
|
|
19
|
+
this.data = {};
|
|
20
|
+
this.fetchPublicData();
|
|
21
|
+
}
|
|
22
|
+
_createClass(Business, [{
|
|
23
|
+
key: "subscription",
|
|
24
|
+
get: function get() {
|
|
25
|
+
return this.data.subscription;
|
|
26
|
+
}
|
|
27
|
+
}, {
|
|
28
|
+
key: "country",
|
|
29
|
+
get: function get() {
|
|
30
|
+
return this.data.country;
|
|
31
|
+
}
|
|
32
|
+
}, {
|
|
33
|
+
key: "enabledWhitelist",
|
|
34
|
+
get: function get() {
|
|
35
|
+
return this.data.whitelist !== 'disabled';
|
|
36
|
+
}
|
|
37
|
+
}, {
|
|
38
|
+
key: "locale",
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _locales.default[this.data.locale];
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
key: "features",
|
|
44
|
+
get: function get() {
|
|
45
|
+
return this.data.features;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// private
|
|
49
|
+
}, {
|
|
50
|
+
key: "fetchPublicData",
|
|
51
|
+
value: function fetchPublicData() {
|
|
52
|
+
_businesses.default.get(this.id).then(response => response.json()).then(data => this.data = data);
|
|
53
|
+
}
|
|
54
|
+
}]);
|
|
55
|
+
return Business;
|
|
56
|
+
}();
|
|
57
|
+
exports.Business = Business;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
})
|
|
6
|
+
exports.Configuration = void 0
|
|
7
|
+
function _classCallCheck(instance, Constructor) {
|
|
8
|
+
if (!(instance instanceof Constructor)) {
|
|
9
|
+
throw new TypeError('Cannot call a class as a function')
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function _defineProperties(target, props) {
|
|
13
|
+
for (var i = 0; i < props.length; i++) {
|
|
14
|
+
var descriptor = props[i]
|
|
15
|
+
descriptor.enumerable = descriptor.enumerable || false
|
|
16
|
+
descriptor.configurable = true
|
|
17
|
+
if ('value' in descriptor) descriptor.writable = true
|
|
18
|
+
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor)
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
22
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps)
|
|
23
|
+
if (staticProps) _defineProperties(Constructor, staticProps)
|
|
24
|
+
Object.defineProperty(Constructor, 'prototype', { writable: false })
|
|
25
|
+
return Constructor
|
|
26
|
+
}
|
|
27
|
+
function _toPropertyKey(arg) {
|
|
28
|
+
var key = _toPrimitive(arg, 'string')
|
|
29
|
+
return typeof key === 'symbol' ? key : String(key)
|
|
30
|
+
}
|
|
31
|
+
function _toPrimitive(input, hint) {
|
|
32
|
+
if (typeof input !== 'object' || input === null) return input
|
|
33
|
+
var prim = input[Symbol.toPrimitive]
|
|
34
|
+
if (prim !== undefined) {
|
|
35
|
+
var res = prim.call(input, hint || 'default')
|
|
36
|
+
if (typeof res !== 'object') return res
|
|
37
|
+
throw new TypeError('@@toPrimitive must return a primitive value.')
|
|
38
|
+
}
|
|
39
|
+
return (hint === 'string' ? String : Number)(input)
|
|
40
|
+
}
|
|
41
|
+
var Configuration = /*#__PURE__*/ (function () {
|
|
42
|
+
function Configuration() {
|
|
43
|
+
_classCallCheck(this, Configuration)
|
|
44
|
+
}
|
|
45
|
+
_createClass(Configuration, null, [
|
|
46
|
+
{
|
|
47
|
+
key: 'assign',
|
|
48
|
+
value: function assign(_ref) {
|
|
49
|
+
var { apiRoot, autoGenerateSession } = _ref
|
|
50
|
+
this.apiRoot = apiRoot
|
|
51
|
+
this.autoGenerateSession = autoGenerateSession
|
|
52
|
+
return this
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
key: 'endpoint',
|
|
57
|
+
value: function endpoint(path) {
|
|
58
|
+
return ''.concat(this.apiRoot, '/').concat(path)
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
])
|
|
62
|
+
return Configuration
|
|
63
|
+
})()
|
|
64
|
+
exports.Configuration = Configuration
|
|
65
|
+
Configuration.apiRoot = 'http://api.lvh.me:3000/v1/'
|
|
66
|
+
Configuration.autoGenerateSession = true
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Cookies = void 0;
|
|
7
|
+
var _hellotext = _interopRequireDefault(require("../hellotext"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
10
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
11
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
12
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
13
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
|
+
var Cookies = /*#__PURE__*/function () {
|
|
15
|
+
function Cookies() {
|
|
16
|
+
_classCallCheck(this, Cookies);
|
|
17
|
+
}
|
|
18
|
+
_createClass(Cookies, null, [{
|
|
19
|
+
key: "set",
|
|
20
|
+
value: function set(name, value) {
|
|
21
|
+
document.cookie = "".concat(name, "=").concat(value);
|
|
22
|
+
_hellotext.default.eventEmitter.dispatch('session-set', value);
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
}, {
|
|
26
|
+
key: "get",
|
|
27
|
+
value: function get(name) {
|
|
28
|
+
var _document$cookie$matc;
|
|
29
|
+
return (_document$cookie$matc = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)')) === null || _document$cookie$matc === void 0 ? void 0 : _document$cookie$matc.pop();
|
|
30
|
+
}
|
|
31
|
+
}]);
|
|
32
|
+
return Cookies;
|
|
33
|
+
}();
|
|
34
|
+
exports.Cookies = Cookies;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Form = void 0;
|
|
7
|
+
var _hellotext = _interopRequireDefault(require("../hellotext"));
|
|
8
|
+
var _input_builder = require("../builders/input_builder");
|
|
9
|
+
var _logo_builder = require("../builders/logo_builder");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
12
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
13
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
15
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
16
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
17
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
18
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
19
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
20
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
21
|
+
function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
|
|
22
|
+
var id = 0;
|
|
23
|
+
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
24
|
+
var _findOrCreateComponent = /*#__PURE__*/_classPrivateFieldLooseKey("findOrCreateComponent");
|
|
25
|
+
var Form = /*#__PURE__*/function () {
|
|
26
|
+
function Form(data) {
|
|
27
|
+
var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
28
|
+
_classCallCheck(this, Form);
|
|
29
|
+
Object.defineProperty(this, _findOrCreateComponent, {
|
|
30
|
+
value: _findOrCreateComponent2
|
|
31
|
+
});
|
|
32
|
+
this.data = data;
|
|
33
|
+
this.element = element || document.querySelector("[data-hello-form=\"".concat(this.id, "\"]")) || document.createElement('form');
|
|
34
|
+
}
|
|
35
|
+
_createClass(Form, [{
|
|
36
|
+
key: "mount",
|
|
37
|
+
value: function () {
|
|
38
|
+
var _mount = _asyncToGenerator(function* () {
|
|
39
|
+
var firstStep = this.data.steps[0];
|
|
40
|
+
this.buildHeader(firstStep.header);
|
|
41
|
+
this.buildInputs(firstStep.inputs);
|
|
42
|
+
this.buildButton(firstStep.button);
|
|
43
|
+
this.buildFooter(firstStep.footer);
|
|
44
|
+
this.elementAttributes.forEach(attribute => {
|
|
45
|
+
this.element.setAttribute(attribute.name, attribute.value);
|
|
46
|
+
});
|
|
47
|
+
if (!document.contains(this.element)) {
|
|
48
|
+
document.body.appendChild(this.element);
|
|
49
|
+
}
|
|
50
|
+
if (!_hellotext.default.business.features.white_label) {
|
|
51
|
+
this.element.prepend(_logo_builder.LogoBuilder.build());
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
function mount() {
|
|
55
|
+
return _mount.apply(this, arguments);
|
|
56
|
+
}
|
|
57
|
+
return mount;
|
|
58
|
+
}()
|
|
59
|
+
}, {
|
|
60
|
+
key: "buildHeader",
|
|
61
|
+
value: function buildHeader(header) {
|
|
62
|
+
var headerElement = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-header]', 'header');
|
|
63
|
+
headerElement.innerHTML = header.content;
|
|
64
|
+
if (this.element.querySelector('[data-form-header]')) {
|
|
65
|
+
this.element.querySelector('[data-form-header]').replaceWith(headerElement);
|
|
66
|
+
} else {
|
|
67
|
+
this.element.prepend(headerElement);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
key: "buildInputs",
|
|
72
|
+
value: function buildInputs(inputs) {
|
|
73
|
+
var inputsContainerElement = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-inputs]', 'main');
|
|
74
|
+
var inputElements = inputs.map(input => _input_builder.InputBuilder.build(input));
|
|
75
|
+
inputElements.forEach(inputElement => inputsContainerElement.appendChild(inputElement));
|
|
76
|
+
if (this.element.querySelector('[data-form-inputs]')) {
|
|
77
|
+
this.element.querySelector('[data-form-inputs]').replaceWith(inputsContainerElement);
|
|
78
|
+
} else {
|
|
79
|
+
this.element.querySelector('[data-form-header]').insertAdjacentHTML('afterend', inputsContainerElement.outerHTML);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
key: "buildButton",
|
|
84
|
+
value: function buildButton(button) {
|
|
85
|
+
var buttonElement = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-button]', 'button');
|
|
86
|
+
buttonElement.innerText = button.text;
|
|
87
|
+
buttonElement.setAttribute('data-action', 'click->hellotext--form#submit');
|
|
88
|
+
buttonElement.setAttribute('data-hellotext--form-target', 'button');
|
|
89
|
+
if (this.element.querySelector('[data-form-button]')) {
|
|
90
|
+
this.element.querySelector('[data-form-button]').replaceWith(buttonElement);
|
|
91
|
+
} else {
|
|
92
|
+
this.element.querySelector('[data-form-inputs]').insertAdjacentHTML('afterend', buttonElement.outerHTML);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}, {
|
|
96
|
+
key: "buildFooter",
|
|
97
|
+
value: function buildFooter(footer) {
|
|
98
|
+
var element = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-footer]', 'footer');
|
|
99
|
+
element.innerHTML = footer.content;
|
|
100
|
+
if (this.element.querySelector('[data-form-footer]')) {
|
|
101
|
+
this.element.querySelector('[data-form-footer]').replaceWith(element);
|
|
102
|
+
} else {
|
|
103
|
+
this.element.appendChild(element);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "markAsCompleted",
|
|
108
|
+
value: function markAsCompleted(data) {
|
|
109
|
+
localStorage.setItem("hello-form-".concat(this.id), 'completed');
|
|
110
|
+
_hellotext.default.eventEmitter.dispatch('form:completed', _objectSpread({
|
|
111
|
+
id: this.id
|
|
112
|
+
}, data));
|
|
113
|
+
}
|
|
114
|
+
}, {
|
|
115
|
+
key: "id",
|
|
116
|
+
get: function get() {
|
|
117
|
+
return this.data.id;
|
|
118
|
+
}
|
|
119
|
+
}, {
|
|
120
|
+
key: "elementAttributes",
|
|
121
|
+
get: function get() {
|
|
122
|
+
return [{
|
|
123
|
+
name: 'data-controller',
|
|
124
|
+
value: 'hellotext--form'
|
|
125
|
+
}, {
|
|
126
|
+
name: 'data-hello-form',
|
|
127
|
+
value: this.id
|
|
128
|
+
}, {
|
|
129
|
+
name: 'data-hellotext--form-data-value',
|
|
130
|
+
value: JSON.stringify(this.data)
|
|
131
|
+
}, {
|
|
132
|
+
name: 'data-action',
|
|
133
|
+
value: 'hellotext--otp:verified->hellotext--form#completed'
|
|
134
|
+
}];
|
|
135
|
+
}
|
|
136
|
+
}]);
|
|
137
|
+
return Form;
|
|
138
|
+
}();
|
|
139
|
+
exports.Form = Form;
|
|
140
|
+
function _findOrCreateComponent2(selector, tag) {
|
|
141
|
+
var existingElement = this.element.querySelector(selector);
|
|
142
|
+
if (existingElement) {
|
|
143
|
+
return existingElement.cloneNode(true);
|
|
144
|
+
}
|
|
145
|
+
var createdElement = document.createElement(tag);
|
|
146
|
+
createdElement.setAttribute(selector.replace('[', '').replace(']', ''), '');
|
|
147
|
+
return createdElement;
|
|
148
|
+
}
|