@hellotext/hellotext 1.8.7 → 2.0.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.
Files changed (106) hide show
  1. package/dist/hellotext.js +1 -1
  2. package/lib/api/businesses.cjs +37 -0
  3. package/lib/api/businesses.js +3 -9
  4. package/lib/api/events.cjs +45 -0
  5. package/lib/api/events.js +8 -14
  6. package/lib/api/forms.cjs +51 -0
  7. package/lib/api/forms.js +10 -17
  8. package/lib/api/index.cjs +51 -0
  9. package/lib/api/index.js +10 -23
  10. package/lib/api/response.cjs +76 -0
  11. package/lib/api/response.js +1 -7
  12. package/lib/api/submissions.cjs +47 -0
  13. package/lib/api/submissions.js +9 -17
  14. package/lib/api/webchat/messages.cjs +70 -0
  15. package/lib/api/webchat/messages.js +10 -18
  16. package/lib/api/webchats.cjs +44 -0
  17. package/lib/api/webchats.js +8 -16
  18. package/lib/builders/input_builder.cjs +61 -0
  19. package/lib/builders/input_builder.js +4 -11
  20. package/lib/builders/logo_builder.cjs +50 -0
  21. package/lib/builders/logo_builder.js +5 -12
  22. package/lib/channels/application_channel.cjs +67 -0
  23. package/lib/channels/application_channel.js +1 -8
  24. package/lib/channels/{web_chat_channel.js → webchat_channel.cjs} +35 -20
  25. package/lib/channels/webchat_channel.js +3 -11
  26. package/lib/controllers/form_controller.cjs +141 -0
  27. package/lib/controllers/form_controller.js +15 -22
  28. package/lib/controllers/mixins/usePopover.cjs +59 -0
  29. package/lib/controllers/mixins/usePopover.js +6 -14
  30. package/lib/controllers/{web_chat/pagination_controller.js → webchat/emoji_picker_controller.cjs} +74 -29
  31. package/lib/controllers/webchat/emoji_picker_controller.js +11 -17
  32. package/lib/controllers/webchat_controller.cjs +433 -0
  33. package/lib/controllers/webchat_controller.js +49 -51
  34. package/lib/core/configuration/forms.cjs +49 -0
  35. package/lib/core/configuration/forms.js +2 -8
  36. package/lib/core/configuration/{web_chat.js → webchat.cjs} +53 -38
  37. package/lib/core/configuration/webchat.js +2 -9
  38. package/lib/core/configuration.cjs +65 -0
  39. package/lib/core/configuration.js +8 -13
  40. package/lib/core/event.cjs +71 -0
  41. package/lib/core/event.js +5 -11
  42. package/lib/core/index.cjs +20 -0
  43. package/lib/core/index.js +2 -20
  44. package/lib/errors/index.cjs +19 -0
  45. package/lib/errors/index.js +2 -19
  46. package/lib/errors/invalid_event.cjs +34 -0
  47. package/lib/errors/invalid_event.js +1 -7
  48. package/lib/errors/not_initialized_error.cjs +34 -0
  49. package/lib/errors/not_initialized_error.js +1 -7
  50. package/lib/hellotext.cjs +152 -0
  51. package/lib/hellotext.js +18 -27
  52. package/lib/index.cjs +20 -0
  53. package/lib/index.js +12 -20
  54. package/lib/locales/en.cjs +22 -0
  55. package/lib/locales/en.js +2 -9
  56. package/lib/locales/es.cjs +22 -0
  57. package/lib/locales/es.js +2 -9
  58. package/lib/locales/index.cjs +14 -0
  59. package/lib/locales/index.js +6 -14
  60. package/lib/models/business.cjs +65 -0
  61. package/lib/models/business.js +5 -12
  62. package/lib/models/cookies.cjs +40 -0
  63. package/lib/models/cookies.js +3 -10
  64. package/lib/models/form.cjs +166 -0
  65. package/lib/models/form.js +10 -17
  66. package/lib/models/form_collection.cjs +119 -0
  67. package/lib/models/form_collection.js +15 -22
  68. package/lib/models/index.cjs +54 -0
  69. package/lib/models/index.js +7 -54
  70. package/lib/models/query.cjs +51 -0
  71. package/lib/models/query.js +3 -9
  72. package/lib/models/session.cjs +58 -0
  73. package/lib/models/session.js +12 -17
  74. package/lib/models/{web_chat.js → webchat.cjs} +14 -22
  75. package/lib/models/webchat.js +6 -13
  76. package/lib/vanilla.cjs +13 -0
  77. package/lib/vanilla.js +1 -13
  78. package/package.json +34 -7
  79. package/src/controllers/webchat_controller.js +72 -47
  80. package/src/hellotext.js +3 -4
  81. package/src/models/session.js +4 -3
  82. package/.babelrc +0 -24
  83. package/.github/workflows/ci.yml +0 -24
  84. package/.prettierignore +0 -3
  85. package/.prettierrc.json +0 -18
  86. package/MIT-LICENSE +0 -20
  87. package/__tests__/builders/input_builder_test.js +0 -117
  88. package/__tests__/core/configuration/forms_test.js +0 -30
  89. package/__tests__/core/configuration/webchat_test.js +0 -163
  90. package/__tests__/core/configuration_test.js +0 -28
  91. package/__tests__/core/event_test.js +0 -56
  92. package/__tests__/hellotext_test.js +0 -197
  93. package/__tests__/models/business_test.js +0 -26
  94. package/__tests__/models/cookies_test.js +0 -25
  95. package/__tests__/models/form_collection_test.js +0 -103
  96. package/__tests__/models/form_test.js +0 -131
  97. package/__tests__/models/query_test.js +0 -97
  98. package/docs/forms.md +0 -176
  99. package/docs/tracking.md +0 -203
  100. package/docs/webchat.md +0 -101
  101. package/jest.config.js +0 -4
  102. package/jest.setup.js +0 -16
  103. package/lib/api/web_chat/messages.js +0 -74
  104. package/lib/api/web_chats.js +0 -53
  105. package/styles/index.css +0 -38
  106. package/webpack.config.js +0 -24
package/lib/index.js CHANGED
@@ -1,20 +1,12 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _stimulus = require("@hotwired/stimulus");
8
- var _hellotext = _interopRequireDefault(require("./hellotext"));
9
- var _form_controller = _interopRequireDefault(require("./controllers/form_controller"));
10
- var _webchat_controller = _interopRequireDefault(require("./controllers/webchat_controller"));
11
- var _emoji_picker_controller = _interopRequireDefault(require("./controllers/webchat/emoji_picker_controller"));
12
- require("../styles/index.css");
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- var application = _stimulus.Application.start();
15
- application.register('hellotext--form', _form_controller.default);
16
- application.register('hellotext--webchat', _webchat_controller.default);
17
- application.register('hellotext--webchat--emoji', _emoji_picker_controller.default);
18
- window.Hellotext = _hellotext.default;
19
- var _default = _hellotext.default;
20
- exports.default = _default;
1
+ import { Application } from '@hotwired/stimulus';
2
+ import Hellotext from './hellotext';
3
+ import FormController from './controllers/form_controller';
4
+ import WebchatController from './controllers/webchat_controller';
5
+ import WebChatEmojiController from './controllers/webchat/emoji_picker_controller';
6
+ var application = Application.start();
7
+ application.register('hellotext--form', FormController);
8
+ application.register('hellotext--webchat', WebchatController);
9
+ application.register('hellotext--webchat--emoji', WebChatEmojiController);
10
+ import '../styles/index.css';
11
+ window.Hellotext = Hellotext;
12
+ export default Hellotext;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ white_label: {
9
+ powered_by: 'Powered by'
10
+ },
11
+ errors: {
12
+ parameter_not_unique: 'This value is taken.',
13
+ blank: 'This field is required.'
14
+ },
15
+ forms: {
16
+ phone: 'Click the link sent via SMS to verify your submission.',
17
+ email: 'Click the link sent via email to verify your submission.',
18
+ phone_and_email: 'Click the links sent via SMS and email to verify your submission.',
19
+ none: 'Your submission has been received.'
20
+ }
21
+ };
22
+ exports.default = _default;
package/lib/locales/en.js CHANGED
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = {
1
+ export default {
8
2
  white_label: {
9
3
  powered_by: 'Powered by'
10
4
  },
@@ -18,5 +12,4 @@ var _default = {
18
12
  phone_and_email: 'Click the links sent via SMS and email to verify your submission.',
19
13
  none: 'Your submission has been received.'
20
14
  }
21
- };
22
- exports.default = _default;
15
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ white_label: {
9
+ powered_by: 'Desarrollado por'
10
+ },
11
+ errors: {
12
+ parameter_not_unique: 'Este valor ya está en uso.',
13
+ blank: 'Este campo es obligatorio.'
14
+ },
15
+ forms: {
16
+ phone: 'Haga clic en el enlace enviado por SMS para verificar su envío.',
17
+ email: 'Haga clic en el enlace enviado por e-mail para verificar su envío.',
18
+ phone_and_email: 'Haga clic en los enlaces enviados por SMS y e-mail para verificar su envío.',
19
+ none: 'Su envío ha sido recibido.'
20
+ }
21
+ };
22
+ exports.default = _default;
package/lib/locales/es.js CHANGED
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = {
1
+ export default {
8
2
  white_label: {
9
3
  powered_by: 'Desarrollado por'
10
4
  },
@@ -18,5 +12,4 @@ var _default = {
18
12
  phone_and_email: 'Haga clic en los enlaces enviados por SMS y e-mail para verificar su envío.',
19
13
  none: 'Su envío ha sido recibido.'
20
14
  }
21
- };
22
- exports.default = _default;
15
+ };
@@ -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;
@@ -1,14 +1,6 @@
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;
1
+ import en from './en';
2
+ import es from './es';
3
+ export default {
4
+ en,
5
+ es
6
+ };
@@ -0,0 +1,65 @@
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
+ let 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 () {
25
+ return this.data.subscription;
26
+ }
27
+ }, {
28
+ key: "country",
29
+ get: function () {
30
+ return this.data.country;
31
+ }
32
+ }, {
33
+ key: "enabledWhitelist",
34
+ get: function () {
35
+ return this.data.whitelist !== 'disabled';
36
+ }
37
+ }, {
38
+ key: "locale",
39
+ get: function () {
40
+ return _locales.default[this.data.locale];
41
+ }
42
+ }, {
43
+ key: "features",
44
+ get: function () {
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 => {
53
+ this.data = data;
54
+ if (typeof document !== 'undefined') {
55
+ const linkTag = document.createElement('link');
56
+ linkTag.rel = 'stylesheet';
57
+ linkTag.href = data.style_url;
58
+ document.head.append(linkTag);
59
+ }
60
+ });
61
+ }
62
+ }]);
63
+ return Business;
64
+ }();
65
+ exports.Business = Business;
@@ -1,17 +1,10 @@
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
1
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
2
  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
3
  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
4
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
14
5
  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); }
6
+ import API from '../api/businesses';
7
+ import locales from '../locales';
15
8
  var Business = /*#__PURE__*/function () {
16
9
  function Business(id) {
17
10
  _classCallCheck(this, Business);
@@ -37,7 +30,7 @@ var Business = /*#__PURE__*/function () {
37
30
  }, {
38
31
  key: "locale",
39
32
  get: function get() {
40
- return _locales.default[this.data.locale];
33
+ return locales[this.data.locale];
41
34
  }
42
35
  }, {
43
36
  key: "features",
@@ -49,7 +42,7 @@ var Business = /*#__PURE__*/function () {
49
42
  }, {
50
43
  key: "fetchPublicData",
51
44
  value: function fetchPublicData() {
52
- _businesses.default.get(this.id).then(response => response.json()).then(data => {
45
+ API.get(this.id).then(response => response.json()).then(data => {
53
46
  this.data = data;
54
47
  if (typeof document !== 'undefined') {
55
48
  var linkTag = document.createElement('link');
@@ -62,4 +55,4 @@ var Business = /*#__PURE__*/function () {
62
55
  }]);
63
56
  return Business;
64
57
  }();
65
- exports.Business = Business;
58
+ export { Business };
@@ -0,0 +1,40 @@
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
+ let 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
+ if (typeof document !== 'undefined') {
22
+ document.cookie = `${name}=${value}; path=/;`;
23
+ }
24
+ _hellotext.default.eventEmitter.dispatch('session-set', value);
25
+ return value;
26
+ }
27
+ }, {
28
+ key: "get",
29
+ value: function get(name) {
30
+ if (typeof document !== 'undefined') {
31
+ var _document$cookie$matc;
32
+ return (_document$cookie$matc = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)')) === null || _document$cookie$matc === void 0 ? void 0 : _document$cookie$matc.pop();
33
+ } else {
34
+ return undefined;
35
+ }
36
+ }
37
+ }]);
38
+ return Cookies;
39
+ }();
40
+ exports.Cookies = Cookies;
@@ -1,16 +1,9 @@
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
1
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
2
  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
3
  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
4
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
13
5
  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); }
6
+ import Hellotext from '../hellotext';
14
7
  var Cookies = /*#__PURE__*/function () {
15
8
  function Cookies() {
16
9
  _classCallCheck(this, Cookies);
@@ -21,7 +14,7 @@ var Cookies = /*#__PURE__*/function () {
21
14
  if (typeof document !== 'undefined') {
22
15
  document.cookie = "".concat(name, "=").concat(value, "; path=/;");
23
16
  }
24
- _hellotext.default.eventEmitter.dispatch('session-set', value);
17
+ Hellotext.eventEmitter.dispatch('session-set', value);
25
18
  return value;
26
19
  }
27
20
  }, {
@@ -37,4 +30,4 @@ var Cookies = /*#__PURE__*/function () {
37
30
  }]);
38
31
  return Cookies;
39
32
  }();
40
- exports.Cookies = Cookies;
33
+ export { Cookies };
@@ -0,0 +1,166 @@
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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
+ 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); } }
13
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
15
+ 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); }
16
+ function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
17
+ var id = 0;
18
+ function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
19
+ var _findOrCreateComponent = /*#__PURE__*/_classPrivateFieldLooseKey("findOrCreateComponent");
20
+ let Form = /*#__PURE__*/function () {
21
+ function Form(data, element = null) {
22
+ _classCallCheck(this, Form);
23
+ Object.defineProperty(this, _findOrCreateComponent, {
24
+ value: _findOrCreateComponent2
25
+ });
26
+ this.data = data;
27
+ this.element = element || document.querySelector(`[data-hello-form="${this.id}"]`) || document.createElement('form');
28
+ }
29
+ _createClass(Form, [{
30
+ key: "mount",
31
+ value: async function mount({
32
+ ifCompleted = true
33
+ } = {}) {
34
+ if (ifCompleted && this.hasBeenCompleted) {
35
+ var _this$element;
36
+ (_this$element = this.element) === null || _this$element === void 0 ? void 0 : _this$element.remove();
37
+ return _hellotext.default.eventEmitter.dispatch('form:completed', {
38
+ id: this.id,
39
+ ...JSON.parse(localStorage.getItem(`hello-form-${this.id}`))
40
+ });
41
+ }
42
+ const firstStep = this.data.steps[0];
43
+ this.buildHeader(firstStep.header);
44
+ this.buildInputs(firstStep.inputs);
45
+ this.buildButton(firstStep.button);
46
+ this.buildFooter(firstStep.footer);
47
+ this.elementAttributes.forEach(attribute => {
48
+ this.element.setAttribute(attribute.name, attribute.value);
49
+ });
50
+ if (!document.contains(this.element)) {
51
+ document.body.appendChild(this.element);
52
+ }
53
+ if (!_hellotext.default.business.features.white_label) {
54
+ this.element.prepend(_logo_builder.LogoBuilder.build());
55
+ }
56
+ }
57
+ }, {
58
+ key: "buildHeader",
59
+ value: function buildHeader(header) {
60
+ const headerElement = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-header]', 'header');
61
+ headerElement.innerHTML = header.content;
62
+ if (this.element.querySelector('[data-form-header]')) {
63
+ this.element.querySelector('[data-form-header]').replaceWith(headerElement);
64
+ } else {
65
+ this.element.prepend(headerElement);
66
+ }
67
+ }
68
+ }, {
69
+ key: "buildInputs",
70
+ value: function buildInputs(inputs) {
71
+ const inputsContainerElement = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-inputs]', 'main');
72
+ const inputElements = inputs.map(input => _input_builder.InputBuilder.build(input));
73
+ inputElements.forEach(inputElement => inputsContainerElement.appendChild(inputElement));
74
+ if (this.element.querySelector('[data-form-inputs]')) {
75
+ this.element.querySelector('[data-form-inputs]').replaceWith(inputsContainerElement);
76
+ } else {
77
+ this.element.querySelector('[data-form-header]').insertAdjacentHTML('afterend', inputsContainerElement.outerHTML);
78
+ }
79
+ }
80
+ }, {
81
+ key: "buildButton",
82
+ value: function buildButton(button) {
83
+ const buttonElement = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-button]', 'button');
84
+ buttonElement.innerText = button.text;
85
+ buttonElement.setAttribute('data-action', 'click->hellotext--form#submit');
86
+ buttonElement.setAttribute('data-hellotext--form-target', 'button');
87
+ if (this.element.querySelector('[data-form-button]')) {
88
+ this.element.querySelector('[data-form-button]').replaceWith(buttonElement);
89
+ } else {
90
+ this.element.querySelector('[data-form-inputs]').insertAdjacentHTML('afterend', buttonElement.outerHTML);
91
+ }
92
+ }
93
+ }, {
94
+ key: "buildFooter",
95
+ value: function buildFooter(footer) {
96
+ const element = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-footer]', 'footer');
97
+ element.innerHTML = footer.content;
98
+ if (this.element.querySelector('[data-form-footer]')) {
99
+ this.element.querySelector('[data-form-footer]').replaceWith(element);
100
+ } else {
101
+ this.element.appendChild(element);
102
+ }
103
+ }
104
+ }, {
105
+ key: "markAsCompleted",
106
+ value: function markAsCompleted(data) {
107
+ const payload = {
108
+ state: 'completed',
109
+ id: this.id,
110
+ data,
111
+ completedAt: new Date().getTime()
112
+ };
113
+ localStorage.setItem(`hello-form-${this.id}`, JSON.stringify(payload));
114
+ _hellotext.default.eventEmitter.dispatch('form:completed', payload);
115
+ }
116
+ }, {
117
+ key: "hasBeenCompleted",
118
+ get: function () {
119
+ return localStorage.getItem(`hello-form-${this.id}`) !== null;
120
+ }
121
+ }, {
122
+ key: "id",
123
+ get: function () {
124
+ return this.data.id;
125
+ }
126
+ }, {
127
+ key: "localeAuthKey",
128
+ get: function () {
129
+ const firstStep = this.data.steps[0];
130
+ if (firstStep.inputs.some(input => input.kind === 'email') && firstStep.inputs.some(input => input.kind === 'phone')) {
131
+ return 'phone_and_email';
132
+ } else if (firstStep.inputs.some(input => input.kind === 'email')) {
133
+ return 'email';
134
+ } else if (firstStep.inputs.some(input => input.kind === 'phone')) {
135
+ return 'phone';
136
+ } else {
137
+ return 'none';
138
+ }
139
+ }
140
+ }, {
141
+ key: "elementAttributes",
142
+ get: function () {
143
+ return [{
144
+ name: 'data-controller',
145
+ value: 'hellotext--form'
146
+ }, {
147
+ name: 'data-hello-form',
148
+ value: this.id
149
+ }, {
150
+ name: 'data-hellotext--form-data-value',
151
+ value: JSON.stringify(this.data)
152
+ }];
153
+ }
154
+ }]);
155
+ return Form;
156
+ }();
157
+ exports.Form = Form;
158
+ function _findOrCreateComponent2(selector, tag) {
159
+ const existingElement = this.element.querySelector(selector);
160
+ if (existingElement) {
161
+ return existingElement.cloneNode(true);
162
+ }
163
+ const createdElement = document.createElement(tag);
164
+ createdElement.setAttribute(selector.replace('[', '').replace(']', ''), '');
165
+ return createdElement;
166
+ }
@@ -1,13 +1,3 @@
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
1
  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
2
  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
3
  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; }
@@ -21,6 +11,9 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
21
11
  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
12
  var id = 0;
23
13
  function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
14
+ import Hellotext from '../hellotext';
15
+ import { InputBuilder } from '../builders/input_builder';
16
+ import { LogoBuilder } from '../builders/logo_builder';
24
17
  var _findOrCreateComponent = /*#__PURE__*/_classPrivateFieldLooseKey("findOrCreateComponent");
25
18
  var Form = /*#__PURE__*/function () {
26
19
  function Form(data) {
@@ -42,7 +35,7 @@ var Form = /*#__PURE__*/function () {
42
35
  if (ifCompleted && this.hasBeenCompleted) {
43
36
  var _this$element;
44
37
  (_this$element = this.element) === null || _this$element === void 0 ? void 0 : _this$element.remove();
45
- return _hellotext.default.eventEmitter.dispatch('form:completed', _objectSpread({
38
+ return Hellotext.eventEmitter.dispatch('form:completed', _objectSpread({
46
39
  id: this.id
47
40
  }, JSON.parse(localStorage.getItem("hello-form-".concat(this.id)))));
48
41
  }
@@ -57,8 +50,8 @@ var Form = /*#__PURE__*/function () {
57
50
  if (!document.contains(this.element)) {
58
51
  document.body.appendChild(this.element);
59
52
  }
60
- if (!_hellotext.default.business.features.white_label) {
61
- this.element.prepend(_logo_builder.LogoBuilder.build());
53
+ if (!Hellotext.business.features.white_label) {
54
+ this.element.prepend(LogoBuilder.build());
62
55
  }
63
56
  });
64
57
  function mount() {
@@ -81,7 +74,7 @@ var Form = /*#__PURE__*/function () {
81
74
  key: "buildInputs",
82
75
  value: function buildInputs(inputs) {
83
76
  var inputsContainerElement = _classPrivateFieldLooseBase(this, _findOrCreateComponent)[_findOrCreateComponent]('[data-form-inputs]', 'main');
84
- var inputElements = inputs.map(input => _input_builder.InputBuilder.build(input));
77
+ var inputElements = inputs.map(input => InputBuilder.build(input));
85
78
  inputElements.forEach(inputElement => inputsContainerElement.appendChild(inputElement));
86
79
  if (this.element.querySelector('[data-form-inputs]')) {
87
80
  this.element.querySelector('[data-form-inputs]').replaceWith(inputsContainerElement);
@@ -123,7 +116,7 @@ var Form = /*#__PURE__*/function () {
123
116
  completedAt: new Date().getTime()
124
117
  };
125
118
  localStorage.setItem("hello-form-".concat(this.id), JSON.stringify(payload));
126
- _hellotext.default.eventEmitter.dispatch('form:completed', payload);
119
+ Hellotext.eventEmitter.dispatch('form:completed', payload);
127
120
  }
128
121
  }, {
129
122
  key: "hasBeenCompleted",
@@ -166,7 +159,6 @@ var Form = /*#__PURE__*/function () {
166
159
  }]);
167
160
  return Form;
168
161
  }();
169
- exports.Form = Form;
170
162
  function _findOrCreateComponent2(selector, tag) {
171
163
  var existingElement = this.element.querySelector(selector);
172
164
  if (existingElement) {
@@ -175,4 +167,5 @@ function _findOrCreateComponent2(selector, tag) {
175
167
  var createdElement = document.createElement(tag);
176
168
  createdElement.setAttribute(selector.replace('[', '').replace(']', ''), '');
177
169
  return createdElement;
178
- }
170
+ }
171
+ export { Form };