开源大赛-2024年版

This commit is contained in:
caishi 2024-05-06 17:18:37 +08:00
parent 0d8290ff0c
commit 019d1516fc
1913 changed files with 1032 additions and 135917 deletions

88
.gitignore vendored
View File

@ -1,88 +0,0 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Ignore master key for decrypting credentials and more.
/config/master.key
/config/database.yml
/.idea/*
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
#DynamoDB Local files
.dynamodb/
.DS_Store
.idea/*

View File

@ -1,33 +0,0 @@
kind: pipeline
type: docker
name: ssss
platform:
os: linux
arch: amd64
steps:
- name: 编译构建
image: gcc
commands:
- ./configure
- make
# 需要将软件包与部署脚本提前上传到远程主机(见文件上传模板)
# host、username、password可在参数管理中配置
- name: 远程主机部署
image: appleboy/drone-ssh
settings:
host:
from_secret: ip
username:
from_secret: name
password:
from_secret: pwd
port: 22
script:
- chmod +x /home/deploy.sh
- ./home/deploy.sh
trigger:
branch:
- dev_chain
event:
- push

83
156.eb64d779.async.js Normal file

File diff suppressed because one or more lines are too long

14
529.4ff67a66.async.js Normal file

File diff suppressed because one or more lines are too long

1
535.394acf76.chunk.css Normal file

File diff suppressed because one or more lines are too long

613
535.d758f287.async.js Normal file

File diff suppressed because one or more lines are too long

1
678.7f2b9763.async.js Normal file

File diff suppressed because one or more lines are too long

1
769.c877dddb.async.js Normal file

File diff suppressed because one or more lines are too long

40
860.caf91381.async.js Normal file

File diff suppressed because one or more lines are too long

1
908.cced280d.async.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,607 +0,0 @@
{
"./static/js/0.84a32162.chunk.js": "/build/./static/js/0.84a32162.chunk.js",
"./static/js/1.4fffb0ad.chunk.js": "/build/./static/js/1.4fffb0ad.chunk.js",
"./static/js/2.557613ce.chunk.js": "/build/./static/js/2.557613ce.chunk.js",
"./static/js/3.ec3d0b8a.chunk.js": "/build/./static/js/3.ec3d0b8a.chunk.js",
"./static/js/4.92b91d81.chunk.js": "/build/./static/js/4.92b91d81.chunk.js",
"./static/js/5.e56235dc.chunk.js": "/build/./static/js/5.e56235dc.chunk.js",
"./static/js/6.2f68a414.chunk.js": "/build/./static/js/6.2f68a414.chunk.js",
"static/css/7.ca8c75a4.chunk.css": "/build/static/css/7.ca8c75a4.chunk.css",
"./static/js/7.ede75b8b.chunk.js": "/build/./static/js/7.ede75b8b.chunk.js",
"./static/js/8.a15f013a.chunk.js": "/build/./static/js/8.a15f013a.chunk.js",
"./static/js/9.fa9807ef.chunk.js": "/build/./static/js/9.fa9807ef.chunk.js",
"./static/js/10.e0a1c8da.chunk.js": "/build/./static/js/10.e0a1c8da.chunk.js",
"./static/js/11.9245f5ed.chunk.js": "/build/./static/js/11.9245f5ed.chunk.js",
"static/css/12.b8e94d0d.chunk.css": "/build/static/css/12.b8e94d0d.chunk.css",
"./static/js/12.aafbde04.chunk.js": "/build/./static/js/12.aafbde04.chunk.js",
"static/css/13.3634cedd.chunk.css": "/build/static/css/13.3634cedd.chunk.css",
"./static/js/13.b1ecf298.chunk.js": "/build/./static/js/13.b1ecf298.chunk.js",
"./static/js/14.a637200b.chunk.js": "/build/./static/js/14.a637200b.chunk.js",
"./static/js/15.9ac4780e.chunk.js": "/build/./static/js/15.9ac4780e.chunk.js",
"static/css/16.36c57776.chunk.css": "/build/static/css/16.36c57776.chunk.css",
"./static/js/16.3484dc47.chunk.js": "/build/./static/js/16.3484dc47.chunk.js",
"./static/js/17.443adb99.chunk.js": "/build/./static/js/17.443adb99.chunk.js",
"static/css/18.f7228588.chunk.css": "/build/static/css/18.f7228588.chunk.css",
"./static/js/18.b1a95570.chunk.js": "/build/./static/js/18.b1a95570.chunk.js",
"static/css/19.ed628a8f.chunk.css": "/build/static/css/19.ed628a8f.chunk.css",
"./static/js/19.38cdd983.chunk.js": "/build/./static/js/19.38cdd983.chunk.js",
"static/css/20.b369ea46.chunk.css": "/build/static/css/20.b369ea46.chunk.css",
"./static/js/20.d0df8ef8.chunk.js": "/build/./static/js/20.d0df8ef8.chunk.js",
"./static/js/21.c27b77ed.chunk.js": "/build/./static/js/21.c27b77ed.chunk.js",
"static/css/22.e5c75834.chunk.css": "/build/static/css/22.e5c75834.chunk.css",
"./static/js/22.05bf342f.chunk.js": "/build/./static/js/22.05bf342f.chunk.js",
"./static/js/23.0d819544.chunk.js": "/build/./static/js/23.0d819544.chunk.js",
"./static/js/24.6be29025.chunk.js": "/build/./static/js/24.6be29025.chunk.js",
"static/css/25.b429c53f.chunk.css": "/build/static/css/25.b429c53f.chunk.css",
"./static/js/25.0ace860d.chunk.js": "/build/./static/js/25.0ace860d.chunk.js",
"./static/js/26.ceb11205.chunk.js": "/build/./static/js/26.ceb11205.chunk.js",
"./static/js/27.f0fd768f.chunk.js": "/build/./static/js/27.f0fd768f.chunk.js",
"./static/js/28.b543bca8.chunk.js": "/build/./static/js/28.b543bca8.chunk.js",
"./static/js/29.4c8eb963.chunk.js": "/build/./static/js/29.4c8eb963.chunk.js",
"./static/js/30.bedafd3c.chunk.js": "/build/./static/js/30.bedafd3c.chunk.js",
"static/css/31.bc037916.chunk.css": "/build/static/css/31.bc037916.chunk.css",
"./static/js/31.36586b2a.chunk.js": "/build/./static/js/31.36586b2a.chunk.js",
"./static/js/32.6fbdeff7.chunk.js": "/build/./static/js/32.6fbdeff7.chunk.js",
"static/css/33.c885231e.chunk.css": "/build/static/css/33.c885231e.chunk.css",
"./static/js/33.172e761a.chunk.js": "/build/./static/js/33.172e761a.chunk.js",
"static/css/34.91f8c9f4.chunk.css": "/build/static/css/34.91f8c9f4.chunk.css",
"./static/js/34.9d004750.chunk.js": "/build/./static/js/34.9d004750.chunk.js",
"static/css/35.462d47ca.chunk.css": "/build/static/css/35.462d47ca.chunk.css",
"./static/js/35.70d1eae5.chunk.js": "/build/./static/js/35.70d1eae5.chunk.js",
"./static/js/36.2285ed12.chunk.js": "/build/./static/js/36.2285ed12.chunk.js",
"static/css/37.cf9fc21d.chunk.css": "/build/static/css/37.cf9fc21d.chunk.css",
"./static/js/37.4516966b.chunk.js": "/build/./static/js/37.4516966b.chunk.js",
"static/css/38.2839b078.chunk.css": "/build/static/css/38.2839b078.chunk.css",
"./static/js/38.d93a770b.chunk.js": "/build/./static/js/38.d93a770b.chunk.js",
"static/css/39.4f38187d.chunk.css": "/build/static/css/39.4f38187d.chunk.css",
"./static/js/39.d3d09284.chunk.js": "/build/./static/js/39.d3d09284.chunk.js",
"static/css/40.a34c4366.chunk.css": "/build/static/css/40.a34c4366.chunk.css",
"./static/js/40.dd19e4ae.chunk.js": "/build/./static/js/40.dd19e4ae.chunk.js",
"static/css/41.2312d6cd.chunk.css": "/build/static/css/41.2312d6cd.chunk.css",
"./static/js/41.774262fc.chunk.js": "/build/./static/js/41.774262fc.chunk.js",
"static/css/42.daebe093.chunk.css": "/build/static/css/42.daebe093.chunk.css",
"./static/js/42.a928ac4c.chunk.js": "/build/./static/js/42.a928ac4c.chunk.js",
"./static/js/43.7c664a90.chunk.js": "/build/./static/js/43.7c664a90.chunk.js",
"static/css/44.57f61ec4.chunk.css": "/build/static/css/44.57f61ec4.chunk.css",
"./static/js/44.f6e98158.chunk.js": "/build/./static/js/44.f6e98158.chunk.js",
"static/css/45.b4a12036.chunk.css": "/build/static/css/45.b4a12036.chunk.css",
"./static/js/45.02283a3c.chunk.js": "/build/./static/js/45.02283a3c.chunk.js",
"static/css/46.f14403bb.chunk.css": "/build/static/css/46.f14403bb.chunk.css",
"./static/js/46.65563171.chunk.js": "/build/./static/js/46.65563171.chunk.js",
"static/css/47.c87fcf8a.chunk.css": "/build/static/css/47.c87fcf8a.chunk.css",
"./static/js/47.6b5142e5.chunk.js": "/build/./static/js/47.6b5142e5.chunk.js",
"static/css/48.594c5341.chunk.css": "/build/static/css/48.594c5341.chunk.css",
"./static/js/48.ce1c292c.chunk.js": "/build/./static/js/48.ce1c292c.chunk.js",
"static/css/49.78a1ba5d.chunk.css": "/build/static/css/49.78a1ba5d.chunk.css",
"./static/js/49.e0587cd5.chunk.js": "/build/./static/js/49.e0587cd5.chunk.js",
"static/css/50.aa1aedbe.chunk.css": "/build/static/css/50.aa1aedbe.chunk.css",
"./static/js/50.bb2ef122.chunk.js": "/build/./static/js/50.bb2ef122.chunk.js",
"static/css/51.3f716ced.chunk.css": "/build/static/css/51.3f716ced.chunk.css",
"./static/js/51.94e7724d.chunk.js": "/build/./static/js/51.94e7724d.chunk.js",
"static/css/52.3720ca68.chunk.css": "/build/static/css/52.3720ca68.chunk.css",
"./static/js/52.1cd5d532.chunk.js": "/build/./static/js/52.1cd5d532.chunk.js",
"static/css/53.4544e3c5.chunk.css": "/build/static/css/53.4544e3c5.chunk.css",
"./static/js/53.e8ee9f61.chunk.js": "/build/./static/js/53.e8ee9f61.chunk.js",
"static/css/54.1689373f.chunk.css": "/build/static/css/54.1689373f.chunk.css",
"./static/js/54.7bce5148.chunk.js": "/build/./static/js/54.7bce5148.chunk.js",
"static/css/55.1689373f.chunk.css": "/build/static/css/55.1689373f.chunk.css",
"./static/js/55.74bb51b5.chunk.js": "/build/./static/js/55.74bb51b5.chunk.js",
"static/css/56.10255b2a.chunk.css": "/build/static/css/56.10255b2a.chunk.css",
"./static/js/56.3dbf8fe3.chunk.js": "/build/./static/js/56.3dbf8fe3.chunk.js",
"static/css/57.10255b2a.chunk.css": "/build/static/css/57.10255b2a.chunk.css",
"./static/js/57.d2d63b0d.chunk.js": "/build/./static/js/57.d2d63b0d.chunk.js",
"static/css/58.ec3b9a0c.chunk.css": "/build/static/css/58.ec3b9a0c.chunk.css",
"./static/js/58.88f27d13.chunk.js": "/build/./static/js/58.88f27d13.chunk.js",
"static/css/59.77c696ba.chunk.css": "/build/static/css/59.77c696ba.chunk.css",
"./static/js/59.ea1635c9.chunk.js": "/build/./static/js/59.ea1635c9.chunk.js",
"./static/js/60.293e3852.chunk.js": "/build/./static/js/60.293e3852.chunk.js",
"static/css/61.21590e13.chunk.css": "/build/static/css/61.21590e13.chunk.css",
"./static/js/61.82c8e711.chunk.js": "/build/./static/js/61.82c8e711.chunk.js",
"static/css/62.f8577cd6.chunk.css": "/build/static/css/62.f8577cd6.chunk.css",
"./static/js/62.a4092a85.chunk.js": "/build/./static/js/62.a4092a85.chunk.js",
"static/css/63.86dd1e31.chunk.css": "/build/static/css/63.86dd1e31.chunk.css",
"./static/js/63.c508f1d6.chunk.js": "/build/./static/js/63.c508f1d6.chunk.js",
"static/css/64.f8ce57b7.chunk.css": "/build/static/css/64.f8ce57b7.chunk.css",
"./static/js/64.ede24cc4.chunk.js": "/build/./static/js/64.ede24cc4.chunk.js",
"static/css/65.06715037.chunk.css": "/build/static/css/65.06715037.chunk.css",
"./static/js/65.d7b3cf76.chunk.js": "/build/./static/js/65.d7b3cf76.chunk.js",
"static/css/66.deeb1b7c.chunk.css": "/build/static/css/66.deeb1b7c.chunk.css",
"./static/js/66.3e30971f.chunk.js": "/build/./static/js/66.3e30971f.chunk.js",
"static/css/67.72b1c501.chunk.css": "/build/static/css/67.72b1c501.chunk.css",
"./static/js/67.2c7f44d6.chunk.js": "/build/./static/js/67.2c7f44d6.chunk.js",
"static/css/68.6b9ba3cb.chunk.css": "/build/static/css/68.6b9ba3cb.chunk.css",
"./static/js/68.f243f03d.chunk.js": "/build/./static/js/68.f243f03d.chunk.js",
"static/css/69.8dd8260d.chunk.css": "/build/static/css/69.8dd8260d.chunk.css",
"./static/js/69.65a7a16c.chunk.js": "/build/./static/js/69.65a7a16c.chunk.js",
"./static/js/70.9fe954b9.chunk.js": "/build/./static/js/70.9fe954b9.chunk.js",
"./static/js/71.3b2374ed.chunk.js": "/build/./static/js/71.3b2374ed.chunk.js",
"static/css/72.e34edd4c.chunk.css": "/build/static/css/72.e34edd4c.chunk.css",
"./static/js/72.881f2d37.chunk.js": "/build/./static/js/72.881f2d37.chunk.js",
"static/css/73.daebe093.chunk.css": "/build/static/css/73.daebe093.chunk.css",
"./static/js/73.cd0b3742.chunk.js": "/build/./static/js/73.cd0b3742.chunk.js",
"./static/js/74.2fa01ba6.chunk.js": "/build/./static/js/74.2fa01ba6.chunk.js",
"static/css/75.9aa1849e.chunk.css": "/build/static/css/75.9aa1849e.chunk.css",
"./static/js/75.6e6bc06b.chunk.js": "/build/./static/js/75.6e6bc06b.chunk.js",
"static/css/76.cb568edc.chunk.css": "/build/static/css/76.cb568edc.chunk.css",
"./static/js/76.49c32c89.chunk.js": "/build/./static/js/76.49c32c89.chunk.js",
"./static/js/77.680e1c07.chunk.js": "/build/./static/js/77.680e1c07.chunk.js",
"./static/js/78.bec7a013.chunk.js": "/build/./static/js/78.bec7a013.chunk.js",
"static/css/79.520a4f34.chunk.css": "/build/static/css/79.520a4f34.chunk.css",
"./static/js/79.5a5cc25d.chunk.js": "/build/./static/js/79.5a5cc25d.chunk.js",
"./static/js/80.ac578db9.chunk.js": "/build/./static/js/80.ac578db9.chunk.js",
"static/css/81.daebe093.chunk.css": "/build/static/css/81.daebe093.chunk.css",
"./static/js/81.05ff896a.chunk.js": "/build/./static/js/81.05ff896a.chunk.js",
"./static/js/82.5351faae.chunk.js": "/build/./static/js/82.5351faae.chunk.js",
"static/css/83.18de873b.chunk.css": "/build/static/css/83.18de873b.chunk.css",
"./static/js/83.6bd70cb5.chunk.js": "/build/./static/js/83.6bd70cb5.chunk.js",
"./static/js/84.84caeccc.chunk.js": "/build/./static/js/84.84caeccc.chunk.js",
"static/css/85.f6308980.chunk.css": "/build/static/css/85.f6308980.chunk.css",
"./static/js/85.608fc360.chunk.js": "/build/./static/js/85.608fc360.chunk.js",
"static/css/86.f58774d5.chunk.css": "/build/static/css/86.f58774d5.chunk.css",
"./static/js/86.01c6ed27.chunk.js": "/build/./static/js/86.01c6ed27.chunk.js",
"static/css/87.2c6a4087.chunk.css": "/build/static/css/87.2c6a4087.chunk.css",
"./static/js/87.d34c1e8e.chunk.js": "/build/./static/js/87.d34c1e8e.chunk.js",
"./static/js/88.6610a21d.chunk.js": "/build/./static/js/88.6610a21d.chunk.js",
"static/css/89.163f59d9.chunk.css": "/build/static/css/89.163f59d9.chunk.css",
"./static/js/89.0437bddd.chunk.js": "/build/./static/js/89.0437bddd.chunk.js",
"static/css/90.632d7855.chunk.css": "/build/static/css/90.632d7855.chunk.css",
"./static/js/90.3a1c1cc1.chunk.js": "/build/./static/js/90.3a1c1cc1.chunk.js",
"static/css/91.82721c38.chunk.css": "/build/static/css/91.82721c38.chunk.css",
"./static/js/91.4d89d314.chunk.js": "/build/./static/js/91.4d89d314.chunk.js",
"static/css/92.163f59d9.chunk.css": "/build/static/css/92.163f59d9.chunk.css",
"./static/js/92.70698c25.chunk.js": "/build/./static/js/92.70698c25.chunk.js",
"static/css/93.3aeea5e9.chunk.css": "/build/static/css/93.3aeea5e9.chunk.css",
"./static/js/93.88f6877f.chunk.js": "/build/./static/js/93.88f6877f.chunk.js",
"./static/js/94.48ce348c.chunk.js": "/build/./static/js/94.48ce348c.chunk.js",
"static/css/95.6c04c9a8.chunk.css": "/build/static/css/95.6c04c9a8.chunk.css",
"./static/js/95.08b8f50b.chunk.js": "/build/./static/js/95.08b8f50b.chunk.js",
"static/css/96.adba6539.chunk.css": "/build/static/css/96.adba6539.chunk.css",
"./static/js/96.8c4f09ba.chunk.js": "/build/./static/js/96.8c4f09ba.chunk.js",
"static/css/97.a403065b.chunk.css": "/build/static/css/97.a403065b.chunk.css",
"./static/js/97.978190c1.chunk.js": "/build/./static/js/97.978190c1.chunk.js",
"static/css/98.11a04942.chunk.css": "/build/static/css/98.11a04942.chunk.css",
"./static/js/98.4147d385.chunk.js": "/build/./static/js/98.4147d385.chunk.js",
"static/css/99.541803c4.chunk.css": "/build/static/css/99.541803c4.chunk.css",
"./static/js/99.89288be1.chunk.js": "/build/./static/js/99.89288be1.chunk.js",
"static/css/100.d788cda5.chunk.css": "/build/static/css/100.d788cda5.chunk.css",
"./static/js/100.88a2a552.chunk.js": "/build/./static/js/100.88a2a552.chunk.js",
"static/css/101.41b8aabd.chunk.css": "/build/static/css/101.41b8aabd.chunk.css",
"./static/js/101.8fc5d397.chunk.js": "/build/./static/js/101.8fc5d397.chunk.js",
"./static/js/102.7a1110de.chunk.js": "/build/./static/js/102.7a1110de.chunk.js",
"./static/js/103.3902f083.chunk.js": "/build/./static/js/103.3902f083.chunk.js",
"static/css/104.fd76673e.chunk.css": "/build/static/css/104.fd76673e.chunk.css",
"./static/js/104.288c0c0e.chunk.js": "/build/./static/js/104.288c0c0e.chunk.js",
"static/css/105.2370fbe9.chunk.css": "/build/static/css/105.2370fbe9.chunk.css",
"./static/js/105.8aef3efb.chunk.js": "/build/./static/js/105.8aef3efb.chunk.js",
"static/css/106.9aa1849e.chunk.css": "/build/static/css/106.9aa1849e.chunk.css",
"./static/js/106.2d5e8a1e.chunk.js": "/build/./static/js/106.2d5e8a1e.chunk.js",
"./static/js/107.02a6f635.chunk.js": "/build/./static/js/107.02a6f635.chunk.js",
"static/css/108.610bb31e.chunk.css": "/build/static/css/108.610bb31e.chunk.css",
"./static/js/108.3446a228.chunk.js": "/build/./static/js/108.3446a228.chunk.js",
"static/css/109.ea97577b.chunk.css": "/build/static/css/109.ea97577b.chunk.css",
"./static/js/109.5167ae28.chunk.js": "/build/./static/js/109.5167ae28.chunk.js",
"static/css/110.c81bc07b.chunk.css": "/build/static/css/110.c81bc07b.chunk.css",
"./static/js/110.b5ac119f.chunk.js": "/build/./static/js/110.b5ac119f.chunk.js",
"static/css/111.426c2166.chunk.css": "/build/static/css/111.426c2166.chunk.css",
"./static/js/111.70599d77.chunk.js": "/build/./static/js/111.70599d77.chunk.js",
"./static/js/112.9b3218a2.chunk.js": "/build/./static/js/112.9b3218a2.chunk.js",
"./static/js/113.1fe18ffb.chunk.js": "/build/./static/js/113.1fe18ffb.chunk.js",
"static/css/114.9474d52b.chunk.css": "/build/static/css/114.9474d52b.chunk.css",
"./static/js/114.405be1c6.chunk.js": "/build/./static/js/114.405be1c6.chunk.js",
"./static/js/115.c3e24206.chunk.js": "/build/./static/js/115.c3e24206.chunk.js",
"static/css/116.3ce18db9.chunk.css": "/build/static/css/116.3ce18db9.chunk.css",
"./static/js/116.ef20fdf6.chunk.js": "/build/./static/js/116.ef20fdf6.chunk.js",
"./static/js/117.3648fd18.chunk.js": "/build/./static/js/117.3648fd18.chunk.js",
"static/css/118.a16009b1.chunk.css": "/build/static/css/118.a16009b1.chunk.css",
"./static/js/118.19c69854.chunk.js": "/build/./static/js/118.19c69854.chunk.js",
"static/css/119.ef7b39fb.chunk.css": "/build/static/css/119.ef7b39fb.chunk.css",
"./static/js/119.e9f65403.chunk.js": "/build/./static/js/119.e9f65403.chunk.js",
"static/css/120.56158b92.chunk.css": "/build/static/css/120.56158b92.chunk.css",
"./static/js/120.e1ea5400.chunk.js": "/build/./static/js/120.e1ea5400.chunk.js",
"static/css/121.a72d9adb.chunk.css": "/build/static/css/121.a72d9adb.chunk.css",
"./static/js/121.c951bfba.chunk.js": "/build/./static/js/121.c951bfba.chunk.js",
"static/css/122.d0ee7269.chunk.css": "/build/static/css/122.d0ee7269.chunk.css",
"./static/js/122.ae5cee82.chunk.js": "/build/./static/js/122.ae5cee82.chunk.js",
"static/css/123.f5a19396.chunk.css": "/build/static/css/123.f5a19396.chunk.css",
"./static/js/123.ae5b568c.chunk.js": "/build/./static/js/123.ae5b568c.chunk.js",
"static/css/124.78d24cb4.chunk.css": "/build/static/css/124.78d24cb4.chunk.css",
"./static/js/124.2e2aa126.chunk.js": "/build/./static/js/124.2e2aa126.chunk.js",
"./static/js/125.22089bf6.chunk.js": "/build/./static/js/125.22089bf6.chunk.js",
"static/css/126.4054f41b.chunk.css": "/build/static/css/126.4054f41b.chunk.css",
"./static/js/126.66fdb48d.chunk.js": "/build/./static/js/126.66fdb48d.chunk.js",
"./static/js/127.6437d17b.chunk.js": "/build/./static/js/127.6437d17b.chunk.js",
"static/css/128.f8577cd6.chunk.css": "/build/static/css/128.f8577cd6.chunk.css",
"./static/js/128.bdff3f0c.chunk.js": "/build/./static/js/128.bdff3f0c.chunk.js",
"static/css/129.15253a67.chunk.css": "/build/static/css/129.15253a67.chunk.css",
"./static/js/129.422a4b8c.chunk.js": "/build/./static/js/129.422a4b8c.chunk.js",
"./static/js/130.bbfd729c.chunk.js": "/build/./static/js/130.bbfd729c.chunk.js",
"static/css/131.bf681b66.chunk.css": "/build/static/css/131.bf681b66.chunk.css",
"./static/js/131.a4ec9bac.chunk.js": "/build/./static/js/131.a4ec9bac.chunk.js",
"static/css/132.3491f75f.chunk.css": "/build/static/css/132.3491f75f.chunk.css",
"./static/js/132.ca533c48.chunk.js": "/build/./static/js/132.ca533c48.chunk.js",
"./static/js/133.acd80a77.chunk.js": "/build/./static/js/133.acd80a77.chunk.js",
"./static/js/134.832850d3.chunk.js": "/build/./static/js/134.832850d3.chunk.js",
"static/css/135.6b9ba3cb.chunk.css": "/build/static/css/135.6b9ba3cb.chunk.css",
"./static/js/135.b489b40b.chunk.js": "/build/./static/js/135.b489b40b.chunk.js",
"./static/js/136.f836cf60.chunk.js": "/build/./static/js/136.f836cf60.chunk.js",
"static/css/137.f56c834f.chunk.css": "/build/static/css/137.f56c834f.chunk.css",
"./static/js/137.ec453c76.chunk.js": "/build/./static/js/137.ec453c76.chunk.js",
"static/css/138.77c696ba.chunk.css": "/build/static/css/138.77c696ba.chunk.css",
"./static/js/138.65f107dc.chunk.js": "/build/./static/js/138.65f107dc.chunk.js",
"static/css/139.77c696ba.chunk.css": "/build/static/css/139.77c696ba.chunk.css",
"./static/js/139.7a1d0135.chunk.js": "/build/./static/js/139.7a1d0135.chunk.js",
"./static/js/140.90aafcce.chunk.js": "/build/./static/js/140.90aafcce.chunk.js",
"./static/js/141.4f326aba.chunk.js": "/build/./static/js/141.4f326aba.chunk.js",
"static/css/142.41b8aabd.chunk.css": "/build/static/css/142.41b8aabd.chunk.css",
"./static/js/142.83b7ad4a.chunk.js": "/build/./static/js/142.83b7ad4a.chunk.js",
"static/css/143.4596ecd4.chunk.css": "/build/static/css/143.4596ecd4.chunk.css",
"./static/js/143.e1434bae.chunk.js": "/build/./static/js/143.e1434bae.chunk.js",
"static/css/144.0e237515.chunk.css": "/build/static/css/144.0e237515.chunk.css",
"./static/js/144.d741baa8.chunk.js": "/build/./static/js/144.d741baa8.chunk.js",
"static/css/145.0e10cfd1.chunk.css": "/build/static/css/145.0e10cfd1.chunk.css",
"./static/js/145.d871a9e5.chunk.js": "/build/./static/js/145.d871a9e5.chunk.js",
"static/css/146.b0f6abc7.chunk.css": "/build/static/css/146.b0f6abc7.chunk.css",
"./static/js/146.05b09083.chunk.js": "/build/./static/js/146.05b09083.chunk.js",
"static/css/147.924ff88a.chunk.css": "/build/static/css/147.924ff88a.chunk.css",
"./static/js/147.a82c2042.chunk.js": "/build/./static/js/147.a82c2042.chunk.js",
"static/css/148.42eb9df6.chunk.css": "/build/static/css/148.42eb9df6.chunk.css",
"./static/js/148.02f01a12.chunk.js": "/build/./static/js/148.02f01a12.chunk.js",
"./static/js/149.e5af9cd2.chunk.js": "/build/./static/js/149.e5af9cd2.chunk.js",
"./static/js/150.044e4971.chunk.js": "/build/./static/js/150.044e4971.chunk.js",
"./static/js/151.84c097d8.chunk.js": "/build/./static/js/151.84c097d8.chunk.js",
"static/css/152.080d6958.chunk.css": "/build/static/css/152.080d6958.chunk.css",
"./static/js/152.0bb03c62.chunk.js": "/build/./static/js/152.0bb03c62.chunk.js",
"static/css/153.71fa167b.chunk.css": "/build/static/css/153.71fa167b.chunk.css",
"./static/js/153.9bd9dade.chunk.js": "/build/./static/js/153.9bd9dade.chunk.js",
"./static/js/154.96a46461.chunk.js": "/build/./static/js/154.96a46461.chunk.js",
"./static/js/155.57d5991f.chunk.js": "/build/./static/js/155.57d5991f.chunk.js",
"static/css/156.9c03336a.chunk.css": "/build/static/css/156.9c03336a.chunk.css",
"./static/js/156.5eadc051.chunk.js": "/build/./static/js/156.5eadc051.chunk.js",
"static/css/157.bdb62d78.chunk.css": "/build/static/css/157.bdb62d78.chunk.css",
"./static/js/157.cf043aab.chunk.js": "/build/./static/js/157.cf043aab.chunk.js",
"static/css/158.fe9e65c3.chunk.css": "/build/static/css/158.fe9e65c3.chunk.css",
"./static/js/158.c88ecaaa.chunk.js": "/build/./static/js/158.c88ecaaa.chunk.js",
"./static/js/159.964fbd59.chunk.js": "/build/./static/js/159.964fbd59.chunk.js",
"./static/js/160.f48e8da4.chunk.js": "/build/./static/js/160.f48e8da4.chunk.js",
"static/css/161.41b8aabd.chunk.css": "/build/static/css/161.41b8aabd.chunk.css",
"./static/js/161.3c55ac9b.chunk.js": "/build/./static/js/161.3c55ac9b.chunk.js",
"static/css/162.41b8aabd.chunk.css": "/build/static/css/162.41b8aabd.chunk.css",
"./static/js/162.264b470b.chunk.js": "/build/./static/js/162.264b470b.chunk.js",
"static/css/163.bc2cc2ee.chunk.css": "/build/static/css/163.bc2cc2ee.chunk.css",
"./static/js/163.b2bc33b7.chunk.js": "/build/./static/js/163.b2bc33b7.chunk.js",
"static/css/164.2e0e7edc.chunk.css": "/build/static/css/164.2e0e7edc.chunk.css",
"./static/js/164.1b8b6c15.chunk.js": "/build/./static/js/164.1b8b6c15.chunk.js",
"./static/js/165.cc354439.chunk.js": "/build/./static/js/165.cc354439.chunk.js",
"./static/js/166.95f8b727.chunk.js": "/build/./static/js/166.95f8b727.chunk.js",
"./static/js/167.474bef1b.chunk.js": "/build/./static/js/167.474bef1b.chunk.js",
"./static/js/168.5016996a.chunk.js": "/build/./static/js/168.5016996a.chunk.js",
"static/css/169.c2265b39.chunk.css": "/build/static/css/169.c2265b39.chunk.css",
"./static/js/169.8d055a51.chunk.js": "/build/./static/js/169.8d055a51.chunk.js",
"static/css/170.c121ca6d.chunk.css": "/build/static/css/170.c121ca6d.chunk.css",
"./static/js/170.640fb40c.chunk.js": "/build/./static/js/170.640fb40c.chunk.js",
"./static/js/171.9c3720c4.chunk.js": "/build/./static/js/171.9c3720c4.chunk.js",
"./static/js/172.c6a26efb.chunk.js": "/build/./static/js/172.c6a26efb.chunk.js",
"./static/js/173.405def89.chunk.js": "/build/./static/js/173.405def89.chunk.js",
"static/css/174.15253a67.chunk.css": "/build/static/css/174.15253a67.chunk.css",
"./static/js/174.99b0cdea.chunk.js": "/build/./static/js/174.99b0cdea.chunk.js",
"static/css/175.8a2a0d50.chunk.css": "/build/static/css/175.8a2a0d50.chunk.css",
"./static/js/175.f1dfc709.chunk.js": "/build/./static/js/175.f1dfc709.chunk.js",
"./static/js/176.b9f0a967.chunk.js": "/build/./static/js/176.b9f0a967.chunk.js",
"./static/js/177.044852a0.chunk.js": "/build/./static/js/177.044852a0.chunk.js",
"static/css/178.d46d87fc.chunk.css": "/build/static/css/178.d46d87fc.chunk.css",
"./static/js/178.f35e38a6.chunk.js": "/build/./static/js/178.f35e38a6.chunk.js",
"static/css/179.adba6539.chunk.css": "/build/static/css/179.adba6539.chunk.css",
"./static/js/179.d66cbc3e.chunk.js": "/build/./static/js/179.d66cbc3e.chunk.js",
"./static/js/180.eb3855b7.chunk.js": "/build/./static/js/180.eb3855b7.chunk.js",
"./static/js/181.34396f77.chunk.js": "/build/./static/js/181.34396f77.chunk.js",
"static/css/182.634521e1.chunk.css": "/build/static/css/182.634521e1.chunk.css",
"./static/js/182.d2b86b16.chunk.js": "/build/./static/js/182.d2b86b16.chunk.js",
"static/css/183.3ce18db9.chunk.css": "/build/static/css/183.3ce18db9.chunk.css",
"./static/js/183.44327dbf.chunk.js": "/build/./static/js/183.44327dbf.chunk.js",
"static/css/184.58624376.chunk.css": "/build/static/css/184.58624376.chunk.css",
"./static/js/184.1f65602e.chunk.js": "/build/./static/js/184.1f65602e.chunk.js",
"static/css/185.de6b6b69.chunk.css": "/build/static/css/185.de6b6b69.chunk.css",
"./static/js/185.9a945c78.chunk.js": "/build/./static/js/185.9a945c78.chunk.js",
"./static/js/186.1e7707fd.chunk.js": "/build/./static/js/186.1e7707fd.chunk.js",
"./static/js/187.97db53cf.chunk.js": "/build/./static/js/187.97db53cf.chunk.js",
"./static/js/188.b7567c8f.chunk.js": "/build/./static/js/188.b7567c8f.chunk.js",
"./static/js/189.57640a15.chunk.js": "/build/./static/js/189.57640a15.chunk.js",
"static/css/190.c0242127.chunk.css": "/build/static/css/190.c0242127.chunk.css",
"./static/js/190.642b3283.chunk.js": "/build/./static/js/190.642b3283.chunk.js",
"static/css/191.873fe80e.chunk.css": "/build/static/css/191.873fe80e.chunk.css",
"./static/js/191.c930fe6d.chunk.js": "/build/./static/js/191.c930fe6d.chunk.js",
"static/css/192.e0db6c17.chunk.css": "/build/static/css/192.e0db6c17.chunk.css",
"./static/js/192.134dd21e.chunk.js": "/build/./static/js/192.134dd21e.chunk.js",
"static/css/193.f50a3cf0.chunk.css": "/build/static/css/193.f50a3cf0.chunk.css",
"./static/js/193.69126653.chunk.js": "/build/./static/js/193.69126653.chunk.js",
"static/css/194.9df86194.chunk.css": "/build/static/css/194.9df86194.chunk.css",
"./static/js/194.898dd689.chunk.js": "/build/./static/js/194.898dd689.chunk.js",
"static/css/195.6b9ba3cb.chunk.css": "/build/static/css/195.6b9ba3cb.chunk.css",
"./static/js/195.310c8eb3.chunk.js": "/build/./static/js/195.310c8eb3.chunk.js",
"static/css/196.f2060fe7.chunk.css": "/build/static/css/196.f2060fe7.chunk.css",
"./static/js/196.4ddc6032.chunk.js": "/build/./static/js/196.4ddc6032.chunk.js",
"static/css/197.88ec54a7.chunk.css": "/build/static/css/197.88ec54a7.chunk.css",
"./static/js/197.d034cea2.chunk.js": "/build/./static/js/197.d034cea2.chunk.js",
"./static/js/198.7a28b332.chunk.js": "/build/./static/js/198.7a28b332.chunk.js",
"./static/js/199.bdb3d4df.chunk.js": "/build/./static/js/199.bdb3d4df.chunk.js",
"static/css/200.b7a023bd.chunk.css": "/build/static/css/200.b7a023bd.chunk.css",
"./static/js/200.9ad61cf8.chunk.js": "/build/./static/js/200.9ad61cf8.chunk.js",
"static/css/201.4596ecd4.chunk.css": "/build/static/css/201.4596ecd4.chunk.css",
"./static/js/201.9aff36ed.chunk.js": "/build/./static/js/201.9aff36ed.chunk.js",
"./static/js/202.8a2f965f.chunk.js": "/build/./static/js/202.8a2f965f.chunk.js",
"static/css/203.41b8aabd.chunk.css": "/build/static/css/203.41b8aabd.chunk.css",
"./static/js/203.aa3eabfa.chunk.js": "/build/./static/js/203.aa3eabfa.chunk.js",
"./static/js/204.92ea5190.chunk.js": "/build/./static/js/204.92ea5190.chunk.js",
"./static/js/205.94116de6.chunk.js": "/build/./static/js/205.94116de6.chunk.js",
"./static/js/206.7fa0c08a.chunk.js": "/build/./static/js/206.7fa0c08a.chunk.js",
"./static/js/207.3b4e47f6.chunk.js": "/build/./static/js/207.3b4e47f6.chunk.js",
"./static/js/208.9eefe935.chunk.js": "/build/./static/js/208.9eefe935.chunk.js",
"./static/js/209.2d2cd769.chunk.js": "/build/./static/js/209.2d2cd769.chunk.js",
"./static/js/210.f401c117.chunk.js": "/build/./static/js/210.f401c117.chunk.js",
"./static/js/211.8f315a87.chunk.js": "/build/./static/js/211.8f315a87.chunk.js",
"./static/js/212.31965617.chunk.js": "/build/./static/js/212.31965617.chunk.js",
"./static/js/213.66fc8d7e.chunk.js": "/build/./static/js/213.66fc8d7e.chunk.js",
"./static/js/214.e4357ec0.chunk.js": "/build/./static/js/214.e4357ec0.chunk.js",
"./static/js/215.2d0fe979.chunk.js": "/build/./static/js/215.2d0fe979.chunk.js",
"./static/js/216.0ade2680.chunk.js": "/build/./static/js/216.0ade2680.chunk.js",
"./static/js/217.f4a3cb78.chunk.js": "/build/./static/js/217.f4a3cb78.chunk.js",
"./static/js/218.4bda13ac.chunk.js": "/build/./static/js/218.4bda13ac.chunk.js",
"./static/js/219.d42fdf24.chunk.js": "/build/./static/js/219.d42fdf24.chunk.js",
"./static/js/220.824723aa.chunk.js": "/build/./static/js/220.824723aa.chunk.js",
"./static/js/221.1cdc8bb9.chunk.js": "/build/./static/js/221.1cdc8bb9.chunk.js",
"./static/js/222.e58d1756.chunk.js": "/build/./static/js/222.e58d1756.chunk.js",
"./static/js/223.863582c5.chunk.js": "/build/./static/js/223.863582c5.chunk.js",
"./static/js/224.5b1945f6.chunk.js": "/build/./static/js/224.5b1945f6.chunk.js",
"./static/js/225.ed57abc6.chunk.js": "/build/./static/js/225.ed57abc6.chunk.js",
"./static/js/226.c35c4fe7.chunk.js": "/build/./static/js/226.c35c4fe7.chunk.js",
"./static/js/227.19c8a094.chunk.js": "/build/./static/js/227.19c8a094.chunk.js",
"./static/js/228.65c1debf.chunk.js": "/build/./static/js/228.65c1debf.chunk.js",
"./static/js/229.388be8ea.chunk.js": "/build/./static/js/229.388be8ea.chunk.js",
"./static/js/230.904df1f6.chunk.js": "/build/./static/js/230.904df1f6.chunk.js",
"./static/js/231.82f327eb.chunk.js": "/build/./static/js/231.82f327eb.chunk.js",
"./static/js/232.13edfb75.chunk.js": "/build/./static/js/232.13edfb75.chunk.js",
"./static/js/233.cb59f3f3.chunk.js": "/build/./static/js/233.cb59f3f3.chunk.js",
"./static/js/234.d09c8f51.chunk.js": "/build/./static/js/234.d09c8f51.chunk.js",
"./static/js/235.e087d241.chunk.js": "/build/./static/js/235.e087d241.chunk.js",
"./static/js/236.2094d8c0.chunk.js": "/build/./static/js/236.2094d8c0.chunk.js",
"./static/js/237.363401ef.chunk.js": "/build/./static/js/237.363401ef.chunk.js",
"./static/js/238.87e14df3.chunk.js": "/build/./static/js/238.87e14df3.chunk.js",
"./static/js/239.f2c1fc3c.chunk.js": "/build/./static/js/239.f2c1fc3c.chunk.js",
"./static/js/240.9753e4d5.chunk.js": "/build/./static/js/240.9753e4d5.chunk.js",
"./static/js/241.e7bd16fe.chunk.js": "/build/./static/js/241.e7bd16fe.chunk.js",
"./static/js/242.1e5dd721.chunk.js": "/build/./static/js/242.1e5dd721.chunk.js",
"./static/js/243.3e61fb73.chunk.js": "/build/./static/js/243.3e61fb73.chunk.js",
"./static/js/244.d8f259f9.chunk.js": "/build/./static/js/244.d8f259f9.chunk.js",
"./static/js/245.9fd4646d.chunk.js": "/build/./static/js/245.9fd4646d.chunk.js",
"./static/js/246.e15c89b8.chunk.js": "/build/./static/js/246.e15c89b8.chunk.js",
"./static/js/247.fec91160.chunk.js": "/build/./static/js/247.fec91160.chunk.js",
"./static/js/248.eecc2e3f.chunk.js": "/build/./static/js/248.eecc2e3f.chunk.js",
"./static/js/249.38aa7c42.chunk.js": "/build/./static/js/249.38aa7c42.chunk.js",
"./static/js/250.4c33cb08.chunk.js": "/build/./static/js/250.4c33cb08.chunk.js",
"./static/js/251.0a4aa5ea.chunk.js": "/build/./static/js/251.0a4aa5ea.chunk.js",
"./static/js/252.7bd621cb.chunk.js": "/build/./static/js/252.7bd621cb.chunk.js",
"./static/js/253.d1b514da.chunk.js": "/build/./static/js/253.d1b514da.chunk.js",
"./static/js/254.80b9e19f.chunk.js": "/build/./static/js/254.80b9e19f.chunk.js",
"./static/js/255.b10b3da1.chunk.js": "/build/./static/js/255.b10b3da1.chunk.js",
"./static/js/256.5c3bf32e.chunk.js": "/build/./static/js/256.5c3bf32e.chunk.js",
"./static/js/257.caadfa9b.chunk.js": "/build/./static/js/257.caadfa9b.chunk.js",
"./static/js/258.b1b0e01a.chunk.js": "/build/./static/js/258.b1b0e01a.chunk.js",
"./static/js/259.c1757545.chunk.js": "/build/./static/js/259.c1757545.chunk.js",
"./static/js/260.f1187346.chunk.js": "/build/./static/js/260.f1187346.chunk.js",
"./static/js/261.5ad799a0.chunk.js": "/build/./static/js/261.5ad799a0.chunk.js",
"./static/js/262.e1e50e22.chunk.js": "/build/./static/js/262.e1e50e22.chunk.js",
"./static/js/263.3d7f395c.chunk.js": "/build/./static/js/263.3d7f395c.chunk.js",
"./static/js/264.0711b6c2.chunk.js": "/build/./static/js/264.0711b6c2.chunk.js",
"./static/js/265.5d07b33a.chunk.js": "/build/./static/js/265.5d07b33a.chunk.js",
"./static/js/266.a8502de4.chunk.js": "/build/./static/js/266.a8502de4.chunk.js",
"./static/js/267.ffd4d545.chunk.js": "/build/./static/js/267.ffd4d545.chunk.js",
"./static/js/268.1b8b27a0.chunk.js": "/build/./static/js/268.1b8b27a0.chunk.js",
"./static/js/269.4db424a5.chunk.js": "/build/./static/js/269.4db424a5.chunk.js",
"main.css": "/build/static/css/main.9aa2753f.chunk.css",
"main.js": "/build/./static/js/main.5a3024c7.chunk.js",
"runtime~main.js": "/build/./static/js/runtime~main.da995f14.js",
"./static/js/10.e0a1c8da.chunk.js.LICENSE.txt": "/build/./static/js/10.e0a1c8da.chunk.js.LICENSE.txt",
"./static/js/18.b1a95570.chunk.js.LICENSE.txt": "/build/./static/js/18.b1a95570.chunk.js.LICENSE.txt",
"./static/js/2.557613ce.chunk.js.LICENSE.txt": "/build/./static/js/2.557613ce.chunk.js.LICENSE.txt",
"./static/js/221.1cdc8bb9.chunk.js.LICENSE.txt": "/build/./static/js/221.1cdc8bb9.chunk.js.LICENSE.txt",
"./static/js/23.0d819544.chunk.js.LICENSE.txt": "/build/./static/js/23.0d819544.chunk.js.LICENSE.txt",
"./static/js/264.0711b6c2.chunk.js.LICENSE.txt": "/build/./static/js/264.0711b6c2.chunk.js.LICENSE.txt",
"./static/js/35.70d1eae5.chunk.js.LICENSE.txt": "/build/./static/js/35.70d1eae5.chunk.js.LICENSE.txt",
"./static/js/40.dd19e4ae.chunk.js.LICENSE.txt": "/build/./static/js/40.dd19e4ae.chunk.js.LICENSE.txt",
"./static/js/44.f6e98158.chunk.js.LICENSE.txt": "/build/./static/js/44.f6e98158.chunk.js.LICENSE.txt",
"./static/js/45.02283a3c.chunk.js.LICENSE.txt": "/build/./static/js/45.02283a3c.chunk.js.LICENSE.txt",
"./static/js/46.65563171.chunk.js.LICENSE.txt": "/build/./static/js/46.65563171.chunk.js.LICENSE.txt",
"./static/js/63.c508f1d6.chunk.js.LICENSE.txt": "/build/./static/js/63.c508f1d6.chunk.js.LICENSE.txt",
"./static/js/7.ede75b8b.chunk.js.LICENSE.txt": "/build/./static/js/7.ede75b8b.chunk.js.LICENSE.txt",
"./static/js/main.5a3024c7.chunk.js.LICENSE.txt": "/build/./static/js/main.5a3024c7.chunk.js.LICENSE.txt",
"css.worker.js": "/build/css.worker.js",
"editor.worker.js": "/build/editor.worker.js",
"html.worker.js": "/build/html.worker.js",
"index.html": "/build/index.html",
"json.worker.js": "/build/json.worker.js",
"static/media/Index.scss": "/build/static/media/typebg.b2b0ea32.png",
"static/media/2-2-1.png": "/build/static/media/2-2-1.afd0f2f5.png",
"static/media/2-2-2.png": "/build/static/media/2-2-2.26bc3301.png",
"static/media/2-2-3.png": "/build/static/media/2-2-3.6d6ce99c.png",
"static/media/2-2-head.png": "/build/static/media/2-2-head.5e69dbb2.png",
"static/media/2-3-1.png": "/build/static/media/2-3-1.bcb33d47.png",
"static/media/2-3-2.png": "/build/static/media/2-3-2.57ef08ae.png",
"static/media/2-3-3.png": "/build/static/media/2-3-3.52733627.png",
"static/media/2-3-4.png": "/build/static/media/2-3-4.339b2f1c.png",
"static/media/2-6-1.png": "/build/static/media/2-6-1.302b729e.png",
"static/media/2-6-2.png": "/build/static/media/2-6-2.b262b91e.png",
"static/media/3-1.png": "/build/static/media/3-1.9fdda521.png",
"static/media/3-2.png": "/build/static/media/3-2.47050941.png",
"static/media/3-3.png": "/build/static/media/3-3.c767aae7.png",
"static/media/3-4.png": "/build/static/media/3-4.92820cbc.png",
"static/media/34@2x.png": "/build/static/media/34@2x.ed8e5910.png",
"static/media/35@2x.png": "/build/static/media/35@2x.33462edc.png",
"static/media/36@2x.png": "/build/static/media/36@2x.8f54f5ba.png",
"static/media/37@2x.png": "/build/static/media/37@2x.97a40a2a.png",
"static/media/38@2x.png": "/build/static/media/38@2x.f072fe68.png",
"static/media/39@2x.png": "/build/static/media/39@2x.ee1af05a.png",
"static/media/4-1.png": "/build/static/media/4-1.79fa159d.png",
"static/media/4-2.png": "/build/static/media/4-2.9c066e75.png",
"static/media/4-3.png": "/build/static/media/4-3.a1487a5b.png",
"static/media/4-4.png": "/build/static/media/4-4.5eb40734.png",
"static/media/40@2x.png": "/build/static/media/40@2x.f10a55e2.png",
"static/media/42@2x.png": "/build/static/media/42@2x.25d6b5fd.png",
"static/media/44@2x.png": "/build/static/media/44@2x.1374baf9.png",
"static/media/46@2x.png": "/build/static/media/46@2x.e272d43e.png",
"static/media/48@2x.png": "/build/static/media/48@2x.3bde4de9.png",
"static/media/49.png": "/build/static/media/49.b03e6efe.png",
"static/media/50@2x.png": "/build/static/media/50@2x.69b76634.png",
"static/media/52@2x.png": "/build/static/media/52@2x.41805cbb.png",
"static/media/55@2x.png": "/build/static/media/55@2x.83486b73.png",
"static/media/57@2x.png": "/build/static/media/57@2x.8dc6b0b8.png",
"static/media/59@2x.png": "/build/static/media/59@2x.b0884ef0.png",
"static/media/61@2x.png": "/build/static/media/61@2x.99d3cc3e.png",
"static/media/63@2x.png": "/build/static/media/63@2x.49f389b9.png",
"static/media/65@2x.png": "/build/static/media/65@2x.ef33e2f9.png",
"static/media/67@2x.png": "/build/static/media/67@2x.4a4f4b6c.png",
"static/media/69@2x.png": "/build/static/media/69@2x.379c6a82.png",
"static/media/70.png": "/build/static/media/70.df160b27.png",
"static/media/BJHKHT.png": "/build/static/media/BJHKHT.f065403a.png",
"static/media/CEC.png": "/build/static/media/CEC.3b748059.png",
"static/media/GFKJ.png": "/build/static/media/GFKJ.eb30c414.png",
"static/media/HSKY.png": "/build/static/media/HSKY.2e76ba44.png",
"static/media/ISCAS.png": "/build/static/media/ISCAS.851fcfda.png",
"static/media/KYRJLM.png": "/build/static/media/KYRJLM.2d659e5c.png",
"static/media/katex.min.css": "/build/static/media/KaTeX_Typewriter-Regular.d3c8e68f.woff",
"static/media/LC.png": "/build/static/media/LC.f247fdb8.png",
"static/media/LSLM.png": "/build/static/media/LSLM.99387946.png",
"static/media/ML.png": "/build/static/media/ML.08d278e2.png",
"static/media/NJDX.png": "/build/static/media/NJDX.bb34b326.png",
"static/media/QH.png": "/build/static/media/QH.b57a0131.png",
"static/media/SHJT.png": "/build/static/media/SHJT.426bf0c7.png",
"static/media/TX.png": "/build/static/media/TX.b703476c.png",
"static/media/WXYJY.png": "/build/static/media/WXYJY.21e40191.png",
"static/media/XH.png": "/build/static/media/XH.a0a88f17.png",
"static/media/XJY.png": "/build/static/media/XJY.b4c57bf1.png",
"static/media/YKD.png": "/build/static/media/YKD.4f7e2766.png",
"static/media/ZC.png": "/build/static/media/ZC.ad056aa5.png",
"static/media/achievements.png": "/build/static/media/achievements.f20b7e39.png",
"static/media/index.scss": "/build/static/media/visionBackActive.14814f28.png",
"static/media/back1.png": "/build/static/media/back1.1f20bd0a.png",
"static/media/back2.png": "/build/static/media/back2.0041bb9e.png",
"static/media/back3.png": "/build/static/media/back3.16134f64.png",
"static/media/ball.png": "/build/static/media/ball.24214b6e.png",
"static/media/banner-interim.png": "/build/static/media/banner-interim.c50ff667.png",
"static/media/banner-interim1.png": "/build/static/media/banner-interim1.bc583d0a.png",
"static/media/AboutUs.scss": "/build/static/media/teambanner.fad350dd.png",
"static/media/banner.png": "/build/static/media/banner.f7da2db1.png",
"static/media/banner2024.jpg": "/build/static/media/banner2024.65b24d59.jpg",
"static/media/banner_list.jpg": "/build/static/media/banner_list.e02c5e16.jpg",
"static/media/beijing.png": "/build/static/media/beijing.bfcd5b0e.png",
"static/media/LoginRegisterPage.scss": "/build/static/media/rightBg.55f14f0c.png",
"static/media/bgPng.png": "/build/static/media/bgPng.ed010245.png",
"static/media/ccf_logo.png": "/build/static/media/ccf_logo.a54fdc70.png",
"static/media/ccf_logo1.png": "/build/static/media/ccf_logo1.be10ead7.png",
"static/media/codeafter.png": "/build/static/media/codeafter.c3088c74.png",
"static/media/color1.png": "/build/static/media/color1.5ec57881.png",
"static/media/color2.png": "/build/static/media/color2.a71ab734.png",
"static/media/color3.png": "/build/static/media/color3.76d404ab.png",
"static/media/color4.png": "/build/static/media/color4.e0954f96.png",
"static/media/indexZone1.scss": "/build/static/media/vipTitleBg.64d456e6.png",
"static/media/computer.png": "/build/static/media/computer.4fe86b12.png",
"static/media/devops.png": "/build/static/media/devops.39983f5b.png",
"static/media/earth.png": "/build/static/media/earth.050b1435.png",
"static/media/educoder.png": "/build/static/media/educoder.c918f385.png",
"static/media/emp.png": "/build/static/media/emp.35f6c709.png",
"static/media/freeBanner.png": "/build/static/media/freeBanner.292dbf56.png",
"static/media/fun1.png": "/build/static/media/fun1.c99ffa49.png",
"static/media/fun2.png": "/build/static/media/fun2.12f22bca.png",
"static/media/fun3.png": "/build/static/media/fun3.75c280e6.png",
"static/media/fun4.png": "/build/static/media/fun4.f499794e.png",
"static/media/fun5.png": "/build/static/media/fun5.96b44942.png",
"static/media/gitee1.svg": "/build/static/media/gitee1.279a922b.svg",
"static/media/github2.svg": "/build/static/media/github2.95ea181b.svg",
"static/media/gitlink-gz.png": "/build/static/media/gitlink-gz.d351910b.png",
"static/media/gitlink-qq.png": "/build/static/media/gitlink-qq.90d5ac1b.png",
"static/media/gitlink1.png": "/build/static/media/gitlink1.4bf0ed96.png",
"static/media/gitlink2.png": "/build/static/media/gitlink2.0ec0ec22.png",
"static/media/green_nodata.png": "/build/static/media/green_nodata.be7b538b.png",
"static/media/head.png": "/build/static/media/head.52aa3fc8.png",
"static/media/help.png": "/build/static/media/help.0bfb2587.png",
"static/media/help_bg.png": "/build/static/media/help_bg.d2bb4c18.png",
"static/media/huake.png": "/build/static/media/huake.63b6a34d.png",
"static/media/huawei.png": "/build/static/media/huawei.73ec7c22.png",
"static/media/icon.svg": "/build/static/media/icon.1322725f.svg",
"static/media/ideLogo.svg": "/build/static/media/ideLogo.0dca8d76.svg",
"static/media/Teaching.scss": "/build/static/media/image22.6ff2b063.svg",
"static/media/img1.png": "/build/static/media/img1.fc155528.png",
"static/media/img10.png": "/build/static/media/img10.64149a3d.png",
"static/media/img15.png": "/build/static/media/img15.87a3556c.png",
"static/media/img16.png": "/build/static/media/img16.32badab9.png",
"static/media/img17.png": "/build/static/media/img17.c25d5edc.png",
"static/media/img18.png": "/build/static/media/img18.4963efc1.png",
"static/media/img2.png": "/build/static/media/img2.ae303051.png",
"static/media/img3.png": "/build/static/media/img3.cee3ac5b.png",
"static/media/img4.png": "/build/static/media/img4.53c937cb.png",
"static/media/img5.png": "/build/static/media/img5.ca3a2287.png",
"static/media/img6.png": "/build/static/media/img6.8f81bf78.png",
"static/media/img7.png": "/build/static/media/img7.e4a68e6e.png",
"static/media/img8.png": "/build/static/media/img8.10500e00.png",
"static/media/img9.png": "/build/static/media/img9.d25372ba.png",
"static/media/introduce.png": "/build/static/media/introduce.30b50cda.png",
"static/media/jijinhui.png": "/build/static/media/jijinhui.041fb524.png",
"static/media/lightspot1.png": "/build/static/media/lightspot1.9214f0ae.png",
"static/media/lightspot2.png": "/build/static/media/lightspot2.b7053786.png",
"static/media/lightspot3.png": "/build/static/media/lightspot3.2f8af8da.png",
"static/media/lightspot4.png": "/build/static/media/lightspot4.93769763.png",
"static/media/logo.png": "/build/static/media/logo.62af9fee.png",
"static/media/logo.svg": "/build/static/media/logo.f0d4927b.svg",
"static/media/logo1.png": "/build/static/media/logo1.ec3c2e67.png",
"static/media/logo2.png": "/build/static/media/logo2.b04c07f2.png",
"static/media/mainbanner.png": "/build/static/media/mainbanner.659efd27.png",
"static/media/mulan.png": "/build/static/media/mulan.690d2289.png",
"static/media/newsBg.png": "/build/static/media/newsBg.66918645.png",
"static/media/nodata.png": "/build/static/media/nodata.e34b5912.png",
"static/media/TPMIndex.css": "/build/static/media/nps2.d5d0b666.png",
"static/media/phone.svg": "/build/static/media/phone.14961064.svg",
"static/media/qqChat.png": "/build/static/media/qqChat.9e56cc22.png",
"static/media/resultBanner2.png": "/build/static/media/resultBanner2.c3095c5d.png",
"static/media/resultBanner3.png": "/build/static/media/resultBanner3.e11193de.png",
"static/media/resultBanner4.png": "/build/static/media/resultBanner4.6eda6ee5.png",
"static/media/slick-theme.css": "/build/static/media/slick.c94f7671.ttf",
"static/media/sponsor11.png": "/build/static/media/sponsor11.5e9da48d.png",
"static/media/sponsor21.png": "/build/static/media/sponsor21.8a655acc.png",
"static/media/sponsor22.png": "/build/static/media/sponsor22.96e2b643.png",
"static/media/sponsor31.png": "/build/static/media/sponsor31.0fd95bcb.png",
"static/media/sponsor33.png": "/build/static/media/sponsor33.27be3b2d.png",
"static/media/sponsor42.png": "/build/static/media/sponsor42.cac8770a.png",
"static/media/sponsor43.png": "/build/static/media/sponsor43.9e4a3afb.png",
"static/media/studentProject.png": "/build/static/media/studentProject.f5bd2481.png",
"static/media/studentProject2.png": "/build/static/media/studentProject2.78fd5476.png",
"static/media/subtitle.png": "/build/static/media/subtitle.5019e086.png",
"static/media/teacher1.png": "/build/static/media/teacher1.ee492a9b.png",
"static/media/teacher10.png": "/build/static/media/teacher10.9298db29.png",
"static/media/teacher11.png": "/build/static/media/teacher11.8a0d8669.png",
"static/media/teacher12.png": "/build/static/media/teacher12.47e02224.png",
"static/media/teacher13.png": "/build/static/media/teacher13.f7886e36.png",
"static/media/teacher14.png": "/build/static/media/teacher14.83b48396.png",
"static/media/teacher15.png": "/build/static/media/teacher15.5d777604.png",
"static/media/teacher2.png": "/build/static/media/teacher2.b2b9919d.png",
"static/media/teacher3.png": "/build/static/media/teacher3.20cb800b.png",
"static/media/teacher4.png": "/build/static/media/teacher4.c15a0bda.png",
"static/media/teacher5.png": "/build/static/media/teacher5.9397d078.png",
"static/media/teacher6.png": "/build/static/media/teacher6.06b6f465.png",
"static/media/teacher7.png": "/build/static/media/teacher7.4102dcc1.png",
"static/media/teacher8.png": "/build/static/media/teacher8.5d3f117e.png",
"static/media/teacher9.png": "/build/static/media/teacher9.69b0adae.png",
"static/media/title.png": "/build/static/media/title.132e93bf.png",
"static/media/vision-fw.png": "/build/static/media/vision-fw.feb9fd4c.png",
"static/media/vision-jz.png": "/build/static/media/vision-jz.a991d471.png",
"static/media/vision-yj.png": "/build/static/media/vision-yj.8ca7b113.png",
"static/media/vision-zy.png": "/build/static/media/vision-zy.e4ac356e.png",
"static/media/vision0.png": "/build/static/media/vision0.c7dbea1d.png",
"static/media/vision1.png": "/build/static/media/vision1.072e7be4.png",
"static/media/vision2.png": "/build/static/media/vision2.024daa92.png",
"static/media/vision3.png": "/build/static/media/vision3.fee43e80.png",
"static/media/xigongye.png": "/build/static/media/xigongye.d51231d3.png",
"static/media/xiuos.png": "/build/static/media/xiuos.67682257.png",
"static/media/xjy.png": "/build/static/media/xjy.6e62f4d6.png",
"static/media/浙江大学.png": "/build/static/media/浙江大学.3c545e69.png",
"ts.worker.js": "/build/ts.worker.js",
"ts.worker.js.LICENSE.txt": "/build/ts.worker.js.LICENSE.txt"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,539 +0,0 @@
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

8
css/font.css Normal file
View File

@ -0,0 +1,8 @@
@font-face {
font-family: Alimama ShuHeiTi;
src: url(../font/AlimamaShuHeiTi-Bold.ttf);
}
@font-face {
font-family: YouSheBiaoTiHei;
src: url(../font/YouSheBiaoTiHei-2.ttf);
}

1
css/gitlink.min.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

46
css/index.css Normal file
View File

@ -0,0 +1,46 @@
@import url(./reset.css);
@import url(./font.css);
.task-hide {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.task-hide-2 {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.task-hide-6 {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 12;
}
.ant-spin-spinning {
margin: auto;
}
.markdown-body {
box-sizing: border-box;
min-width: 200px;
margin: 0 auto;
}
@media (max-width: 767px) {
.markdown-body {
padding: 15px;
}
}
.empty {
width: 276px;
height: 276px;
display: block;
margin: auto;
}

View File

@ -1,111 +0,0 @@
.CodeMirror-merge {
position: relative;
white-space: pre;
}
.CodeMirror-merge, .CodeMirror-merge .CodeMirror {
min-height:50px;
}
.CodeMirror-merge-2pane .CodeMirror-merge-pane { width: 48%; }
.CodeMirror-merge-2pane .CodeMirror-merge-gap { width: 4%; }
.CodeMirror-merge-3pane .CodeMirror-merge-pane { width: 31%; }
.CodeMirror-merge-3pane .CodeMirror-merge-gap { width: 3.5%; }
.CodeMirror-merge-pane {
display: inline-block;
white-space: normal;
vertical-align: top;
}
.CodeMirror-merge-pane-rightmost {
position: absolute;
right: 0px;
z-index: 1;
}
.CodeMirror-merge-gap {
z-index: 2;
display: inline-block;
height: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
position: relative;
background: #515151;
}
.CodeMirror-merge-scrolllock-wrap {
position: absolute;
bottom: 0; left: 50%;
}
.CodeMirror-merge-scrolllock {
position: relative;
left: -50%;
cursor: pointer;
color: #d8d8d8;
line-height: 1;
}
.CodeMirror-merge-copybuttons-left, .CodeMirror-merge-copybuttons-right {
position: absolute;
left: 0; top: 0;
right: 0; bottom: 0;
line-height: 1;
}
.CodeMirror-merge-copy {
position: absolute;
cursor: pointer;
color: #ce374b;
z-index: 3;
}
.CodeMirror-merge-copy-reverse {
position: absolute;
cursor: pointer;
color: #44c;
}
.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy { left: 2px; }
.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy { right: 2px; }
.CodeMirror-merge-r-inserted, .CodeMirror-merge-l-inserted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);
background-position: bottom left;
background-repeat: repeat-x;
}
.CodeMirror-merge-r-deleted, .CodeMirror-merge-l-deleted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);
background-position: bottom left;
background-repeat: repeat-x;
}
.CodeMirror-merge-r-chunk { background: #9a6868; }
.CodeMirror-merge-r-chunk-start { /*border-top: 1px solid #ee8; */}
.CodeMirror-merge-r-chunk-end {/* border-bottom: 1px solid #ee8; */}
.CodeMirror-merge-r-connect { fill:#9a6868;}
.CodeMirror-merge-l-chunk { background: #eef; }
.CodeMirror-merge-l-chunk-start { border-top: 1px solid #88e; }
.CodeMirror-merge-l-chunk-end { border-bottom: 1px solid #88e; }
.CodeMirror-merge-l-connect { fill: #eef; stroke: #88e; stroke-width: 1px; }
.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk { background: #dfd; }
.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start { border-top: 1px solid #4e4; }
.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #4e4; }
.CodeMirror-merge-collapsed-widget:before {
content: "(...)";
}
.CodeMirror-merge-collapsed-widget {
cursor: pointer;
color: #88b;
background: #eef;
border: 1px solid #ddf;
font-size: 90%;
padding: 0 3px;
border-radius: 4px;
}
.CodeMirror-merge-collapsed-line .CodeMirror-gutter-elt { display: none; }

64
css/reset.css Normal file
View File

@ -0,0 +1,64 @@
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
text-decoration: none;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
a {
color: unset;
}
/*清除浮动*/
.clearfix:before,
.clearfix:after{
content:"";
display:block;
visibility:hidden;
clear:both;
}
/*容器*/
.container {
margin: 10px auto 0px;
width: 95%;
}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

BIN
favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

BIN
font/YouSheBiaoTiHei-2.ttf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
image/arraw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
image/back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

BIN
image/beian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
image/empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
image/footer-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
image/homePage/default.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
image/homePage/guide.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

BIN
image/homePage/item-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

BIN
image/homePage/item-dot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
image/homePage/sub-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
image/homePage/titleBg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
image/info-title-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
image/information-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

BIN
image/organization-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

BIN
image/qr-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
image/views.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

BIN
image/w_qr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

View File

@ -1 +1,11 @@
<!doctype html><html lang="zh-hans-CN" class="notranslate translated-ltr" translate="no"><head><title>GitLink | 新一代开源创新服务平台</title><meta charset="utf-8"><meta name="Keywords" content="GitLink, git, 开源, 代码托管, 项目管理, 版本控制, 代码分享, 项目协作, 协同开发平台"><meta name="description" content="GitLink 是一个新一代的开源创新服务平台,提供分布式协作开发、流水线运维、代码分析等功能,基于 Git 打造分布式代码托管环境。"><meta property="og:title" content="GitLink | 确实开源"/><meta property="og:type" content="website"/><meta property="og:url" content="https://gitlink.org.cn/"/><meta property="og:image" content="https://www.gitlink.org.cn/images/logo.png"/><meta property="og:image:alt" content="GitLink | 确实开源"/><meta property="og:site_name" content="GitLink"/><meta property="og:description" content="GitLink 是一个新一代的开源创新服务平台,提供分布式协作开发、流水线运维、代码分析等功能,基于 Git 打造分布式代码托管环境。"/><meta name="hostname" content="gitlink.org.cn"><meta name="keyboard-shortcuts-preference" content="all"><meta name="expected-hostname" content="gitlink.org.cn"><meta name="go-import" content="gitlink.org.cn git https://gitlink.org.cn"><meta name="octolytics-dimension-user_login" content="GitLink"><meta name="octolytics-dimension-repository_nwo" content="GitLink"><meta name="octolytics-dimension-repository_network_root_nwo" content="GitLink"><meta name="theme-color" content="#000000"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="referrer" content="always"><link rel="canonical" href="https://gitlink.org.cn" data-turbo-transient=""><link rel="fluid-icon" href="https://www.gitlink.org.cn/images/logo.png" title="GitLink"><link rel="manifest" href="/build//manifest.json"><link rel="stylesheet" href="/build/css/alex/alex.all.global.min.css"><link rel="stylesheet" href="/build/css/iconfont.css"><link rel="stylesheet" href="/build/css/editormd.min.css"><link rel="stylesheet" href="/build/css/gitlink.min.css"><link href="/build/static/css/main.9aa2753f.chunk.css" rel="stylesheet"></head><body><div id="md_div" style="display:none"></div><div id="root" class="page -layout-v -fit widthunit"></div><div id="picture_display" style="display:none"></div><script src="https://gw.alipayobjects.com/os/lib/react/16.14.0/umd/react.production.min.js"></script><script src="https://gw.alipayobjects.com/os/lib/react-dom/16.14.0/umd/react-dom.production.min.js"></script><script src="/build/js/jquery-1.8.3.min.js"></script><script src="/build/js/js_min_all.js"></script><script src="/build/js/codemirror/codemirror.js"></script><script src="/build/js/editormd/editormd.min.js"></script><script src="/build/js/codemirror/merge/merge.js"></script><script src="/build/js/alex/moment.js"></script><script src="https://gw.alipayobjects.com/os/lib/alipay/alex/2.0.19/bundle/alex.all.global.min.js"></script><script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script><meta name="viewport" content=""><script src="/build/./static/js/runtime~main.da995f14.js"></script><script src="/build/./static/js/main.5a3024c7.chunk.js"></script><script>var _hmt=_hmt||[];!function(){var t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?7e2def1fe918f15f9f1c5c061f69b256";var e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(t,e)}(),window.onload=function(){$(".newContainer").delegate("a.anchors","click",(function(){let t=$(this).offset().top-180;return $("html,body").animate({scrollTop:t},10),window.location.hash=$(this).attr("name"),!1}))}</script></body></html>
<!DOCTYPE html><html><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="">
<link rel="shortcut icon" href="/favicon.png">
</head>
<body>
<div id="root"></div>
<script src="/umi.47bca09b.js"></script>
</body></html>

View File

@ -1,113 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> -->
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<!--
manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<!-- <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">-->
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<!-- <title>Educoder</title>-->
<!--react-ssr-head-->
<script type="text/javascript">
window.__isR = true;
</script>
<!-- <link rel="stylesheet" type="text/css" href="/css/edu-common.css">
<link rel="stylesheet" type="text/css" href="/css/edu-public.css">
<link rel="stylesheet" type="text/css" href="/css/taskstyle.css">
<link rel="stylesheet" type="text/css" href="/css/font-awesome.css">
<link rel="stylesheet" type="text/css" href="/css/editormd.min.css">
<link rel="stylesheet" type="text/css" href="/css/merge.css"> -->
<link rel="stylesheet" type="text/css" href="/css/css_min_all.css">
<link href="/stylesheets/educoder/edu-all.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="//at.alicdn.com/t/font_653600_qa9lwwv74z.css">
<!-- <link rel="stylesheet" type="text/css" href="https://www.educoder.net/stylesheets/css/font-awesome.css?1510652321"> -->
</head>
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<!--用于markdown转html -->
<div id="md_div" style="display: none;"></div>
<div id="root" class="page -layout-v -fit">
</div>
<div id="picture_display" style="display: none;"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
<!-- js css合并 文件优先级的问题 -->
<!---->
<script type="text/javascript" src="/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="/js/editormd/lib/underscore.min.js"></script>
<script type="text/javascript" src="/js/editormd/lib/marked.min.js"></script>
<script type="text/javascript" src="/js/editormd/lib/prettify.min.js"></script>
<script type="text/javascript" src="/js/editormd/lib/raphael.min.js"></script>
<script type="text/javascript" src="/js/editormd/sequence-diagram.min.js"></script>
<script type="text/javascript" src="/js/editormd/flowchart.min.js"></script>
<script type="text/javascript" src="/js/editormd/jquery.flowchart.min.js"></script>
<script type="text/javascript" src="/js/editormd/editormd.min.js"></script>
<!-- codemirror addon -->
<script type="text/javascript" src="/js/codemirror/codemirror.js"></script>
<!--hint-->
<script type="text/javascript" src="/js/codemirror/lib/fuzzysort.js"></script>
<script type="text/javascript" src="/js/codemirror/addon/hint/show-hint.js"></script>
<!-- <script type="text/javascript" src="/js/codemirror/addon/hint/javascript-hint.js"></script> -->
<script type="text/javascript" src="/js/codemirror/addon/hint/anyword-hint.js"></script>
<script type="text/javascript" src="/js/codemirror/mode/javascript.js"></script>
<script type="text/javascript" src="/js/diff_match_patch.js"></script>
<script type="text/javascript" src="/js/merge.js"></script>
<script type="text/javascript" src="/js/edu_tpi.js"></script>
<script type="text/javascript" src="http://localhost:3000/javascripts/application.js"></script>
<script type="text/javascript" src="http://localhost:3000/assets/kindeditor/kindeditor.js"></script>
<!-- // <script type="text/javascript" src="http://localhost:3000/javascripts/create_kindeditor.js"></script> -->
<script type="text/javascript" src="/js/create_kindeditor.js"></script>
<script type="text/javascript" src="http://localhost:3000/javascripts/educoder/edu_application.js"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,70 +0,0 @@
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var WRAP_CLASS = "CodeMirror-activeline";
var BACK_CLASS = "CodeMirror-activeline-background";
var GUTT_CLASS = "CodeMirror-activeline-gutter";
CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) {
var prev = old == CodeMirror.Init ? false : old;
if (val == prev) return
if (prev) {
cm.off("beforeSelectionChange", selectionChange);
clearActiveLines(cm);
delete cm.state.activeLines;
}
if (val) {
cm.state.activeLines = [];
updateActiveLines(cm, cm.listSelections());
cm.on("beforeSelectionChange", selectionChange);
}
});
function clearActiveLines(cm) {
for (var i = 0; i < cm.state.activeLines.length; i++) {
cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS);
cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS);
cm.removeLineClass(cm.state.activeLines[i], "gutter", GUTT_CLASS);
}
}
function sameArray(a, b) {
if (a.length != b.length) return false;
for (var i = 0; i < a.length; i++)
if (a[i] != b[i]) return false;
return true;
}
function updateActiveLines(cm, ranges) {
var active = [];
for (var i = 0; i < ranges.length; i++) {
var range = ranges[i];
var option = cm.getOption("styleActiveLine");
if (typeof option == "object" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty())
continue
var line = cm.getLineHandleVisualStart(range.head.line);
if (active[active.length - 1] != line) active.push(line);
}
if (sameArray(cm.state.activeLines, active)) return;
cm.operation(function() {
clearActiveLines(cm);
for (var i = 0; i < active.length; i++) {
cm.addLineClass(active[i], "wrap", WRAP_CLASS);
cm.addLineClass(active[i], "background", BACK_CLASS);
cm.addLineClass(active[i], "gutter", GUTT_CLASS);
}
cm.state.activeLines = active;
});
}
function selectionChange(cm, sel) {
updateActiveLines(cm, sel.ranges);
}
});

View File

@ -1,43 +0,0 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
// var WORD = /[\w$]+/
var WORD = /[A-z]+/
, RANGE = 500;
CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
var word = options && options.word || WORD;
var range = options && options.range || RANGE;
var cur = editor.getCursor(), curLine = editor.getLine(cur.line);
var end = cur.ch, start = end;
while (start && word.test(curLine.charAt(start - 1))) --start;
var curWord = start != end && curLine.slice(start, end);
var list = options && options.list || [], seen = {};
var re = new RegExp(word.source, "g");
for (var dir = -1; dir <= 1; dir += 2) {
var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir;
for (; line != endLine; line += dir) {
var text = editor.getLine(line), m;
while (m = re.exec(text)) {
if (line == cur.line && m[0] === curWord) continue;
if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) {
seen[m[0]] = true;
list.push(m[0]);
}
}
}
}
return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
});
});

View File

@ -1,188 +0,0 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
var Pos = CodeMirror.Pos;
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, keywords, getToken, options) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur);
if (/\b(?:string|comment)\b/.test(token.type)) return;
token.state = CodeMirror.innerMode(editor.getMode(), token.state).state;
// If it's not a 'word-style' token, ignore the token.
if (!/^[\w$_]*$/.test(token.string)) {
token = {start: cur.ch, end: cur.ch, string: "", state: token.state,
type: token.string == "." ? "property" : null};
} else if (token.end > cur.ch) {
token.end = cur.ch;
token.string = token.string.slice(0, cur.ch - token.start);
}
var tprop = token;
// If it is a property, find out what it is a property of.
while (tprop.type == "property") {
tprop = getToken(editor, Pos(cur.line, tprop.start));
if (tprop.string != ".") return;
tprop = getToken(editor, Pos(cur.line, tprop.start));
if (!context) var context = [];
context.push(tprop);
}
// 发消息让其他组件注入 其他hint
CodeMirror.signal(editor, "hinting");
var myhints = editor.state.myhints
var needToClearJSHint = editor.state.needToClearJSHint
if (needToClearJSHint) { // 不使用js的hint可能注入了其他语言的hint
keywords = []
editor.state.needToClearJSHint = false;
}
myhints && myhints.forEach(function(item) {
if (!arrayContains(keywords, item)) keywords.push(item)
})
return {list: getCompletions(token, context, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end)};
}
function javascriptHint(editor, options) {
return scriptHint(editor, javascriptKeywords,
function (e, cur) {return e.getTokenAt(cur);},
options);
};
CodeMirror.registerHelper("hint", "javascript", javascriptHint);
function getCoffeeScriptToken(editor, cur) {
// This getToken, it is for coffeescript, imitates the behavior of
// getTokenAt method in javascript.js, that is, returning "property"
// type and treat "." as indepenent token.
var token = editor.getTokenAt(cur);
if (cur.ch == token.start + 1 && token.string.charAt(0) == '.') {
token.end = token.start;
token.string = '.';
token.type = "property";
}
else if (/^\.[\w$_]*$/.test(token.string)) {
token.type = "property";
token.start++;
token.string = token.string.replace(/\./, '');
}
return token;
}
function coffeescriptHint(editor, options) {
return scriptHint(editor, coffeescriptKeywords, getCoffeeScriptToken, options);
}
CodeMirror.registerHelper("hint", "coffeescript", coffeescriptHint);
/* var stringProps = ("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight " +
"toUpperCase toLowerCase split concat match replace search").split(" ");
var arrayProps = ("length concat join splice push pop shift unshift slice reverse sort indexOf " +
"lastIndexOf every some filter forEach map reduce reduceRight ").split(" ");
var funcProps = "prototype apply call bind".split(" ");*/
var javascriptKeywords = ("double float int long short null true false enum super this void auto for register static const friend mutable explicit virtual template typename printf " +
"break continue return do while if else for instanceof switch case default try catch finally throw throws assert import package boolean byte char delete private " +
"inline struct union signed unsigned export extern namespace using operator sizeof typedef typeid and del from not as elif or with pass except " +
"print exec raise is def lambda private protected public abstract class extends final implements interface native new static strictfp synchronized transient main " +
"String string System println vector bool boolean FALSE TRUE function").split(" ");
/*
var coffeescriptKeywords = ("and break catch class continue delete do else extends false finally for " +
"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" ");
*/
function forAllProps(obj, callback) {
if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) {
for (var name in obj) callback(name)
} else {
for (var o = obj; o; o = Object.getPrototypeOf(o))
Object.getOwnPropertyNames(o).forEach(callback)
}
}
function getCompletions(token, context, keywords, options) {
var found = [], start = token.string, global = options && options.globalScope || window;
function maybeAdd(str) {
// var results = fuzzysort.go(start, [str])
// if ( results.total && !arrayContains(found, str) ) found.push(str);
if (fuzzysort && fuzzysort.single) {
// 使用模糊搜索
var results = fuzzysort.single(start, str)
if ( results && results.score <= 0 && !arrayContains(found, str)) found.push(str);
} else {
if (str.lastIndexOf(start, 0) == 0 && !arrayContains(found, str)) found.push(str);
}
}
function gatherCompletions(obj) {
if (typeof obj == "string") forEach(stringProps, maybeAdd);
else if (obj instanceof Array) forEach(arrayProps, maybeAdd);
else if (obj instanceof Function) forEach(funcProps, maybeAdd);
forAllProps(obj, maybeAdd)
}
// 不启用context context强制要求了lib的调用才提示比如Math.a 就会提示 Math.abs
if (false && context && context.length) {
// If this is a property, see if it belongs to some object we can
// find in the current environment.
var obj = context.pop(), base;
if (obj.type && obj.type.indexOf("variable") === 0) {
if (options && options.additionalContext)
base = options.additionalContext[obj.string];
if (!options || options.useGlobalScope !== false)
base = base || global[obj.string];
} else if (obj.type == "string") {
base = "";
} else if (obj.type == "atom") {
base = 1;
} else if (obj.type == "function") {
if (global.jQuery != null && (obj.string == '$' || obj.string == 'jQuery') &&
(typeof global.jQuery == 'function'))
base = global.jQuery();
else if (global._ != null && (obj.string == '_') && (typeof global._ == 'function'))
base = global._();
}
while (base != null && context.length)
base = base[context.pop().string];
if (base != null) gatherCompletions(base);
} else {
// If not, just look in the global object and any local scope
// (reading into JS mode internals to get at the local and global variables)
/* for (var v = token.state.localVars; v; v = v.next) maybeAdd(v.name);*/
/* for (var v = token.state.globalVars; v; v = v.next) maybeAdd(v.name);
if (!options || options.useGlobalScope !== false)
gatherCompletions(global);*/
// forEach(keywords, maybeAdd);
var result = fuzzysort.go(start, keywords)
result && result.forEach(function(item) {
found.push(item.target)
})
}
return found;
}
});

View File

@ -1,36 +0,0 @@
.CodeMirror-hints {
position: absolute;
z-index: 10;
overflow: hidden;
list-style: none;
margin: 0;
padding: 2px;
-webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
-moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
box-shadow: 2px 3px 5px rgba(0,0,0,.2);
border-radius: 3px;
border: 1px solid silver;
background: white;
font-size: 90%;
font-family: monospace;
max-height: 20em;
overflow-y: auto;
}
.CodeMirror-hint {
margin: 0;
padding: 0 4px;
border-radius: 2px;
white-space: pre;
color: black;
cursor: pointer;
}
li.CodeMirror-hint-active {
background: #08f;
color: white;
}

View File

@ -1,458 +0,0 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var HINT_ELEMENT_CLASS = "CodeMirror-hint";
var ACTIVE_HINT_ELEMENT_CLASS = "CodeMirror-hint-active";
// This is the old interface, kept around for now to stay
// backwards-compatible.
CodeMirror.showHint = function(cm, getHints, options) {
if (!getHints) return cm.showHint(options);
if (options && options.async) getHints.async = true;
var newOpts = {hint: getHints};
if (options) for (var prop in options) newOpts[prop] = options[prop];
return cm.showHint(newOpts);
};
CodeMirror.defineExtension("showHint", function(options) {
options = parseOptions(this, this.getCursor("start"), options);
var selections = this.listSelections()
if (selections.length > 1) return;
// By default, don't allow completion when something is selected.
// A hint function can have a `supportsSelection` property to
// indicate that it can handle selections.
if (this.somethingSelected()) {
if (!options.hint.supportsSelection) return;
// Don't try with cross-line selections
for (var i = 0; i < selections.length; i++)
if (selections[i].head.line != selections[i].anchor.line) return;
}
if (this.state.completionActive) this.state.completionActive.close();
var completion = this.state.completionActive = new Completion(this, options);
if (!completion.options.hint) return;
CodeMirror.signal(this, "startCompletion", this);
completion.update(true);
});
function Completion(cm, options) {
this.cm = cm;
this.options = options;
this.widget = null;
this.debounce = 0;
this.tick = 0;
this.startPos = this.cm.getCursor("start");
this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;
var self = this;
cm.on("cursorActivity", this.activityFunc = function() { self.cursorActivity(); });
}
var requestAnimationFrame = window.requestAnimationFrame || function(fn) {
return setTimeout(fn, 1000/60);
};
var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;
Completion.prototype = {
close: function() {
if (!this.active()) return;
this.cm.state.completionActive = null;
this.tick = null;
this.cm.off("cursorActivity", this.activityFunc);
if (this.widget && this.data) CodeMirror.signal(this.data, "close");
if (this.widget) this.widget.close();
CodeMirror.signal(this.cm, "endCompletion", this.cm);
},
active: function() {
return this.cm.state.completionActive == this;
},
pick: function(data, i) {
var completion = data.list[i];
if (completion.hint) completion.hint(this.cm, data, completion);
else this.cm.replaceRange(getText(completion), completion.from || data.from,
completion.to || data.to, "complete");
CodeMirror.signal(data, "pick", completion);
this.close();
},
cursorActivity: function() {
if (this.debounce) {
cancelAnimationFrame(this.debounce);
this.debounce = 0;
}
var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);
if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||
pos.ch < this.startPos.ch || this.cm.somethingSelected() ||
(pos.ch && this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {
this.close();
} else {
var self = this;
this.debounce = requestAnimationFrame(function() {self.update();});
if (this.widget) this.widget.disable();
}
},
update: function(first) {
if (this.tick == null) return
var self = this, myTick = ++this.tick
fetchHints(this.options.hint, this.cm, this.options, function(data) {
if (self.tick == myTick) self.finishUpdate(data, first)
})
},
finishUpdate: function(data, first) {
if (this.data) CodeMirror.signal(this.data, "update");
var picked = (this.widget && this.widget.picked) // || (first && this.options.completeSingle);
if (this.widget) this.widget.close();
if (data && this.data && isNewCompletion(this.data, data)) return;
this.data = data;
if (data && data.list.length) {
if (picked && data.list.length == 1) {
this.pick(data, 0);
} else {
// 使得输入完后刚好输入和hint一样则不再显示hint
if (data.list.length == 1 && data.to.ch - data.from.ch === data.list[0].length) {
return;
}
this.widget = new Widget(this, data);
CodeMirror.signal(data, "shown");
}
}
}
};
function isNewCompletion(old, nw) {
var moved = CodeMirror.cmpPos(nw.from, old.from)
return moved > 0 && old.to.ch - old.from.ch != nw.to.ch - nw.from.ch
}
function parseOptions(cm, pos, options) {
var editor = cm.options.hintOptions;
var out = {};
for (var prop in defaultOptions) out[prop] = defaultOptions[prop];
if (editor) for (var prop in editor)
if (editor[prop] !== undefined) out[prop] = editor[prop];
if (options) for (var prop in options)
if (options[prop] !== undefined) out[prop] = options[prop];
if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)
return out;
}
function getText(completion) {
if (typeof completion == "string") return completion;
else return completion.text;
}
function buildKeyMap(completion, handle) {
var baseMap = {
Up: function() {handle.moveFocus(-1);},
Down: function() {handle.moveFocus(1);},
PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},
PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},
Home: function() {handle.setFocus(0);},
End: function() {handle.setFocus(handle.length - 1);},
Enter: handle.pick,
Tab: handle.pick,
Esc: handle.close
};
var custom = completion.options.customKeys;
var ourMap = custom ? {} : baseMap;
function addBinding(key, val) {
var bound;
if (typeof val != "string")
bound = function(cm) { return val(cm, handle); };
// This mechanism is deprecated
else if (baseMap.hasOwnProperty(val))
bound = baseMap[val];
else
bound = val;
ourMap[key] = bound;
}
if (custom)
for (var key in custom) if (custom.hasOwnProperty(key))
addBinding(key, custom[key]);
var extra = completion.options.extraKeys;
if (extra)
for (var key in extra) if (extra.hasOwnProperty(key))
addBinding(key, extra[key]);
return ourMap;
}
function getHintElement(hintsElement, el) {
while (el && el != hintsElement) {
if (el.nodeName.toUpperCase() === "LI" && el.parentNode == hintsElement) return el;
el = el.parentNode;
}
}
function Widget(completion, data) {
this.completion = completion;
this.data = data;
this.picked = false;
var widget = this, cm = completion.cm;
var hints = this.hints = document.createElement("ul");
hints.className = "CodeMirror-hints";
this.selectedHint = data.selectedHint || 0;
var completions = data.list;
for (var i = 0; i < completions.length; ++i) {
var elt = hints.appendChild(document.createElement("li")), cur = completions[i];
var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? "" : " " + ACTIVE_HINT_ELEMENT_CLASS);
if (cur.className != null) className = cur.className + " " + className;
elt.className = className;
if (cur.render) cur.render(elt, data, cur);
else elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));
elt.hintId = i;
}
var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);
var left = pos.left, top = pos.bottom, below = true;
hints.style.left = left + "px";
hints.style.top = top + "px";
// If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.
var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);
var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);
(completion.options.container || document.body).appendChild(hints);
var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;
var scrolls = hints.scrollHeight > hints.clientHeight + 1
var startScroll = cm.getScrollInfo();
if (overlapY > 0) {
var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);
if (curTop - height > 0) { // Fits above cursor
hints.style.top = (top = pos.top - height) + "px";
below = false;
} else if (height > winH) {
hints.style.height = (winH - 5) + "px";
hints.style.top = (top = pos.bottom - box.top) + "px";
var cursor = cm.getCursor();
if (data.from.ch != cursor.ch) {
pos = cm.cursorCoords(cursor);
hints.style.left = (left = pos.left) + "px";
box = hints.getBoundingClientRect();
}
}
}
var overlapX = box.right - winW;
if (overlapX > 0) {
if (box.right - box.left > winW) {
hints.style.width = (winW - 5) + "px";
overlapX -= (box.right - box.left) - winW;
}
hints.style.left = (left = pos.left - overlapX) + "px";
}
if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)
node.style.paddingRight = cm.display.nativeBarWidth + "px"
cm.addKeyMap(this.keyMap = buildKeyMap(completion, {
moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },
setFocus: function(n) { widget.changeActive(n); },
menuSize: function() { return widget.screenAmount(); },
length: completions.length,
close: function() { completion.close(); },
pick: function() { widget.pick(); },
data: data
}));
if (completion.options.closeOnUnfocus) {
var closingOnBlur;
cm.on("blur", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });
cm.on("focus", this.onFocus = function() { clearTimeout(closingOnBlur); });
}
cm.on("scroll", this.onScroll = function() {
var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();
var newTop = top + startScroll.top - curScroll.top;
var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);
if (!below) point += hints.offsetHeight;
if (point <= editor.top || point >= editor.bottom) return completion.close();
hints.style.top = newTop + "px";
hints.style.left = (left + startScroll.left - curScroll.left) + "px";
});
CodeMirror.on(hints, "dblclick", function(e) {
var t = getHintElement(hints, e.target || e.srcElement);
if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}
});
CodeMirror.on(hints, "click", function(e) {
var t = getHintElement(hints, e.target || e.srcElement);
if (t && t.hintId != null) {
widget.changeActive(t.hintId);
if (completion.options.completeOnSingleClick) widget.pick();
}
});
CodeMirror.on(hints, "mousedown", function() {
setTimeout(function(){cm.focus();}, 20);
});
CodeMirror.signal(data, "select", completions[0], hints.firstChild);
return true;
}
Widget.prototype = {
close: function() {
if (this.completion.widget != this) return;
this.completion.widget = null;
this.hints.parentNode.removeChild(this.hints);
this.completion.cm.removeKeyMap(this.keyMap);
var cm = this.completion.cm;
if (this.completion.options.closeOnUnfocus) {
cm.off("blur", this.onBlur);
cm.off("focus", this.onFocus);
}
cm.off("scroll", this.onScroll);
},
disable: function() {
this.completion.cm.removeKeyMap(this.keyMap);
var widget = this;
this.keyMap = {Enter: function() { widget.picked = true; }};
this.completion.cm.addKeyMap(this.keyMap);
},
pick: function() {
this.completion.pick(this.data, this.selectedHint);
},
changeActive: function(i, avoidWrap) {
if (i >= this.data.list.length)
i = avoidWrap ? this.data.list.length - 1 : 0;
else if (i < 0)
i = avoidWrap ? 0 : this.data.list.length - 1;
if (this.selectedHint == i) return;
var node = this.hints.childNodes[this.selectedHint];
node.className = node.className.replace(" " + ACTIVE_HINT_ELEMENT_CLASS, "");
node = this.hints.childNodes[this.selectedHint = i];
node.className += " " + ACTIVE_HINT_ELEMENT_CLASS;
if (node.offsetTop < this.hints.scrollTop)
this.hints.scrollTop = node.offsetTop - 3;
else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)
this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;
CodeMirror.signal(this.data, "select", this.data.list[this.selectedHint], node);
},
screenAmount: function() {
return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;
}
};
function applicableHelpers(cm, helpers) {
if (!cm.somethingSelected()) return helpers
var result = []
for (var i = 0; i < helpers.length; i++)
if (helpers[i].supportsSelection) result.push(helpers[i])
return result
}
function fetchHints(hint, cm, options, callback) {
if (hint.async) {
hint(cm, callback, options)
} else {
var result = hint(cm, options)
if (result && result.then) result.then(callback)
else callback(result)
}
}
function resolveAutoHints(cm, pos) {
var helpers = cm.getHelpers(pos, "hint"), words
if (helpers.length) {
var resolved = function(cm, callback, options) {
var app = applicableHelpers(cm, helpers);
function run(i) {
if (i == app.length) return callback(null)
fetchHints(app[i], cm, options, function(result) {
if (result && result.list.length > 0) callback(result)
else run(i + 1)
})
}
run(0)
}
resolved.async = true
resolved.supportsSelection = true
return resolved
} else if (words = cm.getHelper(cm.getCursor(), "hintWords")) {
// 发消息让其他组件注入 其他hint
CodeMirror.signal(cm, "hinting", words);
var myhints = cm.state.myhints
var wordsTemp = words.slice(0)
myhints && myhints.forEach(function(item) {
if (words.indexOf(item) === -1) wordsTemp.push(item)
})
return function(cm) {
return CodeMirror.hint.fromList(cm, {words: wordsTemp})
}
} else if (CodeMirror.hint.anyword) {
return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }
} else {
return function() {}
}
}
CodeMirror.registerHelper("hint", "auto", {
resolve: resolveAutoHints
});
CodeMirror.registerHelper("hint", "fromList", function(cm, options) {
var cur = cm.getCursor(), token = cm.getTokenAt(cur);
var to = CodeMirror.Pos(cur.line, token.end);
if (token.string && /\w/.test(token.string[token.string.length - 1])) {
var term = token.string, from = CodeMirror.Pos(cur.line, token.start);
} else {
var term = "", from = to;
}
var found = [];
if (fuzzysort && fuzzysort.go) {
var result = fuzzysort.go(term, options.words)
result && result.forEach(function(item) {
found.push(item.target)
})
} else {
for (var i = 0; i < options.words.length; i++) {
var word = options.words[i];
if (word.slice(0, term.length) == term)
found.push(word);
}
}
if (found.length) return {list: found, from: from, to: to};
});
CodeMirror.commands.autocomplete = CodeMirror.showHint;
var defaultOptions = {
hint: CodeMirror.hint.auto,
completeSingle: true,
alignWithWord: true,
closeCharacters: /[\s()\[\]{};:>,]/,
closeOnUnfocus: true,
completeOnSingleClick: true,
container: null,
customKeys: null,
extraKeys: null
};
CodeMirror.defineOption("hintOptions", null);
});

File diff suppressed because it is too large Load Diff

View File

@ -1,603 +0,0 @@
/*
WHAT: SublimeText-like Fuzzy Search
USAGE:
fuzzysort.single('fs', 'Fuzzy Search') // {score: -16}
fuzzysort.single('test', 'test') // {score: 0}
fuzzysort.single('doesnt exist', 'target') // null
fuzzysort.go('mr', ['Monitor.cpp', 'MeshRenderer.cpp'])
// [{score: -18, target: "MeshRenderer.cpp"}, {score: -6009, target: "Monitor.cpp"}]
fuzzysort.highlight(fuzzysort.single('fs', 'Fuzzy Search'), '<b>', '</b>')
// <b>F</b>uzzy <b>S</b>earch
https://github.com/farzher/fuzzysort
*/
// UMD (Universal Module Definition) for fuzzysort
;(function(root, UMD) {
if(typeof define === 'function' && define.amd) define([], UMD)
else if(typeof module === 'object' && module.exports) module.exports = UMD()
else root.fuzzysort = UMD()
})(this, function UMD() { function fuzzysortNew(instanceOptions) {
var fuzzysort = {
single: function(search, target, options) {
if(!search) return null
if(!isObj(search)) search = fuzzysort.getPreparedSearch(search)
if(!target) return null
if(!isObj(target)) target = fuzzysort.getPrepared(target)
var allowTypo = options && options.allowTypo!==undefined ? options.allowTypo
: instanceOptions && instanceOptions.allowTypo!==undefined ? instanceOptions.allowTypo
: true
var algorithm = allowTypo ? fuzzysort.algorithm : fuzzysort.algorithmNoTypo
return algorithm(search, target, search[0])
// var threshold = options && options.threshold || instanceOptions && instanceOptions.threshold || -9007199254740991
// var result = algorithm(search, target, search[0])
// if(result === null) return null
// if(result.score < threshold) return null
// return result
},
go: function(search, targets, options) {
if(!search) return noResults
search = fuzzysort.prepareSearch(search)
var searchLowerCode = search[0]
var threshold = options && options.threshold || instanceOptions && instanceOptions.threshold || -9007199254740991
var limit = options && options.limit || instanceOptions && instanceOptions.limit || 9007199254740991
var allowTypo = options && options.allowTypo!==undefined ? options.allowTypo
: instanceOptions && instanceOptions.allowTypo!==undefined ? instanceOptions.allowTypo
: true
var algorithm = allowTypo ? fuzzysort.algorithm : fuzzysort.algorithmNoTypo
var resultsLen = 0; var limitedCount = 0
var targetsLen = targets.length
// This code is copy/pasted 3 times for performance reasons [options.keys, options.key, no keys]
// options.keys
if(options && options.keys) {
var scoreFn = options.scoreFn || defaultScoreFn
var keys = options.keys
var keysLen = keys.length
for(var i = targetsLen - 1; i >= 0; --i) { var obj = targets[i]
var objResults = new Array(keysLen)
for (var keyI = keysLen - 1; keyI >= 0; --keyI) {
var key = keys[keyI]
var target = getValue(obj, key)
if(!target) { objResults[keyI] = null; continue }
if(!isObj(target)) target = fuzzysort.getPrepared(target)
objResults[keyI] = algorithm(search, target, searchLowerCode)
}
objResults.obj = obj // before scoreFn so scoreFn can use it
var score = scoreFn(objResults)
if(score === null) continue
if(score < threshold) continue
objResults.score = score
if(resultsLen < limit) { q.add(objResults); ++resultsLen }
else {
++limitedCount
if(score > q.peek().score) q.replaceTop(objResults)
}
}
// options.key
} else if(options && options.key) {
var key = options.key
for(var i = targetsLen - 1; i >= 0; --i) { var obj = targets[i]
var target = getValue(obj, key)
if(!target) continue
if(!isObj(target)) target = fuzzysort.getPrepared(target)
var result = algorithm(search, target, searchLowerCode)
if(result === null) continue
if(result.score < threshold) continue
// have to clone result so duplicate targets from different obj can each reference the correct obj
result = {target:result.target, _targetLowerCodes:null, _nextBeginningIndexes:null, score:result.score, indexes:result.indexes, obj:obj} // hidden
if(resultsLen < limit) { q.add(result); ++resultsLen }
else {
++limitedCount
if(result.score > q.peek().score) q.replaceTop(result)
}
}
// no keys
} else {
for(var i = targetsLen - 1; i >= 0; --i) { var target = targets[i]
if(!target) continue
if(!isObj(target)) target = fuzzysort.getPrepared(target)
var result = algorithm(search, target, searchLowerCode)
if(result === null) continue
if(result.score < threshold) continue
if(resultsLen < limit) { q.add(result); ++resultsLen }
else {
++limitedCount
if(result.score > q.peek().score) q.replaceTop(result)
}
}
}
if(resultsLen === 0) return noResults
var results = new Array(resultsLen)
for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()
results.total = resultsLen + limitedCount
return results
},
goAsync: function(search, targets, options) {
var canceled = false
var p = new Promise(function(resolve, reject) {
if(!search) return resolve(noResults)
search = fuzzysort.prepareSearch(search)
var searchLowerCode = search[0]
var q = fastpriorityqueue()
var iCurrent = targets.length - 1
var threshold = options && options.threshold || instanceOptions && instanceOptions.threshold || -9007199254740991
var limit = options && options.limit || instanceOptions && instanceOptions.limit || 9007199254740991
var allowTypo = options && options.allowTypo!==undefined ? options.allowTypo
: instanceOptions && instanceOptions.allowTypo!==undefined ? instanceOptions.allowTypo
: true
var algorithm = allowTypo ? fuzzysort.algorithm : fuzzysort.algorithmNoTypo
var resultsLen = 0; var limitedCount = 0
function step() {
if(canceled) return reject('canceled')
var startMs = Date.now()
// This code is copy/pasted 3 times for performance reasons [options.keys, options.key, no keys]
// options.keys
if(options && options.keys) {
var scoreFn = options.scoreFn || defaultScoreFn
var keys = options.keys
var keysLen = keys.length
for(; iCurrent >= 0; --iCurrent) { var obj = targets[iCurrent]
var objResults = new Array(keysLen)
for (var keyI = keysLen - 1; keyI >= 0; --keyI) {
var key = keys[keyI]
var target = getValue(obj, key)
if(!target) { objResults[keyI] = null; continue }
if(!isObj(target)) target = fuzzysort.getPrepared(target)
objResults[keyI] = algorithm(search, target, searchLowerCode)
}
objResults.obj = obj // before scoreFn so scoreFn can use it
var score = scoreFn(objResults)
if(score === null) continue
if(score < threshold) continue
objResults.score = score
if(resultsLen < limit) { q.add(objResults); ++resultsLen }
else {
++limitedCount
if(score > q.peek().score) q.replaceTop(objResults)
}
if(iCurrent%1000/*itemsPerCheck*/ === 0) {
if(Date.now() - startMs >= 10/*asyncInterval*/) {
isNode?setImmediate(step):setTimeout(step)
return
}
}
}
// options.key
} else if(options && options.key) {
var key = options.key
for(; iCurrent >= 0; --iCurrent) { var obj = targets[iCurrent]
var target = getValue(obj, key)
if(!target) continue
if(!isObj(target)) target = fuzzysort.getPrepared(target)
var result = algorithm(search, target, searchLowerCode)
if(result === null) continue
if(result.score < threshold) continue
// have to clone result so duplicate targets from different obj can each reference the correct obj
result = {target:result.target, _targetLowerCodes:null, _nextBeginningIndexes:null, score:result.score, indexes:result.indexes, obj:obj} // hidden
if(resultsLen < limit) { q.add(result); ++resultsLen }
else {
++limitedCount
if(result.score > q.peek().score) q.replaceTop(result)
}
if(iCurrent%1000/*itemsPerCheck*/ === 0) {
if(Date.now() - startMs >= 10/*asyncInterval*/) {
isNode?setImmediate(step):setTimeout(step)
return
}
}
}
// no keys
} else {
for(; iCurrent >= 0; --iCurrent) { var target = targets[iCurrent]
if(!target) continue
if(!isObj(target)) target = fuzzysort.getPrepared(target)
var result = algorithm(search, target, searchLowerCode)
if(result === null) continue
if(result.score < threshold) continue
if(resultsLen < limit) { q.add(result); ++resultsLen }
else {
++limitedCount
if(result.score > q.peek().score) q.replaceTop(result)
}
if(iCurrent%1000/*itemsPerCheck*/ === 0) {
if(Date.now() - startMs >= 10/*asyncInterval*/) {
isNode?setImmediate(step):setTimeout(step)
return
}
}
}
}
if(resultsLen === 0) return resolve(noResults)
var results = new Array(resultsLen)
for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()
results.total = resultsLen + limitedCount
resolve(results)
}
isNode?setImmediate(step):step()
})
p.cancel = function() { canceled = true }
return p
},
highlight: function(result, hOpen, hClose) {
if(result === null) return null
if(hOpen === undefined) hOpen = '<b>'
if(hClose === undefined) hClose = '</b>'
var highlighted = ''
var matchesIndex = 0
var opened = false
var target = result.target
var targetLen = target.length
var matchesBest = result.indexes
for(var i = 0; i < targetLen; ++i) { var char = target[i]
if(matchesBest[matchesIndex] === i) {
++matchesIndex
if(!opened) { opened = true
highlighted += hOpen
}
if(matchesIndex === matchesBest.length) {
highlighted += char + hClose + target.substr(i+1)
break
}
} else {
if(opened) { opened = false
highlighted += hClose
}
}
highlighted += char
}
return highlighted
},
prepare: function(target) {
if(!target) return
return {target:target, _targetLowerCodes:fuzzysort.prepareLowerCodes(target), _nextBeginningIndexes:null, score:null, indexes:null, obj:null} // hidden
},
prepareSlow: function(target) {
if(!target) return
return {target:target, _targetLowerCodes:fuzzysort.prepareLowerCodes(target), _nextBeginningIndexes:fuzzysort.prepareNextBeginningIndexes(target), score:null, indexes:null, obj:null} // hidden
},
prepareSearch: function(search) {
if(!search) return
return fuzzysort.prepareLowerCodes(search)
},
// Below this point is only internal code
// Below this point is only internal code
// Below this point is only internal code
// Below this point is only internal code
getPrepared: function(target) {
if(target.length > 999) return fuzzysort.prepare(target) // don't cache huge targets
var targetPrepared = preparedCache.get(target)
if(targetPrepared !== undefined) return targetPrepared
targetPrepared = fuzzysort.prepare(target)
preparedCache.set(target, targetPrepared)
return targetPrepared
},
getPreparedSearch: function(search) {
if(search.length > 999) return fuzzysort.prepareSearch(search) // don't cache huge searches
var searchPrepared = preparedSearchCache.get(search)
if(searchPrepared !== undefined) return searchPrepared
searchPrepared = fuzzysort.prepareSearch(search)
preparedSearchCache.set(search, searchPrepared)
return searchPrepared
},
algorithm: function(searchLowerCodes, prepared, searchLowerCode) {
var targetLowerCodes = prepared._targetLowerCodes
var searchLen = searchLowerCodes.length
var targetLen = targetLowerCodes.length
var searchI = 0 // where we at
var targetI = 0 // where you at
var typoSimpleI = 0
var matchesSimpleLen = 0
// very basic fuzzy match; to remove non-matching targets ASAP!
// walk through target. find sequential matches.
// if all chars aren't found then exit
for(;;) {
var isMatch = searchLowerCode === targetLowerCodes[targetI]
if(isMatch) {
matchesSimple[matchesSimpleLen++] = targetI
++searchI; if(searchI === searchLen) break
searchLowerCode = searchLowerCodes[typoSimpleI===0?searchI : (typoSimpleI===searchI?searchI+1 : (typoSimpleI===searchI-1?searchI-1 : searchI))]
}
++targetI; if(targetI >= targetLen) { // Failed to find searchI
// Check for typo or exit
// we go as far as possible before trying to transpose
// then we transpose backwards until we reach the beginning
for(;;) {
if(searchI <= 1) return null // not allowed to transpose first char
if(typoSimpleI === 0) { // we haven't tried to transpose yet
--searchI
var searchLowerCodeNew = searchLowerCodes[searchI]
if(searchLowerCode === searchLowerCodeNew) continue // doesn't make sense to transpose a repeat char
typoSimpleI = searchI
} else {
if(typoSimpleI === 1) return null // reached the end of the line for transposing
--typoSimpleI
searchI = typoSimpleI
searchLowerCode = searchLowerCodes[searchI + 1]
var searchLowerCodeNew = searchLowerCodes[searchI]
if(searchLowerCode === searchLowerCodeNew) continue // doesn't make sense to transpose a repeat char
}
matchesSimpleLen = searchI
targetI = matchesSimple[matchesSimpleLen - 1] + 1
break
}
}
}
var searchI = 0
var typoStrictI = 0
var successStrict = false
var matchesStrictLen = 0
var nextBeginningIndexes = prepared._nextBeginningIndexes
if(nextBeginningIndexes === null) nextBeginningIndexes = prepared._nextBeginningIndexes = fuzzysort.prepareNextBeginningIndexes(prepared.target)
var firstPossibleI = targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]
// Our target string successfully matched all characters in sequence!
// Let's try a more advanced and strict test to improve the score
// only count it as a match if it's consecutive or a beginning character!
if(targetI !== targetLen) for(;;) {
if(targetI >= targetLen) {
// We failed to find a good spot for this search char, go back to the previous search char and force it forward
if(searchI <= 0) { // We failed to push chars forward for a better match
// transpose, starting from the beginning
++typoStrictI; if(typoStrictI > searchLen-2) break
if(searchLowerCodes[typoStrictI] === searchLowerCodes[typoStrictI+1]) continue // doesn't make sense to transpose a repeat char
targetI = firstPossibleI
continue
}
--searchI
var lastMatch = matchesStrict[--matchesStrictLen]
targetI = nextBeginningIndexes[lastMatch]
} else {
var isMatch = searchLowerCodes[typoStrictI===0?searchI : (typoStrictI===searchI?searchI+1 : (typoStrictI===searchI-1?searchI-1 : searchI))] === targetLowerCodes[targetI]
if(isMatch) {
matchesStrict[matchesStrictLen++] = targetI
++searchI; if(searchI === searchLen) { successStrict = true; break }
++targetI
} else {
targetI = nextBeginningIndexes[targetI]
}
}
}
{ // tally up the score & keep track of matches for highlighting later
if(successStrict) { var matchesBest = matchesStrict; var matchesBestLen = matchesStrictLen }
else { var matchesBest = matchesSimple; var matchesBestLen = matchesSimpleLen }
var score = 0
var lastTargetI = -1
for(var i = 0; i < searchLen; ++i) { var targetI = matchesBest[i]
// score only goes down if they're not consecutive
if(lastTargetI !== targetI - 1) score -= targetI
lastTargetI = targetI
}
if(!successStrict) {
score *= 1000
if(typoSimpleI !== 0) score += -20/*typoPenalty*/
} else {
if(typoStrictI !== 0) score += -20/*typoPenalty*/
}
score -= targetLen - searchLen
prepared.score = score
prepared.indexes = new Array(matchesBestLen); for(var i = matchesBestLen - 1; i >= 0; --i) prepared.indexes[i] = matchesBest[i]
return prepared
}
},
algorithmNoTypo: function(searchLowerCodes, prepared, searchLowerCode) {
var targetLowerCodes = prepared._targetLowerCodes
var searchLen = searchLowerCodes.length
var targetLen = targetLowerCodes.length
var searchI = 0 // where we at
var targetI = 0 // where you at
var matchesSimpleLen = 0
// very basic fuzzy match; to remove non-matching targets ASAP!
// walk through target. find sequential matches.
// if all chars aren't found then exit
for(;;) {
var isMatch = searchLowerCode === targetLowerCodes[targetI]
if(isMatch) {
matchesSimple[matchesSimpleLen++] = targetI
++searchI; if(searchI === searchLen) break
searchLowerCode = searchLowerCodes[searchI]
}
++targetI; if(targetI >= targetLen) return null // Failed to find searchI
}
var searchI = 0
var successStrict = false
var matchesStrictLen = 0
var nextBeginningIndexes = prepared._nextBeginningIndexes
if(nextBeginningIndexes === null) nextBeginningIndexes = prepared._nextBeginningIndexes = fuzzysort.prepareNextBeginningIndexes(prepared.target)
var firstPossibleI = targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]
// Our target string successfully matched all characters in sequence!
// Let's try a more advanced and strict test to improve the score
// only count it as a match if it's consecutive or a beginning character!
if(targetI !== targetLen) for(;;) {
if(targetI >= targetLen) {
// We failed to find a good spot for this search char, go back to the previous search char and force it forward
if(searchI <= 0) break // We failed to push chars forward for a better match
--searchI
var lastMatch = matchesStrict[--matchesStrictLen]
targetI = nextBeginningIndexes[lastMatch]
} else {
var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]
if(isMatch) {
matchesStrict[matchesStrictLen++] = targetI
++searchI; if(searchI === searchLen) { successStrict = true; break }
++targetI
} else {
targetI = nextBeginningIndexes[targetI]
}
}
}
{ // tally up the score & keep track of matches for highlighting later
if(successStrict) { var matchesBest = matchesStrict; var matchesBestLen = matchesStrictLen }
else { var matchesBest = matchesSimple; var matchesBestLen = matchesSimpleLen }
var score = 0
var lastTargetI = -1
for(var i = 0; i < searchLen; ++i) { var targetI = matchesBest[i]
// score only goes down if they're not consecutive
if(lastTargetI !== targetI - 1) score -= targetI
lastTargetI = targetI
}
if(!successStrict) score *= 1000
score -= targetLen - searchLen
prepared.score = score
prepared.indexes = new Array(matchesBestLen); for(var i = matchesBestLen - 1; i >= 0; --i) prepared.indexes[i] = matchesBest[i]
return prepared
}
},
prepareLowerCodes: function(str) {
var strLen = str.length
var lowerCodes = [] // new Array(strLen) sparse array is too slow
var lower = str.toLowerCase()
for(var i = 0; i < strLen; ++i) lowerCodes[i] = lower.charCodeAt(i)
return lowerCodes
},
prepareBeginningIndexes: function(target) {
var targetLen = target.length
var beginningIndexes = []; var beginningIndexesLen = 0
var wasUpper = false
var wasAlphanum = false
for(var i = 0; i < targetLen; ++i) {
var targetCode = target.charCodeAt(i)
var isUpper = targetCode>=65&&targetCode<=90
var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57
var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum
wasUpper = isUpper
wasAlphanum = isAlphanum
if(isBeginning) beginningIndexes[beginningIndexesLen++] = i
}
return beginningIndexes
},
prepareNextBeginningIndexes: function(target) {
var targetLen = target.length
var beginningIndexes = fuzzysort.prepareBeginningIndexes(target)
var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow
var lastIsBeginning = beginningIndexes[0]
var lastIsBeginningI = 0
for(var i = 0; i < targetLen; ++i) {
if(lastIsBeginning > i) {
nextBeginningIndexes[i] = lastIsBeginning
} else {
lastIsBeginning = beginningIndexes[++lastIsBeginningI]
nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning
}
}
return nextBeginningIndexes
},
cleanup: cleanup,
new: fuzzysortNew,
}
return fuzzysort
} // fuzzysortNew
// This stuff is outside fuzzysortNew, because it's shared with instances of fuzzysort.new()
var isNode = typeof require !== 'undefined' && typeof window === 'undefined'
// var MAX_INT = Number.MAX_SAFE_INTEGER
// var MIN_INT = Number.MIN_VALUE
var preparedCache = new Map()
var preparedSearchCache = new Map()
var noResults = []; noResults.total = 0
var matchesSimple = []; var matchesStrict = []
function cleanup() { preparedCache.clear(); preparedSearchCache.clear(); matchesSimple = []; matchesStrict = [] }
function defaultScoreFn(a) {
var max = -9007199254740991
for (var i = a.length - 1; i >= 0; --i) {
var result = a[i]; if(result === null) continue
var score = result.score
if(score > max) max = score
}
if(max === -9007199254740991) return null
return max
}
// prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]
// prop = 'key1.key2' 10ms
// prop = ['key1', 'key2'] 27ms
function getValue(obj, prop) {
var tmp = obj[prop]; if(tmp !== undefined) return tmp
var segs = prop
if(!Array.isArray(prop)) segs = prop.split('.')
var len = segs.length
var i = -1
while (obj && (++i < len)) obj = obj[segs[i]]
return obj
}
function isObj(x) { return typeof x === 'object' } // faster as a function
// Hacked version of https://github.com/lemire/FastPriorityQueue.js
var fastpriorityqueue=function(){var r=[],o=0,e={};function n(){for(var e=0,n=r[e],c=1;c<o;){var f=c+1;e=c,f<o&&r[f].score<r[c].score&&(e=f),r[e-1>>1]=r[e],c=1+(e<<1)}for(var a=e-1>>1;e>0&&n.score<r[a].score;a=(e=a)-1>>1)r[e]=r[a];r[e]=n}return e.add=function(e){var n=o;r[o++]=e;for(var c=n-1>>1;n>0&&e.score<r[c].score;c=(n=c)-1>>1)r[n]=r[c];r[n]=e},e.poll=function(){if(0!==o){var e=r[0];return r[0]=r[--o],n(),e}},e.peek=function(e){if(0!==o)return r[0]},e.replaceTop=function(o){r[0]=o,n()},e};
var q = fastpriorityqueue() // reuse this, except for async, it needs to make its own
return fuzzysortNew()
}) // UMD
// TODO: (performance) wasm version!?
// TODO: (performance) layout memory in an optimal way to go fast by avoiding cache misses
// TODO: (performance) preparedCache is a memory leak
// TODO: (like sublime) backslash === forwardslash
// TODO: (performance) i have no idea how well optizmied the allowing typos algorithm is

View File

@ -1,111 +0,0 @@
.CodeMirror-merge {
position: relative;
white-space: pre;
}
.CodeMirror-merge, .CodeMirror-merge .CodeMirror {
min-height:50px;
}
.CodeMirror-merge-2pane .CodeMirror-merge-pane { width: 48%; }
.CodeMirror-merge-2pane .CodeMirror-merge-gap { width: 4%; }
.CodeMirror-merge-3pane .CodeMirror-merge-pane { width: 31%; }
.CodeMirror-merge-3pane .CodeMirror-merge-gap { width: 3.5%; }
.CodeMirror-merge-pane {
display: inline-block;
white-space: normal;
vertical-align: top;
}
.CodeMirror-merge-pane-rightmost {
position: absolute;
right: 0px;
z-index: 1;
}
.CodeMirror-merge-gap {
z-index: 2;
display: inline-block;
height: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
overflow: hidden;
position: relative;
background: #515151;
}
.CodeMirror-merge-scrolllock-wrap {
position: absolute;
bottom: 0; left: 50%;
}
.CodeMirror-merge-scrolllock {
position: relative;
left: -50%;
cursor: pointer;
color: #d8d8d8;
line-height: 1;
}
.CodeMirror-merge-copybuttons-left, .CodeMirror-merge-copybuttons-right {
position: absolute;
left: 0; top: 0;
right: 0; bottom: 0;
line-height: 1;
}
.CodeMirror-merge-copy {
position: absolute;
cursor: pointer;
color: #ce374b;
z-index: 3;
}
.CodeMirror-merge-copy-reverse {
position: absolute;
cursor: pointer;
color: #44c;
}
.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy { left: 2px; }
.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy { right: 2px; }
.CodeMirror-merge-r-inserted, .CodeMirror-merge-l-inserted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);
background-position: bottom left;
background-repeat: repeat-x;
}
.CodeMirror-merge-r-deleted, .CodeMirror-merge-l-deleted {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);
background-position: bottom left;
background-repeat: repeat-x;
}
.CodeMirror-merge-r-chunk { background: #9a6868; }
.CodeMirror-merge-r-chunk-start { /*border-top: 1px solid #ee8; */}
.CodeMirror-merge-r-chunk-end {/* border-bottom: 1px solid #ee8; */}
.CodeMirror-merge-r-connect { fill:#9a6868;}
.CodeMirror-merge-l-chunk { background: #eef; }
.CodeMirror-merge-l-chunk-start { border-top: 1px solid #88e; }
.CodeMirror-merge-l-chunk-end { border-bottom: 1px solid #88e; }
.CodeMirror-merge-l-connect { fill: #eef; stroke: #88e; stroke-width: 1px; }
.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk { background: #dfd; }
.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start { border-top: 1px solid #4e4; }
.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #4e4; }
.CodeMirror-merge-collapsed-widget:before {
content: "(...)";
}
.CodeMirror-merge-collapsed-widget {
cursor: pointer;
color: #88b;
background: #eef;
border: 1px solid #ddf;
font-size: 90%;
padding: 0 3px;
border-radius: 4px;
}
.CodeMirror-merge-collapsed-line .CodeMirror-gutter-elt { display: none; }

File diff suppressed because it is too large Load Diff

View File

@ -1,692 +0,0 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
// mode javascript
// TODO actually recognize syntax of TypeScript constructs
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineMode("javascript", function(config, parserConfig) {
var indentUnit = config.indentUnit;
var statementIndent = parserConfig.statementIndent;
var jsonldMode = parserConfig.jsonld;
var jsonMode = parserConfig.json || jsonldMode;
var isTS = parserConfig.typescript;
var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;
// Tokenizer
var keywords = function(){
function kw(type) {return {type: type, style: "keyword"};}
var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c");
var operator = kw("operator"), atom = {type: "atom", style: "atom"};
var jsKeywords = {
"if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
"return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, "debugger": C,
"var": kw("var"), "const": kw("var"), "let": kw("var"),
"function": kw("function"), "catch": kw("catch"),
"for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
"in": operator, "typeof": operator, "instanceof": operator,
"true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
"this": kw("this"), "module": kw("module"), "class": kw("class"), "super": kw("atom"),
"yield": C, "export": kw("export"), "import": kw("import"), "extends": C
};
// Extend the 'normal' keywords with the TypeScript language extensions
if (isTS) {
var type = {type: "variable", style: "variable-3"};
var tsKeywords = {
// object-like things
"interface": kw("interface"),
"extends": kw("extends"),
"constructor": kw("constructor"),
// scope modifiers
"public": kw("public"),
"private": kw("private"),
"protected": kw("protected"),
"static": kw("static"),
// types
"string": type, "number": type, "bool": type, "any": type
};
for (var attr in tsKeywords) {
jsKeywords[attr] = tsKeywords[attr];
}
}
return jsKeywords;
}();
var isOperatorChar = /[+\-*&%=<>!?|~^]/;
var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;
function readRegexp(stream) {
var escaped = false, next, inSet = false;
while ((next = stream.next()) != null) {
if (!escaped) {
if (next == "/" && !inSet) return;
if (next == "[") inSet = true;
else if (inSet && next == "]") inSet = false;
}
escaped = !escaped && next == "\\";
}
}
// Used as scratch variables to communicate multiple values without
// consing up tons of objects.
var type, content;
function ret(tp, style, cont) {
type = tp; content = cont;
return style;
}
function tokenBase(stream, state) {
var ch = stream.next();
if (ch == '"' || ch == "'") {
state.tokenize = tokenString(ch);
return state.tokenize(stream, state);
} else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
return ret("number", "number");
} else if (ch == "." && stream.match("..")) {
return ret("spread", "meta");
} else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
return ret(ch);
} else if (ch == "=" && stream.eat(">")) {
return ret("=>", "operator");
} else if (ch == "0" && stream.eat(/x/i)) {
stream.eatWhile(/[\da-f]/i);
return ret("number", "number");
} else if (/\d/.test(ch)) {
stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);
return ret("number", "number");
} else if (ch == "/") {
if (stream.eat("*")) {
state.tokenize = tokenComment;
return tokenComment(stream, state);
} else if (stream.eat("/")) {
stream.skipToEnd();
return ret("comment", "comment");
} else if (state.lastType == "operator" || state.lastType == "keyword c" ||
state.lastType == "sof" || /^[\[{}\(,;:]$/.test(state.lastType)) {
readRegexp(stream);
stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);
return ret("regexp", "string-2");
} else {
stream.eatWhile(isOperatorChar);
return ret("operator", "operator", stream.current());
}
} else if (ch == "`") {
state.tokenize = tokenQuasi;
return tokenQuasi(stream, state);
} else if (ch == "#") {
stream.skipToEnd();
return ret("error", "error");
} else if (isOperatorChar.test(ch)) {
stream.eatWhile(isOperatorChar);
return ret("operator", "operator", stream.current());
} else if (wordRE.test(ch)) {
stream.eatWhile(wordRE);
var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];
return (known && state.lastType != ".") ? ret(known.type, known.style, word) :
ret("variable", "variable", word);
}
}
function tokenString(quote) {
return function(stream, state) {
var escaped = false, next;
if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){
state.tokenize = tokenBase;
return ret("jsonld-keyword", "meta");
}
while ((next = stream.next()) != null) {
if (next == quote && !escaped) break;
escaped = !escaped && next == "\\";
}
if (!escaped) state.tokenize = tokenBase;
return ret("string", "string");
};
}
function tokenComment(stream, state) {
var maybeEnd = false, ch;
while (ch = stream.next()) {
if (ch == "/" && maybeEnd) {
state.tokenize = tokenBase;
break;
}
maybeEnd = (ch == "*");
}
return ret("comment", "comment");
}
function tokenQuasi(stream, state) {
var escaped = false, next;
while ((next = stream.next()) != null) {
if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {
state.tokenize = tokenBase;
break;
}
escaped = !escaped && next == "\\";
}
return ret("quasi", "string-2", stream.current());
}
var brackets = "([{}])";
// This is a crude lookahead trick to try and notice that we're
// parsing the argument patterns for a fat-arrow function before we
// actually hit the arrow token. It only works if the arrow is on
// the same line as the arguments and there's no strange noise
// (comments) in between. Fallback is to only notice when we hit the
// arrow, and not declare the arguments as locals for the arrow
// body.
function findFatArrow(stream, state) {
if (state.fatArrowAt) state.fatArrowAt = null;
var arrow = stream.string.indexOf("=>", stream.start);
if (arrow < 0) return;
var depth = 0, sawSomething = false;
for (var pos = arrow - 1; pos >= 0; --pos) {
var ch = stream.string.charAt(pos);
var bracket = brackets.indexOf(ch);
if (bracket >= 0 && bracket < 3) {
if (!depth) { ++pos; break; }
if (--depth == 0) break;
} else if (bracket >= 3 && bracket < 6) {
++depth;
} else if (wordRE.test(ch)) {
sawSomething = true;
} else if (/["'\/]/.test(ch)) {
return;
} else if (sawSomething && !depth) {
++pos;
break;
}
}
if (sawSomething && !depth) state.fatArrowAt = pos;
}
// Parser
var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true};
function JSLexical(indented, column, type, align, prev, info) {
this.indented = indented;
this.column = column;
this.type = type;
this.prev = prev;
this.info = info;
if (align != null) this.align = align;
}
function inScope(state, varname) {
for (var v = state.localVars; v; v = v.next)
if (v.name == varname) return true;
for (var cx = state.context; cx; cx = cx.prev) {
for (var v = cx.vars; v; v = v.next)
if (v.name == varname) return true;
}
}
function parseJS(state, style, type, content, stream) {
var cc = state.cc;
// Communicate our context to the combinators.
// (Less wasteful than consing up a hundred closures on every call.)
cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;
if (!state.lexical.hasOwnProperty("align"))
state.lexical.align = true;
while(true) {
var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;
if (combinator(type, content)) {
while(cc.length && cc[cc.length - 1].lex)
cc.pop()();
if (cx.marked) return cx.marked;
if (type == "variable" && inScope(state, content)) return "variable-2";
return style;
}
}
}
// Combinator utils
var cx = {state: null, column: null, marked: null, cc: null};
function pass() {
for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
}
function cont() {
pass.apply(null, arguments);
return true;
}
function register(varname) {
function inList(list) {
for (var v = list; v; v = v.next)
if (v.name == varname) return true;
return false;
}
var state = cx.state;
if (state.context) {
cx.marked = "def";
if (inList(state.localVars)) return;
state.localVars = {name: varname, next: state.localVars};
} else {
if (inList(state.globalVars)) return;
if (parserConfig.globalVars)
state.globalVars = {name: varname, next: state.globalVars};
}
}
// Combinators
var defaultVars = {name: "this", next: {name: "arguments"}};
function pushcontext() {
cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};
cx.state.localVars = defaultVars;
}
function popcontext() {
cx.state.localVars = cx.state.context.vars;
cx.state.context = cx.state.context.prev;
}
function pushlex(type, info) {
var result = function() {
var state = cx.state, indent = state.indented;
if (state.lexical.type == "stat") indent = state.lexical.indented;
else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)
indent = outer.indented;
state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
};
result.lex = true;
return result;
}
function poplex() {
var state = cx.state;
if (state.lexical.prev) {
if (state.lexical.type == ")")
state.indented = state.lexical.indented;
state.lexical = state.lexical.prev;
}
}
poplex.lex = true;
function expect(wanted) {
function exp(type) {
if (type == wanted) return cont();
else if (wanted == ";") return pass();
else return cont(exp);
};
return exp;
}
function statement(type, value) {
if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex);
if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex);
if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
if (type == "{") return cont(pushlex("}"), block, poplex);
if (type == ";") return cont();
if (type == "if") {
if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex)
cx.state.cc.pop()();
return cont(pushlex("form"), expression, statement, poplex, maybeelse);
}
if (type == "function") return cont(functiondef);
if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);
if (type == "variable") return cont(pushlex("stat"), maybelabel);
if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"),
block, poplex, poplex);
if (type == "case") return cont(expression, expect(":"));
if (type == "default") return cont(expect(":"));
if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
statement, poplex, popcontext);
if (type == "module") return cont(pushlex("form"), pushcontext, afterModule, popcontext, poplex);
if (type == "class") return cont(pushlex("form"), className, poplex);
if (type == "export") return cont(pushlex("form"), afterExport, poplex);
if (type == "import") return cont(pushlex("form"), afterImport, poplex);
return pass(pushlex("stat"), expression, expect(";"), poplex);
}
function expression(type) {
return expressionInner(type, false);
}
function expressionNoComma(type) {
return expressionInner(type, true);
}
function expressionInner(type, noComma) {
if (cx.state.fatArrowAt == cx.stream.start) {
var body = noComma ? arrowBodyNoComma : arrowBody;
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext);
else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);
}
var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
if (type == "function") return cont(functiondef, maybeop);
if (type == "keyword c") return cont(noComma ? maybeexpressionNoComma : maybeexpression);
if (type == "(") return cont(pushlex(")"), maybeexpression, comprehension, expect(")"), poplex, maybeop);
if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);
if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);
if (type == "{") return contCommasep(objprop, "}", null, maybeop);
if (type == "quasi") { return pass(quasi, maybeop); }
return cont();
}
function maybeexpression(type) {
if (type.match(/[;\}\)\],]/)) return pass();
return pass(expression);
}
function maybeexpressionNoComma(type) {
if (type.match(/[;\}\)\],]/)) return pass();
return pass(expressionNoComma);
}
function maybeoperatorComma(type, value) {
if (type == ",") return cont(expression);
return maybeoperatorNoComma(type, value, false);
}
function maybeoperatorNoComma(type, value, noComma) {
var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
var expr = noComma == false ? expression : expressionNoComma;
if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
if (type == "operator") {
if (/\+\+|--/.test(value)) return cont(me);
if (value == "?") return cont(expression, expect(":"), expr);
return cont(expr);
}
if (type == "quasi") { return pass(quasi, me); }
if (type == ";") return;
if (type == "(") return contCommasep(expressionNoComma, ")", "call", me);
if (type == ".") return cont(property, me);
if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);
}
function quasi(type, value) {
if (type != "quasi") return pass();
if (value.slice(value.length - 2) != "${") return cont(quasi);
return cont(expression, continueQuasi);
}
function continueQuasi(type) {
if (type == "}") {
cx.marked = "string-2";
cx.state.tokenize = tokenQuasi;
return cont(quasi);
}
}
function arrowBody(type) {
findFatArrow(cx.stream, cx.state);
return pass(type == "{" ? statement : expression);
}
function arrowBodyNoComma(type) {
findFatArrow(cx.stream, cx.state);
return pass(type == "{" ? statement : expressionNoComma);
}
function maybelabel(type) {
if (type == ":") return cont(poplex, statement);
return pass(maybeoperatorComma, expect(";"), poplex);
}
function property(type) {
if (type == "variable") {cx.marked = "property"; return cont();}
}
function objprop(type, value) {
if (type == "variable" || cx.style == "keyword") {
cx.marked = "property";
if (value == "get" || value == "set") return cont(getterSetter);
return cont(afterprop);
} else if (type == "number" || type == "string") {
cx.marked = jsonldMode ? "property" : (cx.style + " property");
return cont(afterprop);
} else if (type == "jsonld-keyword") {
return cont(afterprop);
} else if (type == "[") {
return cont(expression, expect("]"), afterprop);
}
}
function getterSetter(type) {
if (type != "variable") return pass(afterprop);
cx.marked = "property";
return cont(functiondef);
}
function afterprop(type) {
if (type == ":") return cont(expressionNoComma);
if (type == "(") return pass(functiondef);
}
function commasep(what, end) {
function proceed(type) {
if (type == ",") {
var lex = cx.state.lexical;
if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
return cont(what, proceed);
}
if (type == end) return cont();
return cont(expect(end));
}
return function(type) {
if (type == end) return cont();
return pass(what, proceed);
};
}
function contCommasep(what, end, info) {
for (var i = 3; i < arguments.length; i++)
cx.cc.push(arguments[i]);
return cont(pushlex(end, info), commasep(what, end), poplex);
}
function block(type) {
if (type == "}") return cont();
return pass(statement, block);
}
function maybetype(type) {
if (isTS && type == ":") return cont(typedef);
}
function typedef(type) {
if (type == "variable"){cx.marked = "variable-3"; return cont();}
}
function vardef() {
return pass(pattern, maybetype, maybeAssign, vardefCont);
}
function pattern(type, value) {
if (type == "variable") { register(value); return cont(); }
if (type == "[") return contCommasep(pattern, "]");
if (type == "{") return contCommasep(proppattern, "}");
}
function proppattern(type, value) {
if (type == "variable" && !cx.stream.match(/^\s*:/, false)) {
register(value);
return cont(maybeAssign);
}
if (type == "variable") cx.marked = "property";
return cont(expect(":"), pattern, maybeAssign);
}
function maybeAssign(_type, value) {
if (value == "=") return cont(expressionNoComma);
}
function vardefCont(type) {
if (type == ",") return cont(vardef);
}
function maybeelse(type, value) {
if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex);
}
function forspec(type) {
if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex);
}
function forspec1(type) {
if (type == "var") return cont(vardef, expect(";"), forspec2);
if (type == ";") return cont(forspec2);
if (type == "variable") return cont(formaybeinof);
return pass(expression, expect(";"), forspec2);
}
function formaybeinof(_type, value) {
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
return cont(maybeoperatorComma, forspec2);
}
function forspec2(type, value) {
if (type == ";") return cont(forspec3);
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
return pass(expression, expect(";"), forspec3);
}
function forspec3(type) {
if (type != ")") cont(expression);
}
function functiondef(type, value) {
if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
if (type == "variable") {register(value); return cont(functiondef);}
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, statement, popcontext);
}
function funarg(type) {
if (type == "spread") return cont(funarg);
return pass(pattern, maybetype);
}
function className(type, value) {
if (type == "variable") {register(value); return cont(classNameAfter);}
}
function classNameAfter(type, value) {
if (value == "extends") return cont(expression, classNameAfter);
if (type == "{") return cont(pushlex("}"), classBody, poplex);
}
function classBody(type, value) {
if (type == "variable" || cx.style == "keyword") {
cx.marked = "property";
if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody);
return cont(functiondef, classBody);
}
if (value == "*") {
cx.marked = "keyword";
return cont(classBody);
}
if (type == ";") return cont(classBody);
if (type == "}") return cont();
}
function classGetterSetter(type) {
if (type != "variable") return pass();
cx.marked = "property";
return cont();
}
function afterModule(type, value) {
if (type == "string") return cont(statement);
if (type == "variable") { register(value); return cont(maybeFrom); }
}
function afterExport(_type, value) {
if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }
if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }
return pass(statement);
}
function afterImport(type) {
if (type == "string") return cont();
return pass(importSpec, maybeFrom);
}
function importSpec(type, value) {
if (type == "{") return contCommasep(importSpec, "}");
if (type == "variable") register(value);
return cont();
}
function maybeFrom(_type, value) {
if (value == "from") { cx.marked = "keyword"; return cont(expression); }
}
function arrayLiteral(type) {
if (type == "]") return cont();
return pass(expressionNoComma, maybeArrayComprehension);
}
function maybeArrayComprehension(type) {
if (type == "for") return pass(comprehension, expect("]"));
if (type == ",") return cont(commasep(maybeexpressionNoComma, "]"));
return pass(commasep(expressionNoComma, "]"));
}
function comprehension(type) {
if (type == "for") return cont(forspec, comprehension);
if (type == "if") return cont(expression, comprehension);
}
function isContinuedStatement(state, textAfter) {
return state.lastType == "operator" || state.lastType == "," ||
isOperatorChar.test(textAfter.charAt(0)) ||
/[,.]/.test(textAfter.charAt(0));
}
// Interface
return {
startState: function(basecolumn) {
var state = {
tokenize: tokenBase,
lastType: "sof",
cc: [],
lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
localVars: parserConfig.localVars,
context: parserConfig.localVars && {vars: parserConfig.localVars},
indented: 0
};
if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")
state.globalVars = parserConfig.globalVars;
return state;
},
token: function(stream, state) {
if (stream.sol()) {
if (!state.lexical.hasOwnProperty("align"))
state.lexical.align = false;
state.indented = stream.indentation();
findFatArrow(stream, state);
}
if (state.tokenize != tokenComment && stream.eatSpace()) return null;
var style = state.tokenize(stream, state);
if (type == "comment") return style;
state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;
return parseJS(state, style, type, content, stream);
},
indent: function(state, textAfter) {
if (state.tokenize == tokenComment) return CodeMirror.Pass;
if (state.tokenize != tokenBase) return 0;
var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;
// Kludge to prevent 'maybelse' from blocking lexical scope pops
if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {
var c = state.cc[i];
if (c == poplex) lexical = lexical.prev;
else if (c != maybeelse) break;
}
if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev;
if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")
lexical = lexical.prev;
var type = lexical.type, closing = firstChar == type;
if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0);
else if (type == "form" && firstChar == "{") return lexical.indented;
else if (type == "form") return lexical.indented + indentUnit;
else if (type == "stat")
return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);
else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
else if (lexical.align) return lexical.column + (closing ? 0 : 1);
else return lexical.indented + (closing ? 0 : indentUnit);
},
electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
blockCommentStart: jsonMode ? null : "/*",
blockCommentEnd: jsonMode ? null : "*/",
lineComment: jsonMode ? null : "//",
fold: "brace",
helperType: jsonMode ? "json" : "javascript",
jsonldMode: jsonldMode,
jsonMode: jsonMode
};
});
CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/);
CodeMirror.defineMIME("text/javascript", "javascript");
CodeMirror.defineMIME("text/ecmascript", "javascript");
CodeMirror.defineMIME("application/javascript", "javascript");
CodeMirror.defineMIME("application/x-javascript", "javascript");
CodeMirror.defineMIME("application/ecmascript", "javascript");
CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});
CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true});
CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });
CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true });
});

View File

@ -1,427 +0,0 @@
//需求:表情栏可以隐藏显示,高度只要一点高
function sd_create_editor(params) {
// var minHeight; //最小高度
var paramsHeight = params.height; //设定的高度
var id = arguments[1] ? arguments[1] : undefined;
var type = arguments[2] ? arguments[2] : '';
var paramsWidth = params.width == undefined ? "100%" : params.width;
var editor = params.kindutil.create(params.textarea, {
resizeType: 1, minWidth: "1px", width: "94%",
height: "33px",// == undefined ? "30px":paramsHeight+"px",
minHeight: "33px",// == undefined ? "30px":paramsHeight+"px",
width: params.width,
/*
items:['emoticons','fontname',
'forecolor', 'hilitecolor', 'bold', '|', 'justifyleft', 'justifycenter', 'insertorderedlist','insertunorderedlist', '|',
'formatblock', 'fontsize', '|','indent', 'outdent',
'|','imagedirectupload','more'],*/
items: ['code', 'emoticons', 'fontname',
'forecolor', 'hilitecolor', 'bold', '|', 'justifyleft', 'justifycenter', 'insertorderedlist', 'insertunorderedlist', '|',
'formatblock', 'fontsize', '|', 'indent', 'outdent',
'|', 'imagedirectupload', 'table', 'media', 'preview', "more"
],
afterChange: function () {//按键事件
var edit = this.edit;
var body = edit.doc.body;
edit.iframe.height(paramsHeight);
this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : (params.kindutil.GECKO ? body.offsetHeight + 26 : body.offsetHeight + 7)), paramsHeight));
},
afterBlur: function () {
//params.toolbar_container.hide();
params.textarea.blur();
sd_check_editor_form_field({ content: this, contentmsg: params.contentmsg, textarea: params.textarea });
if (this.isEmpty()) {
this.edit.html("<span id='hint' style='color:#999999;font-size:12px;'>我要回复</span>");
}
//params.toolbar_container.hide();
$('#reply_image_' + id).addClass('imageFuzzy');
if (/^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(this.edit.html())) {
params.submit_btn.hide();
params.toolbar_container.hide();
this.resize("100%", null);
} else if (this.edit.html().trim() != "") {
params.submit_btn.show();
params.toolbar_container.show();
}
//params.submit_btn.css("display","none");
},
afterFocus: function () {
var edit = this.edit;
var body = edit.doc.body;
if (/^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(edit.html())) {
edit.html('');
}
params.submit_btn.show();
params.contentmsg.hide();
params.toolbar_container.show();
// params.toolbar_container.show();
$('#reply_image_' + id).removeClass('imageFuzzy');
//edit.iframe.width(paramsWidth);
this.resize("100%", null);
this.resize(paramsWidth, null);
//params.submit_btn.show();
},
afterCreate: function () {
//params.submit_btn.hide();
var toolbar = $("div[class='ke-toolbar']", params.div_form);
toolbar.css('display', 'inline');
toolbar.css('padding', 0);
$(".ke-outline>.ke-toolbar-icon", toolbar).append('表情');
params.toolbar_container.append(toolbar);
params.toolbar_container.hide();
params.submit_btn.hide();
//init
var edit = this.edit;
var body = edit.doc.body;
edit.iframe[0].scroll = 'no';
body.style.overflowY = 'hidden';
//reset height
paramsHeight = paramsHeight == undefined ? params.kindutil.removeUnit(this.height) : paramsHeight;
edit.iframe.height(paramsHeight);
edit.html("<span id='hint' style='color:#999999;font-size:12px;'>我要回复</span>");
this.resize(null, paramsHeight);// Math.max((params.kindutil.IE ? body.scrollHeight : body.offsetHeight)+ paramsHeight , paramsHeight)
// params.toolbar_container.hide();
if (typeof enableAt === 'function') {
enableAt(this, id, type);
}
}
}).loadPlugin('paste');
return editor;
}
function sd_create_shixun_editor(params) {
// var minHeight; //最小高度
var paramsHeight = params.height; //设定的高度
var id = arguments[1] ? arguments[1] : undefined;
var type = arguments[2] ? arguments[2] : '';
var paramsWidth = params.width == undefined ? "100%" : params.width;
var editor = params.kindutil.create(params.textarea, {
resizeType: 1, minWidth: "1px", width: "94%",
height: "33px",// == undefined ? "30px":paramsHeight+"px",
minHeight: "33px",// == undefined ? "30px":paramsHeight+"px",
width: params.width,
/*
items:['emoticons','fontname',
'forecolor', 'hilitecolor', 'bold', '|', 'justifyleft', 'justifycenter', 'insertorderedlist','insertunorderedlist', '|',
'formatblock', 'fontsize', '|','indent', 'outdent',
'|','imagedirectupload','more'],*/
items: ['imagedirectupload'],
afterChange: function () {//按键事件
if (this.isEmpty() || this.edit.doc.body.innerText == '说点什么') {
$('#mini_comment_section').height('auto')
} else {
var edit = this.edit;
var body = edit.doc.body;
var newHeight = 0;
var FF = !(window.mozInnerScreenX == null);
if (FF) { // 火狐下处理方式不一样
newHeight = $(body).height()
} else {
$(body).children().each(function () { newHeight += $(this).height() });
}
// var newHeight = $(body).height()
var maxHeight = 357 // $(window).height() - 150 - 57; // 150 上部距离 57 下部距离
newHeight = newHeight <= maxHeight ? newHeight : maxHeight
if (newHeight > 150) {
if (FF) { // 火狐下处理方式不一样
this.resize("100%", (newHeight + 20) + 'px');
} else {
this.resize("100%", newHeight + 'px');
}
$('#mini_comment_section').height(newHeight + 57)
} else {
this.resize("100%", '150px');
$('#mini_comment_section').height('auto')
}
}
//edit.iframe.height(paramsHeight);
//this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : (params.kindutil.GECKO ? body.offsetHeight+26:body.offsetHeight+7)) , 15));
},
afterBlur: function () {
//params.toolbar_container.hide();
params.textarea.blur();
sd_check_editor_form_field({ content: this, contentmsg: params.contentmsg, textarea: params.textarea });
if (this.isEmpty()) {
$('#mini_comment_section').height('auto')
this.edit.html("<span id='hint' style='color:#999999;font-size:14px;'>说点什么</span>");
params.submit_btn.hide();
params.toolbar_container.hide();
this.resize("100%", "30px");
$("#dis_reply_id").val("");
if ($("#editor_panel").length > 0) {
$("#editor_panel").attr("style", "margin-top:9px;flex: 1;");
$("#editor_panel").parents("form").addClass("df")
}
}
//params.toolbar_container.hide();
/*$('#reply_image_' + id).addClass('imageFuzzy');
if(/^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(this.edit.html())){
params.submit_btn.hide();
params.toolbar_container.hide();
this.resize("100%", "30px");
}else if(this.edit.html().trim() != ""){
params.submit_btn.show();
params.toolbar_container.show();
}*/
//params.submit_btn.css("display","none");
// $('#mini_comment_section').height('auto')
},
afterFocus: function () {
var edit = this.edit;
var body = edit.doc.body;
if (/^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(edit.html())) {
edit.html("");
}
params.submit_btn.show();
params.contentmsg.hide();
params.toolbar_container.show();
// params.toolbar_container.show();
$('#reply_image_' + id).removeClass('imageFuzzy');
//edit.iframe.width(paramsWidth);
var newHeight = $(body).height()
if (newHeight < 150) {
this.resize("100%", "150px");
this.resize(paramsWidth, "150px");
}
if ($("#editor_panel").length > 0) {
$("#editor_panel").attr("style", "width:100%;margin-top:9px;");
$("#editor_panel").parents("form").removeClass("df")
}
//params.submit_btn.show();
// $('#mini_comment_section').height('244px')
},
afterCreate: function () {
//params.submit_btn.hide();
var toolbar = $("div[class='ke-toolbar']", params.div_form);
toolbar.css('display', 'inline');
toolbar.css('padding', 0);
$(".ke-outline>.ke-toolbar-icon", toolbar).append('表情');
params.toolbar_container.append(toolbar);
params.toolbar_container.hide();
params.submit_btn.hide();
//init
var edit = this.edit;
var body = edit.doc.body;
edit.iframe[0].scroll = 'no';
// body.style.overflowY = 'hidden';
body.style['padding-top'] = '2px';
body.style['padding-left'] = '5px';
// <style type='text/css'>body{padding-top: 2px;padding-left: 5px;}</style>
//reset height
paramsHeight = paramsHeight == undefined ? params.kindutil.removeUnit(this.height) : paramsHeight;
edit.iframe.height(paramsHeight);
edit.html("<span id='hint' style='color:#999999;font-size:14px;'>说点什么</span>");
this.resize(null, paramsHeight);// Math.max((params.kindutil.IE ? body.scrollHeight : body.offsetHeight)+ paramsHeight , paramsHeight)
// params.toolbar_container.hide();
if (typeof enableAt === 'function') {
enableAt(this, id, type);
}
var iframe = edit.iframe[0]
$(iframe.contentDocument.head).append(
$("<style type='text/css'>::-webkit-scrollbar{height: 10px;width: 6px !important;background: rgba(0,0,0,.1) !important;} ::-webkit-scrollbar-thumb {border-radius: 6px;background: #ADADAD;};</style>"));
}
}).loadPlugin('paste');
return editor;
}
function sd_check_editor_form_field(params) {
var result = true;
if (params.content != undefined) {
if (params.content.isEmpty()) {
result = false;
}
if (params.content.html() != params.textarea.html() || params.issubmit == true) {
params.textarea.html(params.content.html());
params.content.sync();
if (params.content.isEmpty() || /^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(params.textarea.html())) {
params.contentmsg.html('内容不能为空');
params.contentmsg.css({ color: '#ff0000' });
} else {
params.contentmsg.html('填写正确');
params.contentmsg.css({ color: '#008000' });
}
params.contentmsg.show();
}
}
return result;
}
function sd_create_form(params) {
params.form.submit(function () {
var flag = false;
if (params.form.attr('data-remote') != undefined) {
flag = true
}
var is_checked = sd_check_editor_form_field({
issubmit: true,
content: params.editor,
contentmsg: params.contentmsg,
textarea: params.textarea
});
if (is_checked) {
if (flag) {
return true;
} else {
$(this)[0].submit();
return false;
}
}
return false;
});
}
function sd_reset_editor_form(params) {
params.form[0].reset();
params.textarea.empty();
if (params.editor != undefined) {
params.editor.html(params.textarea.html());
}
params.contentmsg.hide();
}
//第二个参数是高度,可以传,可以不传
function sd_create_editor_from_data(id) {
var height = arguments[1] ? arguments[1] : undefined;
var width = arguments[2] ? arguments[2] : undefined;
var type = arguments[3] ? arguments[3] : undefined;
var K = KindEditor;
$("div[nhname='new_message_" + id + "']").each(function () {
var params = {};
params.kindutil = K;
params.div_form = $(this);
params.form = $("form", params.div_form);
if (params.form == undefined || params.form.length == 0) {
return;
}
params.textarea = $("textarea[nhname='new_message_textarea_" + id + "']", params.div_form);
params.contentmsg = $("span[nhname='contentmsg_" + id + "']", params.div_form);
params.toolbar_container = $("div[nhname='toolbar_container_" + id + "']", params.div_form);
params.cancel_btn = $("#new_message_cancel_btn_" + id);
params.submit_btn = $("#new_message_submit_btn_" + id);
params.height = height;
params.width = width;
if (params.textarea.data('init') == undefined) {
params.editor = sd_create_editor(params, id, type);
sd_create_form(params);
params.cancel_btn.click(function () {
sd_reset_editor_form(params);
});
params.submit_btn.click(function () {
var tContents = $("#comment_news_" + id).val();
if (tContents != undefined) {
var beforeImage = tContents.split("<img");
var afterImage = tContents.split("/>");
if (beforeImage[0] == "" && afterImage[1] == "") {
notice_box('不支持纯图片评论<br/>请在评论中增加文字信息');
return;
}
if (tContents.startsWith('<') && tContents.endsWith('>')
&& (tContents.indexOf('<link') != -1 || tContents.indexOf('<script') != -1)) {
notice_box('不支持包含link或script标签的html内容');
return;
}
}
// react环境下发消息给react组件
if (window['__isR'] === true) {
$(document).trigger("onReply", { commentContent: tContents, id: id, editor: params.editor });
} else {
params.form.submit();
}
});
params.textarea.focus(function () {
params.editor.focus();
});
params.textarea.data('init', 1);
$(this).show();
__editor = params.editor
}
});
// });
div_form = $("div[nhname='new_message_" + id + "']");
$(".ke-edit", div_form).css("height", "33px");
$(".ke-edit-iframe", div_form).css("height", "33px");
return __editor;
}
//第二个参数是高度,可以传,可以不传
function sd_create_editor_from_shixun_data(id) {
var height = arguments[1] ? arguments[1] : undefined;
var width = arguments[2] ? arguments[2] : undefined;
var type = arguments[3] ? arguments[3] : undefined;
// KindEditor.ready(function (K) {
// react 环境不需要ready方法页面已经加载完了才执行sd_create_editor_from_data
var K = KindEditor;
$("div[nhname='new_message_" + id + "']").each(function () {
var params = {};
params.kindutil = K;
params.div_form = $(this);
params.form = $("form", params.div_form);
if (params.form == undefined || params.form.length == 0) {
return;
}
params.textarea = $("textarea[nhname='new_message_textarea_" + id + "']", params.div_form);
params.contentmsg = $("span[nhname='contentmsg_" + id + "']", params.div_form);
params.toolbar_container = $("div[nhname='toolbar_container_" + id + "']", params.div_form);
params.cancel_btn = $("#new_message_cancel_btn_" + id);
params.submit_btn = $("#new_message_submit_btn_" + id);
params.height = height;
params.width = width;
if (params.textarea.data('init') == undefined) {
params.editor = sd_create_shixun_editor(params, id, type);
window._commentInput = params.editor;
sd_create_form(params);
params.cancel_btn.click(function () {
sd_reset_editor_form(params);
});
// 在react组件中hide
// params.submit_btn.click(function () {
// $(this).hide()
// });
// 非react环境才监听这个click
!window['__isR'] && params.submit_btn.click(function () {
var tContents = $("#comment_news_" + id).val();
if (tContents != undefined) {
var beforeImage = tContents.split("<img");
var afterImage = tContents.split("/>");
if (beforeImage[0] == "" && afterImage[1] == "") {
notice_box('不支持纯图片评论<br/>请在评论中增加文字信息');
return;
}
}
params.form.submit();
});
params.textarea.focus(function () {
params.editor.focus();
});
params.textarea.data('init', 1);
$(this).show();
}
});
// });
div_form = $("div[nhname='new_message_" + id + "']");
$(".ke-edit", div_form).css("height", "33px");
$(".ke-edit-iframe", div_form).css("height", "33px");
}

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +0,0 @@
/*!
* Cropper.js v1.5.2
* https://fengyuanchen.github.io/cropperjs
*
* Copyright 2015-present Chen Fengyuan
* Released under the MIT license
*
* Date: 2019-06-30T06:01:02.389Z
*/.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}

Some files were not shown because too many files have changed in this diff Show More