@hellotext/hellotext 1.8.6 → 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 (107) hide show
  1. package/README.md +3 -0
  2. package/dist/hellotext.js +1 -1
  3. package/lib/api/businesses.cjs +37 -0
  4. package/lib/api/businesses.js +3 -9
  5. package/lib/api/events.cjs +45 -0
  6. package/lib/api/events.js +8 -14
  7. package/lib/api/forms.cjs +51 -0
  8. package/lib/api/forms.js +10 -17
  9. package/lib/api/index.cjs +51 -0
  10. package/lib/api/index.js +10 -23
  11. package/lib/api/response.cjs +76 -0
  12. package/lib/api/response.js +1 -7
  13. package/lib/api/submissions.cjs +47 -0
  14. package/lib/api/submissions.js +9 -17
  15. package/lib/api/webchat/messages.cjs +70 -0
  16. package/lib/api/webchat/messages.js +10 -18
  17. package/lib/api/webchats.cjs +44 -0
  18. package/lib/api/webchats.js +8 -16
  19. package/lib/builders/input_builder.cjs +61 -0
  20. package/lib/builders/input_builder.js +4 -11
  21. package/lib/builders/logo_builder.cjs +50 -0
  22. package/lib/builders/logo_builder.js +5 -12
  23. package/lib/channels/application_channel.cjs +67 -0
  24. package/lib/channels/application_channel.js +1 -8
  25. package/lib/channels/{web_chat_channel.js → webchat_channel.cjs} +35 -20
  26. package/lib/channels/webchat_channel.js +3 -11
  27. package/lib/controllers/form_controller.cjs +141 -0
  28. package/lib/controllers/form_controller.js +15 -22
  29. package/lib/controllers/mixins/usePopover.cjs +59 -0
  30. package/lib/controllers/mixins/usePopover.js +6 -14
  31. package/lib/controllers/{web_chat/pagination_controller.js → webchat/emoji_picker_controller.cjs} +74 -29
  32. package/lib/controllers/webchat/emoji_picker_controller.js +11 -17
  33. package/lib/controllers/webchat_controller.cjs +433 -0
  34. package/lib/controllers/webchat_controller.js +49 -51
  35. package/lib/core/configuration/forms.cjs +49 -0
  36. package/lib/core/configuration/forms.js +2 -8
  37. package/lib/core/configuration/{web_chat.js → webchat.cjs} +53 -38
  38. package/lib/core/configuration/webchat.js +2 -9
  39. package/lib/core/configuration.cjs +65 -0
  40. package/lib/core/configuration.js +8 -13
  41. package/lib/core/event.cjs +71 -0
  42. package/lib/core/event.js +5 -11
  43. package/lib/core/index.cjs +20 -0
  44. package/lib/core/index.js +2 -20
  45. package/lib/errors/index.cjs +19 -0
  46. package/lib/errors/index.js +2 -19
  47. package/lib/errors/invalid_event.cjs +34 -0
  48. package/lib/errors/invalid_event.js +1 -7
  49. package/lib/errors/not_initialized_error.cjs +34 -0
  50. package/lib/errors/not_initialized_error.js +1 -7
  51. package/lib/hellotext.cjs +152 -0
  52. package/lib/hellotext.js +18 -27
  53. package/lib/index.cjs +20 -0
  54. package/lib/index.js +12 -20
  55. package/lib/locales/en.cjs +22 -0
  56. package/lib/locales/en.js +2 -9
  57. package/lib/locales/es.cjs +22 -0
  58. package/lib/locales/es.js +2 -9
  59. package/lib/locales/index.cjs +14 -0
  60. package/lib/locales/index.js +6 -14
  61. package/lib/models/business.cjs +65 -0
  62. package/lib/models/business.js +5 -12
  63. package/lib/models/cookies.cjs +40 -0
  64. package/lib/models/cookies.js +3 -10
  65. package/lib/models/form.cjs +166 -0
  66. package/lib/models/form.js +10 -17
  67. package/lib/models/form_collection.cjs +119 -0
  68. package/lib/models/form_collection.js +15 -22
  69. package/lib/models/index.cjs +54 -0
  70. package/lib/models/index.js +7 -54
  71. package/lib/models/query.cjs +51 -0
  72. package/lib/models/query.js +3 -9
  73. package/lib/models/session.cjs +58 -0
  74. package/lib/models/session.js +12 -17
  75. package/lib/models/{web_chat.js → webchat.cjs} +14 -22
  76. package/lib/models/webchat.js +6 -13
  77. package/lib/vanilla.cjs +13 -0
  78. package/lib/vanilla.js +1 -13
  79. package/package.json +34 -7
  80. package/src/controllers/webchat_controller.js +72 -47
  81. package/src/hellotext.js +5 -6
  82. package/src/models/session.js +4 -3
  83. package/.babelrc +0 -24
  84. package/.github/workflows/ci.yml +0 -24
  85. package/.prettierignore +0 -3
  86. package/.prettierrc.json +0 -18
  87. package/MIT-LICENSE +0 -20
  88. package/__tests__/builders/input_builder_test.js +0 -117
  89. package/__tests__/core/configuration/forms_test.js +0 -30
  90. package/__tests__/core/configuration/webchat_test.js +0 -163
  91. package/__tests__/core/configuration_test.js +0 -28
  92. package/__tests__/core/event_test.js +0 -56
  93. package/__tests__/hellotext_test.js +0 -197
  94. package/__tests__/models/business_test.js +0 -26
  95. package/__tests__/models/cookies_test.js +0 -25
  96. package/__tests__/models/form_collection_test.js +0 -103
  97. package/__tests__/models/form_test.js +0 -131
  98. package/__tests__/models/query_test.js +0 -97
  99. package/docs/forms.md +0 -176
  100. package/docs/tracking.md +0 -168
  101. package/docs/webchat.md +0 -101
  102. package/jest.config.js +0 -4
  103. package/jest.setup.js +0 -16
  104. package/lib/api/web_chat/messages.js +0 -74
  105. package/lib/api/web_chats.js +0 -53
  106. package/styles/index.css +0 -38
  107. package/webpack.config.js +0 -24
package/jest.setup.js DELETED
@@ -1,16 +0,0 @@
1
- require('whatwg-fetch');
2
-
3
- global.crypto.randomUUID = () => {
4
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
5
- const r = (Math.random() * 16) | 0;
6
- const v = c === 'x' ? r : (r & 0x3) | 0x8;
7
- return v.toString(16);
8
- });
9
- };
10
-
11
- global.fetch = jest.fn(() =>
12
- Promise.resolve({
13
- json: () => Promise.resolve({}),
14
- text: () => Promise.resolve(''),
15
- })
16
- );
@@ -1,74 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _hellotext = _interopRequireDefault(require("../../hellotext"));
8
- var _core = require("../../core");
9
- var _response = require("../response");
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- 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); } }
12
- 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); }); }; }
13
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14
- 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); } }
15
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
16
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
17
- 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); }
18
- var WebChatMessagesAPI = /*#__PURE__*/function () {
19
- function WebChatMessagesAPI(webChatId) {
20
- _classCallCheck(this, WebChatMessagesAPI);
21
- this.webChatId = webChatId;
22
- }
23
- _createClass(WebChatMessagesAPI, [{
24
- key: "index",
25
- value: function () {
26
- var _index = _asyncToGenerator(function* (params) {
27
- var url = new URL(this.url);
28
- Object.entries(params).forEach(_ref => {
29
- var [key, value] = _ref;
30
- url.searchParams.append(key, value);
31
- });
32
- return yield fetch(url, {
33
- method: 'GET',
34
- headers: _hellotext.default.headers
35
- });
36
- });
37
- function index(_x) {
38
- return _index.apply(this, arguments);
39
- }
40
- return index;
41
- }()
42
- }, {
43
- key: "create",
44
- value: function () {
45
- var _create = _asyncToGenerator(function* (formData) {
46
- var response = yield fetch(this.url, {
47
- method: 'POST',
48
- headers: {
49
- Authorization: "Bearer ".concat(_hellotext.default.business.id)
50
- },
51
- body: formData
52
- });
53
- return new _response.Response(response.ok, response);
54
- });
55
- function create(_x2) {
56
- return _create.apply(this, arguments);
57
- }
58
- return create;
59
- }()
60
- }, {
61
- key: "url",
62
- get: function get() {
63
- return WebChatMessagesAPI.endpoint.replace(':id', this.webChatId);
64
- }
65
- }], [{
66
- key: "endpoint",
67
- get: function get() {
68
- return _core.Configuration.endpoint("public/webchats/:id/messages");
69
- }
70
- }]);
71
- return WebChatMessagesAPI;
72
- }();
73
- var _default = WebChatMessagesAPI;
74
- exports.default = _default;
@@ -1,53 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _hellotext = _interopRequireDefault(require("../hellotext"));
8
- var _core = require("../core");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- 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); } }
11
- 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); }); }; }
12
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
- 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); } }
14
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
15
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
16
- 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); }
17
- var WebChatsAPI = /*#__PURE__*/function () {
18
- function WebChatsAPI() {
19
- _classCallCheck(this, WebChatsAPI);
20
- }
21
- _createClass(WebChatsAPI, null, [{
22
- key: "endpoint",
23
- get: function get() {
24
- return _core.Configuration.endpoint('public/webchats');
25
- }
26
- }, {
27
- key: "get",
28
- value: function () {
29
- var _get = _asyncToGenerator(function* (id) {
30
- var url = new URL("".concat(this.endpoint, "/").concat(id));
31
- url.searchParams.append('session', _hellotext.default.session);
32
- Object.entries(_core.Configuration.webChat.style).forEach(_ref => {
33
- var [key, value] = _ref;
34
- url.searchParams.append("style[".concat(key, "]"), value);
35
- });
36
- url.searchParams.append('placement', _core.Configuration.webChat.placement);
37
- var response = yield fetch(url, {
38
- method: 'GET',
39
- headers: _hellotext.default.headers
40
- });
41
- var htmlText = yield response.text();
42
- return new DOMParser().parseFromString(htmlText, "text/html").querySelector('article');
43
- });
44
- function get(_x) {
45
- return _get.apply(this, arguments);
46
- }
47
- return get;
48
- }()
49
- }]);
50
- return WebChatsAPI;
51
- }();
52
- var _default = WebChatsAPI;
53
- exports.default = _default;
package/styles/index.css DELETED
@@ -1,38 +0,0 @@
1
- .hidden {
2
- display: none;
3
- }
4
-
5
- form[data-hello-form] {
6
- position: relative;
7
-
8
- & article {
9
- & [data-error-container] {
10
- font-size: 0.875rem;
11
- line-height: 1.25rem;
12
- display: none;
13
- }
14
-
15
- &:has(input:invalid) {
16
- & [data-error-container] {
17
- display: block;
18
- }
19
- }
20
- }
21
-
22
- & [data-logo-container] {
23
- display: flex;
24
- justify-content: center;
25
- align-items: flex-end;
26
- position: absolute;
27
- right: 1rem;
28
- bottom: 1rem;
29
-
30
- & small {
31
- margin: 0 0.3rem;
32
- }
33
-
34
- & [data-hello-brand] {
35
- width: 4rem;
36
- }
37
- }
38
- }
package/webpack.config.js DELETED
@@ -1,24 +0,0 @@
1
- module.exports = {
2
- mode: 'production',
3
- entry: ['@hotwired/stimulus', './lib/index.js'],
4
- output: {
5
- filename: 'hellotext.js',
6
- },
7
- module: {
8
- rules: [
9
- {
10
- test: /\.m?js$/,
11
- exclude: [/node_modules/],
12
- use: [
13
- {
14
- loader: 'babel-loader',
15
- },
16
- ],
17
- },
18
- {
19
- test: /\.css$/i,
20
- use: ['style-loader', 'css-loader'],
21
- },
22
- ],
23
- },
24
- }