@apps-in-toss/web-framework 1.0.2 → 1.1.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.
- package/dist/cli/index.js +28 -136
- package/dist/config/index.d.ts +4 -40
- package/dist/config/index.js +5 -5
- package/dist/prebuilt/dev.android.js +5310 -3927
- package/dist/prebuilt/dev.ios.js +5307 -3924
- package/dist/prebuilt/prod.android.js +11336 -8833
- package/dist/prebuilt/prod.ios.js +11339 -8836
- package/package.json +9 -9
- package/dist/cli/chunk-AZQN2M6D.js +0 -63
- package/dist/cli/chunk-PT6B3KQJ.js +0 -209904
- package/dist/cli/lib-GNFDOQZX.js +0 -1007
- package/dist/cli/typescript-WPGJO2BO.js +0 -6
- package/dist/prebuilt/prod.json +0 -14
package/dist/cli/index.js
CHANGED
|
@@ -65180,36 +65180,23 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65180
65180
|
const _io0 = (input) => "object" === typeof input.commands && null !== input.commands && _io1(input.commands) && ("object" === typeof input.brand && null !== input.brand && _io2(input.brand)) && (void 0 === input.webViewProps || "object" === typeof input.webViewProps && null !== input.webViewProps && false === Array.isArray(input.webViewProps) && _io3(input.webViewProps)) && (Array.isArray(input.permissions) && input.permissions.every((elem) => "object" === typeof elem && null !== elem && _iu0(elem)));
|
|
65181
65181
|
const _io1 = (input) => "string" === typeof input.build;
|
|
65182
65182
|
const _io2 = (input) => "string" === typeof input.displayName && "string" === typeof input.primaryColor && "string" === typeof input.icon && ("basic" === input.bridgeColorMode || "inverted" === input.bridgeColorMode);
|
|
65183
|
-
const _io3 = (input) => (void 0 === input.type || "partner" === input.type || "external" === input.type || "game" === input.type) && (void 0 === input.
|
|
65184
|
-
const _io4 = (input) =>
|
|
65185
|
-
const _io5 = (input) => "
|
|
65186
|
-
const _io6 = (input) => "
|
|
65187
|
-
const _io7 = (input) => "
|
|
65188
|
-
const _io8 = (input) => "
|
|
65189
|
-
const _io9 = (input) => "clipboard" === input.name && ("read" === input.access || "write" === input.access);
|
|
65190
|
-
const _io10 = (input) => "geolocation" === input.name && "access" === input.access;
|
|
65191
|
-
const _io11 = (input) => "contacts" === input.name && ("read" === input.access || "write" === input.access);
|
|
65192
|
-
const _io12 = (input) => "photos" === input.name && ("read" === input.access || "write" === input.access);
|
|
65193
|
-
const _io13 = (input) => "camera" === input.name && "access" === input.access;
|
|
65183
|
+
const _io3 = (input) => (void 0 === input.type || "partner" === input.type || "external" === input.type || "game" === input.type) && (void 0 === input.allowsInlineMediaPlayback || "boolean" === typeof input.allowsInlineMediaPlayback) && (void 0 === input.bounces || "boolean" === typeof input.bounces) && (void 0 === input.pullToRefreshEnabled || "boolean" === typeof input.pullToRefreshEnabled) && (void 0 === input.overScrollMode || "always" === input.overScrollMode || "content" === input.overScrollMode || "never" === input.overScrollMode) && (void 0 === input.mediaPlaybackRequiresUserAction || "boolean" === typeof input.mediaPlaybackRequiresUserAction) && (void 0 === input.allowsBackForwardNavigationGestures || "boolean" === typeof input.allowsBackForwardNavigationGestures);
|
|
65184
|
+
const _io4 = (input) => "clipboard" === input.name && ("read" === input.access || "write" === input.access);
|
|
65185
|
+
const _io5 = (input) => "geolocation" === input.name && "access" === input.access;
|
|
65186
|
+
const _io6 = (input) => "contacts" === input.name && ("read" === input.access || "write" === input.access);
|
|
65187
|
+
const _io7 = (input) => "photos" === input.name && ("read" === input.access || "write" === input.access);
|
|
65188
|
+
const _io8 = (input) => "camera" === input.name && "access" === input.access;
|
|
65194
65189
|
const _iu0 = (input) => (() => {
|
|
65195
65190
|
if ("camera" === input.name)
|
|
65196
|
-
return
|
|
65191
|
+
return _io8(input);
|
|
65197
65192
|
else if ("photos" === input.name)
|
|
65198
|
-
return
|
|
65193
|
+
return _io7(input);
|
|
65199
65194
|
else if ("contacts" === input.name)
|
|
65200
|
-
return
|
|
65195
|
+
return _io6(input);
|
|
65201
65196
|
else if ("geolocation" === input.name)
|
|
65202
|
-
return
|
|
65197
|
+
return _io5(input);
|
|
65203
65198
|
else if ("clipboard" === input.name)
|
|
65204
|
-
return
|
|
65205
|
-
else
|
|
65206
|
-
return false;
|
|
65207
|
-
})();
|
|
65208
|
-
const _iu1 = (input) => (() => {
|
|
65209
|
-
if ("string" === typeof input.name)
|
|
65210
|
-
return _io8(input);
|
|
65211
|
-
else if ("object" === typeof input.source && null !== input.source && _io7(input.source))
|
|
65212
|
-
return _io6(input);
|
|
65199
|
+
return _io4(input);
|
|
65213
65200
|
else
|
|
65214
65201
|
return false;
|
|
65215
65202
|
})();
|
|
@@ -65241,12 +65228,12 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65241
65228
|
path: _path + ".permissions",
|
|
65242
65229
|
expected: "Array<Permission>",
|
|
65243
65230
|
value: input.permissions
|
|
65244
|
-
})) && input.permissions.map((elem,
|
|
65245
|
-
path: _path + ".permissions[" +
|
|
65231
|
+
})) && input.permissions.map((elem, _index2) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
|
|
65232
|
+
path: _path + ".permissions[" + _index2 + "]",
|
|
65246
65233
|
expected: "(CameraPermission | ClipboardPermission | ContactsPermission | GeolocationPermission | PhotosPermission)",
|
|
65247
65234
|
value: elem
|
|
65248
|
-
})) && _vu0(elem, _path + ".permissions[" +
|
|
65249
|
-
path: _path + ".permissions[" +
|
|
65235
|
+
})) && _vu0(elem, _path + ".permissions[" + _index2 + "]", _exceptionable) || _report(_exceptionable, {
|
|
65236
|
+
path: _path + ".permissions[" + _index2 + "]",
|
|
65250
65237
|
expected: "(CameraPermission | ClipboardPermission | ContactsPermission | GeolocationPermission | PhotosPermission)",
|
|
65251
65238
|
value: elem
|
|
65252
65239
|
})).every((flag) => flag) || _report(_exceptionable, {
|
|
@@ -65280,14 +65267,6 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65280
65267
|
path: _path + ".type",
|
|
65281
65268
|
expected: '("external" | "game" | "partner" | undefined)',
|
|
65282
65269
|
value: input.type
|
|
65283
|
-
}), void 0 === input.header || ("object" === typeof input.header && null !== input.header && false === Array.isArray(input.header) || _report(_exceptionable, {
|
|
65284
|
-
path: _path + ".header",
|
|
65285
|
-
expected: "(__type.o3 | undefined)",
|
|
65286
|
-
value: input.header
|
|
65287
|
-
})) && _vo4(input.header, _path + ".header", _exceptionable) || _report(_exceptionable, {
|
|
65288
|
-
path: _path + ".header",
|
|
65289
|
-
expected: "(__type.o3 | undefined)",
|
|
65290
|
-
value: input.header
|
|
65291
65270
|
}), void 0 === input.allowsInlineMediaPlayback || "boolean" === typeof input.allowsInlineMediaPlayback || _report(_exceptionable, {
|
|
65292
65271
|
path: _path + ".allowsInlineMediaPlayback",
|
|
65293
65272
|
expected: "(boolean | undefined)",
|
|
@@ -65313,80 +65292,7 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65313
65292
|
expected: "(boolean | undefined)",
|
|
65314
65293
|
value: input.allowsBackForwardNavigationGestures
|
|
65315
65294
|
})].every((flag) => flag);
|
|
65316
|
-
const _vo4 = (input, _path, _exceptionable = true) => [
|
|
65317
|
-
path: _path + ".withBackButton",
|
|
65318
|
-
expected: "(boolean | undefined)",
|
|
65319
|
-
value: input.withBackButton
|
|
65320
|
-
}), void 0 === input.initialAccessoryButtons || (Array.isArray(input.initialAccessoryButtons) || _report(_exceptionable, {
|
|
65321
|
-
path: _path + ".initialAccessoryButtons",
|
|
65322
|
-
expected: "(Array<InitialAccessoryButton> | undefined)",
|
|
65323
|
-
value: input.initialAccessoryButtons
|
|
65324
|
-
})) && input.initialAccessoryButtons.map((elem, _index4) => ("object" === typeof elem && null !== elem || _report(_exceptionable, {
|
|
65325
|
-
path: _path + ".initialAccessoryButtons[" + _index4 + "]",
|
|
65326
|
-
expected: "InitialAccessoryButton",
|
|
65327
|
-
value: elem
|
|
65328
|
-
})) && _vo5(elem, _path + ".initialAccessoryButtons[" + _index4 + "]", _exceptionable) || _report(_exceptionable, {
|
|
65329
|
-
path: _path + ".initialAccessoryButtons[" + _index4 + "]",
|
|
65330
|
-
expected: "InitialAccessoryButton",
|
|
65331
|
-
value: elem
|
|
65332
|
-
})).every((flag) => flag) || _report(_exceptionable, {
|
|
65333
|
-
path: _path + ".initialAccessoryButtons",
|
|
65334
|
-
expected: "(Array<InitialAccessoryButton> | undefined)",
|
|
65335
|
-
value: input.initialAccessoryButtons
|
|
65336
|
-
})].every((flag) => flag);
|
|
65337
|
-
const _vo5 = (input, _path, _exceptionable = true) => ["string" === typeof input.id || _report(_exceptionable, {
|
|
65338
|
-
path: _path + ".id",
|
|
65339
|
-
expected: "string",
|
|
65340
|
-
value: input.id
|
|
65341
|
-
}), "string" === typeof input.title || _report(_exceptionable, {
|
|
65342
|
-
path: _path + ".title",
|
|
65343
|
-
expected: "string",
|
|
65344
|
-
value: input.title
|
|
65345
|
-
}), ("object" === typeof input.icon && null !== input.icon || _report(_exceptionable, {
|
|
65346
|
-
path: _path + ".icon",
|
|
65347
|
-
expected: "(__type.o4 | __type.o6)",
|
|
65348
|
-
value: input.icon
|
|
65349
|
-
})) && _vu1(input.icon, _path + ".icon", _exceptionable) || _report(_exceptionable, {
|
|
65350
|
-
path: _path + ".icon",
|
|
65351
|
-
expected: "(__type.o4 | __type.o6)",
|
|
65352
|
-
value: input.icon
|
|
65353
|
-
})].every((flag) => flag);
|
|
65354
|
-
const _vo6 = (input, _path, _exceptionable = true) => [("object" === typeof input.source && null !== input.source || _report(_exceptionable, {
|
|
65355
|
-
path: _path + ".source",
|
|
65356
|
-
expected: "__type.o5",
|
|
65357
|
-
value: input.source
|
|
65358
|
-
})) && _vo7(input.source, _path + ".source", _exceptionable) || _report(_exceptionable, {
|
|
65359
|
-
path: _path + ".source",
|
|
65360
|
-
expected: "__type.o5",
|
|
65361
|
-
value: input.source
|
|
65362
|
-
}), (null !== input.name || _report(_exceptionable, {
|
|
65363
|
-
path: _path + ".name",
|
|
65364
|
-
expected: "undefined",
|
|
65365
|
-
value: input.name
|
|
65366
|
-
})) && (void 0 === input.name || _report(_exceptionable, {
|
|
65367
|
-
path: _path + ".name",
|
|
65368
|
-
expected: "undefined",
|
|
65369
|
-
value: input.name
|
|
65370
|
-
}))].every((flag) => flag);
|
|
65371
|
-
const _vo7 = (input, _path, _exceptionable = true) => ["string" === typeof input.uri || _report(_exceptionable, {
|
|
65372
|
-
path: _path + ".uri",
|
|
65373
|
-
expected: "string",
|
|
65374
|
-
value: input.uri
|
|
65375
|
-
})].every((flag) => flag);
|
|
65376
|
-
const _vo8 = (input, _path, _exceptionable = true) => ["string" === typeof input.name || _report(_exceptionable, {
|
|
65377
|
-
path: _path + ".name",
|
|
65378
|
-
expected: "string",
|
|
65379
|
-
value: input.name
|
|
65380
|
-
}), (null !== input.source || _report(_exceptionable, {
|
|
65381
|
-
path: _path + ".source",
|
|
65382
|
-
expected: "undefined",
|
|
65383
|
-
value: input.source
|
|
65384
|
-
})) && (void 0 === input.source || _report(_exceptionable, {
|
|
65385
|
-
path: _path + ".source",
|
|
65386
|
-
expected: "undefined",
|
|
65387
|
-
value: input.source
|
|
65388
|
-
}))].every((flag) => flag);
|
|
65389
|
-
const _vo9 = (input, _path, _exceptionable = true) => ["clipboard" === input.name || _report(_exceptionable, {
|
|
65295
|
+
const _vo4 = (input, _path, _exceptionable = true) => ["clipboard" === input.name || _report(_exceptionable, {
|
|
65390
65296
|
path: _path + ".name",
|
|
65391
65297
|
expected: '"clipboard"',
|
|
65392
65298
|
value: input.name
|
|
@@ -65395,7 +65301,7 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65395
65301
|
expected: '("read" | "write")',
|
|
65396
65302
|
value: input.access
|
|
65397
65303
|
})].every((flag) => flag);
|
|
65398
|
-
const
|
|
65304
|
+
const _vo5 = (input, _path, _exceptionable = true) => ["geolocation" === input.name || _report(_exceptionable, {
|
|
65399
65305
|
path: _path + ".name",
|
|
65400
65306
|
expected: '"geolocation"',
|
|
65401
65307
|
value: input.name
|
|
@@ -65404,7 +65310,7 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65404
65310
|
expected: '"access"',
|
|
65405
65311
|
value: input.access
|
|
65406
65312
|
})].every((flag) => flag);
|
|
65407
|
-
const
|
|
65313
|
+
const _vo6 = (input, _path, _exceptionable = true) => ["contacts" === input.name || _report(_exceptionable, {
|
|
65408
65314
|
path: _path + ".name",
|
|
65409
65315
|
expected: '"contacts"',
|
|
65410
65316
|
value: input.name
|
|
@@ -65413,7 +65319,7 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65413
65319
|
expected: '("read" | "write")',
|
|
65414
65320
|
value: input.access
|
|
65415
65321
|
})].every((flag) => flag);
|
|
65416
|
-
const
|
|
65322
|
+
const _vo7 = (input, _path, _exceptionable = true) => ["photos" === input.name || _report(_exceptionable, {
|
|
65417
65323
|
path: _path + ".name",
|
|
65418
65324
|
expected: '"photos"',
|
|
65419
65325
|
value: input.name
|
|
@@ -65422,7 +65328,7 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65422
65328
|
expected: '("read" | "write")',
|
|
65423
65329
|
value: input.access
|
|
65424
65330
|
})].every((flag) => flag);
|
|
65425
|
-
const
|
|
65331
|
+
const _vo8 = (input, _path, _exceptionable = true) => ["camera" === input.name || _report(_exceptionable, {
|
|
65426
65332
|
path: _path + ".name",
|
|
65427
65333
|
expected: '"camera"',
|
|
65428
65334
|
value: input.name
|
|
@@ -65433,15 +65339,15 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65433
65339
|
})].every((flag) => flag);
|
|
65434
65340
|
const _vu0 = (input, _path, _exceptionable = true) => (() => {
|
|
65435
65341
|
if ("camera" === input.name)
|
|
65436
|
-
return
|
|
65342
|
+
return _vo8(input, _path, _exceptionable);
|
|
65437
65343
|
else if ("photos" === input.name)
|
|
65438
|
-
return
|
|
65344
|
+
return _vo7(input, _path, _exceptionable);
|
|
65439
65345
|
else if ("contacts" === input.name)
|
|
65440
|
-
return
|
|
65346
|
+
return _vo6(input, _path, _exceptionable);
|
|
65441
65347
|
else if ("geolocation" === input.name)
|
|
65442
|
-
return
|
|
65348
|
+
return _vo5(input, _path, _exceptionable);
|
|
65443
65349
|
else if ("clipboard" === input.name)
|
|
65444
|
-
return
|
|
65350
|
+
return _vo4(input, _path, _exceptionable);
|
|
65445
65351
|
else
|
|
65446
65352
|
return _report(_exceptionable, {
|
|
65447
65353
|
path: _path,
|
|
@@ -65449,18 +65355,6 @@ var validateAppInTossWebPluginOptions = /* @__PURE__ */ (() => {
|
|
|
65449
65355
|
value: input
|
|
65450
65356
|
});
|
|
65451
65357
|
})();
|
|
65452
|
-
const _vu1 = (input, _path, _exceptionable = true) => (() => {
|
|
65453
|
-
if ("string" === typeof input.name)
|
|
65454
|
-
return _vo8(input, _path, _exceptionable);
|
|
65455
|
-
else if ("object" === typeof input.source && null !== input.source && _vo7(input.source, _path + ".source", false))
|
|
65456
|
-
return _vo6(input, _path, _exceptionable);
|
|
65457
|
-
else
|
|
65458
|
-
return _report(_exceptionable, {
|
|
65459
|
-
path: _path,
|
|
65460
|
-
expected: "(__type.o6 | __type.o4)",
|
|
65461
|
-
value: input
|
|
65462
|
-
});
|
|
65463
|
-
})();
|
|
65464
65358
|
const __is = (input) => "object" === typeof input && null !== input && _io0(input);
|
|
65465
65359
|
let errors;
|
|
65466
65360
|
let _report;
|
|
@@ -65653,8 +65547,7 @@ async function babelBuild({ platform: platform2, buildNumber, deploymentId, conf
|
|
|
65653
65547
|
brandPrimaryColor: config.brand.primaryColor,
|
|
65654
65548
|
brandBridgeColorMode: config.brand.bridgeColorMode,
|
|
65655
65549
|
webViewType: config.webViewProps.type,
|
|
65656
|
-
|
|
65657
|
-
webViewInitialAccessoryButtons: JSON.stringify(config.webViewProps.header?.initialAccessoryButtons ?? []),
|
|
65550
|
+
navigationBar: JSON.stringify(config.navigationBar),
|
|
65658
65551
|
...config.webViewProps
|
|
65659
65552
|
},
|
|
65660
65553
|
identifierName: "Ait"
|
|
@@ -68123,7 +68016,7 @@ var createApp = (config) => {
|
|
|
68123
68016
|
const wss = createWebSocketServer(app);
|
|
68124
68017
|
return { app, wss };
|
|
68125
68018
|
};
|
|
68126
|
-
async function buildDevBundle(platform2, { appName, web, brand, webViewProps }) {
|
|
68019
|
+
async function buildDevBundle(platform2, { appName, web, brand, webViewProps, navigationBar }) {
|
|
68127
68020
|
const prebuilt = fileURLToPath4(import.meta.resolve(`@apps-in-toss/web-framework/prebuilt/dev/${platform2}`));
|
|
68128
68021
|
const bundle = await fs3.promises.readFile(prebuilt, "utf-8");
|
|
68129
68022
|
const result = await transform2(bundle, {
|
|
@@ -68144,8 +68037,7 @@ async function buildDevBundle(platform2, { appName, web, brand, webViewProps })
|
|
|
68144
68037
|
brandPrimaryColor: brand.primaryColor,
|
|
68145
68038
|
brandBridgeColorMode: brand.bridgeColorMode,
|
|
68146
68039
|
webViewType: webViewProps.type,
|
|
68147
|
-
|
|
68148
|
-
webViewInitialAccessoryButtons: JSON.stringify(webViewProps.header?.initialAccessoryButtons ?? []),
|
|
68040
|
+
navigationBar: JSON.stringify(navigationBar),
|
|
68149
68041
|
...webViewProps
|
|
68150
68042
|
},
|
|
68151
68043
|
identifierName: "Ait"
|
package/dist/config/index.d.ts
CHANGED
|
@@ -5,20 +5,6 @@ type DeepRequiredKeysOnly<T> = {
|
|
|
5
5
|
[K in keyof T]-?: T[K] extends object ? (T[K] extends F ? T[K] : DeepRequiredKeysOnly<T[K]>) : T[K];
|
|
6
6
|
};
|
|
7
7
|
|
|
8
|
-
type Icon = {
|
|
9
|
-
source: {
|
|
10
|
-
uri: string;
|
|
11
|
-
};
|
|
12
|
-
name?: never;
|
|
13
|
-
} | {
|
|
14
|
-
name: string;
|
|
15
|
-
source?: never;
|
|
16
|
-
};
|
|
17
|
-
interface InitialAccessoryButton {
|
|
18
|
-
id: string;
|
|
19
|
-
title: string;
|
|
20
|
-
icon: Icon;
|
|
21
|
-
}
|
|
22
8
|
interface AppsInTossWebConfig extends AppsInTossPluginOptions {
|
|
23
9
|
appName: string;
|
|
24
10
|
web: {
|
|
@@ -38,33 +24,11 @@ interface AppsInTossWebConfig extends AppsInTossPluginOptions {
|
|
|
38
24
|
*
|
|
39
25
|
* @default 'partner'
|
|
40
26
|
*/
|
|
41
|
-
type?: 'partner'
|
|
27
|
+
type?: 'partner'
|
|
42
28
|
/**
|
|
43
|
-
*
|
|
29
|
+
* @deprecated Use 'partner' instead.
|
|
44
30
|
*/
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Defaults to `true` when type is 'partner', `false` when type is 'external'
|
|
48
|
-
*/
|
|
49
|
-
withBackButton?: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* @default []
|
|
52
|
-
*
|
|
53
|
-
* @example
|
|
54
|
-
* ```ts
|
|
55
|
-
* [
|
|
56
|
-
* {
|
|
57
|
-
* title: '버튼 이름',
|
|
58
|
-
* icon: {
|
|
59
|
-
* name: 'icon-name',
|
|
60
|
-
* source: 'icon-source',
|
|
61
|
-
* },
|
|
62
|
-
* },
|
|
63
|
-
* ]
|
|
64
|
-
* ```
|
|
65
|
-
*/
|
|
66
|
-
initialAccessoryButtons?: InitialAccessoryButton[];
|
|
67
|
-
};
|
|
31
|
+
| 'external' | 'game';
|
|
68
32
|
/**
|
|
69
33
|
*
|
|
70
34
|
* @default false
|
|
@@ -118,4 +82,4 @@ interface AppsInTossWebConfig extends AppsInTossPluginOptions {
|
|
|
118
82
|
type AppsInTossWebConfigResponse = DeepRequiredKeysOnly<AppsInTossWebConfig>;
|
|
119
83
|
declare const defineConfig: (config: AppsInTossWebConfig) => AppsInTossWebConfigResponse;
|
|
120
84
|
|
|
121
|
-
export { type AppsInTossWebConfig, type AppsInTossWebConfigResponse,
|
|
85
|
+
export { type AppsInTossWebConfig, type AppsInTossWebConfigResponse, defineConfig };
|
package/dist/config/index.js
CHANGED
|
@@ -52,11 +52,11 @@ var defineConfig = (config) => {
|
|
|
52
52
|
bounces: true,
|
|
53
53
|
allowsBackForwardNavigationGestures: true,
|
|
54
54
|
pullToRefreshEnabled: true,
|
|
55
|
-
overScrollMode: "always"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
overScrollMode: "always"
|
|
56
|
+
},
|
|
57
|
+
navigationBar: {
|
|
58
|
+
withBackButton: true,
|
|
59
|
+
withHomeButton: false
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
62
|
return merge(defaultConfig, config);
|