@textback/notification-widget 2.0.0 → 2.0.1-102913

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 (109) hide show
  1. package/.eslintrc.js +291 -291
  2. package/build/index.js +12 -0
  3. package/build/sdk.js +9 -0
  4. package/package.json +70 -68
  5. package/promote_tag.sh +1 -1
  6. package/readme.md +569 -490
  7. package/server.js +8 -4
  8. package/src/libraries/ai.1.0.11.js +4088 -4088
  9. package/src/libraries/localization/locales/cs.js +14 -12
  10. package/src/libraries/localization/locales/en.js +14 -12
  11. package/src/libraries/localization/locales/index.js +8 -8
  12. package/src/libraries/localization/locales/pl.js +14 -12
  13. package/src/libraries/localization/locales/ro.js +14 -12
  14. package/src/libraries/localization/locales/ru.js +13 -12
  15. package/src/libraries/localization/locales/uk.js +14 -12
  16. package/src/libraries/localization/text.js +9 -9
  17. package/src/libraries/t.js +82 -82
  18. package/src/sdk/channels/channel.js +30 -30
  19. package/src/sdk/channels/facebook.js +13 -13
  20. package/src/sdk/channels/factory.js +3 -3
  21. package/src/sdk/channels/skype.js +12 -12
  22. package/src/sdk/channels/telegram.js +18 -18
  23. package/src/sdk/channels/viber.js +12 -12
  24. package/src/sdk/channels/vk-modal/vk-modal.html +17 -17
  25. package/src/sdk/channels/vk-modal/vk-modal.js +25 -25
  26. package/src/sdk/channels/vk-modal/vk-modal.scss +116 -116
  27. package/src/sdk/channels/vk.js +195 -184
  28. package/src/sdk/channels/whatsapp.js +16 -10
  29. package/src/sdk/channels/whatsappb.js +27 -0
  30. package/src/sdk/events/observer.js +46 -46
  31. package/src/sdk/index.js +5 -5
  32. package/src/sdk/sdk.js +67 -30
  33. package/src/sdk/utils/apiErrorHandler.js +11 -11
  34. package/src/sdk/utils/appInsights.js +88 -88
  35. package/src/sdk/utils/browserInfo.js +8 -8
  36. package/src/sdk/utils/constants.js +17 -17
  37. package/src/sdk/utils/cookies.js +67 -50
  38. package/src/sdk/utils/find.js +7 -7
  39. package/src/sdk/utils/loadConfig.js +20 -20
  40. package/src/sdk/utils/loadDeepLink.js +48 -21
  41. package/src/sdk/utils/loadScript.js +25 -25
  42. package/src/sdk/utils/loadSubscriptions.js +6 -6
  43. package/src/sdk/utils/parseQueryString.js +33 -33
  44. package/src/sdk/utils/windowHelper.js +25 -25
  45. package/src/sdk/widget/widget.js +192 -140
  46. package/src/widget/components/index.js +6 -2
  47. package/src/widget/components/tb-notification-button/facebook.js +9 -2
  48. package/src/widget/components/tb-notification-button/index.js +34 -34
  49. package/src/widget/components/tb-notification-button/styles.scss +657 -433
  50. package/src/widget/components/tb-notification-button/telegram.js +9 -2
  51. package/src/widget/components/tb-notification-button/viber.js +9 -2
  52. package/src/widget/components/tb-notification-button/vk.js +59 -50
  53. package/src/widget/components/tb-notification-button/whatsapp.js +15 -8
  54. package/src/widget/components/tb-notification-button/whatsappb.js +58 -0
  55. package/src/widget/components/tb-notification-widget/index.js +589 -384
  56. package/src/widget/components/tb-notification-widget/normalize.scss +395 -394
  57. package/src/widget/components/tb-notification-widget/styles.scss +502 -139
  58. package/src/widget/components/tb-nw-wahunter/index.js +259 -0
  59. package/src/widget/components/tb-nw-wahunter/styles.scss +471 -0
  60. package/src/widget/config.js +5 -5
  61. package/src/widget/icons/icon_chat_window.svg +1 -0
  62. package/src/widget/icons/icon_close.svg +1 -0
  63. package/src/widget/icons/icon_facebook.svg +7 -7
  64. package/src/widget/icons/icon_facebook_circle.svg +7 -9
  65. package/src/widget/icons/icon_instagram_circle.svg +95 -95
  66. package/src/widget/icons/icon_skype.svg +44 -44
  67. package/src/widget/icons/icon_skype_circle.svg +46 -46
  68. package/src/widget/icons/icon_skype_new.svg +113 -113
  69. package/src/widget/icons/icon_tg.svg +25 -25
  70. package/src/widget/icons/icon_tg_circle.svg +17 -27
  71. package/src/widget/icons/icon_viber.svg +75 -75
  72. package/src/widget/icons/icon_viber_circle.svg +67 -77
  73. package/src/widget/icons/icon_viber_new.svg +102 -102
  74. package/src/widget/icons/icon_vk.svg +14 -14
  75. package/src/widget/icons/icon_vk_circle.svg +16 -16
  76. package/src/widget/icons/icon_whatsapp.svg +147 -147
  77. package/src/widget/icons/icon_whatsapp_circle.svg +3 -3
  78. package/src/widget/icons/icon_whatsapp_hollow.svg +128 -0
  79. package/src/widget/icons/icon_whatsapp_new.svg +127 -127
  80. package/src/widget/icons/icon_whatsappb.svg +147 -0
  81. package/src/widget/icons/icon_whatsappb_circle.svg +4 -0
  82. package/src/widget/icons/icon_whatsappb_new.svg +127 -0
  83. package/src/widget/icons/paper-plane-arrow.svg +3 -0
  84. package/src/widget/icons/tb-logo.svg +21 -0
  85. package/src/widget/index.js +28 -28
  86. package/src/widget/locales/cs.js +42 -0
  87. package/src/widget/locales/en.js +42 -20
  88. package/src/widget/locales/index.js +2 -2
  89. package/src/widget/locales/pl.js +41 -19
  90. package/src/widget/locales/ro.js +41 -20
  91. package/src/widget/locales/ru.js +40 -19
  92. package/src/widget/locales/uk.js +40 -19
  93. package/src/widget/utils/cookiesEx.js +41 -41
  94. package/src/widget/utils/getLocale.js +4 -2
  95. package/src/widget/utils/stringifyAttributes.js +19 -19
  96. package/src/widget/utils/text.js +2 -1
  97. package/src/widget/utils/widgetsStorage.js +28 -28
  98. package/src/widget/widget.entry.js +3 -4
  99. package/tests/gf.html +35 -35
  100. package/tests/gf.js +21 -21
  101. package/tests/index.js +61 -61
  102. package/views/examples.ejs +7 -3
  103. package/views/sdk.html +274 -256
  104. package/webpack.common.js +72 -72
  105. package/webpack.dev.js +15 -15
  106. package/webpack.prod.js +10 -10
  107. package/src/widget/components/tb-notification-button/skype.js +0 -47
  108. package/src/widget/icons/text-back-badge.png +0 -0
  109. package/src/widget/locales/cz.js +0 -20
package/tests/gf.html CHANGED
@@ -1,35 +1,35 @@
1
- <html lang="en">
2
- <head>
3
- <meta charset="UTF-8">
4
- <title>example</title>
5
- <link rel="stylesheet" href="https://unpkg.com/semantic-ui-css/semantic.min.css">
6
- <script src="//unpkg.com/jquery/dist/jquery.min.js"></script>
7
- <script src="//cdn.polyfill.io/v2/polyfill.min.js?features=default,fetch,Promise"></script>
8
- <script src="/build/index.js"></script>
9
- <script>
10
- var _fetch = window.fetch;
11
-
12
- window.fetch = function(url, options) {
13
- window.fetch.calls.push({url: url, options: options});
14
- return _fetch(url, options);
15
- }
16
-
17
- window.fetch.calls = [];
18
- </script>
19
- </head>
20
- <body>
21
- <tb-notification-widget
22
- secure-context-token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcmRlcklkIjoiNDU2OCIsImlhdCI6MTQ5MTMzMzM0OCwiZXhwIjoxNDkyMTk3MzQ4LCJpc3MiOiJlZTlhZTMwYi1jYzRhLTRlNTctYWM1Mi05ZmYwOTEyMmRkODEiLCJzdWIiOiIxMjM0NSJ9._3FnsIV0atJ9F8_vmDZlzz5S0Qo6-tn7GP597Rxphm8="
23
- widget-id="59f3dfaf-935f-4f0f-98b3-02a51abd0c7c"
24
- api-path="https://api.textback.io/api"
25
- data-insecure-order-id="">
26
- </tb-notification-widget>
27
- <script>
28
- setTimeout(function() {
29
- var widgetElement = $('tb-notification-widget').get(0);
30
- widgetElement.dataset.insecureOrderId = 'testId';
31
- new TextBack.NotificationWidget({element: widgetElement});
32
- }, 2000);
33
- </script>
34
- </body>
35
- </html>
1
+ <html lang="en">
2
+ <head>
3
+ <meta charset="UTF-8">
4
+ <title>example</title>
5
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui-css/semantic.min.css">
6
+ <script src="//cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
7
+ <script src="//cdn.polyfill.io/v2/polyfill.min.js?features=default,fetch,Promise"></script>
8
+ <script src="/build/index.js"></script>
9
+ <script>
10
+ var _fetch = window.fetch;
11
+
12
+ window.fetch = function(url, options) {
13
+ window.fetch.calls.push({url: url, options: options});
14
+ return _fetch(url, options);
15
+ }
16
+
17
+ window.fetch.calls = [];
18
+ </script>
19
+ </head>
20
+ <body>
21
+ <tb-notification-widget
22
+ secure-context-token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcmRlcklkIjoiNDU2OCIsImlhdCI6MTQ5MTMzMzM0OCwiZXhwIjoxNDkyMTk3MzQ4LCJpc3MiOiJlZTlhZTMwYi1jYzRhLTRlNTctYWM1Mi05ZmYwOTEyMmRkODEiLCJzdWIiOiIxMjM0NSJ9._3FnsIV0atJ9F8_vmDZlzz5S0Qo6-tn7GP597Rxphm8="
23
+ widget-id="59f3dfaf-935f-4f0f-98b3-02a51abd0c7c"
24
+ api-path="https://api.textback.io/api"
25
+ data-insecure-order-id="">
26
+ </tb-notification-widget>
27
+ <script>
28
+ setTimeout(function() {
29
+ var widgetElement = $('tb-notification-widget').get(0);
30
+ widgetElement.dataset.insecureOrderId = 'testId';
31
+ new TextBack.NotificationWidget({element: widgetElement});
32
+ }, 2000);
33
+ </script>
34
+ </body>
35
+ </html>
package/tests/gf.js CHANGED
@@ -1,22 +1,22 @@
1
- fixture `Notification widget growfood tests`
2
- .page `http://localhost:3000/tests/gf.html`;
3
-
4
- test('Post initialization deeplink request', async t => {
5
- const initialization = new Promise(resolve => {
6
- setTimeout(resolve, 3000);
7
- });
8
-
9
- await initialization;
10
-
11
- const requests = await t.eval(() => window.fetch.calls);
12
- const deeplinkRequests = requests.filter(call => {
13
- return call.url === 'https://api.textback.io/api/endUserNotifications/deepLinks';
14
- });
15
-
16
- await t.expect(JSON.parse(deeplinkRequests[1].options.body)).eql({
17
- "accountId": "ee9ae30b-cc4a-4e57-ac52-9ff09122dd81",
18
- "insecureContext": {"insecureOrderId": "testId"},
19
- "secureContextToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcmRlcklkIjoiNDU2OCIsImlhdCI6MTQ5MTMzMzM0OCwiZXhwIjoxNDkyMTk3MzQ4LCJpc3MiOiJlZTlhZTMwYi1jYzRhLTRlNTctYWM1Mi05ZmYwOTEyMmRkODEiLCJzdWIiOiIxMjM0NSJ9._3FnsIV0atJ9F8_vmDZlzz5S0Qo6-tn7GP597Rxphm8="
20
- });
21
-
1
+ fixture `Notification widget growfood tests`
2
+ .page `http://localhost:3000/tests/gf.html`;
3
+
4
+ test('Post initialization deeplink request', async t => {
5
+ const initialization = new Promise(resolve => {
6
+ setTimeout(resolve, 3000);
7
+ });
8
+
9
+ await initialization;
10
+
11
+ const requests = await t.eval(() => window.fetch.calls);
12
+ const deeplinkRequests = requests.filter(call => {
13
+ return call.url === 'https://api.textback.io/api/endUserNotifications/deepLinks';
14
+ });
15
+
16
+ await t.expect(JSON.parse(deeplinkRequests[1].options.body)).eql({
17
+ "accountId": "ee9ae30b-cc4a-4e57-ac52-9ff09122dd81",
18
+ "insecureContext": {"insecureOrderId": "testId"},
19
+ "secureContextToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJvcmRlcklkIjoiNDU2OCIsImlhdCI6MTQ5MTMzMzM0OCwiZXhwIjoxNDkyMTk3MzQ4LCJpc3MiOiJlZTlhZTMwYi1jYzRhLTRlNTctYWM1Mi05ZmYwOTEyMmRkODEiLCJzdWIiOiIxMjM0NSJ9._3FnsIV0atJ9F8_vmDZlzz5S0Qo6-tn7GP597Rxphm8="
20
+ });
21
+
22
22
  });
package/tests/index.js CHANGED
@@ -1,62 +1,62 @@
1
- const {Selector} = require('testcafe');
2
- const querystring = require('querystring');
3
-
4
- const query = querystring.stringify({
5
- widgetPath: '/build/index.js',
6
- apiPath: '/api',
7
- widgetId: 'a'
8
- });
9
-
10
- fixture `Notification widget base tests`
11
- .page `http://localhost:3000/examples?${query}`;
12
-
13
- test('Telegram button', async t => {
14
- const button = Selector('tb-notification-button[channel="tg"]');
15
- const link = button.find('a');
16
- const text = await button.innerText;
17
- const href = await link.getAttribute('href');
18
-
19
- await t.expect(text).contains('Telegram');
20
- await t.expect(href).contains('https://telegram.me/rb_dev_3_bot?start=subscribe_');
21
- });
22
-
23
- test('VK button', async t => {
24
- const button = Selector('tb-notification-button[channel="vk"]');
25
- const text = await button.innerText;
26
-
27
- await t.expect(text).contains('VKontakte');
28
- });
29
-
30
- test('Facebook button', async t => {
31
- const button = Selector('tb-notification-button[channel="facebook"]');
32
- const link = button.find('a');
33
- const text = await button.innerText;
34
- const href = await link.getAttribute('href');
35
-
36
- await t.expect(text).contains('Facebook');
37
- await t.expect(href).contains('https://m.me/323049074708312?ref=subscribe_');
38
- });
39
-
40
- test('Viber button', async t => {
41
- const button = Selector('tb-notification-button[channel="viber"]');
42
- const link = button.find('a');
43
- const text = await button.innerText;
44
- const href = await link.getAttribute('href');
45
-
46
- await t.expect(text).contains('Viber');
47
- await t.expect(href).contains('viber://pa?chatURI=dev_&context=subscribe_');
48
- });
49
-
50
- test('deeplink request', async t => {
51
- const requests = await t.eval(() => window.fetch.calls);
52
-
53
- const deeplinkRequests = requests.filter(call => {
54
- return call.url === '/api/endUserNotifications/deepLinks'
55
- });
56
-
57
- await t.expect(JSON.parse(deeplinkRequests[0].options.body)).eql({
58
- "accountId": "99bffda5-5bd1-49b1-b4f2-658854797c01",
59
- "insecureContext": {"orderId": "insecureOrderID"},
60
- "secureContextToken": null
61
- });
1
+ const {Selector} = require('testcafe');
2
+ const querystring = require('querystring');
3
+
4
+ const query = querystring.stringify({
5
+ widgetPath: '/build/index.js',
6
+ apiPath: '/api',
7
+ widgetId: 'a'
8
+ });
9
+
10
+ fixture `Notification widget base tests`
11
+ .page `http://localhost:3000/examples?${query}`;
12
+
13
+ test('Telegram button', async t => {
14
+ const button = Selector('tb-notification-button[channel="tg"]');
15
+ const link = button.find('a');
16
+ const text = await button.innerText;
17
+ const href = await link.getAttribute('href');
18
+
19
+ await t.expect(text).contains('Telegram');
20
+ await t.expect(href).contains('https://telegram.me/rb_dev_3_bot?start=subscribe_');
21
+ });
22
+
23
+ test('VK button', async t => {
24
+ const button = Selector('tb-notification-button[channel="vk"]');
25
+ const text = await button.innerText;
26
+
27
+ await t.expect(text).contains('VKontakte');
28
+ });
29
+
30
+ test('Facebook button', async t => {
31
+ const button = Selector('tb-notification-button[channel="facebook"]');
32
+ const link = button.find('a');
33
+ const text = await button.innerText;
34
+ const href = await link.getAttribute('href');
35
+
36
+ await t.expect(text).contains('Facebook');
37
+ await t.expect(href).contains('https://m.me/323049074708312?ref=subscribe_');
38
+ });
39
+
40
+ test('Viber button', async t => {
41
+ const button = Selector('tb-notification-button[channel="viber"]');
42
+ const link = button.find('a');
43
+ const text = await button.innerText;
44
+ const href = await link.getAttribute('href');
45
+
46
+ await t.expect(text).contains('Viber');
47
+ await t.expect(href).contains('viber://pa?chatURI=dev_&context=subscribe_');
48
+ });
49
+
50
+ test('deeplink request', async t => {
51
+ const requests = await t.eval(() => window.fetch.calls);
52
+
53
+ const deeplinkRequests = requests.filter(call => {
54
+ return call.url === '/api/endUserNotifications/deepLinks'
55
+ });
56
+
57
+ await t.expect(JSON.parse(deeplinkRequests[0].options.body)).eql({
58
+ "accountId": "99bffda5-5bd1-49b1-b4f2-658854797c01",
59
+ "insecureContext": {"orderId": "insecureOrderID"},
60
+ "secureContextToken": null
61
+ });
62
62
  });
@@ -3,10 +3,10 @@
3
3
  <meta charset="UTF-8">
4
4
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
5
  <title>example</title>
6
- <link rel="stylesheet" href="https://unpkg.com/semantic-ui-css/semantic.min.css">
6
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui-css/semantic.min.css">
7
7
  <!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">-->
8
- <script src="https://unpkg.com/jquery/dist/jquery.min.js"></script>
9
- <script src="https://unpkg.com/semantic-ui-css/semantic.min.js"></script>
8
+ <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/semantic-ui-css/semantic.min.js"></script>
10
10
  <!-- <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=default,fetch,Promise"></script> -->
11
11
 
12
12
  </head>
@@ -26,6 +26,10 @@
26
26
  <label>widgetId</label>
27
27
  <input type="text" name="widgetId" value="<%- query.widgetId %>" placeholder="widgetId">
28
28
  </div>
29
+ <div class="field">
30
+ <label>lang</label>
31
+ <input type="text" name="lang" value="<%- query.lang %>" placeholder="lang">
32
+ </div>
29
33
  <div class="field">
30
34
  <label>data</label>
31
35
  <input type="text" name="data" value=<%- `${query.data}` %> placeholder="data">