[add] first
This commit is contained in:
commit
b32400ec60
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
3
.vscode/extensions.json
vendored
Normal file
3
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"recommendations": ["johnsoncodehk.volar"]
|
||||
}
|
16
README.md
Normal file
16
README.md
Normal file
@ -0,0 +1,16 @@
|
||||
# Vue 3 + TypeScript + Vite
|
||||
|
||||
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
|
||||
|
||||
## Recommended IDE Setup
|
||||
|
||||
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar)
|
||||
|
||||
## Type Support For `.vue` Imports in TS
|
||||
|
||||
Since TypeScript cannot handle type information for `.vue` imports, they are shimmed to be a generic Vue component type by default. In most cases this is fine if you don't really care about component prop types outside of templates. However, if you wish to get actual prop types in `.vue` imports (for example to get props validation when using manual `h(...)` calls), you can enable Volar's Take Over mode by following these steps:
|
||||
|
||||
1. Run `Extensions: Show Built-in Extensions` from VS Code's command palette, look for `TypeScript and JavaScript Language Features`, then right click and select `Disable (Workspace)`. By default, Take Over mode will enable itself if the default TypeScript extension is disabled.
|
||||
2. Reload the VS Code window by running `Developer: Reload Window` from the command palette.
|
||||
|
||||
You can learn more about Take Over mode [here](https://github.com/johnsoncodehk/volar/discussions/471).
|
94
index.html
Normal file
94
index.html
Normal file
@ -0,0 +1,94 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>BJ Casino 測試</title>
|
||||
|
||||
<!-- SmartAppBanner -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
<meta name="apple-itunes-app" content="app-id=1593328573">
|
||||
<meta name="google-play-app" content="app-id=org.vicking.bj_casino">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" type="text/css" href="/banner/smart-app-banner.css">
|
||||
<link rel="apple-touch-icon" href="./src/assets/icon.png">
|
||||
<link rel="android-touch-icon" href="./src/assets/icon.png" />
|
||||
<link rel="windows-touch-icon" href="./src/assets/icon.png" />
|
||||
|
||||
<style type="text/css">
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="./banner/smart-app-banner.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
|
||||
|
||||
<!--没有应用下载应用-->
|
||||
<script>
|
||||
var u = navigator.userAgent;
|
||||
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
|
||||
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
|
||||
(function () {
|
||||
|
||||
OnLoad();
|
||||
|
||||
function OnLoad() {
|
||||
_clearAllCookie();
|
||||
_addMeta();
|
||||
}
|
||||
|
||||
function _clearAllCookie() {
|
||||
document.cookie.split(";").forEach(function (c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
|
||||
}
|
||||
|
||||
function _addMeta() {
|
||||
if (isiOS) {
|
||||
var headNode = document.getElementsByTagName("head")[0];
|
||||
var sbNode = document.createElement('meta');
|
||||
sbNode.name = 'apple-itunes-app';
|
||||
sbNode.content = 'app-id=1593328573';
|
||||
headNode.appendChild(sbNode);
|
||||
run('ios');
|
||||
} else if (isAndroid) {
|
||||
run('android');
|
||||
} else {
|
||||
run('android');
|
||||
}
|
||||
}
|
||||
|
||||
banner = undefined;
|
||||
function run(force) {
|
||||
var n = document.querySelector('.smartbanner');
|
||||
if (n) {
|
||||
n.parentNode.removeChild(n);
|
||||
}
|
||||
new SmartBanner({
|
||||
title: '爆機娛樂城',
|
||||
author: 'Vic King Electronics Co., Ltd.',
|
||||
button: '下載',
|
||||
scale: 'auto',
|
||||
// url: './ToAppStore.html',
|
||||
force: force,
|
||||
daysHidden: 0,
|
||||
daysReminder: 0,
|
||||
layer: false,
|
||||
hideOnInstall: false,
|
||||
iOSUniversalApp: true,
|
||||
});
|
||||
};
|
||||
})()
|
||||
</script>
|
||||
|
||||
</html>
|
19282
package-lock.json
generated
Normal file
19282
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
27
package.json
Normal file
27
package.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "bj-casino-deeplink",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vite build",
|
||||
"build1": "vue-tsc --noEmit && vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vue/cli": "^5.0.4",
|
||||
"@vue/compiler-sfc": "^3.2.32",
|
||||
"bootstrap": "^5.1.3",
|
||||
"element-plus": "^2.1.9",
|
||||
"moment": "^2.29.2",
|
||||
"vue": "^3.2.25"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^2.3.1",
|
||||
"typescript": "^4.5.4",
|
||||
"vite": "^2.9.2",
|
||||
"vue-tsc": "^0.29.8"
|
||||
},
|
||||
"@vue/compiler-sfc": "file: node_modules/@vue/compiler-sfc"
|
||||
}
|
292
public/banner/smart-app-banner.css
Normal file
292
public/banner/smart-app-banner.css
Normal file
@ -0,0 +1,292 @@
|
||||
.smartbanner-show {
|
||||
margin-top: 80px;
|
||||
}
|
||||
|
||||
.smartbanner-show .smartbanner {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/** Default **/
|
||||
.smartbanner {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
display: none;
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
line-height: 80px;
|
||||
font-family: 'Helvetica Neue', sans-serif;
|
||||
background: #f4f4f4;
|
||||
z-index: 9998;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
overflow: hidden;
|
||||
-webkit-text-size-adjust: none;
|
||||
}
|
||||
|
||||
.smartbanner-container {
|
||||
margin: 0 auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.smartbanner-close {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 5px 0 5px;
|
||||
font-family: 'ArialRoundedMTBold', Arial;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
color: #888;
|
||||
text-decoration: none;
|
||||
border: 0;
|
||||
border-radius: 14px;
|
||||
-webkit-font-smoothing: subpixel-antialiased;
|
||||
}
|
||||
|
||||
.smartbanner-close:active,
|
||||
.smartbanner-close:hover {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.smartbanner-icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 57px;
|
||||
height: 57px;
|
||||
margin-right: 12px;
|
||||
background-size: cover;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.smartbanner-info {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 44%;
|
||||
font-size: 11px;
|
||||
line-height: 1.2em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.smartbanner-title {
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.smartbanner-button {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
margin: auto 0;
|
||||
height: 24px;
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
color: #6a6a6a;
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
.smartbanner-button:active,
|
||||
.smartbanner-button:hover {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.smartbanner-button-text {
|
||||
}
|
||||
|
||||
.smartbanner-button-text:active,
|
||||
.smartbanner-button-text:hover {
|
||||
}
|
||||
|
||||
/** iOS **/
|
||||
.smartbanner-ios {
|
||||
background: #f4f4f4;
|
||||
background: linear-gradient(to bottom, #f4f4f4, #cdcdcd);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-close {
|
||||
border: 0;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
color: #888;
|
||||
text-shadow: 0 1px 0 white;
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-close:active,
|
||||
.smartbanner-ios .smartbanner-close:hover {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-icon {
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
background-size: cover;
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-info {
|
||||
color: #6a6a6a;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-title {
|
||||
color: #4d4d4d;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-button {
|
||||
padding: 0 10px;
|
||||
min-width: 10%;
|
||||
color: #6a6a6a;
|
||||
background: #efefef;
|
||||
background: linear-gradient(to bottom, #efefef, #dcdcdc);
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 0 0 1px #bfbfbf, 0 1px 0 rgba(255, 255, 255, 0.6), 0 2px 0 rgba(255, 255, 255, 0.7) inset;
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-button:active,
|
||||
.smartbanner-ios .smartbanner-button:hover {
|
||||
background: #dcdcdc;
|
||||
background: linear-gradient(to bottom, #dcdcdc, #efefef);
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-button-text {
|
||||
}
|
||||
|
||||
.smartbanner-ios .smartbanner-button-text:active,
|
||||
.smartbanner-ios .smartbanner-button-text:hover {
|
||||
}
|
||||
|
||||
/** Android **/
|
||||
.smartbanner-android {
|
||||
background: #3d3d3d url(data:image/gif;base64,R0lGODlhCAAIAIABAFVVVf///yH5BAEHAAEALAAAAAAIAAgAAAINRG4XudroGJBRsYcxKAA7);
|
||||
box-shadow: inset 0 4px 0 #88b131;
|
||||
line-height: 82px;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-close {
|
||||
border: 0;
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
line-height: 17px;
|
||||
margin-right: 7px;
|
||||
color: #b1b1b3;
|
||||
background: #1c1e21;
|
||||
text-shadow: 0 1px 1px #000;
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.8) inset, 0 1px 1px rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-close:active,
|
||||
.smartbanner-android .smartbanner-close:hover {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-icon {
|
||||
background-color: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-info {
|
||||
color: #ccc;
|
||||
text-shadow: 0 1px 2px #000;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-title {
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-button {
|
||||
min-width: 12%;
|
||||
color: #d1d1d1;
|
||||
padding: 0;
|
||||
background: none;
|
||||
border-radius: 0;
|
||||
box-shadow: 0 0 0 1px #333, 0 0 0 2px #dddcdc;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-button:active,
|
||||
.smartbanner-android .smartbanner-button:hover {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-button-text {
|
||||
text-align: center;
|
||||
display: block;
|
||||
padding: 0 10px;
|
||||
background: #42b6c9;
|
||||
background: linear-gradient(to bottom, #42b6c9, #39a9bb);
|
||||
text-transform: none;
|
||||
text-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.smartbanner-android .smartbanner-button-text:active,
|
||||
.smartbanner-android .smartbanner-button-text:hover {
|
||||
background: #2ac7e1;
|
||||
}
|
||||
|
||||
/** Windows **/
|
||||
.smartbanner-windows {
|
||||
background: #f4f4f4;
|
||||
background: linear-gradient(to bottom, #f4f4f4, #cdcdcd);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
|
||||
line-height: 80px;
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-close {
|
||||
border: 0;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
color: #888;
|
||||
text-shadow: 0 1px 0 white;
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-close:active,
|
||||
.smartbanner-windows .smartbanner-close:hover {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-icon {
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
background-size: cover;
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-info {
|
||||
color: #6a6a6a;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-title {
|
||||
color: #4d4d4d;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-button {
|
||||
padding: 0 10px;
|
||||
min-width: 10%;
|
||||
color: #6a6a6a;
|
||||
background: #efefef;
|
||||
background: linear-gradient(to bottom, #efefef, #dcdcdc);
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 0 0 1px #bfbfbf, 0 1px 0 rgba(255, 255, 255, 0.6), 0 2px 0 rgba(255, 255, 255, 0.7) inset;
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-button:active,
|
||||
.smartbanner-windows .smartbanner-button:hover {
|
||||
background: #dcdcdc;
|
||||
background: linear-gradient(to bottom, #dcdcdc, #efefef);
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-button-text {
|
||||
}
|
||||
|
||||
.smartbanner-windows .smartbanner-button-text:active,
|
||||
.smartbanner-windows .smartbanner-button-text:hover {
|
||||
}
|
59
public/banner/smart-app-banner.js
Normal file
59
public/banner/smart-app-banner.js
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
UAParser.js v0.7.18
|
||||
Lightweight JavaScript-based User-Agent string parser
|
||||
https://github.com/faisalman/ua-parser-js
|
||||
|
||||
Copyright ? 2012-2016 Faisal Salman <fyzlman@gmail.com>
|
||||
Dual licensed under GPLv2 or MIT
|
||||
*/
|
||||
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,d,b){a!=Array.prototype&&a!=Object.prototype&&(a[d]=b.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
|
||||
$jscomp.polyfill=function(a,d,b,e){if(d){b=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var c=a[e];c in b||(b[c]={});b=b[c]}a=a[a.length-1];e=b[a];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(b,a,{configurable:!0,writable:!0,value:d})}};$jscomp.polyfill("Object.getOwnPropertySymbols",function(a){return a?a:function(){return[]}},"es6","es5");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
|
||||
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var a=0;return function(d){return $jscomp.SYMBOL_PREFIX+(d||"")+a++}}();
|
||||
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var d=0;return $jscomp.iteratorPrototype(function(){return d<a.length?{done:!1,value:a[d++]}:{done:!0}})};
|
||||
$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.iteratorFromArray=function(a,d){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var b=0,e={next:function(){if(b<a.length){var c=b++;return{value:d(c,a[c]),done:!1}}e.next=function(){return{done:!0,value:void 0}};return e.next()}};e[Symbol.iterator]=function(){return e};return e};
|
||||
$jscomp.polyfill("Array.prototype.keys",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(a){return a})}},"es6","es3");$jscomp.owns=function(a,d){return Object.prototype.hasOwnProperty.call(a,d)};$jscomp.assign="function"==typeof Object.assign?Object.assign:function(a,d){for(var b=1;b<arguments.length;b++){var e=arguments[b];if(e)for(var c in e)$jscomp.owns(e,c)&&(a[c]=e[c])}return a};$jscomp.polyfill("Object.assign",function(a){return a||$jscomp.assign},"es6","es3");
|
||||
(function(a){"object"===typeof exports&&"undefined"!==typeof module?module.exports=a():"function"===typeof define&&define.amd?define([],a):("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).SmartBanner=a()})(function(){return function(){function a(d,b,e){function c(f,k){if(!b[f]){if(!d[f]){var r="function"==typeof require&&require;if(!k&&r)return r(f,!0);if(m)return m(f,!0);k=Error("Cannot find module '"+f+"'");throw k.code="MODULE_NOT_FOUND",
|
||||
k;}k=b[f]={exports:{}};d[f][0].call(k.exports,function(a){return c(d[f][1][a]||a)},k,k.exports,a,d,b,e)}return b[f].exports}for(var m="function"==typeof require&&require,f=0;f<e.length;f++)c(e[f]);return c}return a}()({1:[function(a,d,b){var e=a("object-assign"),c=a("component-query"),m=a("get-doc"),f=a("cookie-cutter"),n=a("ua-parser-js"),k=(navigator.language||navigator.userLanguage||navigator.browserLanguage).slice(-2)||"us",r=m&&m.documentElement,g={ios:{appMeta:"apple-itunes-app",iconRels:["apple-touch-icon-precomposed",
|
||||
"apple-touch-icon"],getStoreLink:function(){return"https://itunes.apple.com/"+this.options.appStoreLanguage+"/app/id"+this.appId+"?mt=8"}},android:{appMeta:"google-play-app",iconRels:["android-touch-icon","apple-touch-icon-precomposed","apple-touch-icon"],getStoreLink:function(){return"http://play.google.com/store/apps/details?id="+this.appId}},windows:{appMeta:"msApplication-ID",iconRels:["windows-touch-icon","apple-touch-icon-precomposed","apple-touch-icon"],getStoreLink:function(){return"http://www.windowsphone.com/s?appid="+
|
||||
this.appId}}};a=function(a){var c=n(navigator.userAgent);this.options=e({},{daysHidden:15,daysReminder:90,appStoreLanguage:k,button:"OPEN",store:{ios:"On the App Store",android:"In Google Play",windows:"In the Windows Store"},price:{ios:"FREE",android:"FREE",windows:"FREE"},theme:"",icon:"",force:""},a||{});this.options.force?this.type=this.options.force:"Windows Phone"===c.os.name||"Windows Mobile"===c.os.name?this.type="windows":"iOS"===c.os.name?this.type="ios":"Android"===c.os.name&&(this.type=
|
||||
"android");if(this.type&&this.options.store[this.type]){this.appMeta=g[this.type].appMeta;this.parseAppId();a="ios"===this.type&&"Mobile Safari"===c.browser.name&&6<=parseInt(c.os.version,10);var l=navigator.standalone,b=f.get(this.appId+"-smartbanner-closed"),d=f.get(this.appId+"-smartbanner-installed");a||l||b||d||(e(this,g[this.type]),!this.appId&&"IOS"===c.os.name&&"Safari"===c.browser.name)||(this.create(),this.show())}};a.prototype={constructor:a,create:function(){var a=this.getStoreLink(),
|
||||
e=this.options.price[this.type]+" - "+this.options.store[this.type];if(this.options.icon)var f=this.options.icon;else for(var b=0;b<this.iconRels.length;b++){var d=c('link[rel="'+this.iconRels[b]+'"]');if(d){f=d.getAttribute("href");break}}var t=m.createElement("div");t.className="smartbanner smartbanner-"+(this.options.theme||this.type);t.innerHTML='<div class="smartbanner-container"><a href="javascript:void(0);" class="smartbanner-close">×</a><span class="smartbanner-icon" style="background-image: url('+
|
||||
f+')"></span><div class="smartbanner-info"><div class="smartbanner-title">'+this.options.title+"</div><div>"+this.options.author+"</div><span>"+e+'</span></div><a href="'+a+'" class="smartbanner-button"><span class="smartbanner-button-text">'+this.options.button+"</span></a></div>";m.body?m.body.appendChild(t):m&&m.addEventListener("DOMContentLoaded",function(){m.body.appendChild(t)});c(".smartbanner-button",t).addEventListener("click",this.install.bind(this),!1);c(".smartbanner-close",t).addEventListener("click",
|
||||
this.close.bind(this),!1)},hide:function(){r.classList.remove("smartbanner-show");if("function"===typeof this.options.close)return this.options.close()},show:function(){r.classList.add("smartbanner-show");if("function"===typeof this.options.show)return this.options.show()},close:function(){this.hide();f.set(this.appId+"-smartbanner-closed","true",{path:"/",expires:new Date(Number(new Date)+864E5*this.options.daysHidden)});if("function"===typeof this.options.close)return this.options.close()},install:function(){this.hide();
|
||||
f.set(this.appId+"-smartbanner-installed","true",{path:"/",expires:new Date(Number(new Date)+864E5*this.options.daysReminder)});if("function"===typeof this.options.close)return this.options.close()},parseAppId:function(){var a=c('meta[name="'+this.appMeta+'"]');if(a)return this.appId="windows"===this.type?a.getAttribute("content"):/app-id=([^\s,]+)/.exec(a.getAttribute("content"))[1]}};d.exports=a},{"component-query":2,"cookie-cutter":3,"get-doc":4,"object-assign":6,"ua-parser-js":7}],2:[function(a,
|
||||
d,b){function e(a,e){return e.querySelector(a)}b=d.exports=function(a,b){b=b||document;return e(a,b)};b.all=function(a,e){e=e||document;return e.querySelectorAll(a)};b.engine=function(a){if(!a.one)throw Error(".one callback required");if(!a.all)throw Error(".all callback required");e=a.one;b.all=a.all;return b}},{}],3:[function(a,d,b){b=d.exports=function(a){a||(a={});"string"===typeof a&&(a={cookie:a});void 0===a.cookie&&(a.cookie="");return{get:function(c){for(var b=a.cookie.split(/;\s*/),f=0;f<
|
||||
b.length;f++){var e=b[f].split("=");if(unescape(e[0])===c)return unescape(e[1])}},set:function(c,b,f){f||(f={});c=escape(c)+"="+escape(b);f.expires&&(c+="; expires="+f.expires);f.path&&(c+="; path="+escape(f.path));f.domain&&(c+="; domain="+escape(f.domain));f.secure&&(c+="; secure");return a.cookie=c}}};"undefined"!==typeof document&&(a=b(document),b.get=a.get,b.set=a.set)},{}],4:[function(a,d,b){a=a("has-dom");d.exports=a()?document:null},{"has-dom":5}],5:[function(a,d,b){d.exports=function(){return"undefined"!==
|
||||
typeof window&&"undefined"!==typeof document&&"function"===typeof document.createElement}},{}],6:[function(a,d,b){var e=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable;d.exports=function(){try{if(!Object.assign)return!1;var a=new String("abc");a[5]="de";if("5"===Object.getOwnPropertyNames(a)[0])return!1;var c={};for(a=0;10>a;a++)c["_"+String.fromCharCode(a)]=a;if("0123456789"!==Object.getOwnPropertyNames(c).map(function(a){return c[a]}).join(""))return!1;
|
||||
var b={};"abcdefghijklmnopqrst".split("").forEach(function(a){b[a]=a});return"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},b)).join("")?!1:!0}catch(r){return!1}}()?Object.assign:function(a,b){if(null===a||void 0===a)throw new TypeError("Object.assign cannot be called with null or undefined");var d=Object(a);for(var f,g=1;g<arguments.length;g++){var p=Object(arguments[g]);for(var n in p)c.call(p,n)&&(d[n]=p[n]);if(e){f=e(p);for(var l=0;l<f.length;l++)m.call(p,f[l])&&(d[f[l]]=p[f[l]])}}return d}},
|
||||
{}],7:[function(a,d,b){(function(a,c){var e={extend:function(a,c){var b={},e;for(e in a)b[e]=c[e]&&0===c[e].length%2?c[e].concat(a[e]):a[e];return b},has:function(a,c){return"string"===typeof a?-1!==c.toLowerCase().indexOf(a.toLowerCase()):!1},lowerize:function(a){return a.toLowerCase()},major:function(a){return"string"===typeof a?a.replace(/[^\d\.]/g,"").split(".")[0]:c},trim:function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},f=function(a,b){for(var e=0,d,f,l,h,g,q;e<b.length&&
|
||||
!g;){var k=b[e],m=b[e+1];for(d=f=0;d<k.length&&!g;)if(g=k[d++].exec(a))for(l=0;l<m.length;l++)q=g[++f],h=m[l],"object"===typeof h&&0<h.length?2==h.length?this[h[0]]="function"==typeof h[1]?h[1].call(this,q):h[1]:3==h.length?this[h[0]]="function"!==typeof h[1]||h[1].exec&&h[1].test?q?q.replace(h[1],h[2]):c:q?h[1].call(this,q,h[2]):c:4==h.length&&(this[h[0]]=q?h[3].call(this,q.replace(h[1],h[2])):c):this[h]=q?q:c;e+=2}},n=function(a,b){for(var d in b)if("object"===typeof b[d]&&0<b[d].length)for(var f=
|
||||
0;f<b[d].length;f++){if(e.has(b[d][f],a))return"?"===d?c:d}else if(e.has(b[d],a))return"?"===d?c:d;return a},k={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2E3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},r={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],["name","version"],[/(opios)[\/\s]+([\w\.]+)/i],[["name","Opera Mini"],"version"],
|
||||
[/\s(opr)\/([\w\.]+)/i],[["name","Opera"],"version"],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]*)/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i],["name","version"],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[["name","IE"],"version"],[/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i],
|
||||
[["name","Edge"],"version"],[/(yabrowser)\/([\w\.]+)/i],[["name","Yandex"],"version"],[/(puffin)\/([\w\.]+)/i],[["name","Puffin"],"version"],[/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i],[["name","UCBrowser"],"version"],[/(comodo_dragon)\/([\w\.]+)/i],[["name",/_/g," "],"version"],[/(micromessenger)\/([\w\.]+)/i],[["name","WeChat"],"version"],[/(qqbrowserlite)\/([\w\.]+)/i],["name","version"],[/(QQ)\/([\d\.]+)/i],["name","version"],[/m?(qqbrowser)[\/\s]?([\w\.]+)/i],["name","version"],
|
||||
[/(BIDUBrowser)[\/\s]?([\w\.]+)/i],["name","version"],[/(2345Explorer)[\/\s]?([\w\.]+)/i],["name","version"],[/(MetaSr)[\/\s]?([\w\.]+)/i],["name"],[/(LBBROWSER)/i],["name"],[/xiaomi\/miuibrowser\/([\w\.]+)/i],["version",["name","MIUI Browser"]],[/;fbav\/([\w\.]+);/i],["version",["name","Facebook"]],[/headlesschrome(?:\/([\w\.]+)|\s)/i],["version",["name","Chrome Headless"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[["name",/(.+)/,"$1 WebView"],"version"],[/((?:oculus|samsung)browser)\/([\w\.]+)/i],[["name",
|
||||
/(.+(?:g|us))(.+)/,"$1 $2"],"version"],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i],["version",["name","Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i],["name","version"],[/(dolfin)\/([\w\.]+)/i],[["name","Dolphin"],"version"],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[["name","Chrome"],"version"],[/(coast)\/([\w\.]+)/i],[["name","Opera Coast"],"version"],[/fxios\/([\w\.-]+)/i],["version",["name","Firefox"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],
|
||||
["version",["name","Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],["version","name"],[/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[["name","GSA"],"version"],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],["name",["version",n,{"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],["name","version"],[/(navigator|netscape)\/([\w\.-]+)/i],[["name","Netscape"],
|
||||
"version"],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,/(mozilla)\/([\w\.]+).+rv:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]*)/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],["name","version"]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],
|
||||
[["architecture","amd64"]],[/(ia32(?=;))/i],[["architecture",e.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[["architecture","ia32"]],[/windows\s(ce|mobile);\sppc;/i],[["architecture","arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[["architecture",/ower/,"",e.lowerize]],[/(sun4\w)[;\)]/i],[["architecture","sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[["architecture",e.lowerize]]],device:[[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],
|
||||
["model","vendor",["type","tablet"]],[/applecoremedia\/[\w\.]+ \((ipad)/],["model",["vendor","Apple"],["type","tablet"]],[/(apple\s{0,1}tv)/i],[["model","Apple TV"],["vendor","Apple"]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],["vendor","model",["type","tablet"]],[/(kf[A-z]+)\sbuild\/.+silk\//i],["model",["vendor","Amazon"],["type","tablet"]],[/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i],
|
||||
[["model",n,{"Fire Phone":["SD","KF"]}],["vendor","Amazon"],["type","mobile"]],[/\((ip[honed|\s\w*]+);.+(apple)/i],["model","vendor",["type","mobile"]],[/\((ip[honed|\s\w*]+);/i],["model",["vendor","Apple"],["type","mobile"]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],["vendor","model",["type","mobile"]],[/\(bb10;\s(\w+)/i],["model",["vendor","BlackBerry"],["type","mobile"]],
|
||||
[/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i],["model",["vendor","Asus"],["type","tablet"]],[/(sony)\s(tablet\s[ps])\sbuild\//i,/(sony)?(?:sgp.+)\sbuild\//i],[["vendor","Sony"],["model","Xperia Tablet"],["type","tablet"]],[/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i],["model",["vendor","Sony"],["type","mobile"]],[/\s(ouya)\s/i,/(nintendo)\s([wids3u]+)/i],["vendor","model",["type","console"]],[/android.+;\s(shield)\sbuild/i],["model",["vendor","Nvidia"],["type","console"]],
|
||||
[/(playstation\s[34portablevi]+)/i],["model",["vendor","Sony"],["type","console"]],[/(sprint\s(\w+))/i],[["vendor",n,{HTC:"APA",Sprint:"Sprint"}],["model",n,{"Evo Shift 4G":"7373KT"}],["type","mobile"]],[/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i],["vendor","model",["type","tablet"]],[/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i,/(zte)-(\w*)/i,/(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i],["vendor",["model",/_/g," "],["type","mobile"]],[/(nexus\s9)/i],["model",["vendor","HTC"],
|
||||
["type","tablet"]],[/d\/huawei([\w\s-]+)[;\)]/i,/(nexus\s6p)/i],["model",["vendor","Huawei"],["type","mobile"]],[/(microsoft);\s(lumia[\s\w]+)/i],["vendor","model",["type","mobile"]],[/[\s\(;](xbox(?:\sone)?)[\s\);]/i],["model",["vendor","Microsoft"],["type","console"]],[/(kin\.[onetw]{3})/i],[["model",/\./g," "],["vendor","Microsoft"],["type","mobile"]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i,/mot[\s-]?(\w*)/i,/(XT\d{3,4}) build\//i,/(nexus\s6)/i],["model",
|
||||
["vendor","Motorola"],["type","mobile"]],[/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],["model",["vendor","Motorola"],["type","tablet"]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[["vendor",e.trim],["model",e.trim],["type","smarttv"]],[/hbbtv.+maple;(\d+)/i],[["model",/^/,"SmartTV"],["vendor","Samsung"],["type","smarttv"]],[/\(dtv[\);].+(aquos)/i],["model",["vendor","Sharp"],["type","smarttv"]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,/((SM-T\w+))/i],
|
||||
[["vendor","Samsung"],"model",["type","tablet"]],[/smart-tv.+(samsung)/i],["vendor",["type","smarttv"],"model"],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i,/sec-((sgh\w+))/i],[["vendor","Samsung"],"model",["type","mobile"]],[/sie-(\w*)/i],["model",["vendor","Siemens"],["type","mobile"]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]*)/i],[["vendor","Nokia"],"model",["type","mobile"]],[/android\s3\.[\s\w;-]{10}(a\d{3})/i],["model",["vendor",
|
||||
"Acer"],["type","tablet"]],[/android.+([vl]k\-?\d{3})\s+build/i],["model",["vendor","LG"],["type","tablet"]],[/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i],[["vendor","LG"],"model",["type","tablet"]],[/(lg) netcast\.tv/i],["vendor","model",["type","smarttv"]],[/(nexus\s[45])/i,/lg[e;\s\/-]+(\w*)/i,/android.+lg(\-?[\d\w]+)\s+build/i],["model",["vendor","LG"],["type","mobile"]],[/android.+(ideatab[a-z0-9\-\s]+)/i],["model",["vendor","Lenovo"],["type","tablet"]],[/linux;.+((jolla));/i],["vendor",
|
||||
"model",["type","mobile"]],[/((pebble))app\/[\d\.]+\s/i],["vendor","model",["type","wearable"]],[/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i],["vendor","model",["type","mobile"]],[/crkey/i],[["model","Chromecast"],["vendor","Google"]],[/android.+;\s(glass)\s\d/i],["model",["vendor","Google"],["type","wearable"]],[/android.+;\s(pixel c)\s/i],["model",["vendor","Google"],["type","tablet"]],[/android.+;\s(pixel xl|pixel)\s/i],["model",["vendor","Google"],["type","mobile"]],[/android.+;\s(\w+)\s+build\/hm\1/i,
|
||||
/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i,/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i,/android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i],[["model",/_/g," "],["vendor","Xiaomi"],["type","mobile"]],[/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i],[["model",/_/g," "],["vendor","Xiaomi"],["type","tablet"]],[/android.+;\s(m[1-5]\snote)\sbuild/i],["model",["vendor","Meizu"],["type","tablet"]],[/android.+a000(1)\s+build/i,
|
||||
/android.+oneplus\s(a\d{4})\s+build/i],["model",["vendor","OnePlus"],["type","mobile"]],[/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i],["model",["vendor","RCA"],["type","tablet"]],[/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i],["model",["vendor","Dell"],["type","tablet"]],[/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i],["model",["vendor","Verizon"],["type","tablet"]],[/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i],[["vendor","Barnes & Noble"],"model",["type","tablet"]],[/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i],
|
||||
["model",["vendor","NuVision"],["type","tablet"]],[/android.+;\s(k88)\sbuild/i],["model",["vendor","ZTE"],["type","tablet"]],[/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i],["model",["vendor","Swiss"],["type","mobile"]],[/android.+[;\/]\s*(zur\d{3})\s+build/i],["model",["vendor","Swiss"],["type","tablet"]],[/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i],["model",["vendor","Zeki"],["type","tablet"]],[/(android).+[;\/]\s+([YR]\d{2})\s+build/i,/android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i],
|
||||
[["vendor","Dragon Touch"],"model",["type","tablet"]],[/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i],["model",["vendor","Insignia"],["type","tablet"]],[/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i],["model",["vendor","NextBook"],["type","tablet"]],[/android.+[;\/]\s*(Xtreme_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i],[["vendor","Voice"],"model",["type","mobile"]],[/android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i],[["vendor","LvTel"],"model",["type","mobile"]],[/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i],
|
||||
["model",["vendor","Envizen"],["type","tablet"]],[/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i],["vendor","model",["type","tablet"]],[/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i],["model",["vendor","MachSpeed"],["type","tablet"]],[/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i],["vendor","model",["type","tablet"]],[/android.+[;\/]\s*TU_(1491)\s+build/i],["model",["vendor","Rotor"],["type","tablet"]],[/android.+(KS(.+))\s+build/i],["model",["vendor","Amazon"],["type","tablet"]],
|
||||
[/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i],["vendor","model",["type","tablet"]],[/\s(tablet|tab)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[["type",e.lowerize],"vendor","model"],[/(android[\w\.\s\-]{0,9});.+build/i],["model",["vendor","Generic"]]],engine:[[/windows.+\sedge\/([\w\.]+)/i],["version",["name","EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],["name","version"],
|
||||
[/rv:([\w\.]{1,9}).+(gecko)/i],["version","name"]],os:[[/microsoft\s(windows)\s(vista|xp)/i],["name","version"],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],["name",["version",n,k]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[["name","Windows"],["version",n,k]],[/\((bb)(10);/i],[["name","BlackBerry"],"version"],[/(blackberry)\w*\/?([\w\.]*)/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i,
|
||||
/linux;.+(sailfish);/i],["name","version"],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i],[["name","Symbian"],"version"],[/\((series40);/i],["name"],[/mozilla.+\(mobile;.+gecko.+firefox/i],[["name","Firefox OS"],"version"],[/(nintendo|playstation)\s([wids34portablevu]+)/i,/(mint)[\/\s\(]?(\w*)/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i,/(hurd|linux)\s?([\w\.]*)/i,
|
||||
/(gnu)\s?([\w\.]*)/i],["name","version"],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[["name","Chromium OS"],"version"],[/(sunos)\s?([\w\.\d]*)/i],[["name","Solaris"],"version"],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i],["name","version"],[/(haiku)\s(\w+)/i],["name","version"],[/cfnetwork\/.+darwin/i,/ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i],[["version",/_/g,"."],["name","iOS"]],[/(mac\sos\sx)\s?([\w\s\.]*)/i,/(macintosh|mac(?=_powerpc)\s)/i],[["name","Mac OS"],["version",/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]*)/i,
|
||||
/(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]*)/i],["name","version"]]},g=function(b,d){"object"===typeof b&&(d=b,b=c);if(!(this instanceof g))return(new g(b,d)).getResult();var l=b||(a&&a.navigator&&a.navigator.userAgent?a.navigator.userAgent:""),k=d?e.extend(r,d):r;this.getBrowser=function(){var a={name:c,version:c};f.call(a,l,k.browser);a.major=e.major(a.version);return a};this.getCPU=function(){var a={architecture:c};f.call(a,
|
||||
l,k.cpu);return a};this.getDevice=function(){var a={vendor:c,model:c,type:c};f.call(a,l,k.device);return a};this.getEngine=function(){var a={name:c,version:c};f.call(a,l,k.engine);return a};this.getOS=function(){var a={name:c,version:c};f.call(a,l,k.os);return a};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return l};this.setUA=function(a){l=a;return this};return this};
|
||||
g.VERSION="0.7.18";g.BROWSER={NAME:"name",MAJOR:"major",VERSION:"version"};g.CPU={ARCHITECTURE:"architecture"};g.DEVICE={MODEL:"model",VENDOR:"vendor",TYPE:"type",CONSOLE:"console",MOBILE:"mobile",SMARTTV:"smarttv",TABLET:"tablet",WEARABLE:"wearable",EMBEDDED:"embedded"};g.ENGINE={NAME:"name",VERSION:"version"};g.OS={NAME:"name",VERSION:"version"};"undefined"!==typeof b?("undefined"!==typeof d&&d.exports&&(b=d.exports=g),b.UAParser=g):a&&(a.UAParser=g);var p=a&&(a.jQuery||a.Zepto);if("undefined"!==
|
||||
typeof p){var u=new g;p.ua=u.getResult();p.ua.get=function(){return u.getUA()};p.ua.set=function(a){u.setUA(a);a=u.getResult();for(var b in a)p.ua[b]=a[b]}}})("object"===typeof window?window:this)},{}]},{},[1])(1)});
|
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 264 KiB |
22
src/App.vue
Normal file
22
src/App.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<script setup lang="ts">
|
||||
import BJ_Casino_Deeplink from './components/BJ_Casino_Deeplink.vue';
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<BJ_Casino_Deeplink />
|
||||
</template>
|
||||
|
||||
<style>
|
||||
@import url('../src/assets/fonts.css');
|
||||
@import url('../src/assets/mystyle.css');
|
||||
|
||||
#app {
|
||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
/* text-align: center; */
|
||||
color: #2671d4;
|
||||
margin-top: 0px;
|
||||
font-family: 'Zen Maru Gothic', sans-serif;
|
||||
}
|
||||
</style>
|
13
src/assets/fonts.css
Normal file
13
src/assets/fonts.css
Normal file
@ -0,0 +1,13 @@
|
||||
@font-face {
|
||||
/* 重命名字体名 */
|
||||
font-family: 'Zen Maru Gothic';
|
||||
src: url('./fonts/ZenMaruGothic-Regular.ttf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.btn {
|
||||
font-size: 25px;
|
||||
/* width: 200px; */
|
||||
/* height: 60px; */
|
||||
}
|
BIN
src/assets/fonts/ZenMaruGothic-Regular.ttf
Normal file
BIN
src/assets/fonts/ZenMaruGothic-Regular.ttf
Normal file
Binary file not shown.
BIN
src/assets/icon.png
Normal file
BIN
src/assets/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 593 KiB |
BIN
src/assets/logo.png
Normal file
BIN
src/assets/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
62
src/assets/mystyle.css
Normal file
62
src/assets/mystyle.css
Normal file
@ -0,0 +1,62 @@
|
||||
/* The switch - the box around the slider */
|
||||
.switch {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 60px;
|
||||
height: 34px;
|
||||
}
|
||||
|
||||
/* Hide default HTML checkbox */
|
||||
.switch input {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/* The slider */
|
||||
.slider {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: #ccc;
|
||||
-webkit-transition: .4s;
|
||||
transition: .4s;
|
||||
}
|
||||
|
||||
.slider:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 26px;
|
||||
width: 26px;
|
||||
left: 4px;
|
||||
bottom: 4px;
|
||||
background-color: white;
|
||||
-webkit-transition: .4s;
|
||||
transition: .4s;
|
||||
}
|
||||
|
||||
input:checked + .slider {
|
||||
background-color: #2196F3;
|
||||
}
|
||||
|
||||
input:focus + .slider {
|
||||
box-shadow: 0 0 1px #2196F3;
|
||||
}
|
||||
|
||||
input:checked + .slider:before {
|
||||
-webkit-transform: translateX(26px);
|
||||
-ms-transform: translateX(26px);
|
||||
transform: translateX(26px);
|
||||
}
|
||||
|
||||
/* Rounded sliders */
|
||||
.slider.round {
|
||||
border-radius: 34px;
|
||||
}
|
||||
|
||||
.slider.round:before {
|
||||
border-radius: 50%;
|
||||
}
|
111
src/components/BJ_Casino_Deeplink.vue
Normal file
111
src/components/BJ_Casino_Deeplink.vue
Normal file
@ -0,0 +1,111 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from "vue";
|
||||
import { BJ_Casino_Deeplink } from "../script/BJ_Casino_Deeplink";
|
||||
|
||||
const servertypeDefault = ref('')
|
||||
const hostportDefault = ref('')
|
||||
const patchDefault = ref('')
|
||||
const servertype = ref(0)
|
||||
const hostport = ref(0)
|
||||
const patch = ref(0)
|
||||
const iscustom = ref(false)
|
||||
const input3 = ref('')
|
||||
const self = {
|
||||
servertypeDefault: servertypeDefault,
|
||||
hostportDefault: hostportDefault,
|
||||
patchDefault: patchDefault,
|
||||
servertype: servertype,
|
||||
hostport: hostport,
|
||||
patch: patch,
|
||||
iscustom: iscustom,
|
||||
}
|
||||
const Script = new BJ_Casino_Deeplink(self);
|
||||
const ServertypeData = Script.GetServerType();
|
||||
const HostportData = Script.GetHostport();
|
||||
const Patch = Script.GetPatch();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<h1>
|
||||
<div>
|
||||
servertype:
|
||||
<el-select v-model="servertypeDefault" filterable
|
||||
@change="(data: any) => { Script.SelectServertype(data) }">
|
||||
<el-option v-for="(item, index) in ServertypeData" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</div>
|
||||
<div>
|
||||
hostport:
|
||||
<el-select v-model="hostportDefault" filterable
|
||||
@change="(data: any) => { Script.SelectHostport(data) }">
|
||||
<el-option v-for="(item, index) in HostportData" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</div>
|
||||
<div>
|
||||
patch:
|
||||
<el-select v-model="patchDefault" filterable @change="(data: any) => { Script.SelectPatch(data) }">
|
||||
<el-option v-for="(item, index) in Patch" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</div>
|
||||
<div>
|
||||
使用自己帶進來的URL參數
|
||||
<label class="switch">
|
||||
<input type="checkbox" id="iscustom">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<el-button type="success" @click.native="() => { Script.OnclickOpen() }" size="large" round>開啟遊戲>>
|
||||
</el-button>
|
||||
<br>
|
||||
<el-button type="primary" @click.native="() => { Script.Install_Debug() }" size="large" round>
|
||||
安裝Debug>>
|
||||
</el-button>
|
||||
<br>
|
||||
<el-button type="primary" @click.native="() => { Script.Install_Release() }" size="large" round>
|
||||
安裝Release>></el-button>
|
||||
<br>
|
||||
<el-button type="primary" @click.native="() => { Script.Install_Release_Debug() }" size="large" round>
|
||||
安裝Release(可看log)>></el-button>
|
||||
<br>
|
||||
<el-button type="primary" @click.native="() => { Script.Install_B2B() }" size="large" round>安裝B2B>>
|
||||
</el-button>
|
||||
<br>
|
||||
<el-button type="primary" @click.native="() => { Script.Install_JM() }" size="large" round>安裝建喵版>>
|
||||
</el-button>
|
||||
<br>
|
||||
<el-button type="primary" @click.native="() => { Script.Install_Store() }" size="large" round>APP商店>>
|
||||
</el-button>
|
||||
<br>
|
||||
<el-button type="primary" @click.native="() => { Script.Install_Bowei() }" size="large" round>安裝柏威版>>
|
||||
</el-button>
|
||||
<div>
|
||||
<el-button type="warning" @click.native="() => { Script.Install_InternalTest(input3) }" size="large"
|
||||
round>
|
||||
前往
|
||||
</el-button>
|
||||
<el-input v-model="input3" placeholder="Google Play商店(內部測試) 版本號" class="input-with-select"
|
||||
style="width:25%; font-size:25px; text-align">
|
||||
</el-input>
|
||||
Google Play商店(內部測試) 版本號
|
||||
</div>
|
||||
<br>
|
||||
<a href="bjcasino://get/message?ClearAllCache">清空資料>></a>
|
||||
<br><br>
|
||||
<a href="bjcasino://get/message?GetOtherUserProfile=100000185">跟建喵做朋友>></a>
|
||||
<br><br>
|
||||
<a href="bjcasino://get/message?GetOtherUserProfile=100000157">跟豆豆做朋友>></a>
|
||||
<br><br>
|
||||
<a href="bjcasino://get/message?GetOtherUserProfile=100000148">跟柏威做朋友>></a>
|
||||
<br><br>
|
||||
<a href="bjcasino://get/message?OnClickChatAndChat=100000157">跟豆豆聊聊天>></a>
|
||||
<br><br>
|
||||
<a href="http://org.vicking.bj">Test>></a>
|
||||
<!-- http://220.134.195.1/public/bonus_casino/html5/jianmiau/SD_Casino_Deeplink/apple-app-site-association -->
|
||||
<br><br>
|
||||
</h1>
|
||||
</div>
|
||||
</template>
|
58
src/components/HelloWorld.vue
Normal file
58
src/components/HelloWorld.vue
Normal file
@ -0,0 +1,58 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from "vue";
|
||||
import { HelloWorld } from "../script/HelloWorld";
|
||||
|
||||
const self = {
|
||||
msg: ref('Hello Vue 3 + TypeScript'),
|
||||
count: ref(0),
|
||||
}
|
||||
const HW = new HelloWorld(self);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<h1>{{ self.msg.value }}</h1>
|
||||
<button @click="HW.HandleChangeString">handleChangeString</button>
|
||||
|
||||
<p>
|
||||
Recommended IDE setup:
|
||||
<a href="https://code.visualstudio.com/" target="_blank">VSCode</a>
|
||||
+
|
||||
<a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
See
|
||||
<code>README.md</code> for more information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a href="https://vitejs.dev/guide/features.html" target="_blank">Vite Docs</a>
|
||||
|
|
||||
<a href="https://v3.vuejs.org/" target="_blank">Vue 3 Docs</a>
|
||||
</p>
|
||||
count is: {{ self.count }}
|
||||
<br />
|
||||
<button type="button" @click="HW.AddCount">AddCount</button>
|
||||
<p>
|
||||
Edit
|
||||
<code>components/HelloWorld.vue</code> to test hot module replacement.
|
||||
</p>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
a {
|
||||
color: #42b983;
|
||||
}
|
||||
|
||||
label {
|
||||
margin: 0 0.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #eee;
|
||||
padding: 2px 4px;
|
||||
border-radius: 4px;
|
||||
color: #304455;
|
||||
}
|
||||
</style>
|
8
src/env.d.ts
vendored
Normal file
8
src/env.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/// <reference types="vite/client" />
|
||||
|
||||
declare module '*.vue' {
|
||||
import type { DefineComponent } from 'vue'
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
|
||||
const component: DefineComponent<{}, {}, any>
|
||||
export default component
|
||||
}
|
10
src/main.ts
Normal file
10
src/main.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import 'bootstrap';
|
||||
import 'bootstrap/dist/css/bootstrap.min.css';
|
||||
import ElementPlus from 'element-plus';
|
||||
import 'element-plus/dist/index.css';
|
||||
import locale from 'element-plus/lib/locale/lang/zh-tw';
|
||||
import { createApp } from 'vue';
|
||||
import App from './App.vue';
|
||||
|
||||
|
||||
createApp(App).use(ElementPlus, { locale }).mount('#app')
|
409
src/script/BJ_Casino_Deeplink.ts
Normal file
409
src/script/BJ_Casino_Deeplink.ts
Normal file
@ -0,0 +1,409 @@
|
||||
export class BJ_Casino_Deeplink {
|
||||
|
||||
//#region public
|
||||
|
||||
public Servertype: any[] = [5, ["不選擇版本", "Web", "Out", "Submit", "Internal_release", "Internal_Dev"]];
|
||||
public Hostport: any[] = [1, ["不選擇環境", "內版", "肉乾", "賴宏", "40", "送審", "外版", "testing1", "testing2", "testing3"]];
|
||||
public Patch: any[] = [1, [
|
||||
"不選擇資源路徑",
|
||||
"內版",
|
||||
"B2B",
|
||||
"送審",
|
||||
"外版",
|
||||
"alex",
|
||||
"bowei",
|
||||
"建喵-內版",
|
||||
"建喵-B2B",
|
||||
"建喵-送審",
|
||||
"建喵-外版"
|
||||
]];
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region private
|
||||
|
||||
private _client: any;
|
||||
|
||||
private _u = navigator.userAgent;
|
||||
private _isAndroid = this._u.indexOf('Android') > -1 || this._u.indexOf('Adr') > -1;
|
||||
private _isiOS = !!this._u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region Lifecycle
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor(client: any) {
|
||||
this._client = client;
|
||||
this.onLoad();
|
||||
}
|
||||
|
||||
public onLoad() {
|
||||
this._client.servertype.value = this.Servertype[0];
|
||||
this._client.hostport.value = this.Hostport[0];
|
||||
this._client.patch.value = this.Patch[0];
|
||||
this._client.servertypeDefault.value = this.Servertype[1][this._client.servertype.value];
|
||||
this._client.hostportDefault.value = this.Hostport[1][this._client.hostport.value];
|
||||
this._client.patchDefault.value = this.Patch[1][this._client.patch.value];
|
||||
};
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region Get Data
|
||||
|
||||
public SelectServertype(data: any) {
|
||||
// data为el-option上:value绑定的对象
|
||||
this._client.servertype.value = data;
|
||||
}
|
||||
|
||||
public SelectHostport(data: any) {
|
||||
// data为el-option上:value绑定的对象
|
||||
this._client.hostport.value = data;
|
||||
}
|
||||
|
||||
public SelectPatch(data: any) {
|
||||
// data为el-option上:value绑定的对象
|
||||
this._client.patch.value = data;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region Get Data
|
||||
|
||||
public GetServerType(): { key: string; value: string; label: string; }[] {
|
||||
const servertypes: any[] = this.Servertype[1];
|
||||
let options: any[] = [];
|
||||
for (let i: number = 0; i < servertypes.length; i++) {
|
||||
const servertype = servertypes[i];
|
||||
options.push({
|
||||
value: i,
|
||||
label: servertype
|
||||
});
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
public GetHostport(): { key: string; value: string; label: string; }[] {
|
||||
const hostports: any[] = this.Hostport[1];
|
||||
let options: any[] = [];
|
||||
for (let i: number = 0; i < hostports.length; i++) {
|
||||
const hostport = hostports[i];
|
||||
options.push({
|
||||
value: i,
|
||||
label: hostport
|
||||
});
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
public GetPatch(): { key: string; value: string; label: string; }[] {
|
||||
const patchs: any[] = this.Patch[1];
|
||||
let options: any[] = [];
|
||||
for (let i: number = 0; i < patchs.length; i++) {
|
||||
const patch = patchs[i];
|
||||
options.push({
|
||||
value: i,
|
||||
label: patch
|
||||
});
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region Custom
|
||||
|
||||
public Install_Debug() {
|
||||
if (this._isAndroid) {
|
||||
window.open("https://dl.dropboxusercontent.com/s/aoh4p9vs1lrofy2/BJ_Casino-debug.apk?v=" + Date.now(), '_self');
|
||||
} else if (this._isiOS) {
|
||||
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/z390yysswqiiii4/BJ_Casino-debug.plist", '_self');
|
||||
} else {
|
||||
window.open("https://dl.dropboxusercontent.com/s/aoh4p9vs1lrofy2/BJ_Casino-debug.apk?v=" + Date.now(), '_blank');
|
||||
window.open("https://dl.dropboxusercontent.com/s/4ki0rglk4w01ian/BJ_Casino-debug.ipa", '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public Install_Release() {
|
||||
if (this._isAndroid) {
|
||||
window.open("https://dl.dropboxusercontent.com/s/6mjrw913u6ma5w8/BJ_Casino-release.apk?v=" + Date.now(), '_self');
|
||||
} else if (this._isiOS) {
|
||||
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/9qckj6t66jgb6rw/BJ_Casino-release.plist", '_self');
|
||||
} else {
|
||||
window.open("https://dl.dropboxusercontent.com/s/6mjrw913u6ma5w8/BJ_Casino-release.apk?v=" + Date.now(), '_blank');
|
||||
window.open("https://dl.dropboxusercontent.com/s/hyyswyun3m42qbk/BJ_Casino-release.ipa?v=" + Date.now(), '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public Install_Release_Debug() {
|
||||
if (this._isAndroid) {
|
||||
window.open("https://dl.dropboxusercontent.com/s/16m2b5sncymj6f9/BJ_Casino-release-debug.apk?v=" + Date.now(), '_self');
|
||||
} else if (this._isiOS) {
|
||||
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/wixnsxbc7ctk87f/BJ_Casino-release-debug.plist", '_self');
|
||||
} else {
|
||||
window.open("https://dl.dropboxusercontent.com/s/16m2b5sncymj6f9/BJ_Casino-release-debug.apk?v=" + Date.now(), '_blank');
|
||||
window.open("https://dl.dropboxusercontent.com/s/f6qjm1gk8jjvmhx/BJ_Casino-release-debug.ipa?v=" + Date.now(), '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public Install_B2B() {
|
||||
if (this._isAndroid) {
|
||||
window.open("https://dl.dropboxusercontent.com/s/g66xrcdfj9e093i/BJ_Casino-B2B.apk?v=" + Date.now(), '_self');
|
||||
} else if (this._isiOS) {
|
||||
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/rrs1ev3llogrm0a/BJ_Casino-B2B.plist", '_self');
|
||||
} else {
|
||||
window.open("https://dl.dropboxusercontent.com/s/g66xrcdfj9e093i/BJ_Casino-B2B.apk?v=" + Date.now(), '_blank');
|
||||
window.open("https://dl.dropboxusercontent.com/s/fm79uc9ygrnzone/BJ_Casino-B2B.ipa?v=" + Date.now(), '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public Install_JM() {
|
||||
if (this._isAndroid) {
|
||||
window.open("https://dl.dropboxusercontent.com/s/9zlj6og4octmim8/BJ_Casino-JM.apk?v=" + Date.now(), '_self');
|
||||
} else if (this._isiOS) {
|
||||
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/23mx7l7cchbvjcv/BJ_Casino-JM.plist", '_self');
|
||||
} else {
|
||||
window.open("https://dl.dropboxusercontent.com/s/9zlj6og4octmim8/BJ_Casino-JM.apk?v=" + Date.now(), '_blank');
|
||||
window.open("https://dl.dropboxusercontent.com/s/dwlil2rbfe1wi13/BJ_Casino-JM.ipa?v=" + Date.now(), '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public Install_Store() {
|
||||
if (this._isAndroid) {
|
||||
window.open("https://play.google.com/store/apps/details?id=org.vicking.bj_casino", '_self');
|
||||
} else if (this._isiOS) {
|
||||
window.open("https://apps.apple.com/tw/app/爆機娛樂城/id1593328573", '_self');
|
||||
} else {
|
||||
window.open("https://play.google.com/store/apps/details?id=org.vicking.bj_casino", '_blank');
|
||||
window.open("https://apps.apple.com/tw/app/爆機娛樂城/id1593328573", '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public Install_Bowei() {
|
||||
if (this._isAndroid) {
|
||||
window.open("http://220.134.195.1/public/bonus_casino/html5/bowei/BJ_Casino-debug.apk?v=" + Date.now(), '_self');
|
||||
} else if (this._isiOS) {
|
||||
alert("iOS不提供");
|
||||
} else {
|
||||
window.open("http://220.134.195.1/public/bonus_casino/html5/bowei/BJ_Casino-debug.apk?v=" + Date.now(), '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public Install_InternalTest(InternalTest: number): void {
|
||||
// let InternalTest = document.getElementById("InternalTest").value;
|
||||
// let InternalTest = "";
|
||||
if (this._isAndroid && InternalTest) {
|
||||
window.open(`https://play.google.com/apps/test/org.vicking.bj_casino/${InternalTest}`, '_self');
|
||||
} else if (this._isiOS) {
|
||||
alert("iOS不提供");
|
||||
} else {
|
||||
window.open(`https://play.google.com/apps/test/org.vicking.bj_casino/${InternalTest}`, '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
public OnclickOpen() {
|
||||
let hostport = this._client.hostport.value;
|
||||
let servertype = +this._client.servertype.value;
|
||||
let patch = +this._client.patch.value;
|
||||
let E_iscustom: any = document.getElementById("iscustom");
|
||||
let iscustom = E_iscustom.checked;
|
||||
let URLscheme: any = {};
|
||||
|
||||
switch (servertype) {
|
||||
case 0: {
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
URLscheme["servertype"] = servertype;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (hostport) {
|
||||
|
||||
// 不選擇環境
|
||||
case 0: {
|
||||
break;
|
||||
}
|
||||
|
||||
// 外網連內版
|
||||
case 1: {
|
||||
URLscheme["host"] = "http://220.134.195.1";
|
||||
URLscheme["port"] = "19005";
|
||||
break;
|
||||
}
|
||||
|
||||
// 肉乾
|
||||
case 2: {
|
||||
URLscheme["host"] = "http://192.168.5.230";
|
||||
URLscheme["port"] = "9006";
|
||||
break;
|
||||
}
|
||||
|
||||
// 賴宏
|
||||
case 3: {
|
||||
URLscheme["host"] = "http://192.168.5.134";
|
||||
URLscheme["port"] = "9005";
|
||||
break;
|
||||
}
|
||||
|
||||
// 40
|
||||
case 4: {
|
||||
URLscheme["host"] = "http://192.168.5.12";
|
||||
URLscheme["port"] = "9487";
|
||||
break;
|
||||
}
|
||||
|
||||
// 送審
|
||||
case 5: {
|
||||
URLscheme["host"] = "https://submit.online-bj.com";
|
||||
URLscheme["port"] = "9005";
|
||||
break;
|
||||
}
|
||||
|
||||
// 外版
|
||||
case 6: {
|
||||
URLscheme["host"] = "https://game.online-bj.com";
|
||||
URLscheme["port"] = "9005";
|
||||
break;
|
||||
}
|
||||
|
||||
// testing1
|
||||
case 7: {
|
||||
URLscheme["host"] = "http://bj-testing1.casino.catan.com.tw";
|
||||
URLscheme["port"] = "9005";
|
||||
break;
|
||||
}
|
||||
|
||||
// testing2
|
||||
case 8: {
|
||||
URLscheme["host"] = "http://bj-testing2.casino.catan.com.tw";
|
||||
URLscheme["port"] = "9005";
|
||||
break;
|
||||
}
|
||||
|
||||
// testing3
|
||||
case 9: {
|
||||
URLscheme["host"] = "http://bj-testing3.casino.catan.com.tw";
|
||||
URLscheme["port"] = "9005";
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (patch) {
|
||||
// "https://patch.online-bj.com/game/",
|
||||
// "https://patch-submit.online-bj.com/game/",
|
||||
// "http://220.134.195.1/public/bonus_casino/html5/alex/APPBundleTest/",
|
||||
// "http://220.134.195.1/public/bonus_casino/html5/jianmiau/Bundle/",
|
||||
// "http://patch-release.online-bj.com/",
|
||||
// "http://patch-dev.online-bj.com/",
|
||||
|
||||
case 0: {
|
||||
break;
|
||||
}
|
||||
|
||||
// Dev
|
||||
case 1: {
|
||||
URLscheme["patch"] = "http://patch-dev.online-bj.com/";
|
||||
break;
|
||||
}
|
||||
|
||||
// B2B
|
||||
case 2: {
|
||||
URLscheme["patch"] = "http://patch-release.online-bj.com/";
|
||||
break;
|
||||
}
|
||||
|
||||
// 送審
|
||||
case 3: {
|
||||
URLscheme["patch"] = "https://patch-submit.online-bj.com/game/";
|
||||
break;
|
||||
}
|
||||
|
||||
// 外版
|
||||
case 4: {
|
||||
URLscheme["patch"] = "https://patch.online-bj.com/game/";
|
||||
break;
|
||||
}
|
||||
|
||||
// alex
|
||||
case 5: {
|
||||
URLscheme["patch"] = "http://220.134.195.1/public/bonus_casino/html5/alex/Bundle/";
|
||||
break;
|
||||
}
|
||||
|
||||
// bowei
|
||||
case 6: {
|
||||
URLscheme["patch"] = "http://220.134.195.1/public/bonus_casino/html5/bowei/Bundle/";
|
||||
break;
|
||||
}
|
||||
|
||||
// jianmiau-Dev
|
||||
case 7: {
|
||||
// URLscheme["patch"] = "http://220.134.195.1/public/bonus_casino/html5/jianmiau/Bundle/";
|
||||
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Internal-Dev/";
|
||||
break;
|
||||
}
|
||||
|
||||
// jianmiau-Release
|
||||
case 8: {
|
||||
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Internal-Release/";
|
||||
break;
|
||||
}
|
||||
|
||||
// jianmiau-Submit
|
||||
case 9: {
|
||||
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Submit/";
|
||||
break;
|
||||
}
|
||||
|
||||
// jianmiau-Out
|
||||
case 10: {
|
||||
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Out/";
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
// case 0: {
|
||||
// break;
|
||||
// }
|
||||
// default: {
|
||||
// URLscheme["patch"] = document.getElementById("patch").options[patch].label;
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
|
||||
let url = "";
|
||||
if (iscustom) {
|
||||
let URLscheme = new URL(location.href);
|
||||
if (this._isiOS || this._isAndroid) {
|
||||
url = `bjcasino://get/message${URLscheme.search}`;
|
||||
} else {
|
||||
url = `http://192.168.5.108:7456/phone.html${URLscheme.search}`;
|
||||
}
|
||||
} else {
|
||||
let _URLSearchParams = new URLSearchParams(URLscheme).toString();
|
||||
let _decodeURI = decodeURIComponent(_URLSearchParams);
|
||||
if (this._isiOS || this._isAndroid) {
|
||||
url = `bjcasino://get/message${_decodeURI ? `?${_decodeURI}` : ""}`;
|
||||
} else {
|
||||
url = `http://192.168.5.108:7456/phone.html${_decodeURI ? `?${_decodeURI}` : ""}`;
|
||||
}
|
||||
}
|
||||
if (this._isiOS || this._isAndroid) {
|
||||
window.open(url, '_self');
|
||||
} else {
|
||||
window.open(url, '_blank');
|
||||
}
|
||||
}
|
||||
|
||||
//#endregion
|
||||
}
|
28
src/script/HelloWorld.ts
Normal file
28
src/script/HelloWorld.ts
Normal file
@ -0,0 +1,28 @@
|
||||
|
||||
export class HelloWorld {
|
||||
|
||||
//#region private
|
||||
|
||||
private _client: any;
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region Lifecycle
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
constructor(client: any) {
|
||||
this._client = client;
|
||||
}
|
||||
|
||||
public HandleChangeString() {
|
||||
this._client.msg.value = "ChangeString HelloWorld";
|
||||
}
|
||||
|
||||
public AddCount() {
|
||||
this._client.count.value++;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
}
|
28
tsconfig.json
Normal file
28
tsconfig.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "esnext",
|
||||
"useDefineForClassFields": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"strict": true,
|
||||
"jsx": "preserve",
|
||||
"sourceMap": true,
|
||||
"resolveJsonModule": true,
|
||||
"esModuleInterop": true,
|
||||
"lib": [
|
||||
"esnext",
|
||||
"dom"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"src/**/*.d.ts",
|
||||
"src/**/*.tsx",
|
||||
"src/**/*.vue"
|
||||
],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.node.json"
|
||||
}
|
||||
]
|
||||
}
|
8
tsconfig.node.json
Normal file
8
tsconfig.node.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node"
|
||||
},
|
||||
"include": ["vite.config.ts"]
|
||||
}
|
8
vite.config.ts
Normal file
8
vite.config.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import { defineConfig } from 'vite'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
base: "./",
|
||||
plugins: [vue(),]
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user