Compare commits

...

53 Commits
0.1 ... 0.3

Author SHA1 Message Date
life
910b079c55 resize editor 2014-05-27 12:59:14 +08:00
life
b1b36cec23 update email 2014-05-27 11:37:03 +08:00
life
8eab8c7310 fix updateEmail 2014-05-27 11:21:35 +08:00
life
ddd0c13d34 editor fix 2014-05-21 10:08:47 +08:00
life
2d107b754d writting mode resize editor 2014-05-15 22:55:16 +08:00
life
872f4e68cf writting mode resize editor 2014-05-15 22:41:29 +08:00
life
8f86baa616 writting mode resize editor 2014-05-15 22:36:32 +08:00
life
1fa03e901d angularjs mobile v1.0 2014-05-14 22:46:57 +08:00
life
04d41dff4a angularjs mobile v1.0 2014-05-14 22:41:39 +08:00
life
4d1f3b957e angularjs mobile v1.0 2014-05-14 22:35:56 +08:00
life
0929c715c0 angularjs mobile v1.0 2014-05-14 22:30:28 +08:00
life
cac06e673a Merge branch 'develop' 2014-05-14 22:25:34 +08:00
life
ab5e5c7b76 angularjs mobile v0.1 2014-05-14 22:23:35 +08:00
life
88ad35e9be test 2014-05-13 21:22:45 +08:00
life
cd61592f74 Merge branch 'master' into develop 2014-05-13 21:19:29 +08:00
life
bf6590eef9 lock page 2014-05-13 21:18:33 +08:00
life
0a75902865 i18n 2014-05-13 17:44:31 +08:00
life
58d1e0ec00 i18n 2014-05-13 17:42:55 +08:00
life
5244c89987 writing mode fix 2014-05-13 17:17:13 +08:00
life
6ed0e30d2b writing mode fix 2014-05-13 17:13:02 +08:00
life
2f79331ccf writing mode leanote nav 2014-05-13 17:04:14 +08:00
life
76ecc00ad0 fix bug 2014-05-13 16:54:41 +08:00
life
418c70bad2 editor tabIndex 2014-05-13 16:47:06 +08:00
life
077e702ba1 writing mode v1.0 2014-05-13 15:29:23 +08:00
life
6ee8fc999d writing mode v1.0 2014-05-13 15:23:27 +08:00
life
4f7d2b5645 default theme 2014-05-13 15:18:21 +08:00
life
7a89eca49d writing mode v1.0 2014-05-13 15:16:49 +08:00
life
d392c0eb36 merge 2014-05-13 15:15:12 +08:00
life
e3f4b50c53 writing mode v1.0 2014-05-13 15:12:38 +08:00
life
03f2ebe3f7 writting mode v0.1 2014-05-13 14:34:30 +08:00
life
48c2474668 for brunch test 2014-05-12 14:10:13 +08:00
life
cbe62557f8 for develop writting mod 2014-05-12 14:03:19 +08:00
life
0b9dd488c2 update readme.md 2014-05-11 22:46:32 +08:00
life
3db06ed738 update readme.md 2014-05-11 22:46:00 +08:00
life
76b279c1e5 update readme.md 2014-05-11 22:44:14 +08:00
life
6eb4702cd2 mobile 2014-05-10 17:35:20 +08:00
life
f0b4012118 fix markdown editor 2014-05-10 16:50:03 +08:00
life
0e45f2c17f editor i18n 2014-05-10 16:28:09 +08:00
life
3baa31d44c note i18n 2014-05-10 16:12:38 +08:00
life
365ad3853c blog i18n 2014-05-10 16:01:50 +08:00
life
98cf275e37 update readme.md 2014-05-10 14:27:50 +08:00
leanote
498f2dc3a8 Update README.md 2014-05-09 21:20:48 +08:00
leanote
98b048235c Update README.md 2014-05-09 21:18:56 +08:00
leanote
273028ea96 Update README.md 2014-05-09 20:56:11 +08:00
leanote
a93048b016 Merge pull request #3 from jaseg/master
README: Small grammar, style & markdown fixes
2014-05-09 20:39:34 +08:00
jaseg
b63e79954a README: Grammar & markdown fixes 2014-05-09 14:27:03 +02:00
life
b8b103ace1 update readme.md 2014-05-09 18:14:01 +08:00
life
b2436ee711 update readme.md 2014-05-09 18:08:11 +08:00
life
91f4698c09 update readme.md 2014-05-09 18:06:58 +08:00
life
2605b86e00 update readme.md 2014-05-09 18:03:58 +08:00
life
cd7915f92b deleve bin files 2014-05-09 18:01:23 +08:00
life
6f413bfa1f remove 2014-05-09 17:58:46 +08:00
life
298f7bc1d6 release v0.1 2014-05-09 17:56:14 +08:00
141 changed files with 18288 additions and 534 deletions

3
.gitignore vendored
View File

@@ -2,9 +2,12 @@
pkg
bin2
bin/i18n
bin/leanote-linux
bin/leanote-mac
bin/release
bin/tmp
bin/test
bin/src
conf/app.conf
conf/routes
public/upload

106
README.md
View File

@@ -1,46 +1,54 @@
## Introduction
## 1. Introduction
Leanote, a cloud note. You can create your own cloud note by leanote.
Leanote, your own cloud note.
## Features
* Knowledge: manage your knowledge in leanote. leanote contains tinymce editor and markdown editor, just enjoy yourself in writting.
* Share: share your knowledge to your friends in leanote. Well, you are not alone, you can invite your friends to join your cloud note and share your knowledge each other.
* Cooperation: collaborate with friends to improve your knowledge.
* Blog: public your knowledge and leanote be your blog.
**Some Features**
## Why we create leanote
To be honest, our inspiration comes from evernote, and we use evenote to manage our knowledge everyday. But we find that:
* Evernote's editor can't meet our needs, it hasn't document navigation, can't put our codes(as a programmer, put codes is the basic needs), can't resize images...)
* We like markdown, but evernote don't support it.
* We want to public our knowledge, so we have our blog(such as wordpress) and evernote, but why can't be the one!
* Knowledge: Manage your knowledge in leanote. leanote contains the tinymce editor and a markdown editor, just enjoy yourself writing.
* Share: Share your knowledge with your friends in leanote. You can invite your friends to join your notepad in the cloud so you can share knowledge.
* Cooperation: Collaborate with friends to improve your skills.
* Blog: Publish your knowledge and make leanote your blog.
## 2. Why we created leanote
To be honest, our inspiration comes from Evernote. We use Evernote to manage our knowledge everyday. But we find that:
* Evernote's editor can't meet our needs, it does not have document navigation, it does not render code properly (as a programmer, syntax highlighted code rendering is a basic need), it cannot resize images and so forth
* We like markdown, but Evernote does not support it.
* We want to share our knowledge, so all of us have our blogs (e.g. on Wordpress) and our Evernote accounts, but why can not those two be one!
* ......
## How to use it
Leanote build with golang(revel) and mongodb. so you must install mongodb at first.
## 3. How to install leanote
### Install mongodb
For more tips please go https://github.com/leanote/leanote/wiki/mongodb-in-leanote
### 3.1. Download leanote
Go http://www.mongodb.org to download and install it.
Leanote v0.1 has been released. Binaries:
### Export initial mongodb data
* Linux: [leanote-linux-v0.1.bin.tar.gz](https://github.com/leanote/leanote/releases/download/0.1/leanote-linux-v0.1.bin.tar.gz)
* MacOS X: [leanote-mac-v0.1.bin.tar.gz](https://github.com/leanote/leanote/releases/download/0.1/leanote-mac-v0.1.bin.tar.gz)
The mongodb data is in path_to_leante/mongodb_backup/leanote_install_data
### 3.2. Install MongoDB
Leanote is written in go using [revel](https://revel.github.io/) and [MongoDB](https://www.mongodb.org). Thus, you need to first install MongoDB.
For more tips please have a look at [our wiki](https://github.com/leanote/leanote/wiki/Install-Mongodb)
### 3.3. Import initial MongoDB data
The mongodb data is in `[PATH_TO_LEANOTE]/mongodb_backup/leanote_install_data`
```
$> mongorestore -h localhost -d leanote --directoryperdb path_to_leante/mongodb_backup/leanote_install_data
$> mongorestore -h localhost -d leanote --directoryperdb PATH_TO_LEANOTE/mongodb_backup/leanote_install_data
```
The initial data contains two users:
The initial database contains two users:
```
user1 username: leanote, password: abc123
user2 username: admin, password: abc123
```
### Configuration
### 3.4. Configuration
Copy path_to_leante/conf/app-default.conf to path_to_leante/conf/app.conf, the options contains:
Modify `[PATH_TO_LEANOTE]/conf/app.conf`. Available configuration options are:
``mongodb`` **required**
@@ -58,55 +66,61 @@ Default is 80
``site.url``
Default is http://localhost, you must config it when your domain isn't it, it is used when upload images.
Default is `http://localhost`, you must edit this when hosting leanote anywhere else. This is used when uploading images.
``email``
for find password
For password recovery mails
``adminUsername``
Default is admin. The index site is the adminUsername's blog
Default is `admin`. The landing page is the admin user's blog.
For more infomation please see app/app.conf and revel manuals http://revel.github.io
For more infomation please see `app/app.conf` and the [revel manuals](https://revel.github.io/)
### Run leanote
### 3.5. Run leanote
```
$> cd path_to_leanote/bin
$> cd PATH_TO_LEANOTE/bin
$> sudo sh run.sh
```
## How to develop leanote
## 4. How to develop leanote
For more tips please go https://github.com/leanote/leanote/wiki/How-to-develop-leanote
For more tips please see [our wiki](https://github.com/leanote/leanote/wiki/How-to-develop-leanote)
Leanote is a app based on revel(http://revel.github.io), so if you want to develop leanote as you want, you must be familar with revel.
Leanote is a app based on [revel](https://revel.github.io/), so if you want to work on leanote, you should be familar with revel.
### Install golang
### 4.1 Install golang
Install golang and set GOPATH
Install golang and set the `GOPATH` environment variable
### Install revel
### 4.2 Install revel
```
go get github.com/revel/revel
go get github.com/revel/cmd/revel
$> go get github.com/revel/revel
$> go get github.com/revel/cmd/revel
```
### Get leanote
### 4.3 Get leanote
```
go get github.com/leanote/leanote/app
$> go get github.com/leanote/leanote/app
```
### Build/Run leanote via revel
cp conf/routes-default to conf/routes
Now you can modify leanote source and build/run with revel
### 4.4 Build/Run leanote via revel
```
revel run github.com/leanote/leanote
$> cp conf/app.conf-default conf/app.conf
$> cp conf/routes-default conf/routes
```
Welcome to join with us and contribute your code to leanote! Thanks.
Now you can modify the leanote source and build/run using `revel`
```
$> revel run github.com/leanote/leanote
```
You are welcome to join us and contribute code to leanote! Thanks.
## Discussion
[leanote google group](https://groups.google.com/forum/#!forum/leanote)

View File

@@ -22,6 +22,7 @@ func (c Mobile) Index() revel.Result {
return c.RenderTemplate("mobile/login.html")
}
/*
// 已登录了, 那么得到所有信息
notebooks := notebookService.GetNotebooks(userId)
shareNotebooks, sharedUserInfos := shareService.GetShareNotebooks(userId)
@@ -32,8 +33,9 @@ func (c Mobile) Index() revel.Result {
c.RenderArgs["shareNotebooks"] = c.Json(shareNotebooks)
c.RenderArgs["sharedUserInfos"] = c.Json(sharedUserInfos)
c.RenderArgs["tagsJson"] = c.Json(tagService.GetTags(c.GetUserId()))
*/
return c.RenderTemplate("mobile/index.html");
return c.RenderTemplate("mobile/angular.html");
}
func (c Mobile) Logout() revel.Result {

View File

@@ -85,6 +85,11 @@ func (c Note) ListTrashNotes() revel.Result {
return c.RenderJson(notes)
}
// 得到note和内容
func (c Note) GetNoteAndContent(noteId string) revel.Result {
return c.RenderJson(noteService.GetNoteAndContent(noteId, c.GetUserId()))
}
// 得到内容
func (c Note) GetNoteContent(noteId string) revel.Result {
noteContent := noteService.GetNoteContent(noteId, c.GetUserId())

View File

@@ -13,17 +13,12 @@ type Notebook struct {
BaseController
}
// 得到笔记本
// 该用户下的
func (c Notebook) GetNotebooks() {
}
func (c Notebook) Index(notebook info.Notebook, i int, name string) revel.Result {
return c.RenderJson(notebook)
}
// 得到用户的所有笔记本
func (c Notebook) getNotebooks() revel.Result {
func (c Notebook) GetNotebooks() revel.Result {
re := notebookService.GetNotebooks(c.GetUserId())
return c.RenderJson(re)
}

View File

@@ -10,8 +10,8 @@ import (
// convert revel msg to js msg
var msgBasePath = "/Users/life/Documents/Go/package/src/leanote/messages/"
var targetBasePath = "/Users/life/Documents/Go/package/src/leanote/public/js/i18n/"
var msgBasePath = "/Users/life/Documents/Go/package/src/github.com/leanote/leanote/messages/"
var targetBasePath = "/Users/life/Documents/Go/package/src/github.com/leanote/leanote/public/js/i18n/"
func parse(filename string) {
file, err := os.Open(msgBasePath + filename)
reader := bufio.NewReader(file)

View File

@@ -28,8 +28,8 @@ var bodyTpl = `
<div style="float:left; height: 40px;">
<a href="http://leanote.com" style="font-size: 24px">leanote</a>
</div>
<div style="float:left; height:40px; line-height:16px;">
&nbsp;&nbsp;| &nbsp;<span style="font-size:24px">$title</span>
<div style="float:left; height:40px; line-height:40px;">
&nbsp;&nbsp;| &nbsp;<span style="font-size:14px">$title</span>
</div>
<div style="clear:both"></div>
</div>
@@ -50,7 +50,7 @@ var bodyTpl = `
font-size: 12px;
}
</style>
<a href="http://leanote.com">leanote</a>, your own cloud note
<a href="http://leanote.com">leanote</a>, your own cloud note!
</div>
</div>
</body>
@@ -78,6 +78,7 @@ func SendEmail(to, subject, title, body string) bool {
err := smtp.SendMail(host+":"+port, auth, username, send_to, msg)
if err != nil {
Log(err)
return false
}
return true

View File

@@ -31,6 +31,13 @@ func (this *NoteService) GetNoteContent(noteContentId, userId string) (noteConte
return
}
// 得到笔记和内容
func (this *NoteService) GetNoteAndContent(noteId, userId string) (noteAndContent info.NoteAndContent) {
note := this.GetNote(noteId, userId)
noteContent := this.GetNoteContent(noteId, userId)
return info.NoteAndContent{note, noteContent}
}
// 列出note, 排序规则, 还有分页
// CreatedTime, UpdatedTime, title 来排序
func (this *NoteService) ListNotes(userId, notebookId string,

View File

@@ -208,11 +208,11 @@ func (this *UserService) UpdateEmailSendActiveEmail(userId, email string) (ok bo
}
// 发送邮件
url := "http://115.28.133.226/user/updateEmail?token=" + token
url := "http://leanote.com/user/updateEmail?token=" + token
body := "邮箱验证后您的登录邮箱为: <b>" + email + "</b><br />";
body += fmt.Sprintf("请点击链接验证邮箱: <a href='%v'>%v</a>. %v小时后过期.", url, url, tokenService.GetOverHours(info.TokenUpdateEmail));
if !SendEmail(email, "leanote-验证邮箱", "验证邮箱", body) {
msg = "发送失败"
msg = "发送失败, 该邮箱存在?"
return
}
ok = true
@@ -291,4 +291,4 @@ func (this *UserService)UpdateColumnWidth(userId string, notebookWidth, noteList
// 左侧是否隐藏
func (this *UserService)UpdateLeftIsMin(userId string, leftIsMin bool) bool {
return db.UpdateByQMap(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, bson.M{"LeftIsMin": leftIsMin})
}
}

View File

@@ -4,7 +4,7 @@
<div id="posts">
<div class="each-post">
<div class="title">
关于我
{{msg . "aboutMe"}}
</div>
<div class="created-time">
</div>

View File

@@ -2,19 +2,19 @@
{{$userId := .userBlog.UserId.Hex}}
<div class="container" id="footer">
<div class="col-md-4">
<h3>导航</h3>
<h3>{{msg . "blogNavs"}}</h3>
<ul>
<li><a href="/blog/{{$userId}}">首页</a></li>
<li><a href="/blog/{{$userId}}">{{msg . "home"}}</a></li>
{{range .notebooks}}
<li>
<a href="/blog/{{$userId}}/{{.NotebookId.Hex}}">{{.Title}}</a>
</li>
{{end}}
<li><a href="/blog/aboutMe/{{$userId}}">关于我</a></li>
<li><a href="/blog/aboutMe/{{$userId}}">{{msg . "aboutMe"}}</a></li>
</ul>
</div>
<div class="col-md-4">
<h3>最近发表</h3>
<h3>{{msg . "latestPosts"}}</h3>
<ul>
{{range .recentBlogs}}
<li title="{{.Title}}"><a href="/blog/view/{{.NoteId.Hex}}/">{{.Title}}</a></li>
@@ -22,10 +22,10 @@
</ul>
</div>
<div class="col-md-4">
<h3>快速链接</h3>
<h3>{{msg . "quickLinks"}}</h3>
<ul>
<li><a href="/note">我的笔记</a></li>
<li><a href="/login">登录</a></li>
<li><a href="/note">{{msg . "myNote"}}</a></li>
<li><a href="/login">{{msg . "login"}}</a></li>
<li><a href="http://leanote.com" target="_blank">leanote</a></li>
<li><a href="https://github.com/leanote/leanote" target="_blank">leanote github</a></li>
</ul>

View File

@@ -58,7 +58,7 @@ function log(o) {
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
{{$navNotebookId := .notebookId}}
<li class="{{if .index}}active{{end}}"><a href="/blog/{{$username}}">首页</a></li>
<li class="{{if .index}}active{{end}}"><a href="/blog/{{$username}}">{{msg . "home"}}</a></li>
{{range .notebooks}}
{{$notebookId := .NotebookId.Hex}}
<li class="{{if eq $navNotebookId $notebookId}}active{{else}}{{end}}">
@@ -66,9 +66,9 @@ function log(o) {
>{{.Title}}</a>
</li>
{{end}}
<li class="{{if .aboutMe}}active{{end}}"><a href="/blog/aboutMe/{{$username}}">关于我</a></li>
<li class="{{if .aboutMe}}active{{end}}"><a href="/blog/aboutMe/{{$username}}">{{msg . "aboutMe"}}</a></li>
{{if .isMe}}
<li class="{{if .set}}active{{end}}"><a href="/blog/set" >博客设置</a></li>
<li class="{{if .set}}active{{end}}"><a href="/blog/set">{{msg . "blogSet"}}</a></li>
<li><a href="/note" >{{msg . "myNote"}}</a></li>
{{end}}
</ul>

View File

@@ -1,3 +1,5 @@
<!-- This file is Depreciated -->
<link href="/public/mdeditor/editor/google-code-prettify/prettify.css" type="text/css" rel="stylesheet">
<script src="/public/mdeditor/editor/google-code-prettify/prettify.js"></script>

View File

@@ -3,14 +3,15 @@
<div id="postsContainer">
<div class="container">
{{if .notebookId}}
<h2>分类 {{.notebook.Title}}</h2>
<h2>{{msg . "blogClass"}}: {{.notebook.Title}}</h2>
{{end}}
</div>
<div id="posts">
{{$G := .}}
{{range .blogs}}
<div class="each-post">
<div class="title">
<a href="/blog/view/{{.NoteId.Hex}}" title="全文">
<a href="/blog/view/{{.NoteId.Hex}}" title="{{msg $G "fullBlog"}}">
{{.Title}}
</a>
</div>
@@ -19,16 +20,16 @@
{{if .Tags}}
{{blogTags .Tags}}
{{else}}
{{msg $G "noTag"}}
{{end}}
|
<i class="fa fa-calendar" style="color: #666"></i> 更新 {{.UpdatedTime | datetime}} |
<i class="fa fa-calendar" style="color: #666"></i> 创建 {{.CreatedTime | datetime}}
<i class="fa fa-calendar" style="color: #666"></i> {{msg $G "updatedTime"}} {{.UpdatedTime | datetime}} |
<i class="fa fa-calendar" style="color: #666"></i> {{msg $G "createdTime"}} {{.CreatedTime | datetime}}
</div>
<div class="desc">
{{.Content | raw}}
</div>
<a class="more" href="/blog/view/{{.NoteId.Hex}}" title="更多">More...</a>
<a class="more" href="/blog/view/{{.NoteId.Hex}}" title="{{msg $G "fullBlog"}}">More...</a>
</div>
{{end}}
<!-- 分页 -->

View File

@@ -1,8 +1,7 @@
{{template "Blog/header.html" .}}
<!-- -->
<link rel="stylesheet" href="/tinymce/skins/custom/skin.min.css"
type="text/css">
<link rel="stylesheet" href="/tinymce/skins/custom/skin.min.css" type="text/css">
<style>
.tab-pane {
padding-top: 10px;
@@ -11,9 +10,9 @@
<div id="postsContainer">
<div id="posts">
<ul id="myTab" class="nav nav-tabs">
<li class="active"><a href="#baseInfo" data-toggle="tab">基本设置</a></li>
<li class=""><a href="#commentInfo" data-toggle="tab">评论设置</a></li>
<li class=""><a href="#styleInfo" data-toggle="tab">主题设置</a></li>
<li class="active"><a href="#baseInfo" data-toggle="tab">{{msg . "baseInfoSet"}}</a></li>
<li class=""><a href="#commentInfo" data-toggle="tab">{{msg . "commentSet"}}</a></li>
<li class=""><a href="#styleInfo" data-toggle="tab">{{msg . "themeSet"}}</a></li>
</ul>
<!-- Tab panes -->
@@ -21,7 +20,7 @@
<div class="tab-pane" id="styleInfo">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="Style" class="col-sm-2 control-label">主题</label>
<label for="Style" class="col-sm-2 control-label">{{msg . "theme"}}</label>
<div class="col-sm-10">
<label><input type="radio" name="Style"
value="blog_default"
@@ -32,19 +31,19 @@
checked="checked"
{{end}}
{{end}}>
默认 </label>
{{msg . "default"}} </label>
<label><input type="radio" name="Style"
value="blog_daqi"
{{if eq .userBlog.Style "blog_daqi"}}checked="checked"{{end}}>
大气</label>
{{msg . "elegant"}}</label>
<label><input type="radio" name="Style"
value="blog_left_fixed"
{{if eq .userBlog.Style "blog_left_fixed"}}checked="checked"{{end}}>
左侧导航固定</label>
{{msg . "navFixed"}}</label>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-success">保存</button>
<button class="btn btn-success">{{msg . "save"}}</button>
<span class="msg"></span>
</div>
</div>
@@ -54,26 +53,25 @@
<div class="tab-pane" id="commentInfo">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="subTitle" class="col-sm-2 control-label">开启评论</label>
<label for="subTitle" class="col-sm-2 control-label">{{msg . "openComment"}}</label>
<div class="col-sm-10">
<input type="checkbox" id="CanComment" name="CanComment"
{{if .userBlog.CanComment}}checked="checked"{{end}} >
<br />
leanote采用 <a href="http://disqus.com" target="_blank">Disqus</a>
作为评论系统
{{msg . "commentSys"}}
<div id="disqusSet">
<label for="DisqusId">Disqus Id</label> <input type="text"
class="form-control" style="display: inline; width: 50%"
id="DisqusId" name="DisqusId"
value="{{if .userBlog.DisqusId}}{{.userBlog.DisqusId}}{{else}}leanote{{end}}">
<br /> (请填写您申请的Disqus唯一url前缀, 建议您申请Disqus帐号, 这样可以自己管理评论.
或使用leanote的默认Disqus Id. <a target="_blank"
href="/blog/view/52db8463e01c530ef8000001">需要帮助?</a>)
<br />
{{msg . "disqusHelp"}}
<a target="_blank" href="http://leanote.com/blog/view/52db8463e01c530ef8000001">{{msg . "needHelp"}}</a>)
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-success">保存</button>
<button class="btn btn-success">{{msg . "save"}}</button>
<span class="msg"></span>
</div>
</div>
@@ -90,16 +88,16 @@
</div>
</div>
<div class="form-group">
<label for="title" class="col-sm-2 control-label">博客名称</label>
<label for="title" class="col-sm-2 control-label">{{msg . "blogName"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="Title" name="Title"
placeholder="比如: leanote的博客"
value="{{if .userBlog.Title}}{{.userBlog.Title}}{{else}}{{.userInfo.Email}} 的博客{{end}}">
placeholder="eg: leanote's blog"
value="{{if .userBlog.Title}}{{.userBlog.Title}}{{else}}{{.userInfo.Email}} 's blog{{end}}">
</div>
</div>
<div class="form-group">
<label for="logo" class="col-sm-2 control-label">博客Logo</label>
<label for="logo" class="col-sm-2 control-label">{{msg . "blogLogo"}}</label>
<div class="col-sm-10">
<input type="hidden" name="Logo" id="Logo"
value="{{.userBlog.Logo}}" />
@@ -107,14 +105,15 @@
enctype="multipart/form-data" target="logoTarget"
onsubmit="inProgress()">
<input type="file" class="form-control" id="logo2" name="file"
onChange='$("#formLogo").submit();' /> 上传logo将显示logo(替代博客标题)
onChange='$("#formLogo").submit();' />
{{msg . "blogLogoTips"}}
<div id="logoImg"
{{if .userBlog.Logo }}
{{else}}
style="display: none"{{end}}
>
<img src="{{.userBlog.Logo}}" style="height: 40px" /> <a
href="#" id="deleteLogo">删除</a>
href="#" id="deleteLogo">{{msg . "delete"}}</a>
</div>
</form>
<iframe id="logoTarget" name="logoTarget" src="#"
@@ -123,11 +122,11 @@
</div>
<div class="form-group">
<label for="subTitle" class="col-sm-2 control-label">博客描述</label>
<label for="subTitle" class="col-sm-2 control-label">{{msg . "blogDesc"}}</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="SubTitle"
name="SubTitle" value="{{.userBlog.SubTitle}}"
placeholder="比如: leanote, 不只是笔记">
placeholder="eg: leanote, your own cloud note">
</div>
</div>
@@ -139,7 +138,7 @@
</div>
<div class="form-group">
<label for="aboutMe" class="col-sm-2 control-label">关于我</label>
<label for="aboutMe" class="col-sm-2 control-label">{{msg . "aboutMe"}}</label>
<div class="col-sm-10">
<textarea id="AboutMe" name="AboutMe">{{.userBlog.AboutMe}}</textarea>
</div>
@@ -147,7 +146,7 @@
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button class="btn btn-success">保存</button>
<button class="btn btn-success">{{msg . "save"}}</button>
<span class="msg"></span>
</div>
</div>
@@ -167,19 +166,17 @@
$(function() {
tinymce.init({
selector : "#AboutMe",
content_css : [ "/css/bootstrap.css", "/css/editor.css" ],
content_css : [ "/css/bootstrap.css", "/css/editor/editor.css" ],
skin : "custom",
language : "zh_CN",
language : "zh",
height : 300,
width : "100%",
skin : "custom",
plugins : [
"advlist autolink link image lists charmap hr ",
"searchreplace visualblocks visualchars code tabfocus",
"table contextmenu directionality textcolor paste fullpage textcolor" ],
toolbar1 : "formatselect fontselect fontsizeselect | forecolor backcolor | bold italic underline strikethrough | image | bullist numlist | alignleft aligncenter alignright alignjustify",
toolbar2 : "outdent indent blockquote | link unlink | table | hr removeformat | subscript superscript | visualchars visualblocks | searchreplace | code",
"advlist autolink link leanote_image lists charmap hr ",
"searchreplace visualblocks visualchars leanote_code tabfocus",
"table contextmenu directionality textcolor paste fullpage textcolor"],
toolbar1 : "formatselect |fontselect fontsizeselect| forecolor backcolor | bold italic underline strikethrough | bullist numlist |",
menubar : false,
toolbar_items_size : 'small',
statusbar : false,
@@ -218,7 +215,7 @@ $(function() {
}
post("/blog/setUserBlogBase", data, function(ret) {
showMsg2($("#baseInfo .msg"), "保存成功", 2000);
showMsg2($("#baseInfo .msg"), "{{msg . "saveSuccess"}}", 2000);
$("#blogDesc").html(data.SubTitle);
$("#logo").html(data.Title);
if(data.Logo) {
@@ -234,7 +231,7 @@ $(function() {
DisqusId : $("#DisqusId").val(),
}
post("/blog/setUserBlogComment", data, function(ret) {
showMsg2($("#commentInfo .msg"), "保存成功", 2000);
showMsg2($("#commentInfo .msg"), "{{msg . "saveSuccess"}}", 2000);
}, this);
});
// 主题
@@ -244,7 +241,7 @@ $(function() {
Style : $("input[name='Style']:checked").val()
}
post("/blog/setUserBlogStyle", data, function(ret) {
showMsg2($("#styleInfo .msg"), "保存成功", 2000);
showMsg2($("#styleInfo .msg"), "{{msg . "saveSuccess"}}", 2000);
}, this);
});
$("input[name='Style']").click(function() {

View File

@@ -12,11 +12,11 @@
{{if .blog.Tags}}
{{blogTags .blog.Tags}}
{{else}}
{{msg . "noTag"}}
{{end}}
|
<i class="fa fa-calendar" style="color: #666"></i> 更新 {{.blog.UpdatedTime | datetime}} |
<i class="fa fa-calendar" style="color: #666"></i> 创建 {{.blog.CreatedTime | datetime}}
<i class="fa fa-calendar" style="color: #666"></i> {{msg . "updatedTime"}} {{.blog.UpdatedTime | datetime}} |
<i class="fa fa-calendar" style="color: #666"></i> {{msg . "createdTime"}} {{.blog.CreatedTime | datetime}}
</div>
<div class="desc" id="content">
@@ -93,7 +93,7 @@
<div id="blogNav">
<div id="blogNavNav">
<i class="fa fa-align-justify" title="文档导航"></i>
<span>{{msg . "nav"}}</span>
<span>{{msg . "blogNav"}}</span>
</div>
<div id="blogNavContent" style="max-width: 200px">
</div>

View File

@@ -4,11 +4,11 @@
</style>
<section>
<div class="header">
<h2>leanote, Your own cloud note!</h2>
<h2>leanote, your own cloud note!</h2>
<p>Knowledge, Sharing, Cooperation, Blog... all just in leanote</p>
<div>
<a class="btn btn-primary" href="https://github.com/leanote/leanote">Fork leanote from Github</a>
<a class="btn btn-primary" href="https://github.com/leanote/leanote">Fork leanote on Github</a>
&nbsp;
&nbsp;
<a class="btn btn-default" href="/demo">Try it</a>

View File

@@ -0,0 +1,49 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<link href="/public/mobile2/topcoat/css/topcoat-mobile-light.min.css" rel="stylesheet">
<link href="/public/mobile2/css/styles.css" rel="stylesheet">
<link href="/public/css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet">
</head>
<body ng-controller="MainCtrl">
<div id="sidebar" class="page-sidebar">
<h1>leanote</h1>
<ul id="nav">
<li ng-click="go('/notes/all')"><a>[[msg.all]]</a></li>
<li ng-click="go('/notebooks')"><a>[[msg.notebook]]</a></li>
<li><a href="#">[[msg.tag]]</a></li>
</ul>
<footer>
<a href="/mobile/logout">[[msg.logout]]</a>
</footer>
</div>
<div id="content" class="page-content">
<div ng-view ng-class="slide" >
</div>
</div>
<script src="/js/jquery-1.9.0.min.js"></script>
<script src="/js/i18n/msg.{{.locale}}.js"></script>
<script src="/js/common.js"></script>
<script src="/public/js/angular/angular.min.js"></script>
<script src="/public/js/angular/angular-touch.min.js"></script>
<script src="/public/js/angular/angular-resource.min.js"></script>
<script src="/public/js/angular/angular-animate.min.js"></script>
<script src="/public/js/angular/angular-route.min.js"></script>
<script src="/public/mobile2/js/app.js"></script>
<script src="/public/mobile2/js/controllers.js"></script>
<script src="/public/mobile2/js/services.js"></script>
<script src="/public/mobile2/js/snap.js"></script>
<script>
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp']);
});
</script>
</body>
</html>

View File

@@ -61,7 +61,7 @@ function log(o) {
</div>
</div>
<div id="content" class="page-content" style="position: absolute;background-color: #fff;width: 100%;">
<div id="content" class="page-content" style="position: absolute; background-color: #fff;width: 100%;">
<!-- notebooks -->
<div id="notebooks">
<!-- 头部 -->

View File

@@ -4,14 +4,10 @@
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<title>leanote login</title>
<title>leanote sign in</title>
<link href="/public/css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet">
<link href="/public/mobile/styles/style.css" rel="stylesheet" type="text/css">
<link href="/public/mobile/styles/colors/default.css" rel="stylesheet" type="text/css" id="pagestyle">
<link href="/public/mobile/styles/framework.css" rel="stylesheet" type="text/css">
<link href="/public/css/font-awesome-4.0.3/css/font-awesome.css" rel="mobile/csssheet">
<link href="/public/css/bootstrap.css" rel="stylesheet" />
<link href="/public/mobile/styles/life.css" rel="stylesheet" type="text/css">
<style>
.alert {
@@ -31,33 +27,24 @@
</head>
<body>
<div id="preloader">
<div id="status">
<p class="center-text">
loading...
</p>
</div>
</div>
<div style="text-align: center">
<img src="/public/mobile/images/blog01.jpg" style="width: 100%"/>
<form id="loginForm" style="width: 90%; margin: auto;">
<div class="form-group">
<h2 style="margin-top:10px">leanote 登录</h2>
<h2 style="margin-top:10px">leanote {{msg . "login"}}</h2>
</div>
<div class="alert alert-danger" id="loginMsg" style="display: none"></div>
<div class="form-group">
<input class="form-control" id="email" name="email" placeholder="用户名或Email" value="">
<input class="form-control" id="email" name="email" placeholder="{{msg . "usernameOrEmail"}}" value="">
</div>
<div class="form-group">
<input type="password" class="form-control" id="pwd" name="pwd" placeholder="密码">
<input type="password" class="form-control" id="pwd" name="pwd" placeholder="{{msg . "password"}}">
</div>
<button id="loginBtn" class="btn btn-success" style="width: 100%">登录</button>
<button id="loginBtn" class="btn btn-success" style="width: 100%">{{msg . "login"}}</button>
</form>
</div>
<script type="text/javascript" src="/public/mobile/scripts/jquery.js"></script>
<script type="text/javascript" src="/public/js/jquery-1.9.0.min.js"></script>
<script>
$(function() {
$("#status").fadeOut(); // will first fade out the loading animation

View File

@@ -11,10 +11,22 @@
<link href="css/bootstrap.css" rel="stylesheet" />
<!-- 先加载, 没有样式, 宽度不定 -->
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" type="text/css" />
<!-- leanote css -->
<link rel="stylesheet" href="css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />
<script>
var hash = location.hash;
if(hash == "#writing") {
var files = '<link rel="stylesheet" href="css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
} else {
var files ='<link rel="stylesheet" href="css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />';
}
document.write(files);
</script>
<link href="css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />
<!-- For Develop writting mod -->
<script>
function log(o) {
console.log(o);
@@ -42,14 +54,14 @@ function log(o) {
<span id="leftSwitcher2" title="{{msg . "leftShow"}}">lea</span>
</div>
<!-- search -->
<div class="pull-left">
<div class="pull-left" id="searchWrap">
<form class="navbar-form form-inline col-lg-2 hidden-xs" id="searchNote">
<input class="form-control" placeholder="Search" type="text" id="searchNoteInput">
</form>
</div>
<!-- 全局按钮 -->
<div class="pull-left" style="line-height: 40px; margin-top: 10px;">
<div class="pull-left" style="" id="newNoteWrap">
<!-- 新建笔记 -->
<div id="newMyNote">
@@ -57,11 +69,12 @@ function log(o) {
<i class="fa fa-file-o"></i>
{{msg . "newNote"}}
</a>
|
<span class="new-split">|</span>
<a id="newNoteMarkdownBtn" title="{{msg . "newMarkdown"}}">
Markdown
</a>
- <span id="curNotebookForNewNote" notebookId=""></span>
<span class="for-split"> - </span>
<span id="curNotebookForNewNote" notebookId=""></span>
<div class="dropdown" style="display: inline-block">
<a class="ios7-a dropdown-toggle"
id="dropdownMenu2" data-toggle="dropdown">
@@ -78,11 +91,12 @@ function log(o) {
<i class="fa fa-file-o"></i>
{{msg . "newNote"}}
</a>
|
<span class="new-split">|</span>
<a id="newShareNoteMarkdownBtn" title="{{msg . "newMarkdown"}}">
Markdown
</a>
- <span id="curNotebookForNewSharedNote" notebookId="" userId=""></span>
<span class="for-split"> - </span>
<span id="curNotebookForNewSharedNote" notebookId="" userId=""></span>
<div class="dropdown" style="display: inline-block">
<a class="ios7-a dropdown-toggle"
id="dropdownMenu2" data-toggle="dropdown">
@@ -94,17 +108,10 @@ function log(o) {
</div>
</div>
<div class="pull-left" style="line-height: 40px; margin-top: 10px; margin-left: 10px;" id="leanoteMsg">
<div class="pull-left" id="leanoteMsg">
<span id="msg" style="display: inline-block;"></span>
<img id="loading" style="visibility: hidden" src="/images/loading-a-20.gif" />
{{if .openRegister}}
{{if eq .userInfo.Email "demo@leanote.com"}}
<span>
{{msg . "demoRegister"}}
</span>
{{end}}
{{end}}
<span id="loading">
</span>
</div>
<!--
@@ -159,6 +166,20 @@ function log(o) {
</a>
</div>
<div class="pull-right" style="line-height: 60px; margin-right:10px" id="toggleEditorMode">
<a href="#writing">{{msg . "writingMode"}}</a>
</div>
{{if eq .userInfo.Email "demo@leanote.com"}}
{{if .openRegister}}
<div class="pull-right" style="line-height: 60px; margin-right:10px" id="demoRegister">
<span>
{{msg . "demoRegister"}}
</span>
</div>
{{end}}
{{end}}
<!--
<ul id="setting" class="pull-right">
<li class="dropdown messages">
@@ -236,7 +257,7 @@ function log(o) {
<div class="folderHeader">
<i class="fa fa-user fa-left"></i>
<span>
共享
{{msg . "share"}}
</span>
</div>
@@ -443,7 +464,7 @@ function log(o) {
</div>
<div id="noteTitleDiv">
<input name="noteTitle" id="noteTitle" value="" placeholder="{{msg . "unTitled"}}">
<input name="noteTitle" id="noteTitle" value="" placeholder="{{msg . "unTitled"}}" tabindex="1" />
</div>
</div>
@@ -457,6 +478,7 @@ function log(o) {
id="moreBtn"> <i class="fa fa-angle-down"></i>
</a>
</div>
<div class="editorBg"></div>
<div id="leanoteNav">
<h1>
<i class="fa fa-align-justify" title="文档导航"></i>
@@ -466,19 +488,20 @@ function log(o) {
</div>
</div>
<!-- 由此可以算高度 -->
<div id="editorContent" name="editorContent">
<div id="editorContent" name="editorContent" tabindex="2" />
{{.noteContent}}
</div>
</div>
<div id="mdEditor">
<div id="wmd-button-bar" id="mdBar"></div>
<div class="editorBg"></div>
<!-- 为了scroll -->
<div class="clearfix" id="mdEditorPreview">
<div id="left-column" class="pull-left">
<div id="wmd-panel-editor" class="wmd-panel-editor">
<textarea class="wmd-input theme" id="wmd-input" spellcheck="false"></textarea>
<textarea class="wmd-input theme" id="wmd-input" spellcheck="false" tabindex="3"></textarea>
</div>
</div>
<div id="right-column" class="pull-right">
@@ -707,7 +730,7 @@ function log(o) {
</div>
</div>
<!-- 长微博 -->
<!-- 激活邮件 -->
<div id="reSendActiveEmailDialog">
<div class="modal-body">
<div style="max-height: 300px; padding: 5px 0; text-align: center; overflow: scroll;" class="weibo">
@@ -811,7 +834,7 @@ function log(o) {
<tr>
<td>
<button id="pwdBtn" class="btn btn-success" style="width: 100%">{{msg . "submit"}}</button>
<button id="pwdBtn" class="btn btn-success">{{msg . "submit"}}</button>
</td>
</tr>
</table>
@@ -898,6 +921,7 @@ var sharedUserInfos = json({{.sharedUserInfos}});
var notes = json({{.notes}});
var noteContentJson = json({{.noteContentJson}});
var tagsJson = json({{.tagsJson}});
LEA.locale = "{{.locale}}";
</script>
<!-- 渲染view -->

View File

@@ -11,10 +11,22 @@
<link href="css/bootstrap.css" rel="stylesheet" />
<!-- 先加载, 没有样式, 宽度不定 -->
<link rel="stylesheet" href="tinymce/skins/custom/skin.min.css" type="text/css" />
<!-- leanote css -->
<link rel="stylesheet" href="css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />
<script>
var hash = location.hash;
if(hash == "#writing") {
var files = '<link rel="stylesheet" href="css/theme/writting-overwrite.css" type="text/css" id="themeLink" />';
} else {
var files ='<link rel="stylesheet" href="css/theme/{{if .userInfo.Theme}}{{.userInfo.Theme}}{{else}}default{{end}}.css" type="text/css" id="themeLink" />';
}
document.write(files);
</script>
<link href="css/font-awesome-4.0.3/css/font-awesome.css" rel="stylesheet" />
<!-- For Develop writting mod -->
<script>
function log(o) {
@@ -42,14 +54,14 @@ function log(o) {
<span id="leftSwitcher2" title="{{msg . "leftShow"}}">lea</span>
</div>
<!-- search -->
<div class="pull-left">
<div class="pull-left" id="searchWrap">
<form class="navbar-form form-inline col-lg-2 hidden-xs" id="searchNote">
<input class="form-control" placeholder="Search" type="text" id="searchNoteInput">
</form>
</div>
<!-- 全局按钮 -->
<div class="pull-left" style="line-height: 40px; margin-top: 10px;">
<div class="pull-left" style="" id="newNoteWrap">
<!-- 新建笔记 -->
<div id="newMyNote">
@@ -57,11 +69,12 @@ function log(o) {
<i class="fa fa-file-o"></i>
{{msg . "newNote"}}
</a>
|
<span class="new-split">|</span>
<a id="newNoteMarkdownBtn" title="{{msg . "newMarkdown"}}">
Markdown
</a>
- <span id="curNotebookForNewNote" notebookId=""></span>
<span class="for-split"> - </span>
<span id="curNotebookForNewNote" notebookId=""></span>
<div class="dropdown" style="display: inline-block">
<a class="ios7-a dropdown-toggle"
id="dropdownMenu2" data-toggle="dropdown">
@@ -78,11 +91,12 @@ function log(o) {
<i class="fa fa-file-o"></i>
{{msg . "newNote"}}
</a>
|
<span class="new-split">|</span>
<a id="newShareNoteMarkdownBtn" title="{{msg . "newMarkdown"}}">
Markdown
</a>
- <span id="curNotebookForNewSharedNote" notebookId="" userId=""></span>
<span class="for-split"> - </span>
<span id="curNotebookForNewSharedNote" notebookId="" userId=""></span>
<div class="dropdown" style="display: inline-block">
<a class="ios7-a dropdown-toggle"
id="dropdownMenu2" data-toggle="dropdown">
@@ -94,17 +108,10 @@ function log(o) {
</div>
</div>
<div class="pull-left" style="line-height: 40px; margin-top: 10px; margin-left: 10px;" id="leanoteMsg">
<div class="pull-left" id="leanoteMsg">
<span id="msg" style="display: inline-block;"></span>
<img id="loading" style="visibility: hidden" src="/images/loading-a-20.gif" />
{{if .openRegister}}
{{if eq .userInfo.Email "demo@leanote.com"}}
<span>
{{msg . "demoRegister"}}
</span>
{{end}}
{{end}}
<span id="loading">
</span>
</div>
<!--
@@ -159,6 +166,20 @@ function log(o) {
</a>
</div>
<div class="pull-right" style="line-height: 60px; margin-right:10px" id="toggleEditorMode">
<a href="#writing">{{msg . "writingMode"}}</a>
</div>
{{if eq .userInfo.Email "demo@leanote.com"}}
{{if .openRegister}}
<div class="pull-right" style="line-height: 60px; margin-right:10px" id="demoRegister">
<span>
{{msg . "demoRegister"}}
</span>
</div>
{{end}}
{{end}}
<!--
<ul id="setting" class="pull-right">
<li class="dropdown messages">
@@ -236,7 +257,7 @@ function log(o) {
<div class="folderHeader">
<i class="fa fa-user fa-left"></i>
<span>
共享
{{msg . "share"}}
</span>
</div>
@@ -443,7 +464,7 @@ function log(o) {
</div>
<div id="noteTitleDiv">
<input name="noteTitle" id="noteTitle" value="" placeholder="{{msg . "unTitled"}}">
<input name="noteTitle" id="noteTitle" value="" placeholder="{{msg . "unTitled"}}" tabindex="1" />
</div>
</div>
@@ -457,6 +478,7 @@ function log(o) {
id="moreBtn"> <i class="fa fa-angle-down"></i>
</a>
</div>
<div class="editorBg"></div>
<div id="leanoteNav">
<h1>
<i class="fa fa-align-justify" title="文档导航"></i>
@@ -466,19 +488,20 @@ function log(o) {
</div>
</div>
<!-- 由此可以算高度 -->
<div id="editorContent" name="editorContent">
<div id="editorContent" name="editorContent" tabindex="2" />
{{.noteContent}}
</div>
</div>
<div id="mdEditor">
<div id="wmd-button-bar" id="mdBar"></div>
<div class="editorBg"></div>
<!-- 为了scroll -->
<div class="clearfix" id="mdEditorPreview">
<div id="left-column" class="pull-left">
<div id="wmd-panel-editor" class="wmd-panel-editor">
<textarea class="wmd-input theme" id="wmd-input" spellcheck="false"></textarea>
<textarea class="wmd-input theme" id="wmd-input" spellcheck="false" tabindex="3"></textarea>
</div>
</div>
<div id="right-column" class="pull-right">
@@ -707,7 +730,7 @@ function log(o) {
</div>
</div>
<!-- 长微博 -->
<!-- 激活邮件 -->
<div id="reSendActiveEmailDialog">
<div class="modal-body">
<div style="max-height: 300px; padding: 5px 0; text-align: center; overflow: scroll;" class="weibo">
@@ -811,7 +834,7 @@ function log(o) {
<tr>
<td>
<button id="pwdBtn" class="btn btn-success" style="width: 100%">{{msg . "submit"}}</button>
<button id="pwdBtn" class="btn btn-success">{{msg . "submit"}}</button>
</td>
</tr>
</table>
@@ -898,6 +921,7 @@ var sharedUserInfos = json({{.sharedUserInfos}});
var notes = json({{.notes}});
var noteContentJson = json({{.noteContentJson}});
var tagsJson = json({{.tagsJson}});
LEA.locale = "{{.locale}}";
</script>
<!-- 渲染view -->

Binary file not shown.

Binary file not shown.

55
bin/release.sh Normal file
View File

@@ -0,0 +1,55 @@
#!/bin/sh
# release leanote
SP=$(cd "$(dirname "$0")"; pwd)
cd $SP
cd ../
# tmp path to store leanote release files
tmp="/Users/life/Desktop/leanote_release"
rm -rf $tmp/leanote
mkdir -p $tmp/leanote/app
mkdir -p $tmp/leanote/conf
mkdir -p $tmp/leanote/bin
# bin
cp -r ./bin/src $tmp/leanote/bin/
cp ./bin/run.sh $tmp/leanote/bin/
# views
cp -r ./app/views $tmp/leanote/app
# conf
cp ./conf/app.conf-default $tmp/leanote/conf/app.conf
cp ./conf/routes-default $tmp/leanote/conf/routes
# others
cp -r ./messages ./public ./mongodb_backup $tmp/leanote/
# delete some files
rm -r $tmp/leanote/public/tinymce/classes
# make link
cd $tmp/leanote/bin
ln -s ../../../../ ./src/github.com/leanote/leanote
# archieve
# << 'BLOCK
# linux
cd $SP
cd ../
cp ./bin/leanote-linux $tmp/leanote/bin/
cd $tmp
tar -cvf $tmp/leanote-linux.tar.gz leanote
# mac
rm $tmp/leanote/bin/leanote-linux
cd $SP
cd ../
cp ./bin/leanote-mac $tmp/leanote/bin/
cd $tmp
tar -cvf $tmp/leanote-mac.tar.gz leanote
# BLOCK'

View File

@@ -1 +0,0 @@
../../../../

41
messages/blog.en Normal file
View File

@@ -0,0 +1,41 @@
# blog
blog=Blog
aboutMe=About me
blogSet=Set blog
blogNavs=Navs
quickLinks=Quick links
latestPosts=Latest posts
noBlog=No blog
noTag=No tag
blogClass=Classification
updatedTime=Updated at
createdTime=Created at
fullBlog=Full blog
blogNav=Blog nav
#
# set blog
#
baseInfoSet=Base info
commentSet=Comment
themeSet=Theme
theme=Theme
blogName=Title
blogLogo=Logo
blogDesc=Description
# theme
elegant=Elegant
navFixed=Nav fixed at left side
openComment=Open comment?
commentSys=leanote use <a href="http://disqus.com" target="_blank">Disqus</a> as comment system
disqusHelp=Please input your Disqus Id or use "leanote"
needHelp=Need help?
blogLogoTips=Upload image to replace blog title
saveSuccess=Save success
a=a

41
messages/blog.zh Normal file
View File

@@ -0,0 +1,41 @@
# blog
blog=博客
aboutMe=关于我
blogSet=博客设置
blogNavs=导航
quickLinks=快速链接
latestPosts=最近发表
noBlog=无博客
noTag=无
blogClass=分类
updatedTime=更新
createdTime=创建
fullBlog=全文
blogNav=导航
#
# set blog
#
baseInfoSet=基本设置
commentSet=评论设置
themeSet=主题设置
theme=主题
blogName=博客标题
blogLogo=博客Logo
blogDesc=博客描述
# theme
elegant=大气
navFixed=导航左侧固定
openComment=开启评论?
commentSys=leanote 使用 <a href="http://disqus.com" target="_blank">Disqus</a> 作为评论系统
disqusHelp=请填写您申请的Disqus唯一url前缀. 建议您申请Disqus帐号, 这样可以自己管理评论. 或使用leanote的默认Disqus Id.
needHelp=需要帮助?
blogLogoTips=上传logo将显示logo(替代博客标题)
saveSuccess=保存成功
a=a

View File

@@ -1,5 +1,6 @@
# leanote
moto=Not just a note!
moto=your own cloud note!
# 首页
forgetPassword = Forget password?
or=or
@@ -26,7 +27,7 @@ emailOrOthers=Email or other contact way
hi=Hi
welcomeUseLeanote=Welcome!
myNote=Enter to my note
myNote=My note
curUser=Email
# form
@@ -65,26 +66,30 @@ notGoodPassword=Tt's not a good password, the length is at least 6
myBlog=Blog
history=Histories
save=Save
editorTips=Editor Tips
editorTipsInfo=<h4>1. Short Cuts</h4>ctrl+shift+c Toggle code <br /> ctrl+shift+i Insert/edit image <h4>2. shift+enter Get out of current block</h4> eg. <img src="/images/outofcode.png" style="width: 90px"/> in this situation you can use shift+enter to get out of current code block.
newNote=New Note
newMarkdown=New Markdown Note
editorTips=Tips
editorTipsInfo=<h4>1. Short cuts</h4>ctrl+shift+c Toggle code <br /> ctrl+shift+i Insert/edit image <h4>2. shift+enter Get out of current block</h4> eg. <img src="/images/outofcode.png" style="width: 90px"/> in this situation you can use shift+enter to get out of current code block.
newNote=New note
newMarkdown=New markdown note
clickAddTag=Click to add Tag
notebook=Notebook
myNotebook=My Notebook
addNotebook=Add Notebook
myNotebook=My notebook
addNotebook=Add notebook
all=Newest
trash=Trash
unTitled=UnTitled
defaultShare=Default sharing
leftHidden=Hidden slide bar
leftShow=Show slide bar
nav=Note Nav
nav=Note nav
writingMode=Writing Mode
normalMode=Normal Mode
saving=Saving
saveSuccess=Save success
update=Update
create=Create
demoRegister=您现在使用的是体验帐号, <a href="/register">立即注册?</a>
demoRegister=<a href="/register">Sign up</a>
close=Close
cancel=Cancel
@@ -92,7 +97,7 @@ send=Send
# 标签
tag=Tag
myTag=My Tag
myTag=My tag
red=red
yellow=yellow
blue=blue
@@ -103,18 +108,20 @@ accountSetting=Account
themeSetting=Theme
logout=Logout
basicInfo=Basic
updateEmail=Update Email
usernameSetting=Update Username
oldPassword=Old Password
newPassword=New Password
updateEmail=Update email
usernameSetting=Update username
oldPassword=Old password
newPassword=New password
default=Default
simple=Simple
# tinymce
uploadImage=Upload Image
uploadImage=Upload image
# blog
aboutMe=About me
blogSet=Set blog
# error
notFound=This page cann't found.
a=a

View File

@@ -27,7 +27,7 @@ emailOrOthers=Email或其它联系方式
hi=Hi
welcomeUseLeanote=欢迎使用leanote
myNote=进入我的笔记
myNote=我的笔记
curUser=当前登录帐户
# form
@@ -82,11 +82,15 @@ defaultShare=默认共享
leftHidden=隐藏左侧
leftShow=展开左侧
nav=文档导航
writingMode=写作模式
normalMode=普通模式
saving=正在保存
saveSuccess=保存成功
update=更新
create=创建
demoRegister=您现在使用的是体验帐号, <a href="/register">立即注册?</a>
demoRegister=<a href="/register">立即注册</a>
close=关闭
cancel=取消
@@ -116,8 +120,14 @@ simple=简约
# tinymce
uploadImage=上传图片
# blog
aboutMe=关于我
blogSet=博客设置
# error
notFound=该页面不存在
# 必须要加这个, 奇怪
[CN]

View File

@@ -1,2 +0,0 @@
html{margin-top:3px;padding:3px;border:1px solid #ebeff2;border-radius:5px;-webkit-border-radius:5px;border-width:1px;box-shadow:none}
*{font-family:'Open Sans','Helvetica Neue',Arial,'Hiragino Sans GB','Microsoft YaHei','WenQuanYi Micro Hei',sans-serif}

View File

@@ -0,0 +1,12 @@
html {
border: none;
}
body {
background-color: #fbfcf7;
}
* {
font-size: 16px;
}
pre {
font-size: 14px;
}

View File

@@ -0,0 +1,15 @@
@bgColor: #fbfcf7;
html {
border: none;
}
body {
background-color: @bgColor;
}
* {
font-size: 16px;
}
pre {
font-size:14px;
}

View File

@@ -0,0 +1,12 @@
html {
margin-top: 3px;
padding: 3px;
border: 1px solid #ebeff2;
border-radius: 5px;
-webkit-border-radius: 5px;
border-width: 1px;
box-shadow: none;
}
* {
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
}

File diff suppressed because it is too large Load Diff

View File

@@ -907,7 +907,6 @@ a.raw:hover {
#leanoteNav {
position: absolute;
right: 5px;
top:32px;
border: 1px solid #ccc;
border-radius: 3px;
background-color: #fff;
@@ -1191,4 +1190,22 @@ background-position:-1px -670px
border-top: 1px dashed #eee;
padding: 5px 0;
}
}
#leanoteMsg {
line-height: 40px; margin-top: 10px; margin-left: 10px;
}
#newNoteWrap {
line-height: 40px; margin-top: 10px;
}
#loading {
display: inline-block;
width: 20px;
height: 20px;
content: url(../../images/loading-a-20.gif);
margin-top:10px;
visibility: hidden;
}
#toggleEditorMode {
margin: 0 10px !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -872,7 +872,6 @@ border: 1px solid @borderColor;
#leanoteNav {
position: absolute;
right: 5px;
top:32px;
border: 1px solid #ccc;
border-radius: 3px;
background-color: #fff;
@@ -1152,3 +1151,22 @@ background-position:-1px -670px
padding: 5px 0;
}
}
#leanoteMsg {
line-height: 40px; margin-top: 10px; margin-left: 10px;
}
#newNoteWrap {
line-height: 40px; margin-top: 10px;
}
#loading {
display: inline-block;
width: 20px;
height: 20px;
content: url(../../images/loading-a-20-black.gif);
margin-top:10px;
visibility: hidden;
}
#toggleEditorMode {
margin: 0 10px !important;
}

View File

@@ -0,0 +1,965 @@
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url('../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url('../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url('../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
}
/*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/
::selection {
background: #000000;
color: #ffffff;
}
::-moz-selection {
background: #000000;
color: #ffffff;
}
::-webkit-selection {
background: #000000;
color: #ffffff;
}
html,
body {
background-color: #fbfcf7;
}
*,
body {
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
font-weight: 300;
font-size: 16px;
}
h1,
h2,
h3 {
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
font-weight: 300 !important;
}
a {
color: #000000;
cursor: pointer;
}
a:hover {
text-decoration: none !important;
color: #000000;
}
a.raw {
color: #428bca;
}
a.raw:hover {
color: #2a6496;
}
/* header */
#header {
height: 60px;
background-color: #fbfcf7;
color: #ffffff;
border-bottom: 1px solid #ebeff2;
/* for app */
webkit-user-select: none;
/* 还不知 */
-webkit-app-region: drag;
/* -webkit-app-region: no-drag; */
}
#header a {
color: #ccc;
}
#header li {
color: #000000;
}
#header li a {
color: #000000;
}
#searchWrap,
#logo,
#switcher,
#leftNotebook,
.noteSplit {
display: none;
}
#header ul {
margin: 0;
padding: 0;
list-style: none;
}
#header ul li.dropdown {
display: inline-block;
height: 60px;
}
#header ul > li > a.dropdown-toggle {
display: block;
padding: 15px 5px 0 0;
position: relative;
}
#header span.icon {
display: inline-block;
font-size: 28px;
color: #999999;
}
.dropdown-menu {
border-radius: 0;
margin: 0;
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid #0fb264;
overflow-x: hidden;
overflow-y: auto;
}
.dropdown-menu li {
padding-left: 10px;
width: 100%;
height: 30px;
line-height: 30px;
}
.dropdown-menu > li > a {
color: #000000;
display: inline-block;
padding: 3px 3px;
}
.dropdown-menu > li:hover,
.dropdown-menu > li:focus {
background-color: #ebeff2;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-color: #ebeff2;
}
.ios7-a {
display: inline-block;
padding: 0 10px 0 5px;
height: 40px;
vertical-align: middle;
line-height: 38px;
cursor: pointer;
}
/*********************/
#page {
overflow: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
#pageInner {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
overflow: hidden;
}
#mainContainer {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: auto;
zoom: 1;
}
#search {
border: #bababa 1px solid;
background-color: #fff;
white-space: nowrap;
position: absolute;
height: 30px;
left: 3px;
right: 60px;
margin-top: 3px;
}
#search label {
display: none;
}
#searchButton {
border: 0 none;
width: 16px;
height: 16px;
overflow: hidden;
cursor: pointer;
position: absolute;
right: 3px;
top: 5px;
}
#searchInput {
border: 0 none;
overflow: hidden;
position: absolute;
right: 20px;
left: 0px;
padding-left: 10px;
height: 28px;
}
#searchInput:focus {
border: none;
outline: thin dotted #333;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
#notesAndSort {
background-color: #eee;
border-bottom: 1px solid #ebeff2;
}
/* item list */
#noteItemList {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
width: 100%;
overflow-y: hidden;
background-color: #f7f7f7;
padding: 0 5px;
}
#noteItemList .item {
position: relative;
height: 110px;
overflow: hidden;
cursor: pointer;
padding: 5px;
border: 1px solid #ebeff2;
border-radius: 3px;
margin-top: 5px;
background-color: #fff;
}
#noteItemList .item:hover,
#noteItemList .contextmenu-hover {
background-color: #ddd !important;
color: #000000;
}
#noteItemList .item-thumb {
padding-left: 10px;
width: 100px;
overflow: hidden;
position: absolute;
right: 0px;
height: 100px;
background-color: #fff;
margin-right: 5px;
}
.item-thumb img {
width: 100px;
}
#noteItemList .item-desc {
position: absolute;
left: 0;
right: 100px;
margin-left: 4px;
}
#noteItemList .item-desc .fa {
color: #666;
}
#noteItemList .item-blog {
position: absolute;
right: 1px;
font-size: 10px;
z-index: 2;
top: 1px;
padding: 3px;
cursor: pointer;
width: 20px;
text-align: center;
opacity: 0.5;
background-color: #464C5E;
}
#noteItemList .item-blog .fa {
color: #fff !important;
}
#noteItemList .item-blog:hover {
opacity: 0.8;
}
.item-title {
/*font-weight: 400;*/
font-size: 16px;
height: 22px;
line-height: 20px;
overflow: hidden;
margin-bottom: 0px;
color: #000000;
border-bottom: dashed 1px #ebeff2;
}
/* note */
/* editor */
#editorTool {
margin: 0;
padding: 0;
list-style: none;
}
#editorTool li {
display: inline-block;
}
#noteTitle:focus {
outline: none !important;
}
#editor,
#mdEditor {
z-index: 2;
top: 71px;
bottom: 0px;
right: 0;
left: 0;
padding: 0;
display: none;
}
#mdEditor {
z-index: 1;
background-color: #fff;
bottom: 10px;
}
#mdEditor #md-section-helper,
#mdEditor #wmd-input {
font-size: 14px;
line-height: 22px;
}
#editorContent {
position: absolute;
top: 30px;
bottom: 10px;
right: 0;
left: 0;
overflow: auto;
}
/* 包裹iframe */
#editor .mce-ifr {
border: none;
overflow: hidden !important;
/*不知道哪里设置了auto*/
/*border-radius: 5px;*/
}
/* 最顶层 */
#editor .mce-tinymce {
border: none;
}
/*编辑器按钮*/
#mceToolbar,
#wmd-button-bar {
position: relative;
height: 30px;
overflow: hidden;
background-color: #fbfcf7;
}
/* 编辑器工具 需要important, 因为mce还要有js加载css, 肯定在此之后 */
/*加高, 之前显得拥挤*/
.mce-btn-small button {
padding: 5px 5px !important;
line-height: 20px !important;
}
.mce-btn {
background-color: #fbfcf7 !important;
}
.mce-menubtn.mce-btn-small span {
line-height: 20px !important;
}
.mce-btn span {
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif !important;
}
.mce-primary button,
.mce-primary button i {
text-shadow: none;
}
.mce-primary {
background-color: #47a447 !important;
border-color: #398439 !important;
}
.mce-menu-item:hover,
.mce-menu-item.mce-selected,
.mce-menu-item:focus {
background-color: #ebeff2;
}
.mce-menu-item:hover span,
.mce-menu-item.mce-selected span,
.mce-menu-item:focus span {
color: #000 !important;
}
.mce-menu-item-normal.mce-active {
background-color: #ebeff2;
}
.tool-split {
display: inline-block;
line-height: 25px;
color: #ddd;
}
/*标签与其它工具*/
#tool {
display: none;
border-bottom: 1px solid #ddd;
}
/* tag */
#tag {
height: 40px;
line-height: 38px;
}
#tag .dropdown {
line-height: 30px;
}
#addTagInput {
line-height: 25px;
display: none;
padding: 0;
border: none;
background-color: #fbfcf7;
}
#addTagInput:focus {
outline: none;
}
.label-default {
background-color: #464C5E;
}
.label-red {
background-color: #d9534f;
}
.label-yellow {
background-color: #f0ad4e;
}
.label-blue {
background-color: #428bca;
}
.label-green {
background-color: #5cb85c;
}
.label {
border-radius: 0;
font-weight: normal;
}
.label i {
width: 10px;
cursor: pointer;
font-style: normal;
/*border-left: 1px solid #ccc;*/
display: inline-block;
padding-left: 3px;
opacity: 0;
}
.label i:hover {
opacity: 1;
}
/* leanote nav */
#leanoteNav {
position: absolute;
right: 5px;
border: 1px solid #ccc;
border-radius: 3px;
background-color: #fff;
opacity: 0.5;
z-index: 11;
margin-right: 2px;
}
#leanoteNav h1 {
margin: 0;
font-size: 18px;
padding: 3px;
cursor: pointer;
}
#leanoteNav i {
padding: 3px;
}
#leanoteNav span {
display: none;
}
#leanoteNav #leanoteNavContent {
display: none;
overflow: auto;
}
#leanoteNav.unfolder {
min-width: 200px;
max-width: 300px;
opacity: 0.8;
}
#leanoteNav.unfolder h1 {
border-bottom: 1px dashed #ebeff2;
}
#leanoteNav.unfolder span {
display: inline;
}
#leanoteNav.unfolder #leanoteNavContent {
display: block;
min-height: 30px;
}
#leanoteNav ul {
margin: 0;
padding-left: 23px;
}
#leanoteNav ul li {
list-style-type: disc;
}
#leanoteNav ul li a:hover {
color: #0fb264;
}
#leanoteNav ul .nav-h2 {
margin-left: 20px;
}
#leanoteNav ul .nav-h3 {
margin-left: 30px;
}
#leanoteNav ul .nav-h4 {
margin-left: 40px;
}
#leanoteNav ul .nav-h5 {
margin-left: 50px;
}
.scrollTo-a {
cursor: pointer !important;
}
#noteRead {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: none;
z-index: 100;
padding-left: 5px;
background-color: #fff;
}
#noteReadContainer {
position: relative;
width: 100%;
height: 100%;
}
#noteReadTop {
position: absolute;
height: 60px;
left: 0;
right: 0;
border-bottom: 1px solid #ebeff2;
}
#noteReadTitle {
margin: 3px 0;
}
#noteReadContent {
position: absolute;
top: 60px;
bottom: 0;
right: 0;
left: 0;
overflow: auto;
padding: 3px;
}
/*scroll*/
/*
::-webkit-scrollbar {
width: 5px;
height: 8px;
background: none;
}
::-webkit-scrollbar-thumb {
background-color: #41586e;
opacity: 0.1;
}
::-webkit-scrollbar-thumb:hover {
background-color:#dadada
}
::-webkit-scrollbar-thumb:active {
background-color:#606060
}
::-webkit-scrollbar-thumb:disabled {
background-color:#f9f9f9
}
::-webkit-scrollbar-corner {
background-color:#f0f0f0
}
::-webkit-scrollbar-button {
height: 0;
background-color:#f0f0f0;
background-repeat:no-repeat
}
::-webkit-scrollbar-button:vertical {
height:0px
}
::-webkit-scrollbar-button:horizontal {
width:33px
}
::-webkit-scrollbar-button:horizontal:increment {
background-position:0 -444px
}
::-webkit-scrollbar-button:horizontal:decrement {
background-position:12px -425px
}
::-webkit-scrollbar-button:vertical:increment {
background-position:-1px -391px
}
::-webkit-scrollbar-button:vertical:decrement {
background-position:-1px -358px
}
::-webkit-scrollbar-button:hover {
background-color:#dadada
}
::-webkit-scrollbar-button:horizontal:increment:hover {
background-position:0 -548px
}
::-webkit-scrollbar-button:horizontal:decrement:hover {
background-position:12px -529px
}
::-webkit-scrollbar-button:vertical:increment:hover {
background-position:-1px -495px
}
::-webkit-scrollbar-button:vertical:decrement:hover {
background-position:-1px -462px
}
::-webkit-scrollbar-button:active {
background-color:#606060
}
::-webkit-scrollbar-button:horizontal:increment:active {
background-position:0 -652px
}
::-webkit-scrollbar-button:horizontal:decrement:active {
background-position:12px -633px
}
::-webkit-scrollbar-button:vertical:increment:active {
background-position:-1px -599px
}
::-webkit-scrollbar-button:vertical:decrement:active {
background-position:-1px -566px
}
::-webkit-scrollbar-button:disabled {
background-color:#f9f9f9
}
::-webkit-scrollbar-button:horizontal:increment:disabled {
background-position:0 -756px
}
::-webkit-scrollbar-button:horizontal:decrement:disabled {
background-position:12px -737px
}
::-webkit-scrollbar-button:vertical:increment:disabled {
background-position:-1px -703px
}
::-webkit-scrollbar-button:vertical:decrement:disabled {
background-position:-1px -670px
}
*/
/*from notebook*/
/*::-webkit-scrollbar{width:7px;height:7px;}::-webkit-scrollbar-thumb{background-color:rgba(50,50,50,0.3);}::-webkit-scrollbar-thumb:hover{background-color:rgba(50,50,50,0.6);}::-webkit-scrollbar-track{background-color:rgba(50,50,50,0.1);}::-webkit-scrollbar-track:hover{background-color:rgba(50,50,50,0.2);}
*/
.fa-calendar {
color: #666;
}
.dropdown-menu .fa {
width: 15px;
}
.dropdown-menu span,
.dropdown-menu a,
.dropdown-menu li {
cursor: default;
}
#topNav a {
display: inline-block;
line-height: 60px;
}
.tab-pane {
padding: 5px 0 0 0;
}
.alert {
margin-bottom: 10px;
}
.btn {
border-radius: 0 !important;
}
#notebookNavForNewNote li,
#notebookNavForNewSharedNote > li {
padding-left: 0;
border-bottom: 1px solid #ebeff2;
}
#notebookNavForNewNote > li:hover,
#notebookNavForNewNote > li:focus,
#notebookNavForNewSharedNote > li:hover,
#notebookNavForNewSharedNote > li:focus {
background: none;
}
.new-note-left {
padding: 0 5px;
width: 95px;
overflow: hidden;
white-space: nowrap;
border-right: 1px dashed #ebeff2;
}
.new-note-left:hover {
background-color: #ebeff2;
}
.new-note-right {
padding: 0 5px;
}
.new-note-right:hover {
background-color: #ebeff2;
}
#historyList table {
width: 100%;
}
#historyList .btns {
border-top: 1px dashed #eee;
padding: 5px 0;
}
#left-column {
width: 100% !important;
}
#editorMask {
position: absolute;
top: 0px;
bottom: 0px;
right: 0;
left: 0;
background-color: #fff;
z-index: -10;
padding-top: 50px;
text-align: center;
}
#editorMask .fa,
#editorMask a {
font-size: 24px;
}
#editorMask a {
display: inline-block;
border-radius: 3px;
border: 1px solid #ebeff2;
padding: 10px;
}
#editorMask a:hover {
background-color: #65bd77;
color: #fff;
}
html,
body {
background-color: #fbfcf7;
overflow: hidden;
}
#right-column,
#newNoteMarkdownBtn,
#newShareNoteMarkdownBtn,
.new-split,
#editorMask,
#sortType,
#myProfile,
#demoRegister {
display: none;
}
#mainMask {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
background-color: #fbfcf7;
text-align: center;
padding-top: 100px;
z-index: 1000;
}
#header {
position: absolute;
left: 0;
right: 0;
z-index: 1;
color: #ccc;
}
#header #leanoteMsg {
position: absolute;
width: 700px;
left: 0;
right: 0;
text-align: right;
line-height: 60px;
margin: auto;
}
#newNoteWrap {
line-height: 40px;
margin-top: 10px;
margin-left: 10px;
}
#newNoteWrap,
#topNav {
opacity: 0;
}
#newNoteWrap:hover,
#topNav:hover {
opacity: 1;
}
#mainContainer {
overflow-y: hidden;
}
#newMyNote,
#newSharedNote {
position: relative;
}
#newMyNote .dropdown-menu,
#newSharedNote .dropdown-menu {
left: 0px !important;
}
#newMyNote .dropdown,
#newSharedNote .dropdown {
position: static;
}
.dropdown-menu {
border: 1px solid #ccc;
background-color: #fbfcf7;
}
#note {
position: absolute;
width: 700px;
margin: auto;
height: 100%;
left: 0;
right: 0;
}
#editor,
#mdEditor {
position: absolute;
top: 60px;
z-index: 2;
}
#wmd-input {
border: none;
background-color: #fbfcf7;
font-size: 16px !important;
}
#md-section-helper {
display: none;
}
#mdEditorPreview {
top: 43px !important;
}
#mceToolbar,
#wmd-button-bar {
height: 40px;
padding: 5px 0;
}
.editorBg {
height: 3px;
background: url(/images/editor/editor-shadow.png) no-repeat center bottom #f9faf4;
}
.mce-btn-small i,
.mce-menubtn.mce-btn-small span,
.wmd-button > span {
opacity: 0.85;
}
.mce-ico {
font-size: 18px;
line-height: 18px;
width: 18px;
height: 18px;
}
.tool-split {
line-height: 30px;
}
.mce-menubtn.mce-fixed-width.mce-btn-small span {
width: 80px;
}
.mce-menubtn.mce-btn-small span {
font-size: 16px;
}
#editorContent_ifr html {
border: none !important;
}
#noteTop {
position: absolute;
z-index: 2;
left: 0;
right: 150px;
padding: 15px 0;
height: 59px;
}
#noteTitleDiv {
height: 30px;
}
#noteTitle {
height: 100%;
padding: 0px 3px;
width: 100%;
border: none;
background-color: #fbfcf7;
}
#noteList {
position: fixed;
top: 0;
bottom: 0;
left: 10px;
margin-top: 60px;
width: 200px;
z-index: 0;
opacity: 0.8;
overflow-x: hidden;
overflow-y: hidden;
/*
&:hover {
#noteItemListWrap {
display: block;
}
#notesAndSort {
display: block;
}
}
*/
}
#noteList #notesAndSort {
display: none;
}
#noteList #noteItemListWrap {
display: none;
}
#notesAndSort {
background: none;
}
#noteItemList {
background: none;
}
#noteItemList .item {
background: none;
}
.item-active,
#noteItemList .item-active:hover {
background-color: #F5F8EA !important;
color: #000;
}
.item-active .item-desc .fa,
#noteItemList .item-active:hover .item-desc .fa {
color: #666 !important;
}
.item-active .item-title,
#noteItemList .item-active:hover .item-title {
color: #000;
}
#leanoteNav {
background-color: #fbfcf7;
opacity: 0.3;
right: -30px;
}
.new-note-right {
padding: 0 2px;
}
#loading {
display: inline-block;
width: 20px;
height: 20px;
content: url(../../images/loading-a-20-black.gif);
margin-top: 10px;
visibility: hidden;
}
#moreBtn {
right: 0 !important;
}
#toggleEditorMode {
margin: 0 10px !important;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,743 @@
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url('../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url('../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url('../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
}
/*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/
::selection {
background: #000000;
color: #ffffff;
}
::-moz-selection {
background: #000000;
color: #ffffff;
}
::-webkit-selection {
background: #000000;
color: #ffffff;
}
html,
body {
background-color: #fbfcf7;
}
*,
body {
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
font-weight: 300;
font-size: 16px;
}
h1,
h2,
h3 {
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif;
font-weight: 300 !important;
}
a {
color: #000000;
cursor: pointer;
}
a:hover {
text-decoration: none !important;
color: #000000;
}
a.raw {
color: #428bca;
}
a.raw:hover {
color: #2a6496;
}
/* header */
#header {
height: 60px;
background-color: #fbfcf7;
color: #ffffff;
border-bottom: 1px solid #ebeff2;
/* for app */
webkit-user-select: none;
/* 还不知 */
-webkit-app-region: drag;
/* -webkit-app-region: no-drag; */
}
#header a {
color: #ccc;
}
#header li {
color: #000000;
}
#header li a {
color: #000000;
}
#searchWrap,
#logo,
#switcher,
#leftNotebook,
.noteSplit {
display: none;
}
#header ul {
margin: 0;
padding: 0;
list-style: none;
}
#header ul li.dropdown {
display: inline-block;
height: 60px;
}
#header ul > li > a.dropdown-toggle {
display: block;
padding: 15px 5px 0 0;
position: relative;
}
#header span.icon {
display: inline-block;
font-size: 28px;
color: #999999;
}
.dropdown-menu {
border-radius: 0;
margin: 0;
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid #0fb264;
overflow-x: hidden;
overflow-y: auto;
}
.dropdown-menu li {
padding-left: 10px;
width: 100%;
height: 30px;
line-height: 30px;
}
.dropdown-menu > li > a {
color: #000000;
display: inline-block;
padding: 3px 3px;
}
.dropdown-menu > li:hover,
.dropdown-menu > li:focus {
background-color: #ebeff2;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-color: #ebeff2;
}
.ios7-a {
display: inline-block;
padding: 0 10px 0 5px;
height: 40px;
vertical-align: middle;
line-height: 38px;
cursor: pointer;
}
/*********************/
#page {
overflow: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
#pageInner {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
overflow: hidden;
}
#mainContainer {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: auto;
zoom: 1;
}
#search {
border: #bababa 1px solid;
background-color: #fff;
white-space: nowrap;
position: absolute;
height: 30px;
left: 3px;
right: 60px;
margin-top: 3px;
}
#search label {
display: none;
}
#searchButton {
border: 0 none;
width: 16px;
height: 16px;
overflow: hidden;
cursor: pointer;
position: absolute;
right: 3px;
top: 5px;
}
#searchInput {
border: 0 none;
overflow: hidden;
position: absolute;
right: 20px;
left: 0px;
padding-left: 10px;
height: 28px;
}
#searchInput:focus {
border: none;
outline: thin dotted #333;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
#notesAndSort {
background-color: #eee;
border-bottom: 1px solid #ebeff2;
}
/* item list */
#noteItemList {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
width: 100%;
overflow-y: hidden;
background-color: #f7f7f7;
padding: 0 5px;
}
#noteItemList .item {
position: relative;
height: 110px;
overflow: hidden;
cursor: pointer;
padding: 5px;
border: 1px solid #ebeff2;
border-radius: 3px;
margin-top: 5px;
background-color: #fff;
}
#noteItemList .item:hover,
#noteItemList .contextmenu-hover {
background-color: #ddd !important;
color: #000000;
}
#noteItemList .item-thumb {
padding-left: 10px;
width: 100px;
overflow: hidden;
position: absolute;
right: 0px;
height: 100px;
background-color: #fff;
margin-right: 5px;
}
.item-thumb img {
width: 100px;
}
#noteItemList .item-desc {
position: absolute;
left: 0;
right: 100px;
margin-left: 4px;
}
#noteItemList .item-desc .fa {
color: #666;
}
#noteItemList .item-blog {
position: absolute;
right: 1px;
font-size: 10px;
z-index: 2;
top: 1px;
padding: 3px;
cursor: pointer;
width: 20px;
text-align: center;
opacity: 0.5;
background-color: #464C5E;
}
#noteItemList .item-blog .fa {
color: #fff !important;
}
#noteItemList .item-blog:hover {
opacity: 0.8;
}
.item-title {
/*font-weight: 400;*/
font-size: 16px;
height: 22px;
line-height: 20px;
overflow: hidden;
margin-bottom: 0px;
color: #000000;
border-bottom: dashed 1px #ebeff2;
}
/* note */
/* editor */
#editorTool {
margin: 0;
padding: 0;
list-style: none;
}
#editorTool li {
display: inline-block;
}
#noteTitle:focus {
outline: none !important;
}
#editor,
#mdEditor {
z-index: 2;
top: 71px;
bottom: 0px;
right: 0;
left: 0;
padding: 0;
display: none;
}
#mdEditor {
z-index: 1;
background-color: #fff;
bottom: 10px;
}
#mdEditor #md-section-helper,
#mdEditor #wmd-input {
font-size: 14px;
line-height: 22px;
}
#editorContent {
position: absolute;
top: 30px;
bottom: 10px;
right: 0;
left: 0;
overflow: auto;
}
/* 包裹iframe */
#editor .mce-ifr {
border: none;
overflow: hidden !important;
/*不知道哪里设置了auto*/
/*border-radius: 5px;*/
}
/* 最顶层 */
#editor .mce-tinymce {
border: none;
}
/*编辑器按钮*/
#mceToolbar,
#wmd-button-bar {
position: relative;
height: 30px;
overflow: hidden;
background-color: #fbfcf7;
}
/* 编辑器工具 需要important, 因为mce还要有js加载css, 肯定在此之后 */
/*加高, 之前显得拥挤*/
.mce-btn-small button {
padding: 5px 5px !important;
line-height: 20px !important;
}
.mce-btn {
background-color: #fbfcf7 !important;
}
.mce-menubtn.mce-btn-small span {
line-height: 20px !important;
}
.mce-btn span {
font-family: 'Open Sans', 'Helvetica Neue', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif !important;
}
.mce-primary button,
.mce-primary button i {
text-shadow: none;
}
.mce-primary {
background-color: #47a447 !important;
border-color: #398439 !important;
}
.mce-menu-item:hover,
.mce-menu-item.mce-selected,
.mce-menu-item:focus {
background-color: #ebeff2;
}
.mce-menu-item:hover span,
.mce-menu-item.mce-selected span,
.mce-menu-item:focus span {
color: #000 !important;
}
.mce-menu-item-normal.mce-active {
background-color: #ebeff2;
}
.tool-split {
display: inline-block;
line-height: 25px;
color: #ddd;
}
/*标签与其它工具*/
#tool {
display: none;
border-bottom: 1px solid #ddd;
}
/* tag */
#tag {
height: 40px;
line-height: 38px;
}
#tag .dropdown {
line-height: 30px;
}
#addTagInput {
line-height: 25px;
display: none;
padding: 0;
border: none;
background-color: #fbfcf7;
}
#addTagInput:focus {
outline: none;
}
.label-default {
background-color: #464C5E;
}
.label-red {
background-color: #d9534f;
}
.label-yellow {
background-color: #f0ad4e;
}
.label-blue {
background-color: #428bca;
}
.label-green {
background-color: #5cb85c;
}
.label {
border-radius: 0;
font-weight: normal;
}
.label i {
width: 10px;
cursor: pointer;
font-style: normal;
/*border-left: 1px solid #ccc;*/
display: inline-block;
padding-left: 3px;
opacity: 0;
}
.label i:hover {
opacity: 1;
}
/* leanote nav */
#leanoteNav {
position: absolute;
right: 5px;
border: 1px solid #ccc;
border-radius: 3px;
background-color: #fff;
opacity: 0.5;
z-index: 11;
margin-right: 2px;
}
#leanoteNav h1 {
margin: 0;
font-size: 18px;
padding: 3px;
cursor: pointer;
}
#leanoteNav i {
padding: 3px;
}
#leanoteNav span {
display: none;
}
#leanoteNav #leanoteNavContent {
display: none;
overflow: auto;
}
#leanoteNav.unfolder {
min-width: 200px;
max-width: 300px;
opacity: 0.8;
}
#leanoteNav.unfolder h1 {
border-bottom: 1px dashed #ebeff2;
}
#leanoteNav.unfolder span {
display: inline;
}
#leanoteNav.unfolder #leanoteNavContent {
display: block;
min-height: 30px;
}
#leanoteNav ul {
margin: 0;
padding-left: 23px;
}
#leanoteNav ul li {
list-style-type: disc;
}
#leanoteNav ul li a:hover {
color: #0fb264;
}
#leanoteNav ul .nav-h2 {
margin-left: 20px;
}
#leanoteNav ul .nav-h3 {
margin-left: 30px;
}
#leanoteNav ul .nav-h4 {
margin-left: 40px;
}
#leanoteNav ul .nav-h5 {
margin-left: 50px;
}
.scrollTo-a {
cursor: pointer !important;
}
#noteRead {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: none;
z-index: 100;
padding-left: 5px;
background-color: #fff;
}
#noteReadContainer {
position: relative;
width: 100%;
height: 100%;
}
#noteReadTop {
position: absolute;
height: 60px;
left: 0;
right: 0;
border-bottom: 1px solid #ebeff2;
}
#noteReadTitle {
margin: 3px 0;
}
#noteReadContent {
position: absolute;
top: 60px;
bottom: 0;
right: 0;
left: 0;
overflow: auto;
padding: 3px;
}
/*scroll*/
/*
::-webkit-scrollbar {
width: 5px;
height: 8px;
background: none;
}
::-webkit-scrollbar-thumb {
background-color: #41586e;
opacity: 0.1;
}
::-webkit-scrollbar-thumb:hover {
background-color:#dadada
}
::-webkit-scrollbar-thumb:active {
background-color:#606060
}
::-webkit-scrollbar-thumb:disabled {
background-color:#f9f9f9
}
::-webkit-scrollbar-corner {
background-color:#f0f0f0
}
::-webkit-scrollbar-button {
height: 0;
background-color:#f0f0f0;
background-repeat:no-repeat
}
::-webkit-scrollbar-button:vertical {
height:0px
}
::-webkit-scrollbar-button:horizontal {
width:33px
}
::-webkit-scrollbar-button:horizontal:increment {
background-position:0 -444px
}
::-webkit-scrollbar-button:horizontal:decrement {
background-position:12px -425px
}
::-webkit-scrollbar-button:vertical:increment {
background-position:-1px -391px
}
::-webkit-scrollbar-button:vertical:decrement {
background-position:-1px -358px
}
::-webkit-scrollbar-button:hover {
background-color:#dadada
}
::-webkit-scrollbar-button:horizontal:increment:hover {
background-position:0 -548px
}
::-webkit-scrollbar-button:horizontal:decrement:hover {
background-position:12px -529px
}
::-webkit-scrollbar-button:vertical:increment:hover {
background-position:-1px -495px
}
::-webkit-scrollbar-button:vertical:decrement:hover {
background-position:-1px -462px
}
::-webkit-scrollbar-button:active {
background-color:#606060
}
::-webkit-scrollbar-button:horizontal:increment:active {
background-position:0 -652px
}
::-webkit-scrollbar-button:horizontal:decrement:active {
background-position:12px -633px
}
::-webkit-scrollbar-button:vertical:increment:active {
background-position:-1px -599px
}
::-webkit-scrollbar-button:vertical:decrement:active {
background-position:-1px -566px
}
::-webkit-scrollbar-button:disabled {
background-color:#f9f9f9
}
::-webkit-scrollbar-button:horizontal:increment:disabled {
background-position:0 -756px
}
::-webkit-scrollbar-button:horizontal:decrement:disabled {
background-position:12px -737px
}
::-webkit-scrollbar-button:vertical:increment:disabled {
background-position:-1px -703px
}
::-webkit-scrollbar-button:vertical:decrement:disabled {
background-position:-1px -670px
}
*/
/*from notebook*/
/*::-webkit-scrollbar{width:7px;height:7px;}::-webkit-scrollbar-thumb{background-color:rgba(50,50,50,0.3);}::-webkit-scrollbar-thumb:hover{background-color:rgba(50,50,50,0.6);}::-webkit-scrollbar-track{background-color:rgba(50,50,50,0.1);}::-webkit-scrollbar-track:hover{background-color:rgba(50,50,50,0.2);}
*/
.fa-calendar {
color: #666;
}
.dropdown-menu .fa {
width: 15px;
}
.dropdown-menu span,
.dropdown-menu a,
.dropdown-menu li {
cursor: default;
}
#topNav a {
display: inline-block;
line-height: 60px;
}
.tab-pane {
padding: 5px 0 0 0;
}
.alert {
margin-bottom: 10px;
}
.btn {
border-radius: 0 !important;
}
#notebookNavForNewNote li,
#notebookNavForNewSharedNote > li {
padding-left: 0;
border-bottom: 1px solid #ebeff2;
}
#notebookNavForNewNote > li:hover,
#notebookNavForNewNote > li:focus,
#notebookNavForNewSharedNote > li:hover,
#notebookNavForNewSharedNote > li:focus {
background: none;
}
.new-note-left {
padding: 0 5px;
width: 95px;
overflow: hidden;
white-space: nowrap;
border-right: 1px dashed #ebeff2;
}
.new-note-left:hover {
background-color: #ebeff2;
}
.new-note-right {
padding: 0 5px;
}
.new-note-right:hover {
background-color: #ebeff2;
}
#historyList table {
width: 100%;
}
#historyList .btns {
border-top: 1px dashed #eee;
padding: 5px 0;
}
#left-column {
width: 100% !important;
}
#editorMask {
position: absolute;
top: 0px;
bottom: 0px;
right: 0;
left: 0;
background-color: #fff;
z-index: -10;
padding-top: 50px;
text-align: center;
}
#editorMask .fa,
#editorMask a {
font-size: 24px;
}
#editorMask a {
display: inline-block;
border-radius: 3px;
border: 1px solid #ebeff2;
padding: 10px;
}
#editorMask a:hover {
background-color: #65bd77;
color: #fff;
}

View File

@@ -0,0 +1,832 @@
@bgColor: #fff;
@headerBgColor: #25313e;
@fontFamily: 'Open Sans','Helvetica Neue',Arial,'Hiragino Sans GB','Microsoft YaHei','WenQuanYi Micro Hei',sans-serif;
@aWhiteColor: #fff;
@aBlackColor: #000;
@borderColor: #EBEFF2;
@headerHeight: 60px;
@headerHeightNoBorder: 59px;
@hColor: #0fb264; // #47a447;// 更深 #198764; // boostrap: #5cb85c; bootstrap:hover #47a447; // #5AD4A0; // #47a447
@titleColor: @hColor;
@fontSize: 14px;
@leftNotebookWidth: 170px;
@noteListWidth: 250px;
@noteActiveBg: #65bd77;
@bgColor: #fbfcf7;
@headerBgColor: #fbfcf7;
@fontFamily: 'Open Sans','Helvetica Neue',Arial,'Hiragino Sans GB','Microsoft YaHei','WenQuanYi Micro Hei',sans-serif;
@aWhiteColor: #fff;
@aBlackColor: #000;
@borderColor: #EBEFF2;
@headerHeight: 60px;
@hColor: #0fb264; // #47a447;// 更深 #198764; // boostrap: #5cb85c; bootstrap:hover #47a447; // #5AD4A0; // #47a447
@titleColor: @hColor;
@fontSize: 16px;
@leftNotebookWidth: 170px;
@noteListWidth: 250px;
@noteActiveBg: #65bd77;
@editorWidth: 700px;
// font
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url('../../fonts/open-sans2/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url('../../fonts/open-sans2/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url('../../fonts/open-sans2/k3k702ZOKiLJc3WVjuplzHhCUOGz7vYGh680lGh-uXM.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url('../../fonts/open-sans2/xjAJXh38I15wypJXxuGMBobN6UDyHWBl620a-IRfuBk.woff') format('woff');
}
/*"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue", Helvetica, "Microsoft Yahei", Verdana, Simsun, "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "BBAlpha Sans", "S60 Sans", Arial, sans-serif;*/
@selectionBg: @aBlackColor;
@selectionColor: #fff;
::selection { background:@selectionBg; color:@selectionColor; }
::-moz-selection { background:@selectionBg; color:@selectionColor; }
::-webkit-selection { background:@selectionBg; color:@selectionColor; }
html,body {
background-color: @bgColor;
}
*, body {
font-family: @fontFamily;
font-weight: 300;
font-size: @fontSize;
}
h1, h2, h3 {
font-family: @fontFamily;
font-weight: 300 !important;
}
a {
color: @aBlackColor;
cursor: pointer;
}
a:hover {
text-decoration: none !important;
color: @aBlackColor;
}
// 原生的a
a.raw {
color: #428bca;
}
a.raw:hover {
color: #2a6496;
}
/* header */
#header {
height: @headerHeight;
background-color: @headerBgColor;
color: @aWhiteColor;
a {
color: #ccc;//@aWhiteColor;
}
li {
color: @aBlackColor;
}
li a {
color: @aBlackColor;
}
border-bottom: 1px solid @borderColor;
/* for app */
webkit-user-select: none; /* 还不知 */
-webkit-app-region: drag; /* -webkit-app-region: no-drag; */
}
#searchWrap, #logo, #switcher,
#leftNotebook,
.noteSplit
{
display: none;
}
#header ul {
margin:0;
padding:0;
list-style: none;
}
#header ul li.dropdown {
display: inline-block;
height: @headerHeight;
}
#header ul > li > a.dropdown-toggle {
display: block;
padding: 15px 5px 0 0;
position: relative;
}
#header span.icon {
display: inline-block;
font-size: 28px;
color: #999999;
}
.dropdown-menu {
border-radius: 0;
margin:0;
-webkit-box-shadow: none;
box-shadow: none;
border: 1px solid @hColor;
overflow-x: hidden;
overflow-y: auto;
}
.dropdown-menu li {
padding-left: 10px;
width: 100%;
height: 30px; // 父设置了line-height, 子下拉也受影响, "新建笔记"
line-height: 30px;
}
.dropdown-menu > li > a {
color: @aBlackColor;
display: inline-block;
padding: 3px 3px;
}
.dropdown-menu>li:hover, .dropdown-menu>li:focus {
background-color: @borderColor;
}
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
background-color: @borderColor;
}
.ios7-a {
display: inline-block;
padding: 0 10px 0 5px;
height: 40px;
vertical-align: middle;
line-height: 38px;
cursor: pointer;
}
/*********************/
#page {
overflow: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
#pageInner {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
overflow: hidden;
}
#mainContainer {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: auto;
zoom: 1;
}
#search {
border: #bababa 1px solid;
background-color: #fff;
white-space: nowrap;
position: absolute;
height: 30px;
left:3px;
right:60px;
margin-top: 3px;
}
#search label {
display: none;
}
#searchButton {
border: 0 none;
width: 16px;
height: 16px;
overflow: hidden;
cursor: pointer;
position: absolute;
right:3px;
top: 5px;
}
#searchInput {
border: 0 none;
overflow: hidden;
position: absolute;
right:20px;
left: 0px;
padding-left: 10px;
height: 28px;
}
#searchInput:focus {
border: none;
outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px
}
#notesAndSort {
background-color: #eee; // #65bd77; // @bgColor;
border-bottom: 1px solid @borderColor;
a.dropdown-toggle {
// color: #fff;
}
}
/* item list */
#noteItemList {
position: absolute;
left:0;
right:0;
bottom: 0;
top: 0;
width: 100%;
overflow-y: hidden;
background-color: #f7f7f7;
padding: 0 5px;
}
#noteItemList .item {
position: relative;
height: 110px;
overflow: hidden;
cursor: pointer;
padding: 5px;
border: 1px solid @borderColor;
border-radius: 3px;
margin-top: 5px;
background-color: #fff;
}
#noteItemList .item:hover,
#noteItemList .contextmenu-hover {
background-color: #ddd !important;
color: @aBlackColor;
.item-title {
// color: @aBlackColor;
//font-weight: 800;
}
}
#noteItemList .item-thumb {
padding-left: 10px;
width: 100px;
height: 100px;
overflow: hidden;
position: absolute;
right: 0px;
height: 100px;
background-color: #fff;
margin-right: 5px;
}
.item-thumb img {
width: 100px;
}
#noteItemList .item-desc {
position: absolute;
left: 0;
right: 100px;
margin-left: 4px;
.fa { // folder, calender 颜色暗些
color: #666;
}
}
// blog
#noteItemList .item-blog {
position: absolute;
right: 1px;
font-size: 10px;
z-index: 2;
top: 1px;
padding: 3px;
cursor: pointer;
.fa {
color: #fff !important;
}
width: 20px;
text-align: center;
opacity: 0.5;
&:hover {
opacity: 0.8;
}
background-color: #464C5E;
}
.item-title {
/*font-weight: 400;*/
font-size: 16px;
height: 22px;
line-height: 20px;
overflow: hidden;
margin-bottom: 0px;
color: @aBlackColor;
border-bottom: dashed 1px @borderColor;
}
/* note */
/* editor */
#editorTool {
margin: 0;
padding: 0;
list-style: none;
// width: 200px;
}
#editorTool li {
display: inline-block;
}
#noteTitle:focus {
// outline:thin dotted #333;outline:1px auto -webkit-focus-ring-color;outline-offset:-2px
outline: none !important;
// border: 1px solid @hColor;
}
#editor, #mdEditor{
z-index: 2;
top: 71px;
bottom: 0px;
right: 0;
left: 0;
padding: 0; // 0px 0px 0px 0px;
display: none;
}
#mdEditor {
z-index: 1;
background-color: #fff;
bottom: 10px;
#md-section-helper, #wmd-input {
font-size: 14px;
line-height: 22px;
}
}
#editorContent {
position: absolute;
top:30px;
bottom: 10px;
right: 0;
left: 0;
overflow: auto; // 不设置editor隐藏时没有scroll
}
#editorContent_ifr {
// padding-top: 10px;
}
/* 包裹iframe */
#editor .mce-ifr {
border: none;
// padding: 10px;
overflow: hidden !important; /*不知道哪里设置了auto*/
/*border-radius: 5px;*/
// border: 1px solid @borderColor;
// border-top-left-radius: 5px;
// border-bottom-left-radius: 5px;
}
/* 最顶层 */
#editor .mce-tinymce {
border: none;
}
#editor iframe {
}
/*编辑器按钮*/
#mceToolbar, #wmd-button-bar {
position: relative;
height: 30px;
overflow: hidden;
background-color: @bgColor;
}
/* 编辑器工具 需要important, 因为mce还要有js加载css, 肯定在此之后 */
/*加高, 之前显得拥挤*/
.mce-btn-small button {
padding: 5px 5px !important;
line-height: 20px !important;
}
.mce-btn {
background-color: @bgColor !important;
}
.mce-menubtn.mce-btn-small span {
line-height: 20px !important;
}
.mce-btn span {
font-family: @fontFamily !important;
}
.mce-primary button, .mce-primary button i {
text-shadow: none;
}
.mce-primary {
background-color: #47a447 !important;
border-color: #398439 !important;
}
// 下拉
.mce-menu-item:hover, .mce-menu-item.mce-selected, .mce-menu-item:focus {
background-color: @borderColor;
span {
color: #000 !important;
}
}
// 下拉选中
.mce-menu-item-normal.mce-active {
background-color: @borderColor;
}
// tool的分隔
.tool-split {
display: inline-block;
line-height: 25px;
color: #ddd;
}
/*标签与其它工具*/
#tool {
display: none;
border-bottom: 1px solid #ddd;
}
/* tag */
#tag {
height: 40px;
line-height: 38px
}
// 前面的38影响了dropdown
#tag .dropdown {
line-height: 30px;
}
#addTagInput {
line-height: 25px;
display: none;
padding:0;
border: none;
background-color: @bgColor;
}
#addTagInput:focus {
outline: none;
}
.label-default {
background-color: #464C5E;
}
.label-red {
background-color: #d9534f;
}
.label-yellow {
background-color: #f0ad4e;
}
.label-blue {
background-color: #428bca;
}
.label-green {
background-color: #5cb85c;
}
.label {
border-radius: 0;
font-weight: normal;
}
.label i {
width: 10px;
cursor: pointer;
font-style: normal;
/*border-left: 1px solid #ccc;*/
display: inline-block;
padding-left: 3px;
opacity: 0;
}
.label i:hover {
opacity: 1;
// font-weight: bold;
}
/* leanote nav */
#leanoteNav {
position: absolute;
right: 5px;
border: 1px solid #ccc;
border-radius: 3px;
background-color: #fff;
opacity: 0.5;
// display: none;
z-index: 11;
margin-right: 2px;
h1 {
margin:0;
font-size: 18px;
padding: 3px;
cursor: pointer;
}
i {
padding: 3px;
}
span {
display: none;
}
#leanoteNavContent {
display: none;
overflow: auto;
}
}
#leanoteNav.unfolder {
min-width: 200px;
max-width: 300px;
// bottom: 1px;
opacity: 0.8;
h1 {
border-bottom: 1px dashed @borderColor;
}
span {
display: inline;
}
#leanoteNavContent {
display: block;
min-height: 30px;
}
}
#leanoteNav ul {
margin:0;
padding-left: 23px;
li {
list-style-type: disc;
a {
&:hover {
color: @hColor;
}
}
}
}
#leanoteNav ul .nav-h1 {
}
#leanoteNav ul .nav-h2 {
margin-left: 20px;
}
#leanoteNav ul .nav-h3 {
margin-left: 30px;
}
#leanoteNav ul .nav-h4 {
margin-left: 40px;
}
#leanoteNav ul .nav-h5 {
margin-left: 50px;
}
.scrollTo-a {
cursor: pointer !important;
}
//---------------
// note for read
#noteRead {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: none;
z-index: 100;
padding-left: 5px;
background-color: #fff;
}
#noteReadContainer {
position: relative;
width: 100%;
height: 100%;
}
@noteReadTopHeight: 60px;
#noteReadTop {
position: absolute;
height: @noteReadTopHeight;
left:0;
right: 0;
border-bottom: 1px solid @borderColor;
}
#noteReadTitle {
margin: 3px 0;
}
#noteReadContent {
position: absolute;
top: @noteReadTopHeight;
bottom: 0;
right: 0;
left: 0;
overflow: auto;
padding: 3px;
}
@sbc: @bgColor;
/*scroll*/
/*
::-webkit-scrollbar {
width: 5px;
height: 8px;
background: none;
}
::-webkit-scrollbar-thumb {
background-color: #41586e;
opacity: 0.1;
}
::-webkit-scrollbar-thumb:hover {
background-color:#dadada
}
::-webkit-scrollbar-thumb:active {
background-color:#606060
}
::-webkit-scrollbar-thumb:disabled {
background-color:#f9f9f9
}
::-webkit-scrollbar-corner {
background-color:#f0f0f0
}
::-webkit-scrollbar-button {
height: 0;
background-color:#f0f0f0;
background-repeat:no-repeat
}
::-webkit-scrollbar-button:vertical {
height:0px
}
::-webkit-scrollbar-button:horizontal {
width:33px
}
::-webkit-scrollbar-button:horizontal:increment {
background-position:0 -444px
}
::-webkit-scrollbar-button:horizontal:decrement {
background-position:12px -425px
}
::-webkit-scrollbar-button:vertical:increment {
background-position:-1px -391px
}
::-webkit-scrollbar-button:vertical:decrement {
background-position:-1px -358px
}
::-webkit-scrollbar-button:hover {
background-color:#dadada
}
::-webkit-scrollbar-button:horizontal:increment:hover {
background-position:0 -548px
}
::-webkit-scrollbar-button:horizontal:decrement:hover {
background-position:12px -529px
}
::-webkit-scrollbar-button:vertical:increment:hover {
background-position:-1px -495px
}
::-webkit-scrollbar-button:vertical:decrement:hover {
background-position:-1px -462px
}
::-webkit-scrollbar-button:active {
background-color:#606060
}
::-webkit-scrollbar-button:horizontal:increment:active {
background-position:0 -652px
}
::-webkit-scrollbar-button:horizontal:decrement:active {
background-position:12px -633px
}
::-webkit-scrollbar-button:vertical:increment:active {
background-position:-1px -599px
}
::-webkit-scrollbar-button:vertical:decrement:active {
background-position:-1px -566px
}
::-webkit-scrollbar-button:disabled {
background-color:#f9f9f9
}
::-webkit-scrollbar-button:horizontal:increment:disabled {
background-position:0 -756px
}
::-webkit-scrollbar-button:horizontal:decrement:disabled {
background-position:12px -737px
}
::-webkit-scrollbar-button:vertical:increment:disabled {
background-position:-1px -703px
}
::-webkit-scrollbar-button:vertical:decrement:disabled {
background-position:-1px -670px
}
*/
/*from notebook*/
/*::-webkit-scrollbar{width:7px;height:7px;}::-webkit-scrollbar-thumb{background-color:rgba(50,50,50,0.3);}::-webkit-scrollbar-thumb:hover{background-color:rgba(50,50,50,0.6);}::-webkit-scrollbar-track{background-color:rgba(50,50,50,0.1);}::-webkit-scrollbar-track:hover{background-color:rgba(50,50,50,0.2);}
*/
#editorContent_ifr {
// border: 1px solid red;
}
.fa-calendar {
color: #666;
}
.dropdown-menu .fa {
width: 15px;
}
.dropdown-menu span, .dropdown-menu a, .dropdown-menu li {
cursor: default;
}
// 顶部导航, 博客
#topNav a {
display: inline-block;
line-height: 60px;
}
.tab-pane {
padding: 5px 0 0 0;
}
.alert {
margin-bottom: 10px;
}
.btn {
border-radius: 0 !important;
}
.mce-container-body iframe {
//overflow-x: hidden; // firefox 不能要
//overflow-y: hidden;
}
// 新建笔记item
#notebookNavForNewNote li, #notebookNavForNewSharedNote > li {
padding-left: 0;
border-bottom: 1px solid @borderColor;
}
#notebookNavForNewNote > li:hover, #notebookNavForNewNote > li:focus,
#notebookNavForNewSharedNote > li:hover, #notebookNavForNewSharedNote > li:focus {
background: none;
}
.new-note-left {
padding: 0 5px;
width: 95px;
overflow: hidden;
white-space:nowrap;
border-right: 1px dashed @borderColor;
&:hover {
background-color:@borderColor;
}
}
.new-note-right {
padding: 0 5px;
&:hover {
background-color:@borderColor;
}
}
// 历史记录
#historyList {
table {
width: 100%;
}
.btns{
border-top: 1px dashed #eee;
padding: 5px 0;
}
}
#left-column {
width: 100% !important;
}
#editorMask {
position: absolute; top: 0px; bottom: 0px; right: 0; left: 0;
background-color: #fff;
z-index: -10;
.fa, a {
font-size: 24px;
}
padding-top: 50px;
text-align: center;
a {
display: inline-block;
border-radius: 3px;
border: 1px solid @borderColor;
padding: 10px;
&:hover {
background-color: @noteActiveBg;
color: #fff;
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
public/images/sprites.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,27 @@
/*
AngularJS v1.2.16
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(s,g,P){'use strict';g.module("ngAnimate",["ng"]).factory("$$animateReflow",["$$rAF","$document",function(g,s){return function(e){return g(function(){e()})}}]).config(["$provide","$animateProvider",function(ga,G){function e(e){for(var p=0;p<e.length;p++){var g=e[p];if(g.nodeType==ba)return g}}function u(p){return g.element(e(p))}var m=g.noop,p=g.forEach,Q=G.$$selectors,ba=1,h="$$ngAnimateState",J="ng-animate",r={running:!0};ga.decorator("$animate",["$delegate","$injector","$sniffer","$rootElement",
"$$asyncCallback","$rootScope","$document",function(t,s,aa,K,E,H,P){function R(a){if(a){var b=[],c={};a=a.substr(1).split(".");(aa.transitions||aa.animations)&&b.push(s.get(Q[""]));for(var d=0;d<a.length;d++){var f=a[d],e=Q[f];e&&!c[f]&&(b.push(s.get(e)),c[f]=!0)}return b}}function L(a,b,c){function d(a,b){var c=a[b],d=a["before"+b.charAt(0).toUpperCase()+b.substr(1)];if(c||d)return"leave"==b&&(d=c,c=null),A.push({event:b,fn:c}),l.push({event:b,fn:d}),!0}function f(b,d,e){var f=[];p(b,function(a){a.fn&&
f.push(a)});var n=0;p(f,function(b,p){var C=function(){a:{if(d){(d[p]||m)();if(++n<f.length)break a;d=null}e()}};switch(b.event){case "setClass":d.push(b.fn(a,q,y,C));break;case "addClass":d.push(b.fn(a,q||c,C));break;case "removeClass":d.push(b.fn(a,y||c,C));break;default:d.push(b.fn(a,C))}});d&&0===d.length&&e()}var e=a[0];if(e){var h="setClass"==b,r=h||"addClass"==b||"removeClass"==b,q,y;g.isArray(c)&&(q=c[0],y=c[1],c=q+" "+y);var z=a.attr("class")+" "+c;if(T(z)){var v=m,w=[],l=[],x=m,n=[],A=[],
z=(" "+z).replace(/\s+/g,".");p(R(z),function(a){!d(a,b)&&h&&(d(a,"addClass"),d(a,"removeClass"))});return{node:e,event:b,className:c,isClassBased:r,isSetClassOperation:h,before:function(a){v=a;f(l,w,function(){v=m;a()})},after:function(a){x=a;f(A,n,function(){x=m;a()})},cancel:function(){w&&(p(w,function(a){(a||m)(!0)}),v(!0));n&&(p(n,function(a){(a||m)(!0)}),x(!0))}}}}}function F(a,b,c,d,f,e,r){function m(d){var e="$animate:"+d;x&&(x[e]&&0<x[e].length)&&E(function(){c.triggerHandler(e,{event:a,
className:b})})}function q(){m("before")}function y(){m("after")}function z(){m("close");r&&E(function(){r()})}function v(){v.hasBeenRun||(v.hasBeenRun=!0,e())}function w(){if(!w.hasBeenRun){w.hasBeenRun=!0;var d=c.data(h);d&&(l&&l.isClassBased?B(c,b):(E(function(){var d=c.data(h)||{};t==d.index&&B(c,b,a)}),c.data(h,d)));z()}}var l=L(c,a,b);if(l){b=l.className;var x=g.element._data(l.node),x=x&&x.events;d||(d=f?f.parent():c.parent());var n=c.data(h)||{};f=n.active||{};var A=n.totalActive||0,C=n.last;
if(l.isClassBased&&(n.disabled||C&&!C.isClassBased)||N(c,d))v(),q(),y(),w();else{d=!1;if(0<A){n=[];if(l.isClassBased)"setClass"==C.event?(n.push(C),B(c,b)):f[b]&&(s=f[b],s.event==a?d=!0:(n.push(s),B(c,b)));else if("leave"==a&&f["ng-leave"])d=!0;else{for(var s in f)n.push(f[s]),B(c,s);f={};A=0}0<n.length&&p(n,function(a){a.cancel()})}!l.isClassBased||(l.isSetClassOperation||d)||(d="addClass"==a==c.hasClass(b));if(d)q(),y(),z();else{if("leave"==a)c.one("$destroy",function(a){a=g.element(this);var b=
a.data(h);b&&(b=b.active["ng-leave"])&&(b.cancel(),B(a,"ng-leave"))});c.addClass(J);var t=O++;A++;f[b]=l;c.data(h,{last:l,active:f,index:t,totalActive:A});q();l.before(function(d){var e=c.data(h);d=d||!e||!e.active[b]||l.isClassBased&&e.active[b].event!=a;v();!0===d?w():(y(),l.after(w))})}}}else v(),q(),y(),w()}function U(a){if(a=e(a))a=g.isFunction(a.getElementsByClassName)?a.getElementsByClassName(J):a.querySelectorAll("."+J),p(a,function(a){a=g.element(a);(a=a.data(h))&&a.active&&p(a.active,function(a){a.cancel()})})}
function B(a,b){if(e(a)==e(K))r.disabled||(r.running=!1,r.structural=!1);else if(b){var c=a.data(h)||{},d=!0===b;!d&&(c.active&&c.active[b])&&(c.totalActive--,delete c.active[b]);if(d||!c.totalActive)a.removeClass(J),a.removeData(h)}}function N(a,b){if(r.disabled)return!0;if(e(a)==e(K))return r.disabled||r.running;do{if(0===b.length)break;var c=e(b)==e(K),d=c?r:b.data(h),d=d&&(!!d.disabled||d.running||0<d.totalActive);if(c||d)return d;if(c)break}while(b=b.parent());return!0}var O=0;K.data(h,r);H.$$postDigest(function(){H.$$postDigest(function(){r.running=
!1})});var V=G.classNameFilter(),T=V?function(a){return V.test(a)}:function(){return!0};return{enter:function(a,b,c,d){this.enabled(!1,a);t.enter(a,b,c);H.$$postDigest(function(){a=u(a);F("enter","ng-enter",a,b,c,m,d)})},leave:function(a,b){U(a);this.enabled(!1,a);H.$$postDigest(function(){F("leave","ng-leave",u(a),null,null,function(){t.leave(a)},b)})},move:function(a,b,c,d){U(a);this.enabled(!1,a);t.move(a,b,c);H.$$postDigest(function(){a=u(a);F("move","ng-move",a,b,c,m,d)})},addClass:function(a,
b,c){a=u(a);F("addClass",b,a,null,null,function(){t.addClass(a,b)},c)},removeClass:function(a,b,c){a=u(a);F("removeClass",b,a,null,null,function(){t.removeClass(a,b)},c)},setClass:function(a,b,c,d){a=u(a);F("setClass",[b,c],a,null,null,function(){t.setClass(a,b,c)},d)},enabled:function(a,b){switch(arguments.length){case 2:if(a)B(b);else{var c=b.data(h)||{};c.disabled=!0;b.data(h,c)}break;case 1:r.disabled=!a;break;default:a=!r.disabled}return!!a}}}]);G.register("",["$window","$sniffer","$timeout",
"$$animateReflow",function(h,r,u,K){function E(a,k){S&&S();W.push(k);S=K(function(){p(W,function(a){a()});W=[];S=null;M={}})}function H(a,k){var b=e(a);a=g.element(b);Y.push(a);b=Date.now()+k;b<=fa||(u.cancel(ea),fa=b,ea=u(function(){J(Y);Y=[]},k,!1))}function J(a){p(a,function(a){(a=a.data(n))&&(a.closeAnimationFn||m)()})}function R(a,k){var b=k?M[k]:null;if(!b){var c=0,d=0,e=0,f=0,n,Z,$,g;p(a,function(a){if(a.nodeType==ba){a=h.getComputedStyle(a)||{};$=a[I+z];c=Math.max(L($),c);g=a[I+v];n=a[I+w];
d=Math.max(L(n),d);Z=a[q+w];f=Math.max(L(Z),f);var k=L(a[q+z]);0<k&&(k*=parseInt(a[q+l],10)||1);e=Math.max(k,e)}});b={total:0,transitionPropertyStyle:g,transitionDurationStyle:$,transitionDelayStyle:n,transitionDelay:d,transitionDuration:c,animationDelayStyle:Z,animationDelay:f,animationDuration:e};k&&(M[k]=b)}return b}function L(a){var k=0;a=g.isString(a)?a.split(/\s*,\s*/):[];p(a,function(a){k=Math.max(parseFloat(a)||0,k)});return k}function F(a){var k=a.parent(),b=k.data(x);b||(k.data(x,++da),
b=da);return b+"-"+e(a).getAttribute("class")}function U(a,k,b,c){var d=F(k),f=d+" "+b,p=M[f]?++M[f].total:0,g={};if(0<p){var h=b+"-stagger",g=d+" "+h;(d=!M[g])&&k.addClass(h);g=R(k,g);d&&k.removeClass(h)}c=c||function(a){return a()};k.addClass(b);var h=k.data(n)||{},l=c(function(){return R(k,f)});c=l.transitionDuration;d=l.animationDuration;if(0===c&&0===d)return k.removeClass(b),!1;k.data(n,{running:h.running||0,itemIndex:p,stagger:g,timings:l,closeAnimationFn:m});a=0<h.running||"setClass"==a;0<
c&&B(k,b,a);0<d&&(0<g.animationDelay&&0===g.animationDuration)&&(e(k).style[q]="none 0s");return!0}function B(a,b,c){"ng-enter"!=b&&("ng-move"!=b&&"ng-leave"!=b)&&c?a.addClass(A):e(a).style[I+v]="none"}function N(a,b){var c=I+v,d=e(a);d.style[c]&&0<d.style[c].length&&(d.style[c]="");a.removeClass(A)}function O(a){var b=q;a=e(a);a.style[b]&&0<a.style[b].length&&(a.style[b]="")}function V(a,b,c,f){function g(a){b.off(z,h);b.removeClass(r);d(b,c);a=e(b);for(var X in u)a.style.removeProperty(u[X])}function h(a){a.stopPropagation();
var b=a.originalEvent||a;a=b.$manualTimeStamp||b.timeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(C));Math.max(a-A,0)>=x&&b>=v&&f()}var l=e(b);a=b.data(n);if(-1!=l.getAttribute("class").indexOf(c)&&a){var r="";p(c.split(" "),function(a,b){r+=(0<b?" ":"")+a+"-active"});var q=a.stagger,m=a.timings,s=a.itemIndex,v=Math.max(m.transitionDuration,m.animationDuration),w=Math.max(m.transitionDelay,m.animationDelay),x=w*ca,A=Date.now(),z=y+" "+G,t="",u=[];if(0<m.transitionDuration){var B=m.transitionPropertyStyle;
-1==B.indexOf("all")&&(t+=D+"transition-property: "+B+";",t+=D+"transition-duration: "+m.transitionDurationStyle+";",u.push(D+"transition-property"),u.push(D+"transition-duration"))}0<s&&(0<q.transitionDelay&&0===q.transitionDuration&&(t+=D+"transition-delay: "+T(m.transitionDelayStyle,q.transitionDelay,s)+"; ",u.push(D+"transition-delay")),0<q.animationDelay&&0===q.animationDuration&&(t+=D+"animation-delay: "+T(m.animationDelayStyle,q.animationDelay,s)+"; ",u.push(D+"animation-delay")));0<u.length&&
(m=l.getAttribute("style")||"",l.setAttribute("style",m+" "+t));b.on(z,h);b.addClass(r);a.closeAnimationFn=function(){g();f()};l=(s*(Math.max(q.animationDelay,q.transitionDelay)||0)+(w+v)*Q)*ca;a.running++;H(b,l);return g}f()}function T(a,b,c){var d="";p(a.split(","),function(a,X){d+=(0<X?",":"")+(c*b+parseInt(a,10))+"s"});return d}function a(a,b,c,e){if(U(a,b,c,e))return function(a){a&&d(b,c)}}function b(a,b,c,e){if(b.data(n))return V(a,b,c,e);d(b,c);e()}function c(c,d,e,f){var g=a(c,d,e);if(g){var h=
g;E(d,function(){N(d,e);O(d);h=b(c,d,e,f)});return function(a){(h||m)(a)}}f()}function d(a,b){a.removeClass(b);var c=a.data(n);c&&(c.running&&c.running--,c.running&&0!==c.running||a.removeData(n))}function f(a,b){var c="";a=g.isArray(a)?a:a.split(/\s+/);p(a,function(a,d){a&&0<a.length&&(c+=(0<d?" ":"")+a+b)});return c}var D="",I,G,q,y;s.ontransitionend===P&&s.onwebkittransitionend!==P?(D="-webkit-",I="WebkitTransition",G="webkitTransitionEnd transitionend"):(I="transition",G="transitionend");s.onanimationend===
P&&s.onwebkitanimationend!==P?(D="-webkit-",q="WebkitAnimation",y="webkitAnimationEnd animationend"):(q="animation",y="animationend");var z="Duration",v="Property",w="Delay",l="IterationCount",x="$$ngAnimateKey",n="$$ngAnimateCSS3Data",A="ng-animate-block-transitions",C=3,Q=1.5,ca=1E3,M={},da=0,W=[],S,ea=null,fa=0,Y=[];return{enter:function(a,b){return c("enter",a,"ng-enter",b)},leave:function(a,b){return c("leave",a,"ng-leave",b)},move:function(a,b){return c("move",a,"ng-move",b)},beforeSetClass:function(b,
c,d,e){var g=f(d,"-remove")+" "+f(c,"-add"),h=a("setClass",b,g,function(a){var e=b.attr("class");b.removeClass(d);b.addClass(c);a=a();b.attr("class",e);return a});if(h)return E(b,function(){N(b,g);O(b);e()}),h;e()},beforeAddClass:function(b,c,d){var e=a("addClass",b,f(c,"-add"),function(a){b.addClass(c);a=a();b.removeClass(c);return a});if(e)return E(b,function(){N(b,c);O(b);d()}),e;d()},setClass:function(a,c,d,e){d=f(d,"-remove");c=f(c,"-add");return b("setClass",a,d+" "+c,e)},addClass:function(a,
c,d){return b("addClass",a,f(c,"-add"),d)},beforeRemoveClass:function(b,c,d){var e=a("removeClass",b,f(c,"-remove"),function(a){var d=b.attr("class");b.removeClass(c);a=a();b.attr("class",d);return a});if(e)return E(b,function(){N(b,c);O(b);d()}),e;d()},removeClass:function(a,c,d){return b("removeClass",a,f(c,"-remove"),d)}}}])}])})(window,window.angular);
//# sourceMappingURL=angular-animate.min.js.map

View File

@@ -0,0 +1,8 @@
/*
AngularJS v1.2.16
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore",
["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular);
//# sourceMappingURL=angular-cookies.min.js.map

View File

@@ -0,0 +1,13 @@
/*
AngularJS v1.2.16
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(H,a,A){'use strict';function D(p,g){g=g||{};a.forEach(g,function(a,c){delete g[c]});for(var c in p)!p.hasOwnProperty(c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(g[c]=p[c]);return g}var v=a.$$minErr("$resource"),C=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;a.module("ngResource",["ng"]).factory("$resource",["$http","$q",function(p,g){function c(a,c){this.template=a;this.defaults=c||{};this.urlParams={}}function t(n,w,l){function r(h,d){var e={};d=x({},w,d);s(d,function(b,d){u(b)&&(b=b());var k;if(b&&
b.charAt&&"@"==b.charAt(0)){k=h;var a=b.substr(1);if(null==a||""===a||"hasOwnProperty"===a||!C.test("."+a))throw v("badmember",a);for(var a=a.split("."),f=0,c=a.length;f<c&&k!==A;f++){var g=a[f];k=null!==k?k[g]:A}}else k=b;e[d]=k});return e}function e(a){return a.resource}function f(a){D(a||{},this)}var F=new c(n);l=x({},B,l);s(l,function(h,d){var c=/^(POST|PUT|PATCH)$/i.test(h.method);f[d]=function(b,d,k,w){var q={},n,l,y;switch(arguments.length){case 4:y=w,l=k;case 3:case 2:if(u(d)){if(u(b)){l=
b;y=d;break}l=d;y=k}else{q=b;n=d;l=k;break}case 1:u(b)?l=b:c?n=b:q=b;break;case 0:break;default:throw v("badargs",arguments.length);}var t=this instanceof f,m=t?n:h.isArray?[]:new f(n),z={},B=h.interceptor&&h.interceptor.response||e,C=h.interceptor&&h.interceptor.responseError||A;s(h,function(a,b){"params"!=b&&("isArray"!=b&&"interceptor"!=b)&&(z[b]=G(a))});c&&(z.data=n);F.setUrlParams(z,x({},r(n,h.params||{}),q),h.url);q=p(z).then(function(b){var d=b.data,k=m.$promise;if(d){if(a.isArray(d)!==!!h.isArray)throw v("badcfg",
h.isArray?"array":"object",a.isArray(d)?"array":"object");h.isArray?(m.length=0,s(d,function(b){m.push(new f(b))})):(D(d,m),m.$promise=k)}m.$resolved=!0;b.resource=m;return b},function(b){m.$resolved=!0;(y||E)(b);return g.reject(b)});q=q.then(function(b){var a=B(b);(l||E)(a,b.headers);return a},C);return t?q:(m.$promise=q,m.$resolved=!1,m)};f.prototype["$"+d]=function(b,a,k){u(b)&&(k=a,a=b,b={});b=f[d].call(this,b,this,a,k);return b.$promise||b}});f.bind=function(a){return t(n,x({},w,a),l)};return f}
var B={get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}},E=a.noop,s=a.forEach,x=a.extend,G=a.copy,u=a.isFunction;c.prototype={setUrlParams:function(c,g,l){var r=this,e=l||r.template,f,p,h=r.urlParams={};s(e.split(/\W/),function(a){if("hasOwnProperty"===a)throw v("badname");!/^\d+$/.test(a)&&(a&&RegExp("(^|[^\\\\]):"+a+"(\\W|$)").test(e))&&(h[a]=!0)});e=e.replace(/\\:/g,":");g=g||{};s(r.urlParams,function(d,c){f=g.hasOwnProperty(c)?
g[c]:r.defaults[c];a.isDefined(f)&&null!==f?(p=encodeURIComponent(f).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"%20").replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),e=e.replace(RegExp(":"+c+"(\\W|$)","g"),function(a,c){return p+c})):e=e.replace(RegExp("(/?):"+c+"(\\W|$)","g"),function(a,c,d){return"/"==d.charAt(0)?d:c+d})});e=e.replace(/\/+$/,"")||"/";e=e.replace(/\/\.(?=\w+($|\?))/,".");c.url=e.replace(/\/\\\./,"/.");s(g,function(a,
e){r.urlParams[e]||(c.params=c.params||{},c.params[e]=a)})}};return t}])})(window,window.angular);
//# sourceMappingURL=angular-resource.min.js.map

14
public/js/angular/angular-route.min.js vendored Normal file
View File

@@ -0,0 +1,14 @@
/*
AngularJS v1.2.16
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(n,e,A){'use strict';function x(s,g,k){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,w){function y(){p&&(p.remove(),p=null);h&&(h.$destroy(),h=null);l&&(k.leave(l,function(){p=null}),p=l,l=null)}function v(){var b=s.current&&s.current.locals;if(e.isDefined(b&&b.$template)){var b=a.$new(),d=s.current;l=w(b,function(d){k.enter(d,null,l||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||g()});y()});h=d.scope=b;h.$emit("$viewContentLoaded");h.$eval(u)}else y()}
var h,l,p,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",v);v()}}}function z(e,g,k){return{restrict:"ECA",priority:-400,link:function(a,c){var b=k.current,f=b.locals;c.html(f.$template);var w=e(c.contents());b.controller&&(f.$scope=a,f=g(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));w(a)}}}n=e.module("ngRoute",["ng"]).provider("$route",function(){function s(a,c){return e.extend(new (e.extend(function(){},
{prototype:a})),c)}function g(a,e){var b=e.caseInsensitiveMatch,f={originalPath:a,regexp:a},k=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;k.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var k={};this.when=function(a,c){k[a]=e.extend({reloadOnSearch:!0},c,a&&g(a,c));if(a){var b=
"/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";k[b]=e.extend({redirectTo:a},g(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,g,n,v,h){function l(){var d=p(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!u)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)u=!1,a.$broadcast("$routeChangeStart",
d,m),(r.current=d)&&d.redirectTo&&(e.isString(d.redirectTo)?c.path(t(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?g.get(d):g.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=h.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl=
b,c=n.get(b,{cache:v}).then(function(a){return a.data})));e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function p(){var a,b;e.forEach(k,function(f,k){var q;if(q=!b){var g=c.path();q=f.keys;var l={};if(f.regexp)if(g=f.regexp.exec(g)){for(var h=1,p=g.length;h<p;++h){var n=q[h-1],r="string"==typeof g[h]?decodeURIComponent(g[h]):
g[h];n&&r&&(l[n.name]=r)}q=l}else q=null;else q=null;q=a=q}q&&(b=s(f,{params:e.extend({},c.search(),a),pathParams:a}),b.$$route=f)});return b||k[null]&&s(k[null],{params:{},pathParams:{}})}function t(a,c){var b=[];e.forEach((a||"").split(":"),function(a,d){if(0===d)b.push(a);else{var e=a.match(/(\w+)(.*)/),f=e[1];b.push(c[f]);b.push(e[2]||"");delete c[f]}});return b.join("")}var u=!1,r={routes:k,reload:function(){u=!0;a.$evalAsync(l)}};a.$on("$locationChangeSuccess",l);return r}]});n.provider("$routeParams",
function(){this.$get=function(){return{}}});n.directive("ngView",x);n.directive("ngView",z);x.$inject=["$route","$anchorScroll","$animate"];z.$inject=["$compile","$controller","$route"]})(window,window.angular);
//# sourceMappingURL=angular-route.min.js.map

13
public/js/angular/angular-touch.min.js vendored Normal file
View File

@@ -0,0 +1,13 @@
/*
AngularJS v1.2.16
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(y,w,z){'use strict';function u(f,a,c){r.directive(f,["$parse","$swipe",function(m,p){var q=75,g=0.3,e=30;return function(h,n,l){function k(d){if(!b)return!1;var s=Math.abs(d.y-b.y);d=(d.x-b.x)*a;return v&&s<q&&0<d&&d>e&&s/d<g}var s=m(l[f]),b,v;p.bind(n,{start:function(d,s){b=d;v=!0},cancel:function(b){v=!1},end:function(b,a){k(b)&&h.$apply(function(){n.triggerHandler(c);s(h,{$event:a})})}})}}])}var r=w.module("ngTouch",[]);r.factory("$swipe",[function(){function f(a){var c=a.touches&&a.touches.length?
a.touches:[a];a=a.changedTouches&&a.changedTouches[0]||a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches[0]||c[0].originalEvent||c[0];return{x:a.clientX,y:a.clientY}}return{bind:function(a,c){var m,p,q,g,e=!1;a.on("touchstart mousedown",function(a){q=f(a);e=!0;p=m=0;g=q;c.start&&c.start(q,a)});a.on("touchcancel",function(a){e=!1;c.cancel&&c.cancel(a)});a.on("touchmove mousemove",function(a){if(e&&q){var n=f(a);m+=Math.abs(n.x-g.x);p+=Math.abs(n.y-g.y);g=n;10>m&&10>p||
(p>m?(e=!1,c.cancel&&c.cancel(a)):(a.preventDefault(),c.move&&c.move(n,a)))}});a.on("touchend mouseup",function(a){e&&(e=!1,c.end&&c.end(f(a),a))})}}}]);r.config(["$provide",function(f){f.decorator("ngClickDirective",["$delegate",function(a){a.shift();return a}])}]);r.directive("ngClick",["$parse","$timeout","$rootElement",function(f,a,c){function m(a,b,c){for(var d=0;d<a.length;d+=2)if(Math.abs(a[d]-b)<e&&Math.abs(a[d+1]-c)<e)return a.splice(d,d+2),!0;return!1}function p(a){if(!(Date.now()-n>g)){var b=
a.touches&&a.touches.length?a.touches:[a],c=b[0].clientX,b=b[0].clientY;1>c&&1>b||k&&k[0]===c&&k[1]===b||(k&&(k=null),"label"===a.target.tagName.toLowerCase()&&(k=[c,b]),m(l,c,b)||(a.stopPropagation(),a.preventDefault(),a.target&&a.target.blur()))}}function q(c){c=c.touches&&c.touches.length?c.touches:[c];var b=c[0].clientX,e=c[0].clientY;l.push(b,e);a(function(){for(var a=0;a<l.length;a+=2)if(l[a]==b&&l[a+1]==e){l.splice(a,a+2);break}},g,!1)}var g=2500,e=25,h="ng-click-active",n,l,k;return function(a,
b,e){function d(){k=!1;b.removeClass(h)}var g=f(e.ngClick),k=!1,t,r,u,x;b.on("touchstart",function(a){k=!0;t=a.target?a.target:a.srcElement;3==t.nodeType&&(t=t.parentNode);b.addClass(h);r=Date.now();a=a.touches&&a.touches.length?a.touches:[a];a=a[0].originalEvent||a[0];u=a.clientX;x=a.clientY});b.on("touchmove",function(a){d()});b.on("touchcancel",function(a){d()});b.on("touchend",function(a){var g=Date.now()-r,f=a.changedTouches&&a.changedTouches.length?a.changedTouches:a.touches&&a.touches.length?
a.touches:[a],h=f[0].originalEvent||f[0],f=h.clientX,h=h.clientY,s=Math.sqrt(Math.pow(f-u,2)+Math.pow(h-x,2));k&&(750>g&&12>s)&&(l||(c[0].addEventListener("click",p,!0),c[0].addEventListener("touchstart",q,!0),l=[]),n=Date.now(),m(l,f,h),t&&t.blur(),w.isDefined(e.disabled)&&!1!==e.disabled||b.triggerHandler("click",[a]));d()});b.onclick=function(a){};b.on("click",function(b,c){a.$apply(function(){g(a,{$event:c||b})})});b.on("mousedown",function(a){b.addClass(h)});b.on("mousemove mouseup",function(a){b.removeClass(h)})}}]);
u("ngSwipeLeft",-1,"swipeleft");u("ngSwipeRight",1,"swiperight")})(window,window.angular);
//# sourceMappingURL=angular-touch.min.js.map

210
public/js/angular/angular.min.js vendored Normal file
View File

@@ -0,0 +1,210 @@
/*
AngularJS v1.2.16
(c) 2010-2014 Google, Inc. http://angularjs.org
License: MIT
*/
(function(O,U,s){'use strict';function t(b){return function(){var a=arguments[0],c,a="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.2.16/"+(b?b+"/":"")+a;for(c=1;c<arguments.length;c++)a=a+(1==c?"?":"&")+"p"+(c-1)+"="+encodeURIComponent("function"==typeof arguments[c]?arguments[c].toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof arguments[c]?"undefined":"string"!=typeof arguments[c]?JSON.stringify(arguments[c]):arguments[c]);return Error(a)}}function ab(b){if(null==b||Ca(b))return!1;
var a=b.length;return 1===b.nodeType&&a?!0:w(b)||M(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function q(b,a,c){var d;if(b)if(P(b))for(d in b)"prototype"==d||("length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d))||a.call(c,b[d],d);else if(b.forEach&&b.forEach!==q)b.forEach(a,c);else if(ab(b))for(d=0;d<b.length;d++)a.call(c,b[d],d);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d);return b}function Qb(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(c);return a.sort()}function Sc(b,
a,c){for(var d=Qb(b),e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function Rb(b){return function(a,c){b(c,a)}}function bb(){for(var b=ka.length,a;b;){b--;a=ka[b].charCodeAt(0);if(57==a)return ka[b]="A",ka.join("");if(90==a)ka[b]="0";else return ka[b]=String.fromCharCode(a+1),ka.join("")}ka.unshift("0");return ka.join("")}function Sb(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function D(b){var a=b.$$hashKey;q(arguments,function(a){a!==b&&q(a,function(a,c){b[c]=a})});Sb(b,a);return b}function Y(b){return parseInt(b,
10)}function Tb(b,a){return D(new (D(function(){},{prototype:b})),a)}function C(){}function Da(b){return b}function aa(b){return function(){return b}}function E(b){return"undefined"===typeof b}function B(b){return"undefined"!==typeof b}function X(b){return null!=b&&"object"===typeof b}function w(b){return"string"===typeof b}function vb(b){return"number"===typeof b}function Na(b){return"[object Date]"===wa.call(b)}function M(b){return"[object Array]"===wa.call(b)}function P(b){return"function"===typeof b}
function cb(b){return"[object RegExp]"===wa.call(b)}function Ca(b){return b&&b.document&&b.location&&b.alert&&b.setInterval}function Tc(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function Uc(b,a,c){var d=[];q(b,function(b,g,f){d.push(a.call(c,b,g,f))});return d}function db(b,a){if(b.indexOf)return b.indexOf(a);for(var c=0;c<b.length;c++)if(a===b[c])return c;return-1}function Oa(b,a){var c=db(b,a);0<=c&&b.splice(c,1);return a}function ba(b,a){if(Ca(b)||b&&b.$evalAsync&&b.$watch)throw Pa("cpws");
if(a){if(b===a)throw Pa("cpi");if(M(b))for(var c=a.length=0;c<b.length;c++)a.push(ba(b[c]));else{c=a.$$hashKey;q(a,function(b,c){delete a[c]});for(var d in b)a[d]=ba(b[d]);Sb(a,c)}}else(a=b)&&(M(b)?a=ba(b,[]):Na(b)?a=new Date(b.getTime()):cb(b)?a=RegExp(b.source):X(b)&&(a=ba(b,{})));return a}function Ub(b,a){a=a||{};for(var c in b)!b.hasOwnProperty(c)||"$"===c.charAt(0)&&"$"===c.charAt(1)||(a[c]=b[c]);return a}function xa(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;
var c=typeof b,d;if(c==typeof a&&"object"==c)if(M(b)){if(!M(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!xa(b[d],a[d]))return!1;return!0}}else{if(Na(b))return Na(a)&&b.getTime()==a.getTime();if(cb(b)&&cb(a))return b.toString()==a.toString();if(b&&b.$evalAsync&&b.$watch||a&&a.$evalAsync&&a.$watch||Ca(b)||Ca(a)||M(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!P(b[d])){if(!xa(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==s&&!P(a[d]))return!1;
return!0}return!1}function Vb(){return U.securityPolicy&&U.securityPolicy.isActive||U.querySelector&&!(!U.querySelector("[ng-csp]")&&!U.querySelector("[data-ng-csp]"))}function eb(b,a){var c=2<arguments.length?ya.call(arguments,2):[];return!P(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,c.concat(ya.call(arguments,0))):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Vc(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)?c=
s:Ca(a)?c="$WINDOW":a&&U===a?c="$DOCUMENT":a&&(a.$evalAsync&&a.$watch)&&(c="$SCOPE");return c}function qa(b,a){return"undefined"===typeof b?s:JSON.stringify(b,Vc,a?" ":null)}function Wb(b){return w(b)?JSON.parse(b):b}function Qa(b){"function"===typeof b?b=!0:b&&0!==b.length?(b=K(""+b),b=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)):b=!1;return b}function ha(b){b=y(b).clone();try{b.empty()}catch(a){}var c=y("<div>").append(b).html();try{return 3===b[0].nodeType?K(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,
function(a,b){return"<"+K(b)})}catch(d){return K(c)}}function Xb(b){try{return decodeURIComponent(b)}catch(a){}}function Yb(b){var a={},c,d;q((b||"").split("&"),function(b){b&&(c=b.split("="),d=Xb(c[0]),B(d)&&(b=B(c[1])?Xb(c[1]):!0,a[d]?M(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Zb(b){var a=[];q(b,function(b,d){M(b)?q(b,function(b){a.push(za(d,!0)+(!0===b?"":"="+za(b,!0)))}):a.push(za(d,!0)+(!0===b?"":"="+za(b,!0)))});return a.length?a.join("&"):""}function wb(b){return za(b,
!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function za(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Wc(b,a){function c(a){a&&d.push(a)}var d=[b],e,g,f=["ng:app","ng-app","x-ng-app","data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;q(f,function(a){f[a]=!0;c(U.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(q(b.querySelectorAll("."+a),c),q(b.querySelectorAll("."+
a+"\\:"),c),q(b.querySelectorAll("["+a+"]"),c))});q(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,g=(b[2]||"").replace(/\s+/g,",")):q(a.attributes,function(b){!e&&f[b.name]&&(e=a,g=b.value)})}});e&&a(e,g?[g]:[])}function $b(b,a){var c=function(){b=y(b);if(b.injector()){var c=b[0]===U?"document":ha(b);throw Pa("btstrpd",c);}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=ac(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",
function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(O&&!d.test(O.name))return c();O.name=O.name.replace(d,"");Ea.resumeBootstrap=function(b){q(b,function(b){a.push(b)});c()}}function fb(b,a){a=a||"_";return b.replace(Xc,function(b,d){return(d?a:"")+b.toLowerCase()})}function xb(b,a,c){if(!b)throw Pa("areq",a||"?",c||"required");return b}function Ra(b,a,c){c&&M(b)&&(b=b[b.length-1]);xb(P(b),a,"not a function, got "+(b&&"object"==typeof b?
b.constructor.name||"Object":typeof b));return b}function Aa(b,a){if("hasOwnProperty"===b)throw Pa("badname",a);}function bc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,g=a.length,f=0;f<g;f++)d=a[f],b&&(b=(e=b)[d]);return!c&&P(b)?eb(e,b):b}function yb(b){var a=b[0];b=b[b.length-1];if(a===b)return y(a);var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return y(c)}function Yc(b){var a=t("$injector"),c=t("ng");b=b.angular||(b.angular={});b.$$minErr=b.$$minErr||t;return b.module||
(b.module=function(){var b={};return function(e,g,f){if("hasOwnProperty"===e)throw c("badname","module");g&&b.hasOwnProperty(e)&&(b[e]=null);return b[e]||(b[e]=function(){function b(a,d,e){return function(){c[e||"push"]([a,d,arguments]);return n}}if(!g)throw a("nomod",e);var c=[],d=[],m=b("$injector","invoke"),n={_invokeQueue:c,_runBlocks:d,requires:g,name:e,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:b("$provide","value"),constant:b("$provide",
"constant","unshift"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),config:m,run:function(a){d.push(a);return this}};f&&m(f);return n}())}}())}function Zc(b){D(b,{bootstrap:$b,copy:ba,extend:D,equals:xa,element:y,forEach:q,injector:ac,noop:C,bind:eb,toJson:qa,fromJson:Wb,identity:Da,isUndefined:E,isDefined:B,isString:w,isFunction:P,isObject:X,isNumber:vb,isElement:Tc,isArray:M,
version:$c,isDate:Na,lowercase:K,uppercase:Fa,callbacks:{counter:0},$$minErr:t,$$csp:Vb});Sa=Yc(O);try{Sa("ngLocale")}catch(a){Sa("ngLocale",[]).provider("$locale",ad)}Sa("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:bd});a.provider("$compile",cc).directive({a:cd,input:dc,textarea:dc,form:dd,script:ed,select:fd,style:gd,option:hd,ngBind:id,ngBindHtml:jd,ngBindTemplate:kd,ngClass:ld,ngClassEven:md,ngClassOdd:nd,ngCloak:od,ngController:pd,ngForm:qd,ngHide:rd,ngIf:sd,ngInclude:td,
ngInit:ud,ngNonBindable:vd,ngPluralize:wd,ngRepeat:xd,ngShow:yd,ngStyle:zd,ngSwitch:Ad,ngSwitchWhen:Bd,ngSwitchDefault:Cd,ngOptions:Dd,ngTransclude:Ed,ngModel:Fd,ngList:Gd,ngChange:Hd,required:ec,ngRequired:ec,ngValue:Id}).directive({ngInclude:Jd}).directive(zb).directive(fc);a.provider({$anchorScroll:Kd,$animate:Ld,$browser:Md,$cacheFactory:Nd,$controller:Od,$document:Pd,$exceptionHandler:Qd,$filter:gc,$interpolate:Rd,$interval:Sd,$http:Td,$httpBackend:Ud,$location:Vd,$log:Wd,$parse:Xd,$rootScope:Yd,
$q:Zd,$sce:$d,$sceDelegate:ae,$sniffer:be,$templateCache:ce,$timeout:de,$window:ee,$$rAF:fe,$$asyncCallback:ge})}])}function Ta(b){return b.replace(he,function(a,b,d,e){return e?d.toUpperCase():d}).replace(ie,"Moz$1")}function Ab(b,a,c,d){function e(b){var e=c&&b?[this.filter(b)]:[this],l=a,k,m,n,p,r,z;if(!d||null!=b)for(;e.length;)for(k=e.shift(),m=0,n=k.length;m<n;m++)for(p=y(k[m]),l?p.triggerHandler("$destroy"):l=!l,r=0,p=(z=p.children()).length;r<p;r++)e.push(Ga(z[r]));return g.apply(this,arguments)}
var g=Ga.fn[b],g=g.$original||g;e.$original=g;Ga.fn[b]=e}function N(b){if(b instanceof N)return b;w(b)&&(b=ca(b));if(!(this instanceof N)){if(w(b)&&"<"!=b.charAt(0))throw Bb("nosel");return new N(b)}if(w(b)){var a=b;b=U;var c;if(c=je.exec(a))b=[b.createElement(c[1])];else{var d=b,e;b=d.createDocumentFragment();c=[];if(Cb.test(a)){d=b.appendChild(d.createElement("div"));e=(ke.exec(a)||["",""])[1].toLowerCase();e=ea[e]||ea._default;d.innerHTML="<div>&#160;</div>"+e[1]+a.replace(le,"<$1></$2>")+e[2];
d.removeChild(d.firstChild);for(a=e[0];a--;)d=d.lastChild;a=0;for(e=d.childNodes.length;a<e;++a)c.push(d.childNodes[a]);d=b.firstChild;d.textContent=""}else c.push(d.createTextNode(a));b.textContent="";b.innerHTML="";b=c}Db(this,b);y(U.createDocumentFragment()).append(this)}else Db(this,b)}function Eb(b){return b.cloneNode(!0)}function Ha(b){hc(b);var a=0;for(b=b.childNodes||[];a<b.length;a++)Ha(b[a])}function ic(b,a,c,d){if(B(d))throw Bb("offargs");var e=la(b,"events");la(b,"handle")&&(E(a)?q(e,
function(a,c){Fb(b,c,a);delete e[c]}):q(a.split(" "),function(a){E(c)?(Fb(b,a,e[a]),delete e[a]):Oa(e[a]||[],c)}))}function hc(b,a){var c=b[gb],d=Ua[c];d&&(a?delete Ua[c].data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),ic(b)),delete Ua[c],b[gb]=s))}function la(b,a,c){var d=b[gb],d=Ua[d||-1];if(B(c))d||(b[gb]=d=++me,d=Ua[d]={}),d[a]=c;else return d&&d[a]}function jc(b,a,c){var d=la(b,"data"),e=B(c),g=!e&&B(a),f=g&&!X(a);d||f||la(b,"data",d={});if(e)d[a]=c;else if(g){if(f)return d&&d[a];
D(d,a)}else return d}function Gb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function hb(b,a){a&&b.setAttribute&&q(a.split(" "),function(a){b.setAttribute("class",ca((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+ca(a)+" "," ")))})}function ib(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(a.split(" "),function(a){a=ca(a);-1===c.indexOf(" "+a+" ")&&
(c+=a+" ")});b.setAttribute("class",ca(c))}}function Db(b,a){if(a){a=a.nodeName||!B(a.length)||Ca(a)?[a]:a;for(var c=0;c<a.length;c++)b.push(a[c])}}function kc(b,a){return jb(b,"$"+(a||"ngController")+"Controller")}function jb(b,a,c){b=y(b);9==b[0].nodeType&&(b=b.find("html"));for(a=M(a)?a:[a];b.length;){for(var d=b[0],e=0,g=a.length;e<g;e++)if((c=b.data(a[e]))!==s)return c;b=y(d.parentNode||11===d.nodeType&&d.host)}}function lc(b){for(var a=0,c=b.childNodes;a<c.length;a++)Ha(c[a]);for(;b.firstChild;)b.removeChild(b.firstChild)}
function mc(b,a){var c=kb[a.toLowerCase()];return c&&nc[b.nodeName]&&c}function ne(b,a){var c=function(c,e){c.preventDefault||(c.preventDefault=function(){c.returnValue=!1});c.stopPropagation||(c.stopPropagation=function(){c.cancelBubble=!0});c.target||(c.target=c.srcElement||U);if(E(c.defaultPrevented)){var g=c.preventDefault;c.preventDefault=function(){c.defaultPrevented=!0;g.call(c)};c.defaultPrevented=!1}c.isDefaultPrevented=function(){return c.defaultPrevented||!1===c.returnValue};var f=Ub(a[e||
c.type]||[]);q(f,function(a){a.call(b,c)});8>=S?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ia(b){var a=typeof b,c;"object"==a&&null!==b?"function"==typeof(c=b.$$hashKey)?c=b.$$hashKey():c===s&&(c=b.$$hashKey=bb()):c=b;return a+":"+c}function Va(b){q(b,this.put,this)}function oc(b){var a,c;"function"==typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(oe,
""),c=c.match(pe),q(c[1].split(qe),function(b){b.replace(re,function(b,c,d){a.push(d)})})),b.$inject=a):M(b)?(c=b.length-1,Ra(b[c],"fn"),a=b.slice(0,c)):Ra(b,"fn",!0);return a}function ac(b){function a(a){return function(b,c){if(X(b))q(b,Rb(a));else return a(b,c)}}function c(a,b){Aa(a,"service");if(P(b)||M(b))b=n.instantiate(b);if(!b.$get)throw Wa("pget",a);return m[a+h]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,g,h;q(a,function(a){if(!k.get(a)){k.put(a,!0);try{if(w(a))for(c=
Sa(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,g=0,h=d.length;g<h;g++){var f=d[g],l=n.get(f[0]);l[f[1]].apply(l,f[2])}else P(a)?b.push(n.invoke(a)):M(a)?b.push(n.invoke(a)):Ra(a,"module")}catch(m){throw M(a)&&(a=a[a.length-1]),m.message&&(m.stack&&-1==m.stack.indexOf(m.message))&&(m=m.message+"\n"+m.stack),Wa("modulerr",a,m.stack||m.message||m);}}});return b}function g(a,b){function c(d){if(a.hasOwnProperty(d)){if(a[d]===f)throw Wa("cdep",l.join(" <- "));return a[d]}try{return l.unshift(d),
a[d]=f,a[d]=b(d)}catch(e){throw a[d]===f&&delete a[d],e;}finally{l.shift()}}function d(a,b,e){var g=[],h=oc(a),f,l,k;l=0;for(f=h.length;l<f;l++){k=h[l];if("string"!==typeof k)throw Wa("itkn",k);g.push(e&&e.hasOwnProperty(k)?e[k]:c(k))}a.$inject||(a=a[f]);return a.apply(b,g)}return{invoke:d,instantiate:function(a,b){var c=function(){},e;c.prototype=(M(a)?a[a.length-1]:a).prototype;c=new c;e=d(a,c,b);return X(e)||P(e)?e:c},get:c,annotate:oc,has:function(b){return m.hasOwnProperty(b+h)||a.hasOwnProperty(b)}}}
var f={},h="Provider",l=[],k=new Va,m={$provide:{provider:a(c),factory:a(d),service:a(function(a,b){return d(a,["$injector",function(a){return a.instantiate(b)}])}),value:a(function(a,b){return d(a,aa(b))}),constant:a(function(a,b){Aa(a,"constant");m[a]=b;p[a]=b}),decorator:function(a,b){var c=n.get(a+h),d=c.$get;c.$get=function(){var a=r.invoke(d,c);return r.invoke(b,null,{$delegate:a})}}}},n=m.$injector=g(m,function(){throw Wa("unpr",l.join(" <- "));}),p={},r=p.$injector=g(p,function(a){a=n.get(a+
h);return r.invoke(a.$get,a)});q(e(b),function(a){r.invoke(a||C)});return r}function Kd(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;q(a,function(a){b||"a"!==K(a.nodeName)||(b=a)});return b}function g(){var b=c.hash(),d;b?(d=f.getElementById(b))?d.scrollIntoView():(d=e(f.getElementsByName(b)))?d.scrollIntoView():"top"===b&&a.scrollTo(0,0):a.scrollTo(0,0)}var f=a.document;b&&d.$watch(function(){return c.hash()},
function(){d.$evalAsync(g)});return g}]}function ge(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:function(b){return a(b,0,!1)}}]}function se(b,a,c,d){function e(a){try{a.apply(null,ya.call(arguments,1))}finally{if(z--,0===z)for(;u.length;)try{u.pop()()}catch(b){c.error(b)}}}function g(a,b){(function T(){q(F,function(a){a()});v=b(T,a)})()}function f(){x=null;J!=h.url()&&(J=h.url(),q(ma,function(a){a(h.url())}))}var h=this,l=a[0],k=b.location,m=b.history,
n=b.setTimeout,p=b.clearTimeout,r={};h.isMock=!1;var z=0,u=[];h.$$completeOutstandingRequest=e;h.$$incOutstandingRequestCount=function(){z++};h.notifyWhenNoOutstandingRequests=function(a){q(F,function(a){a()});0===z?a():u.push(a)};var F=[],v;h.addPollFn=function(a){E(v)&&g(100,n);F.push(a);return a};var J=k.href,A=a.find("base"),x=null;h.url=function(a,c){k!==b.location&&(k=b.location);m!==b.history&&(m=b.history);if(a){if(J!=a)return J=a,d.history?c?m.replaceState(null,"",a):(m.pushState(null,"",
a),A.attr("href",A.attr("href"))):(x=a,c?k.replace(a):k.href=a),h}else return x||k.href.replace(/%27/g,"'")};var ma=[],L=!1;h.onUrlChange=function(a){if(!L){if(d.history)y(b).on("popstate",f);if(d.hashchange)y(b).on("hashchange",f);else h.addPollFn(f);L=!0}ma.push(a);return a};h.baseHref=function(){var a=A.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var Q={},da="",H=h.baseHref();h.cookies=function(a,b){var d,e,g,h;if(a)b===s?l.cookie=escape(a)+"=;path="+H+";expires=Thu, 01 Jan 1970 00:00:00 GMT":
w(b)&&(d=(l.cookie=escape(a)+"="+escape(b)+";path="+H).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(l.cookie!==da)for(da=l.cookie,d=da.split("; "),Q={},g=0;g<d.length;g++)e=d[g],h=e.indexOf("="),0<h&&(a=unescape(e.substring(0,h)),Q[a]===s&&(Q[a]=unescape(e.substring(h+1))));return Q}};h.defer=function(a,b){var c;z++;c=n(function(){delete r[c];e(a)},b||0);r[c]=!0;return c};h.defer.cancel=function(a){return r[a]?(delete r[a],
p(a),e(C),!0):!1}}function Md(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new se(b,d,a,c)}]}function Nd(){this.$get=function(){function b(b,d){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,g(a.n,a.p),g(a,n),n=a,n.n=null)}function g(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw t("$cacheFactory")("iid",b);var f=0,h=D({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,m={},n=null,p=null;return a[b]={put:function(a,b){if(k<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});
e(c)}if(!E(b))return a in l||f++,l[a]=b,f>k&&this.remove(p.key),b},get:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;b==n&&(n=b.p);b==p&&(p=b.n);g(b.n,b.p);delete m[a]}delete l[a];f--},removeAll:function(){l={};f=0;m={};n=p=null},destroy:function(){m=h=l=null;delete a[b]},info:function(){return D({},h,{size:f})}}}var a={};b.info=function(){var b={};q(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};
return b}}function ce(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function cc(b,a){var c={},d="Directive",e=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,g=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,f=/^(on[a-z]+|formaction)$/;this.directive=function l(a,e){Aa(a,"directive");w(a)?(xb(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+d,["$injector","$exceptionHandler",function(b,d){var e=[];q(c[a],function(c,g){try{var f=b.invoke(c);P(f)?f={compile:aa(f)}:!f.compile&&f.link&&(f.compile=
aa(f.link));f.priority=f.priority||0;f.index=g;f.name=f.name||a;f.require=f.require||f.controller&&f.name;f.restrict=f.restrict||"A";e.push(f)}catch(l){d(l)}});return e}])),c[a].push(e)):q(a,Rb(l));return this};this.aHrefSanitizationWhitelist=function(b){return B(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return B(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};this.$get=["$injector","$interpolate",
"$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,m,n,p,r,z,u,F,v,J,A){function x(a,b,c,d,e){a instanceof y||(a=y(a));q(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=y(b).wrap("<span></span>").parent()[0])});var g=L(a,b,a,c,d,e);ma(a,"ng-scope");return function(b,c,d){xb(b,"scope");var e=c?Ja.clone.call(a):a;q(d,function(a,b){e.data("$"+b+"Controller",a)});d=0;for(var f=e.length;d<f;d++){var l=
e[d].nodeType;1!==l&&9!==l||e.eq(d).data("$scope",b)}c&&c(e,b);g&&g(b,e,e);return e}}function ma(a,b){try{a.addClass(b)}catch(c){}}function L(a,b,c,d,e,g){function f(a,c,d,e){var g,k,m,r,n,p,z;g=c.length;var I=Array(g);for(n=0;n<g;n++)I[n]=c[n];z=n=0;for(p=l.length;n<p;z++)k=I[z],c=l[n++],g=l[n++],m=y(k),c?(c.scope?(r=a.$new(),m.data("$scope",r)):r=a,(m=c.transclude)||!e&&b?c(g,r,k,d,Q(a,m||b)):c(g,r,k,d,e)):g&&g(a,k.childNodes,s,e)}for(var l=[],k,m,r,n,p=0;p<a.length;p++)k=new Hb,m=da(a[p],[],k,
0===p?d:s,e),(g=m.length?ia(m,a[p],k,b,c,null,[],[],g):null)&&g.scope&&ma(y(a[p]),"ng-scope"),k=g&&g.terminal||!(r=a[p].childNodes)||!r.length?null:L(r,g?g.transclude:b),l.push(g,k),n=n||g||k,g=null;return n?f:null}function Q(a,b){return function(c,d,e){var g=!1;c||(c=a.$new(),g=c.$$transcluded=!0);d=b(c,d,e);if(g)d.on("$destroy",eb(c,c.$destroy));return d}}function da(a,b,c,d,f){var k=c.$attr,l;switch(a.nodeType){case 1:T(b,na(Ka(a).toLowerCase()),"E",d,f);var m,r,n;l=a.attributes;for(var p=0,z=
l&&l.length;p<z;p++){var u=!1,F=!1;m=l[p];if(!S||8<=S||m.specified){r=m.name;n=na(r);W.test(n)&&(r=fb(n.substr(6),"-"));var J=n.replace(/(Start|End)$/,"");n===J+"Start"&&(u=r,F=r.substr(0,r.length-5)+"end",r=r.substr(0,r.length-6));n=na(r.toLowerCase());k[n]=r;c[n]=m=ca(m.value);mc(a,n)&&(c[n]=!0);N(a,b,m,n);T(b,n,"A",d,f,u,F)}}a=a.className;if(w(a)&&""!==a)for(;l=g.exec(a);)n=na(l[2]),T(b,n,"C",d,f)&&(c[n]=ca(l[3])),a=a.substr(l.index+l[0].length);break;case 3:t(b,a.nodeValue);break;case 8:try{if(l=
e.exec(a.nodeValue))n=na(l[1]),T(b,n,"M",d,f)&&(c[n]=ca(l[2]))}catch(x){}}b.sort(E);return b}function H(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ja("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return y(d)}function R(a,b,c){return function(d,e,g,f,l){e=H(e[0],b,c);return a(d,e,g,f,l)}}function ia(a,c,d,e,g,f,l,n,p){function u(a,b,c,d){if(a){c&&(a=R(a,c,d));a.require=G.require;if(Q===
G||G.$$isolateScope)a=qc(a,{isolateScope:!0});l.push(a)}if(b){c&&(b=R(b,c,d));b.require=G.require;if(Q===G||G.$$isolateScope)b=qc(b,{isolateScope:!0});n.push(b)}}function F(a,b,c){var d,e="data",g=!1;if(w(a)){for(;"^"==(d=a.charAt(0))||"?"==d;)a=a.substr(1),"^"==d&&(e="inheritedData"),g=g||"?"==d;d=null;c&&"data"===e&&(d=c[a]);d=d||b[e]("$"+a+"Controller");if(!d&&!g)throw ja("ctreq",a,t);}else M(a)&&(d=[],q(a,function(a){d.push(F(a,b,c))}));return d}function J(a,e,g,f,p){function u(a,b){var c;2>arguments.length&&
(b=a,a=s);D&&(c=lb);return p(a,b,c)}var I,x,v,A,R,H,lb={},da;I=c===g?d:Ub(d,new Hb(y(g),d.$attr));x=I.$$element;if(Q){var T=/^\s*([@=&])(\??)\s*(\w*)\s*$/;f=y(g);H=e.$new(!0);ia&&ia===Q.$$originalDirective?f.data("$isolateScope",H):f.data("$isolateScopeNoTemplate",H);ma(f,"ng-isolate-scope");q(Q.scope,function(a,c){var d=a.match(T)||[],g=d[3]||c,f="?"==d[2],d=d[1],l,m,n,p;H.$$isolateBindings[c]=d+g;switch(d){case "@":I.$observe(g,function(a){H[c]=a});I.$$observers[g].$$scope=e;I[g]&&(H[c]=b(I[g])(e));
break;case "=":if(f&&!I[g])break;m=r(I[g]);p=m.literal?xa:function(a,b){return a===b};n=m.assign||function(){l=H[c]=m(e);throw ja("nonassign",I[g],Q.name);};l=H[c]=m(e);H.$watch(function(){var a=m(e);p(a,H[c])||(p(a,l)?n(e,a=H[c]):H[c]=a);return l=a},null,m.literal);break;case "&":m=r(I[g]);H[c]=function(a){return m(e,a)};break;default:throw ja("iscp",Q.name,c,a);}})}da=p&&u;L&&q(L,function(a){var b={$scope:a===Q||a.$$isolateScope?H:e,$element:x,$attrs:I,$transclude:da},c;R=a.controller;"@"==R&&(R=
I[a.name]);c=z(R,b);lb[a.name]=c;D||x.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});f=0;for(v=l.length;f<v;f++)try{A=l[f],A(A.isolateScope?H:e,x,I,A.require&&F(A.require,x,lb),da)}catch(G){m(G,ha(x))}f=e;Q&&(Q.template||null===Q.templateUrl)&&(f=H);a&&a(f,g.childNodes,s,p);for(f=n.length-1;0<=f;f--)try{A=n[f],A(A.isolateScope?H:e,x,I,A.require&&F(A.require,x,lb),da)}catch(B){m(B,ha(x))}}p=p||{};for(var v=-Number.MAX_VALUE,A,L=p.controllerDirectives,Q=p.newIsolateScopeDirective,
ia=p.templateDirective,T=p.nonTlbTranscludeDirective,E=!1,D=p.hasElementTranscludeDirective,Z=d.$$element=y(c),G,t,V,Xa=e,O,N=0,S=a.length;N<S;N++){G=a[N];var ra=G.$$start,W=G.$$end;ra&&(Z=H(c,ra,W));V=s;if(v>G.priority)break;if(V=G.scope)A=A||G,G.templateUrl||(K("new/isolated scope",Q,G,Z),X(V)&&(Q=G));t=G.name;!G.templateUrl&&G.controller&&(V=G.controller,L=L||{},K("'"+t+"' controller",L[t],G,Z),L[t]=G);if(V=G.transclude)E=!0,G.$$tlb||(K("transclusion",T,G,Z),T=G),"element"==V?(D=!0,v=G.priority,
V=H(c,ra,W),Z=d.$$element=y(U.createComment(" "+t+": "+d[t]+" ")),c=Z[0],mb(g,y(ya.call(V,0)),c),Xa=x(V,e,v,f&&f.name,{nonTlbTranscludeDirective:T})):(V=y(Eb(c)).contents(),Z.empty(),Xa=x(V,e));if(G.template)if(K("template",ia,G,Z),ia=G,V=P(G.template)?G.template(Z,d):G.template,V=Y(V),G.replace){f=G;V=Cb.test(V)?y(V):[];c=V[0];if(1!=V.length||1!==c.nodeType)throw ja("tplrt",t,"");mb(g,Z,c);S={$attr:{}};V=da(c,[],S);var $=a.splice(N+1,a.length-(N+1));Q&&pc(V);a=a.concat(V).concat($);B(d,S);S=a.length}else Z.html(V);
if(G.templateUrl)K("template",ia,G,Z),ia=G,G.replace&&(f=G),J=C(a.splice(N,a.length-N),Z,d,g,Xa,l,n,{controllerDirectives:L,newIsolateScopeDirective:Q,templateDirective:ia,nonTlbTranscludeDirective:T}),S=a.length;else if(G.compile)try{O=G.compile(Z,d,Xa),P(O)?u(null,O,ra,W):O&&u(O.pre,O.post,ra,W)}catch(aa){m(aa,ha(Z))}G.terminal&&(J.terminal=!0,v=Math.max(v,G.priority))}J.scope=A&&!0===A.scope;J.transclude=E&&Xa;p.hasElementTranscludeDirective=D;return J}function pc(a){for(var b=0,c=a.length;b<c;b++)a[b]=
Tb(a[b],{$$isolateScope:!0})}function T(b,e,g,f,k,n,r){if(e===k)return null;k=null;if(c.hasOwnProperty(e)){var p;e=a.get(e+d);for(var z=0,u=e.length;z<u;z++)try{p=e[z],(f===s||f>p.priority)&&-1!=p.restrict.indexOf(g)&&(n&&(p=Tb(p,{$$start:n,$$end:r})),b.push(p),k=p)}catch(F){m(F)}}return k}function B(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,g){"class"==g?(ma(e,b),a["class"]=(a["class"]?
a["class"]+" ":"")+b):"style"==g?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==g.charAt(0)||a.hasOwnProperty(g)||(a[g]=b,d[g]=c[g])})}function C(a,b,c,d,e,g,f,l){var k=[],m,r,z=b[0],u=a.shift(),F=D({},u,{templateUrl:null,transclude:null,replace:null,$$originalDirective:u}),x=P(u.templateUrl)?u.templateUrl(b,c):u.templateUrl;b.empty();n.get(v.getTrustedResourceUrl(x),{cache:p}).success(function(n){var p,J;n=Y(n);if(u.replace){n=Cb.test(n)?y(n):[];p=n[0];if(1!=n.length||
1!==p.nodeType)throw ja("tplrt",u.name,x);n={$attr:{}};mb(d,b,p);var v=da(p,[],n);X(u.scope)&&pc(v);a=v.concat(a);B(c,n)}else p=z,b.html(n);a.unshift(F);m=ia(a,p,c,e,b,u,g,f,l);q(d,function(a,c){a==p&&(d[c]=b[0])});for(r=L(b[0].childNodes,e);k.length;){n=k.shift();J=k.shift();var A=k.shift(),R=k.shift(),v=b[0];if(J!==z){var H=J.className;l.hasElementTranscludeDirective&&u.replace||(v=Eb(p));mb(A,y(J),v);ma(y(v),H)}J=m.transclude?Q(n,m.transclude):R;m(r,n,v,d,J)}k=null}).error(function(a,b,c,d){throw ja("tpload",
d.url);});return function(a,b,c,d,e){k?(k.push(b),k.push(c),k.push(d),k.push(e)):m(r,b,c,d,e)}}function E(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function K(a,b,c,d){if(b)throw ja("multidir",b.name,c.name,a,ha(d));}function t(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:aa(function(a,b){var c=b.parent(),e=c.data("$binding")||[];e.push(d);ma(c.data("$binding",e),"ng-binding");a.$watch(d,function(a){b[0].nodeValue=a})})})}function O(a,b){if("srcdoc"==
b)return v.HTML;var c=Ka(a);if("xlinkHref"==b||"FORM"==c&&"action"==b||"IMG"!=c&&("src"==b||"ngSrc"==b))return v.RESOURCE_URL}function N(a,c,d,e){var g=b(d,!0);if(g){if("multiple"===e&&"SELECT"===Ka(a))throw ja("selmulti",ha(a));c.push({priority:100,compile:function(){return{pre:function(c,d,l){d=l.$$observers||(l.$$observers={});if(f.test(e))throw ja("nodomevents");if(g=b(l[e],!0,O(a,e)))l[e]=g(c),(d[e]||(d[e]=[])).$$inter=!0,(l.$$observers&&l.$$observers[e].$$scope||c).$watch(g,function(a,b){"class"===
e&&a!=b?l.$updateClass(a,b):l.$set(e,a)})}}}})}}function mb(a,b,c){var d=b[0],e=b.length,g=d.parentNode,f,l;if(a)for(f=0,l=a.length;f<l;f++)if(a[f]==d){a[f++]=c;l=f+e-1;for(var k=a.length;f<k;f++,l++)l<k?a[f]=a[l]:delete a[f];a.length-=e-1;break}g&&g.replaceChild(c,d);a=U.createDocumentFragment();a.appendChild(d);c[y.expando]=d[y.expando];d=1;for(e=b.length;d<e;d++)g=b[d],y(g).remove(),a.appendChild(g),delete b[d];b[0]=c;b.length=1}function qc(a,b){return D(function(){return a.apply(null,arguments)},
a,b)}var Hb=function(a,b){this.$$element=a;this.$attr=b||{}};Hb.prototype={$normalize:na,$addClass:function(a){a&&0<a.length&&J.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&J.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=rc(a,b),d=rc(b,a);0===c.length?J.removeClass(this.$$element,d):0===d.length?J.addClass(this.$$element,c):J.setClass(this.$$element,c,d)},$set:function(a,b,c,d){var e=mc(this.$$element[0],a);e&&(this.$$element.prop(a,b),d=e);this[a]=b;d?this.$attr[a]=
d:(d=this.$attr[a])||(this.$attr[a]=d=fb(a,"-"));e=Ka(this.$$element);if("A"===e&&"href"===a||"IMG"===e&&"src"===a)this[a]=b=A(b,"src"===a);!1!==c&&(null===b||b===s?this.$$element.removeAttr(d):this.$$element.attr(d,b));(c=this.$$observers)&&q(c[a],function(a){try{a(b)}catch(c){m(c)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers={}),e=d[a]||(d[a]=[]);e.push(b);u.$evalAsync(function(){e.$$inter||b(c[a])});return b}};var Z=b.startSymbol(),ra=b.endSymbol(),Y="{{"==Z||"}}"==ra?
Da:function(a){return a.replace(/\{\{/g,Z).replace(/}}/g,ra)},W=/^ngAttr[A-Z]/;return x}]}function na(b){return Ta(b.replace(te,""))}function rc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),g=0;a:for(;g<d.length;g++){for(var f=d[g],h=0;h<e.length;h++)if(f==e[h])continue a;c+=(0<c.length?" ":"")+f}return c}function Od(){var b={},a=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,d){Aa(a,"controller");X(a)?D(b,a):b[a]=d};this.$get=["$injector","$window",function(c,d){return function(e,g){var f,
h,l;w(e)&&(f=e.match(a),h=f[1],l=f[3],e=b.hasOwnProperty(h)?b[h]:bc(g.$scope,h,!0)||bc(d,h,!0),Ra(e,h,!0));f=c.instantiate(e,g);if(l){if(!g||"object"!=typeof g.$scope)throw t("$controller")("noscp",h||e.name,l);g.$scope[l]=f}return f}}]}function Pd(){this.$get=["$window",function(b){return y(b.document)}]}function Qd(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function sc(b){var a={},c,d,e;if(!b)return a;q(b.split("\n"),function(b){e=b.indexOf(":");c=K(ca(b.substr(0,
e)));d=ca(b.substr(e+1));c&&(a[c]=a[c]?a[c]+(", "+d):d)});return a}function tc(b){var a=X(b)?b:s;return function(c){a||(a=sc(b));return c?a[K(c)]||null:a}}function uc(b,a,c){if(P(c))return c(b,a);q(c,function(c){b=c(b,a)});return b}function Td(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d={"Content-Type":"application/json;charset=utf-8"},e=this.defaults={transformResponse:[function(d){w(d)&&(d=d.replace(c,""),b.test(d)&&a.test(d)&&(d=Wb(d)));return d}],transformRequest:[function(a){return X(a)&&
"[object File]"!==wa.call(a)&&"[object Blob]"!==wa.call(a)?qa(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ba(d),put:ba(d),patch:ba(d)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},g=this.interceptors=[],f=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,d,n,p){function r(a){function c(a){var b=D({},a,{data:uc(a.data,a.headers,d.transformResponse)});return 200<=a.status&&300>a.status?
b:n.reject(b)}var d={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},g=function(a){function b(a){var c;q(a,function(b,d){P(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=D({},a.headers),g,f,c=D({},c.common,c[K(a.method)]);b(c);b(d);a:for(g in c){a=K(g);for(f in d)if(K(f)===a)continue a;d[g]=c[g]}return d}(a);D(d,a);d.headers=g;d.method=Fa(d.method);(a=Ib(d.url)?b.cookies()[d.xsrfCookieName||e.xsrfCookieName]:s)&&(g[d.xsrfHeaderName||e.xsrfHeaderName]=
a);var f=[function(a){g=a.headers;var b=uc(a.data,tc(g),a.transformRequest);E(a.data)&&q(g,function(a,b){"content-type"===K(b)&&delete g[b]});E(a.withCredentials)&&!E(e.withCredentials)&&(a.withCredentials=e.withCredentials);return z(a,b,g).then(c,c)},s],h=n.when(d);for(q(v,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var k=f.shift(),h=h.then(a,k)}h.success=function(a){h.then(function(b){a(b.data,
b.status,b.headers,d)});return h};h.error=function(a){h.then(null,function(b){a(b.data,b.status,b.headers,d)});return h};return h}function z(b,c,g){function f(a,b,c,e){v&&(200<=a&&300>a?v.put(s,[a,b,sc(c),e]):v.remove(s));l(b,a,c,e);d.$$phase||d.$apply()}function l(a,c,d,e){c=Math.max(c,0);(200<=c&&300>c?p.resolve:p.reject)({data:a,status:c,headers:tc(d),config:b,statusText:e})}function k(){var a=db(r.pendingRequests,b);-1!==a&&r.pendingRequests.splice(a,1)}var p=n.defer(),z=p.promise,v,q,s=u(b.url,
b.params);r.pendingRequests.push(b);z.then(k,k);(b.cache||e.cache)&&(!1!==b.cache&&"GET"==b.method)&&(v=X(b.cache)?b.cache:X(e.cache)?e.cache:F);if(v)if(q=v.get(s),B(q)){if(q.then)return q.then(k,k),q;M(q)?l(q[1],q[0],ba(q[2]),q[3]):l(q,200,{},"OK")}else v.put(s,z);E(q)&&a(b.method,s,c,f,g,b.timeout,b.withCredentials,b.responseType);return z}function u(a,b){if(!b)return a;var c=[];Sc(b,function(a,b){null===a||E(a)||(M(a)||(a=[a]),q(a,function(a){X(a)&&(a=qa(a));c.push(za(b)+"="+za(a))}))});0<c.length&&
(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var F=c("$http"),v=[];q(g,function(a){v.unshift(w(a)?p.get(a):p.invoke(a))});q(f,function(a,b){var c=w(a)?p.get(a):p.invoke(a);v.splice(b,0,{response:function(a){return c(n.when(a))},responseError:function(a){return c(n.reject(a))}})});r.pendingRequests=[];(function(a){q(arguments,function(a){r[a]=function(b,c){return r(D(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){q(arguments,function(a){r[a]=function(b,c,d){return r(D(d||
{},{method:a,url:b,data:c}))}})})("post","put");r.defaults=e;return r}]}function ue(b){if(8>=S&&(!b.match(/^(get|post|head|put|delete|options)$/i)||!O.XMLHttpRequest))return new O.ActiveXObject("Microsoft.XMLHTTP");if(O.XMLHttpRequest)return new O.XMLHttpRequest;throw t("$httpBackend")("noxhr");}function Ud(){this.$get=["$browser","$window","$document",function(b,a,c){return ve(b,ue,b.defer,a.angular.callbacks,c[0])}]}function ve(b,a,c,d,e){function g(a,b){var c=e.createElement("script"),d=function(){c.onreadystatechange=
c.onload=c.onerror=null;e.body.removeChild(c);b&&b()};c.type="text/javascript";c.src=a;S&&8>=S?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&&d()}:c.onload=c.onerror=function(){d()};e.body.appendChild(c);return d}var f=-1;return function(e,l,k,m,n,p,r,z){function u(){v=f;A&&A();x&&x.abort()}function F(a,d,e,g,f){L&&c.cancel(L);A=x=null;0===d&&(d=e?200:"file"==sa(l).protocol?404:0);a(1223===d?204:d,e,g,f||"");b.$$completeOutstandingRequest(C)}var v;b.$$incOutstandingRequestCount();
l=l||b.url();if("jsonp"==K(e)){var J="_"+(d.counter++).toString(36);d[J]=function(a){d[J].data=a};var A=g(l.replace("JSON_CALLBACK","angular.callbacks."+J),function(){d[J].data?F(m,200,d[J].data):F(m,v||-2);d[J]=Ea.noop})}else{var x=a(e);x.open(e,l,!0);q(n,function(a,b){B(a)&&x.setRequestHeader(b,a)});x.onreadystatechange=function(){if(x&&4==x.readyState){var a=null,b=null;v!==f&&(a=x.getAllResponseHeaders(),b="response"in x?x.response:x.responseText);F(m,v||x.status,b,a,x.statusText||"")}};r&&(x.withCredentials=
!0);if(z)try{x.responseType=z}catch(s){if("json"!==z)throw s;}x.send(k||null)}if(0<p)var L=c(u,p);else p&&p.then&&p.then(u)}}function Rd(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function g(g,k,m){for(var n,p,r=0,z=[],u=g.length,F=!1,v=[];r<u;)-1!=(n=g.indexOf(b,r))&&-1!=(p=g.indexOf(a,n+f))?(r!=n&&z.push(g.substring(r,n)),z.push(r=c(F=g.substring(n+f,p))),
r.exp=F,r=p+h,F=!0):(r!=u&&z.push(g.substring(r)),r=u);(u=z.length)||(z.push(""),u=1);if(m&&1<z.length)throw vc("noconcat",g);if(!k||F)return v.length=u,r=function(a){try{for(var b=0,c=u,f;b<c;b++)"function"==typeof(f=z[b])&&(f=f(a),f=m?e.getTrusted(m,f):e.valueOf(f),null===f||E(f)?f="":"string"!=typeof f&&(f=qa(f))),v[b]=f;return v.join("")}catch(h){a=vc("interr",g,h.toString()),d(a)}},r.exp=g,r.parts=z,r}var f=b.length,h=a.length;g.startSymbol=function(){return b};g.endSymbol=function(){return a};
return g}]}function Sd(){this.$get=["$rootScope","$window","$q",function(b,a,c){function d(d,f,h,l){var k=a.setInterval,m=a.clearInterval,n=c.defer(),p=n.promise,r=0,z=B(l)&&!l;h=B(h)?h:0;p.then(null,null,d);p.$$intervalId=k(function(){n.notify(r++);0<h&&r>=h&&(n.resolve(r),m(p.$$intervalId),delete e[p.$$intervalId]);z||b.$apply()},f);e[p.$$intervalId]=n;return p}var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],
!0):!1};return d}]}function ad(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function wc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=wb(b[a]);return b.join("/")}function xc(b,a,c){b=sa(b,c);a.$$protocol=
b.protocol;a.$$host=b.hostname;a.$$port=Y(b.port)||we[b.protocol]||null}function yc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=sa(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=Yb(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function oa(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ya(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Jb(b){return b.substr(0,
Ya(b).lastIndexOf("/")+1)}function zc(b,a){this.$$html5=!0;a=a||"";var c=Jb(b);xc(b,this,b);this.$$parse=function(a){var e=oa(c,a);if(!w(e))throw Kb("ipthprfx",a,c);yc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Zb(this.$$search),b=this.$$hash?"#"+wb(this.$$hash):"";this.$$url=wc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;if((e=oa(b,d))!==s)return d=e,(e=oa(a,e))!==s?c+(oa("/",e)||e):b+d;if((e=oa(c,
d))!==s)return c+e;if(c==d+"/")return c}}function Lb(b,a){var c=Jb(b);xc(b,this,b);this.$$parse=function(d){var e=oa(b,d)||oa(c,d),e="#"==e.charAt(0)?oa(a,e):this.$$html5?e:"";if(!w(e))throw Kb("ihshprfx",d,a);yc(e,this,b);d=this.$$path;var g=/^\/?.*?:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));g.exec(e)||(d=(e=g.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Zb(this.$$search),e=this.$$hash?"#"+wb(this.$$hash):"";this.$$url=wc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=
b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(Ya(b)==Ya(a))return a}}function Ac(b,a){this.$$html5=!0;Lb.apply(this,arguments);var c=Jb(b);this.$$rewrite=function(d){var e;if(b==Ya(d))return d;if(e=oa(c,d))return b+a+e;if(c===d+"/")return c}}function nb(b){return function(){return this[b]}}function Bc(b,a){return function(c){if(E(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Vd(){var b="",a=!1;this.hashPrefix=function(a){return B(a)?(b=a,this):b};this.html5Mode=
function(b){return B(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,g){function f(a){c.$broadcast("$locationChangeSuccess",h.absUrl(),a)}var h,l=d.baseHref(),k=d.url();a?(l=k.substring(0,k.indexOf("/",k.indexOf("//")+2))+(l||"/"),e=e.history?zc:Ac):(l=Ya(k),e=Lb);h=new e(l,"#"+b);h.$$parse(h.$$rewrite(k));g.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=y(a.target);"a"!==K(b[0].nodeName);)if(b[0]===g[0]||!(b=b.parent())[0])return;
var e=b.prop("href");X(e)&&"[object SVGAnimatedString]"===e.toString()&&(e=sa(e.animVal).href);var f=h.$$rewrite(e);e&&(!b.attr("target")&&f&&!a.isDefaultPrevented())&&(a.preventDefault(),f!=d.url()&&(h.$$parse(f),c.$apply(),O.angular["ff-684208-preventDefault"]=!0))}});h.absUrl()!=k&&d.url(h.absUrl(),!0);d.onUrlChange(function(a){h.absUrl()!=a&&(c.$evalAsync(function(){var b=h.absUrl();h.$$parse(a);c.$broadcast("$locationChangeStart",a,b).defaultPrevented?(h.$$parse(b),d.url(b)):f(b)}),c.$$phase||
c.$digest())});var m=0;c.$watch(function(){var a=d.url(),b=h.$$replace;m&&a==h.absUrl()||(m++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",h.absUrl(),a).defaultPrevented?h.$$parse(a):(d.url(h.absUrl(),b),f(a))}));h.$$replace=!1;return m});return h}]}function Wd(){var b=!0,a=this;this.debugEnabled=function(a){return B(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:
a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||C;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];q(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function fa(b,a){if("constructor"===b)throw Ba("isecfld",a);return b}function Za(b,
a){if(b){if(b.constructor===b)throw Ba("isecfn",a);if(b.document&&b.location&&b.alert&&b.setInterval)throw Ba("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw Ba("isecdom",a);}return b}function ob(b,a,c,d,e){e=e||{};a=a.split(".");for(var g,f=0;1<a.length;f++){g=fa(a.shift(),d);var h=b[g];h||(h={},b[g]=h);b=h;b.then&&e.unwrapPromises&&(ta(d),"$$v"in b||function(a){a.then(function(b){a.$$v=b})}(b),b.$$v===s&&(b.$$v={}),b=b.$$v)}g=fa(a.shift(),d);return b[g]=c}function Cc(b,
a,c,d,e,g,f){fa(b,g);fa(a,g);fa(c,g);fa(d,g);fa(e,g);return f.unwrapPromises?function(f,l){var k=l&&l.hasOwnProperty(b)?l:f,m;if(null==k)return k;(k=k[b])&&k.then&&(ta(g),"$$v"in k||(m=k,m.$$v=s,m.then(function(a){m.$$v=a})),k=k.$$v);if(!a)return k;if(null==k)return s;(k=k[a])&&k.then&&(ta(g),"$$v"in k||(m=k,m.$$v=s,m.then(function(a){m.$$v=a})),k=k.$$v);if(!c)return k;if(null==k)return s;(k=k[c])&&k.then&&(ta(g),"$$v"in k||(m=k,m.$$v=s,m.then(function(a){m.$$v=a})),k=k.$$v);if(!d)return k;if(null==
k)return s;(k=k[d])&&k.then&&(ta(g),"$$v"in k||(m=k,m.$$v=s,m.then(function(a){m.$$v=a})),k=k.$$v);if(!e)return k;if(null==k)return s;(k=k[e])&&k.then&&(ta(g),"$$v"in k||(m=k,m.$$v=s,m.then(function(a){m.$$v=a})),k=k.$$v);return k}:function(g,f){var k=f&&f.hasOwnProperty(b)?f:g;if(null==k)return k;k=k[b];if(!a)return k;if(null==k)return s;k=k[a];if(!c)return k;if(null==k)return s;k=k[c];if(!d)return k;if(null==k)return s;k=k[d];return e?null==k?s:k=k[e]:k}}function xe(b,a){fa(b,a);return function(a,
d){return null==a?s:(d&&d.hasOwnProperty(b)?d:a)[b]}}function ye(b,a,c){fa(b,c);fa(a,c);return function(c,e){if(null==c)return s;c=(e&&e.hasOwnProperty(b)?e:c)[b];return null==c?s:c[a]}}function Dc(b,a,c){if(Mb.hasOwnProperty(b))return Mb[b];var d=b.split("."),e=d.length,g;if(a.unwrapPromises||1!==e)if(a.unwrapPromises||2!==e)if(a.csp)g=6>e?Cc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,g){var f=0,h;do h=Cc(d[f++],d[f++],d[f++],d[f++],d[f++],c,a)(b,g),g=s,b=h;while(f<e);return h};else{var f="var p;\n";
q(d,function(b,d){fa(b,c);f+="if(s == null) return undefined;\ns="+(d?"s":'((k&&k.hasOwnProperty("'+b+'"))?k:s)')+'["'+b+'"];\n'+(a.unwrapPromises?'if (s && s.then) {\n pw("'+c.replace(/(["\r\n])/g,"\\$1")+'");\n if (!("$$v" in s)) {\n p=s;\n p.$$v = undefined;\n p.then(function(v) {p.$$v=v;});\n}\n s=s.$$v\n}\n':"")});var f=f+"return s;",h=new Function("s","k","pw",f);h.toString=aa(f);g=a.unwrapPromises?function(a,b){return h(a,b,ta)}:h}else g=ye(d[0],d[1],c);else g=xe(d[0],c);"hasOwnProperty"!==
b&&(Mb[b]=g);return g}function Xd(){var b={},a={csp:!1,unwrapPromises:!1,logPromiseWarnings:!0};this.unwrapPromises=function(b){return B(b)?(a.unwrapPromises=!!b,this):a.unwrapPromises};this.logPromiseWarnings=function(b){return B(b)?(a.logPromiseWarnings=b,this):a.logPromiseWarnings};this.$get=["$filter","$sniffer","$log",function(c,d,e){a.csp=d.csp;ta=function(b){a.logPromiseWarnings&&!Ec.hasOwnProperty(b)&&(Ec[b]=!0,e.warn("[$parse] Promise found in the expression `"+b+"`. Automatic unwrapping of promises in Angular expressions is deprecated."))};
return function(d){var e;switch(typeof d){case "string":if(b.hasOwnProperty(d))return b[d];e=new Nb(a);e=(new $a(e,c,a)).parse(d,!1);"hasOwnProperty"!==d&&(b[d]=e);return e;case "function":return d;default:return C}}}]}function Zd(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return ze(function(a){b.$evalAsync(a)},a)}]}function ze(b,a){function c(a){return a}function d(a){return f(a)}var e=function(){var f=[],k,m;return m={resolve:function(a){if(f){var c=f;f=s;k=g(a);c.length&&b(function(){for(var a,
b=0,d=c.length;b<d;b++)a=c[b],k.then(a[0],a[1],a[2])})}},reject:function(a){m.resolve(h(a))},notify:function(a){if(f){var c=f;f.length&&b(function(){for(var b,d=0,e=c.length;d<e;d++)b=c[d],b[2](a)})}},promise:{then:function(b,g,h){var m=e(),u=function(d){try{m.resolve((P(b)?b:c)(d))}catch(e){m.reject(e),a(e)}},F=function(b){try{m.resolve((P(g)?g:d)(b))}catch(c){m.reject(c),a(c)}},v=function(b){try{m.notify((P(h)?h:c)(b))}catch(d){a(d)}};f?f.push([u,F,v]):k.then(u,F,v);return m.promise},"catch":function(a){return this.then(null,
a)},"finally":function(a){function b(a,c){var d=e();c?d.resolve(a):d.reject(a);return d.promise}function d(e,g){var f=null;try{f=(a||c)()}catch(h){return b(h,!1)}return f&&P(f.then)?f.then(function(){return b(e,g)},function(a){return b(a,!1)}):b(e,g)}return this.then(function(a){return d(a,!0)},function(a){return d(a,!1)})}}}},g=function(a){return a&&P(a.then)?a:{then:function(c){var d=e();b(function(){d.resolve(c(a))});return d.promise}}},f=function(a){var b=e();b.reject(a);return b.promise},h=function(c){return{then:function(g,
f){var h=e();b(function(){try{h.resolve((P(f)?f:d)(c))}catch(b){h.reject(b),a(b)}});return h.promise}}};return{defer:e,reject:f,when:function(h,k,m,n){var p=e(),r,z=function(b){try{return(P(k)?k:c)(b)}catch(d){return a(d),f(d)}},u=function(b){try{return(P(m)?m:d)(b)}catch(c){return a(c),f(c)}},F=function(b){try{return(P(n)?n:c)(b)}catch(d){a(d)}};b(function(){g(h).then(function(a){r||(r=!0,p.resolve(g(a).then(z,u,F)))},function(a){r||(r=!0,p.resolve(u(a)))},function(a){r||p.notify(F(a))})});return p.promise},
all:function(a){var b=e(),c=0,d=M(a)?[]:{};q(a,function(a,e){c++;g(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise}}}function fe(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.mozCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,g=e?
function(a){var b=c(a);return function(){d(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};g.supported=e;return g}]}function Yd(){var b=10,a=t("$rootScope"),c=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(d,e,g,f){function h(){this.$id=bb();this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this["this"]=this.$root=this;
this.$$destroyed=!1;this.$$asyncQueue=[];this.$$postDigestQueue=[];this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings={}}function l(b){if(p.$$phase)throw a("inprog",p.$$phase);p.$$phase=b}function k(a,b){var c=g(a);Ra(c,b);return c}function m(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function n(){}h.prototype={constructor:h,$new:function(a){a?(a=new h,a.$root=this.$root,a.$$asyncQueue=this.$$asyncQueue,a.$$postDigestQueue=
this.$$postDigestQueue):(a=function(){},a.prototype=this,a=new a,a.$id=bb());a["this"]=a;a.$$listeners={};a.$$listenerCount={};a.$parent=this;a.$$watchers=a.$$nextSibling=a.$$childHead=a.$$childTail=null;a.$$prevSibling=this.$$childTail;this.$$childHead?this.$$childTail=this.$$childTail.$$nextSibling=a:this.$$childHead=this.$$childTail=a;return a},$watch:function(a,b,d){var e=k(a,"watch"),g=this.$$watchers,f={fn:b,last:n,get:e,exp:a,eq:!!d};c=null;if(!P(b)){var h=k(b||C,"listener");f.fn=function(a,
b,c){h(c)}}if("string"==typeof a&&e.constant){var l=f.fn;f.fn=function(a,b,c){l.call(this,a,b,c);Oa(g,f)}}g||(g=this.$$watchers=[]);g.unshift(f);return function(){Oa(g,f);c=null}},$watchCollection:function(a,b){var c=this,d,e,f,h=1<b.length,l=0,k=g(a),m=[],n={},p=!0,q=0;return this.$watch(function(){d=k(c);var a,b;if(X(d))if(ab(d))for(e!==m&&(e=m,q=e.length=0,l++),a=d.length,q!==a&&(l++,e.length=q=a),b=0;b<a;b++)e[b]!==e[b]&&d[b]!==d[b]||e[b]===d[b]||(l++,e[b]=d[b]);else{e!==n&&(e=n={},q=0,l++);a=
0;for(b in d)d.hasOwnProperty(b)&&(a++,e.hasOwnProperty(b)?e[b]!==d[b]&&(l++,e[b]=d[b]):(q++,e[b]=d[b],l++));if(q>a)for(b in l++,e)e.hasOwnProperty(b)&&!d.hasOwnProperty(b)&&(q--,delete e[b])}else e!==d&&(e=d,l++);return l},function(){p?(p=!1,b(d,d,c)):b(d,f,c);if(h)if(X(d))if(ab(d)){f=Array(d.length);for(var a=0;a<d.length;a++)f[a]=d[a]}else for(a in f={},d)Fc.call(d,a)&&(f[a]=d[a]);else f=d})},$digest:function(){var d,g,f,h,k=this.$$asyncQueue,m=this.$$postDigestQueue,q,x,s=b,L,Q=[],y,H,R;l("$digest");
c=null;do{x=!1;for(L=this;k.length;){try{R=k.shift(),R.scope.$eval(R.expression)}catch(B){p.$$phase=null,e(B)}c=null}a:do{if(h=L.$$watchers)for(q=h.length;q--;)try{if(d=h[q])if((g=d.get(L))!==(f=d.last)&&!(d.eq?xa(g,f):"number"==typeof g&&"number"==typeof f&&isNaN(g)&&isNaN(f)))x=!0,c=d,d.last=d.eq?ba(g):g,d.fn(g,f===n?g:f,L),5>s&&(y=4-s,Q[y]||(Q[y]=[]),H=P(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):d.exp,H+="; newVal: "+qa(g)+"; oldVal: "+qa(f),Q[y].push(H));else if(d===c){x=!1;break a}}catch(w){p.$$phase=
null,e(w)}if(!(h=L.$$childHead||L!==this&&L.$$nextSibling))for(;L!==this&&!(h=L.$$nextSibling);)L=L.$parent}while(L=h);if((x||k.length)&&!s--)throw p.$$phase=null,a("infdig",b,qa(Q));}while(x||k.length);for(p.$$phase=null;m.length;)try{m.shift()()}catch(T){e(T)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this!==p&&(q(this.$$listenerCount,eb(null,m,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&
(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null,this.$$listeners={},this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[],this.$destroy=this.$digest=this.$apply=C,this.$on=this.$watch=function(){return C})}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a){p.$$phase||
p.$$asyncQueue.length||f.defer(function(){p.$$asyncQueue.length&&p.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return l("$apply"),this.$eval(a)}catch(b){e(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw e(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);
var e=this;return function(){c[db(c,b)]=null;m(e,1,a)}},$emit:function(a,b){var c=[],d,g=this,f=!1,h={name:a,targetScope:g,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},l=[h].concat(ya.call(arguments,1)),k,m;do{d=g.$$listeners[a]||c;h.currentScope=g;k=0;for(m=d.length;k<m;k++)if(d[k])try{d[k].apply(null,l)}catch(n){e(n)}else d.splice(k,1),k--,m--;if(f)break;g=g.$parent}while(g);return h},$broadcast:function(a,b){for(var c=this,d=this,g={name:a,
targetScope:this,preventDefault:function(){g.defaultPrevented=!0},defaultPrevented:!1},f=[g].concat(ya.call(arguments,1)),h,k;c=d;){g.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,f)}catch(l){e(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}return g}};var p=new h;return p}]}function bd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*(https?|ftp|file):|data:image\//;
this.aHrefSanitizationWhitelist=function(a){return B(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return B(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,g;if(!S||8<=S)if(g=sa(c).href,""!==g&&!g.match(e))return"unsafe:"+g;return c}}}function Ae(b){if("self"===b)return b;if(w(b)){if(-1<b.indexOf("***"))throw ua("iwcard",b);b=b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08").replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return RegExp("^"+
b+"$")}if(cb(b))return RegExp("^"+b.source+"$");throw ua("imatcher");}function Gc(b){var a=[];B(b)&&q(b,function(b){a.push(Ae(b))});return a}function ae(){this.SCE_CONTEXTS=ga;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=Gc(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=Gc(b));return a};this.$get=["$injector",function(c){function d(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=
function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var e=function(a){throw ua("unsafe");};c.has("$sanitize")&&(e=c.get("$sanitize"));var g=d(),f={};f[ga.HTML]=d(g);f[ga.CSS]=d(g);f[ga.URL]=d(g);f[ga.JS]=d(g);f[ga.RESOURCE_URL]=d(f[ga.URL]);return{trustAs:function(a,b){var c=f.hasOwnProperty(a)?f[a]:null;if(!c)throw ua("icontext",a,b);if(null===b||b===s||""===b)return b;if("string"!==typeof b)throw ua("itype",a);return new c(b)},
getTrusted:function(c,d){if(null===d||d===s||""===d)return d;var g=f.hasOwnProperty(c)?f[c]:null;if(g&&d instanceof g)return d.$$unwrapTrustedValue();if(c===ga.RESOURCE_URL){var g=sa(d.toString()),m,n,p=!1;m=0;for(n=b.length;m<n;m++)if("self"===b[m]?Ib(g):b[m].exec(g.href)){p=!0;break}if(p)for(m=0,n=a.length;m<n;m++)if("self"===a[m]?Ib(g):a[m].exec(g.href)){p=!1;break}if(p)return d;throw ua("insecurl",d.toString());}if(c===ga.HTML)return e(d);throw ua("unsafe");},valueOf:function(a){return a instanceof
g?a.$$unwrapTrustedValue():a}}}]}function $d(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sniffer","$sceDelegate",function(a,c,d){if(b&&c.msie&&8>c.msieDocumentMode)throw ua("iequirks");var e=ba(ga);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=Da);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,
d(a,c))}};var g=e.parseAs,f=e.getTrusted,h=e.trustAs;q(ga,function(a,b){var c=K(b);e[Ta("parse_as_"+c)]=function(b){return g(a,b)};e[Ta("get_trusted_"+c)]=function(b){return f(a,b)};e[Ta("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function be(){this.$get=["$window","$document",function(b,a){var c={},d=Y((/android (\d+)/.exec(K((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),g=a[0]||{},f=g.documentMode,h,l=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=g.body&&g.body.style,
m=!1,n=!1;if(k){for(var p in k)if(m=l.exec(p)){h=m[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in k&&"webkit");m=!!("transition"in k||h+"Transition"in k);n=!!("animation"in k||h+"Animation"in k);!d||m&&n||(m=w(g.body.style.webkitTransition),n=w(g.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!f||7<f),hasEvent:function(a){if("input"==a&&9==S)return!1;if(E(c[a])){var b=g.createElement("div");c[a]="on"+
a in b}return c[a]},csp:Vb(),vendorPrefix:h,transitions:m,animations:n,android:d,msie:S,msieDocumentMode:f}}]}function de(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function(b,a,c,d){function e(e,h,l){var k=c.defer(),m=k.promise,n=B(l)&&!l;h=a.defer(function(){try{k.resolve(e())}catch(a){k.reject(a),d(a)}finally{delete g[m.$$timeoutId]}n||b.$apply()},h);m.$$timeoutId=h;g[h]=k;return m}var g={};e.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),
delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return e}]}function sa(b,a){var c=b;S&&(W.setAttribute("href",c),c=W.href);W.setAttribute("href",c);return{href:W.href,protocol:W.protocol?W.protocol.replace(/:$/,""):"",host:W.host,search:W.search?W.search.replace(/^\?/,""):"",hash:W.hash?W.hash.replace(/^#/,""):"",hostname:W.hostname,port:W.port,pathname:"/"===W.pathname.charAt(0)?W.pathname:"/"+W.pathname}}function Ib(b){b=w(b)?sa(b):b;return b.protocol===Hc.protocol&&b.host===Hc.host}
function ee(){this.$get=aa(O)}function gc(b){function a(d,e){if(X(d)){var g={};q(d,function(b,c){g[c]=a(c,b)});return g}return b.factory(d+c,e)}var c="Filter";this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+c)}}];a("currency",Ic);a("date",Jc);a("filter",Be);a("json",Ce);a("limitTo",De);a("lowercase",Ee);a("number",Kc);a("orderBy",Lc);a("uppercase",Fe)}function Be(){return function(b,a,c){if(!M(b))return b;var d=typeof c,e=[];e.check=function(a){for(var b=0;b<e.length;b++)if(!e[b](a))return!1;
return!0};"function"!==d&&(c="boolean"===d&&c?function(a,b){return Ea.equals(a,b)}:function(a,b){if(a&&b&&"object"===typeof a&&"object"===typeof b){for(var d in a)if("$"!==d.charAt(0)&&Fc.call(a,d)&&c(a[d],b[d]))return!0;return!1}b=(""+b).toLowerCase();return-1<(""+a).toLowerCase().indexOf(b)});var g=function(a,b){if("string"==typeof b&&"!"===b.charAt(0))return!g(a,b.substr(1));switch(typeof a){case "boolean":case "number":case "string":return c(a,b);case "object":switch(typeof b){case "object":return c(a,
b);default:for(var d in a)if("$"!==d.charAt(0)&&g(a[d],b))return!0}return!1;case "array":for(d=0;d<a.length;d++)if(g(a[d],b))return!0;return!1;default:return!1}};switch(typeof a){case "boolean":case "number":case "string":a={$:a};case "object":for(var f in a)(function(b){"undefined"!=typeof a[b]&&e.push(function(c){return g("$"==b?c:c&&c[b],a[b])})})(f);break;case "function":e.push(a);break;default:return b}d=[];for(f=0;f<b.length;f++){var h=b[f];e.check(h)&&d.push(h)}return d}}function Ic(b){var a=
b.NUMBER_FORMATS;return function(b,d){E(d)&&(d=a.CURRENCY_SYM);return Mc(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,2).replace(/\u00A4/g,d)}}function Kc(b){var a=b.NUMBER_FORMATS;return function(b,d){return Mc(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function Mc(b,a,c,d,e){if(null==b||!isFinite(b)||X(b))return"";var g=0>b;b=Math.abs(b);var f=b+"",h="",l=[],k=!1;if(-1!==f.indexOf("e")){var m=f.match(/([\d\.]+)e(-?)(\d+)/);m&&"-"==m[2]&&m[3]>e+1?f="0":(h=f,k=!0)}if(k)0<e&&(-1<b&&1>b)&&(h=b.toFixed(e));
else{f=(f.split(Nc)[1]||"").length;E(e)&&(e=Math.min(Math.max(a.minFrac,f),a.maxFrac));f=Math.pow(10,e);b=Math.round(b*f)/f;b=(""+b).split(Nc);f=b[0];b=b[1]||"";var m=0,n=a.lgSize,p=a.gSize;if(f.length>=n+p)for(m=f.length-n,k=0;k<m;k++)0===(m-k)%p&&0!==k&&(h+=c),h+=f.charAt(k);for(k=m;k<f.length;k++)0===(f.length-k)%n&&0!==k&&(h+=c),h+=f.charAt(k);for(;b.length<e;)b+="0";e&&"0"!==e&&(h+=d+b.substr(0,e))}l.push(g?a.negPre:a.posPre);l.push(h);l.push(g?a.negSuf:a.posSuf);return l.join("")}function Ob(b,
a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function $(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Ob(e,a,d)}}function pb(b,a){return function(c,d){var e=c["get"+b](),g=Fa(a?"SHORT"+b:b);return d[g][e]}}function Jc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var g=0,f=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(g=Y(b[9]+b[10]),f=Y(b[9]+b[11]));
h.call(a,Y(b[1]),Y(b[2])-1,Y(b[3]));g=Y(b[4]||0)-g;f=Y(b[5]||0)-f;h=Y(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,g,f,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var g="",f=[],h,l;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;w(c)&&(c=Ge.test(c)?Y(c):a(c));vb(c)&&(c=new Date(c));if(!Na(c))return c;for(;e;)(l=He.exec(e))?(f=f.concat(ya.call(l,1)),e=f.pop()):(f.push(e),e=null);q(f,function(a){h=
Ie[a];g+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ce(){return function(b){return qa(b,!0)}}function De(){return function(b,a){if(!M(b)&&!w(b))return b;a=Y(a);if(w(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0<a?(d=0,e=a):(d=b.length+a,e=b.length);for(;d<e;d++)c.push(b[d]);return c}}function Lc(b){return function(a,c,d){function e(a,b){return Qa(b)?function(b,c){return a(c,b)}:a}
function g(a,b){var c=typeof a,d=typeof b;return c==d?("string"==c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!M(a)||!c)return a;c=M(c)?c:[c];c=Uc(c,function(a){var c=!1,d=a||Da;if(w(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);d=b(a);if(d.constant){var f=d();return e(function(a,b){return g(a[f],b[f])},c)}}return e(function(a,b){return g(d(a),d(b))},c)});for(var f=[],h=0;h<a.length;h++)f.push(a[h]);return f.sort(e(function(a,b){for(var d=
0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function va(b){P(b)&&(b={link:b});b.restrict=b.restrict||"AC";return aa(b)}function Oc(b,a,c,d){function e(a,c){c=c?"-"+fb(c,"-"):"";d.removeClass(b,(a?qb:rb)+c);d.addClass(b,(a?rb:qb)+c)}var g=this,f=b.parent().controller("form")||sb,h=0,l=g.$error={},k=[];g.$name=a.name||a.ngForm;g.$dirty=!1;g.$pristine=!0;g.$valid=!0;g.$invalid=!1;f.$addControl(g);b.addClass(La);e(!0);g.$addControl=function(a){Aa(a.$name,"input");k.push(a);a.$name&&
(g[a.$name]=a)};g.$removeControl=function(a){a.$name&&g[a.$name]===a&&delete g[a.$name];q(l,function(b,c){g.$setValidity(c,!0,a)});Oa(k,a)};g.$setValidity=function(a,b,c){var d=l[a];if(b)d&&(Oa(d,c),d.length||(h--,h||(e(b),g.$valid=!0,g.$invalid=!1),l[a]=!1,e(!0,a),f.$setValidity(a,!0,g)));else{h||e(b);if(d){if(-1!=db(d,c))return}else l[a]=d=[],h++,e(!1,a),f.$setValidity(a,!1,g);d.push(c);g.$valid=!1;g.$invalid=!0}};g.$setDirty=function(){d.removeClass(b,La);d.addClass(b,tb);g.$dirty=!0;g.$pristine=
!1;f.$setDirty()};g.$setPristine=function(){d.removeClass(b,tb);d.addClass(b,La);g.$dirty=!1;g.$pristine=!0;q(k,function(a){a.$setPristine()})}}function pa(b,a,c,d){b.$setValidity(a,c);return c?d:s}function Je(b,a,c){var d=c.prop("validity");X(d)&&b.$parsers.push(function(c){if(b.$error[a]||!(d.badInput||d.customError||d.typeMismatch)||d.valueMissing)return c;b.$setValidity(a,!1)})}function ub(b,a,c,d,e,g){var f=a.prop("validity");if(!e.android){var h=!1;a.on("compositionstart",function(a){h=!0});
a.on("compositionend",function(){h=!1;l()})}var l=function(){if(!h){var e=a.val();Qa(c.ngTrim||"T")&&(e=ca(e));if(d.$viewValue!==e||f&&""===e&&!f.valueMissing)b.$$phase?d.$setViewValue(e):b.$apply(function(){d.$setViewValue(e)})}};if(e.hasEvent("input"))a.on("input",l);else{var k,m=function(){k||(k=g.defer(function(){l();k=null}))};a.on("keydown",function(a){a=a.keyCode;91===a||(15<a&&19>a||37<=a&&40>=a)||m()});if(e.hasEvent("paste"))a.on("paste cut",m)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?
"":d.$viewValue)};var n=c.ngPattern;n&&((e=n.match(/^\/(.*)\/([gim]*)$/))?(n=RegExp(e[1],e[2]),e=function(a){return pa(d,"pattern",d.$isEmpty(a)||n.test(a),a)}):e=function(c){var e=b.$eval(n);if(!e||!e.test)throw t("ngPattern")("noregexp",n,e,ha(a));return pa(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var p=Y(c.ngMinlength);e=function(a){return pa(d,"minlength",d.$isEmpty(a)||a.length>=p,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var r=
Y(c.ngMaxlength);e=function(a){return pa(d,"maxlength",d.$isEmpty(a)||a.length<=r,a)};d.$parsers.push(e);d.$formatters.push(e)}}function Pb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){if(!M(a)){if(w(a))return a.split(" ");if(X(a)){var b=[];q(a,function(a,c){a&&b.push(c)});return b}}return a}return{restrict:"AC",link:function(g,f,h){function l(a,b){var c=
f.data("$classCounts")||{},d=[];q(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});f.data("$classCounts",c);return d.join(" ")}function k(b){if(!0===a||g.$index%2===a){var k=e(b||[]);if(!m){var r=l(k,1);h.$addClass(r)}else if(!xa(b,m)){var q=e(m),r=d(k,q),k=d(q,k),k=l(k,-1),r=l(r,1);0===r.length?c.removeClass(f,k):0===k.length?c.addClass(f,r):c.setClass(f,r,k)}}m=ba(b)}var m;g.$watch(h[b],k,!0);h.$observe("class",function(a){k(g.$eval(h[b]))});"ngClass"!==b&&g.$watch("$index",
function(c,d){var f=c&1;if(f!==d&1){var k=e(g.$eval(h[b]));f===a?(f=l(k,1),h.$addClass(f)):(f=l(k,-1),h.$removeClass(f))}})}}}]}var K=function(b){return w(b)?b.toLowerCase():b},Fc=Object.prototype.hasOwnProperty,Fa=function(b){return w(b)?b.toUpperCase():b},S,y,Ga,ya=[].slice,Ke=[].push,wa=Object.prototype.toString,Pa=t("ng"),Ea=O.angular||(O.angular={}),Sa,Ka,ka=["0","0","0"];S=Y((/msie (\d+)/.exec(K(navigator.userAgent))||[])[1]);isNaN(S)&&(S=Y((/trident\/.*; rv:(\d+)/.exec(K(navigator.userAgent))||
[])[1]));C.$inject=[];Da.$inject=[];var ca=function(){return String.prototype.trim?function(b){return w(b)?b.trim():b}:function(b){return w(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Ka=9>S?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Fa(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Xc=/[A-Z]/g,$c={full:"1.2.16",major:1,minor:2,dot:16,codeName:"badger-enumeration"},Ua=N.cache={},gb=N.expando="ng-"+(new Date).getTime(),
me=1,Pc=O.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},Fb=O.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};N._data=function(b){return this.cache[b[this.expando]]||{}};var he=/([\:\-\_]+(.))/g,ie=/^moz([A-Z])/,Bb=t("jqLite"),je=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Cb=/<|&#?\w+;/,ke=/<([\w:]+)/,le=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ea=
{option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ea.optgroup=ea.option;ea.tbody=ea.tfoot=ea.colgroup=ea.caption=ea.thead;ea.th=ea.td;var Ja=N.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===U.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),N(O).on("load",a))},toString:function(){var b=
[];q(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?y(this[b]):y(this[this.length+b])},length:0,push:Ke,sort:[].sort,splice:[].splice},kb={};q("multiple selected checked disabled readOnly required open".split(" "),function(b){kb[K(b)]=b});var nc={};q("input select option textarea button form details".split(" "),function(b){nc[Fa(b)]=!0});q({data:jc,inheritedData:jb,scope:function(b){return y(b).data("$scope")||jb(b.parentNode||b,["$isolateScope","$scope"])},
isolateScope:function(b){return y(b).data("$isolateScope")||y(b).data("$isolateScopeNoTemplate")},controller:kc,injector:function(b){return jb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Gb,css:function(b,a,c){a=Ta(a);if(B(c))b.style[a]=c;else{var d;8>=S&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=S&&(d=""===d?s:d);return d}},attr:function(b,a,c){var d=K(a);if(kb[d])if(B(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));
else return b[a]||(b.attributes.getNamedItem(a)||C).specified?d:s;else if(B(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?s:b},prop:function(b,a,c){if(B(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(E(d))return e?b[e]:"";b[e]=d}var a=[];9>S?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(E(a)){if("SELECT"===Ka(b)&&b.multiple){var c=[];q(b.options,function(a){a.selected&&
c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(E(a))return b.innerHTML;for(var c=0,d=b.childNodes;c<d.length;c++)Ha(d[c]);b.innerHTML=a},empty:lc},function(b,a){N.prototype[a]=function(a,d){var e,g;if(b!==lc&&(2==b.length&&b!==Gb&&b!==kc?a:d)===s){if(X(a)){for(e=0;e<this.length;e++)if(b===jc)b(this[e],a);else for(g in a)b(this[e],g,a[g]);return this}e=b.$dv;g=e===s?Math.min(this.length,1):this.length;for(var f=0;f<g;f++){var h=b(this[f],a,d);e=
e?e+h:h}return e}for(e=0;e<this.length;e++)b(this[e],a,d);return this}});q({removeData:hc,dealoc:Ha,on:function a(c,d,e,g){if(B(g))throw Bb("onargs");var f=la(c,"events"),h=la(c,"handle");f||la(c,"events",f={});h||la(c,"handle",h=ne(c,f));q(d.split(" "),function(d){var g=f[d];if(!g){if("mouseenter"==d||"mouseleave"==d){var m=U.body.contains||U.body.compareDocumentPosition?function(a,c){var d=9===a.nodeType?a.documentElement:a,e=c&&c.parentNode;return a===e||!!(e&&1===e.nodeType&&(d.contains?d.contains(e):
a.compareDocumentPosition&&a.compareDocumentPosition(e)&16))}:function(a,c){if(c)for(;c=c.parentNode;)if(c===a)return!0;return!1};f[d]=[];a(c,{mouseleave:"mouseout",mouseenter:"mouseover"}[d],function(a){var c=a.relatedTarget;c&&(c===this||m(this,c))||h(a,d)})}else Pc(c,d,h),f[d]=[];g=f[d]}g.push(e)})},off:ic,one:function(a,c,d){a=y(a);a.on(c,function g(){a.off(c,d);a.off(c,g)});a.on(c,d)},replaceWith:function(a,c){var d,e=a.parentNode;Ha(a);q(new N(c),function(c){d?e.insertBefore(c,d.nextSibling):
e.replaceChild(c,a);d=c})},children:function(a){var c=[];q(a.childNodes,function(a){1===a.nodeType&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){q(new N(c),function(c){1!==a.nodeType&&11!==a.nodeType||a.appendChild(c)})},prepend:function(a,c){if(1===a.nodeType){var d=a.firstChild;q(new N(c),function(c){a.insertBefore(c,d)})}},wrap:function(a,c){c=y(c)[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:function(a){Ha(a);
var c=a.parentNode;c&&c.removeChild(a)},after:function(a,c){var d=a,e=a.parentNode;q(new N(c),function(a){e.insertBefore(a,d.nextSibling);d=a})},addClass:ib,removeClass:hb,toggleClass:function(a,c,d){c&&q(c.split(" "),function(c){var g=d;E(g)&&(g=!Gb(a,c));(g?ib:hb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){if(a.nextElementSibling)return a.nextElementSibling;for(a=a.nextSibling;null!=a&&1!==a.nodeType;)a=a.nextSibling;return a},find:function(a,c){return a.getElementsByTagName?
a.getElementsByTagName(c):[]},clone:Eb,triggerHandler:function(a,c,d){c=(la(a,"events")||{})[c];d=d||[];var e=[{preventDefault:C,stopPropagation:C}];q(c,function(c){c.apply(a,e.concat(d))})}},function(a,c){N.prototype[c]=function(c,e,g){for(var f,h=0;h<this.length;h++)E(f)?(f=a(this[h],c,e,g),B(f)&&(f=y(f))):Db(f,a(this[h],c,e,g));return B(f)?f:this};N.prototype.bind=N.prototype.on;N.prototype.unbind=N.prototype.off});Va.prototype={put:function(a,c){this[Ia(a)]=c},get:function(a){return this[Ia(a)]},
remove:function(a){var c=this[a=Ia(a)];delete this[a];return c}};var pe=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,qe=/,/,re=/^\s*(_?)(\S+?)\1\s*$/,oe=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Wa=t("$injector"),Le=t("$animate"),Ld=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Le("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?
a:null);return this.$$classNameFilter};this.$get=["$timeout","$$asyncCallback",function(a,d){return{enter:function(a,c,f,h){f?f.after(a):(c&&c[0]||(c=f.parent()),c.append(a));h&&d(h)},leave:function(a,c){a.remove();c&&d(c)},move:function(a,c,d,h){this.enter(a,c,d,h)},addClass:function(a,c,f){c=w(c)?c:M(c)?c.join(" "):"";q(a,function(a){ib(a,c)});f&&d(f)},removeClass:function(a,c,f){c=w(c)?c:M(c)?c.join(" "):"";q(a,function(a){hb(a,c)});f&&d(f)},setClass:function(a,c,f,h){q(a,function(a){ib(a,c);hb(a,
f)});h&&d(h)},enabled:C}}]}],ja=t("$compile");cc.$inject=["$provide","$$sanitizeUriProvider"];var te=/^(x[\:\-_]|data[\:\-_])/i,vc=t("$interpolate"),Me=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,we={http:80,https:443,ftp:21},Kb=t("$location");Ac.prototype=Lb.prototype=zc.prototype={$$html5:!1,$$replace:!1,absUrl:nb("$$absUrl"),url:function(a,c){if(E(a))return this.$$url;var d=Me.exec(a);d[1]&&this.path(decodeURIComponent(d[1]));(d[2]||d[1])&&this.search(d[3]||"");this.hash(d[5]||"",c);return this},protocol:nb("$$protocol"),
host:nb("$$host"),port:nb("$$port"),path:Bc("$$path",function(a){return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(w(a))this.$$search=Yb(a);else if(X(a))this.$$search=a;else throw Kb("isrcharg");break;default:E(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:Bc("$$hash",Da),replace:function(){this.$$replace=!0;return this}};var Ba=t("$parse"),Ec={},ta,Ma={"null":function(){return null},"true":function(){return!0},
"false":function(){return!1},undefined:C,"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return B(d)?B(e)?d+e:d:B(e)?e:s},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(B(d)?d:0)-(B(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"^":function(a,c,d,e){return d(a,c)^e(a,c)},"=":C,"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,
c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Ne={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},
Nb=function(a){this.options=a};Nb.prototype={constructor:Nb,lex:function(a){this.text=a;this.index=0;this.ch=s;this.lastCh=":";this.tokens=[];var c;for(a=[];this.index<this.text.length;){this.ch=this.text.charAt(this.index);if(this.is("\"'"))this.readString(this.ch);else if(this.isNumber(this.ch)||this.is(".")&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(this.ch))this.readIdent(),this.was("{,")&&("{"===a[0]&&(c=this.tokens[this.tokens.length-1]))&&(c.json=-1===c.text.indexOf("."));
else if(this.is("(){}[].,;:?"))this.tokens.push({index:this.index,text:this.ch,json:this.was(":[,")&&this.is("{[")||this.is("}]:,")}),this.is("{[")&&a.unshift(this.ch),this.is("}]")&&a.shift(),this.index++;else if(this.isWhitespace(this.ch)){this.index++;continue}else{var d=this.ch+this.peek(),e=d+this.peek(2),g=Ma[this.ch],f=Ma[d],h=Ma[e];h?(this.tokens.push({index:this.index,text:e,fn:h}),this.index+=3):f?(this.tokens.push({index:this.index,text:d,fn:f}),this.index+=2):g?(this.tokens.push({index:this.index,
text:this.ch,fn:g,json:this.was("[,:")&&this.is("+-")}),this.index+=1):this.throwError("Unexpected next character ",this.index,this.index+1)}this.lastCh=this.ch}return this.tokens},is:function(a){return-1!==a.indexOf(this.ch)},was:function(a){return-1!==a.indexOf(this.lastCh)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===
a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=B(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw Ba("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=K(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=
d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}a*=1;this.tokens.push({index:c,text:a,json:!0,fn:function(){return a}})},readIdent:function(){for(var a=this,c="",d=this.index,e,g,f,h;this.index<this.text.length;){h=this.text.charAt(this.index);if("."===h||this.isIdent(h)||this.isNumber(h))"."===h&&(e=this.index),c+=h;else break;
this.index++}if(e)for(g=this.index;g<this.text.length;){h=this.text.charAt(g);if("("===h){f=c.substr(e-d+1);c=c.substr(0,e-d);this.index=g;break}if(this.isWhitespace(h))g++;else break}d={index:d,text:c};if(Ma.hasOwnProperty(c))d.fn=Ma[c],d.json=Ma[c];else{var l=Dc(c,this.options,this.text);d.fn=D(function(a,c){return l(a,c)},{assign:function(d,e){return ob(d,c,e,a.text,a.options)}})}this.tokens.push(d);f&&(this.tokens.push({index:e,text:".",json:!1}),this.tokens.push({index:e+1,text:f,json:!1}))},
readString:function(a){var c=this.index;this.index++;for(var d="",e=a,g=!1;this.index<this.text.length;){var f=this.text.charAt(this.index),e=e+f;if(g)"u"===f?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=4,d+=String.fromCharCode(parseInt(f,16))):d=(g=Ne[f])?d+g:d+f,g=!1;else if("\\"===f)g=!0;else{if(f===a){this.index++;this.tokens.push({index:c,text:e,string:d,json:!0,fn:function(){return d}});return}d+=
f}this.index++}this.throwError("Unterminated quote",c)}};var $a=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};$a.ZERO=D(function(){return 0},{constant:!0});$a.prototype={constructor:$a,parse:function(a,c){this.text=a;this.json=c;this.tokens=this.lexer.lex(a);c&&(this.assignment=this.logicalOR,this.functionCall=this.fieldAccess=this.objectIndex=this.filterChain=function(){this.throwError("is not valid json",{text:a,index:0})});var d=c?this.primary():this.statements();0!==this.tokens.length&&
this.throwError("is an unexpected token",this.tokens[0]);d.literal=!!d.literal;d.constant=!!d.constant;return d},primary:function(){var a;if(this.expect("("))a=this.filterChain(),this.consume(")");else if(this.expect("["))a=this.arrayDeclaration();else if(this.expect("{"))a=this.object();else{var c=this.expect();(a=c.fn)||this.throwError("not a primary expression",c);c.json&&(a.constant=!0,a.literal=!0)}for(var d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,d),d=null):"["===c.text?
(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw Ba("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw Ba("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){if(0<this.tokens.length){var g=this.tokens[0],f=g.text;if(f===a||f===c||f===d||f===e||!(a||c||d||e))return g}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,
e))?(this.json&&!a.json&&this.throwError("is not valid json",a),this.tokens.shift(),a):!1},consume:function(a){this.expect(a)||this.throwError("is unexpected, expecting ["+a+"]",this.peek())},unaryFn:function(a,c){return D(function(d,e){return a(d,e,c)},{constant:c.constant})},ternaryFn:function(a,c,d){return D(function(e,g){return a(e,g)?c(e,g):d(e,g)},{constant:a.constant&&c.constant&&d.constant})},binaryFn:function(a,c,d){return D(function(e,g){return c(e,g,a,d)},{constant:a.constant&&d.constant})},
statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,d){for(var e,g=0;g<a.length;g++){var f=a[g];f&&(e=f(c,d))}return e}},filterChain:function(){for(var a=this.expression(),c;;)if(c=this.expect("|"))a=this.binaryFn(a,c.fn,this.filter());else return a},filter:function(){for(var a=this.expect(),c=this.$filter(a.text),d=[];;)if(a=this.expect(":"))d.push(this.expression());else{var e=
function(a,e,h){h=[h];for(var l=0;l<d.length;l++)h.push(d[l](a,e));return c.apply(a,h)};return function(){return e}}},expression:function(){return this.assignment()},assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),function(d,g){return a.assign(d,c(d,g),g)}):a},ternary:function(){var a=this.logicalOR(),c,d;if(this.expect("?")){c=this.ternary();
if(d=this.expect(":"))return this.ternaryFn(a,c,this.ternary());this.throwError("expected :",d)}else return a},logicalOR:function(){for(var a=this.logicalAND(),c;;)if(c=this.expect("||"))a=this.binaryFn(a,c.fn,this.logicalAND());else return a},logicalAND:function(){var a=this.equality(),c;if(c=this.expect("&&"))a=this.binaryFn(a,c.fn,this.logicalAND());return a},equality:function(){var a=this.relational(),c;if(c=this.expect("==","!=","===","!=="))a=this.binaryFn(a,c.fn,this.equality());return a},
relational:function(){var a=this.additive(),c;if(c=this.expect("<",">","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn($a.ZERO,a.fn,
this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=Dc(d,this.options,this.text);return D(function(c,d,h){return e(h||a(c,d))},{assign:function(e,f,h){return ob(a(e,h),d,f,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return D(function(e,g){var f=a(e,g),h=d(e,g),l;if(!f)return s;(f=Za(f[h],c.text))&&(f.then&&c.options.unwrapPromises)&&(l=f,"$$v"in f||(l.$$v=s,l.then(function(a){l.$$v=
a})),f=f.$$v);return f},{assign:function(e,g,f){var h=d(e,f);return Za(a(e,f),c.text)[h]=g}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(g,f){for(var h=[],l=c?c(g,f):g,k=0;k<d.length;k++)h.push(d[k](g,f));k=a(g,f,l)||C;Za(l,e.text);Za(k,e.text);h=k.apply?k.apply(l,h):k(h[0],h[1],h[2],h[3],h[4]);return Za(h,e.text)}},arrayDeclaration:function(){var a=[],c=!0;if("]"!==this.peekToken().text){do{if(this.peek("]"))break;
var d=this.expression();a.push(d);d.constant||(c=!1)}while(this.expect(","))}this.consume("]");return D(function(c,d){for(var f=[],h=0;h<a.length;h++)f.push(a[h](c,d));return f},{literal:!0,constant:c})},object:function(){var a=[],c=!0;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.expect(),d=d.string||d.text;this.consume(":");var e=this.expression();a.push({key:d,value:e});e.constant||(c=!1)}while(this.expect(","))}this.consume("}");return D(function(c,d){for(var e={},l=0;l<
a.length;l++){var k=a[l];e[k.key]=k.value(c,d)}return e},{literal:!0,constant:c})}};var Mb={},ua=t("$sce"),ga={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},W=U.createElement("a"),Hc=sa(O.location.href,!0);gc.$inject=["$provide"];Ic.$inject=["$locale"];Kc.$inject=["$locale"];var Nc=".",Ie={yyyy:$("FullYear",4),yy:$("FullYear",2,0,!0),y:$("FullYear",1),MMMM:pb("Month"),MMM:pb("Month",!0),MM:$("Month",2,1),M:$("Month",1,1),dd:$("Date",2),d:$("Date",1),HH:$("Hours",2),H:$("Hours",
1),hh:$("Hours",2,-12),h:$("Hours",1,-12),mm:$("Minutes",2),m:$("Minutes",1),ss:$("Seconds",2),s:$("Seconds",1),sss:$("Milliseconds",3),EEEE:pb("Day"),EEE:pb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Ob(Math[0<a?"floor":"ceil"](a/60),2)+Ob(Math.abs(a%60),2))}},He=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,Ge=/^\-?\d+$/;Jc.$inject=["$locale"];var Ee=aa(K),Fe=aa(Fa);Lc.$inject=
["$parse"];var cd=aa({restrict:"E",compile:function(a,c){8>=S&&(c.href||c.name||c.$set("href",""),a.append(U.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var g="[object SVGAnimatedString]"===wa.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(g)||a.preventDefault()})}}}),zb={};q(kb,function(a,c){if("multiple"!=a){var d=na("ng-"+c);zb[d]=function(){return{priority:100,link:function(a,g,f){a.$watch(f[d],function(a){f.$set(c,!!a)})}}}}});q(["src",
"srcset","href"],function(a){var c=na("ng-"+a);zb[c]=function(){return{priority:99,link:function(d,e,g){var f=a,h=a;"href"===a&&"[object SVGAnimatedString]"===wa.call(e.prop("href"))&&(h="xlinkHref",g.$attr[h]="xlink:href",f=null);g.$observe(c,function(a){a&&(g.$set(h,a),S&&f&&e.prop(f,g[h]))})}}}});var sb={$addControl:C,$removeControl:C,$setValidity:C,$setDirty:C,$setPristine:C};Oc.$inject=["$element","$attrs","$scope","$animate"];var Qc=function(a){return["$timeout",function(c){return{name:"form",
restrict:a?"EAC":"E",controller:Oc,compile:function(){return{pre:function(a,e,g,f){if(!g.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Pc(e[0],"submit",h);e.on("$destroy",function(){c(function(){Fb(e[0],"submit",h)},0,!1)})}var l=e.parent().controller("form"),k=g.name||g.ngForm;k&&ob(a,k,f,k);if(l)e.on("$destroy",function(){l.$removeControl(f);k&&ob(a,k,s,k);D(f,sb)})}}}}}]},dd=Qc(),qd=Qc(!0),Oe=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,
Pe=/^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,Qe=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Rc={text:ub,number:function(a,c,d,e,g,f){ub(a,c,d,e,g,f);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Qe.test(a))return e.$setValidity("number",!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return s});Je(e,"number",c);e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return pa(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),
e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return pa(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return pa(e,"number",e.$isEmpty(a)||vb(a),a)})},url:function(a,c,d,e,g,f){ub(a,c,d,e,g,f);a=function(a){return pa(e,"url",e.$isEmpty(a)||Oe.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,g,f){ub(a,c,d,e,g,f);a=function(a){return pa(e,"email",e.$isEmpty(a)||Pe.test(a),a)};e.$formatters.push(a);
e.$parsers.push(a)},radio:function(a,c,d,e){E(d.name)&&c.attr("name",bb());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var g=d.ngTrueValue,f=d.ngFalseValue;w(g)||(g=!0);w(f)||(f=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==g};
e.$formatters.push(function(a){return a===g});e.$parsers.push(function(a){return a?g:f})},hidden:C,button:C,submit:C,reset:C,file:C},dc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel",link:function(d,e,g,f){f&&(Rc[K(g.type)]||Rc.text)(d,e,g,f,c,a)}}}],rb="ng-valid",qb="ng-invalid",La="ng-pristine",tb="ng-dirty",Re=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function(a,c,d,e,g,f){function h(a,c){c=c?"-"+fb(c,"-"):"";f.removeClass(e,(a?qb:rb)+c);
f.addClass(e,(a?rb:qb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=d.name;var l=g(d.ngModel),k=l.assign;if(!k)throw t("ngModel")("nonassign",d.ngModel,ha(e));this.$render=C;this.$isEmpty=function(a){return E(a)||""===a||null===a||a!==a};var m=e.inheritedData("$formController")||sb,n=0,p=this.$error={};e.addClass(La);h(!0);this.$setValidity=function(a,c){p[a]!==
!c&&(c?(p[a]&&n--,n||(h(!0),this.$valid=!0,this.$invalid=!1)):(h(!1),this.$invalid=!0,this.$valid=!1,n++),p[a]=!c,h(c,a),m.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=!0;f.removeClass(e,tb);f.addClass(e,La)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,f.removeClass(e,La),f.addClass(e,tb),m.$setDirty());q(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,k(a,d),q(this.$viewChangeListeners,
function(a){try{a()}catch(d){c(d)}}))};var r=this;a.$watch(function(){var c=l(a);if(r.$modelValue!==c){var d=r.$formatters,e=d.length;for(r.$modelValue=c;e--;)c=d[e](c);r.$viewValue!==c&&(r.$viewValue=c,r.$render())}return c})}],Fd=function(){return{require:["ngModel","^?form"],controller:Re,link:function(a,c,d,e){var g=e[0],f=e[1]||sb;f.$addControl(g);a.$on("$destroy",function(){f.$removeControl(g)})}}},Hd=aa({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),
ec=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var g=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required",!0),a};e.$formatters.push(g);e.$parsers.unshift(g);d.$observe("required",function(){g(e.$viewValue)})}}}},Gd=function(){return{require:"ngModel",link:function(a,c,d,e){var g=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!E(a)){var c=[];a&&q(a.split(g),function(a){a&&
c.push(ca(a))});return c}});e.$formatters.push(function(a){return M(a)?a.join(", "):s});e.$isEmpty=function(a){return!a||!a.length}}}},Se=/^(true|false|\d+)$/,Id=function(){return{priority:100,compile:function(a,c){return Se.test(c.ngValue)?function(a,c,g){g.$set("value",a.$eval(g.ngValue))}:function(a,c,g){a.$watch(g.ngValue,function(a){g.$set("value",a)})}}}},id=va(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==s?"":a)})}),kd=["$interpolate",
function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],jd=["$sce","$parse",function(a,c){return function(d,e,g){e.addClass("ng-binding").data("$binding",g.ngBindHtml);var f=c(g.ngBindHtml);d.$watch(function(){return(f(d)||"").toString()},function(c){e.html(a.getTrustedHtml(f(d))||"")})}}],ld=Pb("",!0),nd=Pb("Odd",0),md=Pb("Even",1),od=va({compile:function(a,c){c.$set("ngCloak",s);a.removeClass("ng-cloak")}}),
pd=[function(){return{scope:!0,controller:"@",priority:500}}],fc={};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=na("ng-"+a);fc[c]=["$parse",function(d){return{compile:function(e,g){var f=d(g[c]);return function(c,d,e){d.on(K(a),function(a){c.$apply(function(){f(c,{$event:a})})})}}}}]});var sd=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",
$$tlb:!0,link:function(c,d,e,g,f){var h,l,k;c.$watch(e.ngIf,function(g){Qa(g)?l||(l=c.$new(),f(l,function(c){c[c.length++]=U.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)})):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=yb(h.clone),a.leave(k,function(){k=null}),h=null))})}}}],td=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,g){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ea.noop,compile:function(f,
h){var l=h.ngInclude||h.src,k=h.onload||"",m=h.autoscroll;return function(f,h,q,s,u){var F=0,v,y,A,x=function(){y&&(y.remove(),y=null);v&&(v.$destroy(),v=null);A&&(e.leave(A,function(){y=null}),y=A,A=null)};f.$watch(g.parseAsResourceUrl(l),function(g){var l=function(){!B(m)||m&&!f.$eval(m)||d()},q=++F;g?(a.get(g,{cache:c}).success(function(a){if(q===F){var c=f.$new();s.template=a;a=u(c,function(a){x();e.enter(a,null,h,l)});v=c;A=a;v.$emit("$includeContentLoaded");f.$eval(k)}}).error(function(){q===
F&&x()}),f.$emit("$includeContentRequested")):(x(),s.template=null)})}}}}],Jd=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,g){d.html(g.template);a(d.contents())(c)}}}],ud=va({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),vd=va({terminal:!0,priority:1E3}),wd=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,g,f){var h=f.count,l=f.$attr.when&&g.attr(f.$attr.when),k=f.offset||
0,m=e.$eval(l)||{},n={},p=c.startSymbol(),r=c.endSymbol(),s=/^when(Minus)?(.+)$/;q(f,function(a,c){s.test(c)&&(m[K(c.replace("when","").replace("Minus","-"))]=g.attr(f.$attr[c]))});q(m,function(a,e){n[e]=c(a.replace(d,p+h+"-"+k+r))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in m||(c=a.pluralCat(c-k));return n[c](e,g,!0)},function(a){g.text(a)})}}}],xd=["$parse","$animate",function(a,c){var d=t("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,
link:function(e,g,f,h,l){var k=f.ngRepeat,m=k.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),n,p,r,s,u,F,v={$id:Ia};if(!m)throw d("iexp",k);f=m[1];h=m[2];(m=m[3])?(n=a(m),p=function(a,c,d){F&&(v[F]=a);v[u]=c;v.$index=d;return n(e,v)}):(r=function(a,c){return Ia(c)},s=function(a){return a});m=f.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!m)throw d("iidexp",f);u=m[3]||m[1];F=m[2];var B={};e.$watchCollection(h,function(a){var f,h,m=g[0],n,v={},H,R,w,C,T,t,
E=[];if(ab(a))T=a,n=p||r;else{n=p||s;T=[];for(w in a)a.hasOwnProperty(w)&&"$"!=w.charAt(0)&&T.push(w);T.sort()}H=T.length;h=E.length=T.length;for(f=0;f<h;f++)if(w=a===T?f:T[f],C=a[w],C=n(w,C,f),Aa(C,"`track by` id"),B.hasOwnProperty(C))t=B[C],delete B[C],v[C]=t,E[f]=t;else{if(v.hasOwnProperty(C))throw q(E,function(a){a&&a.scope&&(B[a.id]=a)}),d("dupes",k,C);E[f]={id:C};v[C]=!1}for(w in B)B.hasOwnProperty(w)&&(t=B[w],f=yb(t.clone),c.leave(f),q(f,function(a){a.$$NG_REMOVED=!0}),t.scope.$destroy());
f=0;for(h=T.length;f<h;f++){w=a===T?f:T[f];C=a[w];t=E[f];E[f-1]&&(m=E[f-1].clone[E[f-1].clone.length-1]);if(t.scope){R=t.scope;n=m;do n=n.nextSibling;while(n&&n.$$NG_REMOVED);t.clone[0]!=n&&c.move(yb(t.clone),null,y(m));m=t.clone[t.clone.length-1]}else R=e.$new();R[u]=C;F&&(R[F]=w);R.$index=f;R.$first=0===f;R.$last=f===H-1;R.$middle=!(R.$first||R.$last);R.$odd=!(R.$even=0===(f&1));t.scope||l(R,function(a){a[a.length++]=U.createComment(" end ngRepeat: "+k+" ");c.enter(a,null,y(m));m=a;t.scope=R;t.clone=
a;v[t.id]=t})}B=v})}}}],yd=["$animate",function(a){return function(c,d,e){c.$watch(e.ngShow,function(c){a[Qa(c)?"removeClass":"addClass"](d,"ng-hide")})}}],rd=["$animate",function(a){return function(c,d,e){c.$watch(e.ngHide,function(c){a[Qa(c)?"addClass":"removeClass"](d,"ng-hide")})}}],zd=va(function(a,c,d){a.$watch(d.ngStyle,function(a,d){d&&a!==d&&q(d,function(a,d){c.css(d,"")});a&&c.css(a)},!0)}),Ad=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases=
{}}],link:function(c,d,e,g){var f,h,l,k=[];c.$watch(e.ngSwitch||e.on,function(d){var n,p=k.length;if(0<p){if(l){for(n=0;n<p;n++)l[n].remove();l=null}l=[];for(n=0;n<p;n++){var r=h[n];k[n].$destroy();l[n]=r;a.leave(r,function(){l.splice(n,1);0===l.length&&(l=null)})}}h=[];k=[];if(f=g.cases["!"+d]||g.cases["?"])c.$eval(e.change),q(f,function(d){var e=c.$new();k.push(e);d.transclude(e,function(c){var e=d.element;h.push(c);a.enter(c,e.parent(),e)})})})}}}],Bd=va({transclude:"element",priority:800,require:"^ngSwitch",
link:function(a,c,d,e,g){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:g,element:c})}}),Cd=va({transclude:"element",priority:800,require:"^ngSwitch",link:function(a,c,d,e,g){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:g,element:c})}}),Ed=va({link:function(a,c,d,e,g){if(!g)throw t("ngTransclude")("orphan",ha(c));g(function(a){c.empty();c.append(a)})}}),ed=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,
d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],Te=t("ngOptions"),Dd=aa({terminal:!0}),fd=["$compile","$parse",function(a,c){var d=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,e={$setViewValue:C};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var l=this,k={},m=e,n;l.databound=
d.ngModel;l.init=function(a,c,d){m=a;n=d};l.addOption=function(c){Aa(c,'"option value"');k[c]=!0;m.$viewValue==c&&(a.val(c),n.parent()&&n.remove())};l.removeOption=function(a){this.hasOption(a)&&(delete k[a],m.$viewValue==a&&this.renderUnknownOption(a))};l.renderUnknownOption=function(c){c="? "+Ia(c)+" ?";n.val(c);a.prepend(n);a.val(c);n.prop("selected",!0)};l.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){l.renderUnknownOption=C})}],link:function(e,f,h,l){function k(a,
c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(A.parent()&&A.remove(),c.val(a),""===a&&w.prop("selected",!0)):E(a)&&w?c.val(""):e.renderUnknownOption(a)};c.on("change",function(){a.$apply(function(){A.parent()&&A.remove();d.$setViewValue(c.val())})})}function m(a,c,d){var e;d.$render=function(){var a=new Va(d.$viewValue);q(c.find("option"),function(c){c.selected=B(a.get(c.value))})};a.$watch(function(){xa(e,d.$viewValue)||(e=ba(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=
[];q(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function n(e,f,g){function h(){var a={"":[]},c=[""],d,k,s,t,z;t=g.$modelValue;z=y(e)||[];var E=n?Qb(z):z,F,I,A;I={};s=!1;var D,H;if(r)if(w&&M(t))for(s=new Va([]),A=0;A<t.length;A++)I[m]=t[A],s.put(w(e,I),t[A]);else s=new Va(t);for(A=0;F=E.length,A<F;A++){k=A;if(n){k=E[A];if("$"===k.charAt(0))continue;I[n]=k}I[m]=z[k];d=p(e,I)||"";(k=a[d])||(k=a[d]=[],c.push(d));r?d=B(s.remove(w?w(e,I):q(e,I))):(w?(d={},d[m]=t,d=
w(e,d)===w(e,I)):d=t===q(e,I),s=s||d);D=l(e,I);D=B(D)?D:"";k.push({id:w?w(e,I):n?E[A]:A,label:D,selected:d})}r||(u||null===t?a[""].unshift({id:"",label:"",selected:!s}):s||a[""].unshift({id:"?",label:"",selected:!0}));I=0;for(E=c.length;I<E;I++){d=c[I];k=a[d];x.length<=I?(t={element:C.clone().attr("label",d),label:k.label},z=[t],x.push(z),f.append(t.element)):(z=x[I],t=z[0],t.label!=d&&t.element.attr("label",t.label=d));D=null;A=0;for(F=k.length;A<F;A++)s=k[A],(d=z[A+1])?(D=d.element,d.label!==s.label&&
D.text(d.label=s.label),d.id!==s.id&&D.val(d.id=s.id),d.selected!==s.selected&&D.prop("selected",d.selected=s.selected)):(""===s.id&&u?H=u:(H=v.clone()).val(s.id).attr("selected",s.selected).text(s.label),z.push({element:H,label:s.label,id:s.id,selected:s.selected}),D?D.after(H):t.element.append(H),D=H);for(A++;z.length>A;)z.pop().element.remove()}for(;x.length>I;)x.pop()[0].element.remove()}var k;if(!(k=t.match(d)))throw Te("iexp",t,ha(f));var l=c(k[2]||k[1]),m=k[4]||k[6],n=k[5],p=c(k[3]||""),q=
c(k[2]?k[1]:m),y=c(k[7]),w=k[8]?c(k[8]):null,x=[[{element:f,label:""}]];u&&(a(u)(e),u.removeClass("ng-scope"),u.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=y(e)||[],d={},h,k,l,p,t,v,u;if(r)for(k=[],p=0,v=x.length;p<v;p++)for(a=x[p],l=1,t=a.length;l<t;l++){if((h=a[l].element)[0].selected){h=h.val();n&&(d[n]=h);if(w)for(u=0;u<c.length&&(d[m]=c[u],w(e,d)!=h);u++);else d[m]=c[h];k.push(q(e,d))}}else{h=f.val();if("?"==h)k=s;else if(""===h)k=null;else if(w)for(u=0;u<c.length;u++){if(d[m]=
c[u],w(e,d)==h){k=q(e,d);break}}else d[m]=c[h],n&&(d[n]=h),k=q(e,d);1<x[0].length&&x[0][1].id!==h&&(x[0][1].selected=!1)}g.$setViewValue(k)})});g.$render=h;e.$watch(h)}if(l[1]){var p=l[0];l=l[1];var r=h.multiple,t=h.ngOptions,u=!1,w,v=y(U.createElement("option")),C=y(U.createElement("optgroup")),A=v.clone();h=0;for(var x=f.children(),D=x.length;h<D;h++)if(""===x[h].value){w=u=x.eq(h);break}p.init(l,u,A);r&&(l.$isEmpty=function(a){return!a||0===a.length});t?n(e,f,l):r?m(e,f,l):k(e,f,l,p)}}}}],hd=["$interpolate",
function(a){var c={addOption:C,removeOption:C};return{restrict:"E",priority:100,compile:function(d,e){if(E(e.value)){var g=a(d.text(),!0);g||e.$set("value",d.text())}return function(a,d,e){var k=d.parent(),m=k.data("$selectController")||k.parent().data("$selectController");m&&m.databound?d.prop("selected",!1):m=c;g?a.$watch(g,function(a,c){e.$set("value",a);a!==c&&m.removeOption(c);m.addOption(a)}):m.addOption(e.value);d.on("$destroy",function(){m.removeOption(e.value)})}}}}],gd=aa({restrict:"E",
terminal:!0});O.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):((Ga=O.jQuery)?(y=Ga,D(Ga.fn,{scope:Ja.scope,isolateScope:Ja.isolateScope,controller:Ja.controller,injector:Ja.injector,inheritedData:Ja.inheritedData}),Ab("remove",!0,!0,!1),Ab("empty",!1,!1,!1),Ab("html",!1,!1,!0)):y=N,Ea.element=y,Zc(Ea),y(U).ready(function(){Wc(U,$b)}))})(window,document);!angular.$$csp()&&angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}</style>');
//# sourceMappingURL=angular.min.js.map

File diff suppressed because one or more lines are too long

View File

@@ -224,7 +224,7 @@ Note.curHasChanged = function(force) {
hasChanged.hasChanged = true; // 本页使用用小写
hasChanged.Title = title; // 要传到后台的用大写
if(!hasChanged.Title) {
alert(1);
// alert(1);
}
}
@@ -363,14 +363,14 @@ Note.curChangedSaveIt = function(force) {
Note.setNoteCache({"NoteId": hasChanged.NoteId, "UpdatedTime": (new Date()).format("yyyy-MM-ddThh:mm:ss.S")}, false);
// 保存之
showMsg("正在保存");
showMsg(getMsg("saving"));
ajaxPost("/note/UpdateNoteOrContent", hasChanged, function(ret) {
if(hasChanged.IsNew) {
// 缓存之, 后台得到其它信息
ret.IsNew = false;
Note.setNoteCache(ret, false);
}
showMsg("保存成功!", 1000);
showMsg(getMsg("saveSuccess"), 1000);
});
return hasChanged;

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,7 @@
// 主页渲染
//-------------
// 编辑器模式
var em = new editorMode();
// ifr 的高度, 默认是小20px, 启动1s后运行resizeEditor()调整之
@@ -96,15 +99,17 @@ $(function() {
var height = $("#mceToolbar").height();
// 现在是折叠的
if (height < $("#popularToolbar").height()) {
$("#mceToolbar").height($("#popularToolbar").height());
$(this).find("i").removeClass("fa-angle-down").addClass("fa-angle-up");
} else {
$("#mceToolbar").height(30);
$("#mceToolbar").height(height/2);
$(this).find("i").removeClass("fa-angle-up").addClass("fa-angle-down");
}
/*
// 新加 3.12
var mceToolbarHeight = $("#mceToolbar").height();
$("#editorContent").css("top", mceToolbarHeight);
@@ -113,6 +118,7 @@ $(function() {
$("#leanoteNav").css("top", mceToolbarHeight + 2);
$("#editor").css("top", $("#noteTop").height());
*/
resizeEditor();
@@ -184,9 +190,9 @@ $(function() {
selector : "#editorContent",
// height: 100,//这个应该是文档的高度, 而其上层的高度是$("#content").height(),
// parentHeight: $("#content").height(),
content_css : ["css/bootstrap.css", "css/editor.css"],
content_css : ["css/bootstrap.css", "css/editor/editor.css"].concat(em.getWritingCss()),
skin : "custom",
language: "zh_CN",
language: LEA.locale, // 语言
plugins : [
"autolink link leanote_image lists charmap hr", "paste",
"searchreplace leanote_nav leanote_code tabfocus",
@@ -611,7 +617,7 @@ $(function() {
if(LEA.isMobile) {
UserInfo.NoteListWidth = 101;
}
resize3ColumnsEnd(UserInfo.NotebookWidth, UserInfo.NoteListWidth);
// resize3ColumnsEnd(UserInfo.NotebookWidth, UserInfo.NoteListWidth);
if (UserInfo.LeftIsMin) {
minLeft(false);
}
@@ -679,4 +685,130 @@ $(function() {
$("#wmd-panel-preview").css("width", "100%");
}, 10);
});
// 编辑器模式
em.init();
});
// 编辑器模式
function editorMode() {
this.writingHash = "#writing";
this.normalHash = "#normal";
this.isWritingMode = location.hash == this.writingHash;
this.toggleA = null;
}
editorMode.prototype.toggleAText = function(isWriting) {
var self = this;
setTimeout(function() {
toggleA = $("#toggleEditorMode a");
if(isWriting) {
toggleA.attr("href", self.normalHash).text(getMsg("normalMode"));
} else {
toggleA.attr("href", self.writingHash).text(getMsg("writingMode"));
}
}, 0);
}
editorMode.prototype.isWriting = function(hash) {
return hash == this.writingHash;
}
editorMode.prototype.init = function() {
this.changeMode(this.isWritingMode);
var self = this;
$("#toggleEditorMode").click(function() {
//
saveBookmark();
var $a = $(this).find("a");
var isWriting = self.isWriting($a.attr("href"));
self.changeMode(isWriting);
//
restoreBookmark();
});
}
// 改变模式
editorMode.prototype.changeMode = function(isWritingMode) {
this.toggleAText(isWritingMode);
if(isWritingMode) {
this.writtingMode();
} else {
this.normalMode();
}
$("#moreBtn i").removeClass("fa-angle-up").addClass("fa-angle-down");
}
editorMode.prototype.resizeEditor = function() {
// css还没渲染完
setTimeout(function() {
resizeEditor();
}, 10);
setTimeout(function() {
resizeEditor();
}, 20);
setTimeout(function() {
resizeEditor();
}, 500);
}
editorMode.prototype.normalMode = function() {
/*
var w = $(document).width();
var h = $(document).height();
$("#lock").css({right:0, bottom:0});
*/
var $c = $("#editorContent_ifr").contents();
$c.contents().find("#writtingMode").remove();
$c.contents().find('link[href$="editor-writting-mode.css"]').remove();
$("#noteItemListWrap, #notesAndSort").show();
$("#noteList").unbind("mouseenter").unbind("mouseleave");
var theme = UserInfo.Theme || "default";
theme += ".css";
$("#themeLink").attr("href", "/css/theme/" + theme);
$("#mceToolbar").css("height", "30px");
// $("#lock").animate({right:w},1000);
this.resizeEditor();
}
editorMode.prototype.writtingMode = function() {
/*
// $("body").fadeOut();
var w = $(document).width();
var h = $(document).height();
$("#lock").css({right:0, bottom:0});
// $("#lock").animate({right:0}, 0);
*/
$("#themeLink").attr("href", "/css/theme/writting-overwrite.css");
setTimeout(function() {
var $c = $("#editorContent_ifr").contents();
$c.contents().find("head").append('<link type="text/css" rel="stylesheet" href="/css/editor/editor-writting-mode.css" id="writtingMode">');
}, 0);
$("#noteItemListWrap, #notesAndSort").fadeOut();
$("#noteList").hover(function() {
$("#noteItemListWrap, #notesAndSort").fadeIn();
}, function() {
$("#noteItemListWrap, #notesAndSort").fadeOut();
});
// 点击扩展会使html的height生成, 切换后会覆盖css文件的
$("#mceToolbar").css("height", "40px");
// $("#lock").animate({right:w},1000);
// $("body").fadeIn();
this.resizeEditor();
}
editorMode.prototype.getWritingCss = function() {
if(this.isWritingMode) {
return ["css/editor/editor-writting-mode.css"];
}
return [];
}

File diff suppressed because one or more lines are too long

View File

@@ -270,15 +270,35 @@ ajaxPostJson(
*/
//-----------------
// 切换编辑器时要修改tabIndex
function editorIframeTabindex(index) {
var $i = $("#editorContent_ifr");
if($i.size() == 0) {
setTimeout(function() {
editorIframeTabindex(index);
}, 100);
} else {
$i.attr("tabindex", index);
}
}
//切换编辑器
function switchEditor(isMarkdown) {
// 富文本永远是2
if(!isMarkdown) {
$("#editor").show();
$("#mdEditor").css("z-index", 1);
// 刚开始没有
editorIframeTabindex(2);
$("#wmd-input").attr("tabindex", 3);
$("#leanoteNav").show();
} else {
$("#mdEditor").css("z-index", 3).show();
editorIframeTabindex(3);
$("#wmd-input").attr("tabindex", 2);
$("#leanoteNav").hide();
}
}
@@ -303,9 +323,12 @@ function setEditorContent(content, isMarkdown, preview) {
}
} else {
$("#wmd-input").val(content);
$("#wmd-preview").html(""); // 防止先点有的, 再点tinymce再点没内容的
if(!content || preview) { // 没有内容就不要解析了
$("#wmd-preview").html(preview).css("height", "auto");
ScrollLink.onPreviewFinished(); // 告诉scroll preview结束了
if(ScrollLink) {
ScrollLink.onPreviewFinished(); // 告诉scroll preview结束了
}
} else {
// 还要清空preview
if(MarkdownEditor) {

View File

@@ -1 +1 @@
var MSG = {"3th":"Third-party accounts","a":"a","aboutLeanote":"About Leanote","accountSetting":"Account","addNotebook":"Add Notebook","all":"Newest","basicInfo":"Basic","blog":"Blog","blogInfo":"You can public your knowledge and Leanote is your blog!","blue":"blue","cancel":"Cancel","checkEmai":"Check email","clickAddTag":"Click to add Tag","close":"Close","confirmPassword":"Please confirm your password","cooperation":"Cooperation","cooperationInfo":"Collaborate with friends to improve your knowledge.","create":"Create","curUser":"Email","default":"Default","defaultShare":"Default sharing","demoRegister":"您现在使用的是体验帐号, \u003ca href=\"/register\"\u003e立即注册?\u003c/a\u003e","editorTips":"Editor Tips","editorTipsInfo":"\u003ch4\u003e1. Short Cuts\u003c/h4\u003ectrl+shift+c Toggle code \u003cbr /\u003e ctrl+shift+i Insert/edit image \u003ch4\u003e2. shift+enter Get out of current block\u003c/h4\u003e eg. \u003cimg src=\"/images/outofcode.png\" style=\"width: 90px\"/\u003e in this situation you can use shift+enter to get out of current code block.","email":"Email","emailOrOthers":"Email or other contact way","findPassword":"Find password","findPasswordSendEmailOver":"We have already send the find password link to your email, please check out your email","findPasswordTimeout":"time out","forgetPassword ":" Forget password?","green":"green","hi":"Hi","history":"Histories","home":"Home","ing":"processing","inputEmail":"Email is required","inputPassword":"Password is required","inputPassword2":"Please input your password again","inputUsername":"Username(email) is required","knowledge":"Knowledge","knowledgeInfo":"Use leanote as a note, manage your knowledge in Leanote.","leanoteBlog":"Blog","leftHidden":"Hidden slide bar","leftShow":"Show slide bar","login":"Login","loginSuccess":"login success","logining":"login","logout":"Logout","moto":"Not just a note!","myBlog":"Blog","myNote":"Enter to my note","myNotebook":"My Notebook","myTag":"My Tag","nav":"Note Nav","newMarkdown":"New Markdown Note","newNote":"New Note","newPassword":"New Password","notGoodPassword":"Tt's not a good password, the length is at least 6","notebook":"Notebook","oldPassword":"Old Password","or":"or","password":"Password","password2":"Confirm your password","passwordTips":"The length is at least 6","reFindPassword":"find password again","red":"red","register":"Register","registerSuccessAndRdirectToNote":"register success, now redirect to my note...","save":"Save","send":"Send","share":"Share","shareInfo":"Share your knowledge to your friends in Leanote.","simple":"Simple","submit":"submit","suggestions":"Suggestions","suggestionsInfo":"help us to improve our service.","tag":"Tag","themeSetting":"Theme","trash":"Trash","try":"Try it","unTitled":"UnTitled","update":"Update","updateEmail":"Update Email","updatePassword":"Update password","updatePasswordSuccessRedirectToLogin":"update password success and redirect to login page...","uploadImage":"Upload Image","usernameOrEmail":"Username or email","usernameSetting":"Update Username","welcomeUseLeanote":"Welcome!","wrongEmail":"Wrong email","wrongPassword":"Wrong password","wrongUsernameOrPassword":"Wrong username or password","yellow":"yellow","yourContact":"Your contact"};
var MSG = {"3th":"Third-party accounts","aboutLeanote":"About leanote","aboutMe":"About me","accountSetting":"Account","addNotebook":"Add notebook","all":"Newest","basicInfo":"Basic","blog":"Blog","blogInfo":"You can public your knowledge and leanote is your blog!","blogSet":"Set blog","blue":"blue","cancel":"Cancel","checkEmai":"Check email","clickAddTag":"Click to add Tag","close":"Close","confirmPassword":"Please confirm your password","cooperation":"Cooperation","cooperationInfo":"Collaborate with friends to improve your knowledge.","create":"Create","curUser":"Email","default":"Default","defaultShare":"Default sharing","demoRegister":"\u003ca href=\"/register\"\u003eSign up\u003c/a\u003e","editorTips":"Tips","editorTipsInfo":"\u003ch4\u003e1. Short cuts\u003c/h4\u003ectrl+shift+c Toggle code \u003cbr /\u003e ctrl+shift+i Insert/edit image \u003ch4\u003e2. shift+enter Get out of current block\u003c/h4\u003e eg. \u003cimg src=\"/images/outofcode.png\" style=\"width: 90px\"/\u003e in this situation you can use shift+enter to get out of current code block.","email":"Email","emailOrOthers":"Email or other contact way","findPassword":"Find password","findPasswordSendEmailOver":"We have already send the find password link to your email, please check out your email","findPasswordTimeout":"time out","forgetPassword ":" Forget password?","green":"green","hi":"Hi","history":"Histories","home":"Home","ing":"processing","inputEmail":"Email is required","inputPassword":"Password is required","inputPassword2":"Please input your password again","inputUsername":"Username(email) is required","knowledge":"Knowledge","knowledgeInfo":"Use leanote as a note, manage your knowledge in leanote.","leanoteBlog":"Blog","leftHidden":"Hidden slide bar","leftShow":"Show slide bar","login":"Sign in","loginSuccess":"login success","logining":"Sign in","logout":"Logout","moto":"your own cloud note!","myBlog":"Blog","myNote":"My note","myNotebook":"My notebook","myTag":"My tag","nav":"Note nav","newMarkdown":"New markdown note","newNote":"New note","newPassword":"New password","normalMode":"Normal Mode","notFound":"This page cann't found.","notGoodPassword":"Tt's not a good password, the length is at least 6","notebook":"Notebook","oldPassword":"Old password","or":"or","password":"Password","password2":"Confirm your password","passwordTips":"The length is at least 6","reFindPassword":"find password again","red":"red","register":"Sign up","registerSuccessAndRdirectToNote":"register success, now redirect to my note...","save":"Save","saveSuccess":"Save success","saving":"Saving","send":"Send","share":"Share","shareInfo":"Share your knowledge to your friends in leanote.","simple":"Simple","submit":"submit","suggestions":"Suggestions","suggestionsInfo":"help us to improve our service.","tag":"Tag","themeSetting":"Theme","trash":"Trash","try":"Try it","unTitled":"UnTitled","update":"Update","updateEmail":"Update email","updatePassword":"Update password","updatePasswordSuccessRedirectToLogin":"update password success and redirect to login page...","uploadImage":"Upload image","usernameOrEmail":"Username or email","usernameSetting":"Update username","welcomeUseLeanote":"Welcome!","writingMode":"Writing Mode","wrongEmail":"Wrong email","wrongPassword":"Wrong password","wrongUsernameOrPassword":"Wrong username or password","yellow":"yellow","yourContact":"Your contact","yourSuggestions":"Suggestions"};

View File

@@ -1 +1 @@
var MSG = {"3th":"第三方登录","aboutLeanote":"关于Leanote","accountSetting":"帐户设置","addNotebook":"添加笔记本","all":"最新","basicInfo":"基本信息","blog":"博客","blogInfo":"将笔记公开, 让知识传播的更远!","blue":"蓝色","cancel":"取消","checkEmai":"查收邮箱","clickAddTag":"点击添加标签","close":"关闭","confirmPassword":"两次密码输入不一致","cooperation":"协作","cooperationInfo":"分享给好友的同时也可以让你的好友和你一起来完善它.","create":"创建","curUser":"当前登录帐户","default":"默认","defaultShare":"默认共享","demoRegister":"您现在使用的是体验帐号, \u003ca href=\"/register\"\u003e立即注册?\u003c/a\u003e","editorTips":"帮助","editorTipsInfo":"\u003ch4\u003e1. 快捷键\u003c/h4\u003ectrl+shift+c 代码块切换 \u003cbr /\u003e ctrl+shift+i 插入/修改图片\u003ch4\u003e2. shift+enter 跳出当前区域\u003c/h4\u003e比如在代码块中\u003cimg src=\"/images/outofcode.png\" style=\"width: 90px\"/\u003e按shift+enter可跳出当前代码块.","email":"Email","emailOrOthers":"Email或其它联系方式","findPassword":"找回密码","findPasswordSendEmailOver":"已经将修改密码的链接发送到您的邮箱, 请查收邮件.","findPasswordTimeout":"链接已过期","forgetPassword ":" 忘记密码?","green":"绿色","hi":"Hi","history":"历史记录","home":"主页","ing":"正在处理","inputEmail":"请输入Email","inputPassword":"请输入密码","inputPassword2":"请再次输入密码","inputUsername":"请输入用户名或Email","knowledge":"知识","knowledgeInfo":"leanote是一个笔记, 你可以用它来管理自己的知识.","leanoteBlog":"官方博客","leftHidden":"隐藏左侧","leftShow":"展开左侧","login":"登录","loginSuccess":"登录成功, 正在跳转","logining":"正在登录","logout":"退出","moto":"不一样的笔记!","myBlog":"我的博客","myNote":"进入我的笔记","myNotebook":"我的笔记本","myTag":"我的标签","nav":"文档导航","newMarkdown":"新建Markdown笔记","newNote":"新建笔记","newPassword":"新密码","notGoodPassword":"密码至少6位","notebook":"笔记本","oldPassword":"旧密码","or":"或","password":"密码","password2":"确认密码","passwordTips":"密码至少6位","reFindPassword":"重新找回密码","red":"红色","register":"注册","registerSuccessAndRdirectToNote":"注册成功, 正在转至我的笔记...","save":"保存","send":"发送","share":"分享","shareInfo":"你也可以将知识分享给你的好友.","simple":"简约","submit":"提交","suggestions":"您的建议","suggestionsInfo":"帮助我们完善leanote","tag":"标签","themeSetting":"主题设置","trash":"废纸篓","try":"体验一下","unTitled":"无标题","update":"更新","updateEmail":"修改Email","updatePassword":"修改密码","updatePasswordSuccessRedirectToLogin":"修改成功, 正在跳转到登录页","uploadImage":"上传图片","usernameOrEmail":"用户名或Email","usernameSetting":"用户名设置","welcomeUseLeanote":"欢迎使用Leanote","wrongEmail":"Email格式有误","wrongPassword":"密码有误","wrongUsernameOrPassword":"用户名或密码有误","yellow":"黄色","yourContact":"您的联系方式"};
var MSG = {"3th":"第三方登录","aboutLeanote":"关于leanote","aboutMe":"关于我","accountSetting":"帐户设置","addNotebook":"添加笔记本","all":"最新","basicInfo":"基本信息","blog":"博客","blogInfo":"将笔记公开, 让知识传播的更远!","blogSet":"博客设置","blue":"蓝色","cancel":"取消","checkEmai":"查收邮箱","clickAddTag":"点击添加标签","close":"关闭","confirmPassword":"两次密码输入不一致","cooperation":"协作","cooperationInfo":"分享给好友的同时也可以让你的好友和你一起来完善它.","create":"创建","curUser":"当前登录帐户","default":"默认","defaultShare":"默认共享","demoRegister":"\u003ca href=\"/register\"\u003e立即注册\u003c/a\u003e","editorTips":"帮助","editorTipsInfo":"\u003ch4\u003e1. 快捷键\u003c/h4\u003ectrl+shift+c 代码块切换 \u003cbr /\u003e ctrl+shift+i 插入/修改图片\u003ch4\u003e2. shift+enter 跳出当前区域\u003c/h4\u003e比如在代码块中\u003cimg src=\"/images/outofcode.png\" style=\"width: 90px\"/\u003e按shift+enter可跳出当前代码块.","email":"Email","emailOrOthers":"Email或其它联系方式","findPassword":"找回密码","findPasswordSendEmailOver":"已经将修改密码的链接发送到您的邮箱, 请查收邮件.","findPasswordTimeout":"链接已过期","forgetPassword ":" 忘记密码?","green":"绿色","hi":"Hi","history":"历史记录","home":"主页","ing":"正在处理","inputEmail":"请输入Email","inputPassword":"请输入密码","inputPassword2":"请再次输入密码","inputUsername":"请输入用户名或Email","knowledge":"知识","knowledgeInfo":"leanote是一个笔记, 你可以用它来管理自己的知识.","leanoteBlog":"官方博客","leftHidden":"隐藏左侧","leftShow":"展开左侧","login":"登录","loginSuccess":"登录成功, 正在跳转","logining":"正在登录","logout":"退出","moto":"不一样的笔记!","myBlog":"我的博客","myNote":"我的笔记","myNotebook":"我的笔记本","myTag":"我的标签","nav":"文档导航","newMarkdown":"新建Markdown笔记","newNote":"新建笔记","newPassword":"新密码","normalMode":"普通模式","notFound":"该页面不存在","notGoodPassword":"密码至少6位","notebook":"笔记本","oldPassword":"旧密码","or":"或","password":"密码","password2":"确认密码","passwordTips":"密码至少6位","reFindPassword":"重新找回密码","red":"红色","register":"注册","registerSuccessAndRdirectToNote":"注册成功, 正在转至我的笔记...","save":"保存","saveSuccess":"保存成功","saving":"正在保存","send":"发送","share":"分享","shareInfo":"你也可以将知识分享给你的好友.","simple":"简约","submit":"提交","suggestions":"建议","suggestionsInfo":"帮助我们完善leanote","tag":"标签","themeSetting":"主题设置","trash":"废纸篓","try":"体验一下","unTitled":"无标题","update":"更新","updateEmail":"修改Email","updatePassword":"修改密码","updatePasswordSuccessRedirectToLogin":"修改成功, 正在跳转到登录页","uploadImage":"上传图片","usernameOrEmail":"用户名或Email","usernameSetting":"用户名设置","welcomeUseLeanote":"欢迎使用leanote","writingMode":"写作模式","wrongEmail":"Email格式有误","wrongPassword":"密码有误","wrongUsernameOrPassword":"用户名或密码有误","yellow":"黄色","yourContact":"您的联系方式","yourSuggestions":"帮助完善leanote"};

View File

@@ -818,4 +818,4 @@ LEA.isMobile = u.indexOf('Android')>-1 || u.indexOf('Linux')>-1;
// 国际化
function getMsg(key) {
return MSG[key] || key;
}
}

1
public/mobile2/README.md Normal file
View File

@@ -0,0 +1 @@
angularjs mobile

View File

@@ -0,0 +1,330 @@
.back-button {
top: 10px;
position: absolute;
}
.scroller {
overflow: auto;
-webkit-overflow-scrolling: touch;
position: absolute;
top: 168px;
bottom: 0px;
left: 0px;
right: 0px;
}
.topcoat-icon--back {
background: url("images/back_light.svg") no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.count {
color: #5DC1FF;
position: absolute;
right: 50px;
top: 26px;
font-weight: bold;
}
.search-bar {
padding: 10px 10px 12px 8px;
}
.search-bar > input {
width: 100%;
}
a {
text-decoration: none;
color: inherit;
-webkit-touch-callout: none;
-webkit-tap-highlight-color: #000000;
}
.details {
margin: auto;
}
.details > img {
float: left;
margin: 10px;
width: 80px;
height: 80px;
}
.details h1 {
padding: 12px 0px 4px 0px;
margin: 0px 0px 0px 0px;
font-size: 1.2rem;
}
.details h2 {
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
font-size: 1.1rem;
font-weight: normal;
color: #888;
}
.list {
list-style-type: none;
}
.list > li {
position: relative;
clear: both;
padding: 0px;
margin: 0px;
}
.list > li:nth-of-type(1) {
border-top: none;
}
.list > li > a {
margin: 0px;
display: block;
height: 57px;
line-height: 57px;
padding-left: 20px;
}
.list > li > a > p:nth-of-type(1) {
margin: 8px 0px 0px 0px;
font-weight: bold;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.list > li p:nth-of-type(2) {
margin: 0px;
color: #777;
}
.list > li img {
width: 57px;
height: 57px;
float: left;
margin-right: 8px;
}
.list li:active {
background-color: #d6d6d6;
}
.actions > li > a {
padding-left: 12px;
}
.action-icon {
position: absolute !important;
top: 18px;
right: 20px !important;
width: 28px !important;
height: 28px;
}
.actions li p:nth-of-type(1) {
color: #5DC1FF;
font-size: 0.9em;
font-weight: lighter;
}
.actions li p:nth-of-type(2) {
color: inherit;
}
ul {
clear: both;
border-top: none !important;
}
.icon-call {
background: transparent url(images/call.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-sms {
background: transparent url(images/chat.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-mail {
background: transparent url(images/email.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-manager {
background: transparent url(images/next.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-reports {
background: transparent url(images/next.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.chevron {
background: transparent url(images/next_blue.svg);
background-repeat: no-repeat;
background-size: contain;
width: 20px;
height: 20px;
position: absolute;
right: 12px;
top: 20px;
height: 50px;
width: 28px;
}
.slide-left.ng-enter,
.slide-left.ng-leave,
.slide-right.ng-enter,
.slide-right.ng-leave {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: inherit;
-ms-transition: 0.25s ease-in-out;
-webkit-transition: 0.25s ease-in-out;
transition: 0.25s ease-in-out;
}
.slide-left.ng-enter {
z-index: 101;
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.slide-left.ng-enter.ng-enter-active {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-left.ng-leave {
z-index: 100;
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-left.ng-leave.ng-leave-active {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.slide-right.ng-enter {
z-index: 100;
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.slide-right.ng-enter.ng-enter-active {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-right.ng-leave {
z-index: 101;
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-right.ng-leave.ng-leave-active {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.page-content {
background-color: #FFFFFF;
z-index: 10;
display: block;
position: absolute;
min-height: 100%;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-sidebar {
width: 262px;
display: block;
position: absolute;
z-index: 2;
top: 0px;
left: 0px;
bottom: 0px;
overflow: hidden;
position: fixed;
}
/* life */
.bar-left,
.bar-right,
.bar-center {
position: absolute;
text-align: center;
line-height: 3.375rem;
display: inline-block;
}
.bar-center {
left: 50px;
right: 50px;
top: 0;
}
.bar-left {
left: 10px;
top: 3px;
}
.bar-right {
right: 10px;
top: 3px;
}
.bar-left i,
.bar-right i {
display: inline-block;
font-size: 24px;
cursor: pointer;
line-height: 2.2rem;
height: 2.2rem;
width: 2.2rem;
letter-spacing: 1px;
color: #454545;
border-radius: 6px;
}
.bar-left i:hover,
.bar-right i:hover {
text-shadow: 0 1px #fff;
border: 1px solid #9daca9;
box-shadow: inset 0 1px #fff;
background-color: #eff1f1;
}
#noteContent {
padding: 10px;
margin-top: 50px;
background-color: #fff;
}
#noteContent * {
font-size: 16px;
}
#noteContent pre {
background-color: #eee;
padding: 10px;
border-radius: 5px;
word-wrap: break-word;
overflow: hidden;
}
#sidebar {
padding: 10px;
font-size: 16px;
}
#sidebar h1 {
font-size: 24px;
}
#sidebar ul {
list-style: none;
margin: 0;
padding: 0;
}
#sidebar ul li {
line-height: 3em;
padding-left: 10px;
width: 60%;
border-bottom: 1px solid #9daca9;
cursor: pointer;
}
#sidebar footer {
line-height: 3em;
padding-left: 10px;
margin-top: 10px;
}
.topcoat-navigation-bar {
height: 3.375rem;
position: fixed;
left: 0;
right: 0;
top: 0;
z-index: 10;
}
.search-bar {
margin-top: 3.375em;
}

View File

@@ -0,0 +1,370 @@
.back-button {
top: 10px;
position: absolute;
}
.scroller {
overflow: auto;
-webkit-overflow-scrolling: touch;
position: absolute;
top: 168px;
bottom: 0px;
left: 0px;
right: 0px;
}
.topcoat-icon--back {
background: url("images/back_light.svg") no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.count {
color: #5DC1FF;
position: absolute;
right: 50px;
top: 26px;
font-weight: bold;
}
.search-bar {
padding:10px 10px 12px 8px;
}
.search-bar > input {
width: 100%;
}
a {
text-decoration: none;
color: inherit;
-webkit-touch-callout: none;
-webkit-tap-highlight-color: rgb(0, 0, 0);
}
.details {
margin: auto;
}
.details>img {
float:left;
margin:10px;
width: 80px;
height: 80px;
}
.details h1 {
padding: 12px 0px 4px 0px;
margin: 0px 0px 0px 0px;
font-size: 1.2rem;
}
.details h2 {
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
font-size: 1.1rem;
font-weight: normal;
color: #888;
}
.list {
list-style-type: none;
}
.list > li {
position: relative;
clear: both;
padding: 0px;
margin: 0px;
}
.list > li:nth-of-type(1) {
border-top: none;
}
.list > li > a {
margin: 0px;
display: block;
height: 57px;
line-height: 57px;
padding-left: 20px;
}
.list > li > a > p:nth-of-type(1) {
margin: 8px 0px 0px 0px;
font-weight: bold;
text-overflow:ellipsis; white-space:nowrap; overflow:hidden
}
.list > li p:nth-of-type(2) {
margin: 0px;
color: #777;
}
.list > li img {
width: 57px;
height: 57px;
float: left;
margin-right: 8px;
}
.list li:active {
background-color: #d6d6d6;
}
.actions > li > a {
padding-left: 12px;
}
.action-icon {
position: absolute !important;
top: 18px;
right: 20px !important;
width: 28px !important;
height: 28px;
}
.actions li p:nth-of-type(1) {
color: #5DC1FF;
font-size: 0.9em;
font-weight: lighter;
}
.actions li p:nth-of-type(2) {
color: inherit;
}
ul {
clear:both;
border-top: none !important;
}
.icon-call {
background: transparent url(images/call.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-sms {
background: transparent url(images/chat.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-mail {
background: transparent url(images/email.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-manager {
background: transparent url(images/next.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.icon-reports {
background: transparent url(images/next.svg);
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
}
.chevron {
background: transparent url(images/next_blue.svg);
background-repeat: no-repeat;
background-size: contain;
width: 20px;
height: 20px;
position: absolute;
right: 12px;
top: 20px;
height: 50px;
width: 28px;
}
.slide-left.ng-enter,
.slide-left.ng-leave,
.slide-right.ng-enter,
.slide-right.ng-leave {
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
background: inherit;
-ms-transition: .25s ease-in-out;
-webkit-transition: .25s ease-in-out;
transition: .25s ease-in-out;
}
.slide-left.ng-enter {
z-index: 101;
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
.slide-left.ng-enter.ng-enter-active {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-left.ng-leave {
z-index: 100;
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-left.ng-leave.ng-leave-active {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.slide-right.ng-enter {
z-index: 100;
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
.slide-right.ng-enter.ng-enter-active {
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-right.ng-leave {
z-index: 101;
-webkit-transform: translateX(0);
transform: translateX(0);
}
.slide-right.ng-leave.ng-leave-active {
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
//--------------------
.page-content{
background-color:#FFFFFF;
z-index:10;
display:block;
position:absolute;
min-height:100%;
left:0;right:0;top:0;bottom:0;
}
.page-sidebar{
width:262px;
display:block;
position:absolute;
z-index:2;
top:0px;
left:0px;
bottom:0px;
overflow:hidden;
position:fixed;
}
/* life */
.bar-left,
.bar-right,
.bar-center {
position: absolute;
text-align: center;
line-height: 3.375rem;
display: inline-block;
}
.bar-center {
left:50px;
right:50px;
top:0;
}
.bar-left {
left:10px;
top:3px;
}
.bar-right {
right:10px;
top: 3px;
}
.bar-left i,
.bar-right i {
display: inline-block;
font-size: 24px;
cursor: pointer;
line-height: 2.2rem;
height: 2.2rem;
width: 2.2rem;
letter-spacing: 1px;
color: #454545;
border-radius: 6px;
}
.bar-left i:hover, .bar-right i:hover {
text-shadow: 0 1px #fff;
border: 1px solid #9daca9;
box-shadow: inset 0 1px #fff;
background-color: #eff1f1;
}
#noteContent {
padding: 10px;
margin-top: 50px;
background-color: #fff;
}
#noteContent * {
font-size: 16px;
}
#noteContent pre {
background-color: #eee;
padding: 10px;
border-radius: 5px;
word-wrap:break-word; overflow:hidden
}
#sidebar {
padding: 10px;
font-size: 16px;
h1 {
font-size: 24px;
}
ul {
list-style: none;
margin:0;
padding:0;
li {
line-height: 3em;
padding-left:10px;
width: 60%;
border-bottom: 1px solid #9daca9;
&:hover {
}
cursor: pointer;
}
}
footer {
line-height: 3em;
padding-left: 10px;
margin-top: 10px;
}
}
.topcoat-navigation-bar {
height: 3.375rem;
position: fixed;
left:0;right:0;
top:0;
z-index:10;
}
.search-bar {
margin-top: 3.375em;
}

46
public/mobile2/index.html Normal file
View File

@@ -0,0 +1,46 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<link href="topcoat/css/topcoat-mobile-light.min.css" rel="stylesheet">
<link href="css/styles.css" rel="stylesheet">
</head>
<body ng-controller="MainCtrl">
<div id="sidebar" class="page-sidebar">
<header>leanote</header>
<ul id="nav">
<li><a href="#" ng-click="go('/employees')">最新笔记</a></li>
<li>我的笔记本</li>
<li>我的标签</li>
</ul>
<footer>
注销
</footer>
</div>
<div id="content" class="page-content">
<div ng-view ng-class="slide" >
</div>
</div>
<script src="lib/angular.js"></script>
<script src="lib/angular-touch.js"></script>
<script src="lib/angular-resource.js"></script>
<script src="lib/angular-animate.js"></script>
<script src="lib/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/memory-services.js"></script>
<script src="js/snap.js"></script>
<script src="js/page.js"></script>
<script>
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp']);
});
</script>
</body>
</html>

24
public/mobile2/js/app.js Normal file
View File

@@ -0,0 +1,24 @@
'use strict';
function log(o) {
console.log(o);
}
angular.module('myApp', [
'ngTouch',
'ngRoute',
'ngAnimate',
'myApp.controllers',
'myApp.services'
]).
config(['$routeProvider', '$interpolateProvider', function ($routeProvider, $interpolateProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
$routeProvider.when('/notebooks', {templateUrl: '/public/mobile2/tpl/notebooks.html', controller: 'NotebookListCtrl'});
$routeProvider.when('/notes/:notebookId', {templateUrl: '/public/mobile2/tpl/notes.html', controller: 'NoteListCtrl'});
$routeProvider.when('/note/:noteId', {templateUrl: '/public/mobile2/tpl/note.html', controller: 'NoteCtrl'});
$routeProvider.otherwise({redirectTo: '/notebooks'});
}]);

View File

@@ -0,0 +1,69 @@
'use strict';
// module里定义controller, 注入service
// service相当于公共服务, golang的service总是与数据打交道
angular.module('myApp.controllers', [])
.controller('MainCtrl', ['$scope', '$rootScope', '$window', '$location', function ($scope, $rootScope, $window, $location) {
$scope.slide = '';
var snapper;
setTimeout(function() {
snapper = new Snap({
element: document.getElementById('content')
});
}, 10);
function openMenu() {
// 这个时候, 可以调出slider
if(snapper.state().state=="left" ){
snapper.close();
} else {
snapper.open('left');
}
}
$rootScope.back = function() {
$scope.slide = 'slide-right';
snapper.close();
$window.history.back();
}
$rootScope.go = function(path){
$scope.slide = 'slide-left';
snapper.close();
$location.url(path);
}
// 菜单
$rootScope.menu = function() {
openMenu();
}
// 国际化
$rootScope.msg = MSG;
}])
.controller('NotebookListCtrl', ['$scope', 'Notebook', function ($scope, Notebook) {
Notebook.getNotebooks(function(notebooks) {
$scope.notebooks = notebooks;
});
}])
.controller('NoteListCtrl', ['$scope', '$routeParams', 'Notebook', function ($scope, $routeParams, Notebook) {
if($routeParams.notebookId == "all") {
$routeParams.notebookId = "";
$scope.notebook = {Title: getMsg("all")}
} else {
Notebook.getNotebook($routeParams.notebookId, function(notebook) {
$scope.notebook = notebook;
});
}
Notebook.getNotes($routeParams.notebookId, function(notes) {
$scope.notes = notes;
});
}])
.controller('NoteCtrl', ['$scope','$routeParams', '$sce', 'Note', function ($scope, $routeParams, $sce, Note) {
Note.getNote($routeParams.noteId, function(note) {
if(note.Content && !note.RawContent) {
note.RawContent = $sce.trustAsHtml(note.Content);
}
$scope.note = note;
});
}])

View File

@@ -0,0 +1,91 @@
// services
angular.module('myApp.services', [])
// Note
.factory('Note', ["$http", function($http) {
var self = this;
self.notesMap = {}; // noteId => note
var e = {};
// 得到Note
e.getNote = function(noteId, callback) {
if(self.notesMap[noteId]) {
if(!self.notesMap[noteId].Content) {
$http.get("/note/getNoteContent", {params:{noteId: noteId}}).success(function(ret) {
$.extend(self.notesMap[noteId], ret);
callback(self.notesMap[noteId]);
});
}
callback(self.notesMap[noteId]);
} else {
$http.get("/note/getNoteAndContent", {params:{noteId: noteId}}).success(function(ret) {
self.notesMap[noteId] = ret;
callback(self.notesMap[noteId]);
});
}
}
// Notebook调用
e.setCache = function(notes) {
for(var i in notes) {
var note = notes[i];
self.notesMap[note.NoteId] = note;
}
}
return e;
}])
// Notebook
.factory('Notebook', ["$http", "Note",function ($http, Note) {
var self = this;
self.notebooks = [];
self.notebooksMap = {};
self.notes = {}; // notebookId=>[note]
self.notesMap = {}; // noteId => note
var e = {};
e.getNotebooks = function(callback) {
if(!callback) {
callback = function() {};
}
if(self.notebooks.length > 0) callback(self.notebooks);
else {
$http.get("/notebook/getNotebooks").success(function(ret) {
self.notebooks = ret;
for(var i in ret) {
var notebook = ret[i];
self.notebooksMap[notebook.NotebookId] = notebook;
}
callback(ret);
});
}
}
e.getNotebook = function(notebookId, callback) {
if(self.notebooksMap[notebookId]) callback(self.notebooksMap[notebookId]);
else {
e.getNotebooks(function() {
callback(self.notebooksMap[notebookId]);
});
}
}
e.getNotes = function(notebookId, callback) {
if(self.notes[notebookId]) callback(self.notes[notebookId]);
else {
$http.get("/note/listNotes", {params:{notebookId: notebookId}}).success(function(ret) {
self.notes[notebookId] = ret;
callback(ret);
// 存到Note中
Note.setCache(ret);
});
}
}
return e;
}]);

568
public/mobile2/js/snap.js Normal file
View File

@@ -0,0 +1,568 @@
/*
* Snap.js
*
* Copyright 2013, Jacob Kelley - http://jakiestfu.com/
* Released under the MIT Licence
* http://opensource.org/licenses/MIT
*
* Github: http://github.com/jakiestfu/Snap.js/
* Version: 1.9.2
*/
/*jslint browser: true*/
/*global define, module, ender*/
(function(win, doc) {
'use strict';
var Snap = Snap || function(userOpts) {
var settings = {
element: null,
dragger: null,
disable: 'right',
addBodyClasses: true,
hyperextensible: false,
resistance: 0.5,
flickThreshold: 50,
transitionSpeed: 0.3,
easing: 'ease-in-out',
maxPosition: 260,
minPosition: 0,
tapToClose: true,
touchToDrag: true,
slideIntent: 40, // degrees
minDragDistance: 5
},
cache = {
simpleStates: {
opening: null,
towards: null,
hyperExtending: null,
halfway: null,
flick: null,
translation: {
absolute: 0,
relative: 0,
sinceDirectionChange: 0,
percentage: 0
}
}
},
eventList = {},
utils = {
hasTouch: (doc.ontouchstart === null),
eventType: function(action) {
var eventTypes = {
down: (utils.hasTouch ? 'touchstart' : 'mousedown'),
move: (utils.hasTouch ? 'touchmove' : 'mousemove'),
up: (utils.hasTouch ? 'touchend' : 'mouseup'),
out: (utils.hasTouch ? 'touchcancel' : 'mouseout')
};
return eventTypes[action];
},
page: function(t, e){
return (utils.hasTouch && e.touches.length && e.touches[0]) ? e.touches[0]['page'+t] : e['page'+t];
},
klass: {
has: function(el, name){
return (el.className).indexOf(name) !== -1;
},
add: function(el, name){
if(!utils.klass.has(el, name) && settings.addBodyClasses){
el.className += " "+name;
}
},
remove: function(el, name){
if(settings.addBodyClasses){
el.className = (el.className).replace(name, "").replace(/^\s+|\s+$/g, '');
}
}
},
dispatchEvent: function(type) {
if (typeof eventList[type] === 'function') {
return eventList[type].call();
}
},
vendor: function(){
var tmp = doc.createElement("div"),
prefixes = 'webkit Moz O ms'.split(' '),
i;
for (i in prefixes) {
if (typeof tmp.style[prefixes[i] + 'Transition'] !== 'undefined') {
return prefixes[i];
}
}
},
transitionCallback: function(){
return (cache.vendor==='Moz' || cache.vendor==='ms') ? 'transitionend' : cache.vendor+'TransitionEnd';
},
canTransform: function(){
return typeof settings.element.style[cache.vendor+'Transform'] !== 'undefined';
},
deepExtend: function(destination, source) {
var property;
for (property in source) {
if (source[property] && source[property].constructor && source[property].constructor === Object) {
destination[property] = destination[property] || {};
utils.deepExtend(destination[property], source[property]);
} else {
destination[property] = source[property];
}
}
return destination;
},
angleOfDrag: function(x, y) {
var degrees, theta;
// Calc Theta
theta = Math.atan2(-(cache.startDragY - y), (cache.startDragX - x));
if (theta < 0) {
theta += 2 * Math.PI;
}
// Calc Degrees
degrees = Math.floor(theta * (180 / Math.PI) - 180);
if (degrees < 0 && degrees > -180) {
degrees = 360 - Math.abs(degrees);
}
return Math.abs(degrees);
},
events: {
addEvent: function addEvent(element, eventName, func) {
if (element.addEventListener) {
return element.addEventListener(eventName, func, false);
} else if (element.attachEvent) {
return element.attachEvent("on" + eventName, func);
}
},
removeEvent: function addEvent(element, eventName, func) {
if (element.addEventListener) {
return element.removeEventListener(eventName, func, false);
} else if (element.attachEvent) {
return element.detachEvent("on" + eventName, func);
}
},
prevent: function(e) {
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
},
parentUntil: function(el, attr) {
var isStr = typeof attr === 'string';
while (el.parentNode) {
if (isStr && el.getAttribute && el.getAttribute(attr)){
return el;
} else if(!isStr && el === attr){
return el;
}
el = el.parentNode;
}
return null;
}
},
action = {
translate: {
get: {
matrix: function(index) {
if( !utils.canTransform() ){
return parseInt(settings.element.style.left, 10);
} else {
var matrix = win.getComputedStyle(settings.element)[cache.vendor+'Transform'].match(/\((.*)\)/),
ieOffset = 8;
if (matrix) {
matrix = matrix[1].split(',');
if(matrix.length===16){
index+=ieOffset;
}
return parseInt(matrix[index], 10);
}
return 0;
}
}
},
easeCallback: function(){
settings.element.style[cache.vendor+'Transition'] = '';
cache.translation = action.translate.get.matrix(4);
cache.easing = false;
clearInterval(cache.animatingInterval);
if(cache.easingTo===0){
utils.klass.remove(doc.body, 'snapjs-right');
utils.klass.remove(doc.body, 'snapjs-left');
}
utils.dispatchEvent('animated');
utils.events.removeEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback);
},
easeTo: function(n) {
if( !utils.canTransform() ){
cache.translation = n;
action.translate.x(n);
} else {
cache.easing = true;
cache.easingTo = n;
settings.element.style[cache.vendor+'Transition'] = 'all ' + settings.transitionSpeed + 's ' + settings.easing;
cache.animatingInterval = setInterval(function() {
utils.dispatchEvent('animating');
}, 1);
utils.events.addEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback);
action.translate.x(n);
}
if(n===0){
settings.element.style[cache.vendor+'Transform'] = '';
}
},
x: function(n) {
if( (settings.disable==='left' && n>0) ||
(settings.disable==='right' && n<0)
){ return; }
if( !settings.hyperextensible ){
if( n===settings.maxPosition || n>settings.maxPosition ){
n=settings.maxPosition;
} else if( n===settings.minPosition || n<settings.minPosition ){
n=settings.minPosition;
}
}
n = parseInt(n, 10);
if(isNaN(n)){
n = 0;
}
if( utils.canTransform() ){
var theTranslate = 'translate3d(' + n + 'px, 0,0)';
settings.element.style[cache.vendor+'Transform'] = theTranslate;
} else {
settings.element.style.width = (win.innerWidth || doc.documentElement.clientWidth)+'px';
settings.element.style.left = n+'px';
settings.element.style.right = '';
}
}
},
drag: {
listen: function() {
cache.translation = 0;
cache.easing = false;
utils.events.addEvent(settings.element, utils.eventType('down'), action.drag.startDrag);
utils.events.addEvent(settings.element, utils.eventType('move'), action.drag.dragging);
utils.events.addEvent(settings.element, utils.eventType('up'), action.drag.endDrag);
},
stopListening: function() {
utils.events.removeEvent(settings.element, utils.eventType('down'), action.drag.startDrag);
utils.events.removeEvent(settings.element, utils.eventType('move'), action.drag.dragging);
utils.events.removeEvent(settings.element, utils.eventType('up'), action.drag.endDrag);
},
startDrag: function(e) {
// No drag on ignored elements
var target = e.target ? e.target : e.srcElement,
ignoreParent = utils.parentUntil(target, 'data-snap-ignore');
if (ignoreParent) {
utils.dispatchEvent('ignore');
return;
}
if(settings.dragger){
var dragParent = utils.parentUntil(target, settings.dragger);
// Only use dragger if we're in a closed state
if( !dragParent &&
(cache.translation !== settings.minPosition &&
cache.translation !== settings.maxPosition
)){
return;
}
}
utils.dispatchEvent('start');
settings.element.style[cache.vendor+'Transition'] = '';
cache.isDragging = true;
cache.hasIntent = null;
cache.intentChecked = false;
cache.startDragX = utils.page('X', e);
cache.startDragY = utils.page('Y', e);
cache.dragWatchers = {
current: 0,
last: 0,
hold: 0,
state: ''
};
cache.simpleStates = {
opening: null,
towards: null,
hyperExtending: null,
halfway: null,
flick: null,
translation: {
absolute: 0,
relative: 0,
sinceDirectionChange: 0,
percentage: 0
}
};
},
dragging: function(e) {
if (cache.isDragging && settings.touchToDrag) {
var thePageX = utils.page('X', e),
thePageY = utils.page('Y', e),
translated = cache.translation,
absoluteTranslation = action.translate.get.matrix(4),
whileDragX = thePageX - cache.startDragX,
openingLeft = absoluteTranslation > 0,
translateTo = whileDragX,
diff;
// Shown no intent already
if((cache.intentChecked && !cache.hasIntent)){
return;
}
if(settings.addBodyClasses){
if((absoluteTranslation)>0){
utils.klass.add(doc.body, 'snapjs-left');
utils.klass.remove(doc.body, 'snapjs-right');
} else if((absoluteTranslation)<0){
utils.klass.add(doc.body, 'snapjs-right');
utils.klass.remove(doc.body, 'snapjs-left');
}
}
if (cache.hasIntent === false || cache.hasIntent === null) {
var deg = utils.angleOfDrag(thePageX, thePageY),
inRightRange = (deg >= 0 && deg <= settings.slideIntent) || (deg <= 360 && deg > (360 - settings.slideIntent)),
inLeftRange = (deg >= 180 && deg <= (180 + settings.slideIntent)) || (deg <= 180 && deg >= (180 - settings.slideIntent));
if (!inLeftRange && !inRightRange) {
cache.hasIntent = false;
} else {
cache.hasIntent = true;
}
cache.intentChecked = true;
}
if (
(settings.minDragDistance>=Math.abs(thePageX-cache.startDragX)) || // Has user met minimum drag distance?
(cache.hasIntent === false)
) {
return;
}
utils.events.prevent(e);
utils.dispatchEvent('drag');
cache.dragWatchers.current = thePageX;
// Determine which direction we are going
if (cache.dragWatchers.last > thePageX) {
if (cache.dragWatchers.state !== 'left') {
cache.dragWatchers.state = 'left';
cache.dragWatchers.hold = thePageX;
}
cache.dragWatchers.last = thePageX;
} else if (cache.dragWatchers.last < thePageX) {
if (cache.dragWatchers.state !== 'right') {
cache.dragWatchers.state = 'right';
cache.dragWatchers.hold = thePageX;
}
cache.dragWatchers.last = thePageX;
}
if (openingLeft) {
// Pulling too far to the right
if (settings.maxPosition < absoluteTranslation) {
diff = (absoluteTranslation - settings.maxPosition) * settings.resistance;
translateTo = whileDragX - diff;
}
cache.simpleStates = {
opening: 'left',
towards: cache.dragWatchers.state,
hyperExtending: settings.maxPosition < absoluteTranslation,
halfway: absoluteTranslation > (settings.maxPosition / 2),
flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold,
translation: {
absolute: absoluteTranslation,
relative: whileDragX,
sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold),
percentage: (absoluteTranslation/settings.maxPosition)*100
}
};
} else {
// Pulling too far to the left
if (settings.minPosition > absoluteTranslation) {
diff = (absoluteTranslation - settings.minPosition) * settings.resistance;
translateTo = whileDragX - diff;
}
cache.simpleStates = {
opening: 'right',
towards: cache.dragWatchers.state,
hyperExtending: settings.minPosition > absoluteTranslation,
halfway: absoluteTranslation < (settings.minPosition / 2),
flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold,
translation: {
absolute: absoluteTranslation,
relative: whileDragX,
sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold),
percentage: (absoluteTranslation/settings.minPosition)*100
}
};
}
action.translate.x(translateTo + translated);
}
},
endDrag: function(e) {
if (cache.isDragging) {
utils.dispatchEvent('end');
var translated = action.translate.get.matrix(4);
// Tap Close
if (cache.dragWatchers.current === 0 && translated !== 0 && settings.tapToClose) {
utils.dispatchEvent('close');
utils.events.prevent(e);
action.translate.easeTo(0);
cache.isDragging = false;
cache.startDragX = 0;
return;
}
// Revealing Left
if (cache.simpleStates.opening === 'left') {
// Halfway, Flicking, or Too Far Out
if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) {
if (cache.simpleStates.flick && cache.simpleStates.towards === 'left') { // Flicking Closed
action.translate.easeTo(0);
} else if (
(cache.simpleStates.flick && cache.simpleStates.towards === 'right') || // Flicking Open OR
(cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending
) {
action.translate.easeTo(settings.maxPosition); // Open Left
}
} else {
action.translate.easeTo(0); // Close Left
}
// Revealing Right
} else if (cache.simpleStates.opening === 'right') {
// Halfway, Flicking, or Too Far Out
if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) {
if (cache.simpleStates.flick && cache.simpleStates.towards === 'right') { // Flicking Closed
action.translate.easeTo(0);
} else if (
(cache.simpleStates.flick && cache.simpleStates.towards === 'left') || // Flicking Open OR
(cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending
) {
action.translate.easeTo(settings.minPosition); // Open Right
}
} else {
action.translate.easeTo(0); // Close Right
}
}
cache.isDragging = false;
cache.startDragX = utils.page('X', e);
}
}
}
},
init = function(opts) {
if (opts.element) {
utils.deepExtend(settings, opts);
cache.vendor = utils.vendor();
action.drag.listen();
}
};
/*
* Public
*/
this.open = function(side) {
utils.dispatchEvent('open');
utils.klass.remove(doc.body, 'snapjs-expand-left');
utils.klass.remove(doc.body, 'snapjs-expand-right');
if (side === 'left') {
cache.simpleStates.opening = 'left';
cache.simpleStates.towards = 'right';
utils.klass.add(doc.body, 'snapjs-left');
utils.klass.remove(doc.body, 'snapjs-right');
action.translate.easeTo(settings.maxPosition);
} else if (side === 'right') {
cache.simpleStates.opening = 'right';
cache.simpleStates.towards = 'left';
utils.klass.remove(doc.body, 'snapjs-left');
utils.klass.add(doc.body, 'snapjs-right');
action.translate.easeTo(settings.minPosition);
}
};
this.close = function() {
utils.dispatchEvent('close');
action.translate.easeTo(0);
};
this.expand = function(side){
var to = win.innerWidth || doc.documentElement.clientWidth;
if(side==='left'){
utils.dispatchEvent('expandLeft');
utils.klass.add(doc.body, 'snapjs-expand-left');
utils.klass.remove(doc.body, 'snapjs-expand-right');
} else {
utils.dispatchEvent('expandRight');
utils.klass.add(doc.body, 'snapjs-expand-right');
utils.klass.remove(doc.body, 'snapjs-expand-left');
to *= -1;
}
action.translate.easeTo(to);
};
this.on = function(evt, fn) {
eventList[evt] = fn;
return this;
};
this.off = function(evt) {
if (eventList[evt]) {
eventList[evt] = false;
}
};
this.enable = function() {
utils.dispatchEvent('enable');
action.drag.listen();
};
this.disable = function() {
utils.dispatchEvent('disable');
action.drag.stopListening();
};
this.settings = function(opts){
utils.deepExtend(settings, opts);
};
this.state = function() {
var state,
fromLeft = action.translate.get.matrix(4);
if (fromLeft === settings.maxPosition) {
state = 'left';
} else if (fromLeft === settings.minPosition) {
state = 'right';
} else {
state = 'closed';
}
return {
state: state,
info: cache.simpleStates
};
};
init(userOpts);
};
if ((typeof module !== 'undefined') && module.exports) {
module.exports = Snap;
}
if (typeof ender === 'undefined') {
this.Snap = Snap;
}
if ((typeof define === "function") && define.amd) {
define("snap", [], function() {
return Snap;
});
}
}).call(this, window, document);

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,93 @@
Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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