@textback/notification-widget 2.0.0-9450 → 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 (113) hide show
  1. package/.eslintrc.js +291 -291
  2. package/build/index.js +6 -3
  3. package/build/sdk.js +3 -3
  4. package/package.json +11 -8
  5. package/promote_tag.sh +1 -1
  6. package/{README.md → readme.md} +569 -490
  7. package/server.js +134 -134
  8. package/src/libraries/ai.1.0.11.js +4088 -4088
  9. package/src/libraries/localization/getLocale.js +17 -0
  10. package/src/libraries/localization/locales/.tern-port +1 -0
  11. package/src/libraries/localization/locales/cs.js +23 -0
  12. package/src/libraries/localization/locales/en.js +23 -0
  13. package/src/libraries/localization/locales/index.js +9 -0
  14. package/src/libraries/localization/locales/pl.js +23 -0
  15. package/src/libraries/localization/locales/ro.js +23 -0
  16. package/src/libraries/localization/locales/ru.js +22 -0
  17. package/src/libraries/localization/locales/uk.js +23 -0
  18. package/src/libraries/localization/text.js +9 -0
  19. package/src/libraries/t.js +82 -82
  20. package/src/sdk/channels/channel.js +30 -30
  21. package/src/sdk/channels/facebook.js +13 -13
  22. package/src/sdk/channels/factory.js +3 -3
  23. package/src/sdk/channels/skype.js +12 -12
  24. package/src/sdk/channels/telegram.js +18 -13
  25. package/src/sdk/channels/viber.js +12 -12
  26. package/src/sdk/channels/vk-modal/vk-modal.html +17 -17
  27. package/src/sdk/channels/vk-modal/vk-modal.js +25 -25
  28. package/src/sdk/channels/vk-modal/vk-modal.scss +116 -116
  29. package/src/sdk/channels/vk.js +195 -173
  30. package/src/sdk/channels/whatsapp.js +20 -11
  31. package/src/sdk/channels/whatsappb.js +27 -0
  32. package/src/sdk/events/observer.js +46 -46
  33. package/src/sdk/index.js +5 -5
  34. package/src/sdk/sdk.js +67 -30
  35. package/src/sdk/utils/apiErrorHandler.js +11 -11
  36. package/src/sdk/utils/appInsights.js +88 -88
  37. package/src/sdk/utils/browserInfo.js +8 -8
  38. package/src/sdk/utils/constants.js +17 -17
  39. package/src/sdk/utils/cookies.js +67 -50
  40. package/src/sdk/utils/find.js +7 -7
  41. package/src/sdk/utils/loadConfig.js +20 -20
  42. package/src/sdk/utils/loadDeepLink.js +48 -21
  43. package/src/sdk/utils/loadScript.js +25 -25
  44. package/src/sdk/utils/loadSubscriptions.js +6 -6
  45. package/src/sdk/utils/parseQueryString.js +33 -33
  46. package/src/sdk/utils/windowHelper.js +25 -0
  47. package/src/sdk/widget/widget.js +192 -140
  48. package/src/widget/components/index.js +6 -2
  49. package/src/widget/components/tb-notification-button/facebook.js +9 -2
  50. package/src/widget/components/tb-notification-button/index.js +34 -34
  51. package/src/widget/components/tb-notification-button/styles.scss +657 -433
  52. package/src/widget/components/tb-notification-button/telegram.js +9 -2
  53. package/src/widget/components/tb-notification-button/viber.js +9 -2
  54. package/src/widget/components/tb-notification-button/vk.js +60 -47
  55. package/src/widget/components/tb-notification-button/whatsapp.js +15 -8
  56. package/src/widget/components/tb-notification-button/whatsappb.js +58 -0
  57. package/src/widget/components/tb-notification-widget/index.js +597 -353
  58. package/src/widget/components/tb-notification-widget/normalize.scss +395 -394
  59. package/src/widget/components/tb-notification-widget/styles.scss +514 -136
  60. package/src/widget/components/tb-nw-wahunter/index.js +259 -0
  61. package/src/widget/components/tb-nw-wahunter/styles.scss +471 -0
  62. package/src/widget/config.js +5 -5
  63. package/src/widget/icons/icon_chat_window.svg +1 -0
  64. package/src/widget/icons/icon_close.svg +1 -0
  65. package/src/widget/icons/icon_facebook.svg +7 -7
  66. package/src/widget/icons/icon_facebook_circle.svg +7 -9
  67. package/src/widget/icons/icon_instagram_circle.svg +95 -95
  68. package/src/widget/icons/icon_skype.svg +44 -44
  69. package/src/widget/icons/icon_skype_circle.svg +46 -46
  70. package/src/widget/icons/icon_skype_new.svg +113 -113
  71. package/src/widget/icons/icon_tg.svg +25 -25
  72. package/src/widget/icons/icon_tg_circle.svg +17 -27
  73. package/src/widget/icons/icon_viber.svg +75 -75
  74. package/src/widget/icons/icon_viber_circle.svg +67 -77
  75. package/src/widget/icons/icon_viber_new.svg +102 -102
  76. package/src/widget/icons/icon_vk.svg +14 -14
  77. package/src/widget/icons/icon_vk_circle.svg +16 -16
  78. package/src/widget/icons/icon_whatsapp.svg +147 -147
  79. package/src/widget/icons/icon_whatsapp_circle.svg +4 -123
  80. package/src/widget/icons/icon_whatsapp_hollow.svg +128 -0
  81. package/src/widget/icons/icon_whatsapp_new.svg +127 -127
  82. package/src/widget/icons/icon_whatsappb.svg +147 -0
  83. package/src/widget/icons/icon_whatsappb_circle.svg +4 -0
  84. package/src/widget/icons/icon_whatsappb_new.svg +127 -0
  85. package/src/widget/icons/paper-plane-arrow.svg +3 -0
  86. package/src/widget/icons/tb-logo.svg +21 -0
  87. package/src/widget/index.js +28 -28
  88. package/src/widget/locales/cs.js +42 -0
  89. package/src/widget/locales/en.js +42 -20
  90. package/src/widget/locales/index.js +2 -2
  91. package/src/widget/locales/pl.js +41 -19
  92. package/src/widget/locales/ro.js +41 -20
  93. package/src/widget/locales/ru.js +40 -19
  94. package/src/widget/locales/uk.js +40 -19
  95. package/src/widget/utils/cookiesEx.js +41 -41
  96. package/src/widget/utils/getLocale.js +4 -2
  97. package/src/widget/utils/stringifyAttributes.js +19 -19
  98. package/src/widget/utils/text.js +2 -1
  99. package/src/widget/utils/widgetsStorage.js +28 -28
  100. package/src/widget/widget.entry.js +3 -4
  101. package/tests/gf.html +35 -35
  102. package/tests/gf.js +21 -21
  103. package/tests/index.js +61 -61
  104. package/views/examples.ejs +7 -3
  105. package/views/sdk.html +274 -256
  106. package/webpack.common.js +72 -72
  107. package/webpack.dev.js +15 -15
  108. package/webpack.prod.js +10 -17
  109. package/build/index.js.map +0 -1
  110. package/build/sdk.js.map +0 -1
  111. package/src/widget/components/tb-notification-button/skype.js +0 -47
  112. package/src/widget/icons/text-back-badge.png +0 -0
  113. 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">