@subiz/widget-v4 4.0.59 → 4.0.64
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/assets/img/caret.svg +1 -0
- package/assets/img/done_green.svg +4 -0
- package/assets/img/empty_1.svg +11 -0
- package/assets/img/ghn.svg +17 -0
- package/assets/img/ghtk.svg +18 -0
- package/assets/img/home.svg +1 -0
- package/assets/img/info.svg +1 -0
- package/assets/img/loader.svg +1 -0
- package/assets/img/map-pin.svg +1 -0
- package/assets/img/not_found_search.png +0 -0
- package/assets/img/package.svg +5 -0
- package/assets/img/package_fade.svg +1 -0
- package/assets/img/phone.svg +1 -0
- package/assets/img/search.svg +1 -0
- package/assets/img/shop.svg +1 -0
- package/assets/img/shop_faded.svg +1 -0
- package/assets/img/user.svg +1 -0
- package/assets/img/x.svg +5 -0
- package/assets/less/chatbox.less +35 -0
- package/assets/less/dropdown_select.less +130 -0
- package/assets/less/form.less +7 -20
- package/assets/less/order.less +489 -0
- package/assets/less/rating.less +3 -8
- package/babel.config.js +2 -4
- package/compiled_src/bot.js +7 -1
- package/compiled_src/chatbox/DropdownSelect.js +248 -0
- package/compiled_src/chatbox/Event.js +4 -2
- package/compiled_src/chatbox/Events.js +1 -0
- package/compiled_src/chatbox/Order.js +285 -0
- package/compiled_src/chatbox/OrderAttachments.js +2 -1
- package/compiled_src/chatbox/TextMessage.js +9 -2
- package/compiled_src/chatbox/Widget.js +44 -3
- package/compiled_src/chatbox/main.js +2 -1
- package/compiled_src/chatbox/spinner.js +1 -1
- package/compiled_src/chatbox/time.js +3 -1
- package/compiled_src/common.js +40 -1
- package/compiled_src/contact/contact.js +1 -3
- package/compiled_src/order/address_picker.js +249 -0
- package/compiled_src/order/icon.js +62 -0
- package/compiled_src/order/index.js +113 -0
- package/compiled_src/order/order.js +1234 -0
- package/compiled_src/plugin.js +9 -42
- package/compiled_src/popup/popup.js +2 -2
- package/compiled_src/store/api.js +20 -0
- package/compiled_src/store/store.js +42 -0
- package/compiled_src/util/common.js +36 -2
- package/dist/0b82fa7e5c3b07b40a44.png +1 -0
- package/dist/0f4af006e38ee8b93633.png +1 -0
- package/dist/{74.js → 132.js} +2322 -279
- package/dist/178.js +341 -174
- package/dist/17ee31b89ac.132.js +1 -0
- package/dist/17ee31b89ac.178.js +1 -0
- package/dist/17ee31b89ac.213.js +1 -0
- package/dist/17ee31b89ac.335.js +1 -0
- package/dist/17ee31b89ac.362.js +1 -0
- package/dist/17ee31b89ac.441.js +1 -0
- package/dist/17ee31b89ac.605.js +1 -0
- package/dist/17ee31b89ac.678.js +1 -0
- package/dist/17ee31b89ac.782.js +1 -0
- package/dist/17ee31b89ac.app.js +1 -0
- package/dist/{17d939953e0.index.html → 17ee31b89ac.index.html} +3 -18
- package/dist/{17d939953e0.library.html → 17ee31b89ac.library.html} +3 -18
- package/dist/17ee31b89ac.library.js +1 -0
- package/dist/{17d939953e0.preview.html → 17ee31b89ac.preview.html} +1 -1
- package/dist/17ee31b89ac.preview.js +1 -0
- package/dist/17ee31b89ac.screenshoot.js +1 -0
- package/dist/1ea1c6cd21d25176810c.png +1 -0
- package/dist/213.js +35 -70
- package/dist/292d42404e1b03398f61.png +1 -0
- package/dist/312d376370831b7bea83.png +1 -0
- package/dist/313d1bfc1cf776d1aefe.png +1 -0
- package/dist/335.js +411 -0
- package/dist/362.js +71 -21
- package/dist/441.js +70 -44
- package/dist/4aa58bb7a66bb44975aa.png +1 -0
- package/dist/56ce063bc6c81adb7322.png +1 -0
- package/dist/605.js +1 -64
- package/dist/678.js +70 -20
- package/dist/6a411166ef5cc79e0714.png +1 -0
- package/dist/6faf403782fefacc1649.png +1 -0
- package/dist/782.js +118 -21
- package/dist/79dca33c68fab79c067f.png +1 -0
- package/dist/82da1578fa84f9debaeb.png +1 -0
- package/dist/8b8e0f0824743974b282.png +1 -0
- package/dist/8d551390d81e39130a3c.png +1 -0
- package/dist/9fc61b9479877ebdb6c7.png +1 -0
- package/dist/HASH +1 -1
- package/dist/a165d31dcb3dc90f1057.png +1 -0
- package/dist/a98d4a5698812c4426b3.png +1 -0
- package/dist/assets/img/caret.998eb8f.svg +1 -0
- package/dist/assets/img/done_green.b817fd4.svg +4 -0
- package/dist/assets/img/empty_1.0b98af0.svg +11 -0
- package/dist/assets/img/ghn.070f8e3.svg +17 -0
- package/dist/assets/img/ghtk.326eac1.svg +18 -0
- package/dist/assets/img/info.ebce7ea.svg +1 -0
- package/dist/assets/img/loader.37000a7.svg +1 -0
- package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
- package/dist/assets/img/package.8d37d0f.svg +5 -0
- package/dist/assets/img/package_fade.763c001.svg +1 -0
- package/dist/assets/img/search.f9705ff.svg +1 -0
- package/dist/assets/img/shop.f7dc7d8.svg +1 -0
- package/dist/assets/img/shop_faded.df7845a.svg +1 -0
- package/dist/assets/img/x.26fdfa3.svg +5 -0
- package/dist/c41606bf9d1b604e46d5.png +1 -0
- package/dist/ce1f7450ce6c1aacd330.png +1 -0
- package/dist/cf8c01e88f4770a6e3e5.png +1 -0
- package/dist/dfbcfeab1d5622a737e2.png +1 -0
- package/dist/e4893ed8c2f7b8329919.png +1 -0
- package/dist/ec2ab4eb4ef73d186186.png +1 -0
- package/dist/screenshoot.html +1 -1
- package/dist/screenshoot.js +211 -48
- package/index.html +3 -18
- package/order.html +32 -0
- package/package.json +14 -15
- package/src/bot.js +2 -1
- package/src/chatbox/DropdownSelect.js +229 -0
- package/src/chatbox/Event.js +2 -2
- package/src/chatbox/Events.js +43 -42
- package/src/chatbox/Order.js +232 -0
- package/src/chatbox/OrderAttachments.js +2 -1
- package/src/chatbox/TextMessage.js +21 -12
- package/src/chatbox/Widget.js +34 -4
- package/src/chatbox/main.js +2 -2
- package/src/chatbox/spinner.js +1 -1
- package/src/chatbox/time.js +1 -1
- package/src/common.js +52 -8
- package/src/contact/contact.js +1 -1
- package/src/order/address_picker.js +235 -0
- package/src/order/icon.js +32 -0
- package/src/order/index.js +86 -0
- package/src/order/order.js +1157 -0
- package/src/order/scratch +211 -0
- package/src/plugin.js +7 -52
- package/src/popup/popup.js +2 -2
- package/src/store/api.js +26 -1
- package/src/store/store.js +46 -9
- package/src/util/common.js +48 -2
- package/webpack.dev.js +2 -0
- package/dist/17d939953e0.178.js +0 -1
- package/dist/17d939953e0.213.js +0 -1
- package/dist/17d939953e0.362.js +0 -1
- package/dist/17d939953e0.441.js +0 -1
- package/dist/17d939953e0.605.js +0 -1
- package/dist/17d939953e0.619.js +0 -1
- package/dist/17d939953e0.678.js +0 -1
- package/dist/17d939953e0.74.js +0 -1
- package/dist/17d939953e0.782.js +0 -1
- package/dist/17d939953e0.app.js +0 -1
- package/dist/17d939953e0.library.js +0 -1
- package/dist/17d939953e0.preview.js +0 -1
- package/dist/17d939953e0.screenshoot.js +0 -1
- package/dist/619.js +0 -777
package/dist/619.js
DELETED
|
@@ -1,777 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
(self["webpackChunk_subiz_widget_v4"] = self["webpackChunk_subiz_widget_v4"] || []).push([[619],{
|
|
3
|
-
|
|
4
|
-
/***/ 2493:
|
|
5
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
|
-
|
|
7
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8
|
-
/* harmony export */ "M": () => (/* binding */ Com),
|
|
9
|
-
/* harmony export */ "u": () => (/* binding */ Clickaway)
|
|
10
|
-
/* harmony export */ });
|
|
11
|
-
/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6400);
|
|
12
|
-
/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(819);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class Com extends preact__WEBPACK_IMPORTED_MODULE_0__/* .Component */ .wA {
|
|
16
|
-
constructor(props) {
|
|
17
|
-
super(props);
|
|
18
|
-
this._isMounted = true;
|
|
19
|
-
setTimeout(() => {
|
|
20
|
-
if (this.componentWillUnmount) {
|
|
21
|
-
let old = this.componentWillUnmount.bind(this);
|
|
22
|
-
|
|
23
|
-
this.componentWillUnmount = () => {
|
|
24
|
-
old();
|
|
25
|
-
this._isMounted = false;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}, 10);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
class Clickaway extends Com {
|
|
33
|
-
constructor(props) {
|
|
34
|
-
super(props);
|
|
35
|
-
this.setWrapperRef = this.setWrapperRef.bind(this);
|
|
36
|
-
this.onClick = this.onClick.bind(this);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
componentDidMount() {
|
|
40
|
-
document.addEventListener('mousedown', this.onClick);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
componentWillUnmount() {
|
|
44
|
-
document.removeEventListener('mousedown', this.onClick);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
setWrapperRef(node) {
|
|
48
|
-
this.wrapperRef = node;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
onClick(event) {
|
|
52
|
-
if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {
|
|
53
|
-
this.props.onClickaway && this.props.onClickaway();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
render() {
|
|
58
|
-
return (0,preact__WEBPACK_IMPORTED_MODULE_0__.h)("div", {
|
|
59
|
-
ref: this.setWrapperRef
|
|
60
|
-
}, this.props.children);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/***/ }),
|
|
66
|
-
|
|
67
|
-
/***/ 9619:
|
|
68
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
69
|
-
|
|
70
|
-
// ESM COMPAT FLAG
|
|
71
|
-
__webpack_require__.r(__webpack_exports__);
|
|
72
|
-
|
|
73
|
-
// EXPORTS
|
|
74
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
75
|
-
"DEFVAL": () => (/* binding */ DEFVAL),
|
|
76
|
-
"default": () => (/* binding */ Contact),
|
|
77
|
-
"replaceCssVariable": () => (/* binding */ replaceCssVariable)
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
// EXTERNAL MODULE: ./src/util/index.js + 2 modules
|
|
81
|
-
var util = __webpack_require__(819);
|
|
82
|
-
// EXTERNAL MODULE: ./node_modules/preact/dist/preact.module.js
|
|
83
|
-
var preact_module = __webpack_require__(6400);
|
|
84
|
-
// EXTERNAL MODULE: ./src/common.js
|
|
85
|
-
var common = __webpack_require__(2493);
|
|
86
|
-
;// CONCATENATED MODULE: ./node_modules/@googlemaps/js-api-loader/dist/index.esm.js
|
|
87
|
-
// do not edit .js files directly - edit src/index.jst
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
var fastDeepEqual = function equal(a, b) {
|
|
92
|
-
if (a === b) return true;
|
|
93
|
-
|
|
94
|
-
if (a && b && typeof a == 'object' && typeof b == 'object') {
|
|
95
|
-
if (a.constructor !== b.constructor) return false;
|
|
96
|
-
|
|
97
|
-
var length, i, keys;
|
|
98
|
-
if (Array.isArray(a)) {
|
|
99
|
-
length = a.length;
|
|
100
|
-
if (length != b.length) return false;
|
|
101
|
-
for (i = length; i-- !== 0;)
|
|
102
|
-
if (!equal(a[i], b[i])) return false;
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
|
|
109
|
-
if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
|
|
110
|
-
if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
|
|
111
|
-
|
|
112
|
-
keys = Object.keys(a);
|
|
113
|
-
length = keys.length;
|
|
114
|
-
if (length !== Object.keys(b).length) return false;
|
|
115
|
-
|
|
116
|
-
for (i = length; i-- !== 0;)
|
|
117
|
-
if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
|
|
118
|
-
|
|
119
|
-
for (i = length; i-- !== 0;) {
|
|
120
|
-
var key = keys[i];
|
|
121
|
-
|
|
122
|
-
if (!equal(a[key], b[key])) return false;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// true if both NaN, false otherwise
|
|
129
|
-
return a!==a && b!==b;
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Copyright 2019 Google LLC. All Rights Reserved.
|
|
134
|
-
*
|
|
135
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
136
|
-
* you may not use this file except in compliance with the License.
|
|
137
|
-
* You may obtain a copy of the License at.
|
|
138
|
-
*
|
|
139
|
-
* Http://www.apache.org/licenses/LICENSE-2.0.
|
|
140
|
-
*
|
|
141
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
142
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
143
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
144
|
-
* See the License for the specific language governing permissions and
|
|
145
|
-
* limitations under the License.
|
|
146
|
-
*/
|
|
147
|
-
const DEFAULT_ID = "__googleMapsScriptId";
|
|
148
|
-
/**
|
|
149
|
-
* [[Loader]] makes it easier to add Google Maps JavaScript API to your application
|
|
150
|
-
* dynamically using
|
|
151
|
-
* [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).
|
|
152
|
-
* It works by dynamically creating and appending a script node to the the
|
|
153
|
-
* document head and wrapping the callback function so as to return a promise.
|
|
154
|
-
*
|
|
155
|
-
* ```
|
|
156
|
-
* const loader = new Loader({
|
|
157
|
-
* apiKey: "",
|
|
158
|
-
* version: "weekly",
|
|
159
|
-
* libraries: ["places"]
|
|
160
|
-
* });
|
|
161
|
-
*
|
|
162
|
-
* loader.load().then((google) => {
|
|
163
|
-
* const map = new google.maps.Map(...)
|
|
164
|
-
* })
|
|
165
|
-
* ```
|
|
166
|
-
*/
|
|
167
|
-
class Loader {
|
|
168
|
-
/**
|
|
169
|
-
* Creates an instance of Loader using [[LoaderOptions]]. No defaults are set
|
|
170
|
-
* using this library, instead the defaults are set by the Google Maps
|
|
171
|
-
* JavaScript API server.
|
|
172
|
-
*
|
|
173
|
-
* ```
|
|
174
|
-
* const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});
|
|
175
|
-
* ```
|
|
176
|
-
*/
|
|
177
|
-
constructor({ apiKey, channel, client, id = DEFAULT_ID, libraries = [], language, region, version, mapIds, nonce, retries = 3, url = "https://maps.googleapis.com/maps/api/js", }) {
|
|
178
|
-
this.CALLBACK = "__googleMapsCallback";
|
|
179
|
-
this.callbacks = [];
|
|
180
|
-
this.done = false;
|
|
181
|
-
this.loading = false;
|
|
182
|
-
this.errors = [];
|
|
183
|
-
this.version = version;
|
|
184
|
-
this.apiKey = apiKey;
|
|
185
|
-
this.channel = channel;
|
|
186
|
-
this.client = client;
|
|
187
|
-
this.id = id || DEFAULT_ID; // Do not allow empty string
|
|
188
|
-
this.libraries = libraries;
|
|
189
|
-
this.language = language;
|
|
190
|
-
this.region = region;
|
|
191
|
-
this.mapIds = mapIds;
|
|
192
|
-
this.nonce = nonce;
|
|
193
|
-
this.retries = retries;
|
|
194
|
-
this.url = url;
|
|
195
|
-
if (Loader.instance) {
|
|
196
|
-
if (!fastDeepEqual(this.options, Loader.instance.options)) {
|
|
197
|
-
throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);
|
|
198
|
-
}
|
|
199
|
-
return Loader.instance;
|
|
200
|
-
}
|
|
201
|
-
Loader.instance = this;
|
|
202
|
-
}
|
|
203
|
-
get options() {
|
|
204
|
-
return {
|
|
205
|
-
version: this.version,
|
|
206
|
-
apiKey: this.apiKey,
|
|
207
|
-
channel: this.channel,
|
|
208
|
-
client: this.client,
|
|
209
|
-
id: this.id,
|
|
210
|
-
libraries: this.libraries,
|
|
211
|
-
language: this.language,
|
|
212
|
-
region: this.region,
|
|
213
|
-
mapIds: this.mapIds,
|
|
214
|
-
nonce: this.nonce,
|
|
215
|
-
url: this.url,
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
get failed() {
|
|
219
|
-
return this.done && !this.loading && this.errors.length >= this.retries + 1;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].
|
|
223
|
-
*
|
|
224
|
-
* @ignore
|
|
225
|
-
*/
|
|
226
|
-
createUrl() {
|
|
227
|
-
let url = this.url;
|
|
228
|
-
url += `?callback=${this.CALLBACK}`;
|
|
229
|
-
if (this.apiKey) {
|
|
230
|
-
url += `&key=${this.apiKey}`;
|
|
231
|
-
}
|
|
232
|
-
if (this.channel) {
|
|
233
|
-
url += `&channel=${this.channel}`;
|
|
234
|
-
}
|
|
235
|
-
if (this.client) {
|
|
236
|
-
url += `&client=${this.client}`;
|
|
237
|
-
}
|
|
238
|
-
if (this.libraries.length > 0) {
|
|
239
|
-
url += `&libraries=${this.libraries.join(",")}`;
|
|
240
|
-
}
|
|
241
|
-
if (this.language) {
|
|
242
|
-
url += `&language=${this.language}`;
|
|
243
|
-
}
|
|
244
|
-
if (this.region) {
|
|
245
|
-
url += `®ion=${this.region}`;
|
|
246
|
-
}
|
|
247
|
-
if (this.version) {
|
|
248
|
-
url += `&v=${this.version}`;
|
|
249
|
-
}
|
|
250
|
-
if (this.mapIds) {
|
|
251
|
-
url += `&map_ids=${this.mapIds.join(",")}`;
|
|
252
|
-
}
|
|
253
|
-
return url;
|
|
254
|
-
}
|
|
255
|
-
deleteScript() {
|
|
256
|
-
const script = document.getElementById(this.id);
|
|
257
|
-
if (script) {
|
|
258
|
-
script.remove();
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Load the Google Maps JavaScript API script and return a Promise.
|
|
263
|
-
*/
|
|
264
|
-
load() {
|
|
265
|
-
return this.loadPromise();
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Load the Google Maps JavaScript API script and return a Promise.
|
|
269
|
-
*
|
|
270
|
-
* @ignore
|
|
271
|
-
*/
|
|
272
|
-
loadPromise() {
|
|
273
|
-
return new Promise((resolve, reject) => {
|
|
274
|
-
this.loadCallback((err) => {
|
|
275
|
-
if (!err) {
|
|
276
|
-
resolve(window.google);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
reject(err.error);
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Load the Google Maps JavaScript API script with a callback.
|
|
286
|
-
*/
|
|
287
|
-
loadCallback(fn) {
|
|
288
|
-
this.callbacks.push(fn);
|
|
289
|
-
this.execute();
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Set the script on document.
|
|
293
|
-
*/
|
|
294
|
-
setScript() {
|
|
295
|
-
if (document.getElementById(this.id)) {
|
|
296
|
-
// TODO wrap onerror callback for cases where the script was loaded elsewhere
|
|
297
|
-
this.callback();
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
const url = this.createUrl();
|
|
301
|
-
const script = document.createElement("script");
|
|
302
|
-
script.id = this.id;
|
|
303
|
-
script.type = "text/javascript";
|
|
304
|
-
script.src = url;
|
|
305
|
-
script.onerror = this.loadErrorCallback.bind(this);
|
|
306
|
-
script.defer = true;
|
|
307
|
-
script.async = true;
|
|
308
|
-
if (this.nonce) {
|
|
309
|
-
script.nonce = this.nonce;
|
|
310
|
-
}
|
|
311
|
-
document.head.appendChild(script);
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Reset the loader state.
|
|
315
|
-
*/
|
|
316
|
-
reset() {
|
|
317
|
-
this.deleteScript();
|
|
318
|
-
this.done = false;
|
|
319
|
-
this.loading = false;
|
|
320
|
-
this.errors = [];
|
|
321
|
-
this.onerrorEvent = null;
|
|
322
|
-
}
|
|
323
|
-
resetIfRetryingFailed() {
|
|
324
|
-
if (this.failed) {
|
|
325
|
-
this.reset();
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
loadErrorCallback(e) {
|
|
329
|
-
this.errors.push(e);
|
|
330
|
-
if (this.errors.length <= this.retries) {
|
|
331
|
-
const delay = this.errors.length * Math.pow(2, this.errors.length);
|
|
332
|
-
console.log(`Failed to load Google Maps script, retrying in ${delay} ms.`);
|
|
333
|
-
setTimeout(() => {
|
|
334
|
-
this.deleteScript();
|
|
335
|
-
this.setScript();
|
|
336
|
-
}, delay);
|
|
337
|
-
}
|
|
338
|
-
else {
|
|
339
|
-
this.onerrorEvent = e;
|
|
340
|
-
this.callback();
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
setCallback() {
|
|
344
|
-
window.__googleMapsCallback = this.callback.bind(this);
|
|
345
|
-
}
|
|
346
|
-
callback() {
|
|
347
|
-
this.done = true;
|
|
348
|
-
this.loading = false;
|
|
349
|
-
this.callbacks.forEach((cb) => {
|
|
350
|
-
cb(this.onerrorEvent);
|
|
351
|
-
});
|
|
352
|
-
this.callbacks = [];
|
|
353
|
-
}
|
|
354
|
-
execute() {
|
|
355
|
-
this.resetIfRetryingFailed();
|
|
356
|
-
if (this.done) {
|
|
357
|
-
this.callback();
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
// short circuit and warn if google.maps is already loaded
|
|
361
|
-
if (window.google && window.google.maps && window.google.maps.version) {
|
|
362
|
-
console.warn("Google Maps already loaded outside @googlemaps/js-api-loader." +
|
|
363
|
-
"This may result in undesirable behavior as options and script parameters may not match.");
|
|
364
|
-
this.callback();
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
if (this.loading) ;
|
|
368
|
-
else {
|
|
369
|
-
this.loading = true;
|
|
370
|
-
this.setCallback();
|
|
371
|
-
this.setScript();
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
//# sourceMappingURL=index.esm.js.map
|
|
379
|
-
|
|
380
|
-
;// CONCATENATED MODULE: ./src/contact/contact.js
|
|
381
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
let CSS = (() => __webpack_require__.e(/* import() */ 678).then(__webpack_require__.bind(__webpack_require__, 2678)))();
|
|
389
|
-
|
|
390
|
-
class Contact extends common/* Com */.M {
|
|
391
|
-
constructor(props) {
|
|
392
|
-
super(props);
|
|
393
|
-
|
|
394
|
-
_defineProperty(this, "state", {
|
|
395
|
-
map: false,
|
|
396
|
-
map_loading: false,
|
|
397
|
-
map_initialized: false
|
|
398
|
-
});
|
|
399
|
-
|
|
400
|
-
this.showMap = this.showMap.bind(this);
|
|
401
|
-
this.hideMap = this.hideMap.bind(this);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
async initMap() {
|
|
405
|
-
if (this.map_initialized) return;
|
|
406
|
-
this.setState({
|
|
407
|
-
map_initialized: true,
|
|
408
|
-
map_loading: true
|
|
409
|
-
});
|
|
410
|
-
await new Loader({
|
|
411
|
-
apiKey: 'YOUR_API_KEY',
|
|
412
|
-
version: 'weekly'
|
|
413
|
-
}).load();
|
|
414
|
-
this.gmap = new google.maps.Map(document.getElementById('map'));
|
|
415
|
-
this.setState({
|
|
416
|
-
map_loading: false
|
|
417
|
-
});
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
js2css(js, onlyProps) {
|
|
421
|
-
return util/* default.js2css */.Z.js2css(js, onlyProps, {
|
|
422
|
-
'@font_size': this.props.plugin.popup.font_size,
|
|
423
|
-
'@font_family': this.props.plugin.popup.font_family,
|
|
424
|
-
'@text_color': this.props.plugin.popup.text_color,
|
|
425
|
-
'@primary_color': this.props.plugin.popup.primary_color,
|
|
426
|
-
'@background': this.props.plugin.popup.background,
|
|
427
|
-
'@spacer0': spacer / 2 + 'px',
|
|
428
|
-
'@spacer': spacer + 'px',
|
|
429
|
-
'@spacer2': spacer * 2 + 'px',
|
|
430
|
-
'@spacer3': spacer * 3 + 'px'
|
|
431
|
-
});
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
renderMapButton(button) {
|
|
435
|
-
let icon = (0,preact_module.h)("svg", {
|
|
436
|
-
width: "20px",
|
|
437
|
-
"aria-hidden": "true",
|
|
438
|
-
focusable: "false",
|
|
439
|
-
"data-prefix": "fas",
|
|
440
|
-
"data-icon": "map-marker-alt",
|
|
441
|
-
role: "img",
|
|
442
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
443
|
-
viewBox: "0 0 384 512",
|
|
444
|
-
class: "svg-inline--fa fa-map-marker-alt fa-w-12 fa-3x"
|
|
445
|
-
}, (0,preact_module.h)("path", {
|
|
446
|
-
fill: "red",
|
|
447
|
-
d: "M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z",
|
|
448
|
-
class: ""
|
|
449
|
-
}));
|
|
450
|
-
return (0,preact_module.h)("div", {
|
|
451
|
-
class: "contact_button",
|
|
452
|
-
onClick: this.showMap
|
|
453
|
-
}, this.renderMapModal(button), icon);
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
async setMap(lat, lng) {
|
|
457
|
-
console.log('HEE');
|
|
458
|
-
await this.initMap();
|
|
459
|
-
console.log('HEE22');
|
|
460
|
-
window.gmap = this.gmap;
|
|
461
|
-
this.gmap.map.setCenter(new google.maps.LatLng(lat, lng));
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
renderMapModal(button) {
|
|
465
|
-
let cls = 'map_modal';
|
|
466
|
-
if (this.state.map) cls += ' map_modal__show';else cls += ' map_modal__hide';
|
|
467
|
-
let overlaycls = 'overlay';
|
|
468
|
-
if (!this.state.map) overlaycls += ' overlay__hidden';
|
|
469
|
-
let $locations = util/* default.map */.Z.map(button.map.locations, loc => {
|
|
470
|
-
return (0,preact_module.h)("div", {
|
|
471
|
-
class: "map_location",
|
|
472
|
-
onClick: e => this.setMap(loc.latitude, loc.longitude)
|
|
473
|
-
}, (0,preact_module.h)("div", null, loc.name), (0,preact_module.h)("div", null, loc.latitude), (0,preact_module.h)("div", null, loc.longitude));
|
|
474
|
-
});
|
|
475
|
-
$locations.unshift((0,preact_module.h)("div", {
|
|
476
|
-
class: "map_title"
|
|
477
|
-
}, button.map.title));
|
|
478
|
-
let $map = (0,preact_module.h)("div", {
|
|
479
|
-
id: "map",
|
|
480
|
-
style: "height: 100%; width: 100%"
|
|
481
|
-
}, ' ');
|
|
482
|
-
return (0,preact_module.h)("div", {
|
|
483
|
-
class: overlaycls,
|
|
484
|
-
onClick: this.hideMap
|
|
485
|
-
}, (0,preact_module.h)("div", {
|
|
486
|
-
class: cls,
|
|
487
|
-
onClick: e => e.stopPropagation()
|
|
488
|
-
}, (0,preact_module.h)("div", {
|
|
489
|
-
class: "map_body"
|
|
490
|
-
}, (0,preact_module.h)("div", {
|
|
491
|
-
class: "map_locations"
|
|
492
|
-
}, $locations), $map, (0,preact_module.h)("div", {
|
|
493
|
-
class: "mapouter"
|
|
494
|
-
}, (0,preact_module.h)("div", {
|
|
495
|
-
class: "gmap_canvas"
|
|
496
|
-
}, (0,preact_module.h)("iframe", {
|
|
497
|
-
width: "300",
|
|
498
|
-
height: "400",
|
|
499
|
-
id: "gmap_canvas",
|
|
500
|
-
src: "https://maps.google.com/maps?q=2880%20Broadway,%20New%20York&t=&z=13&ie=UTF8&iwloc=&output=embed",
|
|
501
|
-
frameborder: "0",
|
|
502
|
-
scrolling: "no",
|
|
503
|
-
marginheight: "0",
|
|
504
|
-
marginwidth: "0"
|
|
505
|
-
}))))));
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
hideMap(e) {
|
|
509
|
-
e.stopPropagation();
|
|
510
|
-
this.setState({
|
|
511
|
-
map: false
|
|
512
|
-
});
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
showMap() {
|
|
516
|
-
this.setState({
|
|
517
|
-
map: true
|
|
518
|
-
});
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
renderZaloButton(button) {
|
|
522
|
-
let icon = (0,preact_module.h)("svg", {
|
|
523
|
-
width: "20px ",
|
|
524
|
-
"aria-hidden": "true",
|
|
525
|
-
focusable: "false",
|
|
526
|
-
"data-prefix": "fab",
|
|
527
|
-
"data-icon": "facebook-f",
|
|
528
|
-
role: "img",
|
|
529
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
530
|
-
viewBox: "0 0 320 512",
|
|
531
|
-
class: "svg-inline--fa fa-facebook-f fa-w-10 fa-5x"
|
|
532
|
-
}, (0,preact_module.h)("path", {
|
|
533
|
-
fill: "currentColor",
|
|
534
|
-
d: "M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z",
|
|
535
|
-
class: ""
|
|
536
|
-
}));
|
|
537
|
-
return (0,preact_module.h)("div", {
|
|
538
|
-
class: "contact_button"
|
|
539
|
-
}, icon);
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
renderFacebookButton(button) {
|
|
543
|
-
let icon = (0,preact_module.h)("svg", {
|
|
544
|
-
width: "20px ",
|
|
545
|
-
"aria-hidden": "true",
|
|
546
|
-
focusable: "false",
|
|
547
|
-
"data-prefix": "fab",
|
|
548
|
-
"data-icon": "facebook-f",
|
|
549
|
-
role: "img",
|
|
550
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
551
|
-
viewBox: "0 0 320 512",
|
|
552
|
-
class: "svg-inline--fa fa-facebook-f fa-w-10 fa-5x"
|
|
553
|
-
}, (0,preact_module.h)("path", {
|
|
554
|
-
fill: "currentColor",
|
|
555
|
-
d: "M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z",
|
|
556
|
-
class: ""
|
|
557
|
-
}));
|
|
558
|
-
return (0,preact_module.h)("div", {
|
|
559
|
-
class: "contact_button"
|
|
560
|
-
}, icon);
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
renderChatButton() {
|
|
564
|
-
return (0,preact_module.h)("div", null, "Chat");
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
renderCallButton() {
|
|
568
|
-
let icon = (0,preact_module.h)("svg", {
|
|
569
|
-
width: "20px",
|
|
570
|
-
"aria-hidden": "true",
|
|
571
|
-
focusable: "false",
|
|
572
|
-
"data-prefix": "fas",
|
|
573
|
-
"data-icon": "phone",
|
|
574
|
-
role: "img",
|
|
575
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
576
|
-
viewBox: "0 0 512 512",
|
|
577
|
-
class: "svg-inline--fa fa-phone fa-w-16 fa-7x"
|
|
578
|
-
}, (0,preact_module.h)("path", {
|
|
579
|
-
fill: "currentColor",
|
|
580
|
-
d: "M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z",
|
|
581
|
-
class: ""
|
|
582
|
-
}));
|
|
583
|
-
return (0,preact_module.h)("div", null, icon);
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
renderButtons(buttons) {
|
|
587
|
-
if (util/* default.size */.Z.size(buttons) === 0) return null;
|
|
588
|
-
return util/* default.map */.Z.map(buttons, button => {
|
|
589
|
-
if (button.type === 'map') return this.renderMapButton(button);
|
|
590
|
-
if (button.type === 'zalo') return this.renderZaloButton(button);
|
|
591
|
-
if (button.type === 'facebook') return this.renderFacebookButton(button);
|
|
592
|
-
if (button.type === 'call') return this.renderCallButton(button);
|
|
593
|
-
if (button.type === 'chat') return this.renderChatButton(button);
|
|
594
|
-
return null;
|
|
595
|
-
});
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
renderByLayoutSideByStandard() {
|
|
599
|
-
let $buttons = this.renderButtons(this.props.plugin.contact.buttons);
|
|
600
|
-
return (0,preact_module.h)("div", null, $buttons);
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
renderLineComponent(com) {
|
|
604
|
-
let style = Object.assign({}, com.style, this.props.mobile ? com.mobile_style : {});
|
|
605
|
-
return (0,preact_module.h)("div", {
|
|
606
|
-
style: this.js2css(style)
|
|
607
|
-
});
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
renderTextComponent(com) {
|
|
611
|
-
let style = Object.assign({}, com.style, this.props.mobile ? com.mobile_style : {});
|
|
612
|
-
return (0,preact_module.h)("div", {
|
|
613
|
-
class: "text",
|
|
614
|
-
style: this.js2css(style),
|
|
615
|
-
dangerouslySetInnerHTML: {
|
|
616
|
-
__html: util/* default.get */.Z.get(com, 'text.html')
|
|
617
|
-
}
|
|
618
|
-
});
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
async refreshCSS() {
|
|
622
|
-
let css = (await CSS).default.default.toString();
|
|
623
|
-
var outcss = replaceCssVariable(css, this.props.plugin.popup);
|
|
624
|
-
util/* default.setCss */.Z.setCss(this.props.plugin.id, this.$cssStyleDiv, outcss);
|
|
625
|
-
this.setState({
|
|
626
|
-
cssready: true
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
componentDidMount() {
|
|
631
|
-
this.$cssStyleDiv = document.createElement('style');
|
|
632
|
-
document.head.appendChild(this.$cssStyleDiv);
|
|
633
|
-
this.$cssStyleDiv.type = 'text/css';
|
|
634
|
-
this.$cssStyleDiv.id = 'subiz-style-for-' + this.props.plugin.id;
|
|
635
|
-
this.refreshCSS();
|
|
636
|
-
let pluginstringify = JSON.stringify(this.props.plugin);
|
|
637
|
-
this.setState({
|
|
638
|
-
pluginjson: pluginstringify
|
|
639
|
-
});
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
render() {
|
|
643
|
-
if (!this.state.cssready) return null;
|
|
644
|
-
let pluginstringify = JSON.stringify(this.props.plugin);
|
|
645
|
-
|
|
646
|
-
if (this.state.pluginjson !== pluginstringify) {
|
|
647
|
-
this.refreshCSS();
|
|
648
|
-
setTimeout(() => this.setState({
|
|
649
|
-
pluginjson: pluginstringify
|
|
650
|
-
}));
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
if (this.state.close) return null;
|
|
654
|
-
let containercss = '';
|
|
655
|
-
let bodycss = '';
|
|
656
|
-
let layout = util/* default.get */.Z.get(this.props.plugin, 'contact.layout', 'standard');
|
|
657
|
-
let $body = null;
|
|
658
|
-
|
|
659
|
-
if (layout === 'standard' || !layout) {
|
|
660
|
-
$body = this.renderByLayoutSideByStandard();
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
if (layout === 'footer') {
|
|
664
|
-
$body = this.renderByLayoutFooter(util/* default.get */.Z.get(this.props.plugin, `popup.pages.${this.state.pageIndex}`));
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
if (layout === 'mini') {
|
|
668
|
-
$body = this.renderByLayoutMini(util/* default.get */.Z.get(this.props.plugin, `popup.pages.${this.state.pageIndex}`));
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
if (layout === 'docked') {
|
|
672
|
-
$body = this.renderByLayoutDocked(util/* default.get */.Z.get(this.props.plugin, `popup.pages.${this.state.pageIndex}`));
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
let left, right, bottom, top, transform;
|
|
676
|
-
let position = util/* default.get */.Z.get(this.props.plugin, 'contact.position', 'bottom-left');
|
|
677
|
-
|
|
678
|
-
if (position === 'center-left') {
|
|
679
|
-
left = '0';
|
|
680
|
-
top = '50%';
|
|
681
|
-
transform = 'translateY(-50%)';
|
|
682
|
-
} else if (position === 'top-left') {
|
|
683
|
-
left = '0';
|
|
684
|
-
top = '20px';
|
|
685
|
-
} else if (position === 'bottom-right') {
|
|
686
|
-
right = '0';
|
|
687
|
-
bottom = '20px';
|
|
688
|
-
} else if (position === 'center-right') {
|
|
689
|
-
right = '0';
|
|
690
|
-
top = '50%';
|
|
691
|
-
transform = 'translateY(-50%)';
|
|
692
|
-
} else if (position === 'top-right') {
|
|
693
|
-
right = '0';
|
|
694
|
-
top = '20px';
|
|
695
|
-
} else {
|
|
696
|
-
left = '0';
|
|
697
|
-
bottom = '20px';
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
return (0,preact_module.h)("div", {
|
|
701
|
-
style: util/* default.js2css */.Z.js2css({
|
|
702
|
-
position: 'absolute',
|
|
703
|
-
left,
|
|
704
|
-
right,
|
|
705
|
-
bottom,
|
|
706
|
-
top,
|
|
707
|
-
transform,
|
|
708
|
-
display: 'flex',
|
|
709
|
-
align_items: 'center',
|
|
710
|
-
justify_content: 'center',
|
|
711
|
-
overflow: 'hidden'
|
|
712
|
-
}),
|
|
713
|
-
onClick: e => e.stopPropagation()
|
|
714
|
-
}, $body);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
function isEmpty(value) {
|
|
720
|
-
return value === undefined || value === null || value === '';
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
async function runCampaign(byTrigger) {
|
|
724
|
-
if (ran && byTrigger !== 'area_clicked') return;
|
|
725
|
-
ran = true;
|
|
726
|
-
pageIndex = 0;
|
|
727
|
-
let page = sb.get(camp, `pages.${pageIndex}`) || {};
|
|
728
|
-
showPage(page);
|
|
729
|
-
triggerType = byTrigger;
|
|
730
|
-
let {
|
|
731
|
-
body: impression
|
|
732
|
-
} = await store.sendImpression(camp.id, byTrigger);
|
|
733
|
-
impressionToken = sb.get(impression, 'impression_token') || '';
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
function eq(a, b) {
|
|
737
|
-
return JSON.stringify(a) === JSON.stringify(b);
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
function replaceCssVariable(css, setting) {
|
|
741
|
-
var tokens = [css];
|
|
742
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@font_family'");
|
|
743
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@font_size'");
|
|
744
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@text_color'");
|
|
745
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@primary_color'");
|
|
746
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@background'");
|
|
747
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@spacer'");
|
|
748
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@spacer0'");
|
|
749
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@spacer2'");
|
|
750
|
-
tokens = util/* default.tokenize */.Z.tokenize(tokens, "'@spacer3'");
|
|
751
|
-
var ret = [];
|
|
752
|
-
|
|
753
|
-
for (var i = 0; i < tokens.length; i++) {
|
|
754
|
-
var item = tokens[i];
|
|
755
|
-
|
|
756
|
-
if (typeof item === 'string') {
|
|
757
|
-
ret.push(item);
|
|
758
|
-
continue;
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
var path = item.type.substr(2, item.type.length - 3);
|
|
762
|
-
var val = util/* default.get */.Z.get(setting, path) || util/* default.get */.Z.get(DEFVAL, path) || '';
|
|
763
|
-
ret.push(val);
|
|
764
|
-
}
|
|
765
|
-
|
|
766
|
-
return ret.join('');
|
|
767
|
-
}
|
|
768
|
-
const DEFVAL = {
|
|
769
|
-
font_size: '16px',
|
|
770
|
-
font_family: 'roboto',
|
|
771
|
-
text_color: '#333',
|
|
772
|
-
primary_color: '#333'
|
|
773
|
-
};
|
|
774
|
-
|
|
775
|
-
/***/ })
|
|
776
|
-
|
|
777
|
-
}]);
|