diff --git a/.gitignore b/.gitignore index d83dce9..0409d2a 100644 --- a/.gitignore +++ b/.gitignore @@ -29,10 +29,12 @@ log data conf profile/* -public/resource/javascript/vue.js /gocron /gocron-node /bin -/packages +/web/public/static +/web/public/index.html +/gocron_package +/gocron-node_package node_modules \ No newline at end of file diff --git a/Dockerfile-release b/Dockerfile-release index 1fa8689..a4b8a9c 100644 --- a/Dockerfile-release +++ b/Dockerfile-release @@ -1,9 +1,11 @@ FROM alpine:latest -COPY gocron /usr/local/gocron +MAINTAINER ouqiang WORKDIR /usr/local/gocron +COPY . . + EXPOSE 5920 ENTRYPOINT ["/usr/local/gocron/gocron", "web"] \ No newline at end of file diff --git a/README.md b/README.md index ba45490..2e3b30e 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ * HTTP任务 > 访问指定的URL地址, 由调度器直接执行, 不依赖任务节点 * 查看任务执行结果日志 -* 任务执行结果通知, 支持邮件、Slack +* 任务执行结果通知, 支持邮件、Slack、Webhook ### 截图 ![流程图](https://raw.githubusercontent.com/ouqiang/gocron/master/assets/screenshot/scheduler.png) diff --git a/cmd/gocron/gocron.go b/cmd/gocron/gocron.go index 1ee6f07..bbfcfa6 100644 --- a/cmd/gocron/gocron.go +++ b/cmd/gocron/gocron.go @@ -13,11 +13,15 @@ import ( "github.com/ouqiang/gocron/internal/modules/setting" "github.com/ouqiang/gocron/internal/routers" "github.com/ouqiang/gocron/internal/service" + "github.com/ouqiang/goutil" "github.com/urfave/cli" "gopkg.in/macaron.v1" ) -var AppVersion = "1.4" +var ( + AppVersion = "1.4" + BuildDate, GitCommit string +) // web服务器默认端口 const DefaultPort = 5920 @@ -26,7 +30,7 @@ func main() { cliApp := cli.NewApp() cliApp.Name = "gocron" cliApp.Usage = "gocron service" - cliApp.Version = AppVersion + cliApp.Version, _ = goutil.FormatAppVersion(AppVersion, GitCommit, BuildDate) cliApp.Commands = getCommands() cliApp.Flags = append(cliApp.Flags, []cli.Flag{}...) cliApp.Run(os.Args) @@ -64,7 +68,7 @@ func runWeb(ctx *cli.Context) { // 设置运行环境 setEnvironment(ctx) // 初始化应用 - app.InitEnv(ctx.App.Version) + app.InitEnv(AppVersion) // 初始化模块 DB、定时任务等 initModule() // 捕捉信号,配置热更新等 diff --git a/cmd/node/node.go b/cmd/node/node.go index 30e8d59..da073ab 100644 --- a/cmd/node/node.go +++ b/cmd/node/node.go @@ -11,9 +11,12 @@ import ( "github.com/ouqiang/gocron/internal/modules/rpc/auth" "github.com/ouqiang/gocron/internal/modules/rpc/server" "github.com/ouqiang/gocron/internal/modules/utils" + "github.com/ouqiang/goutil" ) -var AppVersion = "1.4" +var ( + AppVersion, BuildDate, GitCommit string +) func main() { var serverAddr string @@ -33,7 +36,7 @@ func main() { flag.Parse() if version { - fmt.Println(AppVersion) + goutil.PrintAppVersion(AppVersion, GitCommit, BuildDate) return } diff --git a/internal/models/task_host.go b/internal/models/task_host.go index 5b5be72..b02d1f7 100644 --- a/internal/models/task_host.go +++ b/internal/models/task_host.go @@ -8,9 +8,9 @@ type TaskHost struct { type TaskHostDetail struct { TaskHost `xorm:"extends"` - Name string - Port int - Alias string + Name string `json:"name"` + Port int `json:"port"` + Alias string `json:"alias"` } func (TaskHostDetail) TableName() string { diff --git a/internal/modules/app/app.go b/internal/modules/app/app.go index 6364c5a..c5766a5 100644 --- a/internal/modules/app/app.go +++ b/internal/modules/app/app.go @@ -107,6 +107,9 @@ func GetCurrentVersionId() int { // ToNumberVersion 把字符串版本号a.b.c转换为整数版本号abc func ToNumberVersion(versionString string) int { + if strings.HasPrefix("v", versionString) { + versionString = versionString[1:] + } v := strings.Replace(versionString, ".", "", -1) if len(v) < 3 { v += "0" diff --git a/internal/routers/host/host.go b/internal/routers/host/host.go index 96e7480..1e76050 100644 --- a/internal/routers/host/host.go +++ b/internal/routers/host/host.go @@ -58,7 +58,7 @@ func Detail(ctx *macaron.Context) string { id := ctx.ParamsInt(":id") err := hostModel.Find(id) jsonResp := utils.JsonResponse{} - if err != nil { + if err != nil || hostModel.Id == 0 { logger.Errorf("获取主机详情失败#主机id-%d", id) return jsonResp.Success(utils.SuccessContent, nil) } diff --git a/internal/routers/install/install.go b/internal/routers/install/install.go index 0cb2104..cb6c25d 100644 --- a/internal/routers/install/install.go +++ b/internal/routers/install/install.go @@ -120,7 +120,7 @@ func writeConfig(form InstallForm) error { "api.secret", "", "enable_tls", "false", "concurrency.queue", "500", - "auth_token", fmt.Sprintf("%x", buf), + "auth_secret", fmt.Sprintf("%x", buf), "ca_file", "", "cert_file", "", "key_file", "", diff --git a/internal/routers/manage/manage.go b/internal/routers/manage/manage.go index b712c2b..96c2069 100644 --- a/internal/routers/manage/manage.go +++ b/internal/routers/manage/manage.go @@ -9,20 +9,6 @@ import ( "gopkg.in/macaron.v1" ) -// region slack - -func EditSlack(ctx *macaron.Context) string { - settingModel := new(models.Setting) - slack, err := settingModel.Slack() - jsonResp := utils.JsonResponse{} - if err != nil { - logger.Error(err) - return jsonResp.Success(utils.SuccessContent, nil) - } - - return jsonResp.Success(utils.SuccessContent, slack) -} - func Slack(ctx *macaron.Context) string { settingModel := new(models.Setting) slack, err := settingModel.Slack() @@ -68,19 +54,6 @@ func RemoveSlackChannel(ctx *macaron.Context) string { // endregion // region 邮件 - -func EditMail(ctx *macaron.Context) string { - settingModel := new(models.Setting) - mail, err := settingModel.Mail() - jsonResp := utils.JsonResponse{} - if err != nil { - logger.Error(err) - return jsonResp.Success(utils.SuccessContent, nil) - } - - return jsonResp.Success(utils.SuccessContent, mail) -} - func Mail(ctx *macaron.Context) string { settingModel := new(models.Setting) mail, err := settingModel.Mail() diff --git a/internal/routers/routers.go b/internal/routers/routers.go index 126e9c2..a66fc13 100644 --- a/internal/routers/routers.go +++ b/internal/routers/routers.go @@ -22,17 +22,22 @@ import ( "gopkg.in/macaron.v1" ) -// 静态文件目录 -const staticDir = "web/public" - // URL前缀 const urlPrefix = "/api" +var staticDir = "public" + // 路由注册 func Register(m *macaron.Macaron) { + if macaron.Env != macaron.PROD { + staticDir = "web/public" + } m.SetURLPrefix(urlPrefix) // 所有GET方法,自动注册HEAD方法 m.SetAutoHead(true) + m.Get("/", func(ctx *macaron.Context) { + ctx.ServeFileContent(filepath.Join(app.AppDir, staticDir, "index.html")) + }) // 系统安装 m.Group("/install", func() { m.Post("/store", binding.Bind(install.InstallForm{}), install.Store) @@ -77,15 +82,13 @@ func Register(m *macaron.Macaron) { // 管理 m.Group("/system", func() { m.Group("/slack", func() { - m.Get("/", manage.Slack) - m.Get("/edit", manage.EditSlack) + m.Get("", manage.Slack) m.Post("/url", manage.UpdateSlackUrl) m.Post("/channel", manage.CreateSlackChannel) m.Post("/channel/remove/:id", manage.RemoveSlackChannel) }) m.Group("/mail", func() { - m.Get("/", manage.Mail) - m.Get("/edit", manage.EditMail) + m.Get("", manage.Mail) m.Post("/server", binding.Bind(manage.MailServerForm{}), manage.UpdateMailServer) m.Post("/server/clear", manage.ClearMailServer) m.Post("/user", manage.CreateMailUser) @@ -137,16 +140,16 @@ func RegisterMiddleware(m *macaron.Macaron) { /** 检测应用是否已安装 **/ func checkAppInstall(ctx *macaron.Context) { - installUrl := filepath.Join(urlPrefix, "/install") - if strings.HasPrefix(ctx.Req.URL.Path, installUrl) { + if ctx.Req.URL.Path == "/install" { return } - if !app.Installed { - jsonResp := utils.JsonResponse{} - - data := jsonResp.Failure(utils.AppNotInstall, "应用未安装") - ctx.Write([]byte(data)) + if app.Installed { + return } + jsonResp := utils.JsonResponse{} + + data := jsonResp.Failure(utils.AppNotInstall, "应用未安装") + ctx.Write([]byte(data)) } // IP验证, 通过反向代理访问gocron,需设置Header X-Real-IP才能获取到客户端真实IP @@ -174,10 +177,13 @@ func userAuth(ctx *macaron.Context) { if user.IsLogin(ctx) { return } - uri := ctx.Req.URL.Path - excludePaths := []string{"/install", "/user/login", "/v1"} + uri := strings.TrimRight(ctx.Req.URL.Path, "/") + if strings.HasPrefix(uri, "/v1") { + return + } + excludePaths := []string{"", "/install", "/user/login"} for _, path := range excludePaths { - if strings.HasPrefix(uri, path) { + if uri == path { return } } diff --git a/internal/routers/user/user.go b/internal/routers/user/user.go index 2ac702a..00f36f4 100644 --- a/internal/routers/user/user.go +++ b/internal/routers/user/user.go @@ -14,6 +14,8 @@ import ( "gopkg.in/macaron.v1" ) +const tokenDuration = 4 * time.Hour + // UserForm 用户表单 type UserForm struct { Id int @@ -294,7 +296,7 @@ func IsAdmin(ctx *macaron.Context) bool { func generateToken(user *models.User) (string, error) { token := jwt.New(jwt.SigningMethodHS256) claims := make(jwt.MapClaims) - claims["exp"] = time.Now().Add(1 * time.Hour).Unix() + claims["exp"] = time.Now().Add(tokenDuration).Unix() claims["uid"] = user.Id claims["iat"] = time.Now().Unix() claims["issuer"] = "gocron" diff --git a/internal/service/task.go b/internal/service/task.go index f565578..1ddc4ca 100644 --- a/internal/service/task.go +++ b/internal/service/task.go @@ -236,8 +236,8 @@ func (h *RPCHandler) Run(taskModel models.Task, taskUniqueId int64) (result stri if err != nil { errorMessage = err.Error() } - outputMessage := fmt.Sprintf("主机: [%s-%s]\n%s\n%s\n\n", - th.Alias, th.Name, errorMessage, output, + outputMessage := fmt.Sprintf("主机: [%s-%s:%d]\n%s\n%s\n\n", + th.Alias, th.Name, th.Port, errorMessage, output, ) resultChan <- TaskResult{Err: err, Result: outputMessage} }(taskHost) @@ -268,7 +268,7 @@ func createTaskLog(taskModel models.Task, status models.Status) (int64, error) { if taskModel.Protocol == models.TaskRPC { aggregationHost := "" for _, host := range taskModel.Hosts { - aggregationHost += fmt.Sprintf("%s-%s
", host.Alias, host.Name) + aggregationHost += fmt.Sprintf("%s-%s:%d
", host.Alias, host.Name, &host) } taskLogModel.Hostname = aggregationHost } diff --git a/makefile b/makefile index c09b930..d073651 100644 --- a/makefile +++ b/makefile @@ -37,6 +37,15 @@ test-race: enable-race test enable-race: $(eval RACE = -race) +.PHONY: package +package: build-vue + bash ./package.sh + +.PHONY: build-vue +build-vue: + cd web/vue && yarn run build + cp -r web/vue/dist/ web/public/ + .PHONY: clean clean: rm bin/gocron diff --git a/makefile.cross-compiles b/makefile.cross-compiles deleted file mode 100644 index 8ebcab1..0000000 --- a/makefile.cross-compiles +++ /dev/null @@ -1,35 +0,0 @@ - -LDFLAGS = -w -s -X main.AppVersion=${VERSION} - - -default: build - -.PHONY: build -build: gocron node - - -.PHONY: gocron -gocron: - - env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o ./gocron_darwin_amd64/gocron ./cmd/gocron - env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o ./gocron_linux_amd64/gocron ./cmd/gocron - env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o ./gocron_windows_amd64/gocron.exe ./cmd/gocron - -.PHONY: node -node: - - env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o ./gocron-node_darwin_amd64/gocron-node ./cmd/node - env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o ./gocron-node_linux_amd64/gocron-node ./cmd/node - env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o ./gocron-node_windows_amd64/gocron-node.exe ./cmd/node - - -clean: - - rm -rf gocron_darwin_amd64 - rm -rf gocron_linux_amd64 - rm -rf gocron_windows_amd64 - - rm -rf gocron-node_darwin_amd64 - rm -rf gocron-node_linux_amd64 - rm -rf gocron-node_windows_amd64 - diff --git a/package.sh b/package.sh index 4b224fc..12e24de 100644 --- a/package.sh +++ b/package.sh @@ -1,114 +1,214 @@ #!/usr/bin/env bash - -#set -x -u -# 构建应用, 生成压缩包 gocron.zip或gocron.tar.gz -# ./package.sh -v 1.4 - + +# 生成压缩包 xx.tar.gz或xx.zip +# 使用 ./package.sh -a amd664 -p linux -v v2.0.0 + +# 任何命令返回非0值退出 +set -o errexit +# 使用未定义的变量退出 +set -o nounset +# 管道中任一命令执行失败退出 +set -o pipefail + +# 二进制文件名 +BINARY_NAME='' +# main函数所在文件 +MAIN_FILE="" + +# 提取git最新tag作为应用版本 VERSION='' -GOCRON_APP_NAME='gocron' -GOCRON_NODE_APP_NAME='gocron-node' -PACKAGE_DIR='./packages' - - -# 用法 -usage() { - echo 'usage: ./package.sh -v version' +# 最新git commit id +GIT_COMMIT_ID='' + +# 外部输入的系统 +INPUT_OS=() +# 外部输入的架构 +INPUT_ARCH=() +# 未指定OS,默认值 +DEFAULT_OS='linux' +# 未指定ARCH,默认值 +DEFAULT_ARCH='amd64' +# 支持的系统 +SUPPORT_OS=(linux darwin windows) +# 支持的架构 +SUPPORT_ARCH=(386 amd64) + +# 编译参数 +LDFLAGS='' +# 需要打包的文件 +INCLUDE_FILE=() +# 打包文件生成目录 +PACKAGE_DIR='' +# 编译文件生成目录 +BUILD_DIR='' + +# 获取git 最新tag name +git_latest_tag() { + local COMMIT_ID="" + local TAG_NAME="" + COMMIT_ID=`git rev-list --tags --max-count=1` + TAG_NAME=`git describe --tags "${COMMIT_ID}"` + + echo ${TAG_NAME} } - + +# 获取git 最新commit id +git_latest_commit() { + echo "$(git rev-parse --short HEAD)" +} + +# 打印信息 +print_message() { + echo "$1" +} + +# 打印信息后推出 +print_message_and_exit() { + if [[ -n $1 ]]; then + print_message "$1" + fi + exit 1 +} + +# 设置系统、CPU架构 +set_os_arch() { + if [[ ${#INPUT_OS[@]} = 0 ]];then + INPUT_OS=("${DEFAULT_OS}") + fi + + if [[ ${#INPUT_ARCH[@]} = 0 ]];then + INPUT_ARCH=("${DEFAULT_ARCH}") + fi + + for OS in "${INPUT_OS[@]}"; do + if [[ ! "${SUPPORT_OS[*]}" =~ ${OS} ]]; then + print_message_and_exit "不支持的系统${OS}" + fi + done + + for ARCH in "${INPUT_ARCH[@]}";do + if [[ ! "${SUPPORT_ARCH[*]}" =~ ${ARCH} ]]; then + print_message_and_exit "不支持的CPU架构${ARCH}" + fi + done +} + # 初始化 init() { - rm -rf ${PACKAGE_DIR} + set_os_arch + + if [[ -z "${VERSION}" ]];then + VERSION=`git_latest_tag` + fi + GIT_COMMIT_ID=`git_latest_commit` + LDFLAGS="-w -X 'main.AppVersion=${VERSION}' -X 'main.BuildDate=`date '+%Y-%m-%d %H:%M:%S'`' -X 'main.GitCommit=${GIT_COMMIT_ID}'" + + PACKAGE_DIR=${BINARY_NAME}_package + BUILD_DIR=${BINARY_NAME}_build + + if [[ -d ${BUILD_DIR} ]];then + rm -rf ${BUILD_DIR} + fi + if [[ -d ${PACKAGE_DIR} ]];then + rm -rf ${PACKAGE_DIR} + fi + + mkdir -p ${BUILD_DIR} mkdir -p ${PACKAGE_DIR} } - -# 构建应用 + +# 编译 build() { - make -f makefile.cross-compiles VERSION=${VERSION} - - if [[ $? -ne 0 ]];then - echo 'make error' - exit 1 - fi + local FILENAME='' + for OS in "${INPUT_OS[@]}";do + for ARCH in "${INPUT_ARCH[@]}";do + if [[ "${OS}" = "windows" ]];then + FILENAME=${BINARY_NAME}.exe + else + FILENAME=${BINARY_NAME} + fi + env CGO_ENABLED=0 GOOS=${OS} GOARCH=${ARCH} go build -ldflags "${LDFLAGS}" -o ${BUILD_DIR}/${BINARY_NAME}-${OS}-${ARCH}/${FILENAME} ${MAIN_FILE} + done + done } - + +# 打包 +package_binary() { + cd ${BUILD_DIR} + + for OS in "${INPUT_OS[@]}";do + for ARCH in "${INPUT_ARCH[@]}";do + package_file ${BINARY_NAME}-${OS}-${ARCH} + if [[ "${OS}" = "windows" ]];then + zip -rq ../${PACKAGE_DIR}/${BINARY_NAME}-${VERSION}-${OS}-${ARCH}.zip ${BINARY_NAME}-${OS}-${ARCH} + else + tar czf ../${PACKAGE_DIR}/${BINARY_NAME}-${VERSION}-${OS}-${ARCH}.tar.gz ${BINARY_NAME}-${OS}-${ARCH} + fi + done + done + + cd ${OLDPWD} +} + +# 打包文件 +package_file() { + if [[ "${#INCLUDE_FILE[@]}" = "0" ]];then + return + fi + for item in "${INCLUDE_FILE[@]}"; do + cp -r ../${item} $1 + done +} + # 清理 clean() { - make -f makefile.cross-compiles clean -} - -# 打包gocron -package_gocron() { - local OS=$1 - local GOCRON_COMPRESS_FILE='' - local PLATFORM_NAME=${GOCRON_APP_NAME}_${OS}_amd64 - - if [[ ! -d ${PACKAGE_DIR}/${PLATFORM_NAME} ]];then - mkdir ${PACKAGE_DIR}/${PLATFORM_NAME} - fi - - for file in web LICENSE README.md Dockerfile-release; do - cp -r ${file} ${PLATFORM_NAME} - done - - if [[ ${OS} = 'windows' ]];then - GOCRON_COMPRESS_FILE=${GOCRON_APP_NAME}-v${VERSION}-${OS}-amd64.zip - zip -rq ${PACKAGE_DIR}/${PLATFORM_NAME}/${GOCRON_COMPRESS_FILE} ${PLATFORM_NAME} - else - GOCRON_COMPRESS_FILE=${GOCRON_APP_NAME}-v${VERSION}-${OS}-amd64.tar.gz - tar czf ${PACKAGE_DIR}/${PLATFORM_NAME}/${GOCRON_COMPRESS_FILE} ${PLATFORM_NAME} + if [[ -d ${BUILD_DIR} ]];then + rm -rf ${BUILD_DIR} fi } - -# 打包gocron-node -package_gocron_node() { - local OS=$1 - local GOCRON_NODE_COMPRESS_FILE='' - local PLATFORM_NAME=${GOCRON_NODE_APP_NAME}_${OS}_amd64 - - if [[ ! -d ${PACKAGE_DIR}/${PLATFORM_NAME} ]];then - mkdir ${PACKAGE_DIR}/${PLATFORM_NAME} - fi - - if [[ ${OS} = 'windows' ]];then - GOCRON_NODE_COMPRESS_FILE=${GOCRON_NODE_APP_NAME}-v${VERSION}-${OS}-amd64.zip - zip -rq ${PACKAGE_DIR}/${PLATFORM_NAME}/${GOCRON_NODE_COMPRESS_FILE} ${PLATFORM_NAME} - else - GOCRON_NODE_COMPRESS_FILE=${GOCRON_NODE_APP_NAME}-v${VERSION}-${OS}-amd64.tar.gz - tar czf ${PACKAGE_DIR}/${PLATFORM_NAME}/${GOCRON_NODE_COMPRESS_FILE} ${PLATFORM_NAME} - fi -} - - -package_multi() { - for os in darwin linux windows; do - package_gocron ${os} - package_gocron_node ${os} - done -} - -while getopts "v:" OPT; do - case ${OPT} in - v) VERSION=${OPTARG} - ;; - esac -done - -if [[ -z ${VERSION} ]]; then - usage - exit 1 -fi - - + +# 运行 run() { init build - package_multi + package_binary clean } - -run +package_gocron() { + BINARY_NAME='gocron' + MAIN_FILE="./cmd/gocron/gocron.go" + INCLUDE_FILE=(Dockerfile-release README.md web/public) + run +} +package_gocron_node() { + BINARY_NAME='gocron-node' + MAIN_FILE="./cmd/node/node.go" + INCLUDE_FILE=() + + run +} + +# p 平台 linux darwin windows +# a 架构 386 amd64 +# v 版本号 默认取git最新tag +while getopts "p:a:v:" OPT; +do + case ${OPT} in + p) IPS=',' read -r -a INPUT_OS <<< "${OPTARG}" + ;; + a) IPS=',' read -r -a INPUT_ARCH <<< "${OPTARG}" + ;; + v) VERSION=$OPTARG + ;; + *) + ;; + esac +done + +package_gocron +package_gocron_node diff --git a/web/public/resource/css/framework.css b/web/public/resource/css/framework.css deleted file mode 100644 index fb09e20..0000000 --- a/web/public/resource/css/framework.css +++ /dev/null @@ -1,17470 +0,0 @@ -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.bigcontainer{ - margin:0 auto; -} -.bigcontainer:before,.container:before, -.bigcontainer:after, .container:after { - display: table; - content: " "; -} -.bigcontainer:after, .container:after { - clear: both; -} - -.bigcontainer:before, .container:before, -.bigcontainer:after, .container:after { - display: table; - content: " "; -} - -.bigcontainer:after, .container:after { - clear: both; -} -@media (min-width: 992px) { - .container { - width: 970px; - } - .bigcontainer{ - width:1000px; -} -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -.bigcontainer{ - width:1200px; -} -} -/******************************* - Breadcrumb -*******************************/ -.ui.breadcrumb { - margin: 1em 0em; - display: inline-block; - vertical-align: middle; -} - -.ui.breadcrumb:first-child { - margin-top: 0em; -} - -.ui.breadcrumb:last-child { - margin-bottom: 0em; -} - -/******************************* - Content -*******************************/ - -.ui.breadcrumb .divider { - display: inline-block; - opacity: 0.5; - margin: 0em 0.15em 0em; - font-size: 1em; - color: rgba(0, 0, 0, 0.3); -} - -.ui.breadcrumb a.section { - cursor: pointer; -} - -.ui.breadcrumb .section { - display: inline-block; - margin: 0em; - padding: 0em; -} - -/* Loose Coupling */ - -.ui.breadcrumb.segment { - display: inline-block; - padding: 0.5em 1em; -} - -/******************************* - States -*******************************/ - -.ui.breadcrumb .active.section { - font-weight: bold; -} - -/******************************* - Variations -*******************************/ - -.ui.small.breadcrumb { - font-size: 0.75em; -} - -.ui.large.breadcrumb { - font-size: 1.1em; -} - -.ui.huge.breadcrumb { - font-size: 1.3em; -} -/* - * # Semantic - Form - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Standard -*******************************/ - -/*-------------------- - Form ----------------------*/ - -.ui.form { - position: relative; - max-width: 100%; -} - -.ui.form :first-child { - margin-top: 0em; -} - -.ui.form :last-child { - margin-bottom: 0em; -} - -/*-------------------- - Content ----------------------*/ - -.ui.form > p { - margin: 1em 0; -} - -/*-------------------- - Field ----------------------*/ - -.ui.form .field { - clear: both; - margin: 0em 0em 1em; -} - -/*-------------------- - Labels ----------------------*/ - -.ui.form .field > label { - margin: 0em 0em 0.3em; - display: block; - color: #555555; - font-size: 0.875em; -} - -/*-------------------- - Standard Inputs ----------------------*/ - -.ui.form textarea, -.ui.form input[type="text"], -.ui.form input[type="email"], -.ui.form input[type="date"], -.ui.form input[type="password"], -.ui.form input[type="number"], -.ui.form input[type="tel"], -.ui.form .ui.input { - width: 100%; -} - -.ui.form textarea, -.ui.form input[type="text"], -.ui.form input[type="email"], -.ui.form input[type="date"], -.ui.form input[type="password"], -.ui.form input[type="number"], -.ui.form input[type="tel"] { - margin: 0em; - padding: 0.85em 1.2em; - font-size: 0.875em; - background-color: #FFFFFF; - border: 1px solid rgba(0, 0, 0, 0.15); - outline: none; - color: rgba(0, 0, 0, 0.7); - border-radius: 0.3125em; - -webkit-transition: background-color 0.3s ease-out, -webkit-box-shadow 0.2s ease, border-color 0.2s ease; - transition: background-color 0.3s ease-out, box-shadow 0.2s ease, border-color 0.2s ease; - -webkit-box-shadow: 0em 0em 0em 0em rgba(0, 0, 0, 0.3) inset; - box-shadow: 0em 0em 0em 0em rgba(0, 0, 0, 0.3) inset; - -webkit-appearance: none; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.textarea, -.ui.form textarea { - line-height: 1.33; - min-height: 8em; - max-height: 24em; - resize: vertical; -} - -.ui.form textarea, -.ui.form input[type="checkbox"] { - vertical-align: top; -} - -/*-------------------- - Dividers ----------------------*/ - -.ui.form .divider { - clear: both; - margin: 1em 0em; -} - -/*-------------------- - Types of Messages ----------------------*/ - -.ui.form .info.message, -.ui.form .warning.message, -.ui.form .error.message { - display: none; -} - -/* Assumptions */ - -.ui.form .message:first-child { - margin-top: 0px; -} - -/*-------------------- - Validation Prompt ----------------------*/ - -.ui.form .field .prompt.label { - white-space: nowrap; -} - -.ui.form .inline.field .prompt { - margin-top: 0em; - margin-left: 1em; -} - -.ui.form .inline.field .prompt:before { - margin-top: -0.3em; - bottom: auto; - right: auto; - top: 50%; - left: 0em; -} - -/******************************* - States -*******************************/ - -/*-------------------- - Focus ----------------------*/ - -.ui.form input[type="text"]:focus, -.ui.form input[type="email"]:focus, -.ui.form input[type="date"]:focus, -.ui.form input[type="password"]:focus, -.ui.form input[type="number"]:focus, -.ui.form input[type="tel"]:focus, -.ui.form textarea:focus { - color: rgba(0, 0, 0, 0.85); - border-color: rgba(0, 0, 0, 0.2); - border-bottom-left-radius: 0; - border-top-left-radius: 0; - -webkit-appearance: none; - -webkit-box-shadow: 0.3em 0em 0em 0em rgba(0, 0, 0, 0.2) inset; - box-shadow: 0.3em 0em 0em 0em rgba(0, 0, 0, 0.2) inset; -} - -/*-------------------- - Error ----------------------*/ - -/* On Form */ - -.ui.form.warning .warning.message { - display: block; -} - -/*-------------------- - Warning ----------------------*/ - -/* On Form */ - -.ui.form.error .error.message { - display: block; -} - -/* On Field(s) */ - -.ui.form .fields.error .field label, -.ui.form .field.error label, -.ui.form .fields.error .field .input, -.ui.form .field.error .input { - color: #D95C5C; -} - -.ui.form .fields.error .field .corner.label, -.ui.form .field.error .corner.label { - border-color: #D95C5C; - color: #FFFFFF; -} - -.ui.form .fields.error .field textarea, -.ui.form .fields.error .field input[type="text"], -.ui.form .fields.error .field input[type="email"], -.ui.form .fields.error .field input[type="date"], -.ui.form .fields.error .field input[type="password"], -.ui.form .fields.error .field input[type="number"], -.ui.form .fields.error .field input[type="tel"], -.ui.form .field.error textarea, -.ui.form .field.error input[type="text"], -.ui.form .field.error input[type="email"], -.ui.form .field.error input[type="date"], -.ui.form .field.error input[type="password"], -.ui.form .field.error input[type="number"], -.ui.form .field.error input[type="tel"] { - background-color: #FFFAFA; - border-color: #E7BEBE; - border-left: none; - color: #D95C5C; - padding-left: 1.2em; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - -webkit-box-shadow: 0.3em 0em 0em 0em #D95C5C inset; - box-shadow: 0.3em 0em 0em 0em #D95C5C inset; -} - -.ui.form .field.error textarea:focus, -.ui.form .field.error input[type="text"]:focus, -.ui.form .field.error input[type="email"]:focus, -.ui.form .field.error input[type="date"]:focus, -.ui.form .field.error input[type="password"]:focus, -.ui.form .field.error input[type="number"]:focus, -.ui.form .field.error input[type="tel"]:focus { - border-color: #ff5050; - color: #ff5050; - -webkit-appearance: none; - -webkit-box-shadow: 0.3em 0em 0em 0em #FF5050 inset; - box-shadow: 0.3em 0em 0em 0em #FF5050 inset; -} - -/*-------------------- - Empty (Placeholder) ----------------------*/ - -/* browsers require these rules separate */ - -.ui.form ::-webkit-input-placeholder { - color: #AAAAAA; -} - -.ui.form :focus::-webkit-input-placeholder { - color: #999999; -} - -/* Error Placeholder */ - -.ui.form .error ::-webkit-input-placeholder { - color: rgba(255, 80, 80, 0.4); -} - -.ui.form .error :focus::-webkit-input-placeholder { - color: rgba(255, 80, 80, 0.7); -} - -/*-------------------- - Disabled ----------------------*/ - -.ui.form .field :disabled, -.ui.form .field.disabled { - opacity: 0.5; -} - -.ui.form .field.disabled label { - opacity: 0.5; -} - -.ui.form .field.disabled :disabled { - opacity: 1; -} - -/*-------------------- - Loading State ----------------------*/ - -/* On Form */ - -.ui.form.loading { - position: relative; -} - -.ui.form.loading:after { - position: absolute; - top: 0%; - left: 0%; - content: ''; - width: 100%; - height: 100%; - background: rgba(255, 255, 255, 0.8) url(../images/loader-large.gif) no-repeat 50% 50%; - visibility: visible; -} - -/******************************* - Variations -*******************************/ - -/*-------------------- - Fluid Width ----------------------*/ - -.ui.form.fluid { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -/*-------------------------- - Input w/ attached Button ----------------------------*/ - -.ui.form input.attached { - width: auto; -} - -/*-------------------- - Date Input ----------------------*/ - -.ui.form .date.field > label { - position: relative; -} - -.ui.form .date.field > label:after { - position: absolute; - top: 2em; - right: 0.5em; - font-family: 'Icons'; - content: '\f133'; - font-size: 1.2em; - font-weight: normal; - color: #CCCCCC; -} - -/*-------------------- - Inverted Colors ----------------------*/ - -.ui.inverted.form label { - color: #FFFFFF; -} - -.ui.inverted.form .field.error textarea, -.ui.inverted.form .field.error input[type="text"], -.ui.inverted.form .field.error input[type="email"], -.ui.inverted.form .field.error input[type="date"], -.ui.inverted.form .field.error input[type="password"], -.ui.inverted.form .field.error input[type="number"], -.ui.inverted.form .field.error input[type="tel"] { - background-color: #FFCCCC; -} - -/*-------------------- - Field Groups ----------------------*/ - -/* Grouped Vertically */ - -.ui.form .grouped.fields { - margin: 0em 0em 1em; -} - -.ui.form .grouped.fields .field { - display: block; - float: none; - margin: 0.5em 0em; - padding: 0em; -} - -/*-------------------- - Fields ----------------------*/ - -/* Split fields */ - -.ui.form .fields { - clear: both; -} - -.ui.form .fields:after { - content: ' '; - display: block; - clear: both; - visibility: hidden; - line-height: 0; - height: 0; -} - -.ui.form .fields > .field { - clear: none; - float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.form .fields > .field:first-child { - border-left: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -/* Other Combinations */ - -.ui.form .two.fields > .fields, -.ui.form .two.fields > .field { - width: 50%; - padding-left: 1%; - padding-right: 1%; -} - -.ui.form .three.fields > .fields, -.ui.form .three.fields > .field { - width: 33.333%; - padding-left: 1%; - padding-right: 1%; -} - -.ui.form .four.fields > .fields, -.ui.form .four.fields > .field { - width: 25%; - padding-left: 1%; - padding-right: 1%; -} - -.ui.form .five.fields > .fields, -.ui.form .five.fields > .field { - width: 20%; - padding-left: 1%; - padding-right: 1%; -} - -.ui.form .fields .field:first-child { - padding-left: 0%; -} - -.ui.form .fields .field:last-child { - padding-right: 0%; -} - -/*-------------------- - Inline Fields ----------------------*/ - -.ui.form .inline.fields .field { - min-height: 1.3em; - margin-right: 0.5em; -} - -.ui.form .inline.fields .field > label, -.ui.form .inline.fields .field > p, -.ui.form .inline.fields .field > input, -.ui.form .inline.field > label, -.ui.form .inline.field > p, -.ui.form .inline.field > input { - display: inline-block; - width: auto; - margin-top: 0em; - margin-bottom: 0em; - vertical-align: middle; -} - -.ui.form .inline.fields .field > input, -.ui.form .inline.field > input { - font-size: 0.875em; -} - -.ui.form .inline.fields .field > :first-child, -.ui.form .inline.field > :first-child { - margin: 0em 0.5em 0em 0em; -} - -.ui.form .inline.fields .field > :only-child, -.ui.form .inline.field > :only-child { - margin: 0em; -} - -/*-------------------- - Sizes ----------------------*/ - -/* Standard */ - -.ui.small.form { - font-size: 0.875em; -} - -.ui.small.form textarea, -.ui.small.form input[type="text"], -.ui.small.form input[type="email"], -.ui.small.form input[type="date"], -.ui.small.form input[type="password"], -.ui.small.form input[type="number"], -.ui.small.form input[type="tel"], -.ui.small.form label { - font-size: 1em; -} - -/* Large */ - -.ui.large.form { - font-size: 1.125em; -} -/* - * # Semantic - Grid - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Grid -*******************************/ - -.ui.grid { - display: block; - text-align: left; - font-size: 0em; - margin: 0% -1.5%; - padding: 0%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -body > .ui.grid { - margin-left: 0% !important; - margin-right: 0% !important; -} - -.ui.grid:after, -.ui.row:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -/*------------------- - Columns ---------------------*/ - -.ui.grid > .column, -.ui.grid > .row > .column { - display: inline-block; - text-align: left; - font-size: 1rem; - padding-left: 1.5%; - padding-right: 1.5%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - vertical-align: top; -} - -/*------------------- - Rows ---------------------*/ - -.ui.grid > .row { - display: block; - width: 100% !important; - margin-top: 1.5%; - padding: 1.5% 0% 0%; - font-size: 0rem; -} - -.ui.grid > .row:first-child { - padding-top: 0rem; - margin-top: 0rem; -} - -/*------------------- - Content ---------------------*/ - -.ui.grid > .row > img, -.ui.grid > .row > .column > img { - max-width: 100%; -} - -.ui.grid .column > .ui.segment:only-child { - margin: 0em; -} - -/******************************* - Variations -*******************************/ - -/*----------------------- - Page Grid (Responsive) --------------------------*/ - -.ui.page.grid { - min-width: 320px; - margin-left: 0%; - margin-right: 0%; -} - -@media only screen and (max-width: 998px) { - .ui.page.grid { - padding: 0% 4%; - } -} - -@media only screen and (min-width: 998px) { - .ui.page.grid { - padding: 0% 8%; - } -} - -@media only screen and (min-width: 1500px) { - .ui.page.grid { - padding: 0% 13%; - } -} - -@media only screen and (min-width: 1750px) { - .ui.page.grid { - padding: 0% 18%; - } -} - -@media only screen and (min-width: 2000px) { - .ui.page.grid { - padding: 0% 23%; - } -} - -/*------------------- - Column Width ---------------------*/ - -/* Sizing Combinations */ - -.ui.grid > .row > .one.wide.column, -.ui.grid > .one.wide.column { - width: 6.25%; -} - -.ui.grid > .row > .two.wide.column, -.ui.grid > .two.wide.column { - width: 12.5%; -} - -.ui.grid > .row > .three.wide.column, -.ui.grid > .three.wide.column { - width: 18.75%; -} - -.ui.grid > .row > .four.wide.column, -.ui.grid > .four.wide.column { - width: 25%; -} - -.ui.grid > .row > .five.wide.column, -.ui.grid > .five.wide.column { - width: 31.25%; -} - -.ui.grid > .row > .six.wide.column, -.ui.grid > .six.wide.column { - width: 37.5%; -} - -.ui.grid > .row > .seven.wide.column, -.ui.grid > .seven.wide.column { - width: 43.75%; -} - -.ui.grid > .row > .eight.wide.column, -.ui.grid > .eight.wide.column { - width: 50%; -} - -.ui.grid > .row > .nine.wide.column, -.ui.grid > .nine.wide.column { - width: 56.25%; -} - -.ui.grid > .row > .ten.wide.column, -.ui.grid > .ten.wide.column { - width: 62.5%; -} - -.ui.grid > .row > .eleven.wide.column, -.ui.grid > .eleven.wide.column { - width: 68.75%; -} - -.ui.grid > .row > .twelve.wide.column, -.ui.grid > .twelve.wide.column { - width: 75%; -} - -.ui.grid > .row > .thirteen.wide.column, -.ui.grid > .thirteen.wide.column { - width: 81.25%; -} - -.ui.grid > .row > .fourteen.wide.column, -.ui.grid > .fourteen.wide.column { - width: 87.5%; -} - -.ui.grid > .row > .fifteen.wide.column, -.ui.grid > .fifteen.wide.column { - width: 93.75%; -} - -.ui.grid > .row > .sixteen.wide.column, -.ui.grid > .sixteen.wide.column { - width: 100%; -} - -/*------------------- - Column Count ---------------------*/ - -/* Standard */ - -.ui.grid > .column, -.ui.grid > .row > .column { - width: 6.25%; -} - -/* Assume full width with one column */ - -.ui.one.column.grid > .row > .column, -.ui.one.column.grid > .column, -.ui.grid > .one.column.row > .column { - width: 100%; -} - -.ui.two.column.grid > .row > .column, -.ui.two.column.grid > .column, -.ui.grid > .two.column.row > .column { - width: 50%; -} - -.ui.three.column.grid > .row > .column, -.ui.three.column.grid > .column, -.ui.grid > .three.column.row > .column { - width: 33.3333%; -} - -.ui.four.column.grid > .row > .column, -.ui.four.column.grid > .column, -.ui.grid > .four.column.row > .column { - width: 25%; -} - -.ui.five.column.grid > .row > .column, -.ui.five.column.grid > .column, -.ui.grid > .five.column.row > .column { - width: 20%; -} - -.ui.six.column.grid > .row > .column, -.ui.six.column.grid > .column, -.ui.grid > .six.column.row > .column { - width: 16.66667%; -} - -.ui.seven.column.grid > .row > .column, -.ui.seven.column.grid > .column, -.ui.grid > .seven.column.row > .column { - width: 14.2857%; -} - -.ui.eight.column.grid > .row > .column, -.ui.eight.column.grid > .column, -.ui.grid > .eight.column.row > .column { - width: 12.5%; -} - -.ui.nine.column.grid > .row > .column, -.ui.nine.column.grid > .column, -.ui.grid > .nine.column.row > .column { - width: 11.1111%; -} - -.ui.ten.column.grid > .row > .column, -.ui.ten.column.grid > .column, -.ui.grid > .ten.column.row > .column { - width: 10%; -} - -.ui.eleven.column.grid > .row > .column, -.ui.eleven.column.grid > .column, -.ui.grid > .eleven.column.row > .column { - width: 9.0909%; -} - -.ui.twelve.column.grid > .row > .column, -.ui.twelve.column.grid > .column, -.ui.grid > .twelve.column.row > .column { - width: 8.3333%; -} - -.ui.thirteen.column.grid > .row > .column, -.ui.thirteen.column.grid > .column, -.ui.grid > .thirteen.column.row > .column { - width: 7.6923%; -} - -.ui.fourteen.column.grid > .row > .column, -.ui.fourteen.column.grid > .column, -.ui.grid > .fourteen.column.row > .column { - width: 7.1428%; -} - -.ui.fifteen.column.grid > .row > .column, -.ui.fifteen.column.grid > .column, -.ui.grid > .fifteen.column.row > .column { - width: 6.6666%; -} - -.ui.sixteen.column.grid > .row > .column, -.ui.sixteen.column.grid > .column, -.ui.grid > .sixteen.column.row > .column { - width: 6.25%; -} - -/* Assume full width with one column */ - -.ui.grid > .column:only-child, -.ui.grid > .row > .column:only-child { - width: 100%; -} - -/*---------------------- - Relaxed ------------------------*/ - -.ui.relaxed.grid { - margin: 0% -2.5%; -} - -.ui.relaxed.grid > .column, -.ui.relaxed.grid > .row > .column { - padding-left: 2.5%; - padding-right: 2.5%; -} - -/*---------------------- - "Floated" ------------------------*/ - -.ui.grid .left.floated.column { - float: left; -} - -.ui.grid .right.floated.column { - float: right; -} - -/*---------------------- - Divided ------------------------*/ - -.ui.divided.grid, -.ui.divided.grid > .row { - display: table; - width: 100%; - margin-left: 0% !important; - margin-right: 0% !important; -} - -.ui.divided.grid > .column:not(.row), -.ui.divided.grid > .row > .column { - display: table-cell; - -webkit-box-shadow: -1px 0px 0px 0px rgba(0, 0, 0, 0.1), -2px 0px 0px 0px rgba(255, 255, 255, 0.8); - box-shadow: -1px 0px 0px 0px rgba(0, 0, 0, 0.1), -2px 0px 0px 0px rgba(255, 255, 255, 0.8); -} - -.ui.divided.grid > .column.row { - display: table; -} - -.ui.divided.grid > .column:first-child, -.ui.divided.grid > .row > .column:first-child { - -webkit-box-shadow: none; - box-shadow: none; -} - -/* Vertically Divided */ - -.ui.vertically.divided.grid > .row { - -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1), 0px -2px 0px 0px rgba(255, 255, 255, 0.8) !important; - box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1), 0px -2px 0px 0px rgba(255, 255, 255, 0.8) !important; -} - -.ui.vertically.divided.grid > .row > .column, -.ui.vertically.divided.grid > .column:not(.row), -.ui.vertically.divided.grid > .row:first-child { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -/*---------------------- - Celled ------------------------*/ - -.ui.celled.grid { - display: table; - width: 100%; - margin-left: 0% !important; - margin-right: 0% !important; - -webkit-box-shadow: 0px 0px 0px 1px #DFDFDF; - box-shadow: 0px 0px 0px 1px #DFDFDF; -} - -.ui.celled.grid > .row, -.ui.celled.grid > .column.row, -.ui.celled.grid > .column.row:first-child { - display: table; - width: 100%; - margin-top: 0em; - padding-top: 0em; - -webkit-box-shadow: 0px -1px 0px 0px #dfdfdf; - box-shadow: 0px -1px 0px 0px #dfdfdf; -} - -.ui.celled.grid > .column:not(.row), -.ui.celled.grid > .row > .column { - display: table-cell; - padding: 0.75em; - -webkit-box-shadow: -1px 0px 0px 0px #dfdfdf; - box-shadow: -1px 0px 0px 0px #dfdfdf; -} - -.ui.celled.grid > .column:first-child, -.ui.celled.grid > .row > .column:first-child { - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.celled.page.grid { - -webkit-box-shadow: none; - box-shadow: none; -} - -/*---------------------- - Horizontally Centered ------------------------*/ - -/* Vertical Centered */ - -.ui.left.aligned.grid, -.ui.left.aligned.grid > .row > .column, -.ui.left.aligned.grid > .column, -.ui.grid .left.aligned.column, -.ui.grid > .left.aligned.row > .column { - text-align: left; -} - -.ui.center.aligned.grid, -.ui.center.aligned.grid > .row > .column, -.ui.center.aligned.grid > .column, -.ui.grid .center.aligned.column, -.ui.grid > .center.aligned.row > .column { - text-align: center; -} - -.ui.right.aligned.grid, -.ui.right.aligned.grid > .row > .column, -.ui.right.aligned.grid > .column, -.ui.grid .right.aligned.column, -.ui.grid > .right.aligned.row > .column { - text-align: right; -} - -/*---------------------- - Vertically Centered ------------------------*/ - -/* Vertical Centered */ - -.ui.top.aligned.grid, -.ui.top.aligned.grid > .row > .column, -.ui.top.aligned.grid > .column, -.ui.grid .top.aligned.column, -.ui.grid > .top.aligned.row > .column { - vertical-align: top; -} - -.ui.middle.aligned.grid, -.ui.middle.aligned.grid > .row > .column, -.ui.middle.aligned.grid > .column, -.ui.grid .middle.aligned.column, -.ui.grid > .middle.aligned.row > .column { - vertical-align: middle; -} - -.ui.bottom.aligned.grid, -.ui.bottom.aligned.grid > .row > .column, -.ui.bottom.aligned.grid > .column, -.ui.grid .bottom.aligned.column, -.ui.grid > .bottom.aligned.row > .column { - vertical-align: bottom; -} - -/*---------------------- - Equal Height Columns ------------------------*/ - -.ui.grid > .equal.height.row { - display: table; - width: 100%; -} - -.ui.grid > .equal.height.row > .column { - display: table-cell; -} - -/*---------------------- - Only (Device) ------------------------*/ - -/* Mobile Only */ - -@media only screen and (max-width: 768px) { - .ui.mobile.only.grid, - .ui.grid > .mobile.only.row { - display: block !important; - } - - .ui.grid > .row > .mobile.only.column { - display: inline-block !important; - } - - .ui.divided.mobile.only.grid, - .ui.celled.mobile.only.grid, - .ui.divided.mobile.only.grid .row, - .ui.celled.mobile.only.grid .row, - .ui.divided.grid .mobile.only.row, - .ui.celled.grid .mobile.only.row, - .ui.grid .mobile.only.equal.height.row, - .ui.mobile.only.grid .equal.height.row { - display: table !important; - } - - .ui.divided.grid > .row > .mobile.only.column, - .ui.celled.grid > .row > .mobile.only.column, - .ui.divided.mobile.only.grid > .row > .column, - .ui.celled.mobile.only.grid > .row > .column, - .ui.divided.mobile.only.grid > .column, - .ui.celled.mobile.only.grid > .column { - display: table-cell !important; - } -} - -@media only screen and (min-width: 768px) { - .ui.mobile.only.grid, - .ui.grid > .mobile.only.row, - .ui.grid > .mobile.only.column, - .ui.grid > .row > .mobile.only.column { - display: none; - } -} - -/* Tablet Only */ - -@media only screen and (min-width: 768px) and (max-width: 998px) { - .ui.tablet.only.grid, - .ui.grid > .tablet.only.row { - display: block !important; - } - - .ui.grid > .row > .tablet.only.column { - display: inline-block !important; - } - - .ui.divided.tablet.only.grid, - .ui.celled.tablet.only.grid, - .ui.divided.tablet.only.grid .row, - .ui.celled.tablet.only.grid .row, - .ui.divided.grid .tablet.only.row, - .ui.celled.grid .tablet.only.row, - .ui.grid .tablet.only.equal.height.row, - .ui.tablet.only.grid .equal.height.row { - display: table !important; - } - - .ui.divided.grid > .row > .tablet.only.column, - .ui.celled.grid > .row > .tablet.only.column, - .ui.divided.tablet.only.grid > .row > .column, - .ui.celled.tablet.only.grid > .row > .column, - .ui.divided.tablet.only.grid > .column, - .ui.celled.tablet.only.grid > .column { - display: table-cell !important; - } -} - -@media only screen and (max-width: 768px), (min-width: 998px) { - .ui.tablet.only.grid, - .ui.grid > .tablet.only.row, - .ui.grid > .tablet.only.column, - .ui.grid > .row > .tablet.only.column { - display: none; - } -} - -/* Computer Only */ - -@media only screen and (min-width: 998px) { - .ui.computer.only.grid, - .ui.grid > .computer.only.row { - display: block !important; - } - - .ui.grid > .row > .computer.only.column { - display: inline-block !important; - } - - .ui.divided.computer.only.grid, - .ui.celled.computer.only.grid, - .ui.divided.computer.only.grid .row, - .ui.celled.computer.only.grid .row, - .ui.divided.grid .computer.only.row, - .ui.celled.grid .computer.only.row, - .ui.grid .computer.only.equal.height.row, - .ui.computer.only.grid .equal.height.row { - display: table !important; - } - - .ui.divided.grid > .row > .computer.only.column, - .ui.celled.grid > .row > .computer.only.column, - .ui.divided.computer.only.grid > .row > .column, - .ui.celled.computer.only.grid > .row > .column, - .ui.divided.computer.only.grid > .column, - .ui.celled.computer.only.grid > .column { - display: table-cell !important; - } -} - -@media only screen and (max-width: 998px) { - .ui.computer.only.grid, - .ui.grid > .computer.only.row, - .ui.grid > .computer.only.column, - .ui.grid > .row > .computer.only.column { - display: none; - } -} - -/*------------------- - Stackable ---------------------*/ - -@media only screen and (max-width: 768px) { - .ui.stackable.grid { - display: block !important; - padding: 0em; - } - - .ui.stackable.grid > .row > .column, - .ui.stackable.grid > .column { - display: block !important; - width: auto !important; - margin: 1.5em 5% 0em !important; - padding: 1.5em 0em 0em !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - - .ui.stackable.divided.grid .column, - .ui.stackable.celled.grid .column { - border-top: 1px dotted rgba(0, 0, 0, 0.1); - } - - .ui.stackable.grid > .row:first-child > .column:first-child, - .ui.stackable.grid > .column:first-child { - margin-top: 0em !important; - padding-top: 0em !important; - } - - .ui.stackable.divided.grid > .row:first-child > .column:first-child, - .ui.stackable.celled.grid > .row:first-child > .column:first-child, - .ui.stackable.divided.grid > .column:first-child, - .ui.stackable.celled.grid > .column:first-child { - border-top: none !important; - } - - /* Remove pointers from vertical menus */ - - .ui.stackable.grid .vertical.pointing.menu .item:after { - display: none; - } -} - -/******************************* - Standard -*******************************/ - -/*-------------- - Menu ----------------*/ - -.ui.menu { - margin-bottom:1rem; - margin-bottom:16px; - background-color: #FFFFFF; - font-size: 0px; - font-weight: normal; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); -} - -.ui.menu:first-child { - margin-top: 0rem; -} - -.ui.menu:last-child { - margin-bottom: 0rem; -} - -.ui.menu:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -.ui.menu > .item:first-child { - border-radius: 0.1875em 0px 0px 0.1875em; -} - -.ui.menu > .item:last-child { - border-radius: 0px 0.1875em 0.1875em 0px; -} - -.ui.menu .item { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - vertical-align: middle; - line-height: 1; - text-decoration: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: opacity 0.2s ease, background 0.2s ease, -webkit-box-shadow 0.2s ease; - transition: opacity 0.2s ease, background 0.2s ease, box-shadow 0.2s ease; -} - -/*-------------- - Colors ----------------*/ - -/* Text Color */ - -.ui.menu .item, -.ui.menu .item > a { - color: rgba(0, 0, 0, 0.75); -} - -.ui.menu .item .item, -.ui.menu .item .item > a { - color: rgba(30, 30, 30, 0.7); -} - -.ui.menu .item .item .item, -.ui.menu .item .item .item > a { - color: rgba(30, 30, 30, 0.6); -} - -.ui.menu .dropdown.item .menu .item, -.ui.menu .dropdown.item .menu .item a { - color: rgba(0, 0, 0, 0.75); -} - -/* Hover */ - -.ui.menu .item .menu a.item:hover, -.ui.menu .item .menu a.item.hover, -.ui.menu .item .menu .link.item:hover, -.ui.menu .item .menu .link.item.hover { - color: rgba(0, 0, 0, 0.85); -} - -.ui.menu .dropdown.item .menu .item a:hover { - color: rgba(0, 0, 0, 0.85); -} - -/* Active */ - -.ui.menu .active.item, -.ui.menu .active.item a { - color: rgba(0, 0, 0, 0.85); - border-radius: 0px; -} - -/*-------------- - Items ----------------*/ - -.ui.menu .item { - position: relative; - display: inline-block; - padding: 0.83em 0.95em; - border-top: 0em solid rgba(0, 0, 0, 0); - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -moz-user-select: -moz-none; - -khtml-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.ui.menu .menu { - margin: 0em; -} - -.ui.menu .item.left, -.ui.menu .menu.left { - float: left; -} - -.ui.menu .item.right, -.ui.menu .menu.right { - float: right; -} - -/*-------------- - Borders ----------------*/ - -.ui.menu .item:before { - position: absolute; - content: ''; - top: 0%; - right: 0px; - width: 1px; - height: 100%; - background-image: -webkit-gradient(linear, top left, bottom left, from(rgba(0, 0, 0, 0.05)), color-stop(50%, rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.05))); - background-image: -webkit-linear-gradient(rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0.05) 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.05)), color-stop(50%, rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.05))); - background-image: linear-gradient(rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0.05) 100%); -} - -.ui.menu .menu.right .item:before, -.ui.menu .item.right:before { - right: auto; - left: 0px; -} - -/*-------------- - Text Content ----------------*/ - -.ui.menu .text.item > *, -.ui.menu .item > p:only-child { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - line-height: 1.3; - color: rgba(0, 0, 0, 0.6); -} - -.ui.menu .item > p:first-child { - margin-top: 0px; -} - -.ui.menu .item > p:last-child { - margin-bottom: 0px; -} - -/*-------------- - Button ----------------*/ - -.ui.menu:not(.vertical) .item > .button { - position: relative; - top: -0.05em; - margin: -0.55em 0; - padding-bottom: 0.55em; - padding-top: 0.55em; - font-size: 0.875em; - -webkit-box-shadow: none; - box-shadow: none; -} - -/*-------------- - Inputs ----------------*/ - -.ui.menu:not(.vertical) .item > .input { - margin-top: -0.83em; - margin-bottom: -0.83em; - padding-top: 0.3em; - padding-bottom: 0.3em; - width: 100%; -} - -.ui.menu .item > .input input { - padding-top: 0.5em; - padding-bottom: 0.5em; -} - -.ui.vertical.menu .item > .input input { - margin: 0em; - padding-top: 0.63em; - padding-bottom: 0.63em; -} - -.ui.vertical.menu .ui.input > .icon { - padding-top: 0.63em; -} - -/*-------------- - Header ----------------*/ - -.ui.menu .header.item { - background-color: rgba(0, 0, 0, 0.04); - margin: 0em; -} - -.ui.vertical.menu .header.item { - font-weight: bold; -} - -/*-------------- - Dropdowns ----------------*/ - -.ui.menu .dropdown.item .menu { - left: 1px; - margin: 0px; - min-width: -webkit-calc(99%); - min-width: calc(99%); - -webkit-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); -} - -.ui.secondary.menu .dropdown.item .menu { - left: 0px; - min-width: 100%; -} - -.ui.menu .pointing.dropdown.item .menu { - margin-top: 0.75em; -} - -.ui.menu .simple.dropdown.item .menu { - margin: 0px !important; -} - -.ui.menu .dropdown.item .menu .item { - width: 100%; - color: rgba(0, 0, 0, 0.75); -} - -.ui.menu .dropdown.item .menu .active.item { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -.ui.menu .ui.dropdown .menu .item:before { - display: none; -} - -/*-------------- - Labels ----------------*/ - -.ui.menu .item > .label { - background-color: rgba(0, 0, 0, 0.35); - color: #FFFFFF; - margin: -0.15em 0em -0.15em 0.5em; - padding: 0.3em 0.8em; - vertical-align: baseline; -} - -.ui.menu .item > .floating.label { - padding: 0.3em 0.8em; -} - -/*-------------- - Images ----------------*/ - -.ui.menu .item > img:only-child { - display: block; - max-width: 100%; - margin: 0em auto; -} - -/******************************* - States -*******************************/ - -/*-------------- - Hover ----------------*/ - -.ui.link.menu .item:hover, -.ui.menu .item.hover, -.ui.menu .link.item:hover, -.ui.menu a.item:hover, -.ui.menu .ui.dropdown .menu .item.hover, -.ui.menu .ui.dropdown .menu .item:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.02); -} - -.ui.menu .ui.dropdown.active { - background-color: rgba(0, 0, 0, 0.02); - -webkit-box-shadow: none; - box-shadow: none; - border-bottom-right-radius: 0em; - border-bottom-left-radius: 0em; -} - -/*-------------- - Down ----------------*/ - -.ui.link.menu .item:active, -.ui.menu .link.item:active, -.ui.menu a.item:active, -.ui.menu .ui.dropdown .menu .item:active { - background-color: rgba(0, 0, 0, 0.05); -} - -/*-------------- - Active ----------------*/ - -.ui.menu .active.item { - background-color: rgba(0, 0, 0, 0.01); - color: rgba(0, 0, 0, 0.95); - -webkit-box-shadow: 0em 0.2em 0em inset; - box-shadow: 0em 0.2em 0em inset; -} - -.ui.vertical.menu .active.item { - border-radius: 0em; - -webkit-box-shadow: 0.2em 0em 0em inset; - box-shadow: 0.2em 0em 0em inset; -} - -.ui.vertical.menu > .active.item:first-child { - border-radius: 0em 0.1875em 0em 0em; -} - -.ui.vertical.menu > .active.item:last-child { - border-radius: 0em 0em 0.1875em 0em; -} - -.ui.vertical.menu > .active.item:only-child { - border-radius: 0em 0.1875em 0.1875em 0em; -} - -.ui.vertical.menu .active.item .menu .active.item { - border-left: none; -} - -.ui.vertical.menu .active.item .menu .active.item { - padding-left: 1.5rem; -} - -.ui.vertical.menu .item .menu .active.item { - background-color: rgba(0, 0, 0, 0.03); - -webkit-box-shadow: none; - box-shadow: none; -} - -/*-------------- - Disabled ----------------*/ - -.ui.menu .item.disabled, -.ui.menu .item.disabled:hover, -.ui.menu .item.disabled.hover { - cursor: default; - color: rgba(0, 0, 0, 0.2); - background-color: transparent !important; -} - -/*-------------------- - Loading ----------------------*/ - -/* On Form */ - -.ui.menu.loading { - position: relative; -} - -.ui.menu.loading:after { - position: absolute; - top: 0%; - left: 0%; - content: ''; - width: 100%; - height: 100%; - background: rgba(255, 255, 255, 0.8) url(../images/loader-large.gif) no-repeat 50% 50%; - visibility: visible; -} - -/******************************* - Types -*******************************/ - -/*-------------- - Vertical ----------------*/ - -.ui.vertical.menu .item { - display: block; - height: auto !important; - border-top: none; - border-left: 0em solid rgba(0, 0, 0, 0); - border-right: none; -} - -.ui.vertical.menu > .item:first-child { - border-radius: 0.1875em 0.1875em 0px 0px; -} - -.ui.vertical.menu > .item:last-child { - border-radius: 0px 0px 0.1875em 0.1875em; -} - -.ui.vertical.menu .item > .label { - float: right; - text-align: center; -} - -.ui.vertical.menu .item > .icon:not(.input) { - float: right; - width: 1.22em; - margin: 0em 0em 0em 0.5em; -} - -.ui.vertical.menu .item > .label + .icon { - float: none; - margin: 0em 0.25em 0em 0em; -} - -/*--- Border ---*/ - -.ui.vertical.menu .item:before { - position: absolute; - content: ''; - top: 0%; - left: 0px; - width: 100%; - height: 1px; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.03) 0%, rgba(0, 0, 0, 0.1) 1.5em, rgba(0, 0, 0, 0.03) 100%); - background-image: -webkit-gradient(linear, top left, top right, from(rgba(0, 0, 0, 0.03)), color-stop(1.5em, rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.03))); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.03)), color-stop(1.5em, rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.03))); - background-image: linear-gradient(left, rgba(0, 0, 0, 0.03) 0%, rgba(0, 0, 0, 0.1) 1.5em, rgba(0, 0, 0, 0.03) 100%); -} - -.ui.vertical.menu .item:first-child:before { - background-image: none !important; -} - -/*--- Dropdown ---*/ - -.ui.vertical.menu .dropdown.item > i { - float: right; - content: "\f0da"; -} - -.ui.vertical.menu .dropdown.item .menu { - top: 0% !important; - left: 100%; - margin: 0px 0px 0px 1px; - -webkit-box-shadow: 0 0px 1px 1px #DDDDDD; - box-shadow: 0 0px 1px 1px #DDDDDD; -} - -.ui.vertical.menu .dropdown.item.active { - border-top-right-radius: 0em; - border-bottom-right-radius: 0em; -} - -.ui.vertical.menu .dropdown.item .menu .item { - font-size: 1rem; -} - -.ui.vertical.menu .dropdown.item .menu .item .icon { - margin-right: 0em; -} - -.ui.vertical.menu .dropdown.item.active { - -webkit-box-shadow: none; - box-shadow: none; -} - -/*--- Sub Menu ---*/ - -.ui.vertical.menu .item > .menu { - margin: 0.5em -0.95em 0em; -} - -.ui.vertical.menu .item > .menu > .item { - padding: 0.5rem 1.5rem; - font-size: 0.875em; -} - -.ui.vertical.menu .item > .menu > .item:before { - display: none; -} - -/*-------------- - Tiered ----------------*/ - -.ui.tiered.menu > .sub.menu > .item { - color: rgba(0, 0, 0, 0.4); -} - -.ui.tiered.menu > .menu > .item:hover, -.ui.tiered.menu > .menu > .item.hover { - color: rgba(0, 0, 0, 0.8); -} - -.ui.tiered.menu .item.active { - color: rgba(0, 0, 0, 0.8); -} - -.ui.tiered.menu > .menu .item.active:after { - position: absolute; - content: ''; - margin-top: -1px; - top: 100%; - left: 0px; - width: 100%; - height: 2px; - background-color: #FBFBFB; -} - -.ui.tiered.menu .sub.menu { - background-color: rgba(0, 0, 0, 0.01); - border-radius: 0em; - border-top: 1px solid rgba(0, 0, 0, 0.1); - -webkit-box-shadow: none; - box-shadow: none; - color: #FFFFFF; -} - -.ui.tiered.menu .sub.menu .item { - font-size: 0.875rem; -} - -.ui.tiered.menu .sub.menu .item:before { - background-image: none; -} - -.ui.tiered.menu .sub.menu .active.item { - padding-top: 0.83em; - background-color: transparent; - border-radius: 0 0 0 0; - border-top: medium none; - -webkit-box-shadow: none; - box-shadow: none; - color: rgba(0, 0, 0, 0.7) !important; -} - -.ui.tiered.menu .sub.menu .active.item:after { - display: none; -} - -/* Inverted */ - -.ui.inverted.tiered.menu > .menu > .item { - color: rgba(255, 255, 255, 0.5); -} - -.ui.inverted.tiered.menu .sub.menu { - background-color: rgba(0, 0, 0, 0.2); -} - -.ui.inverted.tiered.menu .sub.menu .item { - color: rgba(255, 255, 255, 0.6); -} - -.ui.inverted.tiered.menu > .menu > .item:hover, -.ui.inverted.tiered.menu > .menu > .item.hover { - color: rgba(255, 255, 255, 0.9); -} - -.ui.inverted.tiered.menu .active.item:after { - display: none; -} - -.ui.inverted.tiered.menu > .sub.menu > .active.item, -.ui.inverted.tiered.menu > .menu > .active.item { - color: #ffffff !important; - -webkit-box-shadow: none; - box-shadow: none; -} - -/* Tiered pointing */ - -.ui.pointing.tiered.menu > .menu > .item:after { - display: none; -} - -.ui.pointing.tiered.menu > .sub.menu > .item:after { - display: block; -} - -/*-------------- - Tabular ----------------*/ - -.ui.tabular.menu { - background-color: transparent; - border-bottom: 1px solid #DCDDDE; - border-radius: 0em; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -.ui.tabular.menu .item { - background-color: transparent; - border-left: 1px solid transparent; - border-right: 1px solid transparent; - border-top: 1px solid transparent; - padding-left: 1.4em; - padding-right: 1.4em; - color: rgba(0, 0, 0, 0.6); -} - -.ui.tabular.menu .item:before { - display: none; -} - -/* Hover */ - -.ui.tabular.menu .item:hover { - background-color: transparent; - color: rgba(0, 0, 0, 0.8); -} - -/* Active */ - -.ui.tabular.menu .active.item { - position: relative; - background-color: #FFFFFF; - color: rgba(0, 0, 0, 0.8); - border-color: #DCDDDE; - font-weight: bold; - margin-bottom: -1px; - border-bottom: 1px solid #FFFFFF; - -webkit-box-shadow: none; - box-shadow: none; - border-radius: 5px 5px 0 0; -} - -/* Coupling with segment for attachment */ - -.ui.attached.tabular.menu { - position: relative; - z-index: 2; -} - -.ui.tabular.menu ~ .bottom.attached.segment { - margin: 1px 0px 0px 1px; -} - -/*-------------- - Pagination ----------------*/ - -.ui.pagination.menu { - float:right; - margin: 56px 0 0; - display: inline-block; - vertical-align: middle; -} - -.ui.pagination.menu .item { - min-width: 3em; - text-align: center; -} - -.ui.pagination.menu .icon.item .icon { - vertical-align: top; -} - -.ui.pagination.menu.floated { - display: block; -} - -/* active */ - -.ui.pagination.menu .active.item { - border-top: none; - padding-top: 0.83em; - background-color: rgba(0, 0, 0, 0.05); - -webkit-box-shadow: none; - box-shadow: none; -} - -/*-------------- - Secondary ----------------*/ - -.ui.secondary.menu { - background-color: transparent; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.secondary.menu > .menu > .item, -.ui.secondary.menu > .item { - -webkit-box-shadow: none; - box-shadow: none; - border: none; - height: auto !important; - margin: 0em 0.25em; - padding: 0.5em 1em; - border-radius: 0.3125em; -} - -.ui.secondary.menu > .menu > .item:before, -.ui.secondary.menu > .item:before { - display: none !important; -} - -.ui.secondary.menu .item > .input input { - background-color: transparent; - border: none; -} - -.ui.secondary.menu .link.item, -.ui.secondary.menu a.item { - opacity: 0.8; - -webkit-transition: none; - transition: none; -} - -.ui.secondary.menu .header.item { - border-right: 0.1em solid rgba(0, 0, 0, 0.1); - background-color: transparent; - border-radius: 0em; -} - -/* hover */ - -.ui.secondary.menu .link.item:hover, -.ui.secondary.menu a.item:hover { - opacity: 1; -} - -/* active */ - -.ui.secondary.menu > .menu > .active.item, -.ui.secondary.menu > .active.item { - background-color: rgba(0, 0, 0, 0.08); - opacity: 1; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.secondary.vertical.menu > .active.item { - border-radius: 0.3125em; -} - -/* inverted */ - -.ui.secondary.inverted.menu .link.item, -.ui.secondary.inverted.menu a.item { - color: rgba(255, 255, 255, 0.5); -} - -.ui.secondary.inverted.menu .link.item:hover, -.ui.secondary.inverted.menu a.item:hover { - color: rgba(255, 255, 255, 0.9); -} - -.ui.secondary.inverted.menu .active.item { - background-color: rgba(255, 255, 255, 0.1); -} - -/* disable variations */ - -.ui.secondary.item.menu > .item { - margin: 0em; -} - -.ui.secondary.attached.menu { - -webkit-box-shadow: none; - box-shadow: none; -} - -/*--------------------- - Secondary Pointing ------------------------*/ -.ui.secondary.pointing.menu > .menu > .item, -.ui.secondary.pointing.menu > .item { - margin: 0em 0em -3px; - padding: 0.6em 0.95em; - border-bottom: 3px solid rgba(0, 0, 0, 0); - border-radius: 0em; - -webkit-transition: color 0.2s; - transition: color 0.2s; -} - -/* Item Types */ - -.ui.secondary.pointing.menu .header.item { - margin-bottom: -3px; - background-color: transparent !important; - border-right-width: 0px !important; - font-weight: bold !important; - color: rgba(0, 0, 0, 0.8) !important; -} - -.ui.secondary.pointing.menu .text.item { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -.ui.secondary.pointing.menu > .menu > .item:after, -.ui.secondary.pointing.menu > .item:after { - display: none; -} - -/* Hover */ - -.ui.secondary.pointing.menu > .menu > .link.item:hover, -.ui.secondary.pointing.menu > .link.item:hover, -.ui.secondary.pointing.menu > .menu > a.item:hover, -.ui.secondary.pointing.menu > a.item:hover { - background-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -/* Down */ - -.ui.secondary.pointing.menu > .menu > .link.item:active, -.ui.secondary.pointing.menu > .link.item:active, -.ui.secondary.pointing.menu > .menu > a.item:active, -.ui.secondary.pointing.menu > a.item:active { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.2); -} - -/* Active */ - -.ui.secondary.pointing.menu > .menu > .item.active, -.ui.secondary.pointing.menu > .item.active { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.6); - -webkit-box-shadow: none; - box-shadow: none; -} - -/*--------------------- - Secondary Vertical ------------------------*/ - -.ui.secondary.vertical.pointing.menu { - border: none; - border-right: 3px solid rgba(0, 0, 0, 0.1); -} - -.ui.secondary.vertical.menu > .item { - border: none; - margin: 0em 0em 0.3em; - padding: 0.6em 0.8em; - border-radius: 0.1875em; -} - -.ui.secondary.vertical.menu > .header.item { - border-radius: 0em; -} - -.ui.secondary.vertical.pointing.menu > .item { - margin: 0em -3px 0em 0em; - border-bottom: none; - border-right: 3px solid transparent; - border-radius: 0em; -} - -/* Hover */ - -.ui.secondary.vertical.pointing.menu > .item.hover, -.ui.secondary.vertical.pointing.menu > .item:hover { - background-color: transparent; - color: rgba(0, 0, 0, 0.7); -} - -/* Down */ - -.ui.secondary.vertical.pointing.menu > .item:active { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.2); -} - -/* Active */ - -.ui.secondary.vertical.pointing.menu > .item.active { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.4); - color: rgba(0, 0, 0, 0.85); -} - -/*-------------- - Inverted ----------------*/ - -.ui.secondary.inverted.menu { - background-color: transparent; -} - -.ui.secondary.inverted.pointing.menu { - border-bottom: 3px solid rgba(255, 255, 255, 0.1); -} - -.ui.secondary.inverted.pointing.menu > .item { - color: rgba(255, 255, 255, 0.7); -} - -.ui.secondary.inverted.pointing.menu > .header.item { - color: #FFFFFF !important; -} - -/* Hover */ - -.ui.secondary.inverted.pointing.menu > .menu > .item:hover, -.ui.secondary.inverted.pointing.menu > .item:hover { - color: rgba(255, 255, 255, 0.85); -} - -/* Down */ - -.ui.secondary.inverted.pointing.menu > .menu > .item:active, -.ui.secondary.inverted.pointing.menu > .item:active { - border-color: rgba(255, 255, 255, 0.4); -} - -/* Active */ - -.ui.secondary.inverted.pointing.menu > .menu > .item.active, -.ui.secondary.inverted.pointing.menu > .item.active { - border-color: rgba(255, 255, 255, 0.8); - color: #ffffff; -} - -/*--------------------- - Inverted Vertical -----------------------*/ - -.ui.secondary.inverted.vertical.pointing.menu { - border-right: 3px solid rgba(255, 255, 255, 0.1); - border-bottom: none; -} - -/*-------------- - Text Menu ----------------*/ - -.ui.text.menu { - background-color: transparent; - margin: 1rem -1rem; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.text.menu > .item { - opacity: 0.8; - margin: 0em 1em; - padding: 0em; - height: auto !important; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: opacity 0.2s ease; - transition: opacity 0.2s ease; -} - -.ui.text.menu > .item:before { - display: none !important; -} - -.ui.text.menu .header.item { - background-color: transparent; - opacity: 1; - color: rgba(50, 50, 50, 0.8); - font-size: 0.875rem; - padding: 0em; - text-transform: uppercase; - font-weight: bold; -} - -/*--- fluid text ---*/ - -.ui.text.item.menu .item { - margin: 0em; -} - -/*--- vertical text ---*/ - -.ui.vertical.text.menu { - margin: 1rem 0em; -} - -.ui.vertical.text.menu:first-child { - margin-top: 0rem; -} - -.ui.vertical.text.menu:last-child { - margin-bottom: 0rem; -} - -.ui.vertical.text.menu .item { - float: left; - clear: left; - margin: 0.5em 0em; -} - -.ui.vertical.text.menu .item > .icon { - float: none; - margin: 0em 0.83em 0em 0em; -} - -.ui.vertical.text.menu .header.item { - margin: 0.8em 0em; -} - -/*--- hover ---*/ - -.ui.text.menu .item.hover, -.ui.text.menu .item:hover { - opacity: 1; - background-color: transparent; -} - -/*--- active ---*/ - -.ui.text.menu .active.item { - background-color: transparent; - padding: 0em; - border: none; - opacity: 1; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} - -/* disable variations */ - -.ui.text.pointing.menu .active.item:after { - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.text.attached.menu { - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.inverted.text.menu, -.ui.inverted.text.menu .item, -.ui.inverted.text.menu .item:hover, -.ui.inverted.text.menu .item.active { - background-color: transparent; -} - -/*-------------- - Icon Only ----------------*/ - -.ui.icon.menu, -.ui.vertical.icon.menu { - width: auto; - display: inline-block; - height: auto; -} - -.ui.icon.menu > .item { - height: auto; - text-align: center; - color: rgba(60, 60, 60, 0.7); -} - -.ui.icon.menu > .item > .icon { - display: block; - float: none !important; - opacity: 1; - margin: 0em auto !important; -} - -.ui.icon.menu .icon:before { - opacity: 1; -} - -/* Item Icon Only */ - -.ui.menu .icon.item .icon { - margin: 0em; -} - -.ui.vertical.icon.menu { - float: none; -} - -/*--- inverted ---*/ - -.ui.inverted.icon.menu .item { - color: rgba(255, 255, 255, 0.8); -} - -.ui.inverted.icon.menu .icon { - color: #ffffff; -} - -/*-------------- - Labeled Icon ----------------*/ - -.ui.labeled.icon.menu { - text-align: center; -} - -.ui.labeled.icon.menu > .item > .icon { - display: block; - font-size: 1.5em !important; - margin: 0em auto 0.3em !important; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Colors ----------------*/ - -/*--- Light Colors ---*/ - -.ui.menu .green.active.item, -.ui.green.menu .active.item { - border-color: #A1CF64 !important; - color: #A1CF64 !important; -} - -.ui.menu .red.active.item, -.ui.red.menu .active.item { - border-color: #D95C5C !important; - color: #D95C5C !important; -} - -.ui.menu .blue.active.item, -.ui.blue.menu .active.item { - border-color: #6ECFF5 !important; - color: #6ECFF5 !important; -} - -.ui.menu .purple.active.item, -.ui.purple.menu .active.item { - border-color: #564F8A !important; - color: #564F8A !important; -} - -.ui.menu .orange.active.item, -.ui.orange.menu .active.item { - border-color: #F05940 !important; - color: #F05940 !important; -} - -.ui.menu .teal.active.item, -.ui.teal.menu .active.item { - border-color: #178EFE !important; - color: #178EFE !important; -} - -/*-------------- - Inverted ----------------*/ - -.ui.inverted.menu { - background-color: #333333; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.inverted.menu .header.item { - margin: 0em; - background-color: rgba(0, 0, 0, 0.3); - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.inverted.menu .item, -.ui.inverted.menu .item > a { - color: #FFFFFF; -} - -.ui.inverted.menu .item .item, -.ui.inverted.menu .item .item > a { - color: rgba(255, 255, 255, 0.8); -} - -.ui.inverted.menu .dropdown.item .menu .item, -.ui.inverted.menu .dropdown.item .menu .item a { - color: rgba(0, 0, 0, 0.75) !important; -} - -.ui.inverted.menu .item.disabled, -.ui.inverted.menu .item.disabled:hover, -.ui.inverted.menu .item.disabled.hover { - color: rgba(255, 255, 255, 0.2); -} - -/*--- Border ---*/ - -.ui.inverted.menu .item:before { - background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -webkit-gradient(linear, top left, bottom left, from(rgba(255, 255, 255, 0.03)), color-stop(50%, rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0.03))); - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.03)), color-stop(50%, rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0.03))); - background-image: linear-gradient(rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); -} - -.ui.vertical.inverted.menu .item:before { - background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); - background-image: -webkit-gradient(linear, top left, top right, from(rgba(255, 255, 255, 0.03)), color-stop(50%, rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0.03))); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0.03)), color-stop(50%, rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0.03))); - background-image: linear-gradient(left, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.03) 100%); -} - -/*--- Hover ---*/ - -.ui.link.inverted.menu .item:hover, -.ui.inverted.menu .item.hover, -.ui.inverted.menu .link.item:hover, -.ui.inverted.menu a.item:hover, -.ui.inverted.menu .dropdown.item.hover, -.ui.inverted.menu .dropdown.item:hover { - background-color: rgba(255, 255, 255, 0.1); -} - -.ui.inverted.menu a.item:hover, -.ui.inverted.menu .item.hover, -.ui.inverted.menu .item > a:hover, -.ui.inverted.menu .item .menu a.item:hover, -.ui.inverted.menu .item .menu a.item.hover, -.ui.inverted.menu .item .menu .link.item:hover, -.ui.inverted.menu .item .menu .link.item.hover { - color: #ffffff; -} - -/*--- Down ---*/ - -.ui.inverted.menu a.item:active, -.ui.inverted.menu .dropdown.item:active, -.ui.inverted.menu .link.item:active, -.ui.inverted.menu a.item:active { - background-color: rgba(255, 255, 255, 0.15); -} - -/*--- Active ---*/ - -.ui.inverted.menu .active.item { - -webkit-box-shadow: none !important; - box-shadow: none !important; - background-color: rgba(255, 255, 255, 0.2); -} - -.ui.inverted.menu .active.item, -.ui.inverted.menu .active.item a { - color: #ffffff !important; -} - -.ui.inverted.vertical.menu .item .menu .active.item { - background-color: rgba(255, 255, 255, 0.2); - color: #ffffff; -} - -/*--- Pointers ---*/ - -.ui.inverted.pointing.menu .active.item:after { - background-color: #5B5B5B; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.inverted.pointing.menu .active.item:hover:after { - background-color: #4A4A4A; -} - -/*-------------- - Selection ----------------*/ - -.ui.selection.menu > .item { - color: rgba(0, 0, 0, 0.4); -} - -.ui.selection.menu > .item:hover { - color: rgba(0, 0, 0, 0.6); -} - -.ui.selection.menu > .item.active { - color: rgba(0, 0, 0, 0.85); -} - -.ui.inverted.selection.menu > .item { - color: rgba(255, 255, 255, 0.4); -} - -.ui.inverted.selection.menu > .item:hover { - color: rgba(255, 255, 255, 0.9); -} - -.ui.inverted.selection.menu > .item.active { - color: #FFFFFF; -} - -/*-------------- - Floated ----------------*/ - -.ui.floated.menu { - float: left; - margin: 0rem 0.5rem 0rem 0rem; -} - -.ui.right.floated.menu { - float: right; - margin: 0rem 0rem 0rem 0.5rem; -} - -/*-------------- - Inverted Colors ----------------*/ - -/*--- Light Colors ---*/ - -.ui.grey.menu { - background-color: #F0F0F0; -} - -/*--- Inverted Colors ---*/ - -.ui.inverted.green.menu { - background-color: #A1CF64; -} - -.ui.inverted.green.pointing.menu .active.item:after { - background-color: #A1CF64; -} - -.ui.inverted.red.menu { - background-color: #D95C5C; -} - -.ui.inverted.red.pointing.menu .active.item:after { - background-color: #F16883; -} - -.ui.inverted.blue.menu { - background-color: #6ECFF5; -} - -.ui.inverted.blue.pointing.menu .active.item:after { - background-color: #6ECFF5; -} - -.ui.inverted.purple.menu { - background-color: #564F8A; -} - -.ui.inverted.purple.pointing.menu .active.item:after { - background-color: #564F8A; -} - -.ui.inverted.orange.menu { - background-color: #F05940; -} - -.ui.inverted.orange.pointing.menu .active.item:after { - background-color: #F05940; -} - -.ui.inverted.teal.menu { - background-color: #007ad5 !important; -} - -.ui.inverted.teal.pointing.menu .active.item:after { - background-color: #007ad5 !important; -} - -/*-------------- - Fitted ----------------*/ - -.ui.fitted.menu .item, -.ui.fitted.menu .item .menu .item, -.ui.menu .fitted.item { - padding: 0em; -} - -.ui.horizontally.fitted.menu .item, -.ui.horizontally.fitted.menu .item .menu .item, -.ui.menu .horizontally.fitted.item { - padding-top: 0.83em; - padding-bottom: 0.83em; -} - -.ui.vertically.fitted.menu .item, -.ui.vertically.fitted.menu .item .menu .item, -.ui.menu .vertically.fitted.item { - padding-left: 0.95em; - padding-right: 0.95em; -} - -/*-------------- - Borderless ----------------*/ - -.ui.borderless.menu .item:before, -.ui.borderless.menu .item .menu .item:before, -.ui.menu .borderless.item:before { - background-image: none; -} - -/*------------------- - Compact ---------------------*/ - -.ui.compact.menu { - display: inline-block; - margin: 0em; - vertical-align: middle; -} - -.ui.compact.vertical.menu { - width: auto !important; -} - -.ui.compact.vertical.menu .item:last-child::before { - display: block; -} - -/*------------------- - Fluid ---------------------*/ - -.ui.menu.fluid, -.ui.vertical.menu.fluid { - display: block; - width: 100% !important; -} - -/*------------------- - Evenly Sized ---------------------*/ - -.ui.item.menu, -.ui.item.menu .item { - width: 100%; - padding-left: 0px !important; - padding-right: 0px !important; - text-align: center; -} - -.ui.menu.two.item .item { - width: 50%; -} - -.ui.menu.three.item .item { - width: 33.333%; -} - -.ui.menu.four.item .item { - width: 25%; -} - -.ui.menu.five.item .item { - width: 20%; -} - -.ui.menu.six.item .item { - width: 16.666%; -} - -.ui.menu.seven.item .item { - width: 14.285%; -} - -.ui.menu.eight.item .item { - width: 12.500%; -} - -.ui.menu.nine.item .item { - width: 11.11%; -} - -.ui.menu.ten.item .item { - width: 10.0%; -} - -.ui.menu.eleven.item .item { - width: 9.09%; -} - -.ui.menu.twelve.item .item { - width: 8.333%; -} - -/*-------------- - Fixed ----------------*/ - -.ui.menu.fixed { - position: fixed; - z-index: 10; - margin: 0em; - border: none; - width: 100%; -} - -.ui.menu.fixed, -.ui.menu.fixed .item:first-child, -.ui.menu.fixed .item:last-child { - border-radius: 0px !important; -} - -.ui.menu.fixed.top { - top: 0px; - left: 0px; - right: auto; - bottom: auto; -} - -.ui.menu.fixed.right { - top: 0px; - right: 0px; - left: auto; - bottom: auto; - width: auto; - height: 100%; -} - -.ui.menu.fixed.bottom { - bottom: 0px; - left: 0px; - top: auto; - right: auto; -} - -.ui.menu.fixed.left { - top: 0px; - left: 0px; - right: auto; - bottom: auto; - width: auto; - height: 100%; -} - -/*------------------- - Pointing ---------------------*/ - -.ui.pointing.menu .active.item:after { - position: absolute; - bottom: -0.3em; - left: 50%; - content: ""; - margin-left: -0.3em; - width: 0.6em; - height: 0.6em; - border: none; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - border-right: 1px solid rgba(0, 0, 0, 0.1); - background-image: none; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - z-index: 2; - -webkit-transition: background 0.2s ease; - transition: background 0.2s ease; -} - -/* Don't double up pointers */ - -.ui.pointing.menu .active.item .menu .active.item:after { - display: none; -} - -.ui.vertical.pointing.menu .active.item:after { - position: absolute; - top: 50%; - margin-top: -0.3em; - right: -0.4em; - bottom: auto; - left: auto; - border: none; - border-top: 1px solid rgba(0, 0, 0, 0.1); - border-right: 1px solid rgba(0, 0, 0, 0.1); -} - -/* Colors */ - -.ui.pointing.menu .active.item:after { - background-color: #FCFCFC; -} - -.ui.pointing.menu .active.item.hover:after, -.ui.pointing.menu .active.item:hover:after { - background-color: #FAFAFA; -} - -.ui.vertical.pointing.menu .menu .active.item:after { - background-color: #F4F4F4; -} - -.ui.pointing.menu a.active.item:active:after { - background-color: #F0F0F0; -} - -/*-------------- - Attached ----------------*/ - -.ui.menu.attached { - margin: 0rem; - border-radius: 0px; - /* avoid rgba multiplying */ - -webkit-box-shadow: 0px 0px 0px 1px #DDDDDD; - box-shadow: 0px 0px 0px 1px #DDDDDD; -} - -.ui.top.attached.menu { - border-radius: 0.1875em 0.1875em 0px 0px; -} - -.ui.menu.bottom.attached { - border-radius: 0px 0px 0.1875em 0.1875em; -} - -/*-------------- - Sizes ----------------*/ - -.ui.small.menu .item { - font-size: 0.875rem; -} - -.ui.small.menu:not(.vertical) .item > .input input { - padding-top: 0.4em; - padding-bottom: 0.4em; -} - -.ui.small.vertical.menu { - width: 13rem; -} - -.ui.menu .item { - font-size: 1rem; -} - -.ui.vertical.menu { - width: 15rem; -} - -.ui.large.menu .item { - font-size: 1.125rem; -} - -.ui.large.menu .item .item { - font-size: 0.875rem; -} - -.ui.large.menu:not(.vertical) .item > .input input { - top: -0.125em; - padding-bottom: 0.6em; - padding-top: 0.6em; -} - -.ui.large.menu .dropdown.item .item { - font-size: 1rem; -} - -.ui.large.vertical.menu { - width: 18rem; -} -/* - * # Semantic - Message - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Message -*******************************/ - -.ui.message { - position: relative; - min-height: 18px; - margin: 1em 0em; - height: auto; - background-color: #EFEFEF; - padding: 1em; - line-height: 1.33; - color: rgba(0, 0, 0, 0.6); - -webkit-transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, -webkit-box-shadow 0.1s ease; - transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - border-radius: 0.325em 0.325em 0.325em 0.325em; -} - -.ui.message:first-child { - margin-top: 0em; -} - -.ui.message:last-child { - margin-bottom: 0em; -} - -/*-------------- - Content ----------------*/ - -/* block with headers */ - -.ui.message .header { - margin: 0em; - font-size: 1.33rem; - font-weight: bold; -} - -/* block with paragraphs */ - -.ui.message p { - opacity: 0.85; - margin: 1em 0em; -} - -.ui.message p:first-child { - margin-top: 0em; -} - -.ui.message p:last-child { - margin-bottom: 0em; -} - -.ui.message .header + p { - margin-top: 0.3em; -} - -.ui.message > :first-child { - margin-top: 0em; -} - -.ui.message > :last-child { - margin-bottom: 0em; -} - -/* block with child list */ - -.ui.message ul.list { - opacity: 0.85; - list-style-position: inside; - margin: 0.2em 0em; - padding: 0em; -} - -.ui.message ul.list li { - position: relative; - list-style-type: none; - margin: 0em 0em 0.3em 1em; - padding: 0em; -} - -.ui.message ul.list li:before { - position: absolute; - content: '\2022'; - top: -0.05em; - left: -0.8em; - height: 100%; - vertical-align: baseline; - opacity: 0.5; -} - -.ui.message ul.list li:first-child { - margin-top: 0em; -} - -/* dismissable block */ - -.ui.message > .close.icon { - cursor: pointer; - position: absolute; - top: 1em; - right: 0.5em; - opacity: 0.7; - -webkit-transition: opacity 0.1s linear; - transition: opacity 0.1s linear; -} - -.ui.message > .close.icon:hover { - opacity: 1; -} - -/******************************* - States -*******************************/ - -.ui.message.visible, -.ui.header.visible { - display: block !important; -} - -.ui.message.hidden, -.ui.header.hidden { - display: none; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Compact ----------------*/ - -.ui.compact.message { - display: inline-block; -} - -/*-------------- - Attached ----------------*/ - -.ui.attached.message { - margin-left: -1px; - margin-right: -1px; - margin-bottom: -1px; - border-radius: 0.325em 0.325em 0em 0em; - -webkit-box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.1) inset; -} - -.ui.bottom.attached.message { - margin-top: -1px; - border-radius: 0em 0em 0.325em 0.325em; -} - -/*-------------- - Icon ----------------*/ - -.ui.icon.message { - display: table; - width: 100%; -} - -.ui.icon.message > .icon { - display: table-cell; - vertical-align: middle; - font-size: 3.8em; - opacity: 0.5; -} - -.ui.icon.message > .icon + .content { - padding-left: 1em; -} - -.ui.icon.message > .content { - display: table-cell; - vertical-align: middle; -} - -/*-------------- - Inverted ----------------*/ - -.ui.inverted.message { - background-color: rgba(255, 255, 255, 0.05); - color: rgba(255, 255, 255, 0.95); -} - -/*-------------- - Floating ----------------*/ - -.ui.floating.message { - -webkit-box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.1), 0px 0px 0px 1px rgba(0, 0, 0, 0.05) inset; - box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.1), 0px 0px 0px 1px rgba(0, 0, 0, 0.05) inset; -} - -/*-------------- - Colors ----------------*/ - -.ui.black.message { - background-color: #333333; - color: rgba(255, 255, 255, 0.95); -} - -/*-------------- - Types ----------------*/ - -.ui.blue.message, -.ui.info.message { - background-color: #E6F4F9; - color: #4D8796; -} - -/* Green Text Block */ - -.ui.green.message { - background-color: #DEFCD5; - color: #52A954; -} - -/* Yellow Text Block */ - -.ui.yellow.message, -.ui.warning.message { - background-color: #F6F3D5; - color: #96904D; -} - -/* Red Text Block */ - -.ui.red.message { - background-color: #F1D7D7; - color: #A95252; -} - -/* Success Text Block */ - -.ui.success.message, -.ui.positive.message { - background-color: #DEFCD5; - color: #52A954; -} - -/* Error Text Block */ - -.ui.error.message, -.ui.negative.message { - background-color: #F1D7D7; - color: #A95252; -} - -/*-------------- - Sizes ----------------*/ - -.ui.small.message { - font-size: 0.875em; -} - -.ui.message { - font-size: 0.875rem; -} - -.ui.large.message { - font-size: 1.125em; -} - -.ui.huge.message { - font-size: 1.5em; -} - -.ui.massive.message { - font-size: 2em; -} -/* - * # Semantic - Table - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Table -*******************************/ - -/* Prototype */ - -.ui.table { - width: 100%; - border-collapse: collapse; -} - -/* Table Content */ - -.ui.table th, -.ui.table tr, -.ui.table td { - border-collapse: collapse; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: all 0.1s ease-out; - transition: all 0.1s ease-out; -} - -/* Headers */ - -.ui.table thead { - border-bottom: 1px solid rgba(0, 0, 0, 0.03); -} - -.ui.table tfoot th { - background-color: rgba(0, 0, 0, 0.03); -} - -.ui.table th { - cursor: auto; - background-color: rgba(0, 0, 0, 0.05); - text-align: left; - color: rgba(0, 0, 0, 0.8); - padding: 0.5em 0.7em; - vertical-align: middle; -} - -.ui.table thead th:first-child { - border-radius: 5px 0px 0px 0px; -} - -.ui.table thead th:last-child { - border-radius: 0px 5px 0px 0px; -} - -.ui.table tfoot th:first-child { - border-radius: 0px 0px 0px 5px; -} - -.ui.table tfoot th:last-child { - border-radius: 0px 0px 5px 0px; -} - -/* Table Cells */ - -.ui.table td { - padding: 0.40em 0.7em; - vertical-align: middle; -} - -/* Footer */ - -.ui.table tfoot { - border-top: 1px solid rgba(0, 0, 0, 0.03); -} - -.ui.table tfoot th { - font-weight: normal; - font-style: italic; -} - -/* Table Striping */ - -.ui.table tbody tr:nth-child(2n) { - background-color: rgba(0, 0, 50, 0.02); -} - -/* Icons */ - -.ui.table > .icon { - vertical-align: baseline; -} - -.ui.table > .icon:only-child { - margin: 0em; -} - -/* Table Segment */ - -.ui.table.segment:after { - display: none; -} - -.ui.table.segment.stacked:after { - display: block; -} - -/* Responsive */ - -@media only screen and (max-width: 768px) { - .ui.table { - display: block; - padding: 0em; - } - - .ui.table thead, - .ui.table tfoot { - display: none; - } - - .ui.table tbody { - display: block; - } - - .ui.table tr { - display: block; - } - - .ui.table tr > td { - width: 100% !important; - display: block; - border: none !important; - padding: 0.25em 0.75em; - -webkit-box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.05) !important; - box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.05) !important; - } - - .ui.table td:first-child { - font-weight: bold; - padding-top: 1em; - } - - .ui.table td:last-child { - -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1) inset !important; - box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1) inset !important; - padding-bottom: 1em; - } - - /* Clear BG Colors */ - - .ui.table tr > td.warning, - .ui.table tr > td.error, - .ui.table tr > td.active, - .ui.table tr > td.positive, - .ui.table tr > td.negative { - background-color: transparent !important; - } -} - -/******************************* - States -*******************************/ - -/*-------------- - Hover ----------------*/ - -/* Sortable */ - -.ui.sortable.table th.disabled:hover { - cursor: auto; - text-align: left; - font-weight: bold; - color: #333333; - color: rgba(0, 0, 0, 0.8); -} - -.ui.sortable.table thead th:hover { - background-color: rgba(0, 0, 0, 0.13); - color: rgba(0, 0, 0, 0.8); -} - -/* Inverted Sortable */ - -.ui.inverted.sortable.table thead th:hover { - background-color: rgba(255, 255, 255, 0.13); - color: #ffffff; -} - -/*-------------- - Positive ----------------*/ - -.ui.table tr.positive td, -.ui.table td.positive { - background-color: #F2F8F0 !important; - color: #119000 !important; -} - -.ui.celled.table tr.positive:hover td, -.ui.celled.table tr:hover td.positive, -.ui.table tr.positive:hover td, -.ui.table td:hover.positive, -.ui.table th:hover.positive { - background-color: #ECF5E9 !important; - color: #119000 !important; -} - -/*-------------- - Negative ----------------*/ - -.ui.table tr.negative td, -.ui.table td.negative { - background-color: #F9F4F4; - color: #CD2929 !important; -} - -.ui.celled.table tr.negative:hover td, -.ui.celled.table tr:hover td.negative, -.ui.table tr.negative:hover td, -.ui.table td:hover.negative, -.ui.table th:hover.negative { - background-color: #F2E8E8; - color: #CD2929; -} - -/*-------------- - Error ----------------*/ - -.ui.table tr.error, -.ui.table td.error { - -webkit-box-shadow: 2px 0px 0px #CD2929 inset; - box-shadow: 2px 0px 0px #CD2929 inset; -} - -.ui.table tr.error td, -.ui.table td.error, -.ui.table th.error { - background-color: #F9F4F4; - color: #CD2929; -} - -.ui.celled.table tr.error:hover td, -.ui.celled.table tr:hover td.error, -.ui.table tr.error:hover td, -.ui.table td:hover.error, -.ui.table th:hover.error { - background-color: #F2E8E8; - color: #CD2929; -} - -/*-------------- - Warning ----------------*/ - -.ui.table tr.warning, -.ui.table td.warning { - -webkit-box-shadow: 2px 0px 0px #7D6C00 inset; - box-shadow: 2px 0px 0px #7D6C00 inset; -} - -.ui.table tr.warning td, -.ui.table td.warning, -.ui.table th.warning { - background-color: #FBF6E9; - color: #7D6C00; -} - -.ui.celled.table tr.warning:hover td, -.ui.celled.table tr:hover td.warning, -.ui.table tr.warning:hover td, -.ui.table td:hover.warning, -.ui.table th:hover.warning { - background-color: #F3EDDC; - color: #7D6C00; -} - -/*-------------- - Active ----------------*/ - -.ui.table tr.active, -.ui.table td.active { - -webkit-box-shadow: 2px 0px 0px rgba(50, 50, 50, 0.9) inset; - box-shadow: 2px 0px 0px rgba(50, 50, 50, 0.9) inset; -} - -.ui.table tr.active td, -.ui.table tr td.active { - background-color: #E0E0E0; - color: rgba(50, 50, 50, 0.9); - /* border-color: rgba(0, 0, 0, 0.15) !important; */ -} - -/*-------------- - Disabled ----------------*/ - -.ui.table tr.disabled td, -.ui.table tr td.disabled, -.ui.table tr.disabled:hover td, -.ui.table tr:hover td.disabled { - color: rgba(150, 150, 150, 0.3); -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Column Count ----------------*/ - -.ui.two.column.table td { - width: 50%; -} - -.ui.three.column.table td { - width: 33.3333%; -} - -.ui.four.column.table td { - width: 25%; -} - -.ui.five.column.table td { - width: 20%; -} - -.ui.six.column.table td { - width: 16.66667%; -} - -.ui.seven.column.table td { - width: 14.2857%; -} - -.ui.eight.column.table td { - width: 12.5%; -} - -.ui.nine.column.table td { - width: 11.1111%; -} - -.ui.ten.column.table td { - width: 10%; -} - -.ui.eleven.column.table td { - width: 9.0909%; -} - -.ui.twelve.column.table td { - width: 8.3333%; -} - -.ui.thirteen.column.table td { - width: 7.6923%; -} - -.ui.fourteen.column.table td { - width: 7.1428%; -} - -.ui.fifteen.column.table td { - width: 6.6666%; -} - -.ui.sixteen.column.table td { - width: 6.25%; -} - -/* Column Width */ - -.ui.table th.one.wide, -.ui.table td.one.wide { - width: 6.25%; -} - -.ui.table th.two.wide, -.ui.table td.two.wide { - width: 12.5%; -} - -.ui.table th.three.wide, -.ui.table td.three.wide { - width: 18.75%; -} - -.ui.table th.four.wide, -.ui.table td.four.wide { - width: 25%; -} - -.ui.table th.five.wide, -.ui.table td.five.wide { - width: 31.25%; -} - -.ui.table th.six.wide, -.ui.table td.six.wide { - width: 37.5%; -} - -.ui.table th.seven.wide, -.ui.table td.seven.wide { - width: 43.75%; -} - -.ui.table th.eight.wide, -.ui.table td.eight.wide { - width: 50%; -} - -.ui.table th.nine.wide, -.ui.table td.nine.wide { - width: 56.25%; -} - -.ui.table th.ten.wide, -.ui.table td.ten.wide { - width: 62.5%; -} - -.ui.table th.eleven.wide, -.ui.table td.eleven.wide { - width: 68.75%; -} - -.ui.table th.twelve.wide, -.ui.table td.twelve.wide { - width: 75%; -} - -.ui.table th.thirteen.wide, -.ui.table td.thirteen.wide { - width: 81.25%; -} - -.ui.table th.fourteen.wide, -.ui.table td.fourteen.wide { - width: 87.5%; -} - -.ui.table th.fifteen.wide, -.ui.table td.fifteen.wide { - width: 93.75%; -} - -.ui.table th.sixteen.wide, -.ui.table td.sixteen.wide { - width: 100%; -} - -/*-------------- - Celled ----------------*/ - -.ui.celled.table { - color: rgba(0, 0, 0, 0.8); -} - -.ui.celled.table tbody tr, -.ui.celled.table tfoot tr { - border: none; -} - -.ui.celled.table th, -.ui.celled.table td { - border: 1px solid rgba(0, 0, 0, 0.1); -} - -/* Coupling with segment */ - -.ui.celled.table.segment th:first-child, -.ui.celled.table.segment td:first-child { - border-left: none; -} - -.ui.celled.table.segment th:last-child, -.ui.celled.table.segment td:last-child { - border-right: none; -} - -/*-------------- - Sortable ----------------*/ - -.ui.sortable.table thead th { - cursor: pointer; - white-space: nowrap; -} - -.ui.sortable.table thead th.sorted, -.ui.sortable.table thead th.sorted:hover { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.ui.sortable.table thead th:after { - display: inline-block; - content: ''; - width: 1em; - opacity: 0.8; - margin: 0em 0em 0em 0.5em; - font-family: 'Icons'; - font-style: normal; - font-weight: normal; - text-decoration: inherit; -} - -.ui.sortable.table thead th.ascending:after { - content: '\25b4'; -} - -.ui.sortable.table thead th.descending:after { - content: '\25be'; -} - -/*-------------- - Inverted ----------------*/ - -/* Text Color */ - -.ui.inverted.table td { - color: rgba(255, 255, 255, 0.9); -} - -.ui.inverted.table th { - background-color: rgba(0, 0, 0, 0.15); - color: rgba(255, 255, 255, 0.9); -} - -/* Stripes */ - -.ui.inverted.table tbody tr:nth-child(2n) { - background-color: rgba(255, 255, 255, 0.06); -} - -/*-------------- - Definition ----------------*/ - -.ui.definition.table td:first-child { - font-weight: bold; -} - -/*-------------- - Collapsing ----------------*/ - -.ui.collapsing.table { - width: auto; -} - -/*-------------- - Basic ----------------*/ - -.ui.basic.table th { - background-color: transparent; - padding: 0.5em; -} - -.ui.basic.table tbody tr { - border-bottom: 1px solid rgba(0, 0, 0, 0.03); -} - -.ui.basic.table td { - padding: 0.8em 0.5em; -} - -.ui.basic.table tbody tr:nth-child(2n) { - background-color: transparent !important; -} - -/*-------------- - Padded ----------------*/ - -.ui.padded.table th, -.ui.padded.table td { - padding: 0.8em 1em; -} - -.ui.compact.table th { - padding: 0.3em 0.5em; -} - -.ui.compact.table td { - padding: 0.2em 0.5em; -} - -/*-------------- - Sizes ----------------*/ - -/* Small */ - -.ui.small.table { - font-size: 0.875em; -} - -/* Standard */ - -.ui.table { - font-size: 1em; -} - -/* Large */ - -.ui.large.table { - font-size: 1.1em; -} -/* - * # Semantic - basic.Icon (Basic) - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - basic.Icon -*******************************/ - -@font-face { - font-family: 'Basic Icons'; - src: url(../fonts/basic.icons.eot); - src: url(../fonts/basic.icons.eot?#iefix) format('embedded-opentype'), url(../fonts/basic.icons.woff) format('woff'), url(../fonts/basic.icons.ttf) format('truetype'), url(../fonts/basic.icons.svg#basic.icons) format('svg'); - font-style: normal; - font-weight: normal; - font-variant: normal; - text-decoration: inherit; - text-transform: none; -} - -i.basic.icon { - display: inline-block; - opacity: 0.75; - margin: 0em 0.25em 0em 0em; - width: 18px; - height: 1em; - font-family: 'Basic Icons'; - font-style: normal; - line-height: 1; - font-weight: normal; - text-decoration: inherit; - text-align: center; - speak: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-font-smoothing: antialiased; - -moz-font-smoothing: antialiased; - font-smoothing: antialiased; -} - -/* basic.icons available */ - -i.basic.icon.circle.attention:before { - content: '\2757'; -} - -/* '❗' */ - -i.basic.icon.circle.help:before { - content: '\e704'; -} - -/* '' */ - -i.basic.icon.circle.info:before { - content: '\e705'; -} - -/* '' */ - -i.basic.icon.add:before { - content: '\2795'; -} - -/* '➕' */ - -i.basic.icon.chart:before { - content: '📈'; -} - -/* '\1f4c8' */ - -i.basic.icon.chart.bar:before { - content: '📊'; -} - -/* '\1f4ca' */ - -i.basic.icon.chart.pie:before { - content: '\e7a2'; -} - -/* '' */ - -i.basic.icon.resize.full:before { - content: '\e744'; -} - -/* '' */ - -i.basic.icon.resize.horizontal:before { - content: '\2b0d'; -} - -/* '⬍' */ - -i.basic.icon.resize.small:before { - content: '\e746'; -} - -/* '' */ - -i.basic.icon.resize.vertical:before { - content: '\2b0c'; -} - -/* '⬌' */ - -i.basic.icon.down:before { - content: '\2193'; -} - -/* '↓' */ - -i.basic.icon.down.triangle:before { - content: '\25be'; -} - -/* '▾' */ - -i.basic.icon.down.arrow:before { - content: '\e75c'; -} - -/* '' */ - -i.basic.icon.left:before { - content: '\2190'; -} - -/* '←' */ - -i.basic.icon.left.triangle:before { - content: '\25c2'; -} - -/* '◂' */ - -i.basic.icon.left.arrow:before { - content: '\e75d'; -} - -/* '' */ - -i.basic.icon.right:before { - content: '\2192'; -} - -/* '→' */ - -i.basic.icon.right.triangle:before { - content: '\25b8'; -} - -/* '▸' */ - -i.basic.icon.right.arrow:before { - content: '\e75e'; -} - -/* '' */ - -i.basic.icon.up:before { - content: '\2191'; -} - -/* '↑' */ - -i.basic.icon.up.triangle:before { - content: '\25b4'; -} - -/* '▴' */ - -i.basic.icon.up.arrow:before { - content: '\e75f'; -} - -/* '' */ - -i.basic.icon.folder:before { - content: '\e810'; -} - -/* '' */ - -i.basic.icon.open.folder:before { - content: '📂'; -} - -/* '\1f4c2' */ - -i.basic.icon.globe:before { - content: '𝌍'; -} - -/* '\1d30d' */ - -i.basic.icon.desk.globe:before { - content: '🌐'; -} - -/* '\1f310' */ - -i.basic.icon.star:before { - content: '\e801'; -} - -/* '' */ - -i.basic.icon.star.empty:before { - content: '\e800'; -} - -/* '' */ - -i.basic.icon.star.half:before { - content: '\e701'; -} - -/* '' */ - -i.basic.icon.lock:before { - content: '🔒'; -} - -/* '\1f512' */ - -i.basic.icon.unlock:before { - content: '🔓'; -} - -/* '\1f513' */ - -i.basic.icon.layout.grid:before { - content: '\e80c'; -} - -/* '' */ - -i.basic.icon.layout.block:before { - content: '\e708'; -} - -/* '' */ - -i.basic.icon.layout.list:before { - content: '\e80b'; -} - -/* '' */ - -i.basic.icon.heart.empty:before { - content: '\2661'; -} - -/* '♡' */ - -i.basic.icon.heart:before { - content: '\2665'; -} - -/* '♥' */ - -i.basic.icon.asterisk:before { - content: '\2731'; -} - -/* '✱' */ - -i.basic.icon.attachment:before { - content: '📎'; -} - -/* '\1f4ce' */ - -i.basic.icon.attention:before { - content: '\26a0'; -} - -/* '⚠' */ - -i.basic.icon.trophy:before { - content: '🏉'; -} - -/* '\1f3c9' */ - -i.basic.icon.barcode:before { - content: '\e792'; -} - -/* '' */ - -i.basic.icon.cart:before { - content: '\e813'; -} - -/* '' */ - -i.basic.icon.block:before { - content: '🚫'; -} - -/* '\1f6ab' */ - -i.basic.icon.book:before { - content: '📖'; -} - -i.basic.icon.bookmark:before { - content: '🔖'; -} - -/* '\1f516' */ - -i.basic.icon.calendar:before { - content: '📅'; -} - -/* '\1f4c5' */ - -i.basic.icon.cancel:before { - content: '\2716'; -} - -/* '✖' */ - -i.basic.icon.close:before { - content: '\e80d'; -} - -/* '' */ - -i.basic.icon.color:before { - content: '\e794'; -} - -/* '' */ - -i.basic.icon.chat:before { - content: '\e720'; -} - -/* '' */ - -i.basic.icon.check:before { - content: '\2611'; -} - -/* '☑' */ - -i.basic.icon.time:before { - content: '🕔'; -} - -/* '\1f554' */ - -i.basic.icon.cloud:before { - content: '\2601'; -} - -/* '☁' */ - -i.basic.icon.code:before { - content: '\e714'; -} - -/* '' */ - -i.basic.icon.email:before { - content: '\40'; -} - -/* '@' */ - -i.basic.icon.settings:before { - content: '\26ef'; -} - -/* '⛯' */ - -i.basic.icon.setting:before { - content: '\2699'; -} - -/* '⚙' */ - -i.basic.icon.comment:before { - content: '\e802'; -} - -/* '' */ - -i.basic.icon.clockwise.counter:before { - content: '\27f2'; -} - -/* '⟲' */ - -i.basic.icon.clockwise:before { - content: '\27f3'; -} - -/* '⟳' */ - -i.basic.icon.cube:before { - content: '\e807'; -} - -/* '' */ - -i.basic.icon.direction:before { - content: '\27a2'; -} - -/* '➢' */ - -i.basic.icon.doc:before { - content: '📄'; -} - -/* '\1f4c4' */ - -i.basic.icon.docs:before { - content: '\e736'; -} - -/* '' */ - -i.basic.icon.dollar:before { - content: '💵'; -} - -/* '\1f4b5' */ - -i.basic.icon.paint:before { - content: '\e7b5'; -} - -/* '' */ - -i.basic.icon.edit:before { - content: '\270d'; -} - -/* '✍' */ - -i.basic.icon.eject:before { - content: '\2ecf'; -} - -/* '⻏' */ - -i.basic.icon.export:before { - content: '\e715'; -} - -/* '' */ - -i.basic.icon.hide:before { - content: '\e80f'; -} - -/* '' */ - -i.basic.icon.unhide:before { - content: '\e70b'; -} - -/* '' */ - -i.basic.icon.facebook:before { - content: '\f301'; -} - -/* '' */ - -i.basic.icon.fast-forward:before { - content: '\e804'; -} - -/* '' */ - -i.basic.icon.fire:before { - content: '🔥'; -} - -/* '\1f525' */ - -i.basic.icon.flag:before { - content: '\2691'; -} - -/* '⚑' */ - -i.basic.icon.lightning:before { - content: '\26a1'; -} - -/* '⚡' */ - -i.basic.icon.lab:before { - content: '\68'; -} - -/* 'h' */ - -i.basic.icon.flight:before { - content: '\2708'; -} - -/* '✈' */ - -i.basic.icon.forward:before { - content: '\27a6'; -} - -/* '➦' */ - -i.basic.icon.gift:before { - content: '🎁'; -} - -/* '\1f381' */ - -i.basic.icon.github:before { - content: '\f308'; -} - -/* '' */ - -i.basic.icon.globe:before { - content: '\e817'; -} - -/* '' */ - -i.basic.icon.headphones:before { - content: '🎧'; -} - -/* '\1f3a7' */ - -i.basic.icon.question:before { - content: '\2753'; -} - -/* '❓' */ - -i.basic.icon.home:before { - content: '\2302'; -} - -/* '⌂' */ - -i.basic.icon.i:before { - content: '\2139'; -} - -/* 'ℹ' */ - -i.basic.icon.idea:before { - content: '💡'; -} - -/* '\1f4a1' */ - -i.basic.icon.open:before { - content: '🔗'; -} - -/* '\1f517' */ - -i.basic.icon.content:before { - content: '\e782'; -} - -/* '' */ - -i.basic.icon.location:before { - content: '\e724'; -} - -/* '' */ - -i.basic.icon.mail:before { - content: '\2709'; -} - -/* '✉' */ - -i.basic.icon.mic:before { - content: '🎤'; -} - -/* '\1f3a4' */ - -i.basic.icon.minus:before { - content: '\2d'; -} - -/* '-' */ - -i.basic.icon.money:before { - content: '💰'; -} - -/* '\1f4b0' */ - -i.basic.icon.off:before { - content: '\e78e'; -} - -/* '' */ - -i.basic.icon.pause:before { - content: '\e808'; -} - -/* '' */ - -i.basic.icon.photos:before { - content: '\e812'; -} - -/* '' */ - -i.basic.icon.photo:before { - content: '🌄'; -} - -/* '\1f304' */ - -i.basic.icon.pin:before { - content: '📌'; -} - -/* '\1f4cc' */ - -i.basic.icon.play:before { - content: '\e809'; -} - -/* '' */ - -i.basic.icon.plus:before { - content: '\2b'; -} - -/* '+' */ - -i.basic.icon.print:before { - content: '\e716'; -} - -/* '' */ - -i.basic.icon.rss:before { - content: '\e73a'; -} - -/* '' */ - -i.basic.icon.search:before { - content: '🔍'; -} - -/* '\1f50d' */ - -i.basic.icon.shuffle:before { - content: '\e803'; -} - -/* '' */ - -i.basic.icon.tag:before { - content: '\e80a'; -} - -/* '' */ - -i.basic.icon.tags:before { - content: '\e70d'; -} - -/* '' */ - -i.basic.icon.terminal:before { - content: '\e7ac'; -} - -/* '' */ - -i.basic.icon.thumbs.down:before { - content: '👎'; -} - -/* '\1f44e' */ - -i.basic.icon.thumbs.up:before { - content: '👍'; -} - -/* '\1f44d' */ - -i.basic.icon.to-end:before { - content: '\e806'; -} - -/* '' */ - -i.basic.icon.to-start:before { - content: '\e805'; -} - -/* '' */ - -i.basic.icon.top.list:before { - content: '🏆'; -} - -/* '\1f3c6' */ - -i.basic.icon.trash:before { - content: '\e729'; -} - -/* '' */ - -i.basic.icon.twitter:before { - content: '\f303'; -} - -/* '' */ - -i.basic.icon.upload:before { - content: '\e711'; -} - -/* '' */ - -i.basic.icon.user.add:before { - content: '\e700'; -} - -/* '' */ - -i.basic.icon.user:before { - content: '👤'; -} - -/* '\1f464' */ - -i.basic.icon.community:before { - content: '\e814'; -} - -/* '' */ - -i.basic.icon.users:before { - content: '👥'; -} - -/* '\1f465' */ - -i.basic.icon.id:before { - content: '\e722'; -} - -/* '' */ - -i.basic.icon.url:before { - content: '🔗'; -} - -/* '\1f517' */ - -i.basic.icon.zoom.in:before { - content: '\e750'; -} - -/* '' */ - -i.basic.icon.zoom.out:before { - content: '\e751'; -} - -/* '' */ - -/*-------------- - Spacing Fix ----------------*/ - -/* dropdown arrows are to the right */ - -i.dropdown.basic.icon { - margin: 0em 0em 0em 0.5em; -} - -/* stars are usually consecutive */ - -i.basic.icon.star { - width: auto; - margin: 0em; -} - -/* left side basic.icons */ - -i.basic.icon.left, -i.basic.icon.left, -i.basic.icon.left { - width: auto; - margin: 0em 0.5em 0em 0em; -} - -/* right side basic.icons */ - -i.basic.icon.search, -i.basic.icon.up, -i.basic.icon.down, -i.basic.icon.right { - width: auto; - margin: 0em 0em 0em 0.5em; -} - -/*-------------- - Aliases ----------------*/ - -/* aliases for convenience */ - -i.basic.icon.delete:before { - content: '\e80d'; -} - -/* '' */ - -i.basic.icon.dropdown:before { - content: '\25be'; -} - -/* '▾' */ - -i.basic.icon.help:before { - content: '\e704'; -} - -/* '' */ - -i.basic.icon.info:before { - content: '\e705'; -} - -/* '' */ - -i.basic.icon.error:before { - content: '\e80d'; -} - -/* '' */ - -i.basic.icon.dislike:before { - content: '\2661'; -} - -/* '♡' */ - -i.basic.icon.like:before { - content: '\2665'; -} - -/* '♥' */ - -i.basic.icon.eye:before { - content: '\e80f'; -} - -/* '' */ - -i.basic.icon.eye.hidden:before { - content: '\e70b'; -} - -/* '' */ - -i.basic.icon.date:before { - content: '📅'; -} - -/* '\1f4c5' */ - -/******************************* - States -*******************************/ - -i.basic.icon.hover { - opacity: 1; -} - -i.basic.icon.active { - opacity: 1; -} - -i.emphasized.basic.icon { - opacity: 1; -} - -i.basic.icon.disabled { - opacity: 0.3; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Link ---------------------*/ - -i.link.basic.icon { - cursor: pointer; - opacity: 0.7; - -webkit-transition: opacity 0.3s ease-out; - transition: opacity 0.3s ease-out; -} - -.link.basic.icon:hover { - opacity: 1 !important; -} - -/*------------------- - Circular ---------------------*/ - -i.circular.basic.icon { - border-radius: 500px !important; - padding: 0.5em 0em !important; - -webkit-box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - line-height: 1 !important; - width: 2em !important; - height: 2em !important; -} - -i.circular.inverted.basic.icon { - border: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -/*------------------- - Flipped ---------------------*/ - -i.vertically.flipped.basic.icon { - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} - -i.horizontally.flipped.basic.icon { - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -/*------------------- - Rotated ---------------------*/ - -i.left.rotated.basic.icon { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); -} - -i.right.rotated.basic.icon { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} - -/*------------------- - Square ---------------------*/ - -i.square.basic.icon { - width: 2em; - height: 2em; - padding: 0.5em 0.35em !important; - -webkit-box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - vertical-align: baseline; -} - -i.square.basic.icon:before { - vertical-align: middle; -} - -i.square.inverted.basic.icon { - border: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -/*------------------- - Inverted ---------------------*/ - -i.inverted.basic.icon { - background-color: #222222; - color: #FFFFFF; -} - -/*------------------- - Colors ---------------------*/ - -i.blue.basic.icon { - color: #6ECFF5 !important; -} - -i.black.basic.icon { - color: #5C6166 !important; -} - -i.green.basic.icon { - color: #A1CF64 !important; -} - -i.red.basic.icon { - color: #D95C5C !important; -} - -i.purple.basic.icon { - color: #564F8A !important; -} - -i.teal.basic.icon { - color: #00B5AD !important; -} - -/*------------------- - Inverted Colors ---------------------*/ - -i.inverted.black.basic.icon { - background-color: #5C6166 !important; - color: #FFFFFF !important; -} - -i.inverted.blue.basic.icon { - background-color: #6ECFF5 !important; - color: #FFFFFF !important; -} - -i.inverted.green.basic.icon { - background-color: #A1CF64 !important; - color: #FFFFFF !important; -} - -i.inverted.red.basic.icon { - background-color: #D95C5C !important; - color: #FFFFFF !important; -} - -i.inverted.purple.basic.icon { - background-color: #564F8A !important; - color: #FFFFFF !important; -} - -i.inverted.teal.basic.icon { - background-color: #00B5AD !important; - color: #FFFFFF !important; -} - -/*------------------- - Sizes ---------------------*/ - -i.small.basic.icon { - font-size: 0.875em; -} - -i.basic.icon { - font-size: 1em; -} - -i.large.basic.icon { - font-size: 1.5em; - margin-right: 0.2em; - vertical-align: middle; -} - -i.big.basic.icon { - font-size: 2em; - margin-right: 0.5em; - vertical-align: middle; -} - -i.huge.basic.icon { - font-size: 4em; - margin-right: 0.75em; - vertical-align: middle; -} - -i.massive.basic.icon { - font-size: 8em; - margin-right: 1em; - vertical-align: middle; -} -/* - * # Semantic - Button - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Button -*******************************/ - -/* Prototype */ - -.ui.button { - cursor: pointer; - display: inline-block; - vertical-align: middle; - min-height: 1em; - outline: none; - border: none; - background-color: #FAFAFA; - color: #808080; - margin: 0em; - padding: 0.8em 1.5em; - font-size: 1rem; - text-transform: uppercase; - line-height: 1; - font-weight: bold; - font-style: normal; - text-align: center; - text-decoration: none; - background-image: -webkit-gradient(linear, top left, bottom left, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.05))); - background-image: -webkit-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05)); - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.05))); - background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05)); - border-radius: 0.25em; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.08) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.08) inset; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-transition: opacity 0.25s ease, background-color 0.25s ease, color 0.25s ease, background 0.25s ease, -webkit-box-shadow 0.25s ease; - transition: opacity 0.25s ease, background-color 0.25s ease, color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease; -} - -/******************************* - States -*******************************/ - -/*-------------- - Active ----------------*/ - -.ui.buttons .active.button, -.ui.active.button { - background-color: #EAEAEA; - background-image: none; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05) inset !important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05) inset !important; - color: rgba(0, 0, 0, 0.7); -} - -/*-------------- - Hover ----------------*/ - -.ui.button:hover { - background-image: -webkit-gradient(linear, top left, bottom left, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.08))); - background-image: -webkit-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.08)); - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.08))); - background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.08)); - color: rgba(0, 0, 0, 0.7); -} - -.ui.button.active:hover { - background-image: none; -} - -.ui.button:hover .icon, -.ui.button.hover .icon { - opacity: 0.85; -} - -/*-------------- - Down ----------------*/ - -.ui.button:active, -.ui.active.button:active { - background-color: #F1F1F1; - color: rgba(0, 0, 0, 0.7); - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05) inset !important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.05) inset !important; -} - -/*-------------- - Loading ----------------*/ - -.ui.loading.button { - position: relative; - cursor: default; - background-color: #FFFFFF !important; - color: transparent !important; - -webkit-transition: all 0s linear; - transition: all 0s linear; -} - -.ui.loading.button:after { - position: absolute; - top: 0em; - left: 0em; - width: 100%; - height: 100%; - content: ''; - background: transparent url(../images/loader-mini.gif) no-repeat 50% 50%; -} - -.ui.labeled.icon.loading.button .icon { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} - -/*------------------- - Disabled ---------------------*/ - -.ui.disabled.button, -.ui.disabled.button:hover, -.ui.disabled.button.active { - background-color: #DDDDDD !important; - cursor: default; - color: rgba(0, 0, 0, 0.5) !important; - opacity: 0.3 !important; - background-image: none !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -/******************************* - Types -*******************************/ - -/*------------------- - Animated ---------------------*/ - -.ui.animated.button { - position: relative; - overflow: hidden; -} - -.ui.animated.button .visible.content { - position: relative; -} - -.ui.animated.button .hidden.content { - position: absolute; - width: 100%; -} - -/* Horizontal */ - -.ui.animated.button .visible.content, -.ui.animated.button .hidden.content { - -webkit-transition: right 0.3s ease 0s; - transition: right 0.3s ease 0s; -} - -.ui.animated.button .visible.content { - left: auto; - right: 0%; -} - -.ui.animated.button .hidden.content { - top: 50%; - left: auto; - right: -100%; - margin-top: -0.55em; -} - -.ui.animated.button:hover .visible.content { - left: auto; - right: 200%; -} - -.ui.animated.button:hover .hidden.content { - left: auto; - right: 0%; -} - -/* Vertical */ - -.ui.vertical.animated.button .visible.content, -.ui.vertical.animated.button .hidden.content { - -webkit-transition: top 0.3s ease 0s, -webkit-transform 0.3s ease 0s; - transition: top 0.3s ease 0s, transform 0.3s ease 0s; -} - -.ui.vertical.animated.button .visible.content { - -webkit-transform: translateY(0%); - -ms-transform: translateY(0%); - transform: translateY(0%); - right: auto; -} - -.ui.vertical.animated.button .hidden.content { - top: -100%; - left: 0%; - right: auto; -} - -.ui.vertical.animated.button:hover .visible.content { - -webkit-transform: translateY(200%); - -ms-transform: translateY(200%); - transform: translateY(200%); - right: auto; -} - -.ui.vertical.animated.button:hover .hidden.content { - top: 50%; - right: auto; -} - -/* Fade */ - -.ui.fade.animated.button .visible.content, -.ui.fade.animated.button .hidden.content { - -webkit-transition: opacity 0.3s ease 0s, -webkit-transform 0.3s ease 0s; - transition: opacity 0.3s ease 0s, transform 0.3s ease 0s; -} - -.ui.fade.animated.button .visible.content { - left: auto; - right: auto; - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); -} - -.ui.fade.animated.button .hidden.content { - opacity: 0; - left: 0%; - right: auto; - -webkit-transform: scale(1.2); - -ms-transform: scale(1.2); - transform: scale(1.2); -} - -.ui.fade.animated.button:hover .visible.content { - left: auto; - right: auto; - opacity: 0; - -webkit-transform: scale(0.7); - -ms-transform: scale(0.7); - transform: scale(0.7); -} - -.ui.fade.animated.button:hover .hidden.content { - left: 0%; - right: auto; - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); -} - -/*------------------- - Primary ---------------------*/ - -.ui.primary.buttons .button, -.ui.primary.button { - background-color: #D95C5C; - color: #FFFFFF; -} - -.ui.primary.buttons .button:hover, -.ui.primary.button:hover, -.ui.primary.buttons .active.button, -.ui.primary.button.active { - background-color: #E75859; - color: #FFFFFF; -} - -.ui.primary.buttons .button:active, -.ui.primary.button:active { - background-color: #D24B4C; - color: #FFFFFF; -} - -/*------------------- - Secondary ---------------------*/ - -.ui.secondary.buttons .button, -.ui.secondary.button { - background-color: #00B5AD; - color: #FFFFFF; -} - -.ui.secondary.buttons .button:hover, -.ui.secondary.button:hover, -.ui.secondary.buttons .active.button, -.ui.secondary.button.active { - background-color: #009A93; - color: #FFFFFF; -} - -.ui.secondary.buttons .button:active, -.ui.secondary.button:active { - background-color: #00847E; - color: #FFFFFF; -} - -/*------------------- - Social ---------------------*/ - -/* Facebook */ - -.ui.facebook.button { - background-color: #3B579D; - color: #FFFFFF; -} - -.ui.facebook.button:hover { - background-color: #3A59A9; - color: #FFFFFF; -} - -.ui.facebook.button:active { - background-color: #334F95; - color: #FFFFFF; -} - -/* Twitter */ - -.ui.twitter.button { - background-color: #4092CC; - color: #FFFFFF; -} - -.ui.twitter.button:hover { - background-color: #399ADE; - color: #FFFFFF; -} - -.ui.twitter.button:active { - background-color: #3283BC; - color: #FFFFFF; -} - -/* Google Plus */ - -.ui.google.plus.button { - background-color: #D34836; - color: #FFFFFF; -} - -.ui.google.plus.button:hover { - background-color: #E3432E; - color: #FFFFFF; -} - -.ui.google.plus.button:active { - background-color: #CA3A27; - color: #FFFFFF; -} - -/* Linked In */ - -.ui.linkedin.button { - background-color: #1F88BE; - color: #FFFFFF; -} - -.ui.linkedin.button:hover { - background-color: #1394D6; - color: #FFFFFF; -} - -.ui.linkedin.button:active { - background-color: #1179AE; - color: #FFFFFF; -} - -/* YouTube */ - -.ui.youtube.button { - background-color: #CC181E; - color: #FFFFFF; -} - -.ui.youtube.button:hover { - background-color: #DF0209; - color: #FFFFFF; -} - -.ui.youtube.button:active { - background-color: #A50006; - color: #FFFFFF; -} - -/* Instagram */ - -.ui.instagram.button { - background-color: #49769C; - color: #FFFFFF; -} - -.ui.instagram.button:hover { - background-color: #4781B1; - color: #FFFFFF; -} - -.ui.instagram.button:active { - background-color: #38658A; - color: #FFFFFF; -} - -/* Pinterest */ - -.ui.pinterest.button { - background-color: #00ACED; - color: #FFFFFF; -} - -.ui.pinterest.button:hover { - background-color: #00B9FF; - color: #FFFFFF; -} - -.ui.pinterest.button:active { - background-color: #009EDA; - color: #FFFFFF; -} - -/*-------------- - Icon ----------------*/ - -.ui.button > .icon { - margin-right: 0.6em; - line-height: 1; - -webkit-transition: opacity 0.1s ease; - transition: opacity 0.1s ease; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Floated ---------------------*/ - -.ui.left.floated.buttons, -.ui.left.floated.button { - float: left; - margin-right: 0.25em; -} - -.ui.right.floated.buttons, -.ui.right.floated.button { - float: right; - margin-left: 0.25em; -} - -/*------------------- - Sizes ---------------------*/ - -.ui.buttons .button, -.ui.button { - font-size: 1rem; -} - -.ui.mini.buttons .button, -.ui.mini.buttons .or, -.ui.mini.button { - font-size: 0.8rem; -} - -.ui.mini.buttons .button, -.ui.mini.button { - padding: 0.6em 0.8em; -} - -.ui.mini.icon.buttons .button, -.ui.mini.buttons .icon.button { - padding: 0.6em 0.6em; -} - -.ui.tiny.buttons .button, -.ui.tiny.buttons .or, -.ui.tiny.button { - font-size: 0.875em; -} - -.ui.tiny.buttons .button, -.ui.tiny.buttons .button, -.ui.tiny.button { - padding: 0.6em 0.8em; -} - -.ui.tiny.icon.buttons .button, -.ui.tiny.buttons .icon.button { - padding: 0.6em 0.6em; -} - -.ui.small.buttons .button, -.ui.small.buttons .or, -.ui.small.button { - font-size: 0.875rem; -} - -.ui.large.buttons .button, -.ui.large.buttons .or, -.ui.large.button { - font-size: 1.125rem; -} - -.ui.big.buttons .button, -.ui.big.buttons .or, -.ui.big.button { - font-size: 1.25rem; -} - -.ui.huge.buttons .button, -.ui.huge.buttons .or, -.ui.huge.button { - font-size: 1.375rem; -} - -.ui.massive.buttons .button, -.ui.massive.buttons .or, -.ui.massive.button { - font-size: 1.5rem; - font-weight: bold; -} - -/* Or resize */ - -.ui.tiny.buttons .or:before, -.ui.mini.buttons .or:before { - width: 1.45em; - height: 1.55em; - line-height: 1.4; - margin-left: -0.725em; - margin-top: -0.25em; -} - -.ui.tiny.buttons .or:after, -.ui.mini.buttons .or:after { - height: 1.45em; -} - -/* loading */ - -.ui.huge.loading.button:after { - background-image: url(../images/loader-small.gif); -} - -.ui.massive.buttons .loading.button:after, -.ui.gigantic.buttons .loading.button:after, -.ui.massive.loading.button:after, -.ui.gigantic.loading.button:after { - background-image: url(../images/loader-medium.gif); -} - -.ui.huge.loading.button:after, -.ui.huge.loading.button.active:after { - background-image: url(../images/loader-small.gif); -} - -.ui.massive.buttons .loading.button:after, -.ui.gigantic.buttons .loading.button:after, -.ui.massive.loading.button:after, -.ui.gigantic.loading.button:after, -.ui.massive.buttons .loading.button.active:after, -.ui.gigantic.buttons .loading.button.active:after, -.ui.massive.loading.button.active:after, -.ui.gigantic.loading.button.active:after { - background-image: url(../images/loader-medium.gif); -} - -/*-------------- - Icon Only ----------------*/ - -.ui.icon.buttons .button, -.ui.icon.button { - padding: 0.8em; -} - -.ui.icon.buttons .button > .icon, -.ui.icon.button > .icon { - opacity: 0.9; - margin: 0em; - vertical-align: top; -} - -/*------------------- - Basic ---------------------*/ - -.ui.basic.buttons .button, -.ui.basic.button { - background-color: transparent !important; - background-image: none; - color: #808080 !important; - font-weight: normal; - text-transform: none; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; -} - -.ui.basic.buttons { - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - border-radius: 0.25em; -} - -.ui.basic.buttons .button:hover, -.ui.basic.button:hover { - background-image: none; - color: #7F7F7F !important; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18) inset; -} - -.ui.basic.buttons .button:active, -.ui.basic.button:active { - background-color: rgba(0, 0, 0, 0.02) !important; - color: #7F7F7F !important; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; -} - -.ui.basic.buttons .button.active, -.ui.basic.button.active { - background-color: rgba(0, 0, 0, 0.05); - color: #7F7F7F; - -webkit-box-shadow: 0px 0px 0px 1px #BDBDBD inset; - box-shadow: 0px 0px 0px 1px #BDBDBD inset; -} - -.ui.basic.buttons .button.active:hover, -.ui.basic.button.active:hover { - background-color: rgba(0, 0, 0, 0.1); -} - -/* Inverted */ - -.ui.basic.inverted.buttons .button, -.ui.basic.inverted.button { - color: #FAFAFA !important; - -webkit-box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.3) inset; - box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.3) inset; -} - -.ui.basic.inverted.buttons .button:hover, -.ui.basic.inverted.button:hover { - background-image: none; - color: #FFFFFF !important; - -webkit-box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.5) inset; - box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.5) inset; -} - -.ui.basic.inverted.buttons .button:active, -.ui.basic.inverted.button:active { - background-color: rgba(255, 255, 255, 0.05) !important; - color: #FFFFFF !important; - -webkit-box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.8) inset !important; - box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.8) inset !important; -} - -.ui.basic.inverted.buttons .button.active, -.ui.basic.inverted.button.active { - background-color: rgba(255, 255, 255, 0.5); - color: #FFFFFF; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.basic.inverted.buttons .button.active:hover, -.ui.basic.inverted.button.active:hover { - background-color: rgba(0, 0, 0, 0.1); -} - -/* Basic Group */ - -.ui.basic.buttons .button { - border-left: 1px solid rgba(0, 0, 0, 0.1); - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.basic.buttons .button:hover, -.ui.basic.buttons .button:active { - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.basic.buttons .button.active, -.ui.basic.buttons .button.active:hover { - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2) inset; -} - -/*-------------- - Labeled Icon ----------------*/ - -.ui.labeled.icon.buttons .button, -.ui.labeled.icon.button { - position: relative; - padding-left: 4em !important; - padding-right: 1.4em !important; -} - -.ui.labeled.icon.buttons > .button > .icon, -.ui.labeled.icon.button > .icon { - position: absolute; - top: 0em; - left: 0em; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - width: 2.75em; - height: 100%; - padding-top: 0.8em; - background-color: rgba(0, 0, 0, 0.05); - text-align: center; - border-radius: 0.25em 0px 0px 0.25em; - line-height: 1; - -webkit-box-shadow: -1px 0px 0px 0px rgba(0, 0, 0, 0.05) inset; - box-shadow: -1px 0px 0px 0px rgba(0, 0, 0, 0.05) inset; -} - -.ui.labeled.icon.buttons .button > .icon { - border-radius: 0em; -} - -.ui.labeled.icon.buttons .button:first-child > .icon { - border-top-left-radius: 0.25em; - border-bottom-left-radius: 0.25em; -} - -.ui.labeled.icon.buttons .button:last-child > .icon { - border-top-right-radius: 0.25em; - border-bottom-right-radius: 0.25em; -} - -.ui.vertical.labeled.icon.buttons .button:first-child > .icon { - border-radius: 0em; - border-top-left-radius: 0.25em; -} - -.ui.vertical.labeled.icon.buttons .button:last-child > .icon { - border-radius: 0em; - border-bottom-left-radius: 0.25em; -} - -.ui.right.labeled.icon.button { - padding-left: 1.4em !important; - padding-right: 4em !important; -} - -.ui.left.fluid.labeled.icon.button, -.ui.right.fluid.labeled.icon.button { - padding-left: 1.4em !important; - padding-right: 1.4em !important; -} - -.ui.right.labeled.icon.button .icon { - left: auto; - right: 0em; - border-radius: 0em 0.25em 0.25em 0em; - -webkit-box-shadow: 1px 0px 0px 0px rgba(0, 0, 0, 0.05) inset; - box-shadow: 1px 0px 0px 0px rgba(0, 0, 0, 0.05) inset; -} - -/*-------------- - Toggle ----------------*/ - -/* Toggle (Modifies active state to give affordances) */ - -.ui.toggle.buttons .active.button, -.ui.buttons .button.toggle.active, -.ui.button.toggle.active { - background-color: #5BBD72 !important; - color: #FFFFFF !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -.ui.button.toggle.active:hover { - background-color: #58CB73 !important; - color: #FFFFFF !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} - -/*-------------- - Circular ----------------*/ - -.ui.circular.button { - border-radius: 10em; -} - -/*-------------- - Attached ----------------*/ - -.ui.attached.button { - display: block; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) !important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) !important; -} - -.ui.attached.top.button { - border-radius: 0.25em 0.25em 0em 0em; -} - -.ui.attached.bottom.button { - border-radius: 0em 0em 0.25em 0.25em; -} - -.ui.attached.left.button { - display: inline-block; - border-left: none; - padding-right: 0.75em; - text-align: right; - border-radius: 0.25em 0em 0em 0.25em; -} - -.ui.attached.right.button { - display: inline-block; - padding-left: 0.75em; - text-align: left; - border-radius: 0em 0.25em 0.25em 0em; -} - -/*------------------- - Or Buttons ---------------------*/ - -.ui.buttons .or { - position: relative; - float: left; - width: 0.3em; - height: 1.1em; - z-index: 3; -} - -.ui.buttons .or:before { - position: absolute; - top: 50%; - left: 50%; - content: 'or'; - background-color: #FFFFFF; - margin-top: -0.1em; - margin-left: -0.9em; - width: 1.8em; - height: 1.8em; - line-height: 1.55; - color: #AAAAAA; - font-style: normal; - font-weight: normal; - text-align: center; - border-radius: 500px; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.buttons .or:after { - position: absolute; - top: 0em; - left: 0em; - content: ' '; - width: 0.3em; - height: 1.7em; - background-color: transparent; - border-top: 0.5em solid #FFFFFF; - border-bottom: 0.5em solid #FFFFFF; -} - -/* Fluid Or */ - -.ui.fluid.buttons .or { - width: 0em !important; -} - -.ui.fluid.buttons .or:after { - display: none; -} - -/*------------------- - Attached ---------------------*/ - -/* Plural Attached */ - -.attached.ui.buttons { - margin: 0px; - border-radius: 4px 4px 0px 0px; -} - -.attached.ui.buttons .button:first-child { - border-radius: 4px 0px 0px 0px; -} - -.attached.ui.buttons .button:last-child { - border-radius: 0px 4px 0px 0px; -} - -/* Bottom Side */ - -.bottom.attached.ui.buttons { - margin-top: -1px; - border-radius: 0px 0px 4px 4px; -} - -.bottom.attached.ui.buttons .button:first-child { - border-radius: 0px 0px 0px 4px; -} - -.bottom.attached.ui.buttons .button:last-child { - border-radius: 0px 0px 4px 0px; -} - -/* Left Side */ - -.left.attached.ui.buttons { - margin-left: -1px; - border-radius: 0px 4px 4px 0px; -} - -.left.attached.ui.buttons .button:first-child { - margin-left: -1px; - border-radius: 0px 4px 0px 0px; -} - -.left.attached.ui.buttons .button:last-child { - margin-left: -1px; - border-radius: 0px 0px 4px 0px; -} - -/* Right Side */ - -.right.attached.ui.buttons, -.right.attached.ui.buttons .button { - margin-right: -1px; - border-radius: 4px 0px 0px 4px; -} - -.right.attached.ui.buttons .button:first-child { - margin-left: -1px; - border-radius: 4px 0px 0px 0px; -} - -.right.attached.ui.buttons .button:last-child { - margin-left: -1px; - border-radius: 0px 0px 0px 4px; -} - -/* Fluid */ - -.ui.fluid.buttons, -.ui.button.fluid, -.ui.fluid.buttons > .button { - display: block; - width: 100%; -} - -.ui.\32.buttons > .button, -.ui.two.buttons > .button { - width: 50%; -} - -.ui.\33.buttons > .button, -.ui.three.buttons > .button { - width: 33.333%; -} - -.ui.\34.buttons > .button, -.ui.four.buttons > .button { - width: 25%; -} - -.ui.\35.buttons > .button, -.ui.five.buttons > .button { - width: 20%; -} - -.ui.\36.buttons > .button, -.ui.six.buttons > .button { - width: 16.666%; -} - -.ui.\37.buttons > .button, -.ui.seven.buttons > .button { - width: 14.285%; -} - -.ui.\38.buttons > .button, -.ui.eight.buttons > .button { - width: 12.500%; -} - -.ui.\39.buttons > .button, -.ui.nine.buttons > .button { - width: 11.11%; -} - -.ui.\31\30.buttons > .button, -.ui.ten.buttons > .button { - width: 10%; -} - -.ui.\31\31.buttons > .button, -.ui.eleven.buttons > .button { - width: 9.09%; -} - -.ui.\31\32.buttons > .button, -.ui.twelve.buttons > .button { - width: 8.3333%; -} - -/* Fluid Vertical Buttons */ - -.ui.fluid.vertical.buttons, -.ui.fluid.vertical.buttons > .button { - display: block; - width: auto; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.\32.vertical.buttons > .button, -.ui.two.vertical.buttons > .button { - height: 50%; -} - -.ui.\33.vertical.buttons > .button, -.ui.three.vertical.buttons > .button { - height: 33.333%; -} - -.ui.\34.vertical.buttons > .button, -.ui.four.vertical.buttons > .button { - height: 25%; -} - -.ui.\35.vertical.buttons > .button, -.ui.five.vertical.buttons > .button { - height: 20%; -} - -.ui.\36.vertical.buttons > .button, -.ui.six.vertical.buttons > .button { - height: 16.666%; -} - -.ui.\37.vertical.buttons > .button, -.ui.seven.vertical.buttons > .button { - height: 14.285%; -} - -.ui.\38.vertical.buttons > .button, -.ui.eight.vertical.buttons > .button { - height: 12.500%; -} - -.ui.\39.vertical.buttons > .button, -.ui.nine.vertical.buttons > .button { - height: 11.11%; -} - -.ui.\31\30.vertical.buttons > .button, -.ui.ten.vertical.buttons > .button { - height: 10%; -} - -.ui.\31\31.vertical.buttons > .button, -.ui.eleven.vertical.buttons > .button { - height: 9.09%; -} - -.ui.\31\32.vertical.buttons > .button, -.ui.twelve.vertical.buttons > .button { - height: 8.3333%; -} - -/*------------------- - Colors ---------------------*/ - -/*--- Black ---*/ - -.ui.black.buttons .button, -.ui.black.button { - background-color: #5C6166; - color: #FFFFFF; -} - -.ui.black.buttons .button:hover, -.ui.black.button:hover { - background-color: #4C4C4C; - color: #FFFFFF; -} - -.ui.black.buttons .button:active, -.ui.black.button:active { - background-color: #333333; - color: #FFFFFF; -} - -/*--- Green ---*/ - -.ui.green.buttons .button, -.ui.green.button { - background-color: #5BBD72; - color: #FFFFFF; -} - -.ui.green.buttons .button:hover, -.ui.green.button:hover, -.ui.green.buttons .active.button, -.ui.green.button.active { - background-color: #58cb73; - color: #FFFFFF; -} - -.ui.green.buttons .button:active, -.ui.green.button:active { - background-color: #4CB164; - color: #FFFFFF; -} - -/*--- Red ---*/ - -.ui.red.buttons .button, -.ui.red.button { - background-color: #D95C5C; - color: #FFFFFF; -} - -.ui.red.buttons .button:hover, -.ui.red.button:hover, -.ui.red.buttons .active.button, -.ui.red.button.active { - background-color: #E75859; - color: #FFFFFF; -} - -.ui.red.buttons .button:active, -.ui.red.button:active { - background-color: #D24B4C; - color: #FFFFFF; -} - -/*--- Orange ---*/ - -.ui.orange.buttons .button, -.ui.orange.button { - background-color: #E96633; - color: #FFFFFF; -} - -.ui.orange.buttons .button:hover, -.ui.orange.button:hover, -.ui.orange.buttons .active.button, -.ui.orange.button.active { - background-color: #FF7038; - color: #FFFFFF; -} - -.ui.orange.buttons .button:active, -.ui.orange.button:active { - background-color: #DA683B; - color: #FFFFFF; -} - -/*--- Blue ---*/ - -.ui.blue.buttons .button, -.ui.blue.button { - background-color: #6ECFF5; - color: #FFFFFF; -} - -.ui.blue.buttons .button:hover, -.ui.blue.button:hover, -.ui.blue.buttons .active.button, -.ui.blue.button.active { - background-color: #1AB8F3; - color: #FFFFFF; -} - -.ui.blue.buttons .button:active, -.ui.blue.button:active { - background-color: #0AA5DF; - color: #FFFFFF; -} - -/*--- Purple ---*/ - -.ui.purple.buttons .button, -.ui.purple.button { - background-color: #564F8A; - color: #FFFFFF; -} - -.ui.purple.buttons .button:hover, -.ui.purple.button:hover, -.ui.purple.buttons .active.button, -.ui.purple.button.active { - background-color: #3E3773; - color: #FFFFFF; -} - -.ui.purple.buttons .button:active, -.ui.purple.button:active { - background-color: #2E2860; - color: #FFFFFF; -} - -/*--- Teal ---*/ - -.ui.teal.buttons .button, -.ui.teal.button { - background-color: #00B5AD; - color: #FFFFFF; -} - -.ui.teal.buttons .button:hover, -.ui.teal.button:hover, -.ui.teal.buttons .active.button, -.ui.teal.button.active { - background-color: #009A93; - color: #FFFFFF; -} - -.ui.teal.buttons .button:active, -.ui.teal.button:active { - background-color: #00847E; - color: #FFFFFF; -} - -/*--------------- - Positive -----------------*/ - -.ui.positive.buttons .button, -.ui.positive.button { - background-color: #5BBD72 !important; - color: #FFFFFF; -} - -.ui.positive.buttons .button:hover, -.ui.positive.button:hover, -.ui.positive.buttons .active.button, -.ui.positive.button.active { - background-color: #58CB73 !important; - color: #FFFFFF; -} - -.ui.positive.buttons .button:active, -.ui.positive.button:active { - background-color: #4CB164 !important; - color: #FFFFFF; -} - -/*--------------- - Negative -----------------*/ - -.ui.negative.buttons .button, -.ui.negative.button { - background-color: #D95C5C !important; - color: #FFFFFF; -} - -.ui.negative.buttons .button:hover, -.ui.negative.button:hover, -.ui.negative.buttons .active.button, -.ui.negative.button.active { - background-color: #E75859 !important; - color: #FFFFFF; -} - -.ui.negative.buttons .button:active, -.ui.negative.button:active { - background-color: #D24B4C !important; - color: #FFFFFF; -} - -/******************************* - Groups -*******************************/ - -.ui.buttons { - display: inline-block; - vertical-align: middle; -} - -.ui.buttons:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -.ui.buttons .button:first-child { - border-left: none; -} - -.ui.buttons .button { - float: left; - border-radius: 0em; -} - -.ui.buttons .button:first-child { - margin-left: 0em; - border-top-left-radius: 0.25em; - border-bottom-left-radius: 0.25em; -} - -.ui.buttons .button:last-child { - border-top-right-radius: 0.25em; - border-bottom-right-radius: 0.25em; -} - -/* Vertical Style */ - -.ui.vertical.buttons { - display: inline-block; -} - -.ui.vertical.buttons .button { - display: block; - float: none; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; -} - -.ui.vertical.buttons .button:first-child, -.ui.vertical.buttons .mini.button:first-child, -.ui.vertical.buttons .tiny.button:first-child, -.ui.vertical.buttons .small.button:first-child, -.ui.vertical.buttons .massive.button:first-child, -.ui.vertical.buttons .huge.button:first-child { - margin-top: 0px; - border-radius: 0.25em 0.25em 0px 0px; -} - -.ui.vertical.buttons .button:last-child, -.ui.vertical.buttons .mini.button:last-child, -.ui.vertical.buttons .tiny.button:last-child, -.ui.vertical.buttons .small.button:last-child, -.ui.vertical.buttons .massive.button:last-child, -.ui.vertical.buttons .huge.button:last-child, -.ui.vertical.buttons .gigantic.button:last-child { - border-radius: 0px 0px 0.25em 0.25em; -} -/* - * # Semantic - Divider - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Divider -*******************************/ - -.ui.divider { - margin: 1rem 0rem; - border-top: 1px solid rgba(0, 0, 0, 0.1); - border-bottom: 1px solid rgba(255, 255, 255, 0.8); - line-height: 1; - height: 0em; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -.ui.vertical.divider, -.ui.horizontal.divider { - position: absolute; - border: none; - height: 0em; - margin: 0em; - background-color: transparent; - font-size: 0.875rem; - font-weight: bold; - text-align: center; - text-transform: uppercase; - color: rgba(0, 0, 0, 0.8); -} - -/*-------------- - Vertical ----------------*/ - -.ui.vertical.divider { - position: absolute; - z-index: 2; - top: 50%; - left: 50%; - margin: 0% 0% 0% -3%; - width: 6%; - height: 50%; - line-height: 0; - padding: 0em; -} - -.ui.vertical.divider:before, -.ui.vertical.divider:after { - position: absolute; - left: 50%; - content: " "; - z-index: 3; - border-left: 1px solid rgba(0, 0, 0, 0.1); - border-right: 1px solid rgba(255, 255, 255, 0.8); - width: 0%; - height: 80%; -} - -.ui.vertical.divider:before { - top: -100%; -} - -.ui.vertical.divider:after { - top: auto; - bottom: 0px; -} - -/*-------------- - Horizontal ----------------*/ - -.ui.horizontal.divider { - position: relative; - top: 0%; - left: 0%; - margin: 1rem 1.5rem; - height: auto; - padding: 0em; - line-height: 1; -} - -.ui.horizontal.divider:before, -.ui.horizontal.divider:after { - position: absolute; - content: " "; - z-index: 3; - width: 50%; - top: 50%; - height: 0%; - border-top: 1px solid rgba(0, 0, 0, 0.1); - border-bottom: 1px solid rgba(255, 255, 255, 0.8); -} - -.ui.horizontal.divider:before { - left: 0%; - margin-left: -1.5rem; -} - -.ui.horizontal.divider:after { - left: auto; - right: 0%; - margin-right: -1.5rem; -} - -/*-------------- - Icon ----------------*/ - -.ui.divider > .icon { - margin: 0em; - font-size: 1rem; - vertical-align: middle; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Inverted ----------------*/ - -.ui.divider.inverted { - color: #ffffff; -} - -.ui.vertical.inverted.divider, -.ui.horizontal.inverted.divider { - color: rgba(255, 255, 255, 0.9); -} - -.ui.divider.inverted, -.ui.divider.inverted:after, -.ui.divider.inverted:before { - border-top-color: rgba(0, 0, 0, 0.15); - border-bottom-color: rgba(255, 255, 255, 0.15); - border-left-color: rgba(0, 0, 0, 0.15); - border-right-color: rgba(255, 255, 255, 0.15); -} - -/*-------------- - Fitted ----------------*/ - -.ui.fitted.divider { - margin: 0em; -} - -/*-------------- - Clearing ----------------*/ - -.ui.clearing.divider { - clear: both; -} - -/*-------------- - Section ----------------*/ - -.ui.section.divider { - margin-top: 2rem; - margin-bottom: 2rem; -} -/* - * # Semantic - Header - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Header -*******************************/ - -/* Standard */ - -.ui.header { - border: none; - margin: 1em 0em 1rem; - padding: 0em; - font-size: 1.33em; - font-weight: bold; - line-height: 1.33; -} - -.ui.header .sub.header { - font-size: 14px; - font-size: 0.875rem; - font-weight: normal; - margin: 0em; - padding: 0em; - line-height: 1.2; - color: rgba(0, 0, 0, 0.5); -} -.ui.header .sub.header a { - color:#6ECFF5!important; -} -.ui.header .sub.header a:hover, .ui.header .sub.header a:focus, .ui.header .sub.header a:active{ - text-decoration:underline; -} -.ui.header .icon { - display: table-cell; - vertical-align: middle; - padding-right: 0.5em; -} - -.ui.header .icon:only-child { - display: inline-block; - vertical-align: baseline; -} - -.ui.header .content { - display: inline-block; - vertical-align: top; -} - -.ui.header .icon + .content { - padding-left: 0.5em; - display: table-cell; -} - -/* Positioning */ - -.ui.header:first-child { - margin-top: 0em; -} - -.ui.header:last-child { - margin-bottom: 0em; -} - -.ui.header + p { - margin-top: 0em; -} - -/*-------------- - Page Heading ----------------*/ - -h1.ui.header { - min-height: 1rem; - line-height: 1.33; - font-size: 2rem; -} - -h2.ui.header { - line-height: 1.33; - font-size: 1.75rem; -} - -h3.ui.header { - line-height: 1.33; - font-size: 1.33rem; -} - -h4.ui.header { - line-height: 1.33; - font-size: 1.1rem; -} - -h5.ui.header { - line-height: 1.2; - font-size: 1rem; -} - -/*-------------- - Content Heading ----------------*/ - -.ui.huge.header { - min-height: 1em; - font-size: 2em; -} - -.ui.large.header { - font-size: 1.75em; -} - -.ui.medium.header { - font-size: 1.33em; -} - -.ui.small.header { - font-size: 1.1em; -} - -.ui.tiny.header { - font-size: 1em; -} - -/******************************* - Types -*******************************/ - -/*------------------- - Icon ---------------------*/ - -.ui.icon.header { - display: inline-block; - text-align: center; -} - -.ui.icon.header .icon { - float: none; - display: block; - font-size: 3em; - margin: 0em auto 0.2em; - padding: 0em; -} - -.ui.icon.header .content { - display: block; -} - -.ui.icon.header .circular.icon, -.ui.icon.header .square.icon { - font-size: 2em; -} - -.ui.block.icon.header .icon { - margin-bottom: 0em; -} - -.ui.icon.header.aligned { - margin-left: auto; - margin-right: auto; - display: block; -} - -/******************************* - States -*******************************/ - -.ui.disabled.header { - opacity: 0.5; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Colors ---------------------*/ - -.ui.blue.header { - color: #6ECFF5 !important; -} - -.ui.black.header { - color: #5C6166 !important; -} - -.ui.green.header { - color: #A1CF64 !important; -} - -.ui.red.header { - color: #D95C5C !important; -} - -.ui.purple.header { - color: #564F8A !important; -} - -.ui.teal.header { - color: #00B5AD !important; -} - -.ui.blue.dividing.header { - border-bottom: 3px solid #6ECFF5; -} - -.ui.black.dividing.header { - border-bottom: 3px solid #5C6166; -} - -.ui.green.dividing.header { - border-bottom: 3px solid #A1CF64; -} - -.ui.red.dividing.header { - border-bottom: 3px solid #D95C5C; -} - -.ui.purple.dividing.header { - border-bottom: 3px solid #564F8A; -} - -.ui.teal.dividing.header { - border-bottom: 3px solid #00B5AD; -} - -/*------------------- - Inverted ---------------------*/ - -.ui.inverted.header { - color: #FFFFFF; -} - -.ui.inverted.header .sub.header { - color: rgba(255, 255, 255, 0.85); -} - -/*------------------- - Inverted Colors ---------------------*/ - -.ui.inverted.black.header { - background-color: #5C6166 !important; - color: #FFFFFF !important; -} - -.ui.inverted.blue.header { - background-color: #6ECFF5 !important; - color: #FFFFFF !important; -} - -.ui.inverted.green.header { - background-color: #A1CF64 !important; - color: #FFFFFF !important; -} - -.ui.inverted.red.header { - background-color: #D95C5C !important; - color: #FFFFFF !important; -} - -.ui.inverted.purple.header { - background-color: #564F8A !important; - color: #FFFFFF !important; -} - -.ui.inverted.teal.header { - background-color: #00B5AD !important; - color: #FFFFFF !important; -} - -.ui.inverted.block.header { - border-bottom: none; -} - -/*------------------- - Aligned ---------------------*/ - -.ui.left.aligned.header { - text-align: left; -} - -.ui.right.aligned.header { - text-align: right; -} - -.ui.center.aligned.header { - text-align: center; -} - -/*------------------- - Floated ---------------------*/ - -.ui.floated.header, -.ui.left.floated.header { - float: left; - margin-top: 0em; - margin-right: 0.5em; -} - -.ui.right.floated.header { - float: right; - margin-top: 0em; - margin-left: 0.5em; -} - -/*------------------- - Fittted ---------------------*/ - -.ui.fitted.header { - padding: 0em; -} - -/*------------------- - Dividing ---------------------*/ - -.ui.dividing.header { - padding-bottom: 0.2rem; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); -} - -.ui.dividing.header .sub.header { - padding-bottom: 0.5em; -} - -.ui.dividing.header .icon { - margin-bottom: 0.2em; -} - -/*------------------- - Block ---------------------*/ - -.ui.block.header { - background-color: rgba(0, 0, 0, 0.05); - padding: 0.5em 1em; -} - -/*------------------- - Attached ---------------------*/ - -.ui.attached.header { - background-color: #E0E0E0; - padding: 0.5em 1rem; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); -} - -.ui.top.attached.header { - margin-bottom: 0em; - border-radius: 0.3125em 0.3125em 0em 0em; -} - -.ui.bottom.attached.header { - margin-top: 0em; - border-radius: 0em 0em 0.3125em 0.3125em; -} -/* - * # Semantic - Icon - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/*! - * Font Awesome 3.2.1 - * the iconic font designed for Bootstrap - * ------------------------------------------------------------------------------ - * The full suite of pictographic icons, examples, and documentation can be - * found at http://fon.io. Stay up to date on Twitter at - * http://twitter.com/fon. - * - * License - * ------------------------------------------------------------------------------ - * - The Font Awesome font is licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL - -/******************************* - Icon -*******************************/ - -@font-face { - font-family: 'Icons'; - src: url(../fonts/icons.eot); - src: url(../fonts/icons.eot?#iefix) format('embedded-opentype'), url(../fonts/icons.woff) format('woff'), url(../fonts/icons.ttf) format('truetype'), url(../fonts/icons.svg#icons) format('svg'); - font-style: normal; - font-weight: normal; - font-variant: normal; - text-decoration: inherit; - text-transform: none; -} - -i.icon { - display: inline-block; - opacity: 0.75; - margin: 0em 0.25em 0em 0em; - width: 18px; - height: 1em; - font-family: 'Icons'; - font-style: normal; - line-height: 1; - font-weight: normal; - text-decoration: inherit; - text-align: center; - speak: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-font-smoothing: antialiased; - -moz-font-smoothing: antialiased; - font-smoothing: antialiased; -} - -i.icon.left:before { - content: "\f060"; -} - -i.icon.right:before { - content: "\f061"; -} - -i.icon.add.sign.box:before { - content: "\f0fe"; -} - -i.icon.add.sign:before { - content: "\f055"; -} - -i.icon.add:before { - content: "\f067"; -} - -i.icon.adjust:before { - content: "\f042"; -} - -i.icon.adn:before { - content: "\f170"; -} - -i.icon.align.center:before { - content: "\f037"; -} - -i.icon.align.justify:before { - content: "\f039"; -} - -i.icon.align.left:before { - content: "\f036"; -} - -i.icon.align.right:before { - content: "\f038"; -} - -i.icon.ambulance:before { - content: "\f0f9"; -} - -i.icon.anchor:before { - content: "\f13d"; -} - -i.icon.android:before { - content: "\f17b"; -} - -i.icon.angle.down:before { - content: "\f107"; -} - -i.icon.angle.left:before { - content: "\f104"; -} - -i.icon.angle.right:before { - content: "\f105"; -} - -i.icon.angle.up:before { - content: "\f106"; -} - -i.icon.apple:before { - content: "\f179"; -} - -i.icon.archive:before { - content: "\f187"; -} - -i.icon.arrow.down:before { - content: "\f078"; -} - -i.icon.arrow.left:before { - content: "\f053"; -} - -i.icon.arrow.right:before { - content: "\f054"; -} - -i.icon.arrow.sign.down:before { - content: "\f13a"; -} - -i.icon.arrow.sign.left:before { - content: "\f137"; -} - -i.icon.arrow.sign.right:before { - content: "\f138"; -} - -i.icon.arrow.sign.up:before { - content: "\f139"; -} - -i.icon.arrow.up:before { - content: "\f077"; -} - -i.icon.asterisk:before { - content: "\f069"; -} - -i.icon.attachment:before { - content: "\f0c6"; -} - -i.icon.attention:before { - content: "\f06a"; -} - -i.icon.backward:before { - content: "\f04a"; -} - -i.icon.ban.circle:before { - content: "\f05e"; -} - -i.icon.bar.chart:before { - content: "\f080"; -} - -i.icon.barcode:before { - content: "\f02a"; -} - -i.icon.beer:before { - content: "\f0fc"; -} - -i.icon.bell.outline:before { - content: "\f0a2"; -} - -i.icon.bell:before { - content: "\f0f3"; -} - -i.icon.bitbucket.sign:before { - content: "\f172"; -} - -i.icon.bitbucket:before { - content: "\f171"; -} - -i.icon.bitcoin:before { - content: "\f15a"; -} - -i.icon.bold:before { - content: "\f032"; -} - -i.icon.bolt:before { - content: "\f0e7"; -} - -i.icon.book:before { - content: "\f02d"; -} - -i.icon.bookmark.empty:before { - content: "\f097"; -} - -i.icon.bookmark:before { - content: "\f02e"; -} - -i.icon.box.arrow.down:before { - content: "\f150"; -} - -i.icon.box.arrow.right:before { - content: "\f152"; -} - -i.icon.box.arrow.up:before { - content: "\f151"; -} - -i.icon.briefcase:before { - content: "\f0b1"; -} - -i.icon.browser:before { - content: "\f022"; -} - -i.icon.bug:before { - content: "\f188"; -} - -i.icon.building:before { - content: "\f0f7"; -} - -i.icon.bullhorn:before { - content: "\f0a1"; -} - -i.icon.bullseye:before { - content: "\f140"; -} - -i.icon.calendar.empty:before { - content: "\f133"; -} - -i.icon.calendar:before { - content: "\f073"; -} - -i.icon.camera.retro:before { - content: "\f083"; -} - -i.icon.camera:before { - content: "\f030"; -} - -i.icon.triangle.down:before { - content: "\f0d7"; -} - -i.icon.triangle.left:before { - content: "\f0d9"; -} - -i.icon.triangle.right:before { - content: "\f0da"; -} - -i.icon.triangle.up:before { - content: "\f0d8"; -} - -i.icon.cart:before { - content: "\f07a"; -} - -i.icon.certificate:before { - content: "\f0a3"; -} - -i.icon.chat.outline:before { - content: "\f0e6"; -} - -i.icon.chat:before { - content: "\f086"; -} - -i.icon.checkbox.empty:before { - content: "\f096"; -} - -i.icon.checkbox.minus:before { - content: "\f147"; -} - -i.icon.checked.checkbox:before { - content: "\f046"; -} - -i.icon.checkmark.sign:before { - content: "\f14a"; -} - -i.icon.checkmark:before { - content: "\f00c"; -} - -i.icon.circle.blank:before { - content: "\f10c"; -} - -i.icon.circle.down:before { - content: "\f0ab"; -} - -i.icon.circle.left:before { - content: "\f0a8"; -} - -i.icon.circle.right:before { - content: "\f0a9"; -} - -i.icon.circle.up:before { - content: "\f0aa"; -} - -i.icon.circle:before { - content: "\f111"; -} - -i.icon.cloud.download:before { - content: "\f0ed"; -} - -i.icon.cloud.upload:before { - content: "\f0ee"; -} - -i.icon.cloud:before { - content: "\f0c2"; -} - -i.icon.code.fork:before { - content: "\f126"; -} - -i.icon.code:before { - content: "\f121"; -} - -i.icon.coffee:before { - content: "\f0f4"; -} - -i.icon.collapse:before { - content: "\f117"; -} - -i.icon.comment.outline:before { - content: "\f0e5"; -} - -i.icon.comment:before { - content: "\f075"; -} - -i.icon.copy:before { - content: "\f0c5"; -} - -i.icon.crop:before { - content: "\f125"; -} - -i.icon.css3:before { - content: "\f13c"; -} - -i.icon.cut:before { - content: "\f0c4"; -} - -i.icon.dashboard:before { - content: "\f0e4"; -} - -i.icon.desktop:before { - content: "\f108"; -} - -i.icon.doctor:before { - content: "\f0f0"; -} - -i.icon.dollar:before { - content: "\f155"; -} - -i.icon.double.angle.down:before { - content: "\f103"; -} - -i.icon.double.angle.left:before { - content: "\f100"; -} - -i.icon.double.angle.right:before { - content: "\f101"; -} - -i.icon.double.angle.up:before { - content: "\f102"; -} - -i.icon.down:before { - content: "\f063"; -} - -i.icon.download.disk:before { - content: "\f019"; -} - -i.icon.download:before { - content: "\f01a"; -} - -i.icon.dribbble:before { - content: "\f17d"; -} - -i.icon.dropbox:before { - content: "\f16b"; -} - -i.icon.edit.sign:before { - content: "\f14b"; -} - -i.icon.edit:before { - content: "\f044"; -} - -i.icon.eject:before { - content: "\f052"; -} - -i.icon.ellipsis.horizontal:before { - content: "\f141"; -} - -i.icon.ellipsis.vertical:before { - content: "\f142"; -} - -i.icon.eraser:before { - content: "\f12d"; -} - -i.icon.euro:before { - content: "\f153"; -} - -i.icon.exchange:before { - content: "\f0ec"; -} - -i.icon.exclamation:before { - content: "\f12a"; -} - -i.icon.expand:before { - content: "\f116"; -} - -i.icon.external.url.sign:before { - content: "\f14c"; -} - -i.icon.external.url:before { - content: "\f08e"; -} - -i.icon.facebook.sign:before { - content: "\f082"; -} - -i.icon.facebook:before { - content: "\f09a"; -} - -i.icon.facetime.video:before { - content: "\f03d"; -} - -i.icon.fast.backward:before { - content: "\f049"; -} - -i.icon.fast.forward:before { - content: "\f050"; -} - -i.icon.female:before { - content: "\f182"; -} - -i.icon.fighter.jet:before { - content: "\f0fb"; -} - -i.icon.file.outline:before { - content: "\f016"; -} - -i.icon.file.text.outline:before { - content: "\f0f6"; -} - -i.icon.file.text:before { - content: "\f15c"; -} - -i.icon.file:before { - content: "\f15b"; -} - -i.icon.filter:before { - content: "\f0b0"; -} - -i.icon.fire.extinguisher:before { - content: "\f134"; -} - -i.icon.fire:before { - content: "\f06d"; -} - -i.icon.flag.checkered:before { - content: "\f11e"; -} - -i.icon.flag.empty:before { - content: "\f11d"; -} - -i.icon.flag:before { - content: "\f024"; -} - -i.icon.flickr:before { - content: "\f16e"; -} - -i.icon.folder.open.outline:before { - content: "\f115"; -} - -i.icon.folder.open:before { - content: "\f07c"; -} - -i.icon.folder.outline:before { - content: "\f114"; -} - -i.icon.folder:before { - content: "\f07b"; -} - -i.icon.font:before { - content: "\f031"; -} - -i.icon.food:before { - content: "\f0f5"; -} - -i.icon.forward.mail:before { - content: "\f064"; -} - -i.icon.forward:before { - content: "\f04e"; -} - -i.icon.foursquare:before { - content: "\f180"; -} - -i.icon.frown:before { - content: "\f119"; -} - -i.icon.fullscreen:before { - content: "\f0b2"; -} - -i.icon.gamepad:before { - content: "\f11b"; -} - -i.icon.gift:before { - content: "\f06b"; -} - -i.icon.github.alternate:before { - content: "\f09b"; -} - -i.icon.github.sign:before { - content: "\f092"; -} - -i.icon.github:before { - content: "\f113"; -} - -i.icon.gittip:before { - content: "\f184"; -} - -i.icon.glass:before { - content: "\f000"; -} - -i.icon.globe:before { - content: "\f0ac"; -} - -i.icon.google.plus.sign:before { - content: "\f0d4"; -} - -i.icon.google.plus:before { - content: "\f0d5"; -} - -i.icon.h.sign:before { - content: "\f0fd"; -} - -i.icon.hand.down:before { - content: "\f0a7"; -} - -i.icon.hand.left:before { - content: "\f0a5"; -} - -i.icon.hand.right:before { - content: "\f0a4"; -} - -i.icon.hand.up:before { - content: "\f0a6"; -} - -i.icon.hdd:before { - content: "\f0a0"; -} - -i.icon.headphones:before { - content: "\f025"; -} - -i.icon.heart.empty:before { - content: "\f08a"; -} - -i.icon.heart:before { - content: "\f004"; -} - -i.icon.help:before { - content: "\f059"; -} - -i.icon.hide:before { - content: "\f070"; -} - -i.icon.home:before { - content: "\f015"; -} - -i.icon.hospital:before { - content: "\f0f8"; -} - -i.icon.html5:before { - content: "\f13b"; -} - -i.icon.inbox:before { - content: "\f01c"; -} - -i.icon.indent.left:before { - content: "\f03b"; -} - -i.icon.indent.right:before { - content: "\f03c"; -} - -i.icon.info.letter:before { - content: "\f129"; -} - -i.icon.info:before { - content: "\f05a"; -} - -i.icon.instagram:before { - content: "\f16d"; -} - -i.icon.italic:before { - content: "\f033"; -} - -i.icon.key:before { - content: "\f084"; -} - -i.icon.keyboard:before { - content: "\f11c"; -} - -i.icon.lab:before { - content: "\f0c3"; -} - -i.icon.laptop:before { - content: "\f109"; -} - -i.icon.layout.block:before { - content: "\f009"; -} - -i.icon.layout.column:before { - content: "\f0db"; -} - -i.icon.layout.grid:before { - content: "\f00a"; -} - -i.icon.layout.list:before { - content: "\f00b"; -} - -i.icon.leaf:before { - content: "\f06c"; -} - -i.icon.legal:before { - content: "\f0e3"; -} - -i.icon.lemon:before { - content: "\f094"; -} - -i.icon.level.down:before { - content: "\f149"; -} - -i.icon.level.up:before { - content: "\f148"; -} - -i.icon.lightbulb:before { - content: "\f0eb"; -} - -i.icon.linkedin.sign:before { - content: "\f08c"; -} - -i.icon.linkedin:before { - content: "\f0e1"; -} - -i.icon.linux:before { - content: "\f17c"; -} - -i.icon.list.ordered:before { - content: "\f0cb"; -} - -i.icon.list.unordered:before { - content: "\f0ca"; -} - -i.icon.list:before { - content: "\f03a"; -} - -i.icon.loading:before { - content: "\f110"; -} - -i.icon.location:before { - content: "\f124"; -} - -i.icon.lock:before { - content: "\f023"; -} - -i.icon.long.arrow.down:before { - content: "\f175"; -} - -i.icon.long.arrow.left:before { - content: "\f177"; -} - -i.icon.long.arrow.right:before { - content: "\f178"; -} - -i.icon.long.arrow.up:before { - content: "\f176"; -} - -i.icon.magic:before { - content: "\f0d0"; -} - -i.icon.magnet:before { - content: "\f076"; -} - -i.icon.mail.outline:before { - content: "\f003"; -} - -i.icon.mail.reply:before { - content: "\f112"; -} - -i.icon.mail:before { - content: "\f0e0"; -} - -i.icon.male:before { - content: "\f183"; -} - -i.icon.map.marker:before { - content: "\f041"; -} - -i.icon.map:before { - content: "\f14e"; -} - -i.icon.maxcdn:before { - content: "\f136"; -} - -i.icon.medkit:before { - content: "\f0fa"; -} - -i.icon.meh:before { - content: "\f11a"; -} - -i.icon.minus.sign.alternate:before { - content: "\f146"; -} - -i.icon.minus.sign:before { - content: "\f056"; -} - -i.icon.minus:before { - content: "\f068"; -} - -i.icon.mobile:before { - content: "\f10b"; -} - -i.icon.money:before { - content: "\f0d6"; -} - -i.icon.moon:before { - content: "\f186"; -} - -i.icon.move:before { - content: "\f047"; -} - -i.icon.music:before { - content: "\f001"; -} - -i.icon.mute:before { - content: "\f131"; -} - -i.icon.off:before { - content: "\f011"; -} - -i.icon.ok.circle:before { - content: "\f05d"; -} - -i.icon.ok.sign:before { - content: "\f058"; -} - -i.icon.paste:before { - content: "\f0ea"; -} - -i.icon.pause:before { - content: "\f04c"; -} - -i.icon.payment:before { - content: "\f09d"; -} - -i.icon.pencil:before { - content: "\f040"; -} - -i.icon.phone.sign:before { - content: "\f098"; -} - -i.icon.phone:before { - content: "\f095"; -} - -i.icon.photo:before { - content: "\f03e"; -} - -i.icon.pin:before { - content: "\f08d"; -} - -i.icon.pinterest.sign:before { - content: "\f0d3"; -} - -i.icon.pinterest:before { - content: "\f0d2"; -} - -i.icon.plane:before { - content: "\f072"; -} - -i.icon.play.circle:before { - content: "\f01d"; -} - -i.icon.play.sign:before { - content: "\f144"; -} - -i.icon.play:before { - content: "\f04b"; -} - -i.icon.pound:before { - content: "\f154"; -} - -i.icon.print:before { - content: "\f02f"; -} - -i.icon.puzzle.piece:before { - content: "\f12e"; -} - -i.icon.qr.code:before { - content: "\f029"; -} - -i.icon.question:before { - content: "\f128"; -} - -i.icon.quote.left:before { - content: "\f10d"; -} - -i.icon.quote.right:before { - content: "\f10e"; -} - -i.icon.refresh:before { - content: "\f021"; -} - -i.icon.remove.circle:before { - content: "\f05c"; -} - -i.icon.remove.sign:before { - content: "\f057"; -} - -i.icon.remove:before { - content: "\f00d"; -} - -i.icon.renren:before { - content: "\f18b"; -} - -i.icon.reorder:before { - content: "\f0c9"; -} - -i.icon.repeat:before { - content: "\f01e"; -} - -i.icon.reply.all.mail:before { - content: "\f122"; -} - -i.icon.resize.full:before { - content: "\f065"; -} - -i.icon.resize.horizontal:before { - content: "\f07e"; -} - -i.icon.resize.small:before { - content: "\f066"; -} - -i.icon.resize.vertical:before { - content: "\f07d"; -} - -i.icon.retweet:before { - content: "\f079"; -} - -i.icon.road:before { - content: "\f018"; -} - -i.icon.rocket:before { - content: "\f135"; -} - -i.icon.rss.sign:before { - content: "\f143"; -} - -i.icon.rss:before { - content: "\f09e"; -} - -i.icon.rupee:before { - content: "\f156"; -} - -i.icon.save:before { - content: "\f0c7"; -} - -i.icon.screenshot:before { - content: "\f05b"; -} - -i.icon.search:before { - content: "\f002"; -} - -i.icon.setting:before { - content: "\f013"; -} - -i.icon.settings:before { - content: "\f085"; -} - -i.icon.share.sign:before { - content: "\f14d"; -} - -i.icon.share:before { - content: "\f045"; -} - -i.icon.shield:before { - content: "\f132"; -} - -i.icon.shuffle:before { - content: "\f074"; -} - -i.icon.sign.in:before { - content: "\f090"; -} - -i.icon.sign.out:before { - content: "\f08b"; -} - -i.icon.sign:before { - content: "\f0c8"; -} - -i.icon.signal:before { - content: "\f012"; -} - -i.icon.sitemap:before { - content: "\f0e8"; -} - -i.icon.skype:before { - content: "\f17e"; -} - -i.icon.smile:before { - content: "\f118"; -} - -i.icon.sort.alphabet.descending:before { - content: "\f15e"; -} - -i.icon.sort.alphabet:before { - content: "\f15d"; -} - -i.icon.sort.ascending:before { - content: "\f0de"; -} - -i.icon.sort.attributes.descending:before { - content: "\f161"; -} - -i.icon.sort.attributes:before { - content: "\f160"; -} - -i.icon.sort.descending:before { - content: "\f0dd"; -} - -i.icon.sort.order.descending:before { - content: "\f163"; -} - -i.icon.sort.order:before { - content: "\f162"; -} - -i.icon.sort:before { - content: "\f0dc"; -} - -i.icon.stackexchange:before { - content: "\f16c"; -} - -i.icon.star.empty:before { - content: "\f006"; -} - -i.icon.star.half.empty:before { - content: "\f123"; -} - -i.icon.star.half.full:before, -i.icon.star.half:before { - content: "\f089"; -} - -i.icon.star:before { - content: "\f005"; -} - -i.icon.step.backward:before { - content: "\f048"; -} - -i.icon.step.forward:before { - content: "\f051"; -} - -i.icon.stethoscope:before { - content: "\f0f1"; -} - -i.icon.stop:before { - content: "\f04d"; -} - -i.icon.strikethrough:before { - content: "\f0cc"; -} - -i.icon.subscript:before { - content: "\f12c"; -} - -i.icon.suitcase:before { - content: "\f0f2"; -} - -i.icon.sun:before { - content: "\f185"; -} - -i.icon.superscript:before { - content: "\f12b"; -} - -i.icon.table:before { - content: "\f0ce"; -} - -i.icon.tablet:before { - content: "\f10a"; -} - -i.icon.tag:before { - content: "\f02b"; -} - -i.icon.tags:before { - content: "\f02c"; -} - -i.icon.tasks:before { - content: "\f0ae"; -} - -i.icon.terminal:before { - content: "\f120"; -} - -i.icon.text.height:before { - content: "\f034"; -} - -i.icon.text.width:before { - content: "\f035"; -} - -i.icon.thumbs.down.outline:before { - content: "\f088"; -} - -i.icon.thumbs.down:before { - content: "\f165"; -} - -i.icon.thumbs.up.outline:before { - content: "\f087"; -} - -i.icon.thumbs.up:before { - content: "\f164"; -} - -i.icon.ticket:before { - content: "\f145"; -} - -i.icon.time:before { - content: "\f017"; -} - -i.icon.tint:before { - content: "\f043"; -} - -i.icon.trash:before { - content: "\f014"; -} - -i.icon.trello:before { - content: "\f181"; -} - -i.icon.trophy:before { - content: "\f091"; -} - -i.icon.truck:before { - content: "\f0d1"; -} - -i.icon.tumblr.sign:before { - content: "\f174"; -} - -i.icon.tumblr:before { - content: "\f173"; -} - -i.icon.twitter.sign:before { - content: "\f081"; -} - -i.icon.twitter:before { - content: "\f099"; -} - -i.icon.umbrella:before { - content: "\f0e9"; -} - -i.icon.underline:before { - content: "\f0cd"; -} - -i.icon.undo:before { - content: "\f0e2"; -} - -i.icon.unhide:before { - content: "\f06e"; -} - -i.icon.unlink:before { - content: "\f127"; -} - -i.icon.unlock.alternate:before { - content: "\f13e"; -} - -i.icon.unlock:before { - content: "\f09c"; -} - -i.icon.unmute:before { - content: "\f130"; -} - -i.icon.up:before { - content: "\f062"; -} - -i.icon.upload.disk:before { - content: "\f093"; -} - -i.icon.upload:before { - content: "\f01b"; -} - -i.icon.url:before { - content: "\f0c1"; -} - -i.icon.user:before { - content: "\f007"; -} - -i.icon.users:before { - content: "\f0c0"; -} - -i.icon.video:before { - content: "\f008"; -} - -i.icon.vk:before { - content: "\f189"; -} - -i.icon.volume.down:before { - content: "\f027"; -} - -i.icon.volume.off:before { - content: "\f026"; -} - -i.icon.volume.up:before { - content: "\f028"; -} - -i.icon.warning:before { - content: "\f071"; -} - -i.icon.weibo:before { - content: "\f18a"; -} - -i.icon.windows:before { - content: "\f17a"; -} - -i.icon.won:before { - content: "\f159"; -} - -i.icon.wrench:before { - content: "\f0ad"; -} - -i.icon.xing.sign:before { - content: "\f169"; -} - -i.icon.xing:before { - content: "\f168"; -} - -i.icon.yen:before { - content: "\f157"; -} - -i.icon.youtube.play:before { - content: "\f16a"; -} - -i.icon.youtube.sign:before { - content: "\f166"; -} - -i.icon.youtube:before { - content: "\f167"; -} - -i.icon.yuan:before { - content: "\f158"; -} - -i.icon.zoom.in:before { - content: "\f00e"; -} - -i.icon.zoom.out:before { - content: "\f010"; -} - -/*-------------- - Aliases ----------------*/ - -i.icon.check:before { - content: "\f00c"; -} - -i.icon.close:before { - content: "\f00d"; -} - -i.icon.delete:before { - content: "\f00d"; -} - -i.icon.like:before { - content: "\f004"; -} - -i.icon.plus:before { - content: "\f067"; -} - -i.icon.signup:before { - content: "\f044"; -} - -/*-------------- - Spacing Fix ----------------*/ - -/* stars are usually consecutive */ - -i.icon.star { - width: auto; - margin: 0em; -} - -/* left side icons */ - -i.icon.left, -i.icon.left, -i.icon.left { - width: auto; - margin: 0em 0.5em 0em 0em; -} - -/* right side icons */ - -i.icon.search, -i.icon.up, -i.icon.down, -i.icon.right { - width: auto; - margin: 0em 0em 0em 0.5em; -} - -/******************************* - Types -*******************************/ - -/*-------------- - Loading ----------------*/ - -i.icon.loading { - -webkit-animation: icon-loading 2s linear infinite; - -ms-animation: icon-loading 2s linear infinite; - animation: icon-loading 2s linear infinite; -} - -@keyframes icon-loading { - from { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); - } - - to { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@-webkit-keyframes icon-loading { - from { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - - to { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@-ms-keyframes icon-loading { - from { - -ms-transform: rotate(0deg); - transform: rotate(0deg); - } - - to { - -ms-transform: rotate(360deg); - transform: rotate(360deg); - } -} - -/******************************* - States -*******************************/ - -i.icon.hover { - opacity: 1; -} - -i.icon.active { - opacity: 1; -} - -i.emphasized.icon { - opacity: 1; -} - -i.icon.disabled { - opacity: 0.3; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Link ---------------------*/ - -i.link.icon { - cursor: pointer; - opacity: 0.7; - -webkit-transition: opacity 0.3s ease-out; - transition: opacity 0.3s ease-out; -} - -i.link.icon:hover { - opacity: 1 !important; -} - -/*------------------- - Circular ---------------------*/ - -i.circular.icon { - border-radius: 500em !important; - padding: 0.5em 0.35em !important; - -webkit-box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - line-height: 1 !important; - width: 2em !important; - height: 2em !important; -} - -i.circular.inverted.icon { - border: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -/*------------------- - Flipped ---------------------*/ - -i.flipped.icon, -i.horizontally.flipped.icon { - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -i.vertically.flipped.icon { - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} - -/*------------------- - Rotated ---------------------*/ - -i.rotated.icon, -i.right.rotated.icon, -i.clockwise.rotated.icon { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} - -i.left.rotated.icon, -i.counterclockwise.rotated.icon { - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); -} - -/*------------------- - Square ---------------------*/ - -i.square.icon { - width: 2em; - height: 2em; - padding: 0.5em 0.35em !important; - -webkit-box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; - vertical-align: baseline; -} - -i.square.inverted.icon { - border: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -/*------------------- - Inverted ---------------------*/ - -i.inverted.icon { - background-color: #222222; - color: #FFFFFF; -} - -/*------------------- - Colors ---------------------*/ - -i.blue.icon { - color: #6ECFF5 !important; -} - -i.black.icon { - color: #5C6166 !important; -} - -i.green.icon { - color: #A1CF64 !important; -} - -i.red.icon { - color: #D95C5C !important; -} - -i.purple.icon { - color: #564F8A !important; -} - -i.teal.icon { - color: #00B5AD !important; -} - -/*------------------- - Inverted Colors ---------------------*/ - -i.inverted.black.icon { - background-color: #5C6166 !important; - color: #FFFFFF !important; -} - -i.inverted.blue.icon { - background-color: #6ECFF5 !important; - color: #FFFFFF !important; -} - -i.inverted.green.icon { - background-color: #A1CF64 !important; - color: #FFFFFF !important; -} - -i.inverted.red.icon { - background-color: #D95C5C !important; - color: #FFFFFF !important; -} - -i.inverted.purple.icon { - background-color: #564F8A !important; - color: #FFFFFF !important; -} - -i.inverted.teal.icon { - background-color: #00B5AD !important; - color: #FFFFFF !important; -} - -/*------------------- - Sizes ---------------------*/ - -i.small.icon { - font-size: 0.875em; -} - -i.icon { - font-size: 1em; -} - -i.large.icon { - font-size: 1.5em; - vertical-align: middle; -} - -i.big.icon { - font-size: 2em; - vertical-align: middle; -} - -i.huge.icon { - font-size: 4em; - vertical-align: middle; -} -i.massive.icon { - font-size: 8em; - vertical-align: middle; -} -/* - * # Semantic - Image - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Image -*******************************/ - -.ui.image { - position: relative; - display: inline-block; - vertical-align: middle; - max-width: 100%; - background-color: rgba(0, 0, 0, 0.05); -} - -img.ui.image { - display: block; - background: none; -} - -.ui.image img { - display: block; - max-width: 100%; - height: auto; -} - -/******************************* - States -*******************************/ - -.ui.disabled.image { - cursor: default; - opacity: 0.3; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Rounded ----------------*/ - -.ui.rounded.images .image, -.ui.rounded.images img, -.ui.rounded.image img, -.ui.rounded.image { - border-radius: 0.3125em; -} - -/*-------------- - Circular ----------------*/ - -.ui.circular.images .image, -.ui.circular.images img, -.ui.circular.image img, -.ui.circular.image { - border-radius: 500rem; -} - -/*-------------- - Fluid ----------------*/ - -.ui.fluid.images, -.ui.fluid.image, -.ui.fluid.images img, -.ui.fluid.image img { - display: block; - width: 100%; -} - -/*-------------- - Avatar ----------------*/ - -.ui.avatar.images .image, -.ui.avatar.images img, -.ui.avatar.image img, -.ui.avatar.image { - display: inline-block; - width:28px; -} - -/*------------------- - Floated ---------------------*/ - -.ui.floated.image, -.ui.floated.images { - float: left; - margin-right: 1em; - margin-bottom: 1em; -} - -.ui.right.floated.images, -.ui.right.floated.image { - float: right; - margin-bottom: 1em; - margin-left: 1em; -} - -/*-------------- - Sizes ----------------*/ - -.ui.tiny.images .image, -.ui.tiny.images img, -.ui.tiny.image { - width: 20px; - font-size: 0.7rem; -} - -.ui.mini.images .image, -.ui.mini.images img, -.ui.mini.image { - width: 35px; - font-size: 0.8rem; -} - -.ui.small.images .image, -.ui.small.images img, -.ui.small.image { - width: 80px; - font-size: 0.9rem; -} - -.ui.medium.images .image, -.ui.medium.images img, -.ui.medium.image img, -.ui.medium.image { - max-width:285px !important; - height:160px; - font-size: 1rem; -} - -.ui.large.images .image, -.ui.large.images img, -.ui.large.image { - width: 450px; - font-size: 1.1rem; -} - -.ui.huge.images .image, -.ui.huge.images img, -.ui.huge.image { - width: 600px; - font-size: 1.2rem; -} - -/******************************* - Groups -*******************************/ - -.ui.images { - font-size: 0em; - margin: 0em -0.25rem 0rem; -} - -.ui.images .image, -.ui.images img { - display: inline-block; - margin: 0em 0.25em 0.5em; -} -/* - * # Semantic - Input - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Standard -*******************************/ - -/*-------------------- - Inputs ----------------------*/ - -.ui.input { - display: inline-block; - position: relative; - color: rgba(0, 0, 0, 0.7); -} - -.ui.input input { - width: 100%; - font-family: "Helvetica Neue", "Helvetica", Arial; - margin: 0em; - padding: 0.85em 1.2em; - font-size: 0.875em; - background-color: #FFFFFF; - border: 1px solid rgba(0, 0, 0, 0.15); - outline: none; - color: rgba(0, 0, 0, 0.7); - border-radius: 0.3125em; - -webkit-transition: background-color 0.3s ease-out, -webkit-box-shadow 0.2s ease, border-color 0.2s ease; - transition: background-color 0.3s ease-out, box-shadow 0.2s ease, border-color 0.2s ease; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -/*-------------------- - Placeholder ----------------------*/ - -/* browsers require these rules separate */ - -.ui.input::-web inputkit-input-placeholder { - color: #BBBBBB; -} - -.ui.input::-moz input-placeholder { - color: #BBBBBB; -} - -/******************************* - States -*******************************/ - -/*-------------------- - Active ----------------------*/ - -.ui.input input:active, -.ui.input.down input { - border-color: rgba(0, 0, 0, 0.3); - background-color: #FAFAFA; -} - -/*-------------------- - Loading ----------------------*/ - -.ui.loading.input > .icon { - background: url(../images/loader-mini.gif) no-repeat 50% 50%; -} - -.ui.loading.input > .icon:before, -.ui.loading.input > .icon:after { - display: none; -} - -/*-------------------- - Focus ----------------------*/ - -.ui.input.focus input, -.ui.input input:focus { - border-color: rgba(0, 0, 0, 0.2); - color: rgba(0, 0, 0, 0.85); -} - -.ui.input.focus input input::-webkit-input-placeholder, -.ui.input input:focus input::-webkit-input-placeholder { - color: #AAAAAA; -} - -/*-------------------- - Error ----------------------*/ - -.ui.input.error input { - background-color: #FFFAFA; - border-color: #E7BEBE; - color: #D95C5C; -} - -/* Error Placeholder */ - -.ui.input.error input ::-webkit-input-placeholder { - color: rgba(255, 80, 80, 0.4); -} - -.ui.input.error input :focus::-webkit-input-placeholder { - color: rgba(255, 80, 80, 0.7); -} - -/******************************* - Variations -*******************************/ - -/*-------------------- - Transparent ----------------------*/ - -.ui.transparent.input input { - border: none; - background-color: transparent; -} - -/*-------------------- - Icon ----------------------*/ - -.ui.icon.input > .icon { - cursor: default; - position: absolute; - opacity: 0.5; - top: 0px; - right: 0px; - margin: 0em; - width: 2.6em; - height: 100%; - padding-top: 0.82em; - text-align: center; - border-radius: 0em 0.3125em 0.3125em 0em; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-transition: opacity 0.3s ease-out; - transition: opacity 0.3s ease-out; -} - -.ui.icon.input > .link.icon { - cursor: pointer; -} - -.ui.icon.input input { - padding-right: 3em !important; -} - -.ui.icon.input > .circular.icon { - top: 0.35em; - right: 0.5em; -} - -/* Left Side */ - -.ui.left.icon.input > .icon { - right: auto; - left: 1px; - border-radius: 0.3125em 0em 0em 0.3125em; -} - -.ui.left.icon.input > .circular.icon { - right: auto; - left: 0.5em; -} - -.ui.left.icon.input > input { - padding-left: 3em !important; - padding-right: 1.2em !important; -} - -.ui.left.icon.input.short{ - width:30%; -} - -/* Focus */ - -.ui.icon.input > input:focus ~ .icon { - opacity: 1; -} - -/*-------------------- - Labeled ----------------------*/ - -.ui.labeled.input .corner.label { - top: 1px; - right: 1px; - font-size: 0.55em; - border-top-right-radius: 0.3125em; -} - -.ui.labeled.input .corner.label > .icon { - margin: 0.4em 0em 0em 2em; -} - -.ui.labeled.input input { - padding-right: 2.5em !important; -} - -/* Spacing with corner label */ - -.ui.labeled.icon.input:not(.left) > input { - padding-right: 3.25em !important; -} - -.ui.labeled.icon.input:not(.left) > .icon { - margin-right: 1.25em; -} - -/*-------------------- - Action ----------------------*/ - -.ui.action.input { - display: table; -} - -.ui.action.input > input { - display: table-cell; - border-top-right-radius: 0px !important; - border-bottom-right-radius: 0px !important; - border-right: none; -} - -.ui.action.input > .button { - display: table-cell; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; - white-space: nowrap; -} - -.ui.action.input > .button > .icon { - display: inline; - vertical-align: top; -} - -/*-------------------- - Fluid ----------------------*/ - -.ui.fluid.input { - display: block; -} - -/*-------------------- - Size ----------------------*/ - -.ui.mini.input { - font-size: 0.8125rem; -} - -.ui.tiny.input { - font-size: 0.875rem; -} - -.ui.small.input { - font-size: 0.875rem; -} - -.ui.input { - font-size: 1rem; -} - -.ui.large.input { - font-size: 1.125rem; -} - -.ui.big.input { - font-size: 1.25rem; -} - -.ui.huge.input { - font-size: 1.375rem; -} - -.ui.massive.input { - font-size: 1.5rem; -} -/* - * # Semantic - Label - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Label -*******************************/ - -.ui.label { - display: inline-block; - vertical-align: middle; - margin: -0.25em 0em 0em; - background-color: #E8E8E8; - border-color: #E8E8E8; - padding: 0.5em 0.5em; - color: rgba(0, 0, 0, 0.65); - text-transform: uppercase; - font-weight: normal; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -/* -webkit-transition: background 0.1s linear; - transition: background 0.1s linear;*/ -} - -.ui.label:first-child { - margin-left: 0em; -} - -.ui.label:last-child { - margin-right: 0em; -} - -/* Link */ - -a.ui.label { - cursor: pointer; -} - -/* Inside Link */ - -.ui.label a { - cursor: pointer; - color: inherit; - opacity: 0.8; - -webkit-transition: 0.2s opacity ease; - transition: 0.2s opacity ease; -} - -.ui.label a:hover { - opacity: 1; -} - -/* Detail */ - -.ui.label .detail { - display: inline-block; - margin-left: 0.5em; - font-weight: bold; - opacity: 0.8; -} - -/* Icon */ - -.ui.label .icon { - width: auto; -} - -/* Removable label */ - -.ui.label .delete.icon { - cursor: pointer; - margin: 0em 0em 0em 0.5em; - opacity: 0.7; - -webkit-transition: background 0.1s linear; - transition: background 0.1s linear; -} - -.ui.label .delete.icon:hover { - opacity: 0.99; -} - -/*------------------- - Coupling ---------------------*/ - -/* Padding on next content after a label */ - -.ui.segment > .attached.label:first-child + * { - margin-top: 2.5em; -} - -.ui.segment > .bottom.attached.label:first-child ~ :last-child { - margin-top: 0em; - margin-bottom: 2.5em; -} - -/******************************* - Types -*******************************/ - -.ui.image.label { - width: auto !important; - margin-top: 0em; - margin-bottom: 0em; - padding-top: 0.4em; - padding-bottom: 0.4em; - line-height: 1.5em; - vertical-align: baseline; - text-transform: none; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; -} - -.ui.image.label img { - display: inline-block; - height: 2.25em; - margin: -0.4em 0.8em -0.4em -0.8em; - vertical-align: top; - border-radius: 0.325em 0em 0em 0.325em; -} - -/******************************* - States -*******************************/ - -/*------------------- - Disabled ---------------------*/ - -.ui.label.disabled { - opacity: 0.5; -} - -/*------------------- - Hover ---------------------*/ - -a.ui.labels .label:hover, -a.ui.label:hover { - background-color: #E0E0E0; - border-color: #E0E0E0; - color: rgba(0, 0, 0, 0.7); -} - -.ui.labels a.label:hover:before, -a.ui.label:hover:before { - background-color: #E0E0E0; - color: rgba(0, 0, 0, 0.7); -} - -/*------------------- - Visible ---------------------*/ - -.ui.labels.visible .label, -.ui.label.visible { - display: inline-block !important; -} - -/*------------------- - Hidden ---------------------*/ - -.ui.labels.hidden .label, -.ui.label.hidden { - display: none !important; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Tag ---------------------*/ - -.ui.tag.labels .label, -.ui.tag.label { - margin-left: 1em; - position: relative; - padding: 0.33em 1.3em 0.33em 1.4em; - border-radius: 0px 3px 3px 0px; -} - -.ui.tag.labels .label:before, -.ui.tag.label:before { - position: absolute; - top: 0.3em; - left: 0.3em; - content: ''; - margin-left: -1em; - background-image: none; - width: 1.5em; - height: 1.5em; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transition: background 0.1s linear; - transition: background 0.1s linear; -} - -.ui.tag.labels .label:after, -.ui.tag.label:after { - position: absolute; - content: ''; - top: 50%; - left: -0.25em; - margin-top: -0.3em; - background-color: #FFFFFF; - width: 0.55em; - height: 0.55em; - -webkit-box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.3); - box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.3); - border-radius: 100px 100px 100px 100px; -} - -/*------------------- - Ribbon ---------------------*/ - -.ui.ribbon.label { - position: relative; - margin: 0em 0.2em; - left: -2rem; - padding-left: 2rem; - border-radius: 0px 4px 4px 0px; - border-color: rgba(0, 0, 0, 0.15); -} - -.ui.ribbon.label:after { - position: absolute; - content: ""; - top: 100%; - left: 0%; - border-top: 0em solid transparent; - border-right-width: 1em; - border-right-color: inherit; - border-right-style: solid; - border-bottom: 1em solid transparent; - border-left: 0em solid transparent; - width: 0em; - height: 0em; -} - -/*------------------- - Attached ---------------------*/ - -.ui.top.attached.label, -.ui.attached.label { - width: 100%; - position: absolute; - margin: 0em; - top: 0em; - left: 0em; - padding:0.75em 1em; - border-radius: 4px 4px 0em 0em; -} - -.ui.bottom.attached.label { - top: auto; - bottom: 0em; - border-radius: 0em 0em 4px 4px; -} - -.ui.top.left.attached.label { - width: auto; - margin-top: 0em !important; - border-radius: 4px 0em 4px 0em; -} - -.ui.top.right.attached.label { - width: auto; - left: auto; - right: 0em; - border-radius: 0em 4px 0em 4px; -} - -.ui.bottom.left.attached.label { - width: auto; - top: auto; - bottom: 0em; - border-radius: 4px 0em 0em 4px; -} - -.ui.bottom.right.attached.label { - top: auto; - bottom: 0em; - left: auto; - right: 0em; - width: auto; - border-radius: 4px 0em 4px 0em; -} - -/*------------------- - Corner Label ---------------------*/ - -.ui.corner.label { - background-color: transparent; - position: absolute; - top: 0em; - right: 0em; - z-index: 10; - margin: 0em; - font-size: 0.8125em; - width: 2rem; - height: 2rem; - padding: 0em; - text-align: center; - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; -} - -.ui.corner.label:after { - position: absolute; - content: ""; - right: 0em; - top: 0em; - z-index: -1; - width: 0em; - height: 0em; - border-top: 0em solid transparent; - border-right: 3em solid transparent; - border-bottom: 3em solid transparent; - border-left: 0em solid transparent; - border-right-color: inherit; - -webkit-transition: border-color 0.2s ease; - transition: border-color 0.2s ease; -} - -.ui.corner.label .icon { - margin: 0.4em 0em 0em 0.7em; -} - -.ui.corner.label .text { -/* display: inline-block;*/ - font-weight: bold; - margin: 0.5em 0em 0em 0.6em; - width: 2.5em; - font-size: 0.82em; - text-align: center; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); -} - -/* Left Corner */ - -.ui.left.corner.label, -.ui.left.corner.label:after { - right: auto; - left: 0em; -} - -.ui.left.corner.label:after { - border-top: 3em solid transparent; - border-right: 3em solid transparent; - border-bottom: 0em solid transparent; - border-left: 0em solid transparent; - border-top-color: inherit; -} - -.ui.left.corner.label .icon { - margin: 0.2em 0em 0em -0.5em; -} - -.ui.left.corner.label .text { - margin: 6px 0 0 -2px; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -/* Hover */ - -.ui.corner.label:hover { - background-color: transparent; -} - -/*------------------- - Fluid ---------------------*/ - -.ui.label.fluid, -.ui.fluid.labels > .label { - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -/*------------------- - Inverted ---------------------*/ - -.ui.inverted.labels .label, -.ui.inverted.label { - color: #FFFFFF !important; -} - -/*------------------- - Colors ---------------------*/ - -/*--- Black ---*/ - -.ui.black.labels .label, -.ui.black.label { - background-color: #5C6166 !important; - border-color: #5C6166 !important; - color: #FFFFFF !important; -} - -.ui.labels .black.label:before, -.ui.black.labels .label:before, -.ui.black.label:before { - background-color: #5C6166 !important; -} - -/* Hover */ - -a.ui.black.labels .label:hover, -a.ui.black.label:hover { - background-color: #333333 !important; - border-color: #333333 !important; -} - -.ui.labels a.black.label:hover:before, -.ui.black.labels a.label:hover:before, -a.ui.black.label:hover:before { - background-color: #333333 !important; -} - -/* Corner */ - -.ui.black.corner.label, -.ui.black.corner.label:hover { - background-color: transparent !important; -} - -/* Ribbon */ - -.ui.black.ribbon.label { - border-color: #333333 !important; -} - -/*--- Green ---*/ - -.ui.green.labels .label, -.ui.green.label { - background-color: #1e6823 !important; - border-color: #1e6823 !important; - color: #FFFFFF !important; - opacity:0.7; -} - -.ui.labels .green.label:before, -.ui.green.labels .label:before, -.ui.green.label:before { - background-color: #A1CF64 !important; -} - -/* Hover */ - -a.ui.green.labels .label:hover, -a.ui.green.label:hover { - background-color: #89B84C !important; - border-color: #89B84C !important; -} - -.ui.labels a.green.label:hover:before, -.ui.green.labels a.label:hover:before, -a.ui.green.label:hover:before { - background-color: #89B84C !important; -} - -/* Corner */ - -.ui.green.corner.label, -.ui.green.corner.label:hover { - background-color: transparent !important; -} - -/* Ribbon */ - -.ui.green.ribbon.label { - border-color: #89B84C !important; -} - -/*--- Red ---*/ - -.ui.red.labels .label, -.ui.red.label { - background-color: #fd4239 !important; - border-color: #fd4239 !important; - color: #FFFFFF !important; - opacity:0.8; -} - -.ui.labels .red.label:before, -.ui.red.labels .label:before, -.ui.red.label:before { - background-color: #D95C5C !important; -} - -/* Corner */ - -.ui.red.corner.label, -.ui.red.corner.label:hover { - background-color: transparent !important; -} - -/* Hover */ - -a.ui.red.labels .label:hover, -a.ui.red.label:hover { - background-color: #DE3859 !important; - border-color: #DE3859 !important; - color: #FFFFFF !important; -} - -.ui.labels a.red.label:hover:before, -.ui.red.labels a.label:hover:before, -a.ui.red.label:hover:before { - background-color: #DE3859 !important; -} - -/* Ribbon */ - -.ui.red.ribbon.label { - border-color: #DE3859 !important; -} - -/*--- Blue ---*/ - -.ui.blue.labels .label, -.ui.blue.label { - background-color: #6ECFF5 !important; - border-color: #6ECFF5 !important; - color: #FFFFFF !important; -} - -.ui.labels .blue.label:before, -.ui.blue.labels .label:before, -.ui.blue.label:before { - background-color: #6ECFF5 !important; -} - -/* Hover */ - -a.ui.blue.labels .label:hover, -.ui.blue.labels a.label:hover, -a.ui.blue.label:hover { - background-color: #1AB8F3 !important; - border-color: #1AB8F3 !important; - color: #FFFFFF !important; -} - -.ui.labels a.blue.label:hover:before, -.ui.blue.labels a.label:hover:before, -a.ui.blue.label:hover:before { - background-color: #1AB8F3 !important; -} - -/* Corner */ - -.ui.blue.corner.label, -.ui.blue.corner.label:hover { - background-color: transparent !important; -} - -/* Ribbon */ - -.ui.blue.ribbon.label { - border-color: #1AB8F3 !important; -} - -/*--- Purple ---*/ - -.ui.purple.labels .label, -.ui.purple.label { - background-color: #564F8A !important; - border-color: #564F8A !important; - color: #FFFFFF !important; -} - -.ui.labels .purple.label:before, -.ui.purple.labels .label:before, -.ui.purple.label:before { - background-color: #564F8A !important; -} - -/* Hover */ - -a.ui.purple.labels .label:hover, -.ui.purple.labels a.label:hover, -a.ui.purple.label:hover { - background-color: #3E3773 !important; - border-color: #3E3773 !important; - color: #FFFFFF !important; -} - -.ui.labels a.purple.label:hover:before, -.ui.purple.labels a.label:hover:before, -a.ui.purple.label:hover:before { - background-color: #3E3773 !important; -} - -/* Corner */ - -.ui.purple.corner.label, -.ui.purple.corner.label:hover { - background-color: transparent !important; -} - -/* Ribbon */ - -.ui.purple.ribbon.label { - border-color: #3E3773 !important; -} - -/*--- Orange ---*/ - -.ui.orange.labels .label, -.ui.orange.label { - background-color: #F05940 !important; - border-color: #F05940 !important; - color: #FFFFFF !important; -} - -.ui.labels .orange.label:before, -.ui.orange.labels .label:before, -.ui.orange.label:before { - background-color: #F05940 !important; -} - -/* Hover */ - -a.ui.orange.labels .label:hover, -.ui.orange.labels a.label:hover, -a.ui.orange.label:hover { - background-color: #FF4121 !important; - border-color: #FF4121 !important; - color: #FFFFFF !important; -} - -.ui.labels a.orange.label:hover:before, -.ui.orange.labels a.label:hover:before, -a.ui.orange.label:hover:before { - background-color: #FF4121 !important; -} - -/* Corner */ - -.ui.orange.corner.label, -.ui.orange.corner.label:hover { - background-color: transparent !important; -} - -/* Ribbon */ - -.ui.orange.ribbon.label { - border-color: #FF4121 !important; -} - -/*--- Teal ---*/ - -.ui.teal.labels .label, -.ui.teal.label { - background-color: #00B5AD !important; - border-color: #00B5AD !important; - color: #FFFFFF !important; -} - -.ui.labels .teal.label:before, -.ui.teal.labels .label:before, -.ui.teal.label:before { - background-color: #00B5AD !important; -} - -/* Hover */ - -a.ui.teal.labels .label:hover, -.ui.teal.labels a.label:hover, -a.ui.teal.label:hover { - background-color: #009A93 !important; - border-color: #009A93 !important; - color: #FFFFFF !important; -} - -.ui.labels a.teal.label:hover:before, -.ui.teal.labels a.label:hover:before, -a.ui.teal.label:hover:before { - background-color: #009A93 !important; -} - -/* Corner */ - -.ui.teal.corner.label, -.ui.teal.corner.label:hover { - background-color: transparent !important; -} - -/* Ribbon */ - -.ui.teal.ribbon.label { - border-color: #009A93 !important; -} - -/*------------------- - Horizontal ---------------------*/ - -.ui.horizontal.labels .label, -.ui.horizontal.label { - margin: -0.125em 0.5em -0.125em 0em; - padding: 0.35em 1em; - min-width: 6em; - text-align: center; -} - -/*------------------- - Circular ---------------------*/ - -.ui.circular.labels .label, -.ui.circular.label { - min-height: 1em; - max-height: 2em; - padding: 0.5em !important; - line-height: 1em; - text-align: center; - border-radius: 500rem; -} - -/*------------------- - Pointing ---------------------*/ - -.ui.pointing.label { - position: relative; -} - -.ui.attached.pointing.label { - position: absolute; -} - -.ui.pointing.label:before { - position: absolute; - content: ""; - width: 0.6em; - height: 0.6em; - background-image: none; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - z-index: 2; - -webkit-transition: background 0.1s linear; - transition: background 0.1s linear; -} - -/*--- Above ---*/ - -.ui.pointing.label:before { - background-color: #E8E8E8; -} - -.ui.pointing.label, -.ui.pointing.above.label { - margin-top: 1em; -} - -.ui.pointing.label:before, -.ui.pointing.above.label:before { - margin-left: -0.3em; - top: -0.3em; - left: 50%; -} - -/*--- Below ---*/ - -.ui.pointing.below.label { - margin-top: 0em; - margin-bottom: 1em; -} - -.ui.pointing.below.label:before { - margin-left: -0.3em; - top: auto; - right: auto; - bottom: -0.3em; - left: 50%; -} - -/*--- Left ---*/ - -.ui.pointing.left.label { - margin-top: 0em; - margin-left: 1em; -} - -.ui.pointing.left.label:before { - margin-top: -0.3em; - bottom: auto; - right: auto; - top: 50%; - left: 0em; -} - -/*--- Right ---*/ - -.ui.pointing.right.label { - margin-top: 0em; - margin-right: 1em; -} - -.ui.pointing.right.label:before { - margin-top: -0.3em; - right: -0.3em; - top: 50%; - bottom: auto; - left: auto; -} - -/*------------------ - Floating Label --------------------*/ - -.ui.floating.label { - position: absolute; - z-index: 100; - top: -1em; - left: 100%; - margin: 0em 0em 0em -1.5em !important; -} - -/*------------------- - Sizes ---------------------*/ - -.ui.small.labels .label, -.ui.small.label { - font-size: 0.75rem; -} - -.ui.label { - font-size: 0.8125rem; -} - -.ui.large.labels .label, -.ui.large.label { - font-size: 0.875rem; -} - -.ui.huge.labels .label, -.ui.huge.label { - font-size: 1rem; -} -/* - * # Semantic - Loader - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Loader -*******************************/ - -/* Standard Size */ - -.ui.loader { - display: none; - position: absolute; - top: 50%; - left: 50%; - margin: 0px; - z-index: 1000; - -webkit-transform: translateX(-50%) translateY(-50%); - -ms-transform: translateX(-50%) translateY(-50%); - transform: translateX(-50%) translateY(-50%); -} - -.ui.dimmer .loader { - display: block; -} - -/******************************* - Types -*******************************/ - -/*------------------- - Text ---------------------*/ - -.ui.text.loader { - width: auto !important; - height: auto !important; - text-align: center; - font-style: normal; -} - -.ui.mini.text.loader { - min-width: 16px; - padding-top: 2em; - font-size: 0.875em; -} - -.ui.small.text.loader { - min-width: 24px; - padding-top: 2.5em; - font-size: 0.875em; -} - -.ui.text.loader { - min-width: 32px; - font-size: 1em; - padding-top: 3em; -} - -.ui.large.text.loader { - min-width: 64px; - padding-top: 5em; - font-size: 1.2em; -} - -/******************************* - States -*******************************/ - -.ui.loader.active, -.ui.loader.visible { - display: block; -} - -.ui.loader.disabled, -.ui.loader.hidden { - display: none; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Inverted ---------------------*/ - -.ui.dimmer .ui.text.loader, -.ui.inverted.text.loader { - color: rgba(255, 255, 255, 0.8); -} - -.ui.inverted.dimmer .ui.text.loader { - color: rgba(0, 0, 0, 0.8); -} - -/* Tiny Size */ - -.ui.dimmer .mini.ui.loader, -.ui.inverted .mini.ui.loader { - background-image: url(../images/loader-mini-inverted.gif); -} - -/* Small Size */ - -.ui.dimmer .small.ui.loader, -.ui.inverted .small.ui.loader { - background-image: url(../images/loader-small-inverted.gif); -} - -/* Standard Size */ - -.ui.dimmer .ui.loader, -.ui.inverted.loader { - background-image: url(../images/loader-medium-inverted.gif); -} - -/* Large Size */ - -.ui.dimmer .large.ui.loader, -.ui.inverted .large.ui.loader { - background-image: url(../images/loader-large-inverted.gif); -} - -/*------------------- - Sizes ---------------------*/ - -/* Tiny Size */ - -.ui.inverted.dimmer .ui.mini.loader, -.ui.mini.loader { - width: 16px; - height: 16px; - background-image: url(../images/loader-mini.gif); -} - -/* Small Size */ - -.ui.inverted.dimmer .ui.small.loader, -.ui.small.loader { - width: 24px; - height: 24px; - background-image: url(../images/loader-small.gif); -} - -.ui.inverted.dimmer .ui.loader, -.ui.loader { - width: 32px; - height: 32px; - background: url(../images/loader-medium.gif) no-repeat; - background-position: 48% 0px; -} - -/* Large Size */ - -.ui.inverted.dimmer .ui.loader.large, -.ui.loader.large { - width: 64px; - height: 64px; - background-image: url(../images/loader-large.gif); -} - -/*------------------- - Inline ---------------------*/ - -.ui.inline.loader { - position: static; - vertical-align: middle; - margin: 0em; - -webkit-transform: none; - -ms-transform: none; - transform: none; -} - -.ui.inline.loader.active, -.ui.inline.loader.visible { - display: inline-block; -} -/* - * # Semantic - Progress Bar - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Progress Bar -*******************************/ - -.ui.progress { - border: 1px solid rgba(0, 0, 0, 0.1); - width: 100%; - height: 35px; - background-color: #FAFAFA; - padding: 5px; - border-radius: 0.3125em; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.progress .bar { - display: inline-block; - height: 100%; - background-color: #CCCCCC; - border-radius: 3px; - -webkit-transition: width 1s ease-in-out, background-color 1s ease-out; - transition: width 1s ease-in-out, background-color 1s ease-out; -} - -/******************************* - States -*******************************/ - -/*-------------- - Successful ----------------*/ - -.ui.successful.progress .bar { - background-color: #73E064 !important; -} - -.ui.successful.progress .bar, -.ui.successful.progress .bar::after { - -webkit-animation: none !important; - animation: none !important; -} - -/*-------------- - Failed ----------------*/ - -.ui.failed.progress .bar { - background-color: #DF9BA4 !important; -} - -.ui.failed.progress .bar, -.ui.failed.progress .bar::after { - -webkit-animation: none !important; - animation: none !important; -} - -/*-------------- - Active ----------------*/ - -.ui.active.progress .bar { - position: relative; -} - -.ui.active.progress .bar::after { - content: ''; - opacity: 0; - position: absolute; - top: 0px; - left: 0px; - right: 0px; - bottom: 0px; - background: #FFFFFF; - border-radius: 3px; - -webkit-animation: progress-active 2s ease-out infinite; - animation: progress-active 2s ease-out infinite; -} - -@-webkit-keyframes progress-active { - 0% { - opacity: 0; - width: 0; - } - - 50% { - opacity: 0.3; - } - - 100% { - opacity: 0; - width: 95%; - } -} - -@keyframes progress-active { - 0% { - opacity: 0; - width: 0; - } - - 50% { - opacity: 0.3; - } - - 100% { - opacity: 0; - width: 100%; - } -} - -/*-------------- - Disabled ----------------*/ - -.ui.disabled.progress { - opacity: 0.35; -} - -.ui.disabled.progress .bar, -.ui.disabled.progress .bar::after { - -webkit-animation: none !important; - animation: none !important; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Attached ----------------*/ - -/* bottom attached */ - -.ui.progress.attached { - position: relative; - border: none; -} - -.ui.progress.attached, -.ui.progress.attached .bar { - display: block; - height: 3px; - padding: 0px; - overflow: hidden; - border-radius: 0em 0em 0.3125em 0.3125em; -} - -.ui.progress.attached .bar { - border-radius: 0em; -} - -/* top attached */ - -.ui.progress.top.attached, -.ui.progress.top.attached .bar { - top: -2px; - border-radius: 0.3125em 0.3125em 0em 0em; -} - -.ui.progress.top.attached .bar { - border-radius: 0em; -} - -/*-------------- - Colors ----------------*/ - -.ui.blue.progress .bar { - background-color: #6ECFF5; -} - -.ui.black.progress .bar { - background-color: #5C6166; -} - -.ui.green.progress .bar { - background-color: #A1CF64; -} - -.ui.red.progress .bar { - background-color: #EF4D6D; -} - -.ui.purple.progress .bar { - background-color: #564F8A; -} - -.ui.teal.progress .bar { - background-color: #00B5AD; -} - -/*-------------- - Striped ----------------*/ - -.ui.progress.striped .bar { - -webkit-background-size: 30px 30px; - background-size: 30px 30px; - background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(135deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -webkit-linear-gradient(315deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} - -.ui.progress.active.striped .bar:after { - -webkit-animation: none; - -ms-animation: none; - animation: none; -} - -.ui.progress.active.striped .bar { - -webkit-animation: progress-striped 3s linear infinite; - animation: progress-striped 3s linear infinite; -} - -@-webkit-keyframes progress-striped { - 0% { - background-position: 0px 0; - } - - 100% { - background-position: 60px 0; - } -} - -@keyframes progress-striped { - 0% { - background-position: 0px 0; - } - - 100% { - background-position: 60px 0; - } -} - -/*-------------- - Sizes ----------------*/ - -.ui.small.progress .bar { - height: 14px; -} -/* - * # Semantic - Reveal - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Reveal -*******************************/ - -.ui.reveal { - display: inline-block; - position: relative !important; - z-index: 2 !important; - font-size: 0em !important; -} - -.ui.reveal > .content { - font-size: 1rem !important; -} - -.ui.reveal > .visible.content { - -webkit-transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s; - transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s; -} - -.ui.reveal > .visible.content { - position: absolute !important; - top: 0em !important; - left: 0em !important; - z-index: 4 !important; - -webkit-transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s; - transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s; -} - -.ui.reveal > .hidden.content { - position: relative !important; - z-index: 3 !important; -} - -/*------------------ - Loose Coupling --------------------*/ - -.ui.reveal.button { - overflow: hidden; -} - -/******************************* - Types -*******************************/ - -/*-------------- - Slide ----------------*/ - -.ui.slide.reveal { - position: relative !important; - display: block; - overflow: hidden !important; - white-space: nowrap; -} - -.ui.slide.reveal > .content { - display: block; - float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - margin: 0em; - -webkit-transition: top 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, left 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, right 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, bottom 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s; - transition: top 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, left 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, right 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s, bottom 0.8s cubic-bezier(0.175, 0.885, 0.32, 1) 0.15s; -} - -.ui.slide.reveal > .visible.content { - position: relative !important; -} - -.ui.slide.reveal > .hidden.content { - position: absolute !important; - left: 100% !important; - width: 100% !important; -} - -.ui.slide.reveal:hover > .visible.content { - left: -100% !important; -} - -.ui.slide.reveal:hover > .hidden.content { - left: 0% !important; -} - -.ui.right.slide.reveal > .visible.content { - left: 0%; -} - -.ui.right.slide.reveal > .hidden.content { - left: auto !important; - right: 100% !important; -} - -.ui.right.slide.reveal:hover > .visible.content { - left: 100% !important; - right: auto !important; -} - -.ui.right.slide.reveal:hover > .hidden.content { - left: auto !important; - right: 0% !important; -} - -.ui.up.slide.reveal > .visible.content { - top: 0% !important; - left: 0% !important; - right: auto !important; - bottom: auto !important; -} - -.ui.up.slide.reveal > .hidden.content { - top: 100% !important; - left: 0% !important; - right: auto !important; - bottom: auto !important; -} - -.ui.slide.up.reveal:hover > .visible.content { - top: -100% !important; - left: 0% !important; -} - -.ui.slide.up.reveal:hover > .hidden.content { - top: 0% !important; - left: 0% !important; -} - -.ui.down.slide.reveal > .visible.content { - top: auto !important; - right: auto !important; - bottom: auto !important; - bottom: 0% !important; -} - -.ui.down.slide.reveal > .hidden.content { - top: auto !important; - right: auto !important; - bottom: 100% !important; - left: 0% !important; -} - -.ui.slide.down.reveal:hover > .visible.content { - left: 0% !important; - bottom: -100% !important; -} - -.ui.slide.down.reveal:hover > .hidden.content { - left: 0% !important; - bottom: 0% !important; -} - -/*-------------- - Fade ----------------*/ - -.ui.fade.reveal > .visible.content { - opacity: 1; -} - -.ui.fade.reveal:hover > .visible.content { - opacity: 0; -} - -/*-------------- - Move ----------------*/ - -.ui.move.reveal > .visible.content, -.ui.move.left.reveal > .visible.content { - left: auto !important; - top: auto !important; - bottom: auto !important; - right: 0% !important; -} - -.ui.move.reveal:hover > .visible.content, -.ui.move.left.reveal:hover > .visible.content { - right: 100% !important; -} - -.ui.move.right.reveal > .visible.content { - right: auto !important; - top: auto !important; - bottom: auto !important; - left: 0% !important; -} - -.ui.move.right.reveal:hover > .visible.content { - left: 100% !important; -} - -.ui.move.up.reveal > .visible.content { - right: auto !important; - left: auto !important; - top: auto !important; - bottom: 0% !important; -} - -.ui.move.up.reveal:hover > .visible.content { - bottom: 100% !important; -} - -.ui.move.down.reveal > .visible.content { - right: auto !important; - left: auto !important; - top: 0% !important; - bottom: auto !important; -} - -.ui.move.down.reveal:hover > .visible.content { - top: 100% !important; -} - -/*-------------- - Rotate ----------------*/ - -.ui.rotate.reveal > .visible.content { - -webkit-transition-duration: 0.8s; - transition-duration: 0.8s; - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); -} - -.ui.rotate.reveal > .visible.content, -.ui.rotate.right.reveal > .visible.content { - -webkit-transform-origin: bottom right; - -ms-transform-origin: bottom right; - transform-origin: bottom right; -} - -.ui.rotate.reveal:hover > .visible.content, -.ui.rotate.right.reveal:hover > .visible.content { - -webkit-transform: rotate(110deg); - -ms-transform: rotate(110deg); - transform: rotate(110deg); -} - -.ui.rotate.left.reveal > .visible.content { - -webkit-transform-origin: bottom left; - -ms-transform-origin: bottom left; - transform-origin: bottom left; -} - -.ui.rotate.left.reveal:hover > .visible.content { - -webkit-transform: rotate(-110deg); - -ms-transform: rotate(-110deg); - transform: rotate(-110deg); -} - -/******************************* - States -*******************************/ - -.ui.disabled.reveal { - opacity: 1 !important; -} - -.ui.disabled.reveal > .content { - -webkit-transition: none !important; - transition: none !important; -} - -.ui.disabled.reveal:hover > .visible.content { - position: static !important; - display: block !important; - opacity: 1 !important; - top: 0 !important; - left: 0 !important; - right: auto !important; - bottom: auto !important; - -webkit-transform: none !important; - -ms-transform: none !important; - transform: none !important; -} - -.ui.disabled.reveal:hover > .hidden.content { - display: none !important; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Masked ----------------*/ - -.ui.masked.reveal { - overflow: hidden; -} - -/*-------------- - Instant ----------------*/ - -.ui.instant.reveal > .content { - -webkit-transition-delay: 0s !important; - transition-delay: 0s !important; -} -/* - * # Semantic - Segment - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Segment -*******************************/ - -.ui.segment { - position: relative; - background-color: #FFFFFF; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - padding: 1em; - border-radius: 5px 5px 5px 5px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.segment:first-child { - margin-top: 0em; -} - -.ui.segment:last-child { - margin-bottom: 0em; -} - -.ui.segment:after { - content: ''; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -.ui.vertical.segment { - margin: 0em; - padding-left: 0em; - padding-right: 0em; - background-color: transparent; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.vertical.segment:first-child { - padding-top: 0em; -} - -.ui.horizontal.segment { - margin: 0em; - padding-top: 0em; - padding-bottom: 0em; - background-color: transparent; - border-radius: 0px; - -webkit-box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.1); - box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.1); -} - -.ui.horizontal.segment:first-child { - padding-left: 0em; -} - -/*------------------- - Loose Coupling ---------------------*/ - -.ui.pointing.menu + .ui.attached.segment { - top: 1px; -} - -.ui.page.grid.segment .ui.grid .ui.segment.column { - padding-top: 2rem; - padding-bottom: 2rem; -} - -.ui.grid.segment, -.ui.grid .ui.segment.row, -.ui.grid .ui.segment.column { - border-radius: 0em; - -webkit-box-shadow: none; - box-shadow: none; - border: none; - margin-bottom:22px; -} - -/* No padding on edge content */ - -.ui.segment > :first-child { - margin-top: 0em; -} - -.ui.segment > :last-child { - margin-bottom: 0em; -} - -/******************************* - Types -*******************************/ - -/*------------------- - Piled ---------------------*/ - -.ui.piled.segment { - margin: 2em 0em; - -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.15); - -ms-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.15); - -o-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.15); - box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.15); -} - -.ui.piled.segment:first-child { - margin-top: 0em; -} - -.ui.piled.segment:last-child { - margin-bottom: 0em; -} - -.ui.piled.segment:after, -.ui.piled.segment:before { - background-color: #FFFFFF; - visibility: visible; - content: ""; - display: block; - height: 100%; - left: -1px; - position: absolute; - width: 100%; - -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.1); -} - -.ui.piled.segment:after { - -webkit-transform: rotate(1.2deg); - -ms-transform: rotate(1.2deg); - transform: rotate(1.2deg); - top: 0; - z-index: -1; -} - -.ui.piled.segment:before { - -webkit-transform: rotate(-1.2deg); - -ms-transform: rotate(-1.2deg); - transform: rotate(-1.2deg); - top: 0; - z-index: -2; -} - -/*------------------- - Stacked ---------------------*/ - -.ui.stacked.segment { - padding-bottom: 1.7em; -} - -.ui.stacked.segment:after, -.ui.stacked.segment:before { - content: ''; - position: absolute; - bottom: -3px; - left: 0%; - border-top: 1px solid rgba(0, 0, 0, 0.1); - background-color: rgba(0, 0, 0, 0.02); - width: 100%; - height: 5px; - visibility: visible; -} - -.ui.stacked.segment:before { - bottom: 0px; -} - -/* Inverted */ - -.ui.stacked.inverted.segment:after, -.ui.stacked.inverted.segment:before { - background-color: rgba(255, 255, 255, 0.1); - border-top: 1px solid rgba(255, 255, 255, 0.35); -} - -/*------------------- - Raised ---------------------*/ - -.ui.raised.segment { - -webkit-box-shadow: 0px 1px 2px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 1px 2px 1px rgba(0, 0, 0, 0.1); -} - -/******************************* - States -*******************************/ - -.ui.disabled.segment { - opacity: 0.8; - color: #DDDDDD; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Basic ---------------------*/ - -.ui.basic.segment { - position: relative; - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; - border-radius: 0px; -} - -.ui.basic.segment:first-child { - padding-top: 0em; -} - -.ui.basic.segment:last-child { - padding-bottom: 0em; -} - -/*------------------- - Fittted ---------------------*/ - -.ui.fitted.segment { - padding: 0em; -} - -/*------------------- - Colors ---------------------*/ - -.ui.device.segment, .ui.blue.segment ,.ui.info.segment{ - -webkit-box-shadow:none; - box-shadow:none; - -webkit-box-shadow:none; - border-radius:0; - background-color:#FAFAFA!important; -} -.ui.blue.segment { - border-top:0.2em solid #6ECFF5; -} -.ui.green.segment { - border-top: 0.2em solid #A1CF64; -} - -.ui.red.segment { - border-top: 0.2em solid #D95C5C; -} - -.ui.orange.segment { - border-top: 0.2em solid #F05940; -} - -.ui.purple.segment { - border-top: 0.2em solid #564F8A; -} - -.ui.teal.segment { - border-top: 0.2em solid #00B5AD; -} - -/*------------------- - Inverted Colors ---------------------*/ - -.ui.inverted.black.segment { - background-color: #5C6166 !important; - color: #FFFFFF !important; -} - -.ui.inverted.blue.segment { - background-color: #6ECFF5 !important; - color: #FFFFFF !important; -} - -.ui.inverted.green.segment { - background-color: #A1CF64 !important; - color: #FFFFFF !important; -} - -.ui.inverted.red.segment { - background-color: #D95C5C !important; - color: #FFFFFF !important; -} - -.ui.inverted.orange.segment { - background-color: #F05940 !important; - color: #FFFFFF !important; -} - -.ui.inverted.purple.segment { - background-color: #564F8A !important; - color: #FFFFFF !important; -} - -.ui.inverted.teal.segment { - background-color: #00B5AD !important; - color: #FFFFFF !important; -} - -/*------------------- - Aligned ---------------------*/ - -.ui.left.aligned.segment { - text-align: left; -} - -.ui.right.aligned.segment { - text-align: right; -} - -.ui.center.aligned.segment { - text-align: center; -} - -/*------------------- - Floated ---------------------*/ - -.ui.floated.segment, -.ui.left.floated.segment { - float: left; -} - -.ui.right.floated.segment { - float: right; -} - -/*------------------- - Inverted ---------------------*/ - -.ui.inverted.segment { - border: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.inverted.segment .segment { - color: rgba(0, 0, 0, 0.7); -} - -.ui.inverted.segment .inverted.segment { - color: #FFFFFF; -} - -.ui.inverted.segment, -.ui.primary.inverted.segment { - background-color: #222222; - color: #FFFFFF; -} - -/*------------------- - Ordinality ---------------------*/ - -.ui.primary.segment { - background-color: #FFFFFF; - color: #555555; -} - -.ui.secondary.segment { - background-color: #FAF9FA; - color: #777777; -} - -.ui.tertiary.segment { - background-color: #EBEBEB; - color: #B0B0B0; -} - -.ui.secondary.inverted.segment { - background-color: #555555; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(255, 255, 255, 0.3)), to(rgba(255, 255, 255, 0.3))); - background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.3) 100%); - background-image: -webkit-gradient(linear, top left, bottom left, from(rgba(255, 255, 255, 0.3)), to(rgba(255, 255, 255, 0.3))); - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.3)), to(rgba(255, 255, 255, 0.3))); - background-image: linear-gradient(rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.3) 100%); - color: #FAFAFA; -} - -.ui.tertiary.inverted.segment { - background-color: #555555; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgba(255, 255, 255, 0.6)), to(rgba(255, 255, 255, 0.6))); - background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.6) 0%, rgba(255, 255, 255, 0.6) 100%); - background-image: -webkit-gradient(linear, top left, bottom left, from(rgba(255, 255, 255, 0.6)), to(rgba(255, 255, 255, 0.6))); - background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.6)), to(rgba(255, 255, 255, 0.6))); - background-image: linear-gradient(rgba(255, 255, 255, 0.6) 0%, rgba(255, 255, 255, 0.6) 100%); - color: #EEEEEE; -} - -/*------------------- - Attached ---------------------*/ - -.ui.segment.attached { - top: -1px; - bottom: -1px; - border-radius: 0px; - margin: 0em; - -webkit-box-shadow: 0px 0px 0px 1px #DDDDDD; - box-shadow: 0px 0px 0px 1px #DDDDDD; -} - -.ui.top.attached.segment { - top: 0px; - bottom: -1px; - margin-top: 1em; - margin-bottom: 0em; - border-radius: 5px 5px 0px 0px; -} - -.ui.segment.top.attached:first-child { - margin-top: 0em; -} - -.ui.segment.bottom.attached { - top: -1px; - bottom: 0px; - margin-top: 0em; - margin-bottom: 1em; - border-radius: 0px 0px 5px 5px; -} - -.ui.segment.bottom.attached:last-child { - margin-bottom: 0em; -} -/* - * # Semantic - Steps - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Step -*******************************/ - -.ui.step, -.ui.steps .step { - display: inline-block; - position: relative; - padding: 1em 2em 1em 3em; - vertical-align: top; - background-color: #FFFFFF; - color: #888888; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.step:after, -.ui.steps .step:after { - position: absolute; - z-index: 2; - content: ''; - top: 0em; - right: -1.45em; - border-bottom: 1.5em solid transparent; - border-left: 1.5em solid #FFFFFF; - border-top: 1.5em solid transparent; - width: 0em; - height: 0em; -} - -.ui.step, -.ui.steps .step, -.ui.steps .step:after { - -webkit-transition: opacity 0.1s ease, color 0.1s ease, -webkit-box-shadow 0.1s ease; - transition: opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; -} - -/******************************* - Group -*******************************/ - -.ui.steps { - cursor: pointer; - display: inline-block; - font-size: 0em; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - line-height: 1; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - border-radius: 0.3125rem; -} - -.ui.steps .step:first-child { - padding-left: 1.35em; - border-radius: 0.3125em 0em 0em 0.3125em; -} - -.ui.steps .step:last-child { - border-radius: 0em 0.3125em 0.3125em 0em; -} - -.ui.steps .step:only-child { - border-radius: 0.3125em; -} - -.ui.steps .step:last-child { - margin-right: 0em; -} - -.ui.steps .step:last-child:after { - display: none; -} - -/******************************* - States -*******************************/ - -/* Hover */ - -.ui.step:hover, -.ui.step.hover { - background-color: #F7F7F7; - color: rgba(0, 0, 0, 0.8); -} - -.ui.steps .step.hover:after, -.ui.steps .step:hover:after, -.ui.step:hover, -.ui.step.hover::after { - border-left-color: #F7F7F7; -} - -/* Hover */ - -.ui.steps .step.down, -.ui.steps .step:active, -.ui.step.down, -.ui.step:active { - background-color: #F0F0F0; -} - -.ui.steps .step.down:after, -.ui.steps .step:active:after, -.ui.steps.down::after, -.ui.steps:active::after { - border-left-color: #F0F0F0; -} - -/* Active */ - -.ui.steps .step.active, -.ui.active.step { - cursor: auto; - background-color: #555555; - color: #FFFFFF; - font-weight: bold; -} - -.ui.steps .step.active:after, -.ui.active.steps:after { - border-left-color: #555555; -} - -/* Disabled */ - -.ui.steps .disabled.step, -.ui.disabled.step { - cursor: auto; - background-color: #FFFFFF; - color: #CBCBCB; -} - -.ui.disabled.step:after { - border: none; - background-color: #FFFFFF; - top: 0.42em; - right: -1em; - width: 2.15em; - height: 2.15em; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-box-shadow: -1px -1px 0px 0px rgba(0, 0, 0, 0.1) inset; - box-shadow: -1px -1px 0px 0px rgba(0, 0, 0, 0.1) inset; -} - -/******************************* - Variations -*******************************/ - -/* Attached */ - -.attached.ui.steps { - margin: 0em; - border-radius: 0.3125em 0.3125em 0em 0em; -} - -.attached.ui.steps .step:first-child { - border-radius: 0.3125em 0em 0em 0em; -} - -.attached.ui.steps .step:last-child { - border-radius: 0em 0.3125em 0em 0em; -} - -/* Bottom Side */ - -.bottom.attached.ui.steps { - margin-top: -1px; - border-radius: 0em 0em 0.3125em 0.3125em; -} - -.bottom.attached.ui.steps .step:first-child { - border-radius: 0em 0em 0em 0.3125em; -} - -.bottom.attached.ui.steps .step:last-child { - border-radius: 0em 0em 0.3125em 0em; -} - -/* Evenly divided */ - -.ui.one.steps, -.ui.two.steps, -.ui.three.steps, -.ui.four.steps, -.ui.five.steps, -.ui.six.steps, -.ui.seven.steps, -.ui.eight.steps { - display: block; -} - -.ui.one.steps > .step { - width: 100%; -} - -.ui.two.steps > .step { - width: 50%; -} - -.ui.three.steps > .step { - width: 33.333%; -} - -.ui.four.steps > .step { - width: 25%; -} - -.ui.five.steps > .step { - width: 20%; -} - -.ui.six.steps > .step { - width: 16.666%; -} - -.ui.seven.steps > .step { - width: 14.285%; -} - -.ui.eight.steps > .step { - width: 12.500%; -} - -/******************************* - Sizes -*******************************/ - -.ui.small.step, -.ui.small.steps .step { - font-size: 0.8rem; -} - -.ui.step, -.ui.steps .step { - font-size: 1rem; -} - -.ui.large.step, -.ui.large.steps .step { - font-size: 1.25rem; -} -/* - * # Semantic - Accordion - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Accordion -*******************************/ - -.ui.accordion, -.ui.accordion .accordion { - width: 600px; - max-width: 100%; - overflow: hidden; - font-size: 1rem; - border-radius: 0.3125em; - background-color: #FFFFFF; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); -} - -.ui.accordion a.title { - cursor: pointer; - margin: 0em; - padding: 0.75em 1em; - color: rgba(0, 0, 0, 0.6); - border-top: 1px solid rgba(0, 0, 0, 0.05); - -webkit-transition: background-color 0.2s ease-out; - transition: background-color 0.2s ease-out; -} - -.ui.accordion .title:first-child { - border-top: none; -} - -/* Content */ - -.ui.accordion .content { - display: none; - margin: 0em; - padding: 8px 16px; -} - -/* Arrow */ -.ui.accordion .title .dropdown.icon { - display: inline-block; - float: none; - -webkit-transition: -webkit-transform 0.2s ease, opacity 0.2s ease; - transition: transform 0.2s ease, - opacity 0.2s ease; - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); -} - -.ui.accordion .title .dropdown.icon:before { - content: '\f0da'; -} - -/*-------------- - Loose Coupling ----------------*/ - -.ui.basic.accordion.menu { - background-color: #FFFFFF; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); -} - -.ui.basic.accordion.menu .title, -.ui.basic.accordion.menu .content { - padding: 0em; -} - -/******************************* - Types -*******************************/ - -/*-------------- - Basic ----------------*/ - -.ui.basic.accordion { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.basic.accordion .title, -.ui.basic.accordion .title { - background-color: transparent; - border-top: none; - padding-left: 0em; - padding-right: 0em; -} - -.ui.basic.accordion .active.title { - background-color: transparent; -} - -/******************************* - States -*******************************/ - -/*-------------- - Hover ----------------*/ - -.ui.accordion .title:hover, -.ui.accordion .active.title { - color: rgba(0, 0, 0, 0.8); -} - -/*-------------- - Active ----------------*/ - -.ui.accordion .active.title { - background-color: rgba(0, 0, 0, 0.1); - color: rgba(0, 0, 0, 0.8); -} - -.ui.accordion .active.title .dropdown.icon { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} - -.ui.accordion .active.content { - display: block; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Fluid ----------------*/ - -.ui.fluid.accordion, -.ui.fluid.accordion .accordion { - width: 100%; -} -/* - * # Semantic - Chat Room - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Chat Room -*******************************/ - -.ui.chatroom { - background-color: #F8F8F8; - width: 330px; - height: 370px; - padding: 0px; -} - -.ui.chatroom .room { - position: relative; - background-color: #FFFFFF; - overflow: hidden; - height: 286px; - border: 1px solid rgba(0, 0, 0, 0.1); - border-top: none; - border-bottom: none; -} - -.ui.chatroom .room .loader { - display: none; - margin: -25px 0px 0px -25px; -} - -/* Chat Room Actions */ - -.ui.chatroom .actions { - overflow: hidden; - background-color: #EEEEEE; - padding: 4px; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 5px 5px 0px 0px; -} - -.ui.chatroom .actions .button { - float: right; - margin-left: 3px; -} - -/* Online User Count */ - -.ui.chatroom .actions .message { - float: left; - margin-left: 6px; - font-size: 11px; - color: #AAAAAA; - text-shadow: 0px -1px 0px rgba(255, 255, 255, 0.8); - line-height: 28px; -} - -.ui.chatroom .actions .message .loader { - display: inline-block; - margin-right: 8px; -} - -/* Chat Room Text Log */ - -.ui.chatroom .log { - float: left; - overflow: auto; - overflow-x: hidden; - overflow-y: auto; -} - -.ui.chatroom .log .message { - padding: 3px 0px; - border-top: 1px dotted #DADADA; -} - -.ui.chatroom .log .message:first-child { - border-top: none; -} - -/* status event */ - -.ui.chatroom .status { - padding: 5px 0px; - color: #AAAAAA; - font-size: 12px; - font-style: italic; - line-height: 1.33; - border-top: 1px dotted #DADADA; -} - -.ui.chatroom .log .status:first-child { - border-top: none; -} - -.ui.chatroom .log .flag { - float: left; -} - -.ui.chatroom .log p { - margin-left: 0px; -} - -.ui.chatroom .log .author { - font-weight: bold; - -webkit-transition: color 0.3s ease-out; - transition: color 0.3s ease-out; -} - -.ui.chatroom .log a.author:hover { - opacity: 0.8; -} - -.ui.chatroom .log .message.admin p { - font-weight: bold; - margin: 1px 0px 0px 23px; -} - -.ui.chatroom .log .divider { - margin: -1px 0px; - font-size: 11px; - padding: 10px 0px; - border-top: 1px solid #F8F8F8; - border-bottom: 1px solid #F8F8F8; -} - -.ui.chatroom .log .divider .rule { - top: 50%; - width: 15%; -} - -.ui.chatroom .log .divider .label { - color: #777777; - margin: 0px; -} - -/* Chat Room User List */ - -.ui.chatroom .room .list { - position: relative; - overflow: auto; - overflow-x: hidden; - overflow-y: auto; - float: left; - background-color: #EEEEEE; - border-left: 1px solid #DDDDDD; -} - -.ui.chatroom .room .list .user { - display: table; - padding: 3px 7px; - border-bottom: 1px solid #DDDDDD; -} - -.ui.chatroom .room .list .user:hover { - background-color: #F8F8F8; -} - -.ui.chatroom .room .list .image { - display: table-cell; - vertical-align: middle; - width: 20px; -} - -.ui.chatroom .room .list .image img { - width: 20px; - height: 20px; - vertical-align: middle; -} - -.ui.chatroom .room .list p { - display: table-cell; - vertical-align: middle; - padding-left: 7px; - padding-right: 14px; - font-size: 11px; - line-height: 1.2; - font-weight: bold; -} - -.ui.chatroom .room .list a:hover { - opacity: 0.8; -} - -/* User List Loading */ - -.ui.chatroom.loading .loader { - display: block; -} - -/* Chat Room Talk Input */ - -.ui.chatroom .talk { - border: 1px solid rgba(0, 0, 0, 0.1); - padding: 5px 0px 0px; - background-color: #EEEEEE; - border-radius: 0px 0px 5px 5px; -} - -.ui.chatroom .talk .avatar, -.ui.chatroom .talk input, -.ui.chatroom .talk .button { - float: left; -} - -.ui.chatroom .talk .avatar img { - display: block; - width: 30px; - height: 30px; - margin-right: 4px; - border-radius: 500rem; -} - -.ui.chatroom .talk input { - border: 1px solid #CCCCCC; - margin: 0px; - width: 196px; - height: 14px; - padding: 8px 5px; - font-size: 12px; - color: #555555; -} - -.ui.chatroom .talk input.focus { - border: 1px solid #AAAAAA; -} - -.ui.chatroom .send { - width: 80px; - height: 32px; - margin-left: -1px; - padding: 4px 12px; - font-size: 12px; - line-height: 23px; - -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset; - border-radius: 0 5px 5px 0; -} - -.ui.chatroom .talk .log-in.button { - display: block; - float: none; - margin-top: -6px; - height: 22px; - border-radius: 0px 0px 4px 4px; -} - -.ui.chatroom .talk .log-in.button i { - vertical-align: text-top; -} - -/* Quirky Flags */ - -.ui.chatroom .log .team.flag { - width: 18px; -} - -/* Chat room Loaded */ - -.ui.chatroom.loading .loader { - display: block; -} - -/* Standard Size */ - -.ui.chatroom { - width: 330px; - height: 370px; -} - -.ui.chatroom .room .container { - width: 3000px; -} - -.ui.chatroom .log { - width: 314px; - height: 278px; - padding: 4px 7px; -} - -.ui.chatroom .room .list { - width: 124px; - height: 278px; - padding: 4px 0px; -} - -.ui.chatroom .room .list .user { - width: 110px; -} - -.ui.chatroom .talk { - height: 40px; -} -/* - * # Semantic - Checkbox - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Checkbox -*******************************/ - -/*-------------- - Standard ----------------*/ - -/*--- Content ---*/ - -.ui.checkbox { - position: relative; - display: inline-block; - min-width: 1em; - height: 1.25em; - line-height: 1em; - outline: none; - vertical-align: middle; -} - -.ui.checkbox input { - position: absolute; - top: 0px; - left: 0px; - opacity: 0 !important; - outline: none; -} - -/*--- Box ---*/ - -.ui.checkbox .box, -.ui.checkbox label { - cursor: pointer; - padding-left: 2em; - outline: none; -} - -.ui.checkbox .box:before, -.ui.checkbox label:before { - position: absolute; - top: 0em; - line-height: 1; - width: 1em; - height: 1em; - left: 0em; - content: ''; - border-radius: 4px; - background: #FFFFFF; - -webkit-transition: background-color 0.3s ease, -webkit-box-shadow 0.3s ease; - transition: background-color 0.3s ease, box-shadow 0.3s ease; - -webkit-box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.2); - box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.2); -} - -/*--- Checkbox ---*/ - -.ui.checkbox .box:after, -.ui.checkbox label:after { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - opacity: 0; - content: ''; - position: absolute; - background: transparent; - border: 0.2em solid #333333; - border-top: none; - border-right: none; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -.ui.checkbox .box:after, -.ui.checkbox label:after { - top: 0.275em; - left: 0.2em; - width: 0.45em; - height: 0.15em; -} - -/*--- Inside Label ---*/ - -.ui.checkbox label { - color: rgba(0, 0, 0, 0.6); - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; -} - -.ui.checkbox label:hover { - color: rgba(0, 0, 0, 0.8); -} - -.ui.checkbox input:focus + label { - color: rgba(0, 0, 0, 0.8); -} - -/*--- Outside Label ---*/ - -.ui.checkbox + label { - cursor: pointer; - opacity: 0.85; - vertical-align: middle; -} - -.ui.checkbox + label:hover { - opacity: 1; -} - -/******************************* - States -*******************************/ - -/*--- Hover ---*/ - -.ui.checkbox .box:hover::before, -.ui.checkbox label:hover::before { - -webkit-box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.3); - box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.3); -} - -/*--- Down ---*/ - -.ui.checkbox .box:active::before, -.ui.checkbox label:active::before { - background-color: #F5F5F5; -} - -/*--- Focus ---*/ - -.ui.checkbox input:focus + .box:before, -.ui.checkbox input:focus + label:before { - -webkit-box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.3); - box-shadow: 0em 0em 0em 1px rgba(0, 0, 0, 0.3); -} - -/*--- Active ---*/ - -.ui.checkbox input:checked + .box:after, -.ui.checkbox input:checked + label:after { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - filter: alpha(opacity=100); - opacity: 1; -} - -/*--- Disabled ---*/ - -.ui.disabled.checkbox + .box:after, -.ui.checkbox input[disabled] + .box:after, -.ui.disabled.checkbox label, -.ui.checkbox input[disabled] + label { - opacity: 0.4; - color: rgba(0, 0, 0, 0.3); -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Radio ----------------*/ - -.ui.radio.checkbox .box:before, -.ui.radio.checkbox label:before { - min-width: 1em; - height: 1em; - border-radius: 500px; -} - -.ui.radio.checkbox .box:after, -.ui.radio.checkbox label:after { - border: none; - top: 0.2em; - left: 0.2em; - width: 0.6em; - height: 0.6em; - background-color: #555555; - -webkit-transform: none; - -ms-transform: none; - transform: none; - border-radius: 500px; -} - -/*-------------- - Slider ----------------*/ - -.ui.slider.checkbox { - cursor: pointer; - min-width: 3em; -} - -/* Line */ - -.ui.slider.checkbox:after { - position: absolute; - top: 0.5em; - left: 0em; - content: ''; - width: 3em; - height: 2px; - background-color: rgba(0, 0, 0, 0.1); -} - -/* Button */ - -.ui.slider.checkbox .box, -.ui.slider.checkbox label { - padding-left: 4em; -} - -.ui.slider.checkbox .box:before, -.ui.slider.checkbox label:before { - cursor: pointer; - display: block; - position: absolute; - top: -0.25em; - left: 0em; - z-index: 1; - width: 1.5em; - height: 1.5em; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - border-radius: 50rem; - -webkit-transition: left 0.3s ease 0s; - transition: left 0.3s ease 0s; -} - -/* Button Activation Light */ - -.ui.slider.checkbox .box:after, -.ui.slider.checkbox label:after { - opacity: 1; - position: absolute; - content: ''; - top: 0.15em; - left: 0em; - z-index: 2; - margin-left: 0.375em; - border: none; - width: 0.75em; - height: 0.75em; - border-radius: 50rem; - -webkit-transform: none; - -ms-transform: none; - transform: none; - -webkit-transition: background 0.3s ease 0s, - left 0.3s ease 0s; - transition: background 0.3s ease 0s, - left 0.3s ease 0s; -} - -/* Selected Slider Toggle */ - -.ui.slider.checkbox input:checked + .box:before, -.ui.slider.checkbox input:checked + label:before, -.ui.slider.checkbox input:checked + .box:after, -.ui.slider.checkbox input:checked + label:after { - left: 1.75em; -} - -/* Off Color */ - -.ui.slider.checkbox .box:after, -.ui.slider.checkbox label:after { - background-color: #D95C5C; -} - -/* On Color */ - -.ui.slider.checkbox input:checked + .box:after, -.ui.slider.checkbox input:checked + label:after { - background-color: #89B84C; -} - -/*-------------- - Toggle ----------------*/ - -.ui.toggle.checkbox { - cursor: pointer; -} - -.ui.toggle.checkbox .box, -.ui.toggle.checkbox label { - padding-left: 4em; -} - -/* Switch */ - -.ui.toggle.checkbox .box:before, -.ui.toggle.checkbox label:before { - cursor: pointer; - display: block; - position: absolute; - content: ''; - top: -0.25em; - left: 0em; - z-index: 1; - background-color: #FFFFFF; - width: 3em; - height: 1.5em; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) inset; - border-radius: 50rem; -} - -/* Activation Light */ - -.ui.toggle.checkbox .box:after, -.ui.toggle.checkbox label:after { - opacity: 1; - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; - content: ''; - position: absolute; - top: 0.15em; - left: 0.5em; - z-index: 2; - border: none; - width: 0.75em; - height: 0.75em; - background-color: #D95C5C; - border-radius: 50rem; - -webkit-transition: background 0.3s ease 0s, - left 0.3s ease 0s; - transition: background 0.3s ease 0s, - left 0.3s ease 0s; -} - -/* Active */ - -.ui.toggle.checkbox:active .box:before, -.ui.toggle.checkbox:active label:before { - background-color: #F5F5F5; -} - -/* Active */ - -.ui.toggle.checkbox input:checked + .box:after, -.ui.toggle.checkbox input:checked + label:after { - left: 1.75em; - background-color: #89B84C; -} - -/*-------------- - Sizes ----------------*/ - -.ui.checkbox { - font-size: 1em; -} - -.ui.large.checkbox { - font-size: 1.25em; -} - -.ui.huge.checkbox { - font-size: 1.5em; -} -/* - * # Semantic - Dimmer - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Dimmer -*******************************/ - -.ui.dimmable { - position: relative; -} - -.ui.dimmer { - display: none; - position: absolute; - top: 0em !important; - left: 0em !important; - width: 0%; - height: 0%; - text-align: center; - vertical-align: middle; - background-color: rgba(0, 0, 0, 0.85); - opacity: 0; - line-height: 1; - -webkit-animation-fill-mode: both; - -ms-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-duration: 0.5s; - -ms-animation-duration: 0.5s; - animation-duration: 0.5s; - -webkit-transition: background-color 0.5s linear; - transition: background-color 0.5s linear; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - z-index: 1000; -} - -/* Dimmer Content */ - -.ui.dimmer > .content { - width: 100%; - height: 100%; - display: table; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.ui.dimmer > .content > div { - display: table-cell; - vertical-align: middle; - color: #FFFFFF; -} - -/* Loose Coupling */ - -.ui.segment > .ui.dimmer { - border-radius: 5px; -} - -.ui.horizontal.segment > .ui.dimmer, -.ui.vertical.segment > .ui.dimmer { - border-radius: 5px; -} - -/******************************* - States -*******************************/ - -.ui.dimmed.dimmable:not(body) { - overflow: hidden; -} - -.ui.dimmed.dimmable > .ui.dimmer, -.ui.active.dimmer { - display: block; - width: 100%; - height: 100%; - opacity: 1; -} - -.ui.disabled.dimmer { - width: 0em !important; - height: 0em !important; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Page ----------------*/ - -.ui.page.dimmer { - position: fixed; - -webkit-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - transform-style: preserve-3d; - -webkit-perspective: 2000px; - -ms-perspective: 2000px; - perspective: 2000px; - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; -} - -.ui.scrolling.dimmable > .dimmer, -.ui.scrolling.page.dimmer { - position: absolute; -} - -/*-------------- - Aligned ----------------*/ - -.ui.dimmer > .top.aligned.content > * { - vertical-align: top; -} - -.ui.dimmer > .bottom.aligned.content > * { - vertical-align: bottom; -} - -/*-------------- - Inverted ----------------*/ - -.ui.inverted.dimmer { - background-color: #fff; - border: 1px solid #ccc; -} - -.ui.inverted.dimmer > .content > * { - color: rgba(0, 0, 0, 0.8); -} - -/*-------------- - Simple ----------------*/ - -/* Displays without javascript */ - -.ui.simple.dimmer { - display: block; - overflow: hidden; - opacity: 1; - z-index: -100; - background-color: rgba(0, 0, 0, 0); -} - -.ui.dimmed.dimmable > .ui.simple.dimmer { - overflow: visible; - opacity: 1; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.85); - z-index: 1; -} - -.ui.simple.inverted.dimmer { - background-color: rgba(255, 255, 255, 0); -} - -.ui.dimmed.dimmable > .ui.simple.inverted.dimmer { - background-color: rgba(255, 255, 255, 0.85); -} -/* - * # Semantic - Dropdown - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Dropdown -*******************************/ - -.ui.dropdown { - cursor: pointer; - position: relative; - display: inline-block; - line-height: 1; - -webkit-transition: border-radius 0.1s ease, width 0.2s ease; - transition: border-radius 0.1s ease, width 0.2s ease; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - -moz-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); -} - -/******************************* - Content -*******************************/ - -/*-------------- - Menu ----------------*/ - -.ui.dropdown .menu { - cursor: auto; - position: absolute; - display: none; - top: 100%; - margin: 0em; - background-color: #FFFFFF; - min-width: 100%; - white-space: nowrap; - font-size: 0.875em; - text-shadow: none; - -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 0px 0px 0.325em 0.325em; - -webkit-transition: opacity 0.2s ease; - transition: opacity 0.2s ease; - z-index: 11; -} - -/*-------------- - Icon ----------------*/ - -.ui.dropdown > .dropdown.icon { - width: auto; - margin: 0em 0em 0em 1em; -} - -.ui.dropdown > .dropdown.icon:before { - content: "\f0d7"; -} - -.ui.dropdown .menu .item .dropdown.icon { - width: auto; - float: right; - margin: 0em 0em 0em 0.5em; -} - -.ui.dropdown .menu .item .dropdown.icon:before { - content: "\f0da"; -} - -/*-------------- - Text ----------------*/ - -.ui.dropdown > .text { - display: inline-block; - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; -} - -/* Flyout Direction */ - -.ui.dropdown .menu { - left: 0px; -} - -/*-------------- - Sub Menu ----------------*/ - -.ui.dropdown .menu .menu { - top: 0% !important; - left: 100% !important; - margin: 0em !important; - border-radius: 0 0.325em 0.325em 0em !important; -} - -.ui.dropdown .menu .menu:after { - display: none; -} - -.ui.dropdown .menu .item { - cursor: pointer; - border: none; - border-top: 1px solid rgba(0, 0, 0, 0.05); - height: auto; - font-size: 0.875em; - display: block; - color: rgba(0, 0, 0, 0.75); - padding: 0.85em 1em !important; - font-size: 0.875rem; - text-transform: none; - font-weight: normal; - text-align: left; - -webkit-touch-callout: none; -} - -.ui.dropdown .menu .item:before { - display: none; -} - -.ui.dropdown .menu .item .icon { - margin-right: 0.75em; -} - -.ui.dropdown .menu .item:first-child { - border-top: none; -} - -/******************************* - Coupling -*******************************/ - -/* Opposite on last menu on right */ - -.ui.menu .right.menu .dropdown:last-child .menu, -.ui.buttons > .ui.dropdown:last-child .menu { - left: auto; - right: 0px; -} - -.ui.vertical.menu .dropdown.item > .dropdown.icon:before { - content: "\f0da"; -} - -.ui.dropdown.icon.button > .dropdown.icon { - margin: 0em; -} - -/******************************* - States -*******************************/ - -/* Dropdown Visible */ - -.ui.visible.dropdown > .menu { - display: block; -} - -/* Menu Item Hover */ - -.ui.dropdown .menu .item:hover { - background-color: rgba(0, 0, 0, 0.02); - z-index: 12; -} - -/* Menu Item Active */ - -.ui.dropdown .menu .active.item { - background-color: rgba(0, 0, 0, 0.06) !important; - border-left: none; - border-color: transparent !important; - -webkit-box-shadow: none; - -moz-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; - z-index: 12; -} - -/* Default Text */ - -.ui.dropdown > .default.text, -.ui.default.dropdown > .text { - color: rgba(0, 0, 0, 0.5); -} - -.ui.dropdown:hover > .default.text, -.ui.default.dropdown:hover > .text { - color: rgba(0, 0, 0, 0.8); -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Simple ----------------*/ - -/* Displays without javascript */ - -.ui.simple.dropdown .menu:before, -.ui.simple.dropdown .menu:after { - display: none; -} - -.ui.simple.dropdown .menu { - display: block; - overflow: hidden; - top: -9999px !important; - position: absolute; - opacity: 0; - width: 0; - height: 0; - -webkit-transition: opacity 0.2s ease-out; - transition: opacity 0.2s ease-out; -} - -.ui.simple.active.dropdown, -.ui.simple.dropdown:hover { - border-bottom-left-radius: 0em !important; - border-bottom-right-radius: 0em !important; -} - -.ui.simple.active.dropdown > .menu, -.ui.simple.dropdown:hover > .menu { - overflow: visible; - width: auto; - height: auto; - top: 100% !important; - opacity: 1; -} - -.ui.simple.dropdown > .menu .item:active > .menu, -.ui.simple.dropdown:hover > .menu .item:hover > .menu { - overflow: visible; - width: auto; - height: auto; - top: 0% !important; - left: 100% !important; - opacity: 1; -} - -.ui.simple.disabled.dropdown:hover .menu { - display: none; - height: 0px; - width: 0px; - overflow: hidden; -} - -/*-------------- - Selection ----------------*/ - -/* Displays like a select box */ - -.ui.selection.dropdown { - cursor: pointer; - display: inline-block; - word-wrap: break-word; - white-space: normal; - background-color: #FFFFFF; - padding: 0.5em 1em; - line-height: 1.33; - color: rgba(0, 0, 0, 0.8); - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) !important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1) !important; - border-radius: 0.3125em !important; - font-size:14px; - font-size:0.875rem; -} - -.ui.selection.dropdown select { - display: none; -} - -.ui.selection.dropdown > .dropdown.icon { - opacity: 0.7; - margin: 0.2em 0em 0.2em 1.25em; - -webkit-transition: opacity 0.2s ease-out; - transition: opacity 0.2s ease-out; -} - -.ui.selection.dropdown, -.ui.selection.dropdown .menu { - top: 100%; - -webkit-transition: -webkit-box-shadow 0.2s ease-out; - transition: box-shadow 0.2s ease-out; -} - -.ui.selection.dropdown .menu { - max-height: 312px; - overflow-x: hidden; - overflow-y: auto; - -webkit-box-shadow: 0px 1px 0px 1px #E0E0E0; - box-shadow: 0px 1px 0px 1px #E0E0E0; - border-radius: 0px 0px 0.325em 0.325em; -} - -.ui.selection.dropdown .menu:after, -.ui.selection.dropdown .menu:before { - display: none; -} - -.ui.selection.dropdown .menu img { - height: 2.5em; - display: inline-block; - vertical-align: middle; - margin-right: 0.5em; -} - -/* Hover */ - -.ui.selection.dropdown:hover { - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2) !important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2) !important; -} - -.ui.selection.dropdown:hover .menu { - -webkit-box-shadow: 0px 1px 0px 1px #D3D3D3; - box-shadow: 0px 1px 0px 1px #D3D3D3; -} - -.ui.selection.dropdown:hover > .dropdown.icon { - opacity: 1; -} - -/* Visible */ - -.ui.visible.selection.dropdown { - border-bottom-left-radius: 0em !important; - border-bottom-right-radius: 0em !important; -} - -/* Active */ - -.ui.active.selection.dropdown { - border-radius: 0.3125em 0.3125em 0em 0em !important; -} - -.ui.active.selection.dropdown > .dropdown.icon { - opacity: 1; -} - -/*-------------- - Fluid ----------------*/ - -.ui.fluid.dropdown { - display: block; -} - -.ui.fluid.dropdown > .dropdown.icon { - float: right; -} - -/*-------------- - Inline ----------------*/ - -.ui.inline.dropdown { - cursor: pointer; - display: inline-block; - color: inherit; -} - -.ui.inline.dropdown .dropdown.icon { - margin: 0em 0.5em 0em 0.25em; -} - -.ui.inline.dropdown .text { - font-weight: bold; -} - -.ui.inline.dropdown .menu { - cursor: auto; - margin-top: 0.25em; - border-radius: 0.325em; -} - -/*-------------- - Floating ----------------*/ - -.ui.floating.dropdown .menu { - left: 0; - right: auto; - margin-top: 0.5em !important; - border-radius: 0.325em; -} - -/*-------------- - Pointing ----------------*/ - -.ui.pointing.dropdown .menu { - top: 100%; - margin-top: 0.75em; - border-radius: 0.325em; -} - -.ui.pointing.dropdown .menu:after { - display: block; - position: absolute; - pointer-events: none; - content: " "; - visibility: visible; - width: 0.5em; - height: 0.5em; - -webkit-box-shadow: -1px -1px 0px 1px rgba(0, 0, 0, 0.05); - box-shadow: -1px -1px 0px 1px rgba(0, 0, 0, 0.05); - background-image: none; - background-color: #FFFFFF; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - z-index: 2; -} - -.ui.pointing.dropdown .menu .active.item:first-child { - background: transparent -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.03)); - background: transparent-webkit-gradient(linear, top left, bottom left, from(transparent), to(rgba(0, 0, 0, 0.03))); - background: transparent linear-gradient(transparent, rgba(0, 0, 0, 0.03)); -} - -/* Directions */ - -.ui.pointing.dropdown .menu:after { - top: -0.25em; - left: 50%; - margin: 0em 0em 0em -0.25em; -} - -.ui.top.left.pointing.dropdown .menu { - top: 100%; - bottom: auto; - left: 0%; - right: auto; - margin: 0.75em 0em 0em; -} - -.ui.top.left.pointing.dropdown .menu:after { - top: -0.25em; - left: 1.25em; - right: auto; - margin: 0em; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); -} - -.ui.top.right.pointing.dropdown .menu { - top: 100%; - bottom: auto; - right: 0%; - left: auto; - margin: 0.75em 0em 0em; -} - -.ui.top.right.pointing.dropdown .menu:after { - top: -0.25em; - left: auto; - right: 1.25em; - margin: 0em; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); -} - -.ui.left.pointing.dropdown .menu { - top: 0%; - left: 100%; - right: auto; - margin: 0em 0em 0em 0.75em; -} - -.ui.left.pointing.dropdown .menu:after { - top: 1em; - left: -0.25em; - margin: 0em 0em 0em 0em; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - transform: rotate(-45deg); -} - -.ui.right.pointing.dropdown .menu { - top: 0%; - left: auto; - right: 100%; - margin: 0em 0.75em 0em 0em; -} - -.ui.right.pointing.dropdown .menu:after { - top: 1em; - left: auto; - right: -0.25em; - margin: 0em 0em 0em 0em; - -webkit-transform: rotate(135deg); - -ms-transform: rotate(135deg); - transform: rotate(135deg); -} -/* - * # Semantic - Modal - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Modal -*******************************/ - -.ui.modal { - display: none; - position: fixed; - z-index: 1001; - top: 50%; - left: 50%; - text-align: left; - width: 90%; - margin-left: -45%; - background-color: #FFFFFF; - border: 1px solid #DDDDDD; - border-radius: 5px; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -/******************************* - Content -*******************************/ - -/*-------------- - Close ----------------*/ - -.ui.modal > .close { - cursor: pointer; - position: absolute; - opacity: 0.8; - font-size: 1.25em; - top: -1.75em; - right: -1.75em; - color: #FFFFFF; -} - -.ui.modal > .close:hover { - opacity: 1; -} - -/*-------------- - Header ----------------*/ - -.ui.modal > .header { - margin: 0em; - padding: 1.5rem 2rem; - font-size: 1.6em; - font-weight: bold; - border-radius: 0.325em 0.325em 0px 0px; -} - -/*-------------- - Content ----------------*/ - -.ui.modal > .content { - display: table; - width: 100%; - position: relative; - padding: 2em; - background-color: #F4F4F4; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.modal > .content > .left:not(.ui) { - display: table-cell; - padding-right: 1.5%; - min-width: 25%; -} - -.ui.modal > .content > .right:not(.ui) { - display: table-cell; - padding-left: 1.5%; - vertical-align: top; -} - -.ui.modal > .content > .left:not(.ui) > i.icon { - font-size: 8em; - margin: 0em; -} - -.ui.modal > .content p { - line-height: 1.6; -} - -/*-------------- - Actions ----------------*/ - -.ui.modal .actions { - padding: 1rem 2rem; - text-align: right; -} - -.ui.modal .actions > .button { - margin-left: 0.75em; -} - -/*------------------- - Sizing ---------------------*/ - -/* Mobile Only */ - -@media only screen and (max-width: 768px) { - .ui.modal .content > .left:not(.ui) { - display: block; - padding: 0em 0em 1em; - } - - .ui.modal .content > .right:not(.ui) { - display: block; - padding: 1em 0em 0em; - -webkit-box-shadow: none; - box-shadow: none; - } - - .ui.modal .content .image { - width: auto !important; - max-width: 100%; - } - - .ui.modal .actions { - padding-bottom: 0em; - } - - .ui.modal .actions > .buttons, - .ui.modal .actions > .button { - margin-bottom: 1em; - } -} - -/* Tablet and Mobile */ - -@media only screen and (max-width: 998px) { - .ui.modal { - width: 92%; - margin-left: -46%; - } - - .ui.modal > .close { - color: rgba(0, 0, 0, 0.8); - top: 1.5rem; - right: 1rem; - } -} - -/* Computer / Responsive */ - -@media only screen and (min-width: 998px) { - .ui.modal { - width: 74%; - margin-left: -37%; - } -} - -@media only screen and (min-width: 1500px) { - .ui.modal { - width: 56%; - margin-left: -28%; - } -} - -@media only screen and (min-width: 1750px) { - .ui.modal { - width: 42%; - margin-left: -21%; - } -} - -@media only screen and (min-width: 2000px) { - .ui.modal { - width: 36%; - margin-left: -18%; - } -} - -/******************************* - Types -*******************************/ - -.ui.basic.modal { - background-color: transparent; - border: none; - color: #FFFFFF; -} - -.ui.basic.modal > .close { - top: 1.5rem; - right: 1rem; -} - -.ui.basic.modal .content { - background-color: transparent; -} - -/******************************* - Variations -*******************************/ - -/* A modal that cannot fit on the page */ - -.ui.modal.scrolling { - position: absolute; - margin-top: 10px; -} - -/******************************* - States -*******************************/ - -.ui.active.modal { - display: block; -} - -/*-------------- - Size ----------------*/ - -/* Small */ - -.ui.small.modal > .header { - font-size: 1.3em; -} - -@media only screen and (min-width: 998px) { - .ui.small.modal { - width: 58%; - margin-left: -29%; - } -} - -@media only screen and (min-width: 1500px) { - .ui.small.modal { - width: 40%; - margin-left: -20%; - } -} - -@media only screen and (min-width: 1750px) { - .ui.small.modal { - width: 26%; - margin-left: -13%; - } -} - -@media only screen and (min-width: 2000px) { - .ui.small.modal { - width: 20%; - margin-left: -10%; - } -} - -/* Large */ - -@media only screen and (min-width: 998px) { - .ui.large.modal { - width: 74%; - margin-left: -37%; - } -} - -@media only screen and (min-width: 1500px) { - .ui.large.modal { - width: 64%; - margin-left: -32%; - } -} - -@media only screen and (min-width: 1750px) { - .ui.large.modal { - width: 54%; - margin-left: -27%; - } -} - -@media only screen and (min-width: 2000px) { - .ui.large.modal { - width: 44%; - margin-left: -22%; - } -} -/* - * # Semantic - Nag - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Nag -*******************************/ - -.ui.nag { - display: none; - opacity: 0.95; - position: relative; - top: 0px; - left: 0%; - z-index: 101; - min-height: 0; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - margin: 0em; - line-height: 3em; - padding: 0em 1em; - background-color: #555555; - -webkit-box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); - box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); - font-size: 1em; - text-align: center; - color: rgba(255, 255, 255, 0.8); - border-radius: 0px 0px 5px 5px; - -webkit-transition: 0.2s background; - transition: 0.2s background; -} - -a.ui.nag { - cursor: pointer; -} - -.ui.nag > .title { - display: inline-block; - margin: 0em 0.5em; - color: #FFFFFF; -} - -.ui.nag > .close.icon { - cursor: pointer; - opacity: 0.4; - position: absolute; - top: 50%; - right: 1em; - margin-top: -0.5em; - color: #FFFFFF; - -webkit-transition: 0.1s opacity; - transition: 0.1s opacity; -} - -/******************************* - States -*******************************/ - -/* Hover */ - -.ui.nag:hover { - opacity: 1; -} - -.ui.nag .close:hover { - opacity: 1; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Static ----------------*/ - -.ui.overlay.nag { - position: absolute; - display: block; -} - -/*-------------- - Fixed ----------------*/ - -.ui.fixed.nag { - position: fixed; -} - -/*-------------- - Bottom ----------------*/ - -.ui.botton.nag { - border-radius: 5px 5px 0px 0px; -} - -.ui.fixed.bottom.nags, -.ui.fixed.bottom.nag { - top: auto; - bottom: 0px; -} - -/*-------------- - White ----------------*/ - -.ui.white.nags .nag, -.ui.white.nag { - background-color: #F1F1F1; - text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8); - color: #ACACAC; -} - -.ui.white.nags .nag .close, -.ui.white.nags .nag .title, -.ui.white.nag .close, -.ui.white.nag .title { - color: #333333; -} - -/******************************* - Groups -*******************************/ - -.ui.nags .nag { - border-radius: 0px; -} -/* - * # Semantic - Popup - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Popup -*******************************/ - -.ui.popup { - display: none; - position: absolute; - top: 0px; - right: 0px; - z-index: 900; - border: 1px solid rgba(0, 0, 0, 0.1); - max-width: 250px; - background-color: #FFFFFF; - padding: 0.8em 1.2em; - font-size: 0.875rem; - font-weight: normal; - font-style: normal; - color: rgba(0, 0, 0, 0.7); - border-radius: 0.2em; - -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1); -} - -.ui.popup .header { - padding: 0em 0em 0.5em; - font-size: 1.125em; - line-height: 1.2; - font-weight: bold; -} - -.ui.popup:before { - position: absolute; - content: ""; - width: 0.75em; - height: 0.75rem; - background-image: none; - background-color: #FFFFFF; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - z-index: 2; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); -} - -.ui.popup .ui.button { - width: 100%; -} - -/******************************* - Types -*******************************/ - -/*-------------- - Spacing ----------------*/ - -.ui.popup { - margin: 0em; -} - -.ui.popup.bottom { - margin: 0.75em 0em 0em; -} - -.ui.popup.top { - margin: 0em 0em 0.75em; -} - -.ui.popup.left.center { - margin: 0em 0.75em 0em 0em; -} - -.ui.popup.right.center { - margin: 0em 0em 0em 0.75em; -} - -.ui.popup.center { - margin-left: -1.25em; -} - -/*-------------- - Pointer ----------------*/ - -/*--- Below ---*/ - -.ui.bottom.center.popup:before { - margin-left: -0.4em; - top: -0.4em; - left: 50%; - right: auto; - bottom: auto; - -webkit-box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2); - box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2); -} - -.ui.bottom.left.popup { - margin-right: -2em; -} - -.ui.bottom.left.popup:before { - top: -0.4em; - right: 1em; - bottom: auto; - left: auto; - margin-left: 0em; - -webkit-box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2); - box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2); -} - -.ui.bottom.right.popup { - margin-left: -2em; -} - -.ui.bottom.right.popup:before { - top: -0.4em; - left: 1em; - right: auto; - bottom: auto; - margin-left: 0em; - -webkit-box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2); - box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.2); -} - -/*--- Above ---*/ - -.ui.top.center.popup:before { - top: auto; - right: auto; - bottom: -0.4em; - left: 50%; - margin-left: -0.4em; -} - -.ui.top.left.popup { - margin-right: -2em; -} - -.ui.top.left.popup:before { - bottom: -0.4em; - right: 1em; - top: auto; - left: auto; - margin-left: 0em; -} - -.ui.top.right.popup { - margin-left: -2em; -} - -.ui.top.right.popup:before { - bottom: -0.4em; - left: 1em; - top: auto; - right: auto; - margin-left: 0em; -} - -/*--- Left Center ---*/ - -.ui.left.center.popup:before { - top: 50%; - right: -0.35em; - bottom: auto; - left: auto; - margin-top: -0.4em; - -webkit-box-shadow: 1px -1px 1px rgba(0, 0, 0, 0.2); - box-shadow: 1px -1px 1px rgba(0, 0, 0, 0.2); -} - -/*--- Right Center ---*/ - -.ui.right.center.popup:before { - top: 50%; - left: -0.35em; - bottom: auto; - right: auto; - margin-top: -0.4em; - -webkit-box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.2); - box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.2); -} - -/******************************* - States -*******************************/ - -.ui.loading.popup { - display: block; - visibility: hidden; -} - -.ui.visible.popup { - display: block; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Size ----------------*/ - -.ui.small.popup { - font-size: 0.75rem; -} - -.ui.large.popup { - font-size: 1rem; -} - -/*-------------- - Colors ----------------*/ - -/* Inverted colors */ - -.ui.inverted.popup { - background-color: #333333; - border: none; - color: #FFFFFF; - -webkit-box-shadow: none; - box-shadow: none; -} - -.ui.inverted.popup .header { - background-color: rgba(0, 0, 0, 0.2); - color: #FFFFFF; -} - -.ui.inverted.popup:before { - background-color: #333333; - -webkit-box-shadow: none; - box-shadow: none; -} -/* - * # Semantic - Rating - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Rating -*******************************/ - -.ui.rating { - display: inline-block; - font-size: 0em; - vertical-align: baseline; - margin: 0em 0.5rem 0em 0em; -} - -.ui.rating:last-child { - margin-right: 0em; -} - -.ui.rating:before { - display: block; - content: ''; - visibility: hidden; - clear: both; - height: 0; -} - -/* Icon */ - -.ui.rating .icon { - cursor: default; - margin: 0em; - width: 1em; - height: auto; - padding: 0em; - color: rgba(0, 0, 0, 0.15); - font-weight: normal; - font-style: normal; -} - -.ui.rating .icon:before { - content: "\2605"; - -webkit-transition: color 0.3s ease, - opacity 0.3s ease; - transition: color 0.3s ease, - opacity 0.3s ease; -} - -/******************************* - Types -*******************************/ - -/*------------------- - Star ---------------------*/ - -.ui.star.rating .icon { - width: 1.2em; -} - -/* Star */ - -.ui.star.rating .icon:before { - content: '\f006'; - font-family: 'Icons'; -} - -/* Active Star */ - -.ui.star.rating .active.icon:before { - content: '\f005'; - font-family: 'Icons'; -} - -/*------------------- - Heart ---------------------*/ - -.ui.heart.rating .icon { - width: 1.2em; -} - -.ui.heart.rating .icon:before { - content: '\f08a'; - font-family: 'Icons'; -} - -/* Active */ - -.ui.heart.rating .active.icon:before { - content: '\f004'; - font-family: 'Icons'; -} - -.ui.heart.rating .active.icon { - color: #EF404A !important; -} - -/* Hovered */ - -.ui.heart.rating .hover.icon, -.ui.heart.rating .active.hover.icon { - color: #FF2733 !important; -} - -/******************************* - States -*******************************/ - -/*------------------- - Active ---------------------*/ - -/* active rating */ - -.ui.active.rating .icon { - cursor: pointer; -} - -/* active icons */ - -.ui.rating .active.icon { - color: #FFCB08 !important; -} - -/*------------------- - Hover ---------------------*/ - -/* rating */ - -.ui.rating.hover .active.icon { - opacity: 0.5; -} - -/* icon */ - -.ui.rating .icon.hover, -.ui.rating .icon.hover.active { - opacity: 1; - color: #FFB70A !important; -} - -/******************************* - Variations -*******************************/ - -.ui.small.rating .icon { - font-size: 0.75rem; -} - -.ui.rating .icon { - font-size: 1rem; -} - -.ui.large.rating .icon { - font-size: 1.5rem; - vertical-align: middle; -} - -.ui.huge.rating .icon { - font-size: 2rem; - vertical-align: middle; -} -/* - * # Semantic - Search - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Search -*******************************/ - -.ui.search { - position: relative; - text-shadow: none; - font-style: normal; - font-weight: normal; -} - -.ui.search input { - border-radius: 500rem; -} - -/*-------------- - Button ----------------*/ - -.ui.search > .button { - position: relative; - z-index: 2; - float: right; - margin: 0px 0px 0px -15px; - padding: 6px 15px 7px; - border-radius: 0px 15px 15px 0px; - -webkit-box-shadow: none; - box-shadow: none; -} - -/*-------------- - Results ----------------*/ - -.ui.search .results { - display: none; - position: absolute; - z-index: 999; - top: 100%; - left: 0px; - overflow: hidden; - background-color: #FFFFFF; - margin-top: 0.5em; - width: 380px; - font-size: 0.875em; - line-height: 1.2; - color: #555555; - border-radius: 3px; - -webkit-box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.1), 0px -2px 0px 0px rgba(0, 0, 0, 0.1) inset; - box-shadow: 0px 0px 1px 1px rgba(0, 0, 0, 0.1), 0px -2px 0px 0px rgba(0, 0, 0, 0.1) inset; -} - -.ui.search .result { - cursor: pointer; - overflow: hidden; - padding: 0.5em 1em; -} - -.ui.search .result:first-child { - border-top: none; -} - -.ui.search .result .image { - background: #F0F0F0; - margin-right: 10px; - float: left; - overflow: hidden; - border-radius: 3px; - width: 38px; - height: 38px; -} - -.ui.search .result .image img { - display: block; - width: 38px; - height: 38px; -} - -.ui.search .result .image ~ .info { - float: none; - margin-left: 50px; -} - -.ui.search .result .info { - float: left; -} - -.ui.search .result .title { - font-weight: bold; - color: rgba(0, 0, 0, 0.8); -} - -.ui.search .result .description { - color: rgba(0, 0, 0, 0.6); -} - -.ui.search .result .price { - float: right; - color: #5BBD72; - font-weight: bold; -} - -/*-------------- - Message ----------------*/ - -.ui.search .message { - padding: 1em; -} - -.ui.search .message .text .title { - margin: 0em 0em 0.5rem; - font-size: 1.25rem; - font-weight: bold; - color: rgba(0, 0, 0, 0.8); -} - -.ui.search .message .text .description { - margin: 0em; - font-size: 1rem; - color: rgba(0, 0, 0, 0.5); -} - -/*-------------- - Categories ----------------*/ - -.ui.search .results .category { - background-color: #FAFAFA; - border-top: 1px solid rgba(0, 0, 0, 0.1); - -webkit-transition: background 0.2s ease-in; - transition: background 0.2s ease-in; -} - -.ui.search .results .category:first-child { - border-top: none; -} - -.ui.search .results .category > .name { - float: left; - padding: 12px 0px 0px 8px; - font-weight: bold; - color: #777777; - text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8); -} - -.ui.search .results .category .result { - background-color: #FFFFFF; - margin-left: 80px; - border-left: 1px solid rgba(0, 0, 0, 0.1); -} - -/* View All Results */ - -.ui.search .all { - display: block; - border-top: 1px solid rgba(0, 0, 0, 0.1); - background-color: #FAFAFA; - height: 2em; - line-height: 2em; - color: rgba(0, 0, 0, 0.6); - font-weight: bold; - text-align: center; -} - -/******************************* - States -*******************************/ - -/*-------------- - Hover ----------------*/ - -.ui.search .result:hover, -.ui.search .category .result:hover { - background-color: #F8F8F8; -} - -.ui.search .all:hover { - background-color: #F0F0F0; -} - -/*-------------- - Loading ----------------*/ - -.ui.search.loading .input .icon { - background: url(../images/loader-mini.gif) no-repeat 50% 50%; -} - -.ui.search.loading .input .icon:before, -.ui.search.loading .input .icon:after { - display: none; -} - -/*-------------- - Active ----------------*/ - -.ui.search .results .category.active { - background-color: #F1F1F1; -} - -.ui.search .results .category.active > .name { - color: #333333; -} - -.ui.search .result.active, -.ui.search .category .result.active { - background-color: #FBFBFB; -} - -.ui.search .result.active .title { - color: #000000; -} - -.ui.search .result.active .description { - color: #555555; -} - -/******************************* - Variations -*******************************/ - -/* Large */ - -.ui.search .large.result .image, -.ui.search .large.result .image img { - width: 50px; - height: 50px; -} - -.ui.search .large.results .indented.info { - margin-left: 65px; -} - -.ui.search .large.results .info .title { - font-size: 16px; -} - -.ui.search .large.results .info .description { - font-size: 11px; -} -/* - * # Semantic - Shape - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Shape -*******************************/ - -.ui.shape { - display: inline-block; - position: relative; - -webkit-perspective: 2000px; - -ms-perspective: 2000px; - perspective: 2000px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.shape .sides { - -webkit-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - transform-style: preserve-3d; -} - -.ui.shape .side { - opacity: 1; - width: 100%; - margin: 0em !important; - -webkit-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ui.shape .side { - display: none; -} - -/******************************* - Types -*******************************/ - -.ui.cube.shape .side { - min-width: 15em; - height: 15em; - padding: 2em; - background-color: #E6E6E6; - color: rgba(0, 0, 0, 0.6); - -webkit-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); - box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); -} - -.ui.cube.shape .side > .content { - width: 100%; - height: 100%; - display: table; - text-align: center; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.ui.cube.shape .side > .content > div { - display: table-cell; - vertical-align: middle; - font-size: 2em; -} - -/******************************* - Variations -*******************************/ - -.ui.text.shape.animating .sides { - position: static; -} - -.ui.text.shape .side { - white-space: nowrap; -} - -.ui.text.shape .side > * { - white-space: normal; -} - -/******************************* - States -*******************************/ - -/*-------------- - Loading ----------------*/ - -.ui.loading.shape { - position: absolute; - top: -9999px; - left: -9999px; -} - -/*-------------- - Animating ----------------*/ - -.ui.shape .animating.side { - position: absolute; - top: 0px; - left: 0px; - z-index: 100; -} - -.ui.shape .hidden.side { - opacity: 0.4; -} - -/*-------------- - CSS ----------------*/ - -.ui.shape.animating { - -webkit-transition: all 0.6s ease-in-out; - transition: all 0.6s ease-in-out; -} - -.ui.shape.animating .sides { - position: absolute; -} - -.ui.shape.animating .sides { - -webkit-transition: all 0.6s ease-in-out; - transition: all 0.6s ease-in-out; -} - -.ui.shape.animating .side { - -webkit-transition: opacity 0.6s ease-in-out; - transition: opacity 0.6s ease-in-out; -} - -/*-------------- - Active ----------------*/ - -.ui.shape .active.side { - display: block; -} -/* - * # Semantic - Sidebar - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Sidebar -*******************************/ - -body { - -webkit-transition: margin 0.3s ease, -webkit-transform 0.3s ease; - transition: margin 0.3s ease, - transform 0.3s ease; -} - -.ui.sidebar { - position: fixed; - margin: 0 !important; - height: 100% !important; - border-radius: 0px !important; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - -ms-overflow-y: auto; - overflow-y: auto; - top: 0px; - left: 0px; - z-index: 999; - -webkit-transition: margin-left 0.3s ease, margin-top 0.3s ease; - transition: margin-left 0.3s ease, margin-top 0.3s ease; -} - -/******************************* - Types -*******************************/ - -/*------------------- - Direction ---------------------*/ - -.ui.right.sidebar { - left: 100%; - margin: 0px !important; -} - -.ui.top.sidebar { - width: 100% !important; -} - -.ui.bottom.sidebar { - width: 100% !important; - top: 100%; - margin: 0px !important; -} - -/******************************* - States -*******************************/ - -.ui.active.sidebar { - margin-left: 0px !important; -} - -.ui.active.top.sidebar, -.ui.active.bottom.sidebar { - margin-top: 0px !important; -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Formatted ---------------------*/ - -.ui.styled.sidebar { - padding: 1em 1.5em; - background-color: #FFFFFF; - -webkit-box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.1); - box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.1); -} - -.ui.styled.very.thin.sidebar { - padding: 0.5em; -} - -.ui.styled.thin.sidebar { - padding: 1em; -} - -/*------------------- - Floating ---------------------*/ - -.ui.floating.sidebar { - -webkit-box-shadow: 2px 0px 2px rgba(0, 0, 0, 0.2); - box-shadow: 2px 0px 2px rgba(0, 0, 0, 0.2); -} - -.ui.right.floating.sidebar { - -webkit-box-shadow: -2px 0px 2px rgba(0, 0, 0, 0.2); - box-shadow: -2px 0px 2px rgba(0, 0, 0, 0.2); -} - -.ui.top.floating.sidebar { - -webkit-box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.2); - box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.2); -} - -.ui.bottom.floating.sidebar { - -webkit-box-shadow: 0px -4px 4px rgba(0, 0, 0, 0.2); - box-shadow: 0px -4px 4px rgba(0, 0, 0, 0.2); -} - -/*------------------- - Width ---------------------*/ - -/* Very Thin */ - -.ui.very.thin.sidebar { - width: 60px !important; - margin-left: -60px !important; -} - -.ui.active.very.thin.sidebar { - margin-left: 0px !important; -} - -.ui.active.right.very.thin.sidebar { - margin-left: -60px !important; -} - -/* Thin */ - -.ui.thin.sidebar { - width: 200px !important; - margin-left: -200px !important; -} - -.ui.active.thin.sidebar { - margin-left: 0px !important; -} - -.ui.active.right.thin.sidebar { - margin-left: -200px !important; -} - -/* Standard */ - -.ui.sidebar { - width: 275px !important; - margin-left: -275px !important; -} - -.ui.active.sidebar { - margin-left: 0px !important; -} - -.ui.active.right.sidebar { - margin-left: -275px !important; -} - -/* Wide */ - -.ui.wide.sidebar { - width: 350px !important; - margin-left: -350px !important; -} - -.ui.active.wide.sidebar { - margin-left: 0px !important; -} - -.ui.active.right.wide.sidebar { - margin-left: -350px !important; -} - -/* Very Wide */ - -.ui.very.wide.sidebar { - width: 475px !important; - margin-left: -475px !important; -} - -.ui.active.very.wide.sidebar { - margin-left: 0px !important; -} - -.ui.active.right.very.wide.sidebar { - margin-left: -475px !important; -} - -/*------------------- - Height ---------------------*/ - -/* Standard */ - -.ui.top.sidebar { - margin: -40px 0px 0px 0px !important; -} - -.ui.top.sidebar, -.ui.bottom.sidebar { - height: 40px !important; -} - -.ui.active.bottom.sidebar { - margin-top: -40px !important; -} -/* - * # Semantic - Tab - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - UI Tabs -*******************************/ - -.ui.tab { - display: none; -} - -/******************************* - States -*******************************/ - -/*-------------------- - Active ----------------------*/ - -.ui.tab.active, -.ui.tab.open { - display: block; -} - -/*-------------------- - Loading ----------------------*/ - -.ui.tab.loading { - position: relative; - overflow: hidden; - display: block; - min-height: 250px; - text-indent: -10000px; -} - -.ui.tab.loading * { - position: relative !important; - left: -10000px !important; -} - -.ui.tab.loading:after { - position: absolute; - top: 50px; - left: 50%; - content: 'Loading...'; - margin-left: -32px; - text-indent: 5px; - color: rgba(0, 0, 0, 0.4); - width: 100%; - height: 100%; - padding-top: 75px; - background: url(../images/loader-large.gif) no-repeat 0px 0px; - visibility: visible; -} -/******************************* - Semantic - Transition - Author: Jack Lukic - - CSS animation definitions for - transition module - -*******************************/ - -/* - Some transitions adapted from Animate CSS - https://github.com/daneden/animate.css -*/ - -.ui.transition { - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease; - animation-timing-function: ease; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -/******************************* - States -*******************************/ - -.ui.animating.transition { - -webkit-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} - -/* Loading */ - -.ui.loading.transition { - position: absolute; - top: -999999px; - left: -99999px; -} - -/* Hidden */ - -.ui.hidden.transition { - display: none; -} - -/* Visible */ - -.ui.visible.transition { - display: block; - visibility: visible; -} - -/* Disabled */ - -.ui.disabled.transition { - -webkit-animation-play-state: paused; - animation-play-state: paused; -} - -/******************************* - Variations -*******************************/ - -.ui.looping.transition { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -/******************************* - Types -*******************************/ - -/*-------------- - Emphasis ----------------*/ - -.ui.flash.transition { - -webkit-animation-name: flash; - animation-name: flash; -} - -.ui.shake.transition { - -webkit-animation-name: shake; - animation-name: shake; -} - -.ui.bounce.transition { - -webkit-animation-name: bounce; - animation-name: bounce; -} - -.ui.tada.transition { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -.ui.pulse.transition { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -/*-------------- - Flips ----------------*/ - -.ui.flip.transition.in, -.ui.flip.transition.out { - -webkit-perspective: 2000px; - -ms-perspective: 2000px; - perspective: 2000px; -} - -.ui.horizontal.flip.transition.in, -.ui.horizontal.flip.transition.out { - -webkit-animation-name: horizontalFlip; - animation-name: horizontalFlip; -} - -.ui.horizontal.flip.transition.out { - -webkit-animation-name: horizontalFlipOut; - animation-name: horizontalFlipOut; -} - -.ui.vertical.flip.transition.in, -.ui.vertical.flip.transition.out { - -webkit-animation-name: verticalFlip; - animation-name: verticalFlip; -} - -.ui.vertical.flip.transition.out { - -webkit-animation-name: verticalFlipOut; - animation-name: verticalFlipOut; -} - -/*-------------- - Fades ----------------*/ - -.ui.fade.transition.in { - -webkit-animation-name: fade; - animation-name: fade; -} - -.ui.fade.transition.out { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -.ui.fade.up.transition.in { - -webkit-animation-name: fadeUp; - animation-name: fadeUp; -} - -.ui.fade.up.transition.out { - -webkit-animation-name: fadeUpOut; - animation-name: fadeUpOut; -} - -.ui.fade.down.transition.in { - -webkit-animation-name: fadeDown; - animation-name: fadeDown; -} - -.ui.fade.down.transition.out { - -webkit-animation-name: fadeDownOut; - animation-name: fadeDownOut; -} - -/*-------------- - Scale ----------------*/ - -.ui.scale.transition.in { - -webkit-animation-name: scale; - animation-name: scale; -} - -.ui.scale.transition.out { - -webkit-animation-name: scaleOut; - animation-name: scaleOut; -} - -/*-------------- - Slide ----------------*/ - -.ui.slide.down.transition.in { - -webkit-animation-name: slide; - animation-name: slide; - -webkit-transform-origin: 50% 0%; - -ms-transform-origin: 50% 0%; - transform-origin: 50% 0%; - -ms-transform-origin: 50% 0%; - -webkit-transform-origin: 50% 0%; -} - -.ui.slide.down.transition.out { - -webkit-animation-name: slideOut; - animation-name: slideOut; - -webkit-transform-origin: 50% 0%; - -ms-transform-origin: 50% 0%; - transform-origin: 50% 0%; - -ms-transform-origin: 50% 0%; - -webkit-transform-origin: 50% 0%; -} - -.ui.slide.up.transition.in { - -webkit-animation-name: slide; - animation-name: slide; - -webkit-transform-origin: 50% 100%; - -ms-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -ms-transform-origin: 50% 100%; - -webkit-transform-origin: 50% 100%; -} - -.ui.slide.up.transition.out { - -webkit-animation-name: slideOut; - animation-name: slideOut; - -webkit-transform-origin: 50% 100%; - -ms-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -ms-transform-origin: 50% 100%; - -webkit-transform-origin: 50% 100%; -} - -@-webkit-keyframes slide { - 0% { - opacity: 0; - -webkit-transform: scaleY(0); - transform: scaleY(0); - } - - 100% { - opacity: 1; - -webkit-transform: scaleY(1); - transform: scaleY(1); - } -} - -@keyframes slide { - 0% { - opacity: 0; - -webkit-transform: scaleY(0); - -ms-transform: scaleY(0); - transform: scaleY(0); - } - - 100% { - opacity: 1; - -webkit-transform: scaleY(1); - -ms-transform: scaleY(1); - transform: scaleY(1); - } -} - -@-webkit-keyframes slideOut { - 0% { - opacity: 1; - -webkit-transform: scaleY(1); - transform: scaleY(1); - } - - 100% { - opacity: 0; - -webkit-transform: scaleY(0); - transform: scaleY(0); - } -} - -@keyframes slideOut { - 0% { - opacity: 1; - -webkit-transform: scaleY(1); - -ms-transform: scaleY(1); - transform: scaleY(1); - } - - 100% { - opacity: 0; - -webkit-transform: scaleY(0); - -ms-transform: scaleY(0); - transform: scaleY(0); - } -} - -/******************************* - Animations -*******************************/ - -/*-------------- - Emphasis ----------------*/ - -/* Flash */ - -@-webkit-keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -@keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -/* Shake */ - -@-webkit-keyframes shake { - 0%, 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translateX(10px); - transform: translateX(10px); - } -} - -@keyframes shake { - 0%, 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translateX(-10px); - -ms-transform: translateX(-10px); - transform: translateX(-10px); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translateX(10px); - -ms-transform: translateX(10px); - transform: translateX(10px); - } -} - -/* Bounce */ - -@-webkit-keyframes bounce { - 0%, 20%, 50%, 80%, 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 40% { - -webkit-transform: translateY(-30px); - transform: translateY(-30px); - } - - 60% { - -webkit-transform: translateY(-15px); - transform: translateY(-15px); - } -} - -@keyframes bounce { - 0%, 20%, 50%, 80%, 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 40% { - -webkit-transform: translateY(-30px); - -ms-transform: translateY(-30px); - transform: translateY(-30px); - } - - 60% { - -webkit-transform: translateY(-15px); - -ms-transform: translateY(-15px); - transform: translateY(-15px); - } -} - -/* Tada */ - -@-webkit-keyframes tada { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 10%, 20% { - -webkit-transform: scale(0.9) rotate(-3deg); - transform: scale(0.9) rotate(-3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale(1.1) rotate(3deg); - transform: scale(1.1) rotate(3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale(1.1) rotate(-3deg); - transform: scale(1.1) rotate(-3deg); - } - - 100% { - -webkit-transform: scale(1) rotate(0); - transform: scale(1) rotate(0); - } -} - -@keyframes tada { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 10%, 20% { - -webkit-transform: scale(0.9) rotate(-3deg); - -ms-transform: scale(0.9) rotate(-3deg); - transform: scale(0.9) rotate(-3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale(1.1) rotate(3deg); - -ms-transform: scale(1.1) rotate(3deg); - transform: scale(1.1) rotate(3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale(1.1) rotate(-3deg); - -ms-transform: scale(1.1) rotate(-3deg); - transform: scale(1.1) rotate(-3deg); - } - - 100% { - -webkit-transform: scale(1) rotate(0); - -ms-transform: scale(1) rotate(0); - transform: scale(1) rotate(0); - } -} - -/* Pulse */ - -@-webkit-keyframes pulse { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } - - 50% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - opacity: 0.7; - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } -} - -@keyframes pulse { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - opacity: 1; - } - - 50% { - -webkit-transform: scale(0.9); - -ms-transform: scale(0.9); - transform: scale(0.9); - opacity: 0.7; - } - - 100% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - opacity: 1; - } -} - -/*-------------- - Flips ----------------*/ - -/* Horizontal */ - -@-webkit-keyframes horizontalFlip { - 0% { - -webkit-transform: rotateY(-90deg); - transform: rotateY(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - opacity: 1; - } -} - -@keyframes horizontalFlip { - 0% { - -webkit-transform: rotateY(-90deg); - -ms-transform: rotateY(-90deg); - transform: rotateY(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform: rotateY(0deg); - -ms-transform: rotateY(0deg); - transform: rotateY(0deg); - opacity: 1; - } -} - -/* Horizontal */ - -@-webkit-keyframes horizontalFlipOut { - 0% { - -webkit-transform: rotateY(0deg); - transform: rotateY(0deg); - opacity: 0; - } - - 100% { - -webkit-transform: rotateY(90deg); - transform: rotateY(90deg); - opacity: 1; - } -} - -@keyframes horizontalFlipOut { - 0% { - -webkit-transform: rotateY(0deg); - -ms-transform: rotateY(0deg); - transform: rotateY(0deg); - opacity: 0; - } - - 100% { - -webkit-transform: rotateY(90deg); - -ms-transform: rotateY(90deg); - transform: rotateY(90deg); - opacity: 1; - } -} - -/* Vertical */ - -@-webkit-keyframes verticalFlip { - 0% { - -webkit-transform: rotateX(-90deg); - transform: rotateX(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform: rotateX(0deg); - transform: rotateX(0deg); - opacity: 1; - } -} - -@keyframes verticalFlip { - 0% { - -webkit-transform: rotateX(-90deg); - -ms-transform: rotateX(-90deg); - transform: rotateX(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform: rotateX(0deg); - -ms-transform: rotateX(0deg); - transform: rotateX(0deg); - opacity: 1; - } -} - -@-webkit-keyframes verticalFlipOut { - 0% { - -webkit-transform: rotateX(0deg); - transform: rotateX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: rotateX(-90deg); - transform: rotateX(-90deg); - opacity: 0; - } -} - -@keyframes verticalFlipOut { - 0% { - -webkit-transform: rotateX(0deg); - -ms-transform: rotateX(0deg); - transform: rotateX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: rotateX(-90deg); - -ms-transform: rotateX(-90deg); - transform: rotateX(-90deg); - opacity: 0; - } -} - -/*-------------- - Fades ----------------*/ - -/* Fade */ - -@-webkit-keyframes fade { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@keyframes fade { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@-webkit-keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -@keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -/* Fade Up */ - -@-webkit-keyframes fadeUp { - 0% { - opacity: 0; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeUp { - 0% { - opacity: 0; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -@-webkit-keyframes fadeUpOut { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } -} - -@keyframes fadeUpOut { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } -} - -/* Fade Down */ - -@-webkit-keyframes fadeDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -@-webkit-keyframes fadeDownOut { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } -} - -@keyframes fadeDownOut { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } -} - -/*-------------- - Scale ----------------*/ - -/* Scale */ - -@-webkit-keyframes scale { - 0% { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } - - 100% { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes scale { - 0% { - opacity: 0; - -webkit-transform: scale(0.7); - -ms-transform: scale(0.7); - transform: scale(0.7); - } - - 100% { - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} - -@-webkit-keyframes scaleOut { - 0% { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } - - 100% { - opacity: 0; - -webkit-transform: scale(0.7); - transform: scale(0.7); - } -} - -@keyframes scaleOut { - 0% { - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 100% { - opacity: 0; - -webkit-transform: scale(0.7); - -ms-transform: scale(0.7); - transform: scale(0.7); - } -} -/* - * # Semantic - Video - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -/******************************* - Video -*******************************/ - -.ui.video { - position: relative; - max-width: 100%; -} - -/*-------------- - Content ----------------*/ - -/* Placeholder Image */ - -.ui.video .placeholder { - background-color: #333333; -} - -/* Play Icon Overlay */ - -.ui.video .play { - cursor: pointer; - position: absolute; - top: 0px; - left: 0px; - z-index: 10; - width: 100%; - height: 100%; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60); - opacity: 0.6; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; -} - -.ui.video .play.icon:before { - position: absolute; - top: 50%; - left: 50%; - z-index: 11; - font-size: 6rem; - margin: -3rem 0em 0em -3rem; - color: #FFFFFF; - text-shadow: 0px 3px 3px rgba(0, 0, 0, 0.4); -} - -.ui.video .placeholder { - display: block; - width: 100%; - height: 100%; -} - -/* IFrame Embed */ - -.ui.video .embed { - display: none; -} - -/******************************* - States -*******************************/ - -/*-------------- - Hover ----------------*/ - -.ui.video .play:hover { - opacity: 1; -} - -/*-------------- - Active ----------------*/ - -.ui.video.active .play, -.ui.video.active .placeholder { - display: none; -} - -.ui.video.active .embed { - display: block; -} -/* - * # Semantic Comment View - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - * Released: April 17 2013 - */ - -/******************************* - Standard -*******************************/ - -/*-------------- - Comments ----------------*/ - -.ui.comments a { - cursor: pointer; -} - -/*-------------- - Comment ----------------*/ - -.ui.comments .comment { - position: relative; - margin-top: 0.5em; - padding-top: 0.5em; -} - -.ui.comments .comment:first-child { - margin-top: 0em; - padding-top: 0em; -} - -/*-------------------- - Avatar (Optional) ----------------------*/ - -.ui.comments .comment .avatar { - display: block; - float: left; - width: 4em; -} - -.ui.comments .comment .avatar img { - display: block; - margin: 0em auto; - width: 3em; - height: 3em; - border-radius: 500px; -} - -/*-------------- - Content ----------------*/ - -.ui.comments .comment > .content, -.ui.comments .comment > .avatar { - display: block; -} - -.ui.comments .comment .avatar ~ .content { - padding: 0em 1em; -} - -/* If there is an avatar move content over */ - -.ui.comments .comment > .avatar ~ .content { - padding-top: 0.25em; - margin-left: 3.5em; -} - -.ui.comments .comment .metadata { - display: inline-block; - margin-left: 0.3em; - color: rgba(0, 0, 0, 0.4); -} - -.ui.comments .comment .metadata > * { - display: inline-block; - margin: 0em 0.3em 0em 0em; -} - -/*-------------------- - Comment Text ----------------------*/ - -.ui.comments .comment .text { - margin: 0.25em 0em 0.5em; - word-wrap: break-word; -} - -/*-------------------- - User Actions ----------------------*/ - -.ui.comments .comment .actions { - font-size: 0.9em; -} - -.ui.comments .comment .actions a { - display: inline-block; - margin: 0em 0.3em 0em 0em; - color: rgba(0, 0, 0, 0.3); -} - -.ui.comments .comment .actions a.active, -.ui.comments .comment .actions a:hover { - color: rgba(0, 0, 0, 0.6); -} - -/*-------------------- - Reply Form ----------------------*/ - -.ui.comments .reply.form { - margin-top: 0.75em; - width: 100%; - max-width: 30em; -} - -.ui.comments .comment .reply.form { - margin-left: 2em; -} - -.ui.comments > .reply.form { - margin-top: 1.5em; - max-width: 40em; -} - -.ui.comments .reply.form textarea { - height: 12em; -} - -/*-------------------- - Nested Comments ----------------------*/ - -.ui.comments .comment .comments { - margin-top: 0.5em; - padding-top: 0.5em; - padding-bottom: 1em; -} - -.ui.comments .comment .comments:before { - position: absolute; - top: 0px; - left: 0px; -} - -/* One Deep */ - -.ui.comments > .comment .comments { - margin-left: 2em; -} - -/* Two Deep */ - -.ui.comments > .comment > .comments > .comment > .comments { - margin-left: 1.75em; -} - -/* Three Deep */ - -.ui.comments > .comment > .comments > .comment > .comments > .comment > .comments { - margin-left: 1.5em; -} - -/* Four Deep or more */ - -.ui.comments > .comment > .comments > .comment > .comments > .comment > .comments > .comment .comments { - margin-left: 0.5em; -} - -/******************************* - Variations -*******************************/ - -/*-------------------- - Threaded ----------------------*/ - -.ui.threaded.comments .comment .comments { - margin-left: 2em !important; - padding-left: 2em !important; - -webkit-box-shadow: -1px 0px 0px rgba(0, 0, 0, 0.05); - box-shadow: -1px 0px 0px rgba(0, 0, 0, 0.05); -} - -/*-------------------- - Minimal ----------------------*/ - -.ui.minimal.comments .comment .actions { - opacity: 0; - -webkit-transition: opacity 0.1s ease-out; - transition: opacity 0.1s ease-out; - -webkit-transition-delay: 0.1s; - transition-delay: 0.1s; -} - -.ui.minimal.comments .comment > .content:hover > .actions { - opacity: 1; -} - -/*-------------------- - Sizes ----------------------*/ - -.ui.small.comments { - font-size: 0.875em; -} -/* - * # Activity Feed View - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - * Released: May 22, 2013 - */ - -/******************************* - Activity Feed -*******************************/ - -.ui.feed a { - cursor: pointer; -} - -.ui.feed, -.ui.feed .event, -.ui.feed .label, -.ui.feed .content, -.ui.feed .extra { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -/******************************* - Content -*******************************/ - -/* Event */ - -.ui.feed .event { - width: 100%; - display: table; - padding: 1em; -} - -.ui.feed .event:first-child { - border-top: 0px; -} - -.ui.feed .event:last-child { - margin-bottom: 1em; -} - -/* Event Label */ - -.ui.feed .label { - width: 3em; - display: table-cell; - vertical-align: top; - text-align: left; -} - -.ui.feed .label .icon { - font-size: 1.5em; - padding: 0.5em; - margin: 0em; -} - -.ui.feed .label img { - width: 3em; - margin: 0em; - border-radius: 50em; -} - -.ui.feed .label + .content { - padding: 0.75em 1em 0em; -} - -/* Content */ - -.ui.feed .content { - display: table-cell; - vertical-align: top; - text-align: left; - word-wrap: break-word; -} - -/* Date */ - -.ui.feed .content .date { - float: right; - padding-left: 1em; - color: rgba(0, 0, 0, 0.4); -} - -/* Summary */ - -.ui.feed .content .summary { - color: rgba(0, 0, 0, 0.75); -} - -.ui.feed .content .summary img { - display: inline-block; - margin-right: 0.25em; - width: 4em; - border-radius: 500px; -} - -/* Additional Information */ - -.ui.feed .content .extra { - margin: 1em 0em 0em; - padding: 0.5em 0em 0em; - color: rgba(0, 0, 0, 0.5); -} - -.ui.feed .content .extra.images img { - display: inline-block; - margin-right: 0.25em; - width: 6em; -} - -.ui.feed .content .extra.text { - padding: 0.5em 1em; - border-left: 0.2em solid rgba(0, 0, 0, 0.1); -} - -/******************************* - Variations -*******************************/ - -.ui.small.feed { - font-size: 0.875em; -} - -.ui.small.feed .label img { - width: 2.5em; -} - -.ui.small.feed .label .icon { - font-size: 1.25em; -} - -.ui.feed .event { - padding: 0.75em 0em; -} - -.ui.small.feed .label + .content { - padding: 0.5em 0.5em 0; -} - -.ui.small.feed .content .extra.images img { - width: 5em; -} - -.ui.small.feed .content .extra { - margin: 0.5em 0em 0em; -} - -.ui.small.feed .content .extra.text { - padding: 0.25em 0.5em; -} -/* - * # Semantic Item View - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - * Released: April 17 2013 - */ - -/******************************* - Standard -*******************************/ - -/*-------------- - Items ----------------*/ - -.ui.items { - margin: 1em 0em 0em; -} - -.ui.items:first-child { - margin-top: 0em; -} - -.ui.items:last-child { - margin-bottom: -1em; -} - -/* Force Clearing */ - -.ui.items:after { - display: block; - content: ' '; - height: 0px; - clear: both; - overflow: hidden; - visibility: hidden; -} - -/*-------------- - Item ----------------*/ - -.ui.items > .row > .item, -.ui.items > .item { - display: block; - float: left; - position: relative; - top: 0px; - width: 316px; - min-height: 375px; - margin: 0em 0.5em 2.5em; - padding: 0em; - background-color: #FFFFFF; - line-height: 1.2; - font-size: 1em; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1); - border-bottom: 0.2em solid rgba(0, 0, 0, 0.2); - border-radius: 0.33em; - -webkit-transition: -webkit-box-shadow 0.2s ease; - transition: box-shadow 0.2s ease; - padding: 0.5em; -} - -.ui.items a.item, -.ui.items .item a { - cursor: pointer; -} - -.ui.items .item, -.ui.items .item > .image, -.ui.items .item > .image .overlay, -.ui.items .item > .content, -.ui.items .item > .content > .meta, -.ui.items .item > .content > .extra { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -/*-------------- - Images ----------------*/ - -.ui.items .item > .image { - display: block; - position: relative; - background-color: rgba(0, 0, 0, 0.05); - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - border-radius: 0.2em; -} - -.ui.items .item > .image > img { - display: block; - width: 100%; -} - -/*-------------- - Content ----------------*/ - -.ui.items .item > .content { - padding: 0.75em 0.5em; -} - -.ui.items .item > .content > .name { - display: block; - font-size: 1.25em; - font-weight: bold; - margin-bottom: 0.2em; - color: rgba(0, 0, 0, 0.7); -} - -.ui.items .item > .content > .description { - clear: both; - margin: 0em 0em; - color: rgba(0, 0, 0, 0.45); -} - -.ui.items .item > .content > .description p { - margin: 0em 0em 0.2em; -} - -.ui.items .item > .content > .description p:last-child { - margin-bottom: 0em; -} - -/*-------------- - Meta ----------------*/ - -.ui.items .item .meta { - float: right; - color: rgba(0, 0, 0, 0.35); -} - -.ui.items .item > .content > .meta + .name { - float: left; -} - -/*-------------- - Labels ----------------*/ - -/*-----star----- */ - -/* hover */ - -.ui.items .item .star.label:hover::after { - border-right-color: #F6EFC3; -} - -.ui.items .item .star.label:hover::after { - border-top-color: #F6EFC3; -} - -.ui.items .item .star.label:hover .icon { - color: #ac9400; -} - -/* active */ - -.ui.items .item .star.label.active::after { - border-right-color: #F6EFC3; -} - -.ui.items .item .star.label.active::after { - border-top-color: #F6EFC3; -} - -.ui.items .item .star.label.active .icon { - color: #ac9400; -} - -/*-----like----- */ - -/* hover */ - -.ui.items .item .like.label:hover::after { - border-right-color: #F5E1E2; -} - -.ui.items .item .like.label.active::after { - border-top-color: #F5E1E2; -} - -.ui.items .item .like.label:hover .icon { - color: #ef404a; -} - -/* active */ - -.ui.items .item .like.label.active::after { - border-right-color: #F5E1E2; -} - -.ui.items .item .like.label.active::after { - border-top-color: #F5E1E2; -} - -.ui.items .item .like.label.active .icon { - color: #ef404a; -} - -/*-------------- - Extra ----------------*/ - -.ui.items .item .extra { - position: absolute; - width: 100%; - padding: 0em 0.5em; - bottom: -2em; - left: 0em; - height: 1.5em; - color: rgba(0, 0, 0, 0.25); - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; -} - -.ui.items .item .extra > img { - display: inline-block; - border-radius: 500px 500px 500px 500px; - margin-right: 0.25em; - vertical-align: middle; - width: 2em; -} - -.ui.items .item .extra .left { - float: left; -} - -.ui.items .item .extra .right { - float: right; -} - -/******************************* - States -*******************************/ - -.ui.items .item:hover { - cursor: pointer; - z-index: 5; - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2); -} - -.ui.items .item:hover .extra { - color: rgba(0, 0, 0, 0.5); -} - -.ui.items .item:nth-of-type(n+1):hover { - border-bottom-color: #6ECFF5 !important; -} - -.ui.items .item:nth-of-type(n+2):hover { - border-bottom-color: #5C6166 !important; -} - -.ui.items .item:nth-of-type(n+3):hover { - border-bottom-color: #A1CF64 !important; -} - -.ui.items .item:nth-of-type(n+4):hover { - border-bottom-color: #D95C5C !important; -} - -.ui.items .item:nth-of-type(n+5):hover { - border-bottom-color: #564F8A !important; -} - -.ui.items .item:nth-of-type(n+6):hover { - border-bottom-color: #00B5AD !important; -} - -/******************************* - Variations -*******************************/ - -/*-------------- - Connected ----------------*/ - -.ui.connected.items { - display: table; - width: 100%; - margin-left: 0em !important; - margin-right: 0em !important; -} - -.ui.connected.items > .row > .item, -.ui.connected.items > .item { - float: none; - display: table-cell; - vertical-align: top; - height: auto; - border-radius: 0px; - margin: 0em; - width: 33.33%; -} - -.ui.connected.items > .row { - display: table; - margin: 0.5em 0em; -} - -.ui.connected.items > .row:first-child { - margin-top: 0em; -} - -/* Borders */ - -.ui.connected.items > .item, -.ui.connected.items > .row:last-child > .item { - border-bottom: 0.2em solid rgba(0, 0, 0, 0.2); -} - -.ui.connected.items > .row:last-child > .item:first-child, -.ui.connected.items > .item:first-child { - border-radius: 0em 0em 0em 0.33em; -} - -.ui.connected.items > .row:last-child > .item:last-child, -.ui.connected.items > .item:last-child { - border-radius: 0em 0em 0.33em 0em; -} - -/* Hover */ - -.ui.connected.items .item:hover { - border-bottom-width: 0.2em; -} - -/* Item Count */ - -.ui.one.connected.items > .row > .item, -.ui.one.connected.items > .item { - width: 50%; - padding-left: 2%; - padding-right: 2%; -} - -.ui.two.connected.items > .row > .item, -.ui.two.connected.items > .item { - width: 50%; - padding-left: 1%; - padding-right: 1%; -} - -.ui.three.connected.items > .row > .item, -.ui.three.connected.items > .item { - width: 33.333%; - padding-left: 1%; - padding-right: 1%; -} - -.ui.four.connected.items > .row > .item, -.ui.four.connected.items > .item { - width: 25%; - padding-left: 0.5%; - padding-right: 0.5%; -} - -.ui.five.connected.items > .row > .item, -.ui.five.connected.items > .item { - width: 20%; - padding-left: 0.5%; - padding-right: 0.5%; -} - -.ui.six.connected.items > .row > .item, -.ui.six.connected.items > .item { - width: 16.66%; - padding-left: 0.5%; - padding-right: 0.5%; -} - -.ui.seven.connected.items > .row > .item, -.ui.seven.connected.items > .item { - width: 14.28%; - padding-left: 0.5%; - padding-right: 0.5%; -} - -.ui.eight.connected.items > .row > .item, -.ui.eight.connected.items > .item { - width: 12.5%; - padding-left: 0.25%; - padding-right: 0.25%; -} - -.ui.nine.connected.items > .row > .item, -.ui.nine.connected.items > .item { - width: 11.11%; - padding-left: 0.25%; - padding-right: 0.25%; -} - -.ui.ten.connected.items > .row > .item, -.ui.ten.connected.items > .item { - width: 10%; - padding-left: 0.2%; - padding-right: 0.2%; -} - -.ui.eleven.connected.items > .row > .item, -.ui.eleven.connected.items > .item { - width: 9.09%; - padding-left: 0.2%; - padding-right: 0.2%; -} - -.ui.twelve.connected.items > .row > .item, -.ui.twelve.connected.items > .item { - width: 8.3333%; - padding-left: 0.1%; - padding-right: 0.1%; -} - -/*------------------- - Responsive ---------------------*/ - -@media only screen and (max-width: 768px) { - .ui.stackable.items { - display: block !important; - } - - .ui.stackable.items > .item, - .ui.stackable.items > .row > .item { - display: block !important; - height: auto !important; - width: auto !important; - padding: 0% !important; - } -} - -/*-------------------- - Horizontal ----------------------*/ - -.ui.horizontal.items > .item, -.ui.items > .horizontal.item { - display: table; -} - -.ui.horizontal.items > .item > .image .ui.items > .horizontal.item > .image { - display: table-cell; - width: 50%; -} - -.ui.horizontal.items > .item > .image + .content, -.ui.items > .horizontal.item > .image + .content { - width: 50%; - display: table-cell; -} - -.ui.horizontal.items > .item > .content, -.ui.items > .horizontal.item > .content { - padding: 1% 1.7% 11% 3%; - vertical-align: top; -} - -.ui.horizontal.items > .item > .meta, -.ui.items > .horizontal.item > .meta { - position: absolute; - padding: 0%; - bottom: 7%; - left: 3%; - width: 94%; -} - -.ui.horizontal.items > .item > .image + .content + .meta, -.ui.items > .horizontal.item > .image + .content + .meta { - bottom: 7%; - left: 53%; - width: 44%; -} - -.ui.horizontal.items > .item .avatar, -.ui.items > .horizontal.item .avatar { - width: 11.5%; -} - -.ui.items > .item .avatar { - max-width: 25px; -} - -/*-------------- - Item Count ----------------*/ - -.ui.one.items { - margin-left: -2%; - margin-right: -2%; -} - -.ui.one.items > .item { - width: 100%; - margin-left: 2%; - margin-right: 2%; -} - -.ui.two.items { - margin-left: -1%; - margin-right: -1%; -} - -.ui.two.items > .item { - width: 48%; - margin-left: 1%; - margin-right: 1%; -} - -.ui.two.items > .item:nth-child(2n+1) { - clear: left; -} - -.ui.three.items { - margin-left: -1%; - margin-right: -1%; -} - -.ui.three.items > .item { - width: 31.333%; - margin-left: 1%; - margin-right: 1%; -} - -.ui.three.items > .item:nth-child(3n+1) { - clear: left; -} - -.ui.four.items { - margin-left: -0.5%; - margin-right: -0.5%; -} - -.ui.four.items > .item { - width: 24%; - margin-left: 0.5%; - margin-right: 0.5%; -} - -.ui.four.items > .item:nth-child(4n+1) { - clear: left; -} - -.ui.five.items { - margin-left: -0.5%; - margin-right: -0.5%; -} - -.ui.five.items > .item { - width: 19%; - margin-left: 0.5%; - margin-right: 0.5%; -} - -.ui.five.items > .item:nth-child(5n+1) { - clear: left; -} - -.ui.six.items { - margin-left: -0.5%; - margin-right: -0.5%; -} - -.ui.six.items > .item { - width: 15.66%; - margin-left: 0.5%; - margin-right: 0.5%; -} - -.ui.six.items > .item:nth-child(6n+1) { - clear: left; -} - -.ui.seven.items { - margin-left: -0.5%; - margin-right: -0.5%; -} - -.ui.seven.items > .item { - width: 13.28%; - margin-left: 0.5%; - margin-right: 0.5%; - font-size: 11px; -} - -.ui.seven.items > .item:nth-child(7n+1) { - clear: left; -} - -.ui.eight.items { - margin-left: -0.25%; - margin-right: -0.25%; -} - -.ui.eight.items > .item { - width: 12.0%; - margin-left: 0.25%; - margin-right: 0.25%; - font-size: 11px; -} - -.ui.eight.items > .item:nth-child(8n+1) { - clear: left; -} - -.ui.nine.items { - margin-left: -0.25%; - margin-right: -0.25%; -} - -.ui.nine.items > .item { - width: 10.61%; - margin-left: 0.25%; - margin-right: 0.25%; - font-size: 10px; -} - -.ui.nine.items > .item:nth-child(9n+1) { - clear: left; -} - -.ui.ten.items { - margin-left: -0.2%; - margin-right: -0.2%; -} - -.ui.ten.items > .item { - width: 9.6%; - margin-left: 0.2%; - margin-right: 0.2%; - font-size: 10px; -} - -.ui.ten.items > .item:nth-child(10n+1) { - clear: left; -} - -.ui.eleven.items { - margin-left: -0.2%; - margin-right: -0.2%; -} - -.ui.eleven.items > .item { - width: 8.69%; - margin-left: 0.2%; - margin-right: 0.2%; - font-size: 9px; -} - -.ui.eleven.items > .item:nth-child(11n+1) { - clear: left; -} - -.ui.twelve.items { - margin-left: -0.1%; - margin-right: -0.1%; -} - -.ui.twelve.items > .item { - width: 8.1333%; - margin-left: 0.1%; - margin-right: 0.1%; - font-size: 9px; -} - -.ui.twelve.items > .item:nth-child(12n+1) { - clear: left; -} -/* - * # Semantic List - Flat - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - * Released: April 26 2013 - */ - -/******************************* - List -*******************************/ - -ul.ui.list, -ol.ui.list, -.ui.list { - list-style-type: none; - margin: 1em 0em; - padding: 0em; -} - -ul.ui.list ul, -ol.ui.list ol, -.ui.list .list { - margin: 0em; - padding: 0.5em 0em 0.5em 1em; -} - -ul.ui.list:first-child, -ol.ui.list:first-child, -.ui.list:first-child { - margin-top: 0em; -} - -ul.ui.list:last-child, -ol.ui.list:last-child, -.ui.list:last-child { - margin-bottom: 0em; -} - -/******************************* - Content -*******************************/ - -/* List Item */ - -ul.ui.list li, -ol.ui.list li, -.ui.list .item { - display: list-item; - list-style-type: none; - list-style-position: inside; - padding: 0.3em 0em; - line-height: 1.2; -} - -.ui.list .item:after { - content: ''; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -/* Sub-List */ - -.ui.list .list { - clear: both; -} - -/* Icon */ - -.ui.list .item > .icon { - display: block; - float: left; - margin: 0em 1em 0em 0em; - padding: 0.1em 0em 0em 0em; -} - -.ui.list .item > .icon:only-child { - display: inline-block; -} - -.ui.horizontal.list .item > .icon { - margin: 0em; - padding: 0em 0.25em 0em 0em; -} - -.ui.horizontal.list .item > .icon, -.ui.horizontal.list .item > .icon + .content { - float: none; - display: inline-block; -} - -/* Image */ - -.ui.list .item > img { - display: block; - float: left; - margin-right: 1em; - vertical-align: middle; -} - -/* Content */ - -.ui.list .item > .content { - display: inline-block; - vertical-align: middle; - line-height: 1.2; -} - -.ui.list .item > .icon + .content { - display: table-cell; - vertical-align: top; -} - -/* Link */ - -.ui.list a { - cursor: pointer; -} - -.ui.list a .icon { - color: rgba(0, 0, 0, 0.6); - -webkit-transition: color 0.2s ease; - transition: color 0.2s ease; -} - -/* Header */ - -.ui.list .header { - font-weight: bold; -} - -.ui.list .description { - color: rgba(0, 0, 0, 0.5); -} - -/* Floated Content */ - -.ui.list .item > .left.floated { - margin-right: 1em; - float: left; -} - -.ui.list .item > .right.floated { - margin-left: 1em; - float: right; -} - -/******************************* - Types -*******************************/ - -/*------------------- - Horizontal ---------------------*/ - -.ui.horizontal.list { - display: inline-block; - font-size: 0em; -} - -.ui.horizontal.list > .item { - display: inline-block; - margin-left: 1em; - font-size: 1rem; -} - -.ui.horizontal.list > .item:first-child { - margin-left: 0em; -} - -.ui.horizontal.list .list { - padding-left: 0em; - padding-bottom: 0em; -} - -/******************************* - States -*******************************/ - -/*------------------- - Hover ---------------------*/ - -.ui.list a:hover .icon { - color: rgba(0, 0, 0, 0.8); -} - -/******************************* - Variations -*******************************/ - -/*------------------- - Inverted ---------------------*/ - -.ui.inverted.list a .icon { - color: rgba(255, 255, 255, 0.6); -} - -.ui.inverted.list .description { - color: rgba(255, 255, 255, 0.8); -} - -.ui.inverted.link.list .item { - color: rgba(255, 255, 255, 0.4); -} - -/*------------------- - Link ---------------------*/ - -.ui.link.list .item { - color: rgba(0, 0, 0, 0.3); -} - -.ui.link.list a.item, -.ui.link.list .item a { - color: rgba(0, 0, 0, 0.5); -} - -.ui.link.list a.item:hover, -.ui.link.list .item a:hover { - color: rgba(0, 0, 0, 0.8); -} - -.ui.link.list a.item:active, -.ui.link.list .item a:active { - color: rgba(0, 0, 0, 0.8); -} - -.ui.link.list a.active.item, -.ui.link.list .active.item a { - color: rgba(0, 0, 0, 0.8); -} - -/* Inverted */ - -.ui.inverted.link.list a.item, -.ui.inverted.link.list .item a { - color: rgba(255, 255, 255, 0.6); -} - -.ui.inverted.link.list a.item:hover, -.ui.inverted.link.list .item a:hover { - color: rgba(255, 255, 255, 0.8); -} - -.ui.inverted.link.list a.item:active, -.ui.inverted.link.list .item a:active { - color: rgba(255, 255, 255, 0.9); -} - -.ui.inverted.link.list a.active.item, -.ui.inverted.link.list .active.item a { - color: rgba(255, 255, 255, 0.8); -} - -/*------------------- - Selection ---------------------*/ - -.ui.selection.list .item { - cursor: pointer; - color: rgba(0, 0, 0, 0.4); - padding: 0.5em; - -webkit-transition: 0.2s color ease, 0.2s padding-left ease, 0.2s background-color ease; - transition: 0.2s color ease, 0.2s padding-left ease, 0.2s background-color ease; -} - -.ui.selection.list .item:hover { - background-color: rgba(0, 0, 0, 0.02); - color: rgba(0, 0, 0, 0.7); -} - -.ui.selection.list .item:active { - background-color: rgba(0, 0, 0, 0.05); - color: rgba(0, 0, 0, 0.7); -} - -.ui.selection.list .item.active { - background-color: rgba(0, 0, 0, 0.04); - color: rgba(0, 0, 0, 0.7); -} - -.ui.animated.list .item { - -webkit-transition: 0.2s color ease, 0.2s padding-left ease, 0.2s background-color ease; - transition: 0.2s color ease, 0.2s padding-left ease, 0.2s background-color ease; -} - -.ui.animated.list:not(.horizontal) .item:hover { - padding-left: 1em; -} - -.ui.animated.list:not(.horizontal) .item:hover .item:hover { - padding-left: 0.5em; -} - -/* Inverted */ - -.ui.inverted.selection.list .item { - color: rgba(255, 255, 255, 0.6); -} - -.ui.inverted.selection.list .item:hover { - background-color: rgba(255, 255, 255, 0.04); - color: rgba(255, 255, 255, 0.8); -} - -.ui.inverted.selection.list .item:active { - background-color: rgba(255, 255, 255, 0.1); - color: rgba(255, 255, 255, 0.7); -} - -.ui.inverted.selection.list .item.active { - background-color: rgba(255, 255, 255, 0.08); - color: #FFFFFF; -} - -/*------------------- - Bulleted ---------------------*/ - -ul.ui.list, -.ui.bulleted.list { - margin-left: 1.5em; -} - -ul.ui.list li, -.ui.bulleted.list .item { - position: relative; -} - -ul.ui.list li:before, -.ui.bulleted.list .item:before { - position: absolute; - left: -1.5em; - content: '•'; - line-height: 1.2rem; - vertical-align: top; -} - -ul.ui.list ul, -.ui.bulleted.list .list { - padding-left: 1.5em; -} - -/* Horizontal Bulleted */ - -ul.ui.horizontal.bulleted.list, -.ui.horizontal.bulleted.list { - margin-left: 0em; -} - -ul.ui.horizontal.bulleted.list li, -.ui.horizontal.bulleted.list .item { - margin-left: 1.5em; -} - -ul.ui.horizontal.bulleted.list li:before, -.ui.horizontal.bulleted.list .item:before { - left: -0.9em; -} - -ul.ui.horizontal.bulleted.list li:first-child, -.ui.horizontal.bulleted.list .item:first-child { - margin-left: 0em; -} - -ul.ui.horizontal.bulleted.list li:first-child::before, -.ui.horizontal.bulleted.list .item:first-child::before { - display: none; -} - -/*------------------- - Ordered ---------------------*/ - -ol.ui.list, -.ui.ordered.list { - counter-reset: ordered; - margin-left: 2em; - list-style-type: none; -} - -ol.ui.list li, -.ui.ordered.list .item { - list-style-type: none; - position: relative; -} - -ol.ui.list li:before, -.ui.ordered.list .item:before { - position: absolute; - left: -2em; - counter-increment: ordered; - content: counters(ordered, "."); - text-align: right; - vertical-align: top; - opacity: 0.75; -} - -ol.ui.list ol, -.ui.ordered.list .list { - counter-reset: ordered; - padding-left: 2.5em; -} - -ol.ui.list ol li:before, -.ui.ordered.list .list .item:before { - left: -2.5em; -} - -/* Horizontal Ordered */ - -ol.ui.horizontal.list, -.ui.ordered.horizontal.list { - margin-left: 0em; -} - -ol.ui.horizontal.list li:before, -.ui.ordered.horizontal.list .item:before { - position: static; - margin: 0em 0.5em 0em 0em; -} - -/*------------------- - Divided ---------------------*/ - -.ui.divided.list > .item, -.ui.divided.list:not(.horizontal) > .list { - border-top: 1px solid rgba(0, 0, 0, 0.1); - padding-left: 0.5em; - padding-right: 0.5em; -} - -.ui.divided.list .item .menu .item { - border-width: 0px; -} - -.ui.divided.list .item:first-child { - border-top-width: 0px; -} - -/* Sub Menu */ - -.ui.divided.list:not(.horizontal) .list { - margin-left: -0.5em; - margin-right: -0.5em; -} - -.ui.divided.list:not(.horizontal) .list .item { - padding-left: 1em; - padding-right: 1em; -} - -.ui.divided.list:not(.horizontal) .list .item:first-child { - border-top-width: 1px; -} - -/* Divided bulleted */ - -.ui.divided.bulleted.list { - margin-left: 0em; -} - -.ui.divided.bulleted.list .item { - padding-left: 1.5em; -} - -.ui.divided.bulleted.list .item:before { - left: 0.5em; -} - -/* Divided ordered */ - -.ui.divided.ordered.list { - margin-left: 0em; -} - -.ui.divided.ordered.list > .item { - padding-left: 2em; - padding-right: 2em; -} - -.ui.divided.ordered.list > .item:before { - left: 0.5em; -} - -.ui.divided.ordered.list .item .list { - margin-left: -2em; - margin-right: -2em; -} - -/* Divided horizontal */ - -.ui.divided.horizontal.list { - margin-left: 0em; -} - -.ui.divided.horizontal.list > .item { - border-top: none; - border-left: 1px solid rgba(0, 0, 0, 0.1); - margin: 0em; - padding-left: 0.75em; - padding-right: 0.75em; - line-height: 0.6; -} - -.ui.horizontal.divided.list > .item:first-child { - border-left: none; - padding-left: 0em; -} - -/* Inverted */ - -.ui.divided.inverted.list > .item, -.ui.divided.inverted.list > .list { - border-color: rgba(255, 255, 255, 0.2); -} - -.ui.divided.inverted.horizontal.list .item { - border-color: rgba(255, 255, 255, 0.2); -} - -/*------------------- - Celled ---------------------*/ - -.ui.celled.list > .item, -.ui.celled.list > .list { - border-top: 1px solid rgba(0, 0, 0, 0.1); - padding-left: 0.5em; - padding-right: 0.5em; -} - -.ui.celled.list > .item:last-child { - border-bottom: 1px solid rgba(0, 0, 0, 0.1); -} - -/* Sub Menu */ - -.ui.celled.list .item .list { - margin-left: -0.5em; - margin-right: -0.5em; -} - -.ui.celled.list .item .list .item { - border-width: 0px; -} - -.ui.celled.list .list .item:first-child { - border-top-width: 0px; -} - -/* Celled Bulleted */ - -.ui.celled.bulleted.list { - margin-left: 0em; -} - -.ui.celled.bulleted.list > .item { - padding-left: 1.5em; -} - -.ui.celled.bulleted.list > .item:before { - left: 0.5em; -} - -/* Celled Ordered */ - -.ui.celled.ordered.list { - margin-left: 0em; -} - -.ui.celled.ordered.list .item { - padding-left: 2em; - padding-right: 2em; -} - -.ui.celled.ordered.list .item:before { - left: 0.5em; -} - -.ui.celled.ordered.list .item .list { - margin-left: -2em; - margin-right: -2em; -} - -/* Celled Horizontal */ - -.ui.horizontal.celled.list { - margin-left: 0em; -} - -.ui.horizontal.celled.list .item { - border-top: none; - border-left: 1px solid rgba(0, 0, 0, 0.1); - margin: 0em; - padding-left: 0.75em; - padding-right: 0.75em; - line-height: 0.6; -} - -.ui.horizontal.celled.list .item:last-child { - border-bottom: none; - border-right: 1px solid rgba(0, 0, 0, 0.1); -} - -/* Inverted */ - -.ui.celled.inverted.list > .item, -.ui.celled.inverted.list > .list { - border-color: rgba(255, 255, 255, 0.2); -} - -.ui.celled.inverted.horizontal.list .item { - border-color: rgba(255, 255, 255, 0.2); -} - -/*------------------- - Relaxed ---------------------*/ - -.ui.relaxed.list:not(.horizontal) .item { - padding-top: 0.5em; - padding-bottom: 0.5em; -} - -.ui.relaxed.list .header { - margin-bottom: 0.25em; -} - -.ui.horizontal.relaxed.list .item { - padding-left: 1.25em; - padding-right: 1.25em; -} - -.ui.very.relaxed.list:not(.horizontal) .item { - padding-top: 1em; - padding-bottom: 1em; -} - -.ui.very.relaxed.list .header { - margin-bottom: 0.5em; -} - -.ui.horizontal.very.relaxed.list .item { - padding-left: 2em; - padding-right: 2em; -} - -/*------------------- - Sizes ---------------------*/ - -.ui.mini.list .item { - font-size: 0.7rem; -} - -.ui.tiny.list .item { - font-size: 0.8125rem; -} - -.ui.small.list .item { - font-size: 0.875rem; -} - -.ui.list .item { - font-size: 1em; -} - -.ui.large.list .item { - font-size: 1.125rem; -} - -.ui.big.list .item { - font-size: 1.25rem; -} - -.ui.huge.list .item { - font-size: 1.375rem; -} - -.ui.massive.list .item { - font-size: 1.5rem; -} -/* - * # Statistic - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - * Released: Aug 20, 2013 - */ - -/******************************* - Statistic -*******************************/ - -.ui.statistic { - text-align: center; -} - -/******************************* - Content -*******************************/ - -.ui.statistic > .number { - font-size: 4em; - font-weight: bold; - color: rgba(0, 0, 0, 0.7); -} - -.ui.statistic > .description { - opacity: 0.8; -} diff --git a/web/public/resource/css/jquery.tagsinput.css b/web/public/resource/css/jquery.tagsinput.css deleted file mode 100644 index b9af4f8..0000000 --- a/web/public/resource/css/jquery.tagsinput.css +++ /dev/null @@ -1,22 +0,0 @@ -div.tagsinput { border: 1px solid rgba(0, 0, 0, 0.15); background: #FFF; padding:5px; width:300px; height:100px; overflow-y: auto; border-radius: 0.3125em;-webkit-box-shadow: 0em 0em 0em 0em rgba(0, 0, 0, 0.3) inset;box-shadow: 0em 0em 0em 0em rgba(0, 0, 0, 0.3) inset;-webkit-appearance: none;} -div.tagsinput span.tag { border: 1px solid #a5d24a; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #cde69c; color: #638421; margin-right: 5px; margin-bottom:5px;font-family: helvetica; font-size:13px;} -div.tagsinput span.tag a { font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px; } -div.tagsinput input { width:120px !important; margin:0px;font-size: 13px; border:1px solid transparent; padding:5px; background: transparent; color: #000; outline:0px; margin-right:5px; margin-bottom:5px; --webkit-transition: background-color 0.3s ease-out, -webkit-box-shadow 0.2s ease, border-color 0.2s ease; -transition: background-color 0.3s ease-out, box-shadow 0.2s ease, border-color 0.2s ease; --webkit-box-shadow: 0em 0em 0em 0em rgba(0, 0, 0, 0.3) inset; -box-shadow: 0em 0em 0em 0em rgba(0, 0, 0, 0.3) inset; --webkit-appearance: none; --webkit-tap-highlight-color: rgba(255, 255, 255, 0); -} -div.tagsinput input:focus { - color: rgba(0, 0, 0, 0.85) !important; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - -webkit-appearance: none; - -webkit-box-shadow: 0.3em 0em 0em 0em rgba(0, 0, 0, 0.2) inset; - box-shadow: 0.3em 0em 0em 0em rgba(0, 0, 0, 0.2) inset; -} -div.tagsinput div { display:block; float: left; } -.tags_clear { clear: both; width: 100%; height: 0px; } -.not_valid {background: #FBD8DB !important; color: #90111A !important;} diff --git a/web/public/resource/css/main.css b/web/public/resource/css/main.css deleted file mode 100644 index e026be4..0000000 --- a/web/public/resource/css/main.css +++ /dev/null @@ -1,418 +0,0 @@ -/*framework edit*/ -html{ - height:100%; - font-size:100%; -} -body { - font: 14px 'Helvetica Neue','Microsoft YaHei','Hiragino Sans GB','WenQuanYi Micro Hei',Helvetica,Arial,Sans-serif; - line-height: 1.428571429; - color: #444; - margin:0px; - padding:0px; - height:100%; -} -ul,li{ - list-style:none; - margin:0; - padding:0; -} -a { - text-decoration:none; - color:#666; -} -.ui.dropdown > .text { - min-width:150px; -} -.ui.notif.menu { - box-shadow:none; -} -.ui.notif.menu .item { - padding:0 10px 0 0; - margin-right:16px -} -.ui.notif.menu .item:before{ - display:none; -} -.ui.notif.menu .item:hover{ - color:#666; -} -/*the style begin*/ -.page{ - min-height:100%; - width:100%; - min-width:1200px; - background: #fff; - box-shadow: 0px 4px 15px #181818; - padding-bottom:16px; - padding-bottom:1rem; -} -span.ui.checkbox { - padding-right:16px; -} -.ui.radio.checkbox{ - margin:16px 16px 8px 0 !important; -} -.ui.warning.message a{ - color:#96904D; -} -.ui.warning.message a:hover, .ui.warning.message a:focus { - text-decoration:underline; -} -.ui.feed a{ - color: #009FDA; -} -.ui.feed a:hover,.ui.feed a:focus{ - color:#00BAFF; - text-decoration:underline; -} -.ui.table { - font-size:14px; -} -/*select*/ -select { - text-transform: none; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -.form-control { - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.428571429; - vertical-align: middle; - color: rgba(0,0,0,.8); - background-color: #ffffff; - background-image: none; - border: 1px solid #cccccc; - border-radius: 4px; - cursor:pointer; -} -.form-control:focus { - outline: 0; -} -.form-control:-moz-placeholder { - color: #999999; -} -.form-control::-moz-placeholder { - color: #999999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999999; -} -.form-control::-webkit-input-placeholder { - color: #999999; -} -/*segment*/ -.ui.segment .right{ - float:right; -} -/*header*/ -header{ - position:relative; - height:72px; -} -#logo{ - float:left; - width:250px; - height:72px; - padding-top:15px; - font-size:30px; -} -#logo a{ - display:block; - width:180px; - height:72px; - text-indent: -999em; -} -header .user{ - display:inline; - float:right; - margin-top:22px; -} -/*main content*/ -.pageHeader, .verticalMenu{ - padding:16px 0; - padding:1rem 0; -} -/*show api key*/ -#showApiKey .segment{ - background:none; - box-shadow:none; - -webkit-box-shadow:none; -} -#showApiKey .segment label{ - font-size:16px; -} -#deviceQuickButton { - float:right; -} -/*index list*/ -#indexList{ - padding-top:2rem; -} -#indexList .segment{ - padding:0; -} -#indexList a.content{ - position:relative; - padding:1rem; - display:block; - min-height:13em; - z-index:100; -} -#indexList a.content:hover, #indexList a.content:focus{ - background-color:#b4ddf5 !important; -} -#indexList h4{ - margin:0; - color:#333; -} -#indexList p.deviceId{ - margin-top:0; -} -#indexList p.deviceDescription{ - height:84px; - overflow:auto; - margin:2rem 0; -} -#indexList h4.newDevice{ - padding:4.7em 0; - text-align:center; - top:50%; -} -#indexList h4.newDevice i.icon{ - display:initial; -} -#indexList p{ - margin:0; - font-size:14px; - font-size:0.875rem; -} -/*the device list*/ -.ui.device.segment{ - clear: both !important; -} -.ui.device.segment p{ - color:#666; - font-size:14px; - font-size:0.875rem; - margin:4px 0; - margin:0.25rem 0; -} -.ui.device.segment span.stress{ - font-size:16px; - font-size:1rem; - color:#333; -} -.ui.device.segment .verborder{ - border-left: 3px solid #007ad5; -} -.ui.device.segment p.sensorStatus{ - font-size:14px; - font-size:0.875rem; -} -.ui.device.segment .sub.header{ - line-height:1.4; -} -/*new device*/ -.locmap { - height: 180px; - background-color: #CCC; - text-align: center; - width: 100% !important; - border: #CCC 1px solid;z -} -#location label{ - margin: 0em 0em 0.3em; - display: block; - color: #555555; - font-size:14px; - font-size:0.875rem; -} -#location input{ - padding:0!important; - border: 1px solid transparent!important; - box-shadow:none!important; - -webkit-box-shadow:none!important; -} -/*the device manage page*/ -.ui.small.header{ - font-weight:normal; -} -.ui.grid.segment.sensor.segment{ - padding:32px 0 16px; - padding:2rem 0 1rem; - border-bottom:1px solid rgba(0,0,0,.1); -} -.ui.device.segment a.externalUrl { - color:#007ad5; -} -.ui.device.segment .sensorAction{ - margin-top:8px; - margin-top:0.5rem; -} -.ui.device.segment a.sensorEdit{ - margin-right:14px; - margin-right:0.875rem; -} -.ui.device.segment a.sensorEdit:hover, .ui.basic.attached.accordion .content a:hover,.ui.device.segment a.sensorEdit:focus, .ui.basic.attached.accordion .content a:focus{ - color:#333; -} -.ui.device.segment a:hover, .ui.device.segment a:focus{ - cursor:pointer; -} -.ui.device.segment a.externalUrl:hover, .ui.device.segment a.externalUrl:focus{ - text-decoration:underline; -} -.ui.vertical.center.segment{ - text-align:center; -} -.ui.data.segment{ - background: transparent; - box-shadow: none; - -webkit-box-shadow: none; - line-height:1.2; - text-align:center; - margin-top:22px !important; -} -.ui.data.segment p.data{ - font-size:48px; - font-size:3rem; -} -.ui.data.segment p.gps{ - font-size:32px; - font-size:2rem; -} -.ui.data.segment p.unit{ - font-size:12px; - font-size:0.75rem; - margin:0; -} -.ui.info.segment{ - padding-bottom:8px; - padding-bottom:0.5rem; -} -/* ui header*/ -h5.ui.header.sprite-icon { - padding-left:22px; - background:url(../images/icon-sprite.png) no-repeat top left; -} -h5.ui.header.sprite-icon.data{ background-position: 0 -68px;} -h5.ui.header.sprite-icon.bird{ background-position: 0 0;} -h5.ui.header.sprite-icon.gps{ background-position: 0 -136px;} -h5.ui.header.sprite-icon.key{ background-position: 0 -204px; } -h5.ui.header.sprite-icon.pic{ background-position: 0 -268px;} -h5.ui.header.sprite-icon.switchicon{ background-position: 0 -336px;} -/*label*/ -.ui.attached.label.show{ - z-index:99; - background: transparent; - color:#333; - right:14px !important; - top:8px; - padding-bottom: 2px; - border-radius: 0!important; -} -.ui.attached.label.show.active{ - background:#fff; - color: #333; - border-style:solid; - border-color:#ccc; - border-width:1px 1px 0px; - z-index:9999; -} -.ui.type.label{ - background-color:#47a447; - border-color:#47a447; - color:#fff;` - font-size:12px; - font-size:0.75rem; - padding:0 7px!important; - border-radius:.325em; - text-transform: uppercase; -} -.ui.label.error{ - border-color:#D24B4C; - color:#fff; -} -/*accordion*/ -.ui.basic.attached.accordion{ - width:inherit; - padding:0 28px 14px; -} -.ui.basic.attached.accordion.showChart .title{ - font-size:12px; - font-size:0.75rem; - position:absolute; - right:32px; - z-index:999; -} -.ui.basic.attached.accordion.action .title{ - margin:0; - padding-top:0; -} -.ui.basic.attached.accordion.action .content{ - margin-top:8px; -/* border-top:1px solid rgba(204, 204, 204, 0.3);*/ -} -/*chart*/ -.chartShow{ - position: absolute; - top: 38px; - right: 14px; - width: 96%; - height: 100%; - display: none; -} -.active.chartShow{ - display:block; -} -/*image box*/ -.field.devimage{ - overflow-x: scroll; - overflow-y: hidden; - position: relative; -} -.dev_img_inner { - width:7777px; - overflow: hidden; -} -/*footer start*/ -footer { - width:100%; - height:150px; - min-width:1200px; - background:#323232; - position:absolute; - z-index: -20; -} -#copyrights { - margin:0 auto; - height:140px; - position:fixed; - left:0px; - right:0px; - bottom:0px; - z-index: -15; -} -#copyrights .inset { - margin:0 auto; - padding:20px 50px 0; - position:relative; -} -#copyrights .logo { - width:164px; - height:40px; - background:url(../images/logo_footer.png); - text-indent:-999em; -} -#copyrights p { - font-size:12px; - color:#a0a0a0; - line-height:24px; -} -#copyrights .fl { - float:left; -} diff --git a/web/public/resource/css/switch.css b/web/public/resource/css/switch.css deleted file mode 100644 index 05cd4b3..0000000 --- a/web/public/resource/css/switch.css +++ /dev/null @@ -1,65 +0,0 @@ -label.switch { - margin: 1.5em auto; -} -input#switch { - position: absolute; - left: -9999px; -} -.switch { - position: relative; - display: block; - width: 5.5em; - height: 3em; - cursor: pointer; - border-radius: 1.5em; - -webkit-transition: 350ms; - transition: 350ms; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.07)), to(rgba(255, 255, 255, 0))), #dddddd; - background: -webkit-linear-gradient(rgba(0, 0, 0, 0.07), rgba(255, 255, 255, 0)), #dddddd; - background: linear-gradient(rgba(0, 0, 0, 0.07), rgba(255, 255, 255, 0)), #dddddd; - -webkit-box-shadow: 0 0.07em 0.1em -0.1em rgba(0, 0, 0, 0.4) inset, 0 0.05em 0.08em -0.01em rgba(255, 255, 255, 0.7); - box-shadow: 0 0.07em 0.1em -0.1em rgba(0, 0, 0, 0.4) inset, 0 0.05em 0.08em -0.01em rgba(255, 255, 255, 0.7); -} -.switch::after { - position: absolute; - content: ''; - width: 2em; - height: 2em; - top: 0.5em; - left: 0.5em; - border-radius: 50%; - -webkit-transition: 250ms ease-in-out; - transition: 250ms ease-in-out; - background: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#eeeeee)); - background: -webkit-linear-gradient(#f5f5f5 10%, #eeeeee); - background: linear-gradient(#f5f5f5 10%, #eeeeee); - -webkit-box-shadow: 0 0.1em 0.15em -0.05em rgba(255, 255, 255, 0.9) inset, 0 0.2em 0.2em -0.12em rgba(0, 0, 0, 0.5); - box-shadow: 0 0.1em 0.15em -0.05em rgba(255, 255, 255, 0.9) inset, 0 0.2em 0.2em -0.12em rgba(0, 0, 0, 0.5); -} -.switch::before { - position: absolute; - content: ''; - width: 4em; - height: 1.5em; - top: 0.75em; - left: 0.75em; - border-radius: 0.75em; - -webkit-transition: 250ms ease-in-out; - transition: 250ms ease-in-out; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.07)), to(rgba(255, 255, 255, 0.1))), #d0d0d0; - background: -webkit-linear-gradient(rgba(0, 0, 0, 0.07), rgba(255, 255, 255, 0.1)), #d0d0d0; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.07)), to(rgba(255, 255, 255, 0.1))), #ec2727; - background: -webkit-linear-gradient(rgba(0, 0, 0, 0.07), rgba(255, 255, 255, 0.1)), #ec2727; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.07)), to(rgba(255, 255, 255, 0.1))), #D95C5C; - background: -webkit-linear-gradient(rgba(0, 0, 0, 0.07), rgba(255, 255, 255, 0.1)), #D95C5C; - background: linear-gradient(rgba(0, 0, 0, 0.07), rgba(255, 255, 255, 0.1)), #D95C5C; - -webkit-box-shadow: 0 0.08em 0.15em -0.1em rgba(0, 0, 0, 0.5) inset, 0 0.05em 0.08em -0.01em rgba(255, 255, 255, 0.7), 0 0 0 0 rgba(68, 204, 102, 0.7) inset; - box-shadow: 0 0.08em 0.15em -0.1em rgba(0, 0, 0, 0.5) inset, 0 0.05em 0.08em -0.01em rgba(255, 255, 255, 0.7), 0 0 0 0 rgba(68, 204, 102, 0.7) inset; -} -input:checked + .switch::before { - -webkit-box-shadow: 0 0.08em 0.15em -0.1em rgba(0, 0, 0, 0.5) inset, 0 0.05em 0.08em -0.01em rgba(255, 255, 255, 0.7), 3em 0 0 0 rgba(68, 204, 102, 0.7) inset; - box-shadow: 0 0.08em 0.15em -0.1em rgba(0, 0, 0, 0.5) inset, 0 0.05em 0.08em -0.01em rgba(255, 255, 255, 0.7), 3em 0 0 0 rgba(68, 204, 102, 0.7) inset; -} -input:checked + .switch::after { - left: 3em; -} diff --git a/web/public/resource/fonts/basic.icons.eot b/web/public/resource/fonts/basic.icons.eot deleted file mode 100644 index 25066de..0000000 Binary files a/web/public/resource/fonts/basic.icons.eot and /dev/null differ diff --git a/web/public/resource/fonts/basic.icons.svg b/web/public/resource/fonts/basic.icons.svg deleted file mode 100644 index b9c54d0..0000000 --- a/web/public/resource/fonts/basic.icons.svg +++ /dev/null @@ -1,450 +0,0 @@ - - - - -Created by FontForge 20100429 at Thu Sep 20 22:09:47 2012 - By root -Copyright (C) 2012 by original authors @ fontello.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web/public/resource/fonts/basic.icons.ttf b/web/public/resource/fonts/basic.icons.ttf deleted file mode 100644 index 318a264..0000000 Binary files a/web/public/resource/fonts/basic.icons.ttf and /dev/null differ diff --git a/web/public/resource/fonts/basic.icons.woff b/web/public/resource/fonts/basic.icons.woff deleted file mode 100644 index baba1b5..0000000 Binary files a/web/public/resource/fonts/basic.icons.woff and /dev/null differ diff --git a/web/public/resource/fonts/icons.eot b/web/public/resource/fonts/icons.eot deleted file mode 100644 index 0662cb9..0000000 Binary files a/web/public/resource/fonts/icons.eot and /dev/null differ diff --git a/web/public/resource/fonts/icons.otf b/web/public/resource/fonts/icons.otf deleted file mode 100644 index 7012545..0000000 Binary files a/web/public/resource/fonts/icons.otf and /dev/null differ diff --git a/web/public/resource/fonts/icons.svg b/web/public/resource/fonts/icons.svg deleted file mode 100644 index 2edb4ec..0000000 --- a/web/public/resource/fonts/icons.svg +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/public/resource/fonts/icons.ttf b/web/public/resource/fonts/icons.ttf deleted file mode 100644 index d365924..0000000 Binary files a/web/public/resource/fonts/icons.ttf and /dev/null differ diff --git a/web/public/resource/fonts/icons.woff b/web/public/resource/fonts/icons.woff deleted file mode 100644 index b9bd17e..0000000 Binary files a/web/public/resource/fonts/icons.woff and /dev/null differ diff --git a/web/public/resource/images/arrow-white-l2r.png b/web/public/resource/images/arrow-white-l2r.png deleted file mode 100644 index a51d919..0000000 Binary files a/web/public/resource/images/arrow-white-l2r.png and /dev/null differ diff --git a/web/public/resource/images/avatar-default.gif b/web/public/resource/images/avatar-default.gif deleted file mode 100644 index 1130c84..0000000 Binary files a/web/public/resource/images/avatar-default.gif and /dev/null differ diff --git a/web/public/resource/images/bg-uniform.png b/web/public/resource/images/bg-uniform.png deleted file mode 100644 index 4c28b63..0000000 Binary files a/web/public/resource/images/bg-uniform.png and /dev/null differ diff --git a/web/public/resource/images/devicedomo01.jpg b/web/public/resource/images/devicedomo01.jpg deleted file mode 100644 index db10199..0000000 Binary files a/web/public/resource/images/devicedomo01.jpg and /dev/null differ diff --git a/web/public/resource/images/gopher-avatar.png b/web/public/resource/images/gopher-avatar.png deleted file mode 100644 index 3d03c8b..0000000 Binary files a/web/public/resource/images/gopher-avatar.png and /dev/null differ diff --git a/web/public/resource/images/icon-sprite.png b/web/public/resource/images/icon-sprite.png deleted file mode 100644 index cd8713e..0000000 Binary files a/web/public/resource/images/icon-sprite.png and /dev/null differ diff --git a/web/public/resource/images/icon_search.png b/web/public/resource/images/icon_search.png deleted file mode 100644 index 282bd78..0000000 Binary files a/web/public/resource/images/icon_search.png and /dev/null differ diff --git a/web/public/resource/images/icon_weibo.png b/web/public/resource/images/icon_weibo.png deleted file mode 100644 index b3f365e..0000000 Binary files a/web/public/resource/images/icon_weibo.png and /dev/null differ diff --git a/web/public/resource/images/loader-large-inverted.gif b/web/public/resource/images/loader-large-inverted.gif deleted file mode 100644 index ee5283f..0000000 Binary files a/web/public/resource/images/loader-large-inverted.gif and /dev/null differ diff --git a/web/public/resource/images/loader-large.gif b/web/public/resource/images/loader-large.gif deleted file mode 100644 index 519621c..0000000 Binary files a/web/public/resource/images/loader-large.gif and /dev/null differ diff --git a/web/public/resource/images/loader-medium-inverted.gif b/web/public/resource/images/loader-medium-inverted.gif deleted file mode 100644 index caa3110..0000000 Binary files a/web/public/resource/images/loader-medium-inverted.gif and /dev/null differ diff --git a/web/public/resource/images/loader-medium.gif b/web/public/resource/images/loader-medium.gif deleted file mode 100644 index 386eb5a..0000000 Binary files a/web/public/resource/images/loader-medium.gif and /dev/null differ diff --git a/web/public/resource/images/loader-mini-inverted.gif b/web/public/resource/images/loader-mini-inverted.gif deleted file mode 100644 index c7c95b9..0000000 Binary files a/web/public/resource/images/loader-mini-inverted.gif and /dev/null differ diff --git a/web/public/resource/images/loader-mini.gif b/web/public/resource/images/loader-mini.gif deleted file mode 100644 index 7f3e27c..0000000 Binary files a/web/public/resource/images/loader-mini.gif and /dev/null differ diff --git a/web/public/resource/images/loader-small-inverted.gif b/web/public/resource/images/loader-small-inverted.gif deleted file mode 100644 index bbb0a67..0000000 Binary files a/web/public/resource/images/loader-small-inverted.gif and /dev/null differ diff --git a/web/public/resource/images/loader-small.gif b/web/public/resource/images/loader-small.gif deleted file mode 100644 index 8c9f60e..0000000 Binary files a/web/public/resource/images/loader-small.gif and /dev/null differ diff --git a/web/public/resource/images/logo.png b/web/public/resource/images/logo.png deleted file mode 100644 index 1822ad4..0000000 Binary files a/web/public/resource/images/logo.png and /dev/null differ diff --git a/web/public/resource/images/logo_footer.png b/web/public/resource/images/logo_footer.png deleted file mode 100644 index 96ded19..0000000 Binary files a/web/public/resource/images/logo_footer.png and /dev/null differ diff --git a/web/public/resource/images/navbar_bg.png b/web/public/resource/images/navbar_bg.png deleted file mode 100644 index ed91401..0000000 Binary files a/web/public/resource/images/navbar_bg.png and /dev/null differ diff --git a/web/public/resource/images/photo.jpg b/web/public/resource/images/photo.jpg deleted file mode 100644 index e2e81dc..0000000 Binary files a/web/public/resource/images/photo.jpg and /dev/null differ diff --git a/web/public/resource/images/yeelink-avatar.jpg b/web/public/resource/images/yeelink-avatar.jpg deleted file mode 100644 index fd2cec8..0000000 Binary files a/web/public/resource/images/yeelink-avatar.jpg and /dev/null differ diff --git a/web/public/resource/javascript/ZeroClipboard.swf b/web/public/resource/javascript/ZeroClipboard.swf deleted file mode 100644 index 13bf8e3..0000000 Binary files a/web/public/resource/javascript/ZeroClipboard.swf and /dev/null differ diff --git a/web/public/resource/javascript/alert.js b/web/public/resource/javascript/alert.js deleted file mode 100644 index 0076a69..0000000 --- a/web/public/resource/javascript/alert.js +++ /dev/null @@ -1,78 +0,0 @@ -+function ($) { "use strict"; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.hasClass('alert') ? $this : $this.parent() - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - $parent.trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one($.support.transition.end, removeElement) - .emulateTransitionEnd(150) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - var old = $.fn.alert - - $.fn.alert = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); diff --git a/web/public/resource/javascript/form.min.js b/web/public/resource/javascript/form.min.js deleted file mode 100644 index b6b26ce..0000000 --- a/web/public/resource/javascript/form.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * # Semantic UI 2.1.7 - Form Validation - * http://github.com/semantic-org/semantic-ui/ - * - * - * Copyright 2015 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ -!function(e,t,n,r){"use strict";e.fn.form=function(t){var i,a=e(this),o=a.selector||"",l=(new Date).getTime(),s=[],u=arguments[0],c=arguments[1],f="string"==typeof u,d=[].slice.call(arguments,1);return a.each(function(){var m,p,g,h,v,b,y,x,k,E,w,C,V,R,S,F,A,T,j=e(this),z=this,O=[],D=!1;T={initialize:function(){T.get.settings(),f?(A===r&&T.instantiate(),T.invoke(u)):(T.verbose("Initializing form validation",j,x),T.bindEvents(),T.set.defaults(),T.instantiate())},instantiate:function(){T.verbose("Storing instance of module",T),A=T,j.data(S,T)},destroy:function(){T.verbose("Destroying previous module",A),T.removeEvents(),j.removeData(S)},refresh:function(){T.verbose("Refreshing selector cache"),m=j.find(w.field),p=j.find(w.group),g=j.find(w.message),h=j.find(w.prompt),v=j.find(w.submit),b=j.find(w.clear),y=j.find(w.reset)},submit:function(){T.verbose("Submitting form",j),j.submit()},attachEvents:function(t,n){n=n||"submit",e(t).on("click"+F,function(e){T[n](),e.preventDefault()})},bindEvents:function(){T.verbose("Attaching form events"),j.on("submit"+F,T.validate.form).on("blur"+F,w.field,T.event.field.blur).on("click"+F,w.submit,T.submit).on("click"+F,w.reset,T.reset).on("click"+F,w.clear,T.clear),x.keyboardShortcuts&&j.on("keydown"+F,w.field,T.event.field.keydown),m.each(function(){var t=e(this),n=t.prop("type"),r=T.get.changeEvent(n,t);e(this).on(r+F,T.event.field.change)})},clear:function(){m.each(function(){var t=e(this),n=t.parent(),r=t.closest(p),i=r.find(w.prompt),a=t.data(E.defaultValue)||"",o=n.is(w.uiCheckbox),l=n.is(w.uiDropdown),s=r.hasClass(C.error);s&&(T.verbose("Resetting error on field",r),r.removeClass(C.error),i.remove()),l?(T.verbose("Resetting dropdown value",n,a),n.dropdown("clear")):o?t.prop("checked",!1):(T.verbose("Resetting field value",t,a),t.val(""))})},reset:function(){m.each(function(){var t=e(this),n=t.parent(),i=t.closest(p),a=i.find(w.prompt),o=t.data(E.defaultValue),l=n.is(w.uiCheckbox),s=n.is(w.uiDropdown),u=i.hasClass(C.error);o!==r&&(u&&(T.verbose("Resetting error on field",i),i.removeClass(C.error),a.remove()),s?(T.verbose("Resetting dropdown value",n,o),n.dropdown("restore defaults")):l?(T.verbose("Resetting checkbox value",n,o),t.prop("checked",o)):(T.verbose("Resetting field value",t,o),t.val(o)))})},is:{bracketedRule:function(e){return e.type&&e.type.match(x.regExp.bracket)},valid:function(){var t=!0;return T.verbose("Checking if form is valid"),e.each(k,function(e,n){T.validate.field(n,e)||(t=!1)}),t}},removeEvents:function(){j.off(F),m.off(F),v.off(F),m.off(F)},event:{field:{keydown:function(t){var n=e(this),r=t.which,i={enter:13,escape:27};r==i.escape&&(T.verbose("Escape key pressed blurring field"),n.blur()),!t.ctrlKey&&r==i.enter&&n.is(w.input)&&n.not(w.checkbox).length>0&&(D||(n.one("keyup"+F,T.event.field.keyup),T.submit(),T.debug("Enter pressed on input submitting form")),D=!0)},keyup:function(){D=!1},blur:function(t){var n=e(this),r=n.closest(p),i=T.get.validation(n);r.hasClass(C.error)?(T.debug("Revalidating field",n,i),T.validate.form.call(T,t,!0)):("blur"==x.on||"change"==x.on)&&i&&T.validate.field(i)},change:function(t){var n=e(this),r=n.closest(p);("change"==x.on||r.hasClass(C.error)&&x.revalidate)&&(clearTimeout(T.timer),T.timer=setTimeout(function(){T.debug("Revalidating field",n,T.get.validation(n)),T.validate.form.call(T,t,!0)},x.delay))}}},get:{ancillaryValue:function(e){return e.type&&T.is.bracketedRule(e)?e.type.match(x.regExp.bracket)[1]+"":!1},ruleName:function(e){return T.is.bracketedRule(e)?e.type.replace(e.type.match(x.regExp.bracket)[0],""):e.type},changeEvent:function(e,t){return"checkbox"==e||"radio"==e||"hidden"==e||t.is("select")?"change":T.get.inputEvent()},inputEvent:function(){return n.createElement("input").oninput!==r?"input":n.createElement("input").onpropertychange!==r?"propertychange":"keyup"},prompt:function(e,t){var n,r,i,a=T.get.ruleName(e),o=T.get.ancillaryValue(e),l=e.prompt||x.prompt[a]||x.text.unspecifiedRule,s=-1!==l.search("{value}"),u=-1!==l.search("{name}");return(u||s)&&(r=T.get.field(t.identifier)),s&&(l=l.replace("{value}",r.val())),u&&(n=r.closest(w.group).find("label").eq(0),i=1==n.size()?n.text():r.prop("placeholder")||x.text.unspecifiedField,l=l.replace("{name}",i)),l=l.replace("{identifier}",t.identifier),l=l.replace("{ruleValue}",o),e.prompt||T.verbose("Using default validation prompt for type",l,a),l},settings:function(){if(e.isPlainObject(t)){var n,i=Object.keys(t),a=i.length>0?t[i[0]].identifier!==r&&t[i[0]].rules!==r:!1;a?(x=e.extend(!0,{},e.fn.form.settings,c),k=e.extend({},e.fn.form.settings.defaults,t),T.error(x.error.oldSyntax,z),T.verbose("Extending settings from legacy parameters",k,x)):(t.fields&&(n=Object.keys(t.fields),("string"==typeof t.fields[n[0]]||e.isArray(t.fields[n[0]]))&&e.each(t.fields,function(n,r){"string"==typeof r&&(r=[r]),t.fields[n]={rules:[]},e.each(r,function(e,r){t.fields[n].rules.push({type:r})})})),x=e.extend(!0,{},e.fn.form.settings,t),k=e.extend({},e.fn.form.settings.defaults,x.fields),T.verbose("Extending settings",k,x))}else x=e.fn.form.settings,k=e.fn.form.settings.defaults,T.verbose("Using default form validation",k,x);R=x.namespace,E=x.metadata,w=x.selector,C=x.className,V=x.error,S="module-"+R,F="."+R,A=j.data(S),T.refresh()},field:function(t){return T.verbose("Finding field with identifier",t),m.filter("#"+t).length>0?m.filter("#"+t):m.filter('[name="'+t+'"]').length>0?m.filter('[name="'+t+'"]'):m.filter('[name="'+t+'[]"]').length>0?m.filter('[name="'+t+'[]"]'):m.filter("[data-"+E.validate+'="'+t+'"]').length>0?m.filter("[data-"+E.validate+'="'+t+'"]'):e("")},fields:function(t){var n=e();return e.each(t,function(e,t){n=n.add(T.get.field(t))}),n},validation:function(t){var n,r;return k?(e.each(k,function(e,i){r=i.identifier||e,T.get.field(r)[0]==t[0]&&(i.identifier=r,n=i)}),n||!1):!1},value:function(e){var t,n=[];return n.push(e),t=T.get.values.call(z,n),t[e]},values:function(t){var n=e.isArray(t)?T.get.fields(t):m,r={};return n.each(function(t,n){var i=e(n),a=(i.prop("type"),i.prop("name")),o=i.val(),l=i.is(w.checkbox),s=i.is(w.radio),u=-1!==a.indexOf("[]"),c=l?i.is(":checked"):!1;a&&(u?(a=a.replace("[]",""),r[a]||(r[a]=[]),r[a].push(l?c?o||!0:!1:o)):s?c&&(r[a]=o):r[a]=l?c?o||!0:!1:o)}),r}},has:{field:function(e){return T.verbose("Checking for existence of a field with identifier",e),"string"!=typeof e&&T.error(V.identifier,e),m.filter("#"+e).length>0?!0:m.filter('[name="'+e+'"]').length>0?!0:m.filter("[data-"+E.validate+'="'+e+'"]').length>0?!0:!1}},add:{prompt:function(t,n){var i=T.get.field(t),a=i.closest(p),o=a.children(w.prompt),l=0!==o.length;n="string"==typeof n?[n]:n,T.verbose("Adding field error state",t),a.addClass(C.error),x.inline&&(l||(o=x.templates.prompt(n),o.appendTo(a)),o.html(n[0]),l?T.verbose("Inline errors are disabled, no inline error added",t):x.transition&&e.fn.transition!==r&&j.transition("is supported")?(T.verbose("Displaying error with css transition",x.transition),o.transition(x.transition+" in",x.duration)):(T.verbose("Displaying error with fallback javascript animation"),o.fadeIn(x.duration)))},errors:function(e){T.debug("Adding form error messages",e),T.set.error(),g.html(x.templates.error(e))}},remove:{prompt:function(t){var n=T.get.field(t),i=n.closest(p),a=i.children(w.prompt);i.removeClass(C.error),x.inline&&a.is(":visible")&&(T.verbose("Removing prompt for field",t),x.transition&&e.fn.transition!==r&&j.transition("is supported")?a.transition(x.transition+" out",x.duration,function(){a.remove()}):a.fadeOut(x.duration,function(){a.remove()}))}},set:{success:function(){j.removeClass(C.error).addClass(C.success)},defaults:function(){m.each(function(){var t=e(this),n=t.filter(w.checkbox).length>0,r=n?t.is(":checked"):t.val();t.data(E.defaultValue,r)})},error:function(){j.removeClass(C.success).addClass(C.error)},value:function(e,t){var n={};return n[e]=t,T.set.values.call(z,n)},values:function(t){e.isEmptyObject(t)||e.each(t,function(t,n){var r,i=T.get.field(t),a=i.parent(),o=e.isArray(n),l=a.is(w.uiCheckbox),s=a.is(w.uiDropdown),u=i.is(w.radio)&&l,c=i.length>0;c&&(o&&l?(T.verbose("Selecting multiple",n,i),a.checkbox("uncheck"),e.each(n,function(e,t){r=i.filter('[value="'+t+'"]'),a=r.parent(),r.length>0&&a.checkbox("check")})):u?(T.verbose("Selecting radio value",n,i),i.filter('[value="'+n+'"]').parent(w.uiCheckbox).checkbox("check")):l?(T.verbose("Setting checkbox value",n,a),a.checkbox(n===!0?"check":"uncheck")):s?(T.verbose("Setting dropdown value",n,a),a.dropdown("set selected",n)):(T.verbose("Setting field value",n,i),i.val(n)))})}},validate:{form:function(e,t){var n=T.get.values();if(D)return!1;if(O=[],T.is.valid()){if(T.debug("Form has no validation errors, submitting"),T.set.success(),t!==!0)return x.onSuccess.call(z,e,n)}else if(T.debug("Form has errors"),T.set.error(),x.inline||T.add.errors(O),j.data("moduleApi")!==r&&e.stopImmediatePropagation(),t!==!0)return x.onFailure.call(z,O,n)},field:function(t,n){var i=t.identifier||n,a=T.get.field(i),o=!0,l=[];return t.identifier||(T.debug("Using field name as identifier",i),t.identifier=i),a.prop("disabled")?(T.debug("Field is disabled. Skipping",i),o=!0):t.optional&&""===e.trim(a.val())?(T.debug("Field is optional and empty. Skipping",i),o=!0):t.rules!==r&&e.each(t.rules,function(e,n){T.has.field(i)&&!T.validate.rule(t,n)&&(T.debug("Field is invalid",i,n.type),l.push(T.get.prompt(n,t)),o=!1)}),o?(T.remove.prompt(i,l),x.onValid.call(a),!0):(O=O.concat(l),T.add.prompt(i,l),x.onInvalid.call(a,l),!1)},rule:function(t,n){var i=T.get.field(t.identifier),a=(n.type,i.val()),o=T.get.ancillaryValue(n),l=T.get.ruleName(n),s=x.rules[l];return e.isFunction(s)?(a=a===r||""===a||null===a?"":e.trim(a+""),s.call(i,a,o)):void T.error(V.noRule,l)}},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,x,t);else{if(n===r)return x[t];x[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,T,t);else{if(n===r)return T[t];T[t]=n}},debug:function(){x.debug&&(x.performance?T.performance.log(arguments):(T.debug=Function.prototype.bind.call(console.info,console,x.name+":"),T.debug.apply(console,arguments)))},verbose:function(){x.verbose&&x.debug&&(x.performance?T.performance.log(arguments):(T.verbose=Function.prototype.bind.call(console.info,console,x.name+":"),T.verbose.apply(console,arguments)))},error:function(){T.error=Function.prototype.bind.call(console.error,console,x.name+":"),T.error.apply(console,arguments)},performance:{log:function(e){var t,n,r;x.performance&&(t=(new Date).getTime(),r=l||t,n=t-r,l=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:z,"Execution Time":n})),clearTimeout(T.performance.timer),T.performance.timer=setTimeout(T.performance.display,500)},display:function(){var t=x.name+":",n=0;l=!1,clearTimeout(T.performance.timer),e.each(s,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",o&&(t+=" '"+o+"'"),a.length>1&&(t+=" ("+a.length+")"),(console.group!==r||console.table!==r)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),s=[]}},invoke:function(t,n,a){var o,l,s,u=A;return n=n||d,a=z||a,"string"==typeof t&&u!==r&&(t=t.split(/[\. ]/),o=t.length-1,e.each(t,function(n,i){var a=n!=o?i+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[a])&&n!=o)u=u[a];else{if(u[a]!==r)return l=u[a],!1;if(!e.isPlainObject(u[i])||n==o)return u[i]!==r?(l=u[i],!1):!1;u=u[i]}})),e.isFunction(l)?s=l.apply(a,n):l!==r&&(s=l),e.isArray(i)?i.push(s):i!==r?i=[i,s]:s!==r&&(i=s),l}},T.initialize()}),i!==r?i:this},e.fn.form.settings={name:"Form",namespace:"form",debug:!1,verbose:!1,performance:!0,fields:!1,keyboardShortcuts:!0,on:"submit",inline:!1,delay:200,revalidate:!0,transition:"scale",duration:200,onValid:function(){},onInvalid:function(){},onSuccess:function(){return!0},onFailure:function(){return!1},metadata:{defaultValue:"default",validate:"validate"},regExp:{bracket:/\[(.*)\]/i,decimal:/^\d*(\.)\d+/,email:"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",escape:/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,flags:/^\/(.*)\/(.*)?/,integer:/^\-?\d+$/,number:/^\-?\d*(\.\d+)?$/,url:/(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/i},text:{unspecifiedRule:"Please enter a valid value",unspecifiedField:"This field"},prompt:{empty:"{name} must have a value",checked:"{name} must be checked",email:"{name} must be a valid e-mail",url:"{name} must be a valid url",regExp:"{name} is not formatted correctly",integer:"{name} must be an integer",decimal:"{name} must be a decimal number",number:"{name} must be set to a number",is:'{name} must be "{ruleValue}"',isExactly:'{name} must be exactly "{ruleValue}"',not:'{name} cannot be set to "{ruleValue}"',notExactly:'{name} cannot be set to exactly "{ruleValue}"',contain:'{name} cannot contain "{ruleValue}"',containExactly:'{name} cannot contain exactly "{ruleValue}"',doesntContain:'{name} must contain "{ruleValue}"',doesntContainExactly:'{name} must contain exactly "{ruleValue}"',minLength:"{name} must be at least {ruleValue} characters",length:"{name} must be at least {ruleValue} characters",exactLength:"{name} must be exactly {ruleValue} characters",maxLength:"{name} cannot be longer than {ruleValue} characters",match:"{name} must match {ruleValue} field",different:"{name} must have a different value than {ruleValue} field",creditCard:"{name} must be a valid credit card number",minCount:"{name} must have at least {ruleValue} choices",exactCount:"{name} must have exactly {ruleValue} choices",maxCount:"{name} must have {ruleValue} or less choices"},selector:{checkbox:'input[type="checkbox"], input[type="radio"]',clear:".clear",field:"input, textarea, select",group:".field",input:"input",message:".error.message",prompt:".prompt.label",radio:'input[type="radio"]',reset:'.reset:not([type="reset"])',submit:'.submit:not([type="submit"])',uiCheckbox:".ui.checkbox",uiDropdown:".ui.dropdown"},className:{error:"error",label:"ui prompt label",pressed:"down",success:"success"},error:{identifier:"You must specify a string identifier for each field",method:"The method you called is not defined.",noRule:"There is no rule matching the one you specified",oldSyntax:"Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically."},templates:{error:function(t){var n='",e(n)},prompt:function(t){return e("
").addClass("ui basic red pointing prompt label").html(t[0])}},rules:{empty:function(t){return!(t===r||""===t||e.isArray(t)&&0===t.length)},checked:function(){return e(this).filter(":checked").length>0},email:function(t){var n=new RegExp(e.fn.form.settings.regExp.email,"i");return n.test(t)},url:function(t){return e.fn.form.settings.regExp.url.test(t)},regExp:function(t,n){var r,i=n.match(e.fn.form.settings.regExp.flags);return i&&(n=i.length>=2?i[1]:n,r=i.length>=3?i[2]:""),t.match(new RegExp(n,r))},integer:function(t,n){var i,a,o,l=e.fn.form.settings.regExp.integer;return n&&-1===["",".."].indexOf(n)&&(-1==n.indexOf("..")?l.test(n)&&(i=a=n-0):(o=n.split("..",2),l.test(o[0])&&(i=o[0]-0),l.test(o[1])&&(a=o[1]-0))),l.test(t)&&(i===r||t>=i)&&(a===r||a>=t)},decimal:function(t){return e.fn.form.settings.regExp.decimal.test(t)},number:function(t){return e.fn.form.settings.regExp.number.test(t)},is:function(e,t){return t="string"==typeof t?t.toLowerCase():t,e="string"==typeof e?e.toLowerCase():e,e==t},isExactly:function(e,t){return e==t},not:function(e,t){return e="string"==typeof e?e.toLowerCase():e,t="string"==typeof t?t.toLowerCase():t,e!=t},notExactly:function(e,t){return e!=t},contains:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,"\\$&"),-1!==t.search(new RegExp(n,"i"))},containsExactly:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,"\\$&"),-1!==t.search(new RegExp(n))},doesntContain:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,"\\$&"),-1===t.search(new RegExp(n,"i"))},doesntContainExactly:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,"\\$&"),-1===t.search(new RegExp(n))},minLength:function(e,t){return e!==r?e.length>=t:!1},length:function(e,t){return e!==r?e.length>=t:!1},exactLength:function(e,t){return e!==r?e.length==t:!1},maxLength:function(e,t){return e!==r?e.length<=t:!1},match:function(t,n){{var i;e(this)}return e('[data-validate="'+n+'"]').length>0?i=e('[data-validate="'+n+'"]').val():e("#"+n).length>0?i=e("#"+n).val():e('[name="'+n+'"]').length>0?i=e('[name="'+n+'"]').val():e('[name="'+n+'[]"]').length>0&&(i=e('[name="'+n+'[]"]')),i!==r?t.toString()==i.toString():!1},different:function(t,n){{var i;e(this)}return e('[data-validate="'+n+'"]').length>0?i=e('[data-validate="'+n+'"]').val():e("#"+n).length>0?i=e("#"+n).val():e('[name="'+n+'"]').length>0?i=e('[name="'+n+'"]').val():e('[name="'+n+'[]"]').length>0&&(i=e('[name="'+n+'[]"]')),i!==r?t.toString()!==i.toString():!1},creditCard:function(t,n){var r,i,a={visa:{pattern:/^4/,length:[16]},amex:{pattern:/^3[47]/,length:[15]},mastercard:{pattern:/^5[1-5]/,length:[16]},discover:{pattern:/^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,length:[16]},unionPay:{pattern:/^(62|88)/,length:[16,17,18,19]},jcb:{pattern:/^35(2[89]|[3-8][0-9])/,length:[16]},maestro:{pattern:/^(5018|5020|5038|6304|6759|676[1-3])/,length:[12,13,14,15,16,17,18,19]},dinersClub:{pattern:/^(30[0-5]|^36)/,length:[14]},laser:{pattern:/^(6304|670[69]|6771)/,length:[16,17,18,19]},visaElectron:{pattern:/^(4026|417500|4508|4844|491(3|7))/,length:[16]}},o={},l=!1,s="string"==typeof n?n.split(","):!1;if("string"==typeof t&&0!==t.length){if(s&&(e.each(s,function(n,r){i=a[r],i&&(o={length:-1!==e.inArray(t.length,i.length),pattern:-1!==t.search(i.pattern)},o.length&&o.pattern&&(l=!0))}),!l))return!1;if(r={number:-1!==e.inArray(t.length,a.unionPay.length),pattern:-1!==t.search(a.unionPay.pattern)},r.number&&r.pattern)return!0;for(var u=t.length,c=0,f=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],d=0;u--;)d+=f[c][parseInt(t.charAt(u),10)],c^=1;return d%10===0&&d>0}},minCount:function(e,t){return 0==t?!0:1==t?""!==e:e.split(",").length>=t},exactCount:function(e,t){return 0==t?""===e:1==t?""!==e&&-1===e.search(","):e.split(",").length==t},maxCount:function(e,t){return 0==t?!1:1==t?-1===e.search(","):e.split(",").length<=t}}}}(jQuery,window,document); \ No newline at end of file diff --git a/web/public/resource/javascript/framework.js b/web/public/resource/javascript/framework.js deleted file mode 100644 index c59d007..0000000 --- a/web/public/resource/javascript/framework.js +++ /dev/null @@ -1,11647 +0,0 @@ -/* - * # Semantic - Accordion - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ($, window, document, undefined) { - -$.fn.accordion = function(parameters) { - var - $allModules = $(this), - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.accordion.settings, parameters) - : $.extend({}, $.fn.accordion.settings), - - className = settings.className, - namespace = settings.namespace, - selector = settings.selector, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - moduleSelector = $allModules.selector || '', - - $module = $(this), - $title = $module.find(selector.title), - $content = $module.find(selector.content), - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - initialize: function() { - module.debug('Initializing accordion with bound events', $module); - // initializing - $title - .on('click' + eventNamespace, module.event.click) - ; - module.instantiate(); - }, - - instantiate: function() { - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.debug('Destroying previous accordion for', $module); - $module - .removeData(moduleNamespace) - ; - $title - .off(eventNamespace) - ; - }, - - event: { - click: function() { - module.verbose('Title clicked', this); - var - $activeTitle = $(this), - index = $title.index($activeTitle) - ; - module.toggle(index); - }, - resetStyle: function() { - module.verbose('Resetting styles on element', this); - $(this) - .attr('style', '') - .removeAttr('style') - .children() - .attr('style', '') - .removeAttr('style') - ; - } - }, - - toggle: function(index) { - module.debug('Toggling content content at index', index); - var - $activeTitle = $title.eq(index), - $activeContent = $activeTitle.next($content), - contentIsOpen = $activeContent.is(':visible') - ; - if(contentIsOpen) { - if(settings.collapsible) { - module.close(index); - } - else { - module.debug('Cannot close accordion content collapsing is disabled'); - } - } - else { - module.open(index); - } - }, - - open: function(index) { - var - $activeTitle = $title.eq(index), - $activeContent = $activeTitle.next($content), - $previousTitle = $activeTitle.siblings(selector.title).filter('.' + className.active), - $previousContent = $previousTitle.next($title), - contentIsOpen = ($previousTitle.size() > 0) - ; - if( !$activeContent.is(':animated') ) { - module.debug('Opening accordion content', $activeTitle); - if(settings.exclusive && contentIsOpen) { - $previousTitle - .removeClass(className.active) - ; - $previousContent - .stop() - .children() - .animate({ - opacity: 0 - }, settings.duration, module.event.resetStyle) - .end() - .slideUp(settings.duration , settings.easing, function() { - $previousContent - .removeClass(className.active) - .attr('style', '') - .removeAttr('style') - .children() - .attr('style', '') - .removeAttr('style') - ; - }) - ; - } - $activeTitle - .addClass(className.active) - ; - $activeContent - .stop() - .children() - .attr('style', '') - .removeAttr('style') - .end() - .slideDown(settings.duration, settings.easing, function() { - $activeContent - .addClass(className.active) - .attr('style', '') - .removeAttr('style') - ; - $.proxy(settings.onOpen, $activeContent)(); - $.proxy(settings.onChange, $activeContent)(); - }) - ; - } - }, - - close: function(index) { - var - $activeTitle = $title.eq(index), - $activeContent = $activeTitle.next($content) - ; - module.debug('Closing accordion content', $activeContent); - $activeTitle - .removeClass(className.active) - ; - $activeContent - .removeClass(className.active) - .show() - .stop() - .children() - .animate({ - opacity: 0 - }, settings.duration, module.event.resetStyle) - .end() - .slideUp(settings.duration, settings.easing, function(){ - $activeContent - .attr('style', '') - .removeAttr('style') - ; - $.proxy(settings.onClose, $activeContent)(); - $.proxy(settings.onChange, $activeContent)(); - }) - ; - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - module.debug('Changing internal', name, value); - if(value !== undefined) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else { - module[name] = value; - } - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.accordion.settings = { - name : 'Accordion', - namespace : 'accordion', - - debug : true, - verbose : true, - performance : true, - - exclusive : true, - collapsible : true, - - duration : 400, - easing : 'easeInOutQuint', - - onOpen : function(){}, - onClose : function(){}, - onChange : function(){}, - - error: { - method : 'The method you called is not defined' - }, - - className : { - active : 'active' - }, - - selector : { - title : '.title', - content : '.content' - } - - -}; - -// Adds easing -$.extend( $.easing, { - easeInOutQuint: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; - return c/2*((t-=2)*t*t*t*t + 2) + b; - } -}); - -})( jQuery, window , document ); - - -/* - * # Semantic - API - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - - $.api = $.fn.api = function(parameters) { - - var - settings = $.extend(true, {}, $.api.settings, parameters), - - // if this keyword isn't a jQuery object, create one - context = (typeof this != 'function') - ? this - : $('
'), - // context defines the element used for loading/error state - $context = (settings.stateContext) - ? $(settings.stateContext) - : $(context), - // module is the thing that initiates the api action, can be independent of context - $module = typeof this == 'object' - ? $(context) - : $context, - - element = this, - time = new Date().getTime(), - performance = [], - - moduleSelector = $module.selector || '', - moduleNamespace = settings.namespace + '-module', - - className = settings.className, - metadata = settings.metadata, - error = settings.error, - - instance = $module.data(moduleNamespace), - - query = arguments[0], - methodInvoked = (instance !== undefined && typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - - module, - returnedValue - ; - - module = { - initialize: function() { - var - runSettings, - - loadingTimer = new Date().getTime(), - loadingDelay, - - promise, - url, - - formData = {}, - data, - - ajaxSettings = {}, - xhr - ; - - // serialize parent form if requested! - if(settings.serializeForm && $(this).toJSON() !== undefined) { - formData = module.get.formData(); - module.debug('Adding form data to API Request', formData); - $.extend(true, settings.data, formData); - } - - // let beforeSend change settings object - runSettings = $.proxy(settings.beforeSend, $module)(settings); - - // check for exit conditions - if(runSettings !== undefined && !runSettings) { - module.error(error.beforeSend); - module.reset(); - return; - } - - // get real url from template - url = module.get.url( module.get.templateURL() ); - - // exit conditions reached from missing url parameters - if( !url ) { - module.error(error.missingURL); - module.reset(); - return; - } - - // promise handles notification on api request, so loading min. delay can occur for all notifications - promise = - $.Deferred() - .always(function() { - if(settings.stateContext) { - $context - .removeClass(className.loading) - ; - } - $.proxy(settings.complete, $module)(); - }) - .done(function(response) { - module.debug('API request successful'); - // take a stab at finding success state if json - if(settings.dataType == 'json') { - if (response.error !== undefined) { - $.proxy(settings.failure, $context)(response.error, settings, $module); - } - else if ($.isArray(response.errors)) { - $.proxy(settings.failure, $context)(response.errors[0], settings, $module); - } - else { - $.proxy(settings.success, $context)(response, settings, $module); - } - } - // otherwise - else { - $.proxy(settings.success, $context)(response, settings, $module); - } - }) - .fail(function(xhr, status, httpMessage) { - var - errorMessage = (settings.error[status] !== undefined) - ? settings.error[status] - : httpMessage, - response - ; - // let em know unless request aborted - if(xhr !== undefined) { - // readyState 4 = done, anything less is not really sent - if(xhr.readyState !== undefined && xhr.readyState == 4) { - - // if http status code returned and json returned error, look for it - if( xhr.status != 200 && httpMessage !== undefined && httpMessage !== '') { - module.error(error.statusMessage + httpMessage); - } - else { - if(status == 'error' && settings.dataType == 'json') { - try { - response = $.parseJSON(xhr.responseText); - if(response && response.error !== undefined) { - errorMessage = response.error; - } - } - catch(error) { - module.error(error.JSONParse); - } - } - } - $context - .removeClass(className.loading) - .addClass(className.error) - ; - // show error state only for duration specified in settings - if(settings.errorLength > 0) { - setTimeout(function(){ - $context - .removeClass(className.error) - ; - }, settings.errorLength); - } - module.debug('API Request error:', errorMessage); - $.proxy(settings.failure, $context)(errorMessage, settings, this); - } - else { - module.debug('Request Aborted (Most likely caused by page change)'); - } - } - }) - ; - - // look for params in data - $.extend(true, ajaxSettings, settings, { - success : function(){}, - failure : function(){}, - complete : function(){}, - type : settings.method || settings.type, - data : data, - url : url, - beforeSend : settings.beforeXHR - }); - - if(settings.stateContext) { - $context - .addClass(className.loading) - ; - } - - if(settings.progress) { - module.verbose('Adding progress events'); - $.extend(true, ajaxSettings, { - xhr: function() { - var - xhr = new window.XMLHttpRequest() - ; - xhr.upload.addEventListener('progress', function(event) { - var - percentComplete - ; - if (event.lengthComputable) { - percentComplete = Math.round(event.loaded / event.total * 10000) / 100 + '%'; - $.proxy(settings.progress, $context)(percentComplete, event); - } - }, false); - xhr.addEventListener('progress', function(event) { - var - percentComplete - ; - if (event.lengthComputable) { - percentComplete = Math.round(event.loaded / event.total * 10000) / 100 + '%'; - $.proxy(settings.progress, $context)(percentComplete, event); - } - }, false); - return xhr; - } - }); - } - - module.verbose('Creating AJAX request with settings: ', ajaxSettings); - xhr = - $.ajax(ajaxSettings) - .always(function() { - // calculate if loading time was below minimum threshold - loadingDelay = ( settings.loadingLength - (new Date().getTime() - loadingTimer) ); - settings.loadingDelay = loadingDelay < 0 - ? 0 - : loadingDelay - ; - }) - .done(function(response) { - var - context = this - ; - setTimeout(function(){ - promise.resolveWith(context, [response]); - }, settings.loadingDelay); - }) - .fail(function(xhr, status, httpMessage) { - var - context = this - ; - // page triggers abort on navigation, dont show error - if(status != 'abort') { - setTimeout(function(){ - promise.rejectWith(context, [xhr, status, httpMessage]); - }, settings.loadingDelay); - } - else { - $context - .removeClass(className.error) - .removeClass(className.loading) - ; - } - }) - ; - if(settings.stateContext) { - $module - .data(metadata.promise, promise) - .data(metadata.xhr, xhr) - ; - } - }, - - get: { - formData: function() { - return $module - .closest('form') - .toJSON() - ; - }, - templateURL: function() { - var - action = $module.data(settings.metadata.action) || settings.action || false, - url - ; - if(action) { - module.debug('Creating url for: ', action); - if(settings.api[action] !== undefined) { - url = settings.api[action]; - } - else { - module.error(error.missingAction); - } - } - // override with url if specified - if(settings.url) { - url = settings.url; - module.debug('Getting url', url); - } - return url; - }, - url: function(url, urlData) { - var - urlVariables - ; - if(url) { - urlVariables = url.match(settings.regExpTemplate); - urlData = urlData || settings.urlData; - - if(urlVariables) { - module.debug('Looking for URL variables', urlVariables); - $.each(urlVariables, function(index, templateValue){ - var - term = templateValue.substr( 2, templateValue.length - 3), - termValue = ($.isPlainObject(urlData) && urlData[term] !== undefined) - ? urlData[term] - : ($module.data(term) !== undefined) - ? $module.data(term) - : urlData[term] - ; - module.verbose('Looking for variable', term, $module, $module.data(term), urlData[term]); - // remove optional value - if(termValue === false) { - module.debug('Removing variable from URL', urlVariables); - url = url.replace('/' + templateValue, ''); - } - // undefined condition - else if(termValue === undefined || !termValue) { - module.error(error.missingParameter + term); - url = false; - return false; - } - else { - url = url.replace(templateValue, termValue); - } - }); - } - } - return url; - } - }, - - // reset api request - reset: function() { - $module - .data(metadata.promise, false) - .data(metadata.xhr, false) - ; - $context - .removeClass(className.error) - .removeClass(className.loading) - ; - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - - return (returnedValue !== undefined) - ? returnedValue - : this - ; - }; - - // handle DOM attachment to API functionality - $.fn.apiButton = function(parameters) { - $(this) - .each(function(){ - var - // if only function passed it is success callback - $module = $(this), - selector = $(this).selector || '', - - settings = ( $.isFunction(parameters) ) - ? $.extend(true, {}, $.api.settings, $.fn.apiButton.settings, { stateContext: this, success: parameters }) - : $.extend(true, {}, $.api.settings, $.fn.apiButton.settings, { stateContext: this}, parameters), - module - ; - module = { - initialize: function() { - if(settings.context && selector !== '') { - $(settings.context) - .on(selector, 'click.' + settings.namespace, module.click) - ; - } - else { - $module - .on('click.' + settings.namespace, module.click) - ; - } - }, - click: function() { - if(!settings.filter || $(this).filter(settings.filter).size() === 0) { - $.proxy( $.api, this )(settings); - } - } - }; - module.initialize(); - }) - ; - return this; - }; - - $.api.settings = { - - name : 'API', - namespace : 'api', - - debug : true, - verbose : true, - performance : true, - - api : {}, - - beforeSend : function(settings) { - return settings; - }, - beforeXHR : function(xhr) {}, - success : function(response) {}, - complete : function(response) {}, - failure : function(errorCode) {}, - progress : false, - - error : { - missingAction : 'API action used but no url was defined', - missingURL : 'URL not specified for the API action', - missingParameter : 'Missing an essential URL parameter: ', - - timeout : 'Your request timed out', - error : 'There was an error with your request', - parseError : 'There was an error parsing your request', - JSONParse : 'JSON could not be parsed during error handling', - statusMessage : 'Server gave an error: ', - beforeSend : 'The before send function has aborted the request', - exitConditions : 'API Request Aborted. Exit conditions met' - }, - - className: { - loading : 'loading', - error : 'error' - }, - - metadata: { - action : 'action', - promise : 'promise', - xhr : 'xhr' - }, - - regExpTemplate: /\{\$([A-z]+)\}/g, - - action : false, - url : false, - urlData : false, - serializeForm : false, - - stateContext : false, - - method : 'get', - data : {}, - dataType : 'json', - cache : true, - - loadingLength : 200, - errorLength : 2000 - - }; - - $.fn.apiButton.settings = { - filter : '.disabled, .loading', - context : false, - stateContext : false - }; - -})( jQuery, window , document ); -/* - * # Semantic - Colorize - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - - $.fn.colorize = function(parameters) { - var - settings = $.extend(true, {}, $.fn.colorize.settings, parameters), - // hoist arguments - moduleArguments = arguments || false - ; - $(this) - .each(function(instanceIndex) { - - var - $module = $(this), - - mainCanvas = $('')[0], - imageCanvas = $('')[0], - overlayCanvas = $('')[0], - - backgroundImage = new Image(), - - // defs - mainContext, - imageContext, - overlayContext, - - image, - imageName, - - width, - height, - - // shortucts - colors = settings.colors, - paths = settings.paths, - namespace = settings.namespace, - error = settings.error, - - // boilerplate - instance = $module.data('module-' + namespace), - module - ; - - module = { - - checkPreconditions: function() { - module.debug('Checking pre-conditions'); - - if( !$.isPlainObject(colors) || $.isEmptyObject(colors) ) { - module.error(error.undefinedColors); - return false; - } - return true; - }, - - async: function(callback) { - if(settings.async) { - setTimeout(callback, 0); - } - else { - callback(); - } - }, - - getMetadata: function() { - module.debug('Grabbing metadata'); - image = $module.data('image') || settings.image || undefined; - imageName = $module.data('name') || settings.name || instanceIndex; - width = settings.width || $module.width(); - height = settings.height || $module.height(); - if(width === 0 || height === 0) { - module.error(error.undefinedSize); - } - }, - - initialize: function() { - module.debug('Initializing with colors', colors); - if( module.checkPreconditions() ) { - - module.async(function() { - module.getMetadata(); - module.canvas.create(); - - module.draw.image(function() { - module.draw.colors(); - module.canvas.merge(); - }); - $module - .data('module-' + namespace, module) - ; - }); - } - }, - - redraw: function() { - module.debug('Redrawing image'); - module.async(function() { - module.canvas.clear(); - module.draw.colors(); - module.canvas.merge(); - }); - }, - - change: { - color: function(colorName, color) { - module.debug('Changing color', colorName); - if(colors[colorName] === undefined) { - module.error(error.missingColor); - return false; - } - colors[colorName] = color; - module.redraw(); - } - }, - - canvas: { - create: function() { - module.debug('Creating canvases'); - - mainCanvas.width = width; - mainCanvas.height = height; - imageCanvas.width = width; - imageCanvas.height = height; - overlayCanvas.width = width; - overlayCanvas.height = height; - - mainContext = mainCanvas.getContext('2d'); - imageContext = imageCanvas.getContext('2d'); - overlayContext = overlayCanvas.getContext('2d'); - - $module - .append( mainCanvas ) - ; - mainContext = $module.children('canvas')[0].getContext('2d'); - }, - clear: function(context) { - module.debug('Clearing canvas'); - overlayContext.fillStyle = '#FFFFFF'; - overlayContext.fillRect(0, 0, width, height); - }, - merge: function() { - if( !$.isFunction(mainContext.blendOnto) ) { - module.error(error.missingPlugin); - return; - } - mainContext.putImageData( imageContext.getImageData(0, 0, width, height), 0, 0); - overlayContext.blendOnto(mainContext, 'multiply'); - } - }, - - draw: { - - image: function(callback) { - module.debug('Drawing image'); - callback = callback || function(){}; - if(image) { - backgroundImage.src = image; - backgroundImage.onload = function() { - imageContext.drawImage(backgroundImage, 0, 0); - callback(); - }; - } - else { - module.error(error.noImage); - callback(); - } - }, - - colors: function() { - module.debug('Drawing color overlays', colors); - $.each(colors, function(colorName, color) { - settings.onDraw(overlayContext, imageName, colorName, color); - }); - } - - }, - - debug: function(message, variableName) { - if(settings.debug) { - if(variableName !== undefined) { - console.info(settings.name + ': ' + message, variableName); - } - else { - console.info(settings.name + ': ' + message); - } - } - }, - error: function(errorMessage) { - console.warn(settings.name + ': ' + errorMessage); - }, - invoke: function(methodName, context, methodArguments) { - var - method - ; - methodArguments = methodArguments || Array.prototype.slice.call( arguments, 2 ); - - if(typeof methodName == 'string' && instance !== undefined) { - methodName = methodName.split('.'); - $.each(methodName, function(index, name) { - if( $.isPlainObject( instance[name] ) ) { - instance = instance[name]; - return true; - } - else if( $.isFunction( instance[name] ) ) { - method = instance[name]; - return true; - } - module.error(settings.error.method); - return false; - }); - } - return ( $.isFunction( method ) ) - ? method.apply(context, methodArguments) - : false - ; - } - - }; - if(instance !== undefined && moduleArguments) { - // simpler than invoke realizing to invoke itself (and losing scope due prototype.call() - if(moduleArguments[0] == 'invoke') { - moduleArguments = Array.prototype.slice.call( moduleArguments, 1 ); - } - return module.invoke(moduleArguments[0], this, Array.prototype.slice.call( moduleArguments, 1 ) ); - } - // initializing - module.initialize(); - }) - ; - return this; - }; - - $.fn.colorize.settings = { - name : 'Image Colorizer', - debug : true, - namespace : 'colorize', - - onDraw : function(overlayContext, imageName, colorName, color) {}, - - // whether to block execution while updating canvas - async : true, - // object containing names and default values of color regions - colors : {}, - - metadata: { - image : 'image', - name : 'name' - }, - - error: { - noImage : 'No tracing image specified', - undefinedColors : 'No default colors specified.', - missingColor : 'Attempted to change color that does not exist', - missingPlugin : 'Blend onto plug-in must be included', - undefinedHeight : 'The width or height of image canvas could not be automatically determined. Please specify a height.' - } - - }; - -})( jQuery, window , document ); - -/* - * # Semantic - Form Validation - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.form = function(fields, parameters) { - var - $allModules = $(this), - - settings = $.extend(true, {}, $.fn.form.settings, parameters), - validation = $.extend({}, $.fn.form.settings.defaults, fields), - - namespace = settings.namespace, - metadata = settings.metadata, - selector = settings.selector, - className = settings.className, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - $allModules - .each(function() { - var - $module = $(this), - $field = $(this).find(selector.field), - $group = $(this).find(selector.group), - $message = $(this).find(selector.message), - $prompt = $(this).find(selector.prompt), - $submit = $(this).find(selector.submit), - - formErrors = [], - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - initialize: function() { - module.verbose('Initializing form validation', $module, validation, settings); - if(settings.keyboardShortcuts) { - $field - .on('keydown' + eventNamespace, module.event.field.keydown) - ; - } - $module - .on('submit' + eventNamespace, module.validate.form) - ; - $field - .on('blur' + eventNamespace, module.event.field.blur) - ; - $submit - .on('click' + eventNamespace, module.submit) - ; - $field - .on(module.get.changeEvent() + eventNamespace, module.event.field.change) - ; - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.verbose('Destroying previous module', instance); - $module - .off(eventNamespace) - .removeData(moduleNamespace) - ; - }, - - refresh: function() { - module.verbose('Refreshing selector cache'); - $field = $module.find(selector.field); - }, - - submit: function() { - module.verbose('Submitting form', $module); - $module - .submit() - ; - }, - - event: { - field: { - keydown: function(event) { - var - $field = $(this), - key = event.which, - keyCode = { - enter : 13, - escape : 27 - } - ; - if( key == keyCode.escape) { - module.verbose('Escape key pressed blurring field'); - $field - .blur() - ; - } - if(!event.ctrlKey && key == keyCode.enter && $field.is(selector.input) ) { - module.debug('Enter key pressed, submitting form'); - $submit - .addClass(className.down) - ; - $field - .one('keyup' + eventNamespace, module.event.field.keyup) - ; - event.preventDefault(); - return false; - } - }, - keyup: function() { - module.verbose('Doing keyboard shortcut form submit'); - $submit.removeClass(className.down); - module.submit(); - }, - blur: function() { - var - $field = $(this), - $fieldGroup = $field.closest($group) - ; - if( $fieldGroup.hasClass(className.error) ) { - module.debug('Revalidating field', $field, module.get.validation($field)); - module.validate.field( module.get.validation($field) ); - } - else if(settings.on == 'blur' || settings.on == 'change') { - module.validate.field( module.get.validation($field) ); - } - }, - change: function() { - var - $field = $(this), - $fieldGroup = $field.closest($group) - ; - if( $fieldGroup.hasClass(className.error) ) { - module.debug('Revalidating field', $field, module.get.validation($field)); - module.validate.field( module.get.validation($field) ); - } - else if(settings.on == 'change') { - module.validate.field( module.get.validation($field) ); - } - } - } - - }, - - get: { - changeEvent: function() { - return (document.createElement('input').oninput !== undefined) - ? 'input' - : (document.createElement('input').onpropertychange !== undefined) - ? 'propertychange' - : 'keyup' - ; - }, - field: function(identifier) { - module.verbose('Finding field with identifier', identifier); - if( $field.filter('#' + identifier).size() > 0 ) { - return $field.filter('#' + identifier); - } - else if( $field.filter('[name="' + identifier +'"]').size() > 0 ) { - return $field.filter('[name="' + identifier +'"]'); - } - else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').size() > 0 ) { - return $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]'); - } - return $(''); - }, - validation: function($field) { - var - rules - ; - $.each(validation, function(fieldName, field) { - if( module.get.field(field.identifier).get(0) == $field.get(0) ) { - rules = field; - } - }); - return rules || false; - } - }, - - has: { - - field: function(identifier) { - module.verbose('Checking for existence of a field with identifier', identifier); - if( $field.filter('#' + identifier).size() > 0 ) { - return true; - } - else if( $field.filter('[name="' + identifier +'"]').size() > 0 ) { - return true; - } - else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').size() > 0 ) { - return true; - } - return false; - } - - }, - - add: { - prompt: function(field, errors) { - var - $field = module.get.field(field.identifier), - $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt), - promptExists = ($prompt.size() !== 0) - ; - module.verbose('Adding inline error', field); - $fieldGroup - .addClass(className.error) - ; - if(settings.inline) { - if(!promptExists) { - $prompt = settings.templates.prompt(errors); - $prompt - .appendTo($fieldGroup) - ; - } - $prompt - .html(errors[0]) - ; - if(!promptExists) { - if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { - module.verbose('Displaying error with css transition', settings.transition); - $prompt.transition(settings.transition + ' in', settings.duration); - } - else { - module.verbose('Displaying error with fallback javascript animation'); - $prompt - .fadeIn(settings.duration) - ; - } - } - } - }, - errors: function(errors) { - module.debug('Adding form error messages', errors); - $message - .html( settings.templates.error(errors) ) - ; - } - }, - - remove: { - prompt: function(field) { - var - $field = module.get.field(field.identifier), - $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt) - ; - $fieldGroup - .removeClass(className.error) - ; - if(settings.inline && $prompt.is(':visible')) { - module.verbose('Removing prompt for field', field); - if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { - $prompt.transition(settings.transition + ' out', settings.duration, function() { - $prompt.remove(); - }); - } - else { - $prompt - .fadeOut(settings.duration, function(){ - $prompt.remove(); - }) - ; - } - } - } - }, - - validate: { - - form: function(event) { - var - allValid = true - ; - // reset errors - formErrors = []; - $.each(validation, function(fieldName, field) { - if( !( module.validate.field(field) ) ) { - allValid = false; - } - }); - if(allValid) { - module.debug('Form has no validation errors, submitting'); - $module - .removeClass(className.error) - .addClass(className.success) - ; - $.proxy(settings.onSuccess, this)(event); - } - else { - module.debug('Form has errors'); - $module.addClass(className.error); - if(!settings.inline) { - module.add.errors(formErrors); - } - return $.proxy(settings.onFailure, this)(formErrors); - } - }, - - // takes a validation object and returns whether field passes validation - field: function(field) { - var - $field = module.get.field(field.identifier), - fieldValid = true, - fieldErrors = [] - ; - if(field.rules !== undefined) { - $.each(field.rules, function(index, rule) { - if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) { - module.debug('Field is invalid', field.identifier, rule.type); - fieldErrors.push(rule.prompt); - fieldValid = false; - } - }); - } - if(fieldValid) { - module.remove.prompt(field, fieldErrors); - $.proxy(settings.onValid, $field)(); - } - else { - formErrors = formErrors.concat(fieldErrors); - module.add.prompt(field, fieldErrors); - $.proxy(settings.onInvalid, $field)(fieldErrors); - return false; - } - return true; - }, - - // takes validation rule and returns whether field passes rule - rule: function(field, validation) { - var - $field = module.get.field(field.identifier), - type = validation.type, - value = $field.val() + '', - - bracketRegExp = /\[(.*?)\]/i, - bracket = bracketRegExp.exec(type), - isValid = true, - ancillary, - functionType - ; - // if bracket notation is used, pass in extra parameters - if(bracket !== undefined && bracket !== null) { - ancillary = '' + bracket[1]; - functionType = type.replace(bracket[0], ''); - isValid = $.proxy(settings.rules[functionType], $module)(value, ancillary); - } - // normal notation - else { - isValid = $.proxy(settings.rules[type], $field)(value); - } - return isValid; - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.form.settings = { - - name : 'Form', - namespace : 'form', - - debug : true, - verbose : true, - performance : true, - - - keyboardShortcuts : true, - on : 'submit', - inline : false, - - transition : 'scale', - duration : 150, - - - onValid : function() {}, - onInvalid : function() {}, - onSuccess : function() { return true; }, - onFailure : function() { return false; }, - - metadata : { - validate: 'validate' - }, - - selector : { - message : '.error.message', - field : 'input, textarea, select', - group : '.field', - input : 'input', - prompt : '.prompt', - submit : '.submit' - }, - - className : { - error : 'error', - success : 'success', - down : 'down', - label : 'ui label prompt' - }, - - // errors - error: { - method : 'The method you called is not defined.' - }, - - - - templates: { - error: function(errors) { - var - html = '
    ' - ; - $.each(errors, function(index, value) { - html += '
  • ' + value + '
  • '; - }); - html += '
'; - return $(html); - }, - prompt: function(errors) { - return $('
') - .addClass('ui red pointing prompt label') - .html(errors[0]) - ; - } - }, - - rules: { - checked: function() { - return ($(this).filter(':checked').size() > 0); - }, - empty: function(value) { - return !(value === undefined || '' === value); - }, - email: function(value){ - var - emailRegExp = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?") - ; - return emailRegExp.test(value); - }, - length: function(value, requiredLength) { - return (value !== undefined) - ? (value.length >= requiredLength) - : false - ; - }, - not: function(value, notValue) { - return (value != notValue); - }, - contains: function(value, text) { - text = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - return (value.search(text) !== -1); - }, - is: function(value, text) { - return (value == text); - }, - maxLength: function(value, maxLength) { - return (value !== undefined) - ? (value.length <= maxLength) - : false - ; - }, - match: function(value, fieldIdentifier) { - // use either id or name of field - var - $form = $(this), - matchingValue - ; - if($form.find('#' + fieldIdentifier).size() > 0) { - matchingValue = $form.find('#' + fieldIdentifier).val(); - } - else if($form.find('[name=' + fieldIdentifier +']').size() > 0) { - matchingValue = $form.find('[name=' + fieldIdentifier + ']').val(); - } - else if( $form.find('[data-validate="'+ fieldIdentifier +'"]').size() > 0 ) { - matchingValue = $form.find('[data-validate="'+ fieldIdentifier +'"]').val(); - } - return (matchingValue !== undefined) - ? ( value.toString() == matchingValue.toString() ) - : false - ; - }, - url: function(value) { - var - urlRegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ - ; - return urlRegExp.test(value); - } - } - -}; - -})( jQuery, window , document ); - -/* - * # Semantic - State - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.state = function(parameters) { - var - $allModules = $(this), - settings = $.extend(true, {}, $.fn.state.settings, parameters), - - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - - // shortcuts - error = settings.error, - metadata = settings.metadata, - className = settings.className, - namespace = settings.namespace, - states = settings.states, - text = settings.text, - - eventNamespace = '.' + namespace, - moduleNamespace = namespace + '-module', - - - returnedValue - ; - $allModules - .each(function() { - var - $module = $(this), - - element = this, - instance = $module.data(moduleNamespace), - - module - ; - module = { - - initialize: function() { - module.verbose('Initializing module'); - - // allow module to guess desired state based on element - if(settings.automatic) { - module.add.defaults(); - } - - // bind events with delegated events - if(settings.context && moduleSelector !== '') { - if( module.allows('hover') ) { - $(element, settings.context) - .on(moduleSelector, 'mouseenter' + eventNamespace, module.enable.hover) - .on(moduleSelector, 'mouseleave' + eventNamespace, module.disable.hover) - ; - } - if( module.allows('down') ) { - $(element, settings.context) - .on(moduleSelector, 'mousedown' + eventNamespace, module.enable.down) - .on(moduleSelector, 'mouseup' + eventNamespace, module.disable.down) - ; - } - if( module.allows('focus') ) { - $(element, settings.context) - .on(moduleSelector, 'focus' + eventNamespace, module.enable.focus) - .on(moduleSelector, 'blur' + eventNamespace, module.disable.focus) - ; - } - $(settings.context) - .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text) - .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text) - .on(moduleSelector, 'click' + eventNamespace, module.toggle.state) - ; - } - else { - if( module.allows('hover') ) { - $module - .on('mouseenter' + eventNamespace, module.enable.hover) - .on('mouseleave' + eventNamespace, module.disable.hover) - ; - } - if( module.allows('down') ) { - $module - .on('mousedown' + eventNamespace, module.enable.down) - .on('mouseup' + eventNamespace, module.disable.down) - ; - } - if( module.allows('focus') ) { - $module - .on('focus' + eventNamespace, module.enable.focus) - .on('blur' + eventNamespace, module.disable.focus) - ; - } - $module - .on('mouseenter' + eventNamespace, module.change.text) - .on('mouseleave' + eventNamespace, module.reset.text) - .on('click' + eventNamespace, module.toggle.state) - ; - } - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.verbose('Destroying previous module', instance); - $module - .off(eventNamespace) - .removeData(moduleNamespace) - ; - }, - - refresh: function() { - module.verbose('Refreshing selector cache'); - $module = $(element); - }, - - add: { - defaults: function() { - var - userStates = parameters && $.isPlainObject(parameters.states) - ? parameters.states - : {} - ; - $.each(settings.defaults, function(type, typeStates) { - if( module.is[type] !== undefined && module.is[type]() ) { - module.verbose('Adding default states', type, element); - $.extend(settings.states, typeStates, userStates); - } - }); - } - }, - - is: { - - active: function() { - return $module.hasClass(className.active); - }, - loading: function() { - return $module.hasClass(className.loading); - }, - inactive: function() { - return !( $module.hasClass(className.active) ); - }, - - enabled: function() { - return !( $module.is(settings.filter.active) ); - }, - disabled: function() { - return ( $module.is(settings.filter.active) ); - }, - textEnabled: function() { - return !( $module.is(settings.filter.text) ); - }, - - // definitions for automatic type detection - button: function() { - return $module.is('.button:not(a, .submit)'); - }, - input: function() { - return $module.is('input'); - } - }, - - allow: function(state) { - module.debug('Now allowing state', state); - states[state] = true; - }, - disallow: function(state) { - module.debug('No longer allowing', state); - states[state] = false; - }, - - allows: function(state) { - return states[state] || false; - }, - - enable: { - state: function(state) { - if(module.allows(state)) { - $module.addClass( className[state] ); - } - }, - // convenience - focus: function() { - $module.addClass(className.focus); - }, - hover: function() { - $module.addClass(className.hover); - }, - down: function() { - $module.addClass(className.down); - }, - }, - - disable: { - state: function(state) { - if(module.allows(state)) { - $module.removeClass( className[state] ); - } - }, - // convenience - focus: function() { - $module.removeClass(className.focus); - }, - hover: function() { - $module.removeClass(className.hover); - }, - down: function() { - $module.removeClass(className.down); - }, - }, - - toggle: { - state: function() { - var - apiRequest = $module.data(metadata.promise) - ; - if( module.allows('active') && module.is.enabled() ) { - module.refresh(); - if(apiRequest !== undefined) { - module.listenTo(apiRequest); - } - else { - module.change.state(); - } - } - } - }, - - listenTo: function(apiRequest) { - module.debug('API request detected, waiting for state signal', apiRequest); - if(apiRequest) { - if(text.loading) { - module.update.text(text.loading); - } - $.when(apiRequest) - .then(function() { - if(apiRequest.state() == 'resolved') { - module.debug('API request succeeded'); - settings.activateTest = function(){ return true; }; - settings.deactivateTest = function(){ return true; }; - } - else { - module.debug('API request failed'); - settings.activateTest = function(){ return false; }; - settings.deactivateTest = function(){ return false; }; - } - module.change.state(); - }) - ; - } - // xhr exists but set to false, beforeSend killed the xhr - else { - settings.activateTest = function(){ return false; }; - settings.deactivateTest = function(){ return false; }; - } - }, - - // checks whether active/inactive state can be given - change: { - - state: function() { - module.debug('Determining state change direction'); - // inactive to active change - if( module.is.inactive() ) { - module.activate(); - } - else { - module.deactivate(); - } - if(settings.sync) { - module.sync(); - } - $.proxy(settings.onChange, element)(); - }, - - text: function() { - if( module.is.textEnabled() ) { - if( module.is.active() ) { - if(text.hover) { - module.verbose('Changing text to hover text', text.hover); - module.update.text(text.hover); - } - else if(text.disable) { - module.verbose('Changing text to disable text', text.disable); - module.update.text(text.disable); - } - } - else { - if(text.hover) { - module.verbose('Changing text to hover text', text.disable); - module.update.text(text.hover); - } - else if(text.enable){ - module.verbose('Changing text to enable text', text.enable); - module.update.text(text.enable); - } - } - } - } - - }, - - activate: function() { - if( $.proxy(settings.activateTest, element)() ) { - module.debug('Setting state to active'); - $module - .addClass(className.active) - ; - module.update.text(text.active); - } - $.proxy(settings.onActivate, element)(); - }, - - deactivate: function() { - if($.proxy(settings.deactivateTest, element)() ) { - module.debug('Setting state to inactive'); - $module - .removeClass(className.active) - ; - module.update.text(text.inactive); - } - $.proxy(settings.onDeactivate, element)(); - }, - - sync: function() { - module.verbose('Syncing other buttons to current state'); - if( module.is.active() ) { - $allModules - .not($module) - .state('activate'); - } - else { - $allModules - .not($module) - .state('deactivate') - ; - } - }, - - get: { - text: function() { - return (settings.selector.text) - ? $module.find(settings.selector.text).text() - : $module.html() - ; - }, - textFor: function(state) { - return text[state] || false; - } - }, - - flash: { - text: function(text, duration) { - var - previousText = module.get.text() - ; - module.debug('Flashing text message', text, duration); - text = text || settings.text.flash; - duration = duration || settings.flashDuration; - module.update.text(text); - setTimeout(function(){ - module.update.text(previousText); - }, duration); - } - }, - - reset: { - // on mouseout sets text to previous value - text: function() { - var - activeText = text.active || $module.data(metadata.storedText), - inactiveText = text.inactive || $module.data(metadata.storedText) - ; - if( module.is.textEnabled() ) { - if( module.is.active() && activeText) { - module.verbose('Resetting active text', activeText); - module.update.text(activeText); - } - else if(inactiveText) { - module.verbose('Resetting inactive text', activeText); - module.update.text(inactiveText); - } - } - } - }, - - update: { - text: function(text) { - var - currentText = module.get.text() - ; - if(text && text !== currentText) { - module.debug('Updating text', text); - if(settings.selector.text) { - $module - .data(metadata.storedText, text) - .find(settings.selector.text) - .text(text) - ; - } - else { - $module - .data(metadata.storedText, text) - .html(text) - ; - } - } - else { - module.debug('Text is already sane, ignoring update', text); - } - } - }, - - setting: function(name, value) { - module.debug('Changing setting', name, value); - if(value !== undefined) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else { - settings[name] = value; - } - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - module.debug('Changing internal', name, value); - if(value !== undefined) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else { - module[name] = value; - } - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.state.settings = { - - // module info - name : 'State', - - // debug output - debug : true, - - // verbose debug output - verbose : true, - - // namespace for events - namespace : 'state', - - // debug data includes performance - performance: true, - - // callback occurs on state change - onActivate : function() {}, - onDeactivate : function() {}, - onChange : function() {}, - - // state test functions - activateTest : function() { return true; }, - deactivateTest : function() { return true; }, - - // whether to automatically map default states - automatic : true, - - // activate / deactivate changes all elements instantiated at same time - sync : false, - - // default flash text duration, used for temporarily changing text of an element - flashDuration : 3000, - - // selector filter - filter : { - text : '.loading, .disabled', - active : '.disabled' - }, - - context : false, - - // error - error: { - method : 'The method you called is not defined.' - }, - - // metadata - metadata: { - promise : 'promise', - storedText : 'stored-text' - }, - - // change class on state - className: { - focus : 'focus', - hover : 'hover', - down : 'down', - active : 'active', - loading : 'loading' - }, - - selector: { - // selector for text node - text: false - }, - - defaults : { - input: { - hover : true, - focus : true, - down : true, - loading : false, - active : false - }, - button: { - hover : true, - focus : false, - down : true, - active : true, - loading : true - } - }, - - states : { - hover : true, - focus : true, - down : true, - loading : false, - active : false - }, - - text : { - flash : false, - hover : false, - active : false, - inactive : false, - enable : false, - disable : false - } - -}; - - - -})( jQuery, window , document ); - -/* - * # Semantic - Chatroom - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ($, window, document, undefined) { - -$.fn.chatroom = function(parameters) { - var - $allModules = $(this), - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - $(this) - .each(function() { - var - settings = $.extend(true, {}, $.fn.chatroom.settings, parameters), - - className = settings.className, - namespace = settings.namespace, - selector = settings.selector, - error = settings.error, - - $module = $(this), - - $expandButton = $module.find(selector.expandButton), - $userListButton = $module.find(selector.userListButton), - - $userList = $module.find(selector.userList), - $room = $module.find(selector.room), - $userCount = $module.find(selector.userCount), - - $log = $module.find(selector.log), - $message = $module.find(selector.message), - - $messageInput = $module.find(selector.messageInput), - $messageButton = $module.find(selector.messageButton), - - instance = $module.data('module'), - element = this, - - html = '', - users = {}, - - channel, - loggedInUser, - - message, - count, - - height, - - pusher, - module - ; - - module = { - - width: { - log : $log.width(), - userList : $userList.outerWidth() - }, - - initialize: function() { - - // check error conditions - if(Pusher === undefined) { - module.error(error.pusher); - } - if(settings.key === undefined || settings.channelName === undefined) { - module.error(error.key); - return false; - } - else if( !(settings.endpoint.message || settings.endpoint.authentication) ) { - module.error(error.endpoint); - return false; - } - - // define pusher - pusher = new Pusher(settings.key); - Pusher.channel_auth_endpoint = settings.endpoint.authentication; - - channel = pusher.subscribe(settings.channelName); - - channel.bind('pusher:subscription_succeeded', module.user.list.create); - channel.bind('pusher:subscription_error', module.error); - channel.bind('pusher:member_added', module.user.joined); - channel.bind('pusher:member_removed', module.user.left); - channel.bind('update_messages', module.message.receive); - - $.each(settings.customEvents, function(label, value) { - channel.bind(label, value); - }); - - // bind module events - $userListButton - .on('click.' + namespace, module.event.toggleUserList) - ; - $expandButton - .on('click.' + namespace, module.event.toggleExpand) - ; - $messageInput - .on('keydown.' + namespace, module.event.input.keydown) - .on('keyup.' + namespace, module.event.input.keyup) - ; - $messageButton - .on('mouseenter.' + namespace, module.event.hover) - .on('mouseleave.' + namespace, module.event.hover) - .on('click.' + namespace, module.event.submit) - ; - // scroll to bottom of chat log - $log - .animate({ - scrollTop: $log.prop('scrollHeight') - }, 400) - ; - $module - .data('module', module) - .addClass(className.loading) - ; - - }, - - // refresh module - refresh: function() { - // reset width calculations - $userListButton - .removeClass(className.active) - ; - module.width = { - log : $log.width(), - userList : $userList.outerWidth() - }; - if( $userListButton.hasClass(className.active) ) { - module.user.list.hide(); - } - $module.data('module', module); - }, - - user: { - - updateCount: function() { - if(settings.userCount) { - users = $module.data('users'); - count = 0; - $.each(users, function() { - count++; - }); - $userCount - .html( settings.templates.userCount(count) ) - ; - } - }, - - // add user to user list - joined: function(member) { - users = $module.data('users'); - if(member.id != 'anonymous' && users[ member.id ] === undefined ) { - users[ member.id ] = member.info; - if(settings.randomColor && member.info.color === undefined) { - member.info.color = settings.templates.color(member.id); - } - html = settings.templates.userList(member.info); - if(member.info.isAdmin) { - $(html) - .prependTo($userList) - ; - } - else { - $(html) - .appendTo($userList) - ; - } - if(settings.partingMessages) { - $log - .append( settings.templates.joined(member.info) ) - ; - module.message.scroll.test(); - } - module.user.updateCount(); - } - }, - - // remove user from user list - left: function(member) { - users = $module.data('users'); - if(member !== undefined && member.id !== 'anonymous') { - delete users[ member.id ]; - $module - .data('users', users) - ; - $userList - .find('[data-id='+ member.id + ']') - .remove() - ; - if(settings.partingMessages) { - $log - .append( settings.templates.left(member.info) ) - ; - module.message.scroll.test(); - } - module.user.updateCount(); - } - }, - - list: { - - // receives list of members and generates user list - create: function(members) { - users = {}; - members.each(function(member) { - if(member.id !== 'anonymous' && member.id !== 'undefined') { - if(settings.randomColor && member.info.color === undefined) { - member.info.color = settings.templates.color(member.id); - } - // sort list with admin first - html = (member.info.isAdmin) - ? settings.templates.userList(member.info) + html - : html + settings.templates.userList(member.info) - ; - users[ member.id ] = member.info; - } - }); - $module - .data('users', users) - .data('user', users[members.me.id] ) - .removeClass(className.loading) - ; - $userList - .html(html) - ; - module.user.updateCount(); - $.proxy(settings.onJoin, $userList.children())(); - }, - - // shows user list - show: function() { - $log - .animate({ - width: (module.width.log - module.width.userList) - }, { - duration : settings.speed, - easing : settings.easing, - complete : module.message.scroll.move - }) - ; - }, - - // hides user list - hide: function() { - $log - .stop() - .animate({ - width: (module.width.log) - }, { - duration : settings.speed, - easing : settings.easing, - complete : module.message.scroll.move - }) - ; - } - - } - - }, - - message: { - - // handles scrolling of chat log - scroll: { - test: function() { - height = $log.prop('scrollHeight') - $log.height(); - if( Math.abs($log.scrollTop() - height) < settings.scrollArea) { - module.message.scroll.move(); - } - }, - - move: function() { - height = $log.prop('scrollHeight') - $log.height(); - $log - .scrollTop(height) - ; - } - }, - - // sends chat message - send: function(message) { - if( !module.utils.emptyString(message) ) { - $.api({ - url : settings.endpoint.message, - method : 'POST', - data : { - 'message': { - content : message, - timestamp : new Date().getTime() - } - } - }); - } - }, - - // receives chat response and processes - receive: function(response) { - message = response.data; - users = $module.data('users'); - loggedInUser = $module.data('user'); - if(users[ message.userID] !== undefined) { - // logged in user's messages already pushed instantly - if(loggedInUser === undefined || loggedInUser.id != message.userID) { - message.user = users[ message.userID ]; - module.message.display(message); - } - } - }, - - // displays message in chat log - display: function(message) { - $log - .append( settings.templates.message(message) ) - ; - module.message.scroll.test(); - $.proxy(settings.onMessage, $log.children().last() )(); - } - - }, - - expand: function() { - $module - .addClass(className.expand) - ; - $.proxy(settings.onExpand, $module )(); - module.refresh(); - }, - - contract: function() { - $module - .removeClass(className.expand) - ; - $.proxy(settings.onContract, $module )(); - module.refresh(); - }, - - event: { - - input: { - - keydown: function(event) { - if(event.which == 13) { - $messageButton - .addClass(className.down) - ; - } - }, - - keyup: function(event) { - if(event.which == 13) { - $messageButton - .removeClass(className.down) - ; - module.event.submit(); - } - } - - }, - - // handles message form submit - submit: function() { - var - message = $messageInput.val(), - loggedInUser = $module.data('user') - ; - if(loggedInUser !== undefined && !module.utils.emptyString(message)) { - module.message.send(message); - // display immediately - module.message.display({ - user: loggedInUser, - text: message - }); - module.message.scroll.move(); - $messageInput - .val('') - ; - - } - }, - - // handles button click on expand button - toggleExpand: function() { - if( !$module.hasClass(className.expand) ) { - $expandButton - .addClass(className.active) - ; - module.expand(); - } - else { - $expandButton - .removeClass(className.active) - ; - module.contract(); - } - }, - - // handles button click on user list button - toggleUserList: function() { - if( !$log.is(':animated') ) { - if( !$userListButton.hasClass(className.active) ) { - $userListButton - .addClass(className.active) - ; - module.user.list.show(); - } - else { - $userListButton - .removeClass('active') - ; - module.user.list.hide(); - } - } - - } - }, - - utils: { - - emptyString: function(string) { - if(typeof string == 'string') { - return (string.search(/\S/) == -1); - } - return false; - } - - }, - - setting: function(name, value) { - if(value !== undefined) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else { - settings[name] = value; - } - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - } - else { - module.error(error.method, query); - } - }); - } - if ( $.isFunction( found ) ) { - return found.apply(context, passedArguments); - } - return found || false; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) -; - - return (returnedValue) - ? returnedValue - : this - ; -}; - - $.fn.chatroom.settings = { - - name : 'Chat', - debug : false, - namespace : 'chat', - - channel : 'present-chat', - - onJoin : function(){}, - onMessage : function(){}, - onExpand : function(){}, - onContract : function(){}, - - customEvents : {}, - - partingMessages : false, - userCount : true, - randomColor : true, - - speed : 300, - easing : 'easeOutQuint', - - // pixels from bottom of chat log that should trigger auto scroll to bottom - scrollArea : 9999, - - endpoint : { - message : false, - authentication : false - }, - - error: { - method : 'The method you called is not defined', - endpoint : 'Please define a message and authentication endpoint.', - key : 'You must specify a pusher key and channel.', - pusher : 'You must include the Pusher library.' - }, - - className : { - expand : 'expand', - active : 'active', - hover : 'hover', - down : 'down', - loading : 'loading' - }, - - selector : { - userCount : '.actions .message', - userListButton : '.actions .list.button', - expandButton : '.actions .expand.button', - room : '.room', - userList : '.room .list', - log : '.room .log', - message : '.room .log .message', - author : '.room log .message .author', - messageInput : '.talk input', - messageButton : '.talk .send.button' - }, - - templates: { - - userCount: function(number) { - return number + ' users in chat'; - }, - - color: function(userID) { - var - colors = [ - '#000000', - '#333333', - '#666666', - '#999999', - '#CC9999', - '#CC6666', - '#CC3333', - '#993333', - '#663333', - '#CC6633', - '#CC9966', - '#CC9933', - '#999966', - '#CCCC66', - '#99CC66', - '#669933', - '#669966', - '#33A3CC', - '#336633', - '#33CCCC', - '#339999', - '#336666', - '#336699', - '#6666CC', - '#9966CC', - '#333399', - '#663366', - '#996699', - '#993366', - '#CC6699' - ] - ; - return colors[ Math.floor( Math.random() * colors.length) ]; - }, - - message: function(message) { - var - html = '' - ; - if(message.user.isAdmin) { - message.user.color = '#55356A'; - html += '
'; - html += ''; - } - /* - else if(message.user.isPro) { - html += '
'; - html += ''; - } - */ - else { - html += '
'; - } - html += '

'; - if(message.user.color !== undefined) { - html += '' + message.user.name + ': '; - } - else { - html += '' + message.user.name + ': '; - } - html += '' - + message.text - + '

' - + '
' - ; - return html; - }, - - joined: function(member) { - return (typeof member.name !== undefined) - ? '
' + member.name + ' has joined the chat.
' - : false - ; - }, - left: function(member) { - return (typeof member.name !== undefined) - ? '
' + member.name + ' has left the chat.
' - : false - ; - }, - - userList: function(member) { - var - html = '' - ; - if(member.isAdmin) { - member.color = '#55356A'; - } - html += '' - + '
' - + '
' - + ' ' - + '
' - ; - if(member.color !== undefined) { - html += '

' + member.name + '

'; - } - else { - html += '

' + member.name + '

'; - } - html += '
'; - return html; - } - - } - - }; - -})( jQuery, window , document ); - -/* - * # Semantic - Checkbox - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.checkbox = function(parameters) { - var - $allModules = $(this), - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - - $allModules - .each(function() { - var - settings = $.extend(true, {}, $.fn.checkbox.settings, parameters), - - className = settings.className, - namespace = settings.namespace, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - - $module = $(this), - $label = $(this).next(settings.selector.label).first(), - $input = $(this).find(settings.selector.input), - - selector = $module.selector || '', - instance = $module.data(moduleNamespace), - - element = this, - module - ; - - module = { - - initialize: function() { - module.verbose('Initializing checkbox', settings); - if(settings.context && selector !== '') { - module.verbose('Adding delegated events'); - $(element, settings.context) - .on(selector, 'click' + eventNamespace, module.toggle) - .on(selector + ' + ' + settings.selector.label, 'click' + eventNamespace, module.toggle) - ; - } - else { - $module - .on('click' + eventNamespace, module.toggle) - .data(moduleNamespace, module) - ; - $label - .on('click' + eventNamespace, module.toggle) - ; - } - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.verbose('Destroying previous module'); - $module - .off(eventNamespace) - .removeData(moduleNamespace) - ; - }, - - is: { - radio: function() { - return $module.hasClass(className.radio); - }, - enabled: function() { - return $input.prop('checked') !== undefined && $input.prop('checked'); - }, - disabled: function() { - return !module.is.enabled(); - } - }, - - can: { - disable: function() { - return (typeof settings.required === 'boolean') - ? settings.required - : !module.is.radio() - ; - } - }, - - enable: function() { - module.debug('Enabling checkbox', $input); - $input - .prop('checked', true) - ; - $.proxy(settings.onChange, $input.get())(); - $.proxy(settings.onEnable, $input.get())(); - }, - - disable: function() { - module.debug('Disabling checkbox'); - $input - .prop('checked', false) - ; - $.proxy(settings.onChange, $input.get())(); - $.proxy(settings.onDisable, $input.get())(); - }, - - toggle: function(event) { - module.verbose('Determining new checkbox state'); - if( module.is.disabled() ) { - module.enable(); - } - else if( module.is.enabled() && module.can.disable() ) { - module.disable(); - } - }, - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.checkbox.settings = { - - name : 'Checkbox', - namespace : 'checkbox', - - verbose : true, - debug : true, - performance : true, - - // delegated event context - context : false, - required : 'auto', - - onChange : function(){}, - onEnable : function(){}, - onDisable : function(){}, - - error : { - method : 'The method you called is not defined.' - }, - - selector : { - input : 'input[type=checkbox], input[type=radio]', - label : 'label' - }, - - className : { - radio : 'radio' - } - -}; - -})( jQuery, window , document ); - -/* - * # Semantic - Dimmer - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.dimmer = function(parameters) { - var - $allModules = $(this), - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - - returnedValue - ; - - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.dimmer.settings, parameters) - : $.extend({}, $.fn.dimmer.settings), - - selector = settings.selector, - namespace = settings.namespace, - className = settings.className, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - moduleSelector = $allModules.selector || '', - - clickEvent = ('ontouchstart' in document.documentElement) - ? 'touchstart' - : 'click', - - $module = $(this), - $dimmer, - $dimmable, - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - preinitialize: function() { - if( module.is.dimmer() ) { - $dimmable = $module.parent(); - $dimmer = $module; - } - else { - $dimmable = $module; - if( module.has.dimmer() ) { - $dimmer = $dimmable.children(selector.dimmer).first(); - } - else { - $dimmer = module.create(); - } - } - }, - - initialize: function() { - module.debug('Initializing dimmer', settings); - if(settings.on == 'hover') { - $dimmable - .on('mouseenter' + eventNamespace, module.show) - .on('mouseleave' + eventNamespace, module.hide) - ; - } - else if(settings.on == 'click') { - $dimmable - .on(clickEvent + eventNamespace, module.toggle) - ; - } - - if( module.is.page() ) { - module.debug('Setting as a page dimmer', $dimmable); - module.set.pageDimmer(); - } - - if(settings.closable) { - module.verbose('Adding dimmer close event', $dimmer); - $dimmer - .on(clickEvent + eventNamespace, module.event.click) - ; - } - module.set.dimmable(); - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, instance) - ; - }, - - destroy: function() { - module.verbose('Destroying previous module', $dimmer); - $module - .removeData(moduleNamespace) - ; - $dimmable - .off(eventNamespace) - ; - $dimmer - .off(eventNamespace) - ; - }, - - event: { - - click: function(event) { - module.verbose('Determining if event occured on dimmer', event); - if( $dimmer.find(event.target).size() === 0 || $(event.target).is(selector.content) ) { - module.hide(); - event.stopImmediatePropagation(); - } - } - - }, - - addContent: function(element) { - var - $content = $(element).detach() - ; - module.debug('Add content to dimmer', $content); - if($content.parent()[0] !== $dimmer[0]) { - $dimmer.append($content); - } - }, - - create: function() { - return $( settings.template.dimmer() ).appendTo($dimmable); - }, - - animate: { - show: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - module.set.dimmed(); - if(settings.useCSS && $.fn.transition !== undefined && $module.transition('is supported')) { - $dimmer - .transition({ - animation : settings.transition + ' in', - queue : true, - duration : module.get.duration(), - complete : function() { - module.set.active(); - callback(); - } - }) - ; - } - else { - module.verbose('Showing dimmer animation with javascript'); - $dimmer - .stop() - .css({ - opacity : 0, - width : '100%', - height : '100%' - }) - .fadeTo(module.get.duration(), 1, function() { - $dimmer.removeAttr('style'); - module.set.active(); - callback(); - }) - ; - } - }, - hide: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - if(settings.useCSS && $.fn.transition !== undefined && $module.transition('is supported')) { - module.verbose('Hiding dimmer with css'); - $dimmer - .transition({ - animation : settings.transition + ' out', - duration : module.get.duration(), - queue : true, - complete : function() { - module.remove.dimmed(); - module.remove.active(); - callback(); - } - }) - ; - } - else { - module.verbose('Hiding dimmer with javascript'); - $dimmer - .stop() - .fadeOut(module.get.duration(), function() { - $dimmer.removeAttr('style'); - module.remove.dimmed(); - module.remove.active(); - callback(); - }) - ; - } - } - }, - - get: { - dimmer: function() { - return $dimmer; - }, - duration: function() { - if(typeof settings.duration == 'object') { - if( module.is.active() ) { - return settings.duration.hide; - } - else { - return settings.duration.show; - } - } - return settings.duration; - } - }, - - has: { - dimmer: function() { - return ( $module.children(selector.dimmer).size() > 0 ); - } - }, - - is: { - active: function() { - return $dimmer.hasClass(className.active); - }, - animating: function() { - return ( $dimmer.is(':animated') || $dimmer.hasClass(className.transition) ); - }, - dimmer: function() { - return $module.is(selector.dimmer); - }, - dimmable: function() { - return $module.is(selector.dimmable); - }, - dimmed: function() { - return $dimmable.hasClass(className.dimmed); - }, - disabled: function() { - return $dimmable.hasClass(className.disabled); - }, - enabled: function() { - return !module.is.disabled(); - }, - page: function () { - return $dimmable.is('body'); - }, - pageDimmer: function() { - return $dimmer.hasClass(className.pageDimmer); - } - }, - - can: { - show: function() { - return !$dimmer.hasClass(className.disabled); - } - }, - - set: { - active: function() { - module.set.dimmed(); - $dimmer - .removeClass(className.transition) - .addClass(className.active) - ; - }, - dimmable: function() { - $dimmable.addClass(className.dimmable); - }, - dimmed: function() { - $dimmable.addClass(className.dimmed); - }, - pageDimmer: function() { - $dimmer.addClass(className.pageDimmer); - }, - disabled: function() { - $dimmer.addClass(className.disabled); - } - }, - - remove: { - active: function() { - $dimmer - .removeClass(className.transition) - .removeClass(className.active) - ; - }, - dimmed: function() { - $dimmable.removeClass(className.dimmed); - }, - disabled: function() { - $dimmer.removeClass(className.disabled); - } - }, - - show: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - module.debug('Showing dimmer', $dimmer, settings); - if( !module.is.active() && module.is.enabled() ) { - module.animate.show(callback); - $.proxy(settings.onShow, element)(); - $.proxy(settings.onChange, element)(); - } - else { - module.debug('Dimmer is already shown or disabled'); - } - }, - - hide: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - if( module.is.active() || module.is.animating() ) { - module.debug('Hiding dimmer', $dimmer); - module.animate.hide(callback); - $.proxy(settings.onHide, element)(); - $.proxy(settings.onChange, element)(); - } - else { - module.debug('Dimmer is not visible'); - } - }, - - toggle: function() { - module.verbose('Toggling dimmer visibility', $dimmer); - if( !module.is.dimmed() ) { - module.show(); - } - else { - module.hide(); - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - module.preinitialize(); - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.dimmer.settings = { - - name : 'Dimmer', - namespace : 'dimmer', - - debug : true, - verbose : true, - performance : true, - - transition : 'fade', - useCSS : true, - on : false, - closable : true, - - duration : { - show : 500, - hide : 500 - }, - - onChange : function(){}, - onShow : function(){}, - onHide : function(){}, - - error : { - method : 'The method you called is not defined.' - }, - - selector: { - dimmable : '.ui.dimmable', - dimmer : '.ui.dimmer', - content : '.ui.dimmer > .content, .ui.dimmer > .content > .center' - }, - - template: { - dimmer: function() { - return $('
').attr('class', 'ui dimmer'); - } - }, - - className : { - active : 'active', - dimmable : 'ui dimmable', - dimmed : 'dimmed', - disabled : 'disabled', - pageDimmer : 'page', - hide : 'hide', - show : 'show', - transition : 'transition' - } - -}; - -})( jQuery, window , document ); -/* - * # Semantic - Dropdown - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ -;(function ( $, window, document, undefined ) { - -$.fn.dropdown = function(parameters) { - var - $allModules = $(this), - $document = $(document), - - moduleSelector = $allModules.selector || '', - - hasTouch = ('ontouchstart' in document.documentElement), - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.dropdown.settings, parameters) - : $.extend({}, $.fn.dropdown.settings), - - className = settings.className, - metadata = settings.metadata, - namespace = settings.namespace, - selector = settings.selector, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - - $module = $(this), - $item = $module.find(selector.item), - $text = $module.find(selector.text), - $input = $module.find(selector.input), - - $menu = $module.children(selector.menu), - - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - initialize: function() { - module.debug('Initializing dropdown', settings); - - module.set.selected(); - - if(hasTouch) { - module.bind.touchEvents(); - } - // no use detecting mouse events because touch devices emulate them - module.bind.mouseEvents(); - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of dropdown', module); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.verbose('Destroying previous dropdown for', $module); - $item - .off(eventNamespace) - ; - $module - .off(eventNamespace) - .removeData(moduleNamespace) - ; - }, - - bind: { - touchEvents: function() { - module.debug('Touch device detected binding touch events'); - $module - .on('touchstart' + eventNamespace, module.event.test.toggle) - ; - $item - .on('touchstart' + eventNamespace, module.event.item.mouseenter) - .on('touchstart' + eventNamespace, module.event.item.click) - ; - }, - mouseEvents: function() { - module.verbose('Mouse detected binding mouse events'); - if(settings.on == 'click') { - $module - .on('click' + eventNamespace, module.event.test.toggle) - ; - } - else if(settings.on == 'hover') { - $module - .on('mouseenter' + eventNamespace, module.delay.show) - .on('mouseleave' + eventNamespace, module.delay.hide) - ; - } - else { - $module - .on(settings.on + eventNamespace, module.toggle) - ; - } - $item - .on('mouseenter' + eventNamespace, module.event.item.mouseenter) - .on('mouseleave' + eventNamespace, module.event.item.mouseleave) - .on('click' + eventNamespace, module.event.item.click) - ; - }, - intent: function() { - module.verbose('Binding hide intent event to document'); - if(hasTouch) { - $document - .on('touchstart' + eventNamespace, module.event.test.touch) - .on('touchmove' + eventNamespace, module.event.test.touch) - ; - } - $document - .on('click' + eventNamespace, module.event.test.hide) - ; - } - }, - - unbind: { - intent: function() { - module.verbose('Removing hide intent event from document'); - if(hasTouch) { - $document - .off('touchstart' + eventNamespace) - ; - } - $document - .off('click' + eventNamespace) - ; - } - }, - - event: { - test: { - toggle: function(event) { - if( module.determine.intent(event, module.toggle) ) { - event.preventDefault(); - } - }, - touch: function(event) { - module.determine.intent(event, function() { - if(event.type == 'touchstart') { - module.timer = setTimeout(module.hide, settings.delay.touch); - } - else if(event.type == 'touchmove') { - clearTimeout(module.timer); - } - }); - event.stopPropagation(); - }, - hide: function(event) { - module.determine.intent(event, module.hide); - } - }, - - item: { - - mouseenter: function(event) { - var - $currentMenu = $(this).find(selector.menu), - $otherMenus = $(this).siblings(selector.item).children(selector.menu) - ; - if( $currentMenu.size() > 0 ) { - clearTimeout(module.itemTimer); - module.itemTimer = setTimeout(function() { - module.animate.hide(false, $otherMenus); - module.verbose('Showing sub-menu', $currentMenu); - module.animate.show(false, $currentMenu); - }, settings.delay.show * 2); - event.preventDefault(); - } - }, - - mouseleave: function(event) { - var - $currentMenu = $(this).find(selector.menu) - ; - if($currentMenu.size() > 0) { - clearTimeout(module.itemTimer); - module.itemTimer = setTimeout(function() { - module.verbose('Hiding sub-menu', $currentMenu); - module.animate.hide(false, $currentMenu); - }, settings.delay.hide); - } - }, - - click: function (event) { - var - $choice = $(this), - text = ( $choice.data(metadata.text) !== undefined ) - ? $choice.data(metadata.text) - : $choice.text(), - value = ( $choice.data(metadata.value) !== undefined) - ? $choice.data(metadata.value) - : text.toLowerCase() - ; - if( $choice.find(selector.menu).size() === 0 ) { - module.determine.selectAction(text, value); - $.proxy(settings.onChange, element)(value, text); - } - } - - }, - - resetStyle: function() { - $(this).removeAttr('style'); - } - - }, - - determine: { - selectAction: function(text, value) { - module.verbose('Determining action', settings.action); - if( $.isFunction( module.action[settings.action] ) ) { - module.verbose('Triggering preset action', settings.action, text, value); - module.action[ settings.action ](text, value); - } - else if( $.isFunction(settings.action) ) { - module.verbose('Triggering user action', settings.action, text, value); - settings.action(text, value); - } - else { - module.error(error.action, settings.action); - } - }, - intent: function(event, callback) { - module.debug('Determining whether event occurred in dropdown', event.target); - callback = callback || function(){}; - if( $(event.target).closest($menu).size() === 0 ) { - module.verbose('Triggering event', callback); - callback(); - return true; - } - else { - module.verbose('Event occurred in dropdown, canceling callback'); - return false; - } - } - }, - - action: { - - nothing: function() {}, - - hide: function() { - module.hide(); - }, - - activate: function(text, value) { - value = (value !== undefined) - ? value - : text - ; - module.set.selected(value); - module.set.value(value); - module.hide(); - }, - - /* Deprecated */ - auto: function(text, value) { - value = (value !== undefined) - ? value - : text - ; - module.set.selected(value); - module.set.value(value); - module.hide(); - }, - - /* Deprecated */ - changeText: function(text, value) { - value = (value !== undefined) - ? value - : text - ; - module.set.selected(value); - module.hide(); - }, - - /* Deprecated */ - updateForm: function(text, value) { - value = (value !== undefined) - ? value - : text - ; - module.set.selected(value); - module.set.value(value); - module.hide(); - } - - }, - - get: { - text: function() { - return $text.text(); - }, - value: function() { - return $input.val(); - }, - item: function(value) { - var - $selectedItem - ; - value = (value !== undefined) - ? value - : ( module.get.value() !== undefined) - ? module.get.value() - : module.get.text() - ; - if(value) { - $item - .each(function() { - var - $choice = $(this), - optionText = ( $choice.data(metadata.text) !== undefined ) - ? $choice.data(metadata.text) - : $choice.text(), - optionValue = ( $choice.data(metadata.value) !== undefined ) - ? $choice.data(metadata.value) - : optionText.toLowerCase() - ; - if( optionValue == value || optionText == value ) { - $selectedItem = $(this); - return false; - } - }) - ; - } - else { - value = module.get.text(); - } - return $selectedItem || false; - } - }, - - set: { - text: function(text) { - module.debug('Changing text', text, $text); - $text.removeClass(className.placeholder); - $text.text(text); - }, - value: function(value) { - module.debug('Adding selected value to hidden input', value, $input); - $input.val(value); - }, - active: function() { - $module.addClass(className.active); - }, - visible: function() { - $module.addClass(className.visible); - }, - selected: function(value) { - var - $selectedItem = module.get.item(value), - selectedText - ; - if($selectedItem) { - module.debug('Setting selected menu item to', $selectedItem); - selectedText = ($selectedItem.data(metadata.text) !== undefined) - ? $selectedItem.data(metadata.text) - : $selectedItem.text() - ; - $item - .removeClass(className.active) - ; - $selectedItem - .addClass(className.active) - ; - module.set.text(selectedText); - } - } - }, - - remove: { - active: function() { - $module.removeClass(className.active); - }, - visible: function() { - $module.removeClass(className.visible); - } - }, - - is: { - selection: function() { - return $module.hasClass(className.selection); - }, - animated: function($subMenu) { - return ($subMenu) - ? $subMenu.is(':animated') || $subMenu.transition('is animating') - : $menu.is(':animated') || $menu.transition('is animating') - ; - }, - visible: function($subMenu) { - return ($subMenu) - ? $subMenu.is(':visible') - : $menu.is(':visible') - ; - }, - hidden: function($subMenu) { - return ($subMenu) - ? $subMenu.is(':not(:visible)') - : $menu.is(':not(:visible)') - ; - } - }, - - can: { - click: function() { - return (hasTouch || settings.on == 'click'); - }, - show: function() { - return !$module.hasClass(className.disabled); - } - }, - - animate: { - show: function(callback, $subMenu) { - var - $currentMenu = $subMenu || $menu - ; - callback = callback || function(){}; - if( module.is.hidden($currentMenu) ) { - module.verbose('Doing menu show animation', $currentMenu); - if(settings.transition == 'none') { - callback(); - } - else if($.fn.transition !== undefined && $module.transition('is supported')) { - $currentMenu.transition({ - animation : settings.transition + ' in', - duration : settings.duration, - complete : callback, - queue : false - }); - } - else if(settings.transition == 'slide down') { - $currentMenu - .hide() - .clearQueue() - .children() - .clearQueue() - .css('opacity', 0) - .delay(50) - .animate({ - opacity : 1 - }, settings.duration, 'easeOutQuad', module.event.resetStyle) - .end() - .slideDown(100, 'easeOutQuad', function() { - $.proxy(module.event.resetStyle, this)(); - callback(); - }) - ; - } - else if(settings.transition == 'fade') { - $currentMenu - .hide() - .clearQueue() - .fadeIn(settings.duration, function() { - $.proxy(module.event.resetStyle, this)(); - callback(); - }) - ; - } - else { - module.error(error.transition, settings.transition); - } - } - }, - hide: function(callback, $subMenu) { - var - $currentMenu = $subMenu || $menu - ; - callback = callback || function(){}; - if(module.is.visible($currentMenu) ) { - module.verbose('Doing menu hide animation', $currentMenu); - if($.fn.transition !== undefined && $module.transition('is supported')) { - $currentMenu.transition({ - animation : settings.transition + ' out', - duration : settings.duration, - complete : callback, - queue : false - }); - } - else if(settings.transition == 'none') { - callback(); - } - else if(settings.transition == 'slide down') { - $currentMenu - .show() - .clearQueue() - .children() - .clearQueue() - .css('opacity', 1) - .animate({ - opacity : 0 - }, 100, 'easeOutQuad', module.event.resetStyle) - .end() - .delay(50) - .slideUp(100, 'easeOutQuad', function() { - $.proxy(module.event.resetStyle, this)(); - callback(); - }) - ; - } - else if(settings.transition == 'fade') { - $currentMenu - .show() - .clearQueue() - .fadeOut(150, function() { - $.proxy(module.event.resetStyle, this)(); - callback(); - }) - ; - } - else { - module.error(error.transition); - } - } - } - }, - - show: function() { - module.debug('Checking if dropdown can show'); - if( module.is.hidden() ) { - module.hideOthers(); - module.set.active(); - module.animate.show(function() { - if( module.can.click() ) { - module.bind.intent(); - } - module.set.visible(); - }); - $.proxy(settings.onShow, element)(); - } - }, - - hide: function() { - if( !module.is.animated() && module.is.visible() ) { - module.debug('Hiding dropdown'); - if( module.can.click() ) { - module.unbind.intent(); - } - module.remove.active(); - module.animate.hide(module.remove.visible); - $.proxy(settings.onHide, element)(); - } - }, - - delay: { - show: function() { - module.verbose('Delaying show event to ensure user intent'); - clearTimeout(module.timer); - module.timer = setTimeout(module.show, settings.delay.show); - }, - hide: function() { - module.verbose('Delaying hide event to ensure user intent'); - clearTimeout(module.timer); - module.timer = setTimeout(module.hide, settings.delay.hide); - } - }, - - hideOthers: function() { - module.verbose('Finding other dropdowns to hide'); - $allModules - .not($module) - .has(selector.menu + ':visible') - .dropdown('hide') - ; - }, - - toggle: function() { - module.verbose('Toggling menu visibility'); - if( module.is.hidden() ) { - module.show(); - } - else { - module.hide(); - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue) - ? returnedValue - : this - ; -}; - -$.fn.dropdown.settings = { - - name : 'Dropdown', - namespace : 'dropdown', - - verbose : true, - debug : true, - performance : true, - - on : 'click', - action : 'activate', - - delay: { - show : 200, - hide : 300, - touch : 50 - }, - - transition : 'slide down', - duration : 250, - - onChange : function(value, text){}, - onShow : function(){}, - onHide : function(){}, - - error : { - action : 'You called a dropdown action that was not defined', - method : 'The method you called is not defined.', - transition : 'The requested transition was not found' - }, - - metadata: { - text : 'text', - value : 'value' - }, - - selector : { - menu : '.menu', - item : '.menu > .item', - text : '> .text', - input : '> input[type="hidden"]' - }, - - className : { - active : 'active', - placeholder : 'default', - disabled : 'disabled', - visible : 'visible', - selection : 'selection' - } - -}; - -})( jQuery, window , document ); -/* - * # Semantic - Modal - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.modal = function(parameters) { - var - $allModules = $(this), - $window = $(window), - $document = $(document), - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - - returnedValue - ; - - - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.modal.settings, parameters) - : $.extend({}, $.fn.modal.settings), - - selector = settings.selector, - className = settings.className, - namespace = settings.namespace, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - moduleSelector = $allModules.selector || '', - - $module = $(this), - $context = $(settings.context), - $close = $module.find(selector.close), - - $allModals, - $otherModals, - $focusedElement, - $dimmable, - $dimmer, - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - initialize: function() { - module.verbose('Initializing dimmer', $context); - - if(typeof $.fn.dimmer === undefined) { - module.error(error.dimmer); - return; - } - $dimmable = $context - .dimmer({ - closable : false, - useCSS : module.is.modernBrowser(), - show : settings.duration * 0.9, - hide : settings.duration * 1.1 - }) - .dimmer('add content', $module) - ; - $dimmer = $dimmable - .dimmer('get dimmer') - ; - - $otherModals = $module.siblings(selector.modal); - $allModals = $otherModals.add($module); - - module.verbose('Attaching close events', $close); - $close - .on('click' + eventNamespace, module.event.close) - ; - $window - .on('resize' + eventNamespace, function() { - module.event.debounce(module.refresh, 50); - }) - ; - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of modal'); - instance = module; - $module - .data(moduleNamespace, instance) - ; - }, - - destroy: function() { - module.verbose('Destroying previous modal'); - $module - .removeData(moduleNamespace) - .off(eventNamespace) - ; - $close - .off(eventNamespace) - ; - $context - .dimmer('destroy') - ; - }, - - refresh: function() { - module.remove.scrolling(); - module.cacheSizes(); - module.set.type(); - module.set.position(); - }, - - attachEvents: function(selector, event) { - var - $toggle = $(selector) - ; - event = $.isFunction(module[event]) - ? module[event] - : module.toggle - ; - if($toggle.size() > 0) { - module.debug('Attaching modal events to element', selector, event); - $toggle - .off(eventNamespace) - .on('click' + eventNamespace, event) - ; - } - else { - module.error(error.notFound); - } - }, - - event: { - close: function() { - module.verbose('Closing element pressed'); - if( $(this).is(selector.approve) ) { - if($.proxy(settings.onApprove, element)() !== false) { - module.hide(); - } - else { - module.verbose('Approve callback returned false cancelling hide'); - } - } - else if( $(this).is(selector.deny) ) { - if($.proxy(settings.onDeny, element)() !== false) { - module.hide(); - } - else { - module.verbose('Deny callback returned false cancelling hide'); - } - } - else { - module.hide(); - } - }, - click: function(event) { - if( $(event.target).closest(selector.modal).size() === 0 ) { - module.debug('Dimmer clicked, hiding all modals'); - module.hideAll(); - event.stopImmediatePropagation(); - } - }, - debounce: function(method, delay) { - clearTimeout(module.timer); - module.timer = setTimeout(method, delay); - }, - keyboard: function(event) { - var - keyCode = event.which, - escapeKey = 27 - ; - if(keyCode == escapeKey) { - if(settings.closable) { - module.debug('Escape key pressed hiding modal'); - module.hide(); - } - else { - module.debug('Escape key pressed, but closable is set to false'); - } - event.preventDefault(); - } - }, - resize: function() { - if( $dimmable.dimmer('is active') ) { - module.refresh(); - } - } - }, - - toggle: function() { - if( module.is.active() ) { - module.hide(); - } - else { - module.show(); - } - }, - - show: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - module.showDimmer(); - module.showModal(callback); - }, - - showModal: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - if( !module.is.active() ) { - module.debug('Showing modal'); - module.cacheSizes(); - module.set.position(); - module.set.type(); - - if( $otherModals.filter(':visible').size() > 0 ) { - module.debug('Other modals visible, queueing show animation'); - module.hideOthers(module.showModal); - } - else { - if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { - $module - .transition(settings.transition + ' in', settings.duration, function() { - module.set.active(); - callback(); - }) - ; - } - else { - $module - .fadeIn(settings.duration, settings.easing, function() { - module.set.active(); - callback(); - }) - ; - } - $.proxy(settings.onShow, element)(); - } - } - else { - module.debug('Modal is already visible'); - } - }, - - showDimmer: function() { - if( !$dimmable.dimmer('is active') ) { - module.debug('Showing dimmer'); - $dimmable.dimmer('show'); - } - else { - module.debug('Dimmer already visible'); - } - }, - - hide: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - module.hideDimmer(); - module.hideModal(callback); - }, - - hideDimmer: function() { - if( $dimmable.dimmer('is active') ) { - module.debug('Hiding dimmer'); - if(settings.closable) { - $dimmer - .off('click' + eventNamespace) - ; - } - $dimmable.dimmer('hide'); - } - else { - module.debug('Dimmer is not visible cannot hide'); - } - }, - - hideModal: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - if( module.is.active() ) { - module.debug('Hiding modal'); - module.remove.keyboardShortcuts(); - if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { - $module - .transition(settings.transition + ' out', settings.duration, function() { - module.remove.active(); - module.restore.focus(); - callback(); - }) - ; - } - else { - $module - .fadeOut(settings.duration, settings.easing, function() { - module.remove.active(); - module.restore.focus(); - callback(); - }) - ; - } - $.proxy(settings.onHide, element)(); - } - }, - - hideAll: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - if( $allModals.is(':visible') ) { - module.debug('Hiding all visible modals'); - module.hideDimmer(); - $allModals - .filter(':visible') - .modal('hide modal', callback) - ; - } - }, - - hideOthers: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - if( $otherModals.is(':visible') ) { - module.debug('Hiding other modals'); - $otherModals - .filter(':visible') - .modal('hide modal', callback) - ; - } - }, - - add: { - keyboardShortcuts: function() { - module.verbose('Adding keyboard shortcuts'); - $document - .on('keyup' + eventNamespace, module.event.keyboard) - ; - } - }, - - save: { - focus: function() { - $focusedElement = $(document.activeElement).blur(); - } - }, - - restore: { - focus: function() { - if($focusedElement && $focusedElement.size() > 0) { - $focusedElement.focus(); - } - } - }, - - remove: { - active: function() { - $module.removeClass(className.active); - }, - keyboardShortcuts: function() { - module.verbose('Removing keyboard shortcuts'); - $document - .off('keyup' + eventNamespace) - ; - }, - scrolling: function() { - $dimmable.removeClass(className.scrolling); - $module.removeClass(className.scrolling); - } - }, - - cacheSizes: function() { - module.cache = { - height : $module.outerHeight() + settings.offset, - contextHeight : (settings.context == 'body') - ? $(window).height() - : $dimmable.height() - }; - module.debug('Caching modal and container sizes', module.cache); - }, - - can: { - fit: function() { - return (module.cache.height < module.cache.contextHeight); - } - }, - - is: { - active: function() { - return $module.hasClass(className.active); - }, - modernBrowser: function() { - // lol - return (navigator.appName !== 'Microsoft Internet Explorer'); - } - }, - - set: { - active: function() { - module.add.keyboardShortcuts(); - module.save.focus(); - $module - .addClass(className.active) - ; - if(settings.closable) { - $dimmer - .off('click' + eventNamespace) - .on('click' + eventNamespace, module.event.click) - ; - } - }, - scrolling: function() { - $dimmable.addClass(className.scrolling); - $module.addClass(className.scrolling); - }, - type: function() { - if(module.can.fit()) { - module.verbose('Modal fits on screen'); - module.remove.scrolling(); - } - else { - module.verbose('Modal cannot fit on screen setting to scrolling'); - module.set.scrolling(); - } - }, - position: function() { - module.verbose('Centering modal on page', module.cache, module.cache.height / 2); - if(module.can.fit()) { - $module - .css({ - top: '', - marginTop: -(module.cache.height / 2) - }) - ; - } - else { - $module - .css({ - marginTop : '1em', - top : $document.scrollTop() - }) - ; - } - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.modal.settings = { - - name : 'Modal', - namespace : 'modal', - - debug : true, - verbose : true, - performance : true, - - closable : true, - context : 'body', - duration : 400, - easing : 'easeOutExpo', - offset : 0, - transition : 'fade down', - - onShow : function(){}, - onHide : function(){}, - onApprove : function(){ return true; }, - onDeny : function(){ return true; }, - - selector : { - close : '.close, .actions .button', - approve : '.actions .positive, .actions .approve', - deny : '.actions .negative, .actions .cancel', - modal : '.ui.modal' - }, - error : { - dimmer : 'UI Dimmer, a required component is not included in this page', - method : 'The method you called is not defined.' - }, - className : { - active : 'active', - scrolling : 'scrolling' - } -}; - - -})( jQuery, window , document ); -/* - * # Semantic - Nag - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ($, window, document, undefined) { - -$.fn.nag = function(parameters) { - var - $allModules = $(this), - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - $(this) - .each(function() { - var - settings = $.extend(true, {}, $.fn.nag.settings, parameters), - - className = settings.className, - selector = settings.selector, - error = settings.error, - namespace = settings.namespace, - - eventNamespace = '.' + namespace, - moduleNamespace = namespace + '-module', - - $module = $(this), - - $close = $module.find(selector.close), - $context = $(settings.context), - - - element = this, - instance = $module.data(moduleNamespace), - - moduleOffset, - moduleHeight, - - contextWidth, - contextHeight, - contextOffset, - - yOffset, - yPosition, - - timer, - module, - - requestAnimationFrame = window.requestAnimationFrame - || window.mozRequestAnimationFrame - || window.webkitRequestAnimationFrame - || window.msRequestAnimationFrame - || function(callback) { setTimeout(callback, 0); } - ; - module = { - - initialize: function() { - module.verbose('Initializing element'); - // calculate module offset once - moduleOffset = $module.offset(); - moduleHeight = $module.outerHeight(); - contextWidth = $context.outerWidth(); - contextHeight = $context.outerHeight(); - contextOffset = $context.offset(); - - $module - .data(moduleNamespace, module) - ; - $close - .on('click' + eventNamespace, module.dismiss) - ; - // lets avoid javascript if we dont need to reposition - if(settings.context == window && settings.position == 'fixed') { - $module - .addClass(className.fixed) - ; - } - if(settings.sticky) { - module.verbose('Adding scroll events'); - // retrigger on scroll for absolute - if(settings.position == 'absolute') { - $context - .on('scroll' + eventNamespace, module.event.scroll) - .on('resize' + eventNamespace, module.event.scroll) - ; - } - // fixed is always relative to window - else { - $(window) - .on('scroll' + eventNamespace, module.event.scroll) - .on('resize' + eventNamespace, module.event.scroll) - ; - } - // fire once to position on init - $.proxy(module.event.scroll, this)(); - } - - if(settings.displayTime > 0) { - setTimeout(module.hide, settings.displayTime); - } - if(module.should.show()) { - if( !$module.is(':visible') ) { - module.show(); - } - } - else { - module.hide(); - } - }, - - destroy: function() { - module.verbose('Destroying instance'); - $module - .removeData(moduleNamespace) - .off(eventNamespace) - ; - if(settings.sticky) { - $context - .off(eventNamespace) - ; - } - }, - - refresh: function() { - module.debug('Refreshing cached calculations'); - moduleOffset = $module.offset(); - moduleHeight = $module.outerHeight(); - contextWidth = $context.outerWidth(); - contextHeight = $context.outerHeight(); - contextOffset = $context.offset(); - }, - - show: function() { - module.debug('Showing nag', settings.animation.show); - if(settings.animation.show == 'fade') { - $module - .fadeIn(settings.duration, settings.easing) - ; - } - else { - $module - .slideDown(settings.duration, settings.easing) - ; - } - }, - - hide: function() { - module.debug('Showing nag', settings.animation.hide); - if(settings.animation.show == 'fade') { - $module - .fadeIn(settings.duration, settings.easing) - ; - } - else { - $module - .slideUp(settings.duration, settings.easing) - ; - } - }, - - onHide: function() { - module.debug('Removing nag', settings.animation.hide); - $module.remove(); - if (settings.onHide) { - settings.onHide(); - } - }, - - stick: function() { - module.refresh(); - - if(settings.position == 'fixed') { - var - windowScroll = $(window).prop('pageYOffset') || $(window).scrollTop(), - fixedOffset = ( $module.hasClass(className.bottom) ) - ? contextOffset.top + (contextHeight - moduleHeight) - windowScroll - : contextOffset.top - windowScroll - ; - $module - .css({ - position : 'fixed', - top : fixedOffset, - left : contextOffset.left, - width : contextWidth - settings.scrollBarWidth - }) - ; - } - else { - $module - .css({ - top : yPosition - }) - ; - } - }, - unStick: function() { - $module - .css({ - top : '' - }) - ; - }, - dismiss: function(event) { - if(settings.storageMethod) { - module.storage.set(settings.storedKey, settings.storedValue); - } - module.hide(); - event.stopImmediatePropagation(); - event.preventDefault(); - }, - - should: { - show: function() { - if(settings.persist) { - module.debug('Persistent nag is set, can show nag'); - return true; - } - if(module.storage.get(settings.storedKey) != settings.storedValue) { - module.debug('Stored value is not set, can show nag', module.storage.get(settings.storedKey)); - return true; - } - module.debug('Stored value is set, cannot show nag', module.storage.get(settings.storedKey)); - return false; - }, - stick: function() { - yOffset = $context.prop('pageYOffset') || $context.scrollTop(); - yPosition = ( $module.hasClass(className.bottom) ) - ? (contextHeight - $module.outerHeight() ) + yOffset - : yOffset - ; - // absolute position calculated when y offset met - if(yPosition > moduleOffset.top) { - return true; - } - else if(settings.position == 'fixed') { - return true; - } - return false; - } - }, - - storage: { - - set: function(key, value) { - module.debug('Setting stored value', key, value, settings.storageMethod); - if(settings.storageMethod == 'local' && window.store !== undefined) { - window.store.set(key, value); - } - // store by cookie - else if($.cookie !== undefined) { - $.cookie(key, value); - } - else { - module.error(error.noStorage); - } - }, - get: function(key) { - module.debug('Getting stored value', key, settings.storageMethod); - if(settings.storageMethod == 'local' && window.store !== undefined) { - return window.store.get(key); - } - // get by cookie - else if($.cookie !== undefined) { - return $.cookie(key); - } - else { - module.error(error.noStorage); - } - } - - }, - - event: { - scroll: function() { - if(timer !== undefined) { - clearTimeout(timer); - } - timer = setTimeout(function() { - if(module.should.stick() ) { - requestAnimationFrame(module.stick); - } - else { - module.unStick(); - } - }, settings.lag); - } - }, - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - module.debug('Changing internal', name, value); - if(value !== undefined) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else { - module[name] = value; - } - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - - }) - ; - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.nag.settings = { - - name : 'Nag', - - verbose : true, - debug : true, - performance : true, - - namespace : 'Nag', - - // allows cookie to be overriden - persist : false, - - // set to zero to manually dismiss, otherwise hides on its own - displayTime : 0, - - animation : { - show: 'slide', - hide: 'slide' - }, - - // method of stickyness - position : 'fixed', - scrollBarWidth : 18, - - // type of storage to use - storageMethod : 'cookie', - - // value to store in dismissed localstorage/cookie - storedKey : 'nag', - storedValue : 'dismiss', - - // need to calculate stickyness on scroll - sticky : false, - - // how often to check scroll event - lag : 0, - - // context for scroll event - context : window, - - error: { - noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state', - method : 'The method you called is not defined.' - }, - - className : { - bottom : 'bottom', - fixed : 'fixed' - }, - - selector : { - close: '.icon.close' - }, - - speed : 500, - easing : 'easeOutQuad', - - onHide: function() {} - -}; - -})( jQuery, window , document ); - -/* - * # Semantic - Popup - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ($, window, document, undefined) { - -$.fn.popup = function(parameters) { - var - $allModules = $(this), - $document = $(document), - - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - - returnedValue - ; - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.popup.settings, parameters) - : $.extend({}, $.fn.popup.settings), - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, - - eventNamespace = '.' + settings.namespace, - moduleNamespace = 'module-' + namespace, - - $module = $(this), - $context = $(settings.context), - $target = (settings.target) - ? $(settings.target) - : $module, - - $window = $(window), - - $offsetParent = (settings.inline) - ? $target.offsetParent() - : $window, - $popup = (settings.inline) - ? $target.next(settings.selector.popup) - : $window.children(settings.selector.popup).last(), - - searchDepth = 0, - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - // binds events - initialize: function() { - module.debug('Initializing module', $module); - if(settings.on == 'click') { - $module - .on('click', module.toggle) - ; - } - else { - $module - .on(module.get.startEvent() + eventNamespace, module.event.start) - .on(module.get.endEvent() + eventNamespace, module.event.end) - ; - } - if(settings.target) { - module.debug('Target set to element', $target); - } - $window - .on('resize' + eventNamespace, module.event.resize) - ; - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, instance) - ; - }, - - refresh: function() { - if(settings.inline) { - $popup = $target.next(selector.popup); - $offsetParent = $target.offsetParent(); - } - else { - $popup = $window.children(selector.popup).last(); - } - }, - - destroy: function() { - module.debug('Destroying previous module'); - $window - .off(eventNamespace) - ; - $popup - .remove() - ; - $module - .off(eventNamespace) - .removeData(moduleNamespace) - ; - }, - - event: { - start: function(event) { - module.timer = setTimeout(function() { - if( module.is.hidden() ) { - module.show(); - } - }, settings.delay); - }, - end: function() { - clearTimeout(module.timer); - if( module.is.visible() ) { - module.hide(); - } - }, - resize: function() { - if( module.is.visible() ) { - module.set.position(); - } - } - }, - - // generates popup html from metadata - create: function() { - module.debug('Creating pop-up html'); - var - html = $module.data(metadata.html) || settings.html, - variation = $module.data(metadata.variation) || settings.variation, - title = $module.data(metadata.title) || settings.title, - content = $module.data(metadata.content) || $module.attr('title') || settings.content - ; - if(html || content || title) { - if(!html) { - html = settings.template({ - title : title, - content : content - }); - } - $popup = $('
') - .addClass(className.popup) - .addClass(variation) - .html(html) - ; - if(settings.inline) { - module.verbose('Inserting popup element inline', $popup); - $popup - .insertAfter($module) - ; - } - else { - module.verbose('Appending popup element to body', $popup); - $popup - .appendTo( $context ) - ; - } - $.proxy(settings.onCreate, $popup)(); - } - else { - module.error(error.content); - } - }, - - // determines popup state - toggle: function() { - module.debug('Toggling pop-up'); - if( module.is.hidden() ) { - module.hideAll(); - module.show(); - } - else { - module.hide(); - } - }, - - show: function(callback) { - callback = callback || function(){}; - module.debug('Showing pop-up', settings.transition); - if(!settings.preserve) { - module.refresh(); - } - if( !module.exists() ) { - module.create(); - } - module.set.position(); - module.animate.show(callback); - }, - - - hide: function(callback) { - callback = callback || function(){}; - $module - .removeClass(className.visible) - ; - module.unbind.close(); - if( module.is.visible() ) { - module.animate.hide(callback); - } - }, - - hideAll: function() { - $(selector.popup) - .filter(':visible') - .popup('hide') - ; - }, - - hideGracefully: function(event) { - // don't close on clicks inside popup - if( $(event.target).closest(selector.popup).size() === 0) { - module.hide(); - } - }, - - exists: function() { - if(settings.inline) { - return ( $popup.size() !== 0 ); - } - else { - return ( $popup.parent($context).size() ); - } - }, - - remove: function() { - module.debug('Removing popup'); - $popup - .remove() - ; - }, - - animate: { - show: function(callback) { - callback = callback || function(){}; - $module - .addClass(className.visible) - ; - if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { - $popup - .transition(settings.transition + ' in', settings.duration, function() { - module.bind.close(); - $.proxy(callback, element)(); - }) - ; - } - else { - $popup - .stop() - .fadeIn(settings.duration, settings.easing, function() { - module.bind.close(); - $.proxy(callback, element)(); - }) - ; - } - $.proxy(settings.onShow, element)(); - }, - hide: function(callback) { - callback = callback || function(){}; - module.debug('Hiding pop-up'); - if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { - $popup - .transition(settings.transition + ' out', settings.duration, function() { - module.reset(); - callback(); - }) - ; - } - else { - $popup - .stop() - .fadeOut(settings.duration, settings.easing, function() { - module.reset(); - callback(); - }) - ; - } - $.proxy(settings.onHide, element)(); - } - }, - - get: { - startEvent: function() { - if(settings.on == 'hover') { - return 'mouseenter'; - } - else if(settings.on == 'focus') { - return 'focus'; - } - }, - endEvent: function() { - if(settings.on == 'hover') { - return 'mouseleave'; - } - else if(settings.on == 'focus') { - return 'blur'; - } - }, - offstagePosition: function() { - var - boundary = { - top : $(window).scrollTop(), - bottom : $(window).scrollTop() + $(window).height(), - left : 0, - right : $(window).width() - }, - popup = { - width : $popup.width(), - height : $popup.outerHeight(), - position : $popup.offset() - }, - offstage = {}, - offstagePositions = [] - ; - if(popup.position) { - offstage = { - top : (popup.position.top < boundary.top), - bottom : (popup.position.top + popup.height > boundary.bottom), - right : (popup.position.left + popup.width > boundary.right), - left : (popup.position.left < boundary.left) - }; - } - module.verbose('Checking if outside viewable area', popup.position); - // return only boundaries that have been surpassed - $.each(offstage, function(direction, isOffstage) { - if(isOffstage) { - offstagePositions.push(direction); - } - }); - return (offstagePositions.length > 0) - ? offstagePositions.join(' ') - : false - ; - }, - nextPosition: function(position) { - switch(position) { - case 'top left': - position = 'bottom left'; - break; - case 'bottom left': - position = 'top right'; - break; - case 'top right': - position = 'bottom right'; - break; - case 'bottom right': - position = 'top center'; - break; - case 'top center': - position = 'bottom center'; - break; - case 'bottom center': - position = 'right center'; - break; - case 'right center': - position = 'left center'; - break; - case 'left center': - position = 'top center'; - break; - } - return position; - } - }, - - set: { - position: function(position, arrowOffset) { - var - windowWidth = $(window).width(), - windowHeight = $(window).height(), - - width = $target.outerWidth(), - height = $target.outerHeight(), - - popupWidth = $popup.width(), - popupHeight = $popup.outerHeight(), - - parentWidth = $offsetParent.outerWidth(), - parentHeight = $offsetParent.outerHeight(), - - distanceAway = settings.distanceAway, - - offset = (settings.inline) - ? $target.position() - : $target.offset(), - - positioning, - offstagePosition - ; - position = position || $module.data(metadata.position) || settings.position; - arrowOffset = arrowOffset || $module.data(metadata.offset) || settings.offset; - // adjust for margin when inline - if(settings.inline) { - if(position == 'left center' || position == 'right center') { - arrowOffset += parseInt( window.getComputedStyle(element).getPropertyValue('margin-top'), 10); - distanceAway += -parseInt( window.getComputedStyle(element).getPropertyValue('margin-left'), 10); - } - else { - arrowOffset += parseInt( window.getComputedStyle(element).getPropertyValue('margin-left'), 10); - distanceAway += parseInt( window.getComputedStyle(element).getPropertyValue('margin-top'), 10); - } - } - module.debug('Calculating offset for position', position); - switch(position) { - case 'top left': - positioning = { - bottom : parentHeight - offset.top + distanceAway, - right : parentWidth - offset.left - arrowOffset, - top : 'auto', - left : 'auto' - }; - break; - case 'top center': - positioning = { - bottom : parentHeight - offset.top + distanceAway, - left : offset.left + (width / 2) - (popupWidth / 2) + arrowOffset, - top : 'auto', - right : 'auto' - }; - break; - case 'top right': - positioning = { - top : 'auto', - bottom : parentHeight - offset.top + distanceAway, - left : offset.left + width + arrowOffset, - right : 'auto' - }; - break; - case 'left center': - positioning = { - top : offset.top + (height / 2) - (popupHeight / 2) + arrowOffset, - right : parentWidth - offset.left + distanceAway, - left : 'auto', - bottom : 'auto' - }; - break; - case 'right center': - positioning = { - top : offset.top + (height / 2) - (popupHeight / 2) + arrowOffset, - left : offset.left + width + distanceAway, - bottom : 'auto', - right : 'auto' - }; - break; - case 'bottom left': - positioning = { - top : offset.top + height + distanceAway, - right : parentWidth - offset.left - arrowOffset, - left : 'auto', - bottom : 'auto' - }; - break; - case 'bottom center': - positioning = { - top : offset.top + height + distanceAway, - left : offset.left + (width / 2) - (popupWidth / 2) + arrowOffset, - bottom : 'auto', - right : 'auto' - }; - break; - case 'bottom right': - positioning = { - top : offset.top + height + distanceAway, - left : offset.left + width + arrowOffset, - bottom : 'auto', - right : 'auto' - }; - break; - } - // tentatively place on stage - $popup - .css(positioning) - .removeClass(className.position) - .addClass(position) - .addClass(className.loading) - ; - // check if is offstage - offstagePosition = module.get.offstagePosition(); - - // recursively find new positioning - if(offstagePosition) { - module.debug('Element is outside boundaries', offstagePosition); - if(searchDepth < settings.maxSearchDepth) { - position = module.get.nextPosition(position); - searchDepth++; - module.debug('Trying new position', position); - return module.set.position(position); - } - else { - module.error(error.recursion); - searchDepth = 0; - module.reset(); - return false; - } - } - else { - module.debug('Position is on stage', position); - searchDepth = 0; - return true; - } - - $module.removeClass(className.loading); - } - - }, - - bind: { - close:function() { - if(settings.on == 'click' && settings.closable) { - module.verbose('Binding popup close event to document'); - $document - .on('click' + eventNamespace, module.hideGracefully) - ; - } - } - }, - - unbind: { - close: function() { - if(settings.on == 'click' && settings.closable) { - module.verbose('Removing close event from document'); - $document - .off('click' + eventNamespace) - ; - } - } - }, - - is: { - visible: function() { - return $popup.is(':visible'); - }, - hidden: function() { - return !module.is.visible(); - } - }, - - reset: function() { - $popup - .attr('style', '') - .removeAttr('style') - ; - if(!settings.preserve) { - module.remove(); - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.popup.settings = { - - name : 'Popup', - debug : true, - verbose : true, - performance : true, - namespace : 'popup', - - onCreate : function(){}, - onShow : function(){}, - onHide : function(){}, - - variation : '', - content : false, - html : false, - title : false, - - on : 'hover', - target : false, - closable : true, - - context : 'body', - position : 'top center', - delay : 150, - inline : false, - preserve : false, - - duration : 250, - easing : 'easeOutQuint', - transition : 'scale', - - distanceAway : 0, - offset : 0, - maxSearchDepth : 10, - - error: { - content : 'Your popup has no content specified', - method : 'The method you called is not defined.', - recursion : 'Popup attempted to reposition element to fit, but could not find an adequate position.' - }, - - metadata: { - content : 'content', - html : 'html', - offset : 'offset', - position : 'position', - title : 'title', - variation : 'variation' - }, - - className : { - loading : 'loading', - popup : 'ui popup', - position : 'top left center bottom right', - visible : 'visible' - }, - - selector : { - popup : '.ui.popup' - }, - - template: function(text) { - var html = ''; - if(typeof text !== undefined) { - if(typeof text.title !== undefined && text.title) { - html += '
' + text.title + '
'; - } - if(typeof text.content !== undefined && text.content) { - html += '
' + text.content + '
'; - } - } - return html; - } - -}; - -})( jQuery, window , document ); - -/* - * # Semantic - Rating - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ($, window, document, undefined) { - -$.fn.rating = function(parameters) { - var - $allModules = $(this), - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.rating.settings, parameters) - : $.extend({}, $.fn.rating.settings), - - namespace = settings.namespace, - className = settings.className, - metadata = settings.metadata, - selector = settings.selector, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - - element = this, - instance = $(this).data(moduleNamespace), - - $module = $(this), - $icon = $module.find(selector.icon), - - module - ; - - module = { - - initialize: function() { - module.verbose('Initializing rating module', settings); - - if(settings.interactive) { - module.enable(); - } - else { - module.disable(); - } - - if(settings.initialRating) { - module.debug('Setting initial rating'); - module.setRating(settings.initialRating); - } - if( $module.data(metadata.rating) ) { - module.debug('Rating found in metadata'); - module.setRating( $module.data(metadata.rating) ); - } - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Instantiating module', settings); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.verbose('Destroying previous instance', instance); - $module - .removeData(moduleNamespace) - ; - $icon - .off(eventNamespace) - ; - }, - - event: { - mouseenter: function() { - var - $activeIcon = $(this) - ; - $activeIcon - .nextAll() - .removeClass(className.hover) - ; - $module - .addClass(className.hover) - ; - $activeIcon - .addClass(className.hover) - .prevAll() - .addClass(className.hover) - ; - }, - mouseleave: function() { - $module - .removeClass(className.hover) - ; - $icon - .removeClass(className.hover) - ; - }, - click: function() { - var - $activeIcon = $(this), - currentRating = module.getRating(), - rating = $icon.index($activeIcon) + 1 - ; - if(settings.clearable && currentRating == rating) { - module.clearRating(); - } - else { - module.setRating( rating ); - } - } - }, - - clearRating: function() { - module.debug('Clearing current rating'); - module.setRating(0); - }, - - getRating: function() { - var - currentRating = $icon.filter('.' + className.active).size() - ; - module.verbose('Current rating retrieved', currentRating); - return currentRating; - }, - - enable: function() { - module.debug('Setting rating to interactive mode'); - $icon - .on('mouseenter' + eventNamespace, module.event.mouseenter) - .on('mouseleave' + eventNamespace, module.event.mouseleave) - .on('click' + eventNamespace, module.event.click) - ; - $module - .addClass(className.active) - ; - }, - - disable: function() { - module.debug('Setting rating to read-only mode'); - $icon - .off(eventNamespace) - ; - $module - .removeClass(className.active) - ; - }, - - setRating: function(rating) { - var - ratingIndex = (rating - 1 >= 0) - ? (rating - 1) - : 0, - $activeIcon = $icon.eq(ratingIndex) - ; - $module - .removeClass(className.hover) - ; - $icon - .removeClass(className.hover) - .removeClass(className.active) - ; - if(rating > 0) { - module.verbose('Setting current rating to', rating); - $activeIcon - .addClass(className.active) - .prevAll() - .addClass(className.active) - ; - } - $.proxy(settings.onRate, element)(rating); - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.rating.settings = { - - name : 'Rating', - namespace : 'rating', - - verbose : true, - debug : true, - performance : true, - - initialRating : 0, - interactive : true, - clearable : false, - - onRate : function(rating){}, - - error : { - method : 'The method you called is not defined' - }, - - metadata: { - rating: 'rating' - }, - - className : { - active : 'active', - hover : 'hover', - loading : 'loading' - }, - - selector : { - icon : '.icon' - } - -}; - -})( jQuery, window , document ); - -/* - * # Semantic - Search - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ($, window, document, undefined) { - -$.fn.search = function(source, parameters) { - var - $allModules = $(this), - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - $(this) - .each(function() { - var - settings = $.extend(true, {}, $.fn.search.settings, parameters), - - className = settings.className, - selector = settings.selector, - error = settings.error, - namespace = settings.namespace, - - eventNamespace = '.' + namespace, - moduleNamespace = namespace + '-module', - - $module = $(this), - $prompt = $module.find(selector.prompt), - $searchButton = $module.find(selector.searchButton), - $results = $module.find(selector.results), - $result = $module.find(selector.result), - $category = $module.find(selector.category), - - element = this, - instance = $module.data(moduleNamespace), - - module - ; - module = { - - initialize: function() { - module.verbose('Initializing module'); - var - prompt = $prompt[0], - inputEvent = (prompt.oninput !== undefined) - ? 'input' - : (prompt.onpropertychange !== undefined) - ? 'propertychange' - : 'keyup' - ; - // attach events - $prompt - .on('focus' + eventNamespace, module.event.focus) - .on('blur' + eventNamespace, module.event.blur) - .on('keydown' + eventNamespace, module.handleKeyboard) - ; - if(settings.automatic) { - $prompt - .on(inputEvent + eventNamespace, module.search.throttle) - ; - } - $searchButton - .on('click' + eventNamespace, module.search.query) - ; - $results - .on('click' + eventNamespace, selector.result, module.results.select) - ; - module.instantiate(); - }, - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - destroy: function() { - module.verbose('Destroying instance'); - $module - .removeData(moduleNamespace) - ; - }, - event: { - focus: function() { - $module - .addClass(className.focus) - ; - module.results.show(); - }, - blur: function() { - module.search.cancel(); - $module - .removeClass(className.focus) - ; - module.results.hide(); - } - }, - handleKeyboard: function(event) { - var - // force latest jq dom - $result = $module.find(selector.result), - $category = $module.find(selector.category), - keyCode = event.which, - keys = { - backspace : 8, - enter : 13, - escape : 27, - upArrow : 38, - downArrow : 40 - }, - activeClass = className.active, - currentIndex = $result.index( $result.filter('.' + activeClass) ), - resultSize = $result.size(), - newIndex - ; - // search shortcuts - if(keyCode == keys.escape) { - module.verbose('Escape key pressed, blurring search field'); - $prompt - .trigger('blur') - ; - } - // result shortcuts - if($results.filter(':visible').size() > 0) { - if(keyCode == keys.enter) { - module.verbose('Enter key pressed, selecting active result'); - if( $result.filter('.' + activeClass).exists() ) { - $.proxy(module.results.select, $result.filter('.' + activeClass) )(); - event.preventDefault(); - return false; - } - } - else if(keyCode == keys.upArrow) { - module.verbose('Up key pressed, changing active result'); - newIndex = (currentIndex - 1 < 0) - ? currentIndex - : currentIndex - 1 - ; - $category - .removeClass(activeClass) - ; - $result - .removeClass(activeClass) - .eq(newIndex) - .addClass(activeClass) - .closest($category) - .addClass(activeClass) - ; - event.preventDefault(); - } - else if(keyCode == keys.downArrow) { - module.verbose('Down key pressed, changing active result'); - newIndex = (currentIndex + 1 >= resultSize) - ? currentIndex - : currentIndex + 1 - ; - $category - .removeClass(activeClass) - ; - $result - .removeClass(activeClass) - .eq(newIndex) - .addClass(activeClass) - .closest($category) - .addClass(activeClass) - ; - event.preventDefault(); - } - } - else { - // query shortcuts - if(keyCode == keys.enter) { - module.verbose('Enter key pressed, executing query'); - module.search.query(); - $searchButton - .addClass(className.down) - ; - $prompt - .one('keyup', function(){ - $searchButton - .removeClass(className.down) - ; - }) - ; - } - } - }, - search: { - cancel: function() { - var - xhr = $module.data('xhr') || false - ; - if( xhr && xhr.state() != 'resolved') { - module.debug('Cancelling last search'); - xhr.abort(); - } - }, - throttle: function() { - var - searchTerm = $prompt.val(), - numCharacters = searchTerm.length - ; - clearTimeout(module.timer); - if(numCharacters >= settings.minCharacters) { - module.timer = setTimeout(module.search.query, settings.searchThrottle); - } - else { - module.results.hide(); - } - }, - query: function() { - var - searchTerm = $prompt.val(), - cachedHTML = module.search.cache.read(searchTerm) - ; - if(cachedHTML) { - module.debug("Reading result for '" + searchTerm + "' from cache"); - module.results.add(cachedHTML); - } - else { - module.debug("Querying for '" + searchTerm + "'"); - if(typeof source == 'object') { - module.search.local(searchTerm); - } - else { - module.search.remote(searchTerm); - } - $.proxy(settings.onSearchQuery, $module)(searchTerm); - } - }, - local: function(searchTerm) { - var - results = [], - fullTextResults = [], - searchFields = $.isArray(settings.searchFields) - ? settings.searchFields - : [settings.searchFields], - - searchRegExp = new RegExp('(?:\s|^)' + searchTerm, 'i'), - fullTextRegExp = new RegExp(searchTerm, 'i'), - searchHTML - ; - $module - .addClass(className.loading) - ; - // iterate through search fields in array order - $.each(searchFields, function(index, field) { - $.each(source, function(label, thing) { - if(typeof thing[field] == 'string' && ($.inArray(thing, results) == -1) && ($.inArray(thing, fullTextResults) == -1) ) { - if( searchRegExp.test( thing[field] ) ) { - results.push(thing); - } - else if( fullTextRegExp.test( thing[field] ) ) { - fullTextResults.push(thing); - } - } - }); - }); - searchHTML = module.results.generate({ - results: $.merge(results, fullTextResults) - }); - $module - .removeClass(className.loading) - ; - module.search.cache.write(searchTerm, searchHTML); - module.results.add(searchHTML); - }, - remote: function(searchTerm) { - var - apiSettings = { - stateContext : $module, - url : source, - urlData: { query: searchTerm }, - success : function(response) { - searchHTML = module.results.generate(response); - module.search.cache.write(searchTerm, searchHTML); - module.results.add(searchHTML); - }, - failure : module.error - }, - searchHTML - ; - module.search.cancel(); - module.debug('Executing search'); - $.extend(true, apiSettings, settings.apiSettings); - $.api(apiSettings); - }, - - cache: { - read: function(name) { - var - cache = $module.data('cache') - ; - return (settings.cache && (typeof cache == 'object') && (cache[name] !== undefined) ) - ? cache[name] - : false - ; - }, - write: function(name, value) { - var - cache = ($module.data('cache') !== undefined) - ? $module.data('cache') - : {} - ; - cache[name] = value; - $module - .data('cache', cache) - ; - } - } - }, - - results: { - generate: function(response) { - module.debug('Generating html from response', response); - var - template = settings.templates[settings.type], - html = '' - ; - if(($.isPlainObject(response.results) && !$.isEmptyObject(response.results)) || ($.isArray(response.results) && response.results.length > 0) ) { - if(settings.maxResults > 0) { - response.results = $.makeArray(response.results).slice(0, settings.maxResults); - } - if(response.results.length > 0) { - if($.isFunction(template)) { - html = template(response); - } - else { - module.error(error.noTemplate, false); - } - } - } - else { - html = module.message(error.noResults, 'empty'); - } - $.proxy(settings.onResults, $module)(response); - return html; - }, - add: function(html) { - if(settings.onResultsAdd == 'default' || $.proxy(settings.onResultsAdd, $results)(html) == 'default') { - $results - .html(html) - ; - } - module.results.show(); - }, - show: function() { - if( ($results.filter(':visible').size() === 0) && ($prompt.filter(':focus').size() > 0) && $results.html() !== '') { - $results - .stop() - .fadeIn(200) - ; - $.proxy(settings.onResultsOpen, $results)(); - } - }, - hide: function() { - if($results.filter(':visible').size() > 0) { - $results - .stop() - .fadeOut(200) - ; - $.proxy(settings.onResultsClose, $results)(); - } - }, - select: function(event) { - module.debug('Search result selected'); - var - $result = $(this), - $title = $result.find('.title'), - title = $title.html() - ; - if(settings.onSelect == 'default' || $.proxy(settings.onSelect, this)(event) == 'default') { - var - $link = $result.find('a[href]').eq(0), - href = $link.attr('href') || false, - target = $link.attr('target') || false - ; - module.results.hide(); - $prompt - .val(title) - ; - if(href) { - if(target == '_blank' || event.ctrlKey) { - window.open(href); - } - else { - window.location.href = (href); - } - } - } - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.search.settings = { - - name : 'Search Module', - namespace : 'search', - - debug : true, - verbose : true, - performance : true, - - // onSelect default action is defined in module - onSelect : 'default', - onResultsAdd : 'default', - - onSearchQuery : function(){}, - onResults : function(response){}, - - onResultsOpen : function(){}, - onResultsClose : function(){}, - - automatic : 'true', - type : 'simple', - minCharacters : 3, - searchThrottle : 300, - maxResults : 7, - cache : true, - - searchFields : [ - 'title', - 'description' - ], - - // api config - apiSettings: { - - }, - - className: { - active : 'active', - down : 'down', - focus : 'focus', - empty : 'empty', - loading : 'loading' - }, - - error : { - noResults : 'Your search returned no results', - logging : 'Error in debug logging, exiting.', - noTemplate : 'A valid template name was not specified.', - serverError : 'There was an issue with querying the server.', - method : 'The method you called is not defined.' - }, - - selector : { - prompt : '.prompt', - searchButton : '.search.button', - results : '.results', - category : '.category', - result : '.result' - }, - - templates: { - message: function(message, type) { - var - html = '' - ; - if(message !== undefined && type !== undefined) { - html += '' - + '
' - ; - // message type - if(type == 'empty') { - html += '' - + '
No Results
' - + '
' + message + '
' - ; - } - else { - html += '
' + message + '
'; - } - html += '
'; - } - return html; - }, - categories: function(response) { - var - html = '' - ; - if(response.results !== undefined) { - // each category - $.each(response.results, function(index, category) { - if(category.results !== undefined && category.results.length > 0) { - html += '' - + '
' - + '
' + category.name + '
' - ; - // each item inside category - $.each(category.results, function(index, result) { - html += '
'; - html += ''; - if(result.image !== undefined) { - html+= '' - + '
' - + ' ' - + '
' - ; - } - html += '
'; - if(result.price !== undefined) { - html+= '
' + result.price + '
'; - } - if(result.title !== undefined) { - html+= '
' + result.title + '
'; - } - if(result.description !== undefined) { - html+= '
' + result.description + '
'; - } - html += '' - + '
' - + '
' - ; - }); - html += '' - + '
' - ; - } - }); - if(response.resultPage) { - html += '' - + '' - + response.resultPage.text - + ''; - } - return html; - } - return false; - }, - simple: function(response) { - var - html = '' - ; - if(response.results !== undefined) { - - // each result - $.each(response.results, function(index, result) { - html += ''; - if(result.image !== undefined) { - html+= '' - + '
' - + ' ' - + '
' - ; - } - html += '
'; - if(result.price !== undefined) { - html+= '
' + result.price + '
'; - } - if(result.title !== undefined) { - html+= '
' + result.title + '
'; - } - if(result.description !== undefined) { - html+= '
' + result.description + '
'; - } - html += '' - + '
' - + '
' - ; - }); - - if(response.resultPage) { - html += '' - + '' - + response.resultPage.text - + ''; - } - return html; - } - return false; - } - } -}; - -})( jQuery, window , document ); -/* - * # Semantic - Shape - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.shape = function(parameters) { - var - $allModules = $(this), - $body = $('body'), - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - - $allModules - .each(function() { - var - moduleSelector = $allModules.selector || '', - settings = $.extend(true, {}, $.fn.shape.settings, parameters), - - // internal aliases - namespace = settings.namespace, - selector = settings.selector, - error = settings.error, - className = settings.className, - - // define namespaces for modules - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - - // selector cache - $module = $(this), - $sides = $module.find(selector.sides), - $side = $module.find(selector.side), - - // private variables - nextSelector = false, - $activeSide, - $nextSide, - - // standard module - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - initialize: function() { - module.verbose('Initializing module for', element); - module.set.defaultSide(); - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, instance) - ; - }, - - destroy: function() { - module.verbose('Destroying previous module for', element); - $module - .removeData(moduleNamespace) - .off(eventNamespace) - ; - }, - - refresh: function() { - module.verbose('Refreshing selector cache for', element); - $module = $(element); - $sides = $(this).find(selector.shape); - $side = $(this).find(selector.side); - }, - - repaint: function() { - module.verbose('Forcing repaint event'); - var - shape = $sides.get(0) || document.createElement('div'), - fakeAssignment = shape.offsetWidth - ; - }, - - animate: function(propertyObject, callback) { - module.verbose('Animating box with properties', propertyObject); - callback = callback || function(event) { - module.verbose('Executing animation callback'); - if(event !== undefined) { - event.stopPropagation(); - } - module.reset(); - module.set.active(); - }; - $.proxy(settings.beforeChange, $nextSide[0])(); - if(module.get.transitionEvent()) { - module.verbose('Starting CSS animation'); - $module - .addClass(className.animating) - ; - module.repaint(); - $module - .addClass(className.animating) - ; - $activeSide - .addClass(className.hidden) - ; - $sides - .css(propertyObject) - .one(module.get.transitionEvent(), callback) - ; - module.set.duration(settings.duration); - } - else { - callback(); - } - }, - - queue: function(method) { - module.debug('Queueing animation of', method); - $sides - .one(module.get.transitionEvent(), function() { - module.debug('Executing queued animation'); - setTimeout(function(){ - $module.shape(method); - }, 0); - }) - ; - }, - - reset: function() { - module.verbose('Animating states reset'); - $module - .removeClass(className.animating) - .attr('style', '') - .removeAttr('style') - ; - // removeAttr style does not consistently work in safari - $sides - .attr('style', '') - .removeAttr('style') - ; - $side - .attr('style', '') - .removeAttr('style') - .removeClass(className.hidden) - ; - $nextSide - .removeClass(className.animating) - .attr('style', '') - .removeAttr('style') - ; - }, - - is: { - animating: function() { - return $module.hasClass(className.animating); - } - }, - - set: { - - defaultSide: function() { - $activeSide = $module.find('.' + settings.className.active); - $nextSide = ( $activeSide.next(selector.side).size() > 0 ) - ? $activeSide.next(selector.side) - : $module.find(selector.side).first() - ; - nextSelector = false; - module.verbose('Active side set to', $activeSide); - module.verbose('Next side set to', $nextSide); - }, - - duration: function(duration) { - duration = duration || settings.duration; - duration = (typeof duration == 'number') - ? duration + 'ms' - : duration - ; - module.verbose('Setting animation duration', duration); - $sides.add($side) - .css({ - '-webkit-transition-duration': duration, - '-moz-transition-duration': duration, - '-ms-transition-duration': duration, - '-o-transition-duration': duration, - 'transition-duration': duration - }) - ; - }, - - stageSize: function() { - var - $clone = $module.clone().addClass(className.loading), - $activeSide = $clone.find('.' + settings.className.active), - $nextSide = (nextSelector) - ? $clone.find(nextSelector) - : ( $activeSide.next(selector.side).size() > 0 ) - ? $activeSide.next(selector.side) - : $clone.find(selector.side).first(), - newSize = {} - ; - $activeSide.removeClass(className.active); - $nextSide.addClass(className.active); - $clone.prependTo($body); - newSize = { - width : $nextSide.outerWidth(), - height : $nextSide.outerHeight() - }; - $clone.remove(); - $module - .css(newSize) - ; - module.verbose('Resizing stage to fit new content', newSize); - }, - - nextSide: function(selector) { - nextSelector = selector; - $nextSide = $module.find(selector); - if($nextSide.size() === 0) { - module.error(error.side); - } - module.verbose('Next side manually set to', $nextSide); - }, - - active: function() { - module.verbose('Setting new side to active', $nextSide); - $side - .removeClass(className.active) - ; - $nextSide - .addClass(className.active) - ; - $.proxy(settings.onChange, $nextSide[0])(); - module.set.defaultSide(); - } - }, - - flip: { - - up: function() { - module.debug('Flipping up', $nextSide); - if( !module.is.animating() ) { - module.set.stageSize(); - module.stage.above(); - module.animate( module.get.transform.up() ); - } - else { - module.queue('flip up'); - } - }, - - down: function() { - module.debug('Flipping down', $nextSide); - if( !module.is.animating() ) { - module.set.stageSize(); - module.stage.below(); - module.animate( module.get.transform.down() ); - } - else { - module.queue('flip down'); - } - }, - - left: function() { - module.debug('Flipping left', $nextSide); - if( !module.is.animating() ) { - module.set.stageSize(); - module.stage.left(); - module.animate(module.get.transform.left() ); - } - else { - module.queue('flip left'); - } - }, - - right: function() { - module.debug('Flipping right', $nextSide); - if( !module.is.animating() ) { - module.set.stageSize(); - module.stage.right(); - module.animate(module.get.transform.right() ); - } - else { - module.queue('flip right'); - } - }, - - over: function() { - module.debug('Flipping over', $nextSide); - if( !module.is.animating() ) { - module.set.stageSize(); - module.stage.behind(); - module.animate(module.get.transform.over() ); - } - else { - module.queue('flip over'); - } - }, - - back: function() { - module.debug('Flipping back', $nextSide); - if( !module.is.animating() ) { - module.set.stageSize(); - module.stage.behind(); - module.animate(module.get.transform.back() ); - } - else { - module.queue('flip back'); - } - } - - }, - - get: { - - transform: { - up: function() { - var - translate = { - y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), - z: -($activeSide.outerHeight() / 2) - } - ; - return { - transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)' - }; - }, - - down: function() { - var - translate = { - y: -(($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), - z: -($activeSide.outerHeight() / 2) - } - ; - return { - transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)' - }; - }, - - left: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2), - z : -($activeSide.outerWidth() / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)' - }; - }, - - right: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2), - z : -($activeSide.outerWidth() / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)' - }; - }, - - over: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) rotateY(180deg)' - }; - }, - - back: function() { - var - translate = { - x : -(($activeSide.outerWidth() - $nextSide.outerWidth()) / 2) - } - ; - return { - transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)' - }; - } - }, - - transitionEvent: function() { - var - element = document.createElement('element'), - transitions = { - 'transition' :'transitionend', - 'OTransition' :'oTransitionEnd', - 'MozTransition' :'transitionend', - 'WebkitTransition' :'webkitTransitionEnd' - }, - transition - ; - for(transition in transitions){ - if( element.style[transition] !== undefined ){ - return transitions[transition]; - } - } - }, - - nextSide: function() { - return ( $activeSide.next(selector.side).size() > 0 ) - ? $activeSide.next(selector.side) - : $module.find(selector.side).first() - ; - } - - }, - - stage: { - - above: function() { - var - box = { - origin : (($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), - depth : { - active : ($nextSide.outerHeight() / 2), - next : ($activeSide.outerHeight() / 2) - } - } - ; - module.verbose('Setting the initial animation position as above', $nextSide, box); - $activeSide - .css({ - 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' - }) - ; - $nextSide - .addClass(className.animating) - .css({ - 'display' : 'block', - 'top' : box.origin + 'px', - 'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px)' - }) - ; - }, - - below: function() { - var - box = { - origin : (($activeSide.outerHeight() - $nextSide.outerHeight()) / 2), - depth : { - active : ($nextSide.outerHeight() / 2), - next : ($activeSide.outerHeight() / 2) - } - } - ; - module.verbose('Setting the initial animation position as below', $nextSide, box); - $activeSide - .css({ - 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' - }) - ; - $nextSide - .addClass(className.animating) - .css({ - 'display' : 'block', - 'top' : box.origin + 'px', - 'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px)' - }) - ; - }, - - left: function() { - var - box = { - origin : ( ( $activeSide.outerWidth() - $nextSide.outerWidth() ) / 2), - depth : { - active : ($nextSide.outerWidth() / 2), - next : ($activeSide.outerWidth() / 2) - } - } - ; - module.verbose('Setting the initial animation position as left', $nextSide, box); - $activeSide - .css({ - 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' - }) - ; - $nextSide - .addClass(className.animating) - .css({ - 'display' : 'block', - 'left' : box.origin + 'px', - 'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px)' - }) - ; - }, - - right: function() { - var - box = { - origin : ( ( $activeSide.outerWidth() - $nextSide.outerWidth() ) / 2), - depth : { - active : ($nextSide.outerWidth() / 2), - next : ($activeSide.outerWidth() / 2) - } - } - ; - module.verbose('Setting the initial animation position as left', $nextSide, box); - $activeSide - .css({ - 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' - }) - ; - $nextSide - .addClass(className.animating) - .css({ - 'display' : 'block', - 'left' : box.origin + 'px', - 'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px)' - }) - ; - }, - - behind: function() { - var - box = { - origin : ( ( $activeSide.outerWidth() - $nextSide.outerWidth() ) / 2), - depth : { - active : ($nextSide.outerWidth() / 2), - next : ($activeSide.outerWidth() / 2) - } - } - ; - module.verbose('Setting the initial animation position as behind', $nextSide, box); - $activeSide - .css({ - 'transform' : 'rotateY(0deg)' - }) - ; - $nextSide - .addClass(className.animating) - .css({ - 'display' : 'block', - 'left' : box.origin + 'px', - 'transform' : 'rotateY(-180deg)' - }) - ; - } - }, - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.shape.settings = { - - // module info - name : 'Shape', - - // debug content outputted to console - debug : true, - - // verbose debug output - verbose : true, - - // performance data output - performance: true, - - // event namespace - namespace : 'shape', - - // callback occurs on side change - beforeChange : function() {}, - onChange : function() {}, - - // animation duration - duration : 700, - - // possible errors - error: { - side : 'You tried to switch to a side that does not exist.', - method : 'The method you called is not defined' - }, - - // classnames used - className : { - animating : 'animating', - hidden : 'hidden', - loading : 'loading', - active : 'active' - }, - - // selectors used - selector : { - sides : '.sides', - side : '.side' - } - -}; - - -})( jQuery, window , document ); -/* - * # Semantic - Dropdown - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.sidebar = function(parameters) { - var - $allModules = $(this), - $body = $('body'), - $head = $('head'), - - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - returnedValue - ; - - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.sidebar.settings, parameters) - : $.extend({}, $.fn.sidebar.settings), - - selector = settings.selector, - className = settings.className, - namespace = settings.namespace, - error = settings.error, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - - $module = $(this), - $style = $('style[title=' + namespace + ']'), - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - initialize: function() { - module.debug('Initializing sidebar', $module); - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.verbose('Destroying previous module for', $module); - $module - .off(eventNamespace) - .removeData(moduleNamespace) - ; - }, - - refresh: function() { - module.verbose('Refreshing selector cache'); - $style = $('style[title=' + namespace + ']'); - }, - - attachEvents: function(selector, event) { - var - $toggle = $(selector) - ; - event = $.isFunction(module[event]) - ? module[event] - : module.toggle - ; - if($toggle.size() > 0) { - module.debug('Attaching sidebar events to element', selector, event); - $toggle - .off(eventNamespace) - .on('click' + eventNamespace, event) - ; - } - else { - module.error(error.notFound); - } - }, - - show: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - module.debug('Showing sidebar', callback); - if(module.is.closed()) { - if(!settings.overlay) { - if(settings.exclusive) { - module.hideAll(); - } - module.pushPage(); - } - module.set.active(); - callback(); - $.proxy(settings.onChange, element)(); - $.proxy(settings.onShow, element)(); - } - else { - module.debug('Sidebar is already visible'); - } - }, - - hide: function(callback) { - callback = $.isFunction(callback) - ? callback - : function(){} - ; - module.debug('Hiding sidebar', callback); - if(module.is.open()) { - if(!settings.overlay) { - module.pullPage(); - module.remove.pushed(); - } - module.remove.active(); - callback(); - $.proxy(settings.onChange, element)(); - $.proxy(settings.onHide, element)(); - } - }, - - hideAll: function() { - $(selector.sidebar) - .filter(':visible') - .sidebar('hide') - ; - }, - - toggle: function() { - if(module.is.closed()) { - module.show(); - } - else { - module.hide(); - } - }, - - pushPage: function() { - var - direction = module.get.direction(), - distance = (module.is.vertical()) - ? $module.outerHeight() - : $module.outerWidth() - ; - if(settings.useCSS) { - module.debug('Using CSS to animate body'); - module.add.bodyCSS(direction, distance); - module.set.pushed(); - } - else { - module.animatePage(direction, distance, module.set.pushed); - } - }, - - pullPage: function() { - var - direction = module.get.direction() - ; - if(settings.useCSS) { - module.debug('Resetting body position css'); - module.remove.bodyCSS(); - } - else { - module.debug('Resetting body position using javascript'); - module.animatePage(direction, 0); - } - module.remove.pushed(); - }, - - animatePage: function(direction, distance) { - var - animateSettings = {} - ; - animateSettings['padding-' + direction] = distance; - module.debug('Using javascript to animate body', animateSettings); - $body - .animate(animateSettings, settings.duration, module.set.pushed) - ; - }, - - add: { - bodyCSS: function(direction, distance) { - var - style - ; - if(direction !== className.bottom) { - style = '' - + '' - ; - } - $head.append(style); - module.debug('Adding body css to head', $style); - } - }, - - remove: { - bodyCSS: function() { - module.debug('Removing body css styles', $style); - module.refresh(); - $style.remove(); - }, - active: function() { - $module.removeClass(className.active); - }, - pushed: function() { - module.verbose('Removing body push state', module.get.direction()); - $body - .removeClass(className[ module.get.direction() ]) - .removeClass(className.pushed) - ; - } - }, - - set: { - active: function() { - $module.addClass(className.active); - }, - pushed: function() { - module.verbose('Adding body push state', module.get.direction()); - $body - .addClass(className[ module.get.direction() ]) - .addClass(className.pushed) - ; - } - }, - - get: { - direction: function() { - if($module.hasClass(className.top)) { - return className.top; - } - else if($module.hasClass(className.right)) { - return className.right; - } - else if($module.hasClass(className.bottom)) { - return className.bottom; - } - else { - return className.left; - } - }, - transitionEvent: function() { - var - element = document.createElement('element'), - transitions = { - 'transition' :'transitionend', - 'OTransition' :'oTransitionEnd', - 'MozTransition' :'transitionend', - 'WebkitTransition' :'webkitTransitionEnd' - }, - transition - ; - for(transition in transitions){ - if( element.style[transition] !== undefined ){ - return transitions[transition]; - } - } - } - }, - - is: { - open: function() { - return $module.is(':animated') || $module.hasClass(className.active); - }, - closed: function() { - return !module.is.open(); - }, - vertical: function() { - return $module.hasClass(className.top); - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.sidebar.settings = { - - name : 'Sidebar', - namespace : 'sidebar', - - verbose : true, - debug : true, - performance : true, - - useCSS : true, - exclusive : true, - overlay : false, - duration : 300, - - onChange : function(){}, - onShow : function(){}, - onHide : function(){}, - - className: { - active : 'active', - pushed : 'pushed', - top : 'top', - left : 'left', - right : 'right', - bottom : 'bottom' - }, - - selector: { - sidebar: '.ui.sidebar' - }, - - error : { - method : 'The method you called is not defined.', - notFound : 'There were no elements that matched the specified selector' - } - -}; - -})( jQuery, window , document ); -/* - * # Semantic - Tab - * http://github.com/jlukic/semantic-ui/ - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - - -;(function ($, window, document, undefined) { - - $.fn.tab = function(parameters) { - - var - settings = $.extend(true, {}, $.fn.tab.settings, parameters), - - $module = $(this), - $tabs = $(settings.context).find(settings.selector.tabs), - - moduleSelector = $module.selector || '', - - cache = {}, - firstLoad = true, - recursionDepth = 0, - - activeTabPath, - parameterArray, - historyEvent, - - element = this, - time = new Date().getTime(), - performance = [], - - className = settings.className, - metadata = settings.metadata, - error = settings.error, - - eventNamespace = '.' + settings.namespace, - moduleNamespace = 'module-' + settings.namespace, - - instance = $module.data(moduleNamespace), - - query = arguments[0], - methodInvoked = (instance !== undefined && typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - - module, - returnedValue - ; - - module = { - - initialize: function() { - module.debug('Initializing Tabs', $module); - - // set up automatic routing - if(settings.auto) { - module.verbose('Setting up automatic tab retrieval from server'); - settings.apiSettings = { - url: settings.path + '/{$tab}' - }; - } - - // attach history events - if(settings.history) { - module.debug('Initializing page state'); - if( $.address === undefined ) { - module.error(error.state); - return false; - } - else { - if(settings.historyType == 'html5') { - module.debug('Using HTML5 to manage state'); - if(settings.path !== false) { - $.address - .history(true) - .state(settings.path) - ; - } - else { - module.error(error.path); - return false; - } - } - $.address - .unbind('change') - .bind('change', module.event.history.change) - ; - } - } - - // attach events if navigation wasn't set to window - if( !$.isWindow( element ) ) { - module.debug('Attaching tab activation events to element', $module); - $module - .on('click' + eventNamespace, module.event.click) - ; - } - module.instantiate(); - }, - - instantiate: function () { - module.verbose('Storing instance of module', module); - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.debug('Destroying tabs', $module); - $module - .removeData(moduleNamespace) - .off(eventNamespace) - ; - }, - - event: { - click: function(event) { - var - tabPath = $(this).data(metadata.tab) - ; - if(tabPath !== undefined) { - if(settings.history) { - module.verbose('Updating page state', event); - $.address.value(tabPath); - } - else { - module.verbose('Changing tab without state management', event); - module.changeTab(tabPath); - } - event.preventDefault(); - } - else { - module.debug('No tab specified'); - } - }, - history: { - change: function(event) { - var - tabPath = event.pathNames.join('/') || module.get.initialPath(), - pageTitle = settings.templates.determineTitle(tabPath) || false - ; - module.debug('History change event', tabPath, event); - historyEvent = event; - if(tabPath !== undefined) { - module.changeTab(tabPath); - } - if(pageTitle) { - $.address.title(pageTitle); - } - } - } - }, - - refresh: function() { - if(activeTabPath) { - module.debug('Refreshing tab', activeTabPath); - module.changeTab(activeTabPath); - } - }, - - cache: { - - read: function(cacheKey) { - return (cacheKey !== undefined) - ? cache[cacheKey] - : false - ; - }, - add: function(cacheKey, content) { - cacheKey = cacheKey || activeTabPath; - module.debug('Adding cached content for', cacheKey); - cache[cacheKey] = content; - }, - remove: function(cacheKey) { - cacheKey = cacheKey || activeTabPath; - module.debug('Removing cached content for', cacheKey); - delete cache[cacheKey]; - } - }, - - set: { - state: function(url) { - $.address.value(url); - } - }, - - changeTab: function(tabPath) { - var - pushStateAvailable = (window.history && window.history.pushState), - shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad), - remoteContent = (settings.auto || $.isPlainObject(settings.apiSettings) ), - // only get default path if not remote content - pathArray = (remoteContent && !shouldIgnoreLoad) - ? module.utilities.pathToArray(tabPath) - : module.get.defaultPathArray(tabPath) - ; - tabPath = module.utilities.arrayToPath(pathArray); - module.deactivate.all(); - $.each(pathArray, function(index, tab) { - var - currentPathArray = pathArray.slice(0, index + 1), - currentPath = module.utilities.arrayToPath(currentPathArray), - - isTab = module.is.tab(currentPath), - isLastIndex = (index + 1 == pathArray.length), - - $tab = module.get.tabElement(currentPath), - nextPathArray, - nextPath, - isLastTab - ; - module.verbose('Looking for tab', tab); - if(isTab) { - module.verbose('Tab was found', tab); - - // scope up - activeTabPath = currentPath; - parameterArray = module.utilities.filterArray(pathArray, currentPathArray); - - if(isLastIndex) { - isLastTab = true; - } - else { - nextPathArray = pathArray.slice(0, index + 2); - nextPath = module.utilities.arrayToPath(nextPathArray); - isLastTab = ( !module.is.tab(nextPath) ); - if(isLastTab) { - module.verbose('Tab parameters found', nextPathArray); - } - } - if(isLastTab && remoteContent) { - if(!shouldIgnoreLoad) { - module.activate.navigation(currentPath); - module.content.fetch(currentPath, tabPath); - } - else { - module.debug('Ignoring remote content on first tab load', currentPath); - firstLoad = false; - module.cache.add(tabPath, $tab.html()); - module.activate.all(currentPath); - $.proxy(settings.onTabInit, $tab)(currentPath, parameterArray, historyEvent); - $.proxy(settings.onTabLoad, $tab)(currentPath, parameterArray, historyEvent); - } - return false; - } - else { - module.debug('Opened local tab', currentPath); - module.activate.all(currentPath); - if( !module.cache.read(currentPath) ) { - module.cache.add(currentPath, true); - module.debug('First time tab loaded calling tab init'); - $.proxy(settings.onTabInit, $tab)(currentPath, parameterArray, historyEvent); - } - $.proxy(settings.onTabLoad, $tab)(currentPath, parameterArray, historyEvent); - } - } - else { - module.error(error.missingTab, tab); - return false; - } - }); - }, - - content: { - - fetch: function(tabPath, fullTabPath) { - var - $tab = module.get.tabElement(tabPath), - apiSettings = { - dataType : 'html', - stateContext : $tab, - success : function(response) { - module.cache.add(fullTabPath, response); - module.content.update(tabPath, response); - if(tabPath == activeTabPath) { - module.debug('Content loaded', tabPath); - module.activate.tab(tabPath); - } - else { - module.debug('Content loaded in background', tabPath); - } - $.proxy(settings.onTabInit, $tab)(tabPath, parameterArray, historyEvent); - $.proxy(settings.onTabLoad, $tab)(tabPath, parameterArray, historyEvent); - }, - urlData: { tab: fullTabPath } - }, - request = $tab.data(metadata.promise) || false, - existingRequest = ( request && request.state() === 'pending' ), - requestSettings, - cachedContent - ; - - fullTabPath = fullTabPath || tabPath; - cachedContent = module.cache.read(fullTabPath); - - if(settings.cache && cachedContent) { - module.debug('Showing existing content', fullTabPath); - module.content.update(tabPath, cachedContent); - module.activate.tab(tabPath); - $.proxy(settings.onTabLoad, $tab)(tabPath, parameterArray, historyEvent); - } - else if(existingRequest) { - module.debug('Content is already loading', fullTabPath); - $tab - .addClass(className.loading) - ; - } - else if($.api !== undefined) { - console.log(settings.apiSettings); - requestSettings = $.extend(true, { headers: { 'X-Remote': true } }, settings.apiSettings, apiSettings); - module.debug('Retrieving remote content', fullTabPath, requestSettings); - $.api( requestSettings ); - } - else { - module.error(error.api); - } - }, - - update: function(tabPath, html) { - module.debug('Updating html for', tabPath); - var - $tab = module.get.tabElement(tabPath) - ; - $tab - .html(html) - ; - } - }, - - activate: { - all: function(tabPath) { - module.activate.tab(tabPath); - module.activate.navigation(tabPath); - }, - tab: function(tabPath) { - var - $tab = module.get.tabElement(tabPath) - ; - module.verbose('Showing tab content for', $tab); - $tab.addClass(className.active); - }, - navigation: function(tabPath) { - var - $navigation = module.get.navElement(tabPath) - ; - module.verbose('Activating tab navigation for', $navigation, tabPath); - $navigation.addClass(className.active); - } - }, - - deactivate: { - all: function() { - module.deactivate.navigation(); - module.deactivate.tabs(); - }, - navigation: function() { - $module - .removeClass(className.active) - ; - }, - tabs: function() { - $tabs - .removeClass(className.active + ' ' + className.loading) - ; - } - }, - - is: { - tab: function(tabName) { - return (tabName !== undefined) - ? ( module.get.tabElement(tabName).size() > 0 ) - : false - ; - } - }, - - get: { - initialPath: function() { - return $module.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab); - }, - path: function() { - return $.address.value(); - }, - // adds default tabs to tab path - defaultPathArray: function(tabPath) { - return module.utilities.pathToArray( module.get.defaultPath(tabPath) ); - }, - defaultPath: function(tabPath) { - var - $defaultNav = $module.filter('[data-' + metadata.tab + '^="' + tabPath + '/"]').eq(0), - defaultTab = $defaultNav.data(metadata.tab) || false - ; - if( defaultTab ) { - module.debug('Found default tab', defaultTab); - if(recursionDepth < settings.maxDepth) { - recursionDepth++; - return module.get.defaultPath(defaultTab); - } - module.error(error.recursion); - } - else { - module.debug('No default tabs found for', tabPath, $tabs); - } - recursionDepth = 0; - return tabPath; - }, - navElement: function(tabPath) { - tabPath = tabPath || activeTabPath; - return $module.filter('[data-' + metadata.tab + '="' + tabPath + '"]'); - }, - tabElement: function(tabPath) { - var - $fullPathTab, - $simplePathTab, - tabPathArray, - lastTab - ; - tabPath = tabPath || activeTabPath; - tabPathArray = module.utilities.pathToArray(tabPath); - lastTab = module.utilities.last(tabPathArray); - $fullPathTab = $tabs.filter('[data-' + metadata.tab + '="' + lastTab + '"]'); - $simplePathTab = $tabs.filter('[data-' + metadata.tab + '="' + tabPath + '"]'); - return ($fullPathTab.size() > 0) - ? $fullPathTab - : $simplePathTab - ; - }, - tab: function() { - return activeTabPath; - } - }, - - utilities: { - filterArray: function(keepArray, removeArray) { - return $.grep(keepArray, function(keepValue) { - return ( $.inArray(keepValue, removeArray) == -1); - }); - }, - last: function(array) { - return $.isArray(array) - ? array[ array.length - 1] - : false - ; - }, - pathToArray: function(pathName) { - if(pathName === undefined) { - pathName = activeTabPath; - } - return typeof pathName == 'string' - ? pathName.split('/') - : [pathName] - ; - }, - arrayToPath: function(pathArray) { - return $.isArray(pathArray) - ? pathArray.join('/') - : false - ; - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - - return (returnedValue !== undefined) - ? returnedValue - : this - ; - - }; - - // shortcut for tabbed content with no defined navigation - $.tab = function(settings) { - $(window).tab(settings); - }; - - $.fn.tab.settings = { - - name : 'Tab', - verbose : true, - debug : true, - performance : true, - namespace : 'tab', - - // only called first time a tab's content is loaded (when remote source) - onTabInit : function(tabPath, parameterArray, historyEvent) {}, - // called on every load - onTabLoad : function(tabPath, parameterArray, historyEvent) {}, - - templates : { - determineTitle: function(tabArray) {} - }, - - // uses pjax style endpoints fetching content from same url with remote-content headers - auto : false, - history : true, - historyType : 'hash', - path : false, - - context : 'body', - - // max depth a tab can be nested - maxDepth : 25, - // dont load content on first load - ignoreFirstLoad : false, - // load tab content new every tab click - alwaysRefresh : false, - // cache the content requests to pull locally - cache : true, - // settings for api call - apiSettings : false, - - error: { - api : 'You attempted to load content without API module', - method : 'The method you called is not defined', - missingTab : 'Tab cannot be found', - noContent : 'The tab you specified is missing a content url.', - path : 'History enabled, but no path was specified', - recursion : 'Max recursive depth reached', - state : 'The state library has not been initialized' - }, - - metadata : { - tab : 'tab', - loaded : 'loaded', - promise: 'promise' - }, - - className : { - loading : 'loading', - active : 'active' - }, - - selector : { - tabs : '.ui.tab' - } - - }; - -})( jQuery, window , document ); - -/* - * # Semantic - Transition - * http://github.com/jlukic/semantic-ui/ - * - * - * Copyright 2013 Contributors - * Released under the MIT license - * http://opensource.org/licenses/MIT - * - */ - -;(function ( $, window, document, undefined ) { - -$.fn.transition = function() { - var - $allModules = $(this), - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - moduleArguments = arguments, - query = moduleArguments[0], - queryArguments = [].slice.call(arguments, 1), - methodInvoked = (typeof query === 'string'), - - requestAnimationFrame = window.requestAnimationFrame - || window.mozRequestAnimationFrame - || window.webkitRequestAnimationFrame - || window.msRequestAnimationFrame - || function(callback) { setTimeout(callback, 0); }, - - returnedValue - ; - $allModules - .each(function() { - var - $module = $(this), - element = this, - - // set at run time - settings, - instance, - - error, - className, - metadata, - animationEnd, - animationName, - - namespace, - moduleNamespace, - module - ; - - module = { - - initialize: function() { - // get settings - settings = module.get.settings.apply(element, moduleArguments); - module.verbose('Converted arguments into settings object', settings); - - // set shortcuts - error = settings.error; - className = settings.className; - namespace = settings.namespace; - metadata = settings.metadata; - moduleNamespace = 'module-' + namespace; - - animationEnd = module.get.animationEvent(); - animationName = module.get.animationName(); - - instance = $module.data(moduleNamespace); - - if(instance === undefined) { - module.instantiate(); - } - if(methodInvoked) { - methodInvoked = module.invoke(query); - } - // no internal method was found matching query or query not made - if(methodInvoked === false) { - module.animate(); - } - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, instance) - ; - }, - - destroy: function() { - module.verbose('Destroying previous module for', element); - $module - .removeData(moduleNamespace) - ; - }, - - animate: function(overrideSettings) { - settings = overrideSettings || settings; - if(!module.is.supported()) { - module.error(error.support); - return false; - } - module.debug('Preparing animation', settings.animation); - if(module.is.animating()) { - if(settings.queue) { - module.queue(settings.animation); - } - return false; - } - module.save.conditions(); - module.set.duration(settings.duration); - module.set.animating(); - module.repaint(); - $module - .addClass(className.transition) - .addClass(settings.animation) - .one(animationEnd, module.complete) - ; - if(!module.has.direction() && module.can.transition()) { - module.set.direction(); - } - if(!module.has.transitionAvailable) { - module.restore.conditions(); - module.error(error.noAnimation); - return false; - } - module.show(); - module.debug('Starting tween', settings.animation, $module.attr('class')); - }, - - queue: function(animation) { - module.debug('Queueing animation of', animation); - instance.queuing = true; - $module - .one(animationEnd, function() { - instance.queuing = false; - module.animate.apply(this, settings); - }) - ; - }, - - complete: function () { - module.verbose('CSS animation complete', settings.animation); - if(!module.is.looping()) { - if($module.hasClass(className.outward)) { - module.restore.conditions(); - module.hide(); - $.proxy(settings.onHide, this)(); - } - else if($module.hasClass(className.inward)) { - module.restore.conditions(); - module.show(); - $.proxy(settings.onShow, this)(); - } - else { - module.restore.conditions(); - } - module.remove.animating(); - } - $.proxy(settings.complete, this)(); - }, - - repaint: function(fakeAssignment) { - module.verbose('Forcing repaint event'); - fakeAssignment = element.offsetWidth; - }, - - has: { - direction: function(animation) { - animation = animation || settings.animation; - if( $module.hasClass(className.inward) || $module.hasClass(className.outward) ) { - return true; - } - }, - transitionAvailable: function() { - if($module.css(animationName) !== 'none') { - module.debug('CSS definition found'); - return true; - } - else { - module.debug('Unable to find css definition'); - return false; - } - } - }, - - set: { - - animating: function() { - $module.addClass(className.animating); - }, - - direction: function() { - if($module.is(':visible')) { - module.debug('Automatically determining the direction of animation', 'Outward'); - $module - .addClass(className.outward) - .removeClass(className.inward) - ; - } - else { - module.debug('Automatically determining the direction of animation', 'Inward'); - $module - .addClass(className.inward) - .removeClass(className.outward) - ; - } - }, - - looping: function() { - module.debug('Transition set to loop'); - $module - .addClass(className.looping) - ; - }, - - duration: function(duration) { - duration = duration || settings.duration; - duration = (typeof duration == 'number') - ? duration + 'ms' - : duration - ; - module.verbose('Setting animation duration', duration); - $module - .css({ - '-webkit-animation-duration': duration, - '-moz-animation-duration': duration, - '-ms-animation-duration': duration, - '-o-animation-duration': duration, - 'animation-duration': duration - }) - ; - } - }, - - save: { - conditions: function() { - module.cache = { - className : $module.attr('class'), - style : $module.attr('style') - }; - module.verbose('Saving original attributes', module.cache); - } - }, - - restore: { - conditions: function() { - if(typeof module.cache === undefined) { - module.error(error.cache); - return false; - } - if(module.cache.className) { - $module.attr('class', module.cache.className); - } - else { - $module.removeAttr('class'); - } - if(module.cache.style) { - $module.attr('style', module.cache.style); - } - else { - $module.removeAttr('style'); - } - if(module.is.looping()) { - module.remove.looping(); - } - module.verbose('Restoring original attributes', module.cache); - } - }, - - remove: { - - animating: function() { - $module.removeClass(className.animating); - }, - - looping: function() { - module.debug('Transitions are no longer looping'); - $module - .removeClass(className.looping) - ; - module.repaint(); - } - - }, - - get: { - - settings: function(animation, duration, complete) { - // single settings object - if($.isPlainObject(animation)) { - return $.extend(true, {}, $.fn.transition.settings, animation); - } - // all arguments provided - else if(typeof complete == 'function') { - return $.extend(true, {}, $.fn.transition.settings, { - animation : animation, - complete : complete, - duration : duration - }); - } - // only duration provided - else if(typeof duration == 'string' || typeof duration == 'number') { - return $.extend(true, {}, $.fn.transition.settings, { - animation : animation, - duration : duration - }); - } - // duration is actually settings object - else if(typeof duration == 'object') { - return $.extend(true, {}, $.fn.transition.settings, duration, { - animation : animation - }); - } - // duration is actually callback - else if(typeof duration == 'function') { - return $.extend(true, {}, $.fn.transition.settings, { - animation : animation, - complete : duration - }); - } - // only animation provided - else { - return $.extend(true, {}, $.fn.transition.settings, { - animation : animation - }); - } - return $.extend({}, $.fn.transition.settings); - }, - - animationName: function() { - var - element = document.createElement('div'), - animations = { - 'animation' :'animationName', - 'OAnimation' :'oAnimationName', - 'MozAnimation' :'mozAnimationName', - 'WebkitAnimation' :'webkitAnimationName' - }, - animation - ; - for(animation in animations){ - if( element.style[animation] !== undefined ){ - module.verbose('Determined animation vendor name property', animations[animation]); - return animations[animation]; - } - } - return false; - }, - - animationEvent: function() { - var - element = document.createElement('div'), - animations = { - 'animation' :'animationend', - 'OAnimation' :'oAnimationEnd', - 'MozAnimation' :'mozAnimationEnd', - 'WebkitAnimation' :'webkitAnimationEnd' - }, - animation - ; - for(animation in animations){ - if( element.style[animation] !== undefined ){ - module.verbose('Determined animation vendor end event', animations[animation]); - return animations[animation]; - } - } - return false; - } - - }, - - can: { - transition: function() { - var - $clone = $('
').addClass( $module.attr('class') ).appendTo($('body')), - currentAnimation = $clone.css(animationName), - inAnimation = $clone.addClass(className.inward).css(animationName) - ; - if(currentAnimation != inAnimation) { - module.debug('In/out transitions exist'); - $clone.remove(); - return true; - } - else { - module.debug('Static animation found'); - $clone.remove(); - return false; - } - } - }, - - is: { - animating: function() { - return $module.hasClass(className.animating); - }, - looping: function() { - return $module.hasClass(className.looping); - }, - visible: function() { - return $module.is(':visible'); - }, - supported: function() { - return(animationName !== false && animationEnd !== false); - } - }, - - hide: function() { - module.verbose('Hiding element'); - $module - .removeClass(className.visible) - .addClass(className.transition) - .addClass(className.hidden) - ; - module.repaint(); - }, - show: function() { - module.verbose('Showing element'); - $module - .removeClass(className.hidden) - .addClass(className.transition) - .addClass(className.visible) - ; - module.repaint(); - }, - - start: function() { - module.verbose('Starting animation'); - $module.removeClass(className.disabled); - }, - - stop: function() { - module.debug('Stopping animation'); - $module.addClass(className.disabled); - }, - - toggle: function() { - module.debug('Toggling play status'); - $module.toggleClass(className.disabled); - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found || false; - } - }; - module.initialize(); - }) - ; - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.transition.settings = { - - // module info - name : 'Transition', - - // debug content outputted to console - debug : false, - - // verbose debug output - verbose : true, - - // performance data output - performance : true, - - // event namespace - namespace : 'transition', - - // animation complete event - complete : function() {}, - onShow : function() {}, - onHide : function() {}, - - // animation duration - animation : 'fade', - duration : '700ms', - - // new animations will occur after previous ones - queue : true, - - className : { - animating : 'animating', - disabled : 'disabled', - hidden : 'hidden', - inward : 'in', - loading : 'loading', - looping : 'looping', - outward : 'out', - transition : 'ui transition', - visible : 'visible' - }, - - // possible errors - error: { - noAnimation : 'There is no css animation matching the one you specified.', - method : 'The method you called is not defined', - support : 'This browser does not support CSS animations' - } - -}; - - -})( jQuery, window , document ); - -/* ****************************** - Module - Video - Author: Jack Lukic - - This is a video playlist and video embed plugin which helps - provide helpers for adding embed code for vimeo and youtube and - abstracting event handlers for each library - -****************************** */ - -;(function ($, window, document, undefined) { - -$.fn.video = function(parameters) { - - var - $allModules = $(this), - - moduleSelector = $allModules.selector || '', - - time = new Date().getTime(), - performance = [], - - query = arguments[0], - methodInvoked = (typeof query == 'string'), - queryArguments = [].slice.call(arguments, 1), - - returnedValue - ; - - $allModules - .each(function() { - var - settings = ( $.isPlainObject(parameters) ) - ? $.extend(true, {}, $.fn.video.settings, parameters) - : $.extend({}, $.fn.video.settings), - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, - - eventNamespace = '.' + namespace, - moduleNamespace = 'module-' + namespace, - - $module = $(this), - $placeholder = $module.find(selector.placeholder), - $playButton = $module.find(selector.playButton), - $embed = $module.find(selector.embed), - - element = this, - instance = $module.data(moduleNamespace), - module - ; - - module = { - - initialize: function() { - module.debug('Initializing video'); - $placeholder - .on('click' + eventNamespace, module.play) - ; - $playButton - .on('click' + eventNamespace, module.play) - ; - module.instantiate(); - }, - - instantiate: function() { - module.verbose('Storing instance of module', module); - instance = module; - $module - .data(moduleNamespace, module) - ; - }, - - destroy: function() { - module.verbose('Destroying previous instance of video'); - $module - .removeData(moduleNamespace) - .off(eventNamespace) - ; - $placeholder - .off(eventNamespace) - ; - $playButton - .off(eventNamespace) - ; - }, - - // sets new video - change: function(source, id, url) { - module.debug('Changing video to ', source, id, url); - $module - .data(metadata.source, source) - .data(metadata.id, id) - .data(metadata.url, url) - ; - settings.onChange(); - }, - - // clears video embed - reset: function() { - module.debug('Clearing video embed and showing placeholder'); - $module - .removeClass(className.active) - ; - $embed - .html(' ') - ; - $placeholder - .show() - ; - settings.onReset(); - }, - - // plays current video - play: function() { - module.debug('Playing video'); - var - source = $module.data(metadata.source) || false, - url = $module.data(metadata.url) || false, - id = $module.data(metadata.id) || false - ; - $embed - .html( module.generate.html(source, id, url) ) - ; - $module - .addClass(className.active) - ; - settings.onPlay(); - }, - - generate: { - // generates iframe html - html: function(source, id, url) { - module.debug('Generating embed html'); - var - width = (settings.width == 'auto') - ? $module.width() - : settings.width, - height = (settings.height == 'auto') - ? $module.height() - : settings.height, - html - ; - if(source && id) { - if(source == 'vimeo') { - html = '' - + '' - ; - } - else if(source == 'youtube') { - html = '' - + '' - ; - } - } - else if(url) { - html = '' - + '' - ; - } - else { - module.error(error.noVideo); - } - return html; - }, - - // generate url parameters - url: function(source) { - var - api = (settings.api) - ? 1 - : 0, - autoplay = (settings.autoplay) - ? 1 - : 0, - hd = (settings.hd) - ? 1 - : 0, - showUI = (settings.showUI) - ? 1 - : 0, - // opposite used for some params - hideUI = !(settings.showUI) - ? 1 - : 0, - url = '' - ; - if(source == 'vimeo') { - url = '' - + 'api=' + api - + '&title=' + showUI - + '&byline=' + showUI - + '&portrait=' + showUI - + '&autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - if(source == 'ustream') { - url = '' - + 'autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - else if(source == 'youtube') { - url = '' - + 'enablejsapi=' + api - + '&autoplay=' + autoplay - + '&autohide=' + hideUI - + '&hq=' + hd - + '&modestbranding=1' - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - return url; - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.video.settings = { - - name : 'Video', - namespace : 'video', - - debug : true, - verbose : true, - performance : true, - - metadata : { - source : 'source', - id : 'id', - url : 'url' - }, - - onPlay : function(){}, - onReset : function(){}, - onChange : function(){}, - - // callbacks not coded yet (needs to use jsapi) - onPause : function() {}, - onStop : function() {}, - - width : 'auto', - height : 'auto', - - autoplay : false, - color : '#442359', - hd : true, - showUI : false, - api : true, - - error : { - noVideo : 'No video specified', - method : 'The method you called is not defined' - }, - - className : { - active : 'active' - }, - - selector : { - embed : '.embed', - placeholder : '.placeholder', - playButton : '.play' - } -}; - - -})( jQuery, window , document ); diff --git a/web/public/resource/javascript/handlebars-v4.0.5.js b/web/public/resource/javascript/handlebars-v4.0.5.js deleted file mode 100644 index 289ae45..0000000 --- a/web/public/resource/javascript/handlebars-v4.0.5.js +++ /dev/null @@ -1,4608 +0,0 @@ -/*! - - handlebars v4.0.5 - -Copyright (C) 2011-2015 by Yehuda Katz - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -@license -*/ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["Handlebars"] = factory(); - else - root["Handlebars"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - - var _handlebarsRuntime = __webpack_require__(2); - - var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime); - - // Compiler imports - - var _handlebarsCompilerAst = __webpack_require__(21); - - var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst); - - var _handlebarsCompilerBase = __webpack_require__(22); - - var _handlebarsCompilerCompiler = __webpack_require__(27); - - var _handlebarsCompilerJavascriptCompiler = __webpack_require__(28); - - var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler); - - var _handlebarsCompilerVisitor = __webpack_require__(25); - - var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor); - - var _handlebarsNoConflict = __webpack_require__(20); - - var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); - - var _create = _handlebarsRuntime2['default'].create; - function create() { - var hb = _create(); - - hb.compile = function (input, options) { - return _handlebarsCompilerCompiler.compile(input, options, hb); - }; - hb.precompile = function (input, options) { - return _handlebarsCompilerCompiler.precompile(input, options, hb); - }; - - hb.AST = _handlebarsCompilerAst2['default']; - hb.Compiler = _handlebarsCompilerCompiler.Compiler; - hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default']; - hb.Parser = _handlebarsCompilerBase.parser; - hb.parse = _handlebarsCompilerBase.parse; - - return hb; - } - - var inst = create(); - inst.create = create; - - _handlebarsNoConflict2['default'](inst); - - inst.Visitor = _handlebarsCompilerVisitor2['default']; - - inst['default'] = inst; - - exports['default'] = inst; - module.exports = exports['default']; - -/***/ }, -/* 1 */ -/***/ function(module, exports) { - - "use strict"; - - exports["default"] = function (obj) { - return obj && obj.__esModule ? obj : { - "default": obj - }; - }; - - exports.__esModule = true; - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireWildcard = __webpack_require__(3)['default']; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - - var _handlebarsBase = __webpack_require__(4); - - var base = _interopRequireWildcard(_handlebarsBase); - - // Each of these augment the Handlebars object. No need to setup here. - // (This is done to easily share code between commonjs and browse envs) - - var _handlebarsSafeString = __webpack_require__(18); - - var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString); - - var _handlebarsException = __webpack_require__(6); - - var _handlebarsException2 = _interopRequireDefault(_handlebarsException); - - var _handlebarsUtils = __webpack_require__(5); - - var Utils = _interopRequireWildcard(_handlebarsUtils); - - var _handlebarsRuntime = __webpack_require__(19); - - var runtime = _interopRequireWildcard(_handlebarsRuntime); - - var _handlebarsNoConflict = __webpack_require__(20); - - var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); - - // For compatibility and usage outside of module systems, make the Handlebars object a namespace - function create() { - var hb = new base.HandlebarsEnvironment(); - - Utils.extend(hb, base); - hb.SafeString = _handlebarsSafeString2['default']; - hb.Exception = _handlebarsException2['default']; - hb.Utils = Utils; - hb.escapeExpression = Utils.escapeExpression; - - hb.VM = runtime; - hb.template = function (spec) { - return runtime.template(spec, hb); - }; - - return hb; - } - - var inst = create(); - inst.create = create; - - _handlebarsNoConflict2['default'](inst); - - inst['default'] = inst; - - exports['default'] = inst; - module.exports = exports['default']; - -/***/ }, -/* 3 */ -/***/ function(module, exports) { - - "use strict"; - - exports["default"] = function (obj) { - if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; - - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } - } - - newObj["default"] = obj; - return newObj; - } - }; - - exports.__esModule = true; - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - exports.HandlebarsEnvironment = HandlebarsEnvironment; - - var _utils = __webpack_require__(5); - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - var _helpers = __webpack_require__(7); - - var _decorators = __webpack_require__(15); - - var _logger = __webpack_require__(17); - - var _logger2 = _interopRequireDefault(_logger); - - var VERSION = '4.0.5'; - exports.VERSION = VERSION; - var COMPILER_REVISION = 7; - - exports.COMPILER_REVISION = COMPILER_REVISION; - var REVISION_CHANGES = { - 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it - 2: '== 1.0.0-rc.3', - 3: '== 1.0.0-rc.4', - 4: '== 1.x.x', - 5: '== 2.0.0-alpha.x', - 6: '>= 2.0.0-beta.1', - 7: '>= 4.0.0' - }; - - exports.REVISION_CHANGES = REVISION_CHANGES; - var objectType = '[object Object]'; - - function HandlebarsEnvironment(helpers, partials, decorators) { - this.helpers = helpers || {}; - this.partials = partials || {}; - this.decorators = decorators || {}; - - _helpers.registerDefaultHelpers(this); - _decorators.registerDefaultDecorators(this); - } - - HandlebarsEnvironment.prototype = { - constructor: HandlebarsEnvironment, - - logger: _logger2['default'], - log: _logger2['default'].log, - - registerHelper: function registerHelper(name, fn) { - if (_utils.toString.call(name) === objectType) { - if (fn) { - throw new _exception2['default']('Arg not supported with multiple helpers'); - } - _utils.extend(this.helpers, name); - } else { - this.helpers[name] = fn; - } - }, - unregisterHelper: function unregisterHelper(name) { - delete this.helpers[name]; - }, - - registerPartial: function registerPartial(name, partial) { - if (_utils.toString.call(name) === objectType) { - _utils.extend(this.partials, name); - } else { - if (typeof partial === 'undefined') { - throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined'); - } - this.partials[name] = partial; - } - }, - unregisterPartial: function unregisterPartial(name) { - delete this.partials[name]; - }, - - registerDecorator: function registerDecorator(name, fn) { - if (_utils.toString.call(name) === objectType) { - if (fn) { - throw new _exception2['default']('Arg not supported with multiple decorators'); - } - _utils.extend(this.decorators, name); - } else { - this.decorators[name] = fn; - } - }, - unregisterDecorator: function unregisterDecorator(name) { - delete this.decorators[name]; - } - }; - - var log = _logger2['default'].log; - - exports.log = log; - exports.createFrame = _utils.createFrame; - exports.logger = _logger2['default']; - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - 'use strict'; - - exports.__esModule = true; - exports.extend = extend; - exports.indexOf = indexOf; - exports.escapeExpression = escapeExpression; - exports.isEmpty = isEmpty; - exports.createFrame = createFrame; - exports.blockParams = blockParams; - exports.appendContextPath = appendContextPath; - var escape = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`', - '=': '=' - }; - - var badChars = /[&<>"'`=]/g, - possible = /[&<>"'`=]/; - - function escapeChar(chr) { - return escape[chr]; - } - - function extend(obj /* , ...source */) { - for (var i = 1; i < arguments.length; i++) { - for (var key in arguments[i]) { - if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { - obj[key] = arguments[i][key]; - } - } - } - - return obj; - } - - var toString = Object.prototype.toString; - - exports.toString = toString; - // Sourced from lodash - // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt - /* eslint-disable func-style */ - var isFunction = function isFunction(value) { - return typeof value === 'function'; - }; - // fallback for older versions of Chrome and Safari - /* istanbul ignore next */ - if (isFunction(/x/)) { - exports.isFunction = isFunction = function (value) { - return typeof value === 'function' && toString.call(value) === '[object Function]'; - }; - } - exports.isFunction = isFunction; - - /* eslint-enable func-style */ - - /* istanbul ignore next */ - var isArray = Array.isArray || function (value) { - return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false; - }; - - exports.isArray = isArray; - // Older IE versions do not directly support indexOf so we must implement our own, sadly. - - function indexOf(array, value) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { - return i; - } - } - return -1; - } - - function escapeExpression(string) { - if (typeof string !== 'string') { - // don't escape SafeStrings, since they're already safe - if (string && string.toHTML) { - return string.toHTML(); - } else if (string == null) { - return ''; - } else if (!string) { - return string + ''; - } - - // Force a string conversion as this will be done by the append regardless and - // the regex test will do this transparently behind the scenes, causing issues if - // an object's to string has escaped characters in it. - string = '' + string; - } - - if (!possible.test(string)) { - return string; - } - return string.replace(badChars, escapeChar); - } - - function isEmpty(value) { - if (!value && value !== 0) { - return true; - } else if (isArray(value) && value.length === 0) { - return true; - } else { - return false; - } - } - - function createFrame(object) { - var frame = extend({}, object); - frame._parent = object; - return frame; - } - - function blockParams(params, ids) { - params.path = ids; - return params; - } - - function appendContextPath(contextPath, id) { - return (contextPath ? contextPath + '.' : '') + id; - } - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - 'use strict'; - - exports.__esModule = true; - - var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack']; - - function Exception(message, node) { - var loc = node && node.loc, - line = undefined, - column = undefined; - if (loc) { - line = loc.start.line; - column = loc.start.column; - - message += ' - ' + line + ':' + column; - } - - var tmp = Error.prototype.constructor.call(this, message); - - // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work. - for (var idx = 0; idx < errorProps.length; idx++) { - this[errorProps[idx]] = tmp[errorProps[idx]]; - } - - /* istanbul ignore else */ - if (Error.captureStackTrace) { - Error.captureStackTrace(this, Exception); - } - - if (loc) { - this.lineNumber = line; - this.column = column; - } - } - - Exception.prototype = new Error(); - - exports['default'] = Exception; - module.exports = exports['default']; - -/***/ }, -/* 7 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - exports.registerDefaultHelpers = registerDefaultHelpers; - - var _helpersBlockHelperMissing = __webpack_require__(8); - - var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing); - - var _helpersEach = __webpack_require__(9); - - var _helpersEach2 = _interopRequireDefault(_helpersEach); - - var _helpersHelperMissing = __webpack_require__(10); - - var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing); - - var _helpersIf = __webpack_require__(11); - - var _helpersIf2 = _interopRequireDefault(_helpersIf); - - var _helpersLog = __webpack_require__(12); - - var _helpersLog2 = _interopRequireDefault(_helpersLog); - - var _helpersLookup = __webpack_require__(13); - - var _helpersLookup2 = _interopRequireDefault(_helpersLookup); - - var _helpersWith = __webpack_require__(14); - - var _helpersWith2 = _interopRequireDefault(_helpersWith); - - function registerDefaultHelpers(instance) { - _helpersBlockHelperMissing2['default'](instance); - _helpersEach2['default'](instance); - _helpersHelperMissing2['default'](instance); - _helpersIf2['default'](instance); - _helpersLog2['default'](instance); - _helpersLookup2['default'](instance); - _helpersWith2['default'](instance); - } - -/***/ }, -/* 8 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.__esModule = true; - - var _utils = __webpack_require__(5); - - exports['default'] = function (instance) { - instance.registerHelper('blockHelperMissing', function (context, options) { - var inverse = options.inverse, - fn = options.fn; - - if (context === true) { - return fn(this); - } else if (context === false || context == null) { - return inverse(this); - } else if (_utils.isArray(context)) { - if (context.length > 0) { - if (options.ids) { - options.ids = [options.name]; - } - - return instance.helpers.each(context, options); - } else { - return inverse(this); - } - } else { - if (options.data && options.ids) { - var data = _utils.createFrame(options.data); - data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name); - options = { data: data }; - } - - return fn(context, options); - } - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - - var _utils = __webpack_require__(5); - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - exports['default'] = function (instance) { - instance.registerHelper('each', function (context, options) { - if (!options) { - throw new _exception2['default']('Must pass iterator to #each'); - } - - var fn = options.fn, - inverse = options.inverse, - i = 0, - ret = '', - data = undefined, - contextPath = undefined; - - if (options.data && options.ids) { - contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.'; - } - - if (_utils.isFunction(context)) { - context = context.call(this); - } - - if (options.data) { - data = _utils.createFrame(options.data); - } - - function execIteration(field, index, last) { - if (data) { - data.key = field; - data.index = index; - data.first = index === 0; - data.last = !!last; - - if (contextPath) { - data.contextPath = contextPath + field; - } - } - - ret = ret + fn(context[field], { - data: data, - blockParams: _utils.blockParams([context[field], field], [contextPath + field, null]) - }); - } - - if (context && typeof context === 'object') { - if (_utils.isArray(context)) { - for (var j = context.length; i < j; i++) { - if (i in context) { - execIteration(i, i, i === context.length - 1); - } - } - } else { - var priorKey = undefined; - - for (var key in context) { - if (context.hasOwnProperty(key)) { - // We're running the iterations one step out of sync so we can detect - // the last iteration without have to scan the object twice and create - // an itermediate keys array. - if (priorKey !== undefined) { - execIteration(priorKey, i - 1); - } - priorKey = key; - i++; - } - } - if (priorKey !== undefined) { - execIteration(priorKey, i - 1, true); - } - } - } - - if (i === 0) { - ret = inverse(this); - } - - return ret; - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - exports['default'] = function (instance) { - instance.registerHelper('helperMissing', function () /* [args, ]options */{ - if (arguments.length === 1) { - // A missing field in a {{foo}} construct. - return undefined; - } else { - // Someone is actually trying to call something, blow up. - throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"'); - } - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.__esModule = true; - - var _utils = __webpack_require__(5); - - exports['default'] = function (instance) { - instance.registerHelper('if', function (conditional, options) { - if (_utils.isFunction(conditional)) { - conditional = conditional.call(this); - } - - // Default behavior is to render the positive path if the value is truthy and not empty. - // The `includeZero` option may be set to treat the condtional as purely not empty based on the - // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative. - if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) { - return options.inverse(this); - } else { - return options.fn(this); - } - }); - - instance.registerHelper('unless', function (conditional, options) { - return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash }); - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 12 */ -/***/ function(module, exports) { - - 'use strict'; - - exports.__esModule = true; - - exports['default'] = function (instance) { - instance.registerHelper('log', function () /* message, options */{ - var args = [undefined], - options = arguments[arguments.length - 1]; - for (var i = 0; i < arguments.length - 1; i++) { - args.push(arguments[i]); - } - - var level = 1; - if (options.hash.level != null) { - level = options.hash.level; - } else if (options.data && options.data.level != null) { - level = options.data.level; - } - args[0] = level; - - instance.log.apply(instance, args); - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 13 */ -/***/ function(module, exports) { - - 'use strict'; - - exports.__esModule = true; - - exports['default'] = function (instance) { - instance.registerHelper('lookup', function (obj, field) { - return obj && obj[field]; - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.__esModule = true; - - var _utils = __webpack_require__(5); - - exports['default'] = function (instance) { - instance.registerHelper('with', function (context, options) { - if (_utils.isFunction(context)) { - context = context.call(this); - } - - var fn = options.fn; - - if (!_utils.isEmpty(context)) { - var data = options.data; - if (options.data && options.ids) { - data = _utils.createFrame(options.data); - data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]); - } - - return fn(context, { - data: data, - blockParams: _utils.blockParams([context], [data && data.contextPath]) - }); - } else { - return options.inverse(this); - } - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - exports.registerDefaultDecorators = registerDefaultDecorators; - - var _decoratorsInline = __webpack_require__(16); - - var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline); - - function registerDefaultDecorators(instance) { - _decoratorsInline2['default'](instance); - } - -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.__esModule = true; - - var _utils = __webpack_require__(5); - - exports['default'] = function (instance) { - instance.registerDecorator('inline', function (fn, props, container, options) { - var ret = fn; - if (!props.partials) { - props.partials = {}; - ret = function (context, options) { - // Create a new partials stack frame prior to exec. - var original = container.partials; - container.partials = _utils.extend({}, original, props.partials); - var ret = fn(context, options); - container.partials = original; - return ret; - }; - } - - props.partials[options.args[0]] = options.fn; - - return ret; - }); - }; - - module.exports = exports['default']; - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.__esModule = true; - - var _utils = __webpack_require__(5); - - var logger = { - methodMap: ['debug', 'info', 'warn', 'error'], - level: 'info', - - // Maps a given level value to the `methodMap` indexes above. - lookupLevel: function lookupLevel(level) { - if (typeof level === 'string') { - var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase()); - if (levelMap >= 0) { - level = levelMap; - } else { - level = parseInt(level, 10); - } - } - - return level; - }, - - // Can be overridden in the host environment - log: function log(level) { - level = logger.lookupLevel(level); - - if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { - var method = logger.methodMap[level]; - if (!console[method]) { - // eslint-disable-line no-console - method = 'log'; - } - - for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - message[_key - 1] = arguments[_key]; - } - - console[method].apply(console, message); // eslint-disable-line no-console - } - } - }; - - exports['default'] = logger; - module.exports = exports['default']; - -/***/ }, -/* 18 */ -/***/ function(module, exports) { - - // Build out our basic SafeString type - 'use strict'; - - exports.__esModule = true; - function SafeString(string) { - this.string = string; - } - - SafeString.prototype.toString = SafeString.prototype.toHTML = function () { - return '' + this.string; - }; - - exports['default'] = SafeString; - module.exports = exports['default']; - -/***/ }, -/* 19 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireWildcard = __webpack_require__(3)['default']; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - exports.checkRevision = checkRevision; - exports.template = template; - exports.wrapProgram = wrapProgram; - exports.resolvePartial = resolvePartial; - exports.invokePartial = invokePartial; - exports.noop = noop; - - var _utils = __webpack_require__(5); - - var Utils = _interopRequireWildcard(_utils); - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - var _base = __webpack_require__(4); - - function checkRevision(compilerInfo) { - var compilerRevision = compilerInfo && compilerInfo[0] || 1, - currentRevision = _base.COMPILER_REVISION; - - if (compilerRevision !== currentRevision) { - if (compilerRevision < currentRevision) { - var runtimeVersions = _base.REVISION_CHANGES[currentRevision], - compilerVersions = _base.REVISION_CHANGES[compilerRevision]; - throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').'); - } else { - // Use the embedded version info since the runtime doesn't know about this revision yet - throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').'); - } - } - } - - function template(templateSpec, env) { - /* istanbul ignore next */ - if (!env) { - throw new _exception2['default']('No environment passed to template'); - } - if (!templateSpec || !templateSpec.main) { - throw new _exception2['default']('Unknown template object: ' + typeof templateSpec); - } - - templateSpec.main.decorator = templateSpec.main_d; - - // Note: Using env.VM references rather than local var references throughout this section to allow - // for external users to override these as psuedo-supported APIs. - env.VM.checkRevision(templateSpec.compiler); - - function invokePartialWrapper(partial, context, options) { - if (options.hash) { - context = Utils.extend({}, context, options.hash); - if (options.ids) { - options.ids[0] = true; - } - } - - partial = env.VM.resolvePartial.call(this, partial, context, options); - var result = env.VM.invokePartial.call(this, partial, context, options); - - if (result == null && env.compile) { - options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); - result = options.partials[options.name](context, options); - } - if (result != null) { - if (options.indent) { - var lines = result.split('\n'); - for (var i = 0, l = lines.length; i < l; i++) { - if (!lines[i] && i + 1 === l) { - break; - } - - lines[i] = options.indent + lines[i]; - } - result = lines.join('\n'); - } - return result; - } else { - throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode'); - } - } - - // Just add water - var container = { - strict: function strict(obj, name) { - if (!(name in obj)) { - throw new _exception2['default']('"' + name + '" not defined in ' + obj); - } - return obj[name]; - }, - lookup: function lookup(depths, name) { - var len = depths.length; - for (var i = 0; i < len; i++) { - if (depths[i] && depths[i][name] != null) { - return depths[i][name]; - } - } - }, - lambda: function lambda(current, context) { - return typeof current === 'function' ? current.call(context) : current; - }, - - escapeExpression: Utils.escapeExpression, - invokePartial: invokePartialWrapper, - - fn: function fn(i) { - var ret = templateSpec[i]; - ret.decorator = templateSpec[i + '_d']; - return ret; - }, - - programs: [], - program: function program(i, data, declaredBlockParams, blockParams, depths) { - var programWrapper = this.programs[i], - fn = this.fn(i); - if (data || depths || blockParams || declaredBlockParams) { - programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); - } else if (!programWrapper) { - programWrapper = this.programs[i] = wrapProgram(this, i, fn); - } - return programWrapper; - }, - - data: function data(value, depth) { - while (value && depth--) { - value = value._parent; - } - return value; - }, - merge: function merge(param, common) { - var obj = param || common; - - if (param && common && param !== common) { - obj = Utils.extend({}, common, param); - } - - return obj; - }, - - noop: env.VM.noop, - compilerInfo: templateSpec.compiler - }; - - function ret(context) { - var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - var data = options.data; - - ret._setup(options); - if (!options.partial && templateSpec.useData) { - data = initData(context, data); - } - var depths = undefined, - blockParams = templateSpec.useBlockParams ? [] : undefined; - if (templateSpec.useDepths) { - if (options.depths) { - depths = context !== options.depths[0] ? [context].concat(options.depths) : options.depths; - } else { - depths = [context]; - } - } - - function main(context /*, options*/) { - return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths); - } - main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); - return main(context, options); - } - ret.isTop = true; - - ret._setup = function (options) { - if (!options.partial) { - container.helpers = container.merge(options.helpers, env.helpers); - - if (templateSpec.usePartial) { - container.partials = container.merge(options.partials, env.partials); - } - if (templateSpec.usePartial || templateSpec.useDecorators) { - container.decorators = container.merge(options.decorators, env.decorators); - } - } else { - container.helpers = options.helpers; - container.partials = options.partials; - container.decorators = options.decorators; - } - }; - - ret._child = function (i, data, blockParams, depths) { - if (templateSpec.useBlockParams && !blockParams) { - throw new _exception2['default']('must pass block params'); - } - if (templateSpec.useDepths && !depths) { - throw new _exception2['default']('must pass parent depths'); - } - - return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); - }; - return ret; - } - - function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { - function prog(context) { - var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - var currentDepths = depths; - if (depths && context !== depths[0]) { - currentDepths = [context].concat(depths); - } - - return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); - } - - prog = executeDecorators(fn, prog, container, depths, data, blockParams); - - prog.program = i; - prog.depth = depths ? depths.length : 0; - prog.blockParams = declaredBlockParams || 0; - return prog; - } - - function resolvePartial(partial, context, options) { - if (!partial) { - if (options.name === '@partial-block') { - partial = options.data['partial-block']; - } else { - partial = options.partials[options.name]; - } - } else if (!partial.call && !options.name) { - // This is a dynamic partial that returned a string - options.name = partial; - partial = options.partials[partial]; - } - return partial; - } - - function invokePartial(partial, context, options) { - options.partial = true; - if (options.ids) { - options.data.contextPath = options.ids[0] || options.data.contextPath; - } - - var partialBlock = undefined; - if (options.fn && options.fn !== noop) { - options.data = _base.createFrame(options.data); - partialBlock = options.data['partial-block'] = options.fn; - - if (partialBlock.partials) { - options.partials = Utils.extend({}, options.partials, partialBlock.partials); - } - } - - if (partial === undefined && partialBlock) { - partial = partialBlock; - } - - if (partial === undefined) { - throw new _exception2['default']('The partial ' + options.name + ' could not be found'); - } else if (partial instanceof Function) { - return partial(context, options); - } - } - - function noop() { - return ''; - } - - function initData(context, data) { - if (!data || !('root' in data)) { - data = data ? _base.createFrame(data) : {}; - data.root = context; - } - return data; - } - - function executeDecorators(fn, prog, container, depths, data, blockParams) { - if (fn.decorator) { - var props = {}; - prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); - Utils.extend(prog, props); - } - return prog; - } - -/***/ }, -/* 20 */ -/***/ function(module, exports) { - - /* WEBPACK VAR INJECTION */(function(global) {/* global window */ - 'use strict'; - - exports.__esModule = true; - - exports['default'] = function (Handlebars) { - /* istanbul ignore next */ - var root = typeof global !== 'undefined' ? global : window, - $Handlebars = root.Handlebars; - /* istanbul ignore next */ - Handlebars.noConflict = function () { - if (root.Handlebars === Handlebars) { - root.Handlebars = $Handlebars; - } - return Handlebars; - }; - }; - - module.exports = exports['default']; - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) - -/***/ }, -/* 21 */ -/***/ function(module, exports) { - - 'use strict'; - - exports.__esModule = true; - var AST = { - // Public API used to evaluate derived attributes regarding AST nodes - helpers: { - // a mustache is definitely a helper if: - // * it is an eligible helper, and - // * it has at least one parameter or hash segment - helperExpression: function helperExpression(node) { - return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash); - }, - - scopedId: function scopedId(path) { - return (/^\.|this\b/.test(path.original) - ); - }, - - // an ID is simple if it only has one part, and that part is not - // `..` or `this`. - simpleId: function simpleId(path) { - return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth; - } - } - }; - - // Must be exported as an object rather than the root of the module as the jison lexer - // must modify the object to operate properly. - exports['default'] = AST; - module.exports = exports['default']; - -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - var _interopRequireWildcard = __webpack_require__(3)['default']; - - exports.__esModule = true; - exports.parse = parse; - - var _parser = __webpack_require__(23); - - var _parser2 = _interopRequireDefault(_parser); - - var _whitespaceControl = __webpack_require__(24); - - var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl); - - var _helpers = __webpack_require__(26); - - var Helpers = _interopRequireWildcard(_helpers); - - var _utils = __webpack_require__(5); - - exports.parser = _parser2['default']; - - var yy = {}; - _utils.extend(yy, Helpers); - - function parse(input, options) { - // Just return if an already-compiled AST was passed in. - if (input.type === 'Program') { - return input; - } - - _parser2['default'].yy = yy; - - // Altering the shared object here, but this is ok as parser is a sync operation - yy.locInfo = function (locInfo) { - return new yy.SourceLocation(options && options.srcName, locInfo); - }; - - var strip = new _whitespaceControl2['default'](options); - return strip.accept(_parser2['default'].parse(input)); - } - -/***/ }, -/* 23 */ -/***/ function(module, exports) { - - /* istanbul ignore next */ - /* Jison generated parser */ - "use strict"; - - var handlebars = (function () { - var parser = { trace: function trace() {}, - yy: {}, - symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition_plus0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" }, - productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 1], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$ - /**/) { - - var $0 = $$.length - 1; - switch (yystate) { - case 1: - return $$[$0 - 1]; - break; - case 2: - this.$ = yy.prepareProgram($$[$0]); - break; - case 3: - this.$ = $$[$0]; - break; - case 4: - this.$ = $$[$0]; - break; - case 5: - this.$ = $$[$0]; - break; - case 6: - this.$ = $$[$0]; - break; - case 7: - this.$ = $$[$0]; - break; - case 8: - this.$ = $$[$0]; - break; - case 9: - this.$ = { - type: 'CommentStatement', - value: yy.stripComment($$[$0]), - strip: yy.stripFlags($$[$0], $$[$0]), - loc: yy.locInfo(this._$) - }; - - break; - case 10: - this.$ = { - type: 'ContentStatement', - original: $$[$0], - value: $$[$0], - loc: yy.locInfo(this._$) - }; - - break; - case 11: - this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); - break; - case 12: - this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] }; - break; - case 13: - this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$); - break; - case 14: - this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$); - break; - case 15: - this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 16: - this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 17: - this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 18: - this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] }; - break; - case 19: - var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$), - program = yy.prepareProgram([inverse], $$[$0 - 1].loc); - program.chained = true; - - this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true }; - - break; - case 20: - this.$ = $$[$0]; - break; - case 21: - this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) }; - break; - case 22: - this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); - break; - case 23: - this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); - break; - case 24: - this.$ = { - type: 'PartialStatement', - name: $$[$0 - 3], - params: $$[$0 - 2], - hash: $$[$0 - 1], - indent: '', - strip: yy.stripFlags($$[$0 - 4], $$[$0]), - loc: yy.locInfo(this._$) - }; - - break; - case 25: - this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); - break; - case 26: - this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) }; - break; - case 27: - this.$ = $$[$0]; - break; - case 28: - this.$ = $$[$0]; - break; - case 29: - this.$ = { - type: 'SubExpression', - path: $$[$0 - 3], - params: $$[$0 - 2], - hash: $$[$0 - 1], - loc: yy.locInfo(this._$) - }; - - break; - case 30: - this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 31: - this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 32: - this.$ = yy.id($$[$0 - 1]); - break; - case 33: - this.$ = $$[$0]; - break; - case 34: - this.$ = $$[$0]; - break; - case 35: - this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 36: - this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) }; - break; - case 37: - this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) }; - break; - case 38: - this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) }; - break; - case 39: - this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) }; - break; - case 40: - this.$ = $$[$0]; - break; - case 41: - this.$ = $$[$0]; - break; - case 42: - this.$ = yy.preparePath(true, $$[$0], this._$); - break; - case 43: - this.$ = yy.preparePath(false, $$[$0], this._$); - break; - case 44: - $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2]; - break; - case 45: - this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }]; - break; - case 46: - this.$ = []; - break; - case 47: - $$[$0 - 1].push($$[$0]); - break; - case 48: - this.$ = [$$[$0]]; - break; - case 49: - $$[$0 - 1].push($$[$0]); - break; - case 50: - this.$ = []; - break; - case 51: - $$[$0 - 1].push($$[$0]); - break; - case 58: - this.$ = []; - break; - case 59: - $$[$0 - 1].push($$[$0]); - break; - case 64: - this.$ = []; - break; - case 65: - $$[$0 - 1].push($$[$0]); - break; - case 70: - this.$ = []; - break; - case 71: - $$[$0 - 1].push($$[$0]); - break; - case 78: - this.$ = []; - break; - case 79: - $$[$0 - 1].push($$[$0]); - break; - case 82: - this.$ = []; - break; - case 83: - $$[$0 - 1].push($$[$0]); - break; - case 86: - this.$ = []; - break; - case 87: - $$[$0 - 1].push($$[$0]); - break; - case 90: - this.$ = []; - break; - case 91: - $$[$0 - 1].push($$[$0]); - break; - case 94: - this.$ = []; - break; - case 95: - $$[$0 - 1].push($$[$0]); - break; - case 98: - this.$ = [$$[$0]]; - break; - case 99: - $$[$0 - 1].push($$[$0]); - break; - case 100: - this.$ = [$$[$0]]; - break; - case 101: - $$[$0 - 1].push($$[$0]); - break; - } - }, - table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 13: 40, 15: [1, 20], 17: 39 }, { 20: 42, 56: 41, 64: 43, 65: [1, 44], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 45, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 48, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 42, 56: 49, 64: 43, 65: [1, 44], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 50, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 51] }, { 72: [1, 35], 86: 52 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 53, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 54, 38: 56, 39: [1, 58], 43: 57, 44: [1, 59], 45: 55, 47: [2, 54] }, { 28: 60, 43: 61, 44: [1, 59], 47: [2, 56] }, { 13: 63, 15: [1, 20], 18: [1, 62] }, { 15: [2, 48], 18: [2, 48] }, { 33: [2, 86], 57: 64, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 65, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 66, 47: [1, 67] }, { 30: 68, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 69, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 70, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 71, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 75, 33: [2, 80], 50: 72, 63: 73, 64: 76, 65: [1, 44], 69: 74, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 80] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 51] }, { 20: 75, 53: 81, 54: [2, 84], 63: 82, 64: 76, 65: [1, 44], 69: 83, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 84, 47: [1, 67] }, { 47: [2, 55] }, { 4: 85, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 86, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 87, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 88, 47: [1, 67] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 75, 33: [2, 88], 58: 89, 63: 90, 64: 76, 65: [1, 44], 69: 91, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 92, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 93, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 31: 94, 33: [2, 60], 63: 95, 64: 76, 65: [1, 44], 69: 96, 70: 77, 71: 78, 72: [1, 79], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 33: [2, 66], 36: 97, 63: 98, 64: 76, 65: [1, 44], 69: 99, 70: 77, 71: 78, 72: [1, 79], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 22: 100, 23: [2, 52], 63: 101, 64: 76, 65: [1, 44], 69: 102, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 33: [2, 92], 62: 103, 63: 104, 64: 76, 65: [1, 44], 69: 105, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 106] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 107, 72: [1, 108], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 109], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 110] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 56, 39: [1, 58], 43: 57, 44: [1, 59], 45: 112, 46: 111, 47: [2, 76] }, { 33: [2, 70], 40: 113, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 114] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 75, 63: 116, 64: 76, 65: [1, 44], 67: 115, 68: [2, 96], 69: 117, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 118] }, { 32: 119, 33: [2, 62], 74: 120, 75: [1, 121] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 122, 74: 123, 75: [1, 121] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 124] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 125] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 109] }, { 20: 75, 63: 126, 64: 76, 65: [1, 44], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 75, 33: [2, 72], 41: 127, 63: 128, 64: 76, 65: [1, 44], 69: 129, 70: 77, 71: 78, 72: [1, 79], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 130] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 131] }, { 33: [2, 63] }, { 72: [1, 133], 76: 132 }, { 33: [1, 134] }, { 33: [2, 69] }, { 15: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 135, 74: 136, 75: [1, 121] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 138], 77: [1, 137] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 139] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }], - defaultActions: { 4: [2, 1], 55: [2, 55], 57: [2, 20], 61: [2, 57], 74: [2, 81], 83: [2, 85], 87: [2, 18], 91: [2, 89], 102: [2, 53], 105: [2, 93], 111: [2, 19], 112: [2, 77], 117: [2, 97], 120: [2, 63], 123: [2, 69], 124: [2, 12], 136: [2, 75], 137: [2, 32] }, - parseError: function parseError(str, hash) { - throw new Error(str); - }, - parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], - lstack = [], - table = this.table, - yytext = "", - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - this.yy.parser = this; - if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - var ranges = this.lexer.options && this.lexer.options.ranges; - if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError; - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - function lex() { - var token; - token = self.lexer.lex() || 1; - if (typeof token !== "number") { - token = self.symbols_[token] || token; - } - return token; - } - var symbol, - preErrorSymbol, - state, - action, - a, - r, - yyval = {}, - p, - len, - newState, - expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - if (!recovering) { - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'" + this.terminals_[p] + "'"); - } - if (this.lexer.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected }); - } - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) recovering--; - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column }; - if (ranges) { - yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]]; - } - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - if (typeof r !== "undefined") { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } - } - return true; - } - }; - /* Jison generated lexer */ - var lexer = (function () { - var lexer = { EOF: 1, - parseError: function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, - setInput: function setInput(input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }; - if (this.options.ranges) this.yylloc.range = [0, 0]; - this.offset = 0; - return this; - }, - input: function input() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) this.yylloc.range[1]++; - - this._input = this._input.slice(1); - return ch; - }, - unput: function unput(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); - //this.yyleng -= len; - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - - if (lines.length - 1) this.yylineno -= lines.length - 1; - var r = this.yylloc.range; - - this.yylloc = { first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; - } - return this; - }, - more: function more() { - this._more = true; - return this; - }, - less: function less(n) { - this.unput(this.match.slice(n)); - }, - pastInput: function pastInput() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, ""); - }, - upcomingInput: function upcomingInput() { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20 - next.length); - } - return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); - }, - showPosition: function showPosition() { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, - next: function next() { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - - var token, match, tempMatch, index, col, lines; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = { first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) this.done = false; - if (token) return token;else return; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { text: "", token: null, line: this.yylineno }); - } - }, - lex: function lex() { - var r = this.next(); - if (typeof r !== 'undefined') { - return r; - } else { - return this.lex(); - } - }, - begin: function begin(condition) { - this.conditionStack.push(condition); - }, - popState: function popState() { - return this.conditionStack.pop(); - }, - _currentRules: function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - }, - topState: function topState() { - return this.conditionStack[this.conditionStack.length - 2]; - }, - pushState: function begin(condition) { - this.begin(condition); - } }; - lexer.options = {}; - lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START - /**/) { - - function strip(start, end) { - return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng - end); - } - - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - if (yy_.yytext.slice(-2) === "\\\\") { - strip(0, 1); - this.begin("mu"); - } else if (yy_.yytext.slice(-1) === "\\") { - strip(0, 1); - this.begin("emu"); - } else { - this.begin("mu"); - } - if (yy_.yytext) return 15; - - break; - case 1: - return 15; - break; - case 2: - this.popState(); - return 15; - - break; - case 3: - this.begin('raw');return 15; - break; - case 4: - this.popState(); - // Should be using `this.topState()` below, but it currently - // returns the second top instead of the first top. Opened an - // issue about it at https://github.com/zaach/jison/issues/291 - if (this.conditionStack[this.conditionStack.length - 1] === 'raw') { - return 15; - } else { - yy_.yytext = yy_.yytext.substr(5, yy_.yyleng - 9); - return 'END_RAW_BLOCK'; - } - - break; - case 5: - return 15; - break; - case 6: - this.popState(); - return 14; - - break; - case 7: - return 65; - break; - case 8: - return 68; - break; - case 9: - return 19; - break; - case 10: - this.popState(); - this.begin('raw'); - return 23; - - break; - case 11: - return 55; - break; - case 12: - return 60; - break; - case 13: - return 29; - break; - case 14: - return 47; - break; - case 15: - this.popState();return 44; - break; - case 16: - this.popState();return 44; - break; - case 17: - return 34; - break; - case 18: - return 39; - break; - case 19: - return 51; - break; - case 20: - return 48; - break; - case 21: - this.unput(yy_.yytext); - this.popState(); - this.begin('com'); - - break; - case 22: - this.popState(); - return 14; - - break; - case 23: - return 48; - break; - case 24: - return 73; - break; - case 25: - return 72; - break; - case 26: - return 72; - break; - case 27: - return 87; - break; - case 28: - // ignore whitespace - break; - case 29: - this.popState();return 54; - break; - case 30: - this.popState();return 33; - break; - case 31: - yy_.yytext = strip(1, 2).replace(/\\"/g, '"');return 80; - break; - case 32: - yy_.yytext = strip(1, 2).replace(/\\'/g, "'");return 80; - break; - case 33: - return 85; - break; - case 34: - return 82; - break; - case 35: - return 82; - break; - case 36: - return 83; - break; - case 37: - return 84; - break; - case 38: - return 81; - break; - case 39: - return 75; - break; - case 40: - return 77; - break; - case 41: - return 72; - break; - case 42: - yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, '$1');return 72; - break; - case 43: - return 'INVALID'; - break; - case 44: - return 5; - break; - } - }; - lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]*?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/]; - lexer.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } }; - return lexer; - })(); - parser.lexer = lexer; - function Parser() { - this.yy = {}; - }Parser.prototype = parser;parser.Parser = Parser; - return new Parser(); - })();exports.__esModule = true; - exports['default'] = handlebars; - -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - - var _visitor = __webpack_require__(25); - - var _visitor2 = _interopRequireDefault(_visitor); - - function WhitespaceControl() { - var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; - - this.options = options; - } - WhitespaceControl.prototype = new _visitor2['default'](); - - WhitespaceControl.prototype.Program = function (program) { - var doStandalone = !this.options.ignoreStandalone; - - var isRoot = !this.isRootSeen; - this.isRootSeen = true; - - var body = program.body; - for (var i = 0, l = body.length; i < l; i++) { - var current = body[i], - strip = this.accept(current); - - if (!strip) { - continue; - } - - var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), - _isNextWhitespace = isNextWhitespace(body, i, isRoot), - openStandalone = strip.openStandalone && _isPrevWhitespace, - closeStandalone = strip.closeStandalone && _isNextWhitespace, - inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace; - - if (strip.close) { - omitRight(body, i, true); - } - if (strip.open) { - omitLeft(body, i, true); - } - - if (doStandalone && inlineStandalone) { - omitRight(body, i); - - if (omitLeft(body, i)) { - // If we are on a standalone node, save the indent info for partials - if (current.type === 'PartialStatement') { - // Pull out the whitespace from the final line - current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1]; - } - } - } - if (doStandalone && openStandalone) { - omitRight((current.program || current.inverse).body); - - // Strip out the previous content node if it's whitespace only - omitLeft(body, i); - } - if (doStandalone && closeStandalone) { - // Always strip the next node - omitRight(body, i); - - omitLeft((current.inverse || current.program).body); - } - } - - return program; - }; - - WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) { - this.accept(block.program); - this.accept(block.inverse); - - // Find the inverse program that is involed with whitespace stripping. - var program = block.program || block.inverse, - inverse = block.program && block.inverse, - firstInverse = inverse, - lastInverse = inverse; - - if (inverse && inverse.chained) { - firstInverse = inverse.body[0].program; - - // Walk the inverse chain to find the last inverse that is actually in the chain. - while (lastInverse.chained) { - lastInverse = lastInverse.body[lastInverse.body.length - 1].program; - } - } - - var strip = { - open: block.openStrip.open, - close: block.closeStrip.close, - - // Determine the standalone candiacy. Basically flag our content as being possibly standalone - // so our parent can determine if we actually are standalone - openStandalone: isNextWhitespace(program.body), - closeStandalone: isPrevWhitespace((firstInverse || program).body) - }; - - if (block.openStrip.close) { - omitRight(program.body, null, true); - } - - if (inverse) { - var inverseStrip = block.inverseStrip; - - if (inverseStrip.open) { - omitLeft(program.body, null, true); - } - - if (inverseStrip.close) { - omitRight(firstInverse.body, null, true); - } - if (block.closeStrip.open) { - omitLeft(lastInverse.body, null, true); - } - - // Find standalone else statments - if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) { - omitLeft(program.body); - omitRight(firstInverse.body); - } - } else if (block.closeStrip.open) { - omitLeft(program.body, null, true); - } - - return strip; - }; - - WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) { - return mustache.strip; - }; - - WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) { - /* istanbul ignore next */ - var strip = node.strip || {}; - return { - inlineStandalone: true, - open: strip.open, - close: strip.close - }; - }; - - function isPrevWhitespace(body, i, isRoot) { - if (i === undefined) { - i = body.length; - } - - // Nodes that end with newlines are considered whitespace (but are special - // cased for strip operations) - var prev = body[i - 1], - sibling = body[i - 2]; - if (!prev) { - return isRoot; - } - - if (prev.type === 'ContentStatement') { - return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original); - } - } - function isNextWhitespace(body, i, isRoot) { - if (i === undefined) { - i = -1; - } - - var next = body[i + 1], - sibling = body[i + 2]; - if (!next) { - return isRoot; - } - - if (next.type === 'ContentStatement') { - return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original); - } - } - - // Marks the node to the right of the position as omitted. - // I.e. {{foo}}' ' will mark the ' ' node as omitted. - // - // If i is undefined, then the first child will be marked as such. - // - // If mulitple is truthy then all whitespace will be stripped out until non-whitespace - // content is met. - function omitRight(body, i, multiple) { - var current = body[i == null ? 0 : i + 1]; - if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) { - return; - } - - var original = current.value; - current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ''); - current.rightStripped = current.value !== original; - } - - // Marks the node to the left of the position as omitted. - // I.e. ' '{{foo}} will mark the ' ' node as omitted. - // - // If i is undefined then the last child will be marked as such. - // - // If mulitple is truthy then all whitespace will be stripped out until non-whitespace - // content is met. - function omitLeft(body, i, multiple) { - var current = body[i == null ? body.length - 1 : i - 1]; - if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) { - return; - } - - // We omit the last node if it's whitespace only and not preceeded by a non-content node. - var original = current.value; - current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ''); - current.leftStripped = current.value !== original; - return current.leftStripped; - } - - exports['default'] = WhitespaceControl; - module.exports = exports['default']; - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - function Visitor() { - this.parents = []; - } - - Visitor.prototype = { - constructor: Visitor, - mutating: false, - - // Visits a given value. If mutating, will replace the value if necessary. - acceptKey: function acceptKey(node, name) { - var value = this.accept(node[name]); - if (this.mutating) { - // Hacky sanity check: This may have a few false positives for type for the helper - // methods but will generally do the right thing without a lot of overhead. - if (value && !Visitor.prototype[value.type]) { - throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type); - } - node[name] = value; - } - }, - - // Performs an accept operation with added sanity check to ensure - // required keys are not removed. - acceptRequired: function acceptRequired(node, name) { - this.acceptKey(node, name); - - if (!node[name]) { - throw new _exception2['default'](node.type + ' requires ' + name); - } - }, - - // Traverses a given array. If mutating, empty respnses will be removed - // for child elements. - acceptArray: function acceptArray(array) { - for (var i = 0, l = array.length; i < l; i++) { - this.acceptKey(array, i); - - if (!array[i]) { - array.splice(i, 1); - i--; - l--; - } - } - }, - - accept: function accept(object) { - if (!object) { - return; - } - - /* istanbul ignore next: Sanity code */ - if (!this[object.type]) { - throw new _exception2['default']('Unknown type: ' + object.type, object); - } - - if (this.current) { - this.parents.unshift(this.current); - } - this.current = object; - - var ret = this[object.type](object); - - this.current = this.parents.shift(); - - if (!this.mutating || ret) { - return ret; - } else if (ret !== false) { - return object; - } - }, - - Program: function Program(program) { - this.acceptArray(program.body); - }, - - MustacheStatement: visitSubExpression, - Decorator: visitSubExpression, - - BlockStatement: visitBlock, - DecoratorBlock: visitBlock, - - PartialStatement: visitPartial, - PartialBlockStatement: function PartialBlockStatement(partial) { - visitPartial.call(this, partial); - - this.acceptKey(partial, 'program'); - }, - - ContentStatement: function ContentStatement() /* content */{}, - CommentStatement: function CommentStatement() /* comment */{}, - - SubExpression: visitSubExpression, - - PathExpression: function PathExpression() /* path */{}, - - StringLiteral: function StringLiteral() /* string */{}, - NumberLiteral: function NumberLiteral() /* number */{}, - BooleanLiteral: function BooleanLiteral() /* bool */{}, - UndefinedLiteral: function UndefinedLiteral() /* literal */{}, - NullLiteral: function NullLiteral() /* literal */{}, - - Hash: function Hash(hash) { - this.acceptArray(hash.pairs); - }, - HashPair: function HashPair(pair) { - this.acceptRequired(pair, 'value'); - } - }; - - function visitSubExpression(mustache) { - this.acceptRequired(mustache, 'path'); - this.acceptArray(mustache.params); - this.acceptKey(mustache, 'hash'); - } - function visitBlock(block) { - visitSubExpression.call(this, block); - - this.acceptKey(block, 'program'); - this.acceptKey(block, 'inverse'); - } - function visitPartial(partial) { - this.acceptRequired(partial, 'name'); - this.acceptArray(partial.params); - this.acceptKey(partial, 'hash'); - } - - exports['default'] = Visitor; - module.exports = exports['default']; - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - exports.SourceLocation = SourceLocation; - exports.id = id; - exports.stripFlags = stripFlags; - exports.stripComment = stripComment; - exports.preparePath = preparePath; - exports.prepareMustache = prepareMustache; - exports.prepareRawBlock = prepareRawBlock; - exports.prepareBlock = prepareBlock; - exports.prepareProgram = prepareProgram; - exports.preparePartialBlock = preparePartialBlock; - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - function validateClose(open, close) { - close = close.path ? close.path.original : close; - - if (open.path.original !== close) { - var errorNode = { loc: open.path.loc }; - - throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode); - } - } - - function SourceLocation(source, locInfo) { - this.source = source; - this.start = { - line: locInfo.first_line, - column: locInfo.first_column - }; - this.end = { - line: locInfo.last_line, - column: locInfo.last_column - }; - } - - function id(token) { - if (/^\[.*\]$/.test(token)) { - return token.substr(1, token.length - 2); - } else { - return token; - } - } - - function stripFlags(open, close) { - return { - open: open.charAt(2) === '~', - close: close.charAt(close.length - 3) === '~' - }; - } - - function stripComment(comment) { - return comment.replace(/^\{\{~?\!-?-?/, '').replace(/-?-?~?\}\}$/, ''); - } - - function preparePath(data, parts, loc) { - loc = this.locInfo(loc); - - var original = data ? '@' : '', - dig = [], - depth = 0, - depthString = ''; - - for (var i = 0, l = parts.length; i < l; i++) { - var part = parts[i].part, - - // If we have [] syntax then we do not treat path references as operators, - // i.e. foo.[this] resolves to approximately context.foo['this'] - isLiteral = parts[i].original !== part; - original += (parts[i].separator || '') + part; - - if (!isLiteral && (part === '..' || part === '.' || part === 'this')) { - if (dig.length > 0) { - throw new _exception2['default']('Invalid path: ' + original, { loc: loc }); - } else if (part === '..') { - depth++; - depthString += '../'; - } - } else { - dig.push(part); - } - } - - return { - type: 'PathExpression', - data: data, - depth: depth, - parts: dig, - original: original, - loc: loc - }; - } - - function prepareMustache(path, params, hash, open, strip, locInfo) { - // Must use charAt to support IE pre-10 - var escapeFlag = open.charAt(3) || open.charAt(2), - escaped = escapeFlag !== '{' && escapeFlag !== '&'; - - var decorator = /\*/.test(open); - return { - type: decorator ? 'Decorator' : 'MustacheStatement', - path: path, - params: params, - hash: hash, - escaped: escaped, - strip: strip, - loc: this.locInfo(locInfo) - }; - } - - function prepareRawBlock(openRawBlock, contents, close, locInfo) { - validateClose(openRawBlock, close); - - locInfo = this.locInfo(locInfo); - var program = { - type: 'Program', - body: contents, - strip: {}, - loc: locInfo - }; - - return { - type: 'BlockStatement', - path: openRawBlock.path, - params: openRawBlock.params, - hash: openRawBlock.hash, - program: program, - openStrip: {}, - inverseStrip: {}, - closeStrip: {}, - loc: locInfo - }; - } - - function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) { - if (close && close.path) { - validateClose(openBlock, close); - } - - var decorator = /\*/.test(openBlock.open); - - program.blockParams = openBlock.blockParams; - - var inverse = undefined, - inverseStrip = undefined; - - if (inverseAndProgram) { - if (decorator) { - throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram); - } - - if (inverseAndProgram.chain) { - inverseAndProgram.program.body[0].closeStrip = close.strip; - } - - inverseStrip = inverseAndProgram.strip; - inverse = inverseAndProgram.program; - } - - if (inverted) { - inverted = inverse; - inverse = program; - program = inverted; - } - - return { - type: decorator ? 'DecoratorBlock' : 'BlockStatement', - path: openBlock.path, - params: openBlock.params, - hash: openBlock.hash, - program: program, - inverse: inverse, - openStrip: openBlock.strip, - inverseStrip: inverseStrip, - closeStrip: close && close.strip, - loc: this.locInfo(locInfo) - }; - } - - function prepareProgram(statements, loc) { - if (!loc && statements.length) { - var firstLoc = statements[0].loc, - lastLoc = statements[statements.length - 1].loc; - - /* istanbul ignore else */ - if (firstLoc && lastLoc) { - loc = { - source: firstLoc.source, - start: { - line: firstLoc.start.line, - column: firstLoc.start.column - }, - end: { - line: lastLoc.end.line, - column: lastLoc.end.column - } - }; - } - } - - return { - type: 'Program', - body: statements, - strip: {}, - loc: loc - }; - } - - function preparePartialBlock(open, program, close, locInfo) { - validateClose(open, close); - - return { - type: 'PartialBlockStatement', - name: open.path, - params: open.params, - hash: open.hash, - program: program, - openStrip: open.strip, - closeStrip: close && close.strip, - loc: this.locInfo(locInfo) - }; - } - -/***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { - - /* eslint-disable new-cap */ - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - exports.Compiler = Compiler; - exports.precompile = precompile; - exports.compile = compile; - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - var _utils = __webpack_require__(5); - - var _ast = __webpack_require__(21); - - var _ast2 = _interopRequireDefault(_ast); - - var slice = [].slice; - - function Compiler() {} - - // the foundHelper register will disambiguate helper lookup from finding a - // function in a context. This is necessary for mustache compatibility, which - // requires that context functions in blocks are evaluated by blockHelperMissing, - // and then proceed as if the resulting value was provided to blockHelperMissing. - - Compiler.prototype = { - compiler: Compiler, - - equals: function equals(other) { - var len = this.opcodes.length; - if (other.opcodes.length !== len) { - return false; - } - - for (var i = 0; i < len; i++) { - var opcode = this.opcodes[i], - otherOpcode = other.opcodes[i]; - if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) { - return false; - } - } - - // We know that length is the same between the two arrays because they are directly tied - // to the opcode behavior above. - len = this.children.length; - for (var i = 0; i < len; i++) { - if (!this.children[i].equals(other.children[i])) { - return false; - } - } - - return true; - }, - - guid: 0, - - compile: function compile(program, options) { - this.sourceNode = []; - this.opcodes = []; - this.children = []; - this.options = options; - this.stringParams = options.stringParams; - this.trackIds = options.trackIds; - - options.blockParams = options.blockParams || []; - - // These changes will propagate to the other compiler components - var knownHelpers = options.knownHelpers; - options.knownHelpers = { - 'helperMissing': true, - 'blockHelperMissing': true, - 'each': true, - 'if': true, - 'unless': true, - 'with': true, - 'log': true, - 'lookup': true - }; - if (knownHelpers) { - for (var _name in knownHelpers) { - /* istanbul ignore else */ - if (_name in knownHelpers) { - options.knownHelpers[_name] = knownHelpers[_name]; - } - } - } - - return this.accept(program); - }, - - compileProgram: function compileProgram(program) { - var childCompiler = new this.compiler(), - // eslint-disable-line new-cap - result = childCompiler.compile(program, this.options), - guid = this.guid++; - - this.usePartial = this.usePartial || result.usePartial; - - this.children[guid] = result; - this.useDepths = this.useDepths || result.useDepths; - - return guid; - }, - - accept: function accept(node) { - /* istanbul ignore next: Sanity code */ - if (!this[node.type]) { - throw new _exception2['default']('Unknown type: ' + node.type, node); - } - - this.sourceNode.unshift(node); - var ret = this[node.type](node); - this.sourceNode.shift(); - return ret; - }, - - Program: function Program(program) { - this.options.blockParams.unshift(program.blockParams); - - var body = program.body, - bodyLength = body.length; - for (var i = 0; i < bodyLength; i++) { - this.accept(body[i]); - } - - this.options.blockParams.shift(); - - this.isSimple = bodyLength === 1; - this.blockParams = program.blockParams ? program.blockParams.length : 0; - - return this; - }, - - BlockStatement: function BlockStatement(block) { - transformLiteralToPath(block); - - var program = block.program, - inverse = block.inverse; - - program = program && this.compileProgram(program); - inverse = inverse && this.compileProgram(inverse); - - var type = this.classifySexpr(block); - - if (type === 'helper') { - this.helperSexpr(block, program, inverse); - } else if (type === 'simple') { - this.simpleSexpr(block); - - // now that the simple mustache is resolved, we need to - // evaluate it by executing `blockHelperMissing` - this.opcode('pushProgram', program); - this.opcode('pushProgram', inverse); - this.opcode('emptyHash'); - this.opcode('blockValue', block.path.original); - } else { - this.ambiguousSexpr(block, program, inverse); - - // now that the simple mustache is resolved, we need to - // evaluate it by executing `blockHelperMissing` - this.opcode('pushProgram', program); - this.opcode('pushProgram', inverse); - this.opcode('emptyHash'); - this.opcode('ambiguousBlockValue'); - } - - this.opcode('append'); - }, - - DecoratorBlock: function DecoratorBlock(decorator) { - var program = decorator.program && this.compileProgram(decorator.program); - var params = this.setupFullMustacheParams(decorator, program, undefined), - path = decorator.path; - - this.useDecorators = true; - this.opcode('registerDecorator', params.length, path.original); - }, - - PartialStatement: function PartialStatement(partial) { - this.usePartial = true; - - var program = partial.program; - if (program) { - program = this.compileProgram(partial.program); - } - - var params = partial.params; - if (params.length > 1) { - throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial); - } else if (!params.length) { - if (this.options.explicitPartialContext) { - this.opcode('pushLiteral', 'undefined'); - } else { - params.push({ type: 'PathExpression', parts: [], depth: 0 }); - } - } - - var partialName = partial.name.original, - isDynamic = partial.name.type === 'SubExpression'; - if (isDynamic) { - this.accept(partial.name); - } - - this.setupFullMustacheParams(partial, program, undefined, true); - - var indent = partial.indent || ''; - if (this.options.preventIndent && indent) { - this.opcode('appendContent', indent); - indent = ''; - } - - this.opcode('invokePartial', isDynamic, partialName, indent); - this.opcode('append'); - }, - PartialBlockStatement: function PartialBlockStatement(partialBlock) { - this.PartialStatement(partialBlock); - }, - - MustacheStatement: function MustacheStatement(mustache) { - this.SubExpression(mustache); - - if (mustache.escaped && !this.options.noEscape) { - this.opcode('appendEscaped'); - } else { - this.opcode('append'); - } - }, - Decorator: function Decorator(decorator) { - this.DecoratorBlock(decorator); - }, - - ContentStatement: function ContentStatement(content) { - if (content.value) { - this.opcode('appendContent', content.value); - } - }, - - CommentStatement: function CommentStatement() {}, - - SubExpression: function SubExpression(sexpr) { - transformLiteralToPath(sexpr); - var type = this.classifySexpr(sexpr); - - if (type === 'simple') { - this.simpleSexpr(sexpr); - } else if (type === 'helper') { - this.helperSexpr(sexpr); - } else { - this.ambiguousSexpr(sexpr); - } - }, - ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) { - var path = sexpr.path, - name = path.parts[0], - isBlock = program != null || inverse != null; - - this.opcode('getContext', path.depth); - - this.opcode('pushProgram', program); - this.opcode('pushProgram', inverse); - - path.strict = true; - this.accept(path); - - this.opcode('invokeAmbiguous', name, isBlock); - }, - - simpleSexpr: function simpleSexpr(sexpr) { - var path = sexpr.path; - path.strict = true; - this.accept(path); - this.opcode('resolvePossibleLambda'); - }, - - helperSexpr: function helperSexpr(sexpr, program, inverse) { - var params = this.setupFullMustacheParams(sexpr, program, inverse), - path = sexpr.path, - name = path.parts[0]; - - if (this.options.knownHelpers[name]) { - this.opcode('invokeKnownHelper', params.length, name); - } else if (this.options.knownHelpersOnly) { - throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr); - } else { - path.strict = true; - path.falsy = true; - - this.accept(path); - this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path)); - } - }, - - PathExpression: function PathExpression(path) { - this.addDepth(path.depth); - this.opcode('getContext', path.depth); - - var name = path.parts[0], - scoped = _ast2['default'].helpers.scopedId(path), - blockParamId = !path.depth && !scoped && this.blockParamIndex(name); - - if (blockParamId) { - this.opcode('lookupBlockParam', blockParamId, path.parts); - } else if (!name) { - // Context reference, i.e. `{{foo .}}` or `{{foo ..}}` - this.opcode('pushContext'); - } else if (path.data) { - this.options.data = true; - this.opcode('lookupData', path.depth, path.parts, path.strict); - } else { - this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped); - } - }, - - StringLiteral: function StringLiteral(string) { - this.opcode('pushString', string.value); - }, - - NumberLiteral: function NumberLiteral(number) { - this.opcode('pushLiteral', number.value); - }, - - BooleanLiteral: function BooleanLiteral(bool) { - this.opcode('pushLiteral', bool.value); - }, - - UndefinedLiteral: function UndefinedLiteral() { - this.opcode('pushLiteral', 'undefined'); - }, - - NullLiteral: function NullLiteral() { - this.opcode('pushLiteral', 'null'); - }, - - Hash: function Hash(hash) { - var pairs = hash.pairs, - i = 0, - l = pairs.length; - - this.opcode('pushHash'); - - for (; i < l; i++) { - this.pushParam(pairs[i].value); - } - while (i--) { - this.opcode('assignToHash', pairs[i].key); - } - this.opcode('popHash'); - }, - - // HELPERS - opcode: function opcode(name) { - this.opcodes.push({ opcode: name, args: slice.call(arguments, 1), loc: this.sourceNode[0].loc }); - }, - - addDepth: function addDepth(depth) { - if (!depth) { - return; - } - - this.useDepths = true; - }, - - classifySexpr: function classifySexpr(sexpr) { - var isSimple = _ast2['default'].helpers.simpleId(sexpr.path); - - var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]); - - // a mustache is an eligible helper if: - // * its id is simple (a single part, not `this` or `..`) - var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr); - - // if a mustache is an eligible helper but not a definite - // helper, it is ambiguous, and will be resolved in a later - // pass or at runtime. - var isEligible = !isBlockParam && (isHelper || isSimple); - - // if ambiguous, we can possibly resolve the ambiguity now - // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc. - if (isEligible && !isHelper) { - var _name2 = sexpr.path.parts[0], - options = this.options; - - if (options.knownHelpers[_name2]) { - isHelper = true; - } else if (options.knownHelpersOnly) { - isEligible = false; - } - } - - if (isHelper) { - return 'helper'; - } else if (isEligible) { - return 'ambiguous'; - } else { - return 'simple'; - } - }, - - pushParams: function pushParams(params) { - for (var i = 0, l = params.length; i < l; i++) { - this.pushParam(params[i]); - } - }, - - pushParam: function pushParam(val) { - var value = val.value != null ? val.value : val.original || ''; - - if (this.stringParams) { - if (value.replace) { - value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.'); - } - - if (val.depth) { - this.addDepth(val.depth); - } - this.opcode('getContext', val.depth || 0); - this.opcode('pushStringParam', value, val.type); - - if (val.type === 'SubExpression') { - // SubExpressions get evaluated and passed in - // in string params mode. - this.accept(val); - } - } else { - if (this.trackIds) { - var blockParamIndex = undefined; - if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) { - blockParamIndex = this.blockParamIndex(val.parts[0]); - } - if (blockParamIndex) { - var blockParamChild = val.parts.slice(1).join('.'); - this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild); - } else { - value = val.original || value; - if (value.replace) { - value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, ''); - } - - this.opcode('pushId', val.type, value); - } - } - this.accept(val); - } - }, - - setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) { - var params = sexpr.params; - this.pushParams(params); - - this.opcode('pushProgram', program); - this.opcode('pushProgram', inverse); - - if (sexpr.hash) { - this.accept(sexpr.hash); - } else { - this.opcode('emptyHash', omitEmpty); - } - - return params; - }, - - blockParamIndex: function blockParamIndex(name) { - for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) { - var blockParams = this.options.blockParams[depth], - param = blockParams && _utils.indexOf(blockParams, name); - if (blockParams && param >= 0) { - return [depth, param]; - } - } - } - }; - - function precompile(input, options, env) { - if (input == null || typeof input !== 'string' && input.type !== 'Program') { - throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input); - } - - options = options || {}; - if (!('data' in options)) { - options.data = true; - } - if (options.compat) { - options.useDepths = true; - } - - var ast = env.parse(input, options), - environment = new env.Compiler().compile(ast, options); - return new env.JavaScriptCompiler().compile(environment, options); - } - - function compile(input, options, env) { - if (options === undefined) options = {}; - - if (input == null || typeof input !== 'string' && input.type !== 'Program') { - throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input); - } - - if (!('data' in options)) { - options.data = true; - } - if (options.compat) { - options.useDepths = true; - } - - var compiled = undefined; - - function compileInput() { - var ast = env.parse(input, options), - environment = new env.Compiler().compile(ast, options), - templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true); - return env.template(templateSpec); - } - - // Template is only compiled on first use and cached after that point. - function ret(context, execOptions) { - if (!compiled) { - compiled = compileInput(); - } - return compiled.call(this, context, execOptions); - } - ret._setup = function (setupOptions) { - if (!compiled) { - compiled = compileInput(); - } - return compiled._setup(setupOptions); - }; - ret._child = function (i, data, blockParams, depths) { - if (!compiled) { - compiled = compileInput(); - } - return compiled._child(i, data, blockParams, depths); - }; - return ret; - } - - function argEquals(a, b) { - if (a === b) { - return true; - } - - if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) { - for (var i = 0; i < a.length; i++) { - if (!argEquals(a[i], b[i])) { - return false; - } - } - return true; - } - } - - function transformLiteralToPath(sexpr) { - if (!sexpr.path.parts) { - var literal = sexpr.path; - // Casting to string here to make false and 0 literal values play nicely with the rest - // of the system. - sexpr.path = { - type: 'PathExpression', - data: false, - depth: 0, - parts: [literal.original + ''], - original: literal.original + '', - loc: literal.loc - }; - } - } - -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var _interopRequireDefault = __webpack_require__(1)['default']; - - exports.__esModule = true; - - var _base = __webpack_require__(4); - - var _exception = __webpack_require__(6); - - var _exception2 = _interopRequireDefault(_exception); - - var _utils = __webpack_require__(5); - - var _codeGen = __webpack_require__(29); - - var _codeGen2 = _interopRequireDefault(_codeGen); - - function Literal(value) { - this.value = value; - } - - function JavaScriptCompiler() {} - - JavaScriptCompiler.prototype = { - // PUBLIC API: You can override these methods in a subclass to provide - // alternative compiled forms for name lookup and buffering semantics - nameLookup: function nameLookup(parent, name /* , type*/) { - if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) { - return [parent, '.', name]; - } else { - return [parent, '[', JSON.stringify(name), ']']; - } - }, - depthedLookup: function depthedLookup(name) { - return [this.aliasable('container.lookup'), '(depths, "', name, '")']; - }, - - compilerInfo: function compilerInfo() { - var revision = _base.COMPILER_REVISION, - versions = _base.REVISION_CHANGES[revision]; - return [revision, versions]; - }, - - appendToBuffer: function appendToBuffer(source, location, explicit) { - // Force a source as this simplifies the merge logic. - if (!_utils.isArray(source)) { - source = [source]; - } - source = this.source.wrap(source, location); - - if (this.environment.isSimple) { - return ['return ', source, ';']; - } else if (explicit) { - // This is a case where the buffer operation occurs as a child of another - // construct, generally braces. We have to explicitly output these buffer - // operations to ensure that the emitted code goes in the correct location. - return ['buffer += ', source, ';']; - } else { - source.appendToBuffer = true; - return source; - } - }, - - initializeBuffer: function initializeBuffer() { - return this.quotedString(''); - }, - // END PUBLIC API - - compile: function compile(environment, options, context, asObject) { - this.environment = environment; - this.options = options; - this.stringParams = this.options.stringParams; - this.trackIds = this.options.trackIds; - this.precompile = !asObject; - - this.name = this.environment.name; - this.isChild = !!context; - this.context = context || { - decorators: [], - programs: [], - environments: [] - }; - - this.preamble(); - - this.stackSlot = 0; - this.stackVars = []; - this.aliases = {}; - this.registers = { list: [] }; - this.hashes = []; - this.compileStack = []; - this.inlineStack = []; - this.blockParams = []; - - this.compileChildren(environment, options); - - this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat; - this.useBlockParams = this.useBlockParams || environment.useBlockParams; - - var opcodes = environment.opcodes, - opcode = undefined, - firstLoc = undefined, - i = undefined, - l = undefined; - - for (i = 0, l = opcodes.length; i < l; i++) { - opcode = opcodes[i]; - - this.source.currentLocation = opcode.loc; - firstLoc = firstLoc || opcode.loc; - this[opcode.opcode].apply(this, opcode.args); - } - - // Flush any trailing content that might be pending. - this.source.currentLocation = firstLoc; - this.pushSource(''); - - /* istanbul ignore next */ - if (this.stackSlot || this.inlineStack.length || this.compileStack.length) { - throw new _exception2['default']('Compile completed with content left on stack'); - } - - if (!this.decorators.isEmpty()) { - this.useDecorators = true; - - this.decorators.prepend('var decorators = container.decorators;\n'); - this.decorators.push('return fn;'); - - if (asObject) { - this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]); - } else { - this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n'); - this.decorators.push('}\n'); - this.decorators = this.decorators.merge(); - } - } else { - this.decorators = undefined; - } - - var fn = this.createFunctionContext(asObject); - if (!this.isChild) { - var ret = { - compiler: this.compilerInfo(), - main: fn - }; - - if (this.decorators) { - ret.main_d = this.decorators; // eslint-disable-line camelcase - ret.useDecorators = true; - } - - var _context = this.context; - var programs = _context.programs; - var decorators = _context.decorators; - - for (i = 0, l = programs.length; i < l; i++) { - if (programs[i]) { - ret[i] = programs[i]; - if (decorators[i]) { - ret[i + '_d'] = decorators[i]; - ret.useDecorators = true; - } - } - } - - if (this.environment.usePartial) { - ret.usePartial = true; - } - if (this.options.data) { - ret.useData = true; - } - if (this.useDepths) { - ret.useDepths = true; - } - if (this.useBlockParams) { - ret.useBlockParams = true; - } - if (this.options.compat) { - ret.compat = true; - } - - if (!asObject) { - ret.compiler = JSON.stringify(ret.compiler); - - this.source.currentLocation = { start: { line: 1, column: 0 } }; - ret = this.objectLiteral(ret); - - if (options.srcName) { - ret = ret.toStringWithSourceMap({ file: options.destName }); - ret.map = ret.map && ret.map.toString(); - } else { - ret = ret.toString(); - } - } else { - ret.compilerOptions = this.options; - } - - return ret; - } else { - return fn; - } - }, - - preamble: function preamble() { - // track the last context pushed into place to allow skipping the - // getContext opcode when it would be a noop - this.lastContext = 0; - this.source = new _codeGen2['default'](this.options.srcName); - this.decorators = new _codeGen2['default'](this.options.srcName); - }, - - createFunctionContext: function createFunctionContext(asObject) { - var varDeclarations = ''; - - var locals = this.stackVars.concat(this.registers.list); - if (locals.length > 0) { - varDeclarations += ', ' + locals.join(', '); - } - - // Generate minimizer alias mappings - // - // When using true SourceNodes, this will update all references to the given alias - // as the source nodes are reused in situ. For the non-source node compilation mode, - // aliases will not be used, but this case is already being run on the client and - // we aren't concern about minimizing the template size. - var aliasCount = 0; - for (var alias in this.aliases) { - // eslint-disable-line guard-for-in - var node = this.aliases[alias]; - - if (this.aliases.hasOwnProperty(alias) && node.children && node.referenceCount > 1) { - varDeclarations += ', alias' + ++aliasCount + '=' + alias; - node.children[0] = 'alias' + aliasCount; - } - } - - var params = ['container', 'depth0', 'helpers', 'partials', 'data']; - - if (this.useBlockParams || this.useDepths) { - params.push('blockParams'); - } - if (this.useDepths) { - params.push('depths'); - } - - // Perform a second pass over the output to merge content when possible - var source = this.mergeSource(varDeclarations); - - if (asObject) { - params.push(source); - - return Function.apply(this, params); - } else { - return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']); - } - }, - mergeSource: function mergeSource(varDeclarations) { - var isSimple = this.environment.isSimple, - appendOnly = !this.forceBuffer, - appendFirst = undefined, - sourceSeen = undefined, - bufferStart = undefined, - bufferEnd = undefined; - this.source.each(function (line) { - if (line.appendToBuffer) { - if (bufferStart) { - line.prepend(' + '); - } else { - bufferStart = line; - } - bufferEnd = line; - } else { - if (bufferStart) { - if (!sourceSeen) { - appendFirst = true; - } else { - bufferStart.prepend('buffer += '); - } - bufferEnd.add(';'); - bufferStart = bufferEnd = undefined; - } - - sourceSeen = true; - if (!isSimple) { - appendOnly = false; - } - } - }); - - if (appendOnly) { - if (bufferStart) { - bufferStart.prepend('return '); - bufferEnd.add(';'); - } else if (!sourceSeen) { - this.source.push('return "";'); - } - } else { - varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer()); - - if (bufferStart) { - bufferStart.prepend('return buffer + '); - bufferEnd.add(';'); - } else { - this.source.push('return buffer;'); - } - } - - if (varDeclarations) { - this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n')); - } - - return this.source.merge(); - }, - - // [blockValue] - // - // On stack, before: hash, inverse, program, value - // On stack, after: return value of blockHelperMissing - // - // The purpose of this opcode is to take a block of the form - // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and - // replace it on the stack with the result of properly - // invoking blockHelperMissing. - blockValue: function blockValue(name) { - var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'), - params = [this.contextName(0)]; - this.setupHelperArgs(name, 0, params); - - var blockName = this.popStack(); - params.splice(1, 0, blockName); - - this.push(this.source.functionCall(blockHelperMissing, 'call', params)); - }, - - // [ambiguousBlockValue] - // - // On stack, before: hash, inverse, program, value - // Compiler value, before: lastHelper=value of last found helper, if any - // On stack, after, if no lastHelper: same as [blockValue] - // On stack, after, if lastHelper: value - ambiguousBlockValue: function ambiguousBlockValue() { - // We're being a bit cheeky and reusing the options value from the prior exec - var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'), - params = [this.contextName(0)]; - this.setupHelperArgs('', 0, params, true); - - this.flushInline(); - - var current = this.topStack(); - params.splice(1, 0, current); - - this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']); - }, - - // [appendContent] - // - // On stack, before: ... - // On stack, after: ... - // - // Appends the string value of `content` to the current buffer - appendContent: function appendContent(content) { - if (this.pendingContent) { - content = this.pendingContent + content; - } else { - this.pendingLocation = this.source.currentLocation; - } - - this.pendingContent = content; - }, - - // [append] - // - // On stack, before: value, ... - // On stack, after: ... - // - // Coerces `value` to a String and appends it to the current buffer. - // - // If `value` is truthy, or 0, it is coerced into a string and appended - // Otherwise, the empty string is appended - append: function append() { - if (this.isInline()) { - this.replaceStack(function (current) { - return [' != null ? ', current, ' : ""']; - }); - - this.pushSource(this.appendToBuffer(this.popStack())); - } else { - var local = this.popStack(); - this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']); - if (this.environment.isSimple) { - this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']); - } - } - }, - - // [appendEscaped] - // - // On stack, before: value, ... - // On stack, after: ... - // - // Escape `value` and append it to the buffer - appendEscaped: function appendEscaped() { - this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')'])); - }, - - // [getContext] - // - // On stack, before: ... - // On stack, after: ... - // Compiler value, after: lastContext=depth - // - // Set the value of the `lastContext` compiler value to the depth - getContext: function getContext(depth) { - this.lastContext = depth; - }, - - // [pushContext] - // - // On stack, before: ... - // On stack, after: currentContext, ... - // - // Pushes the value of the current context onto the stack. - pushContext: function pushContext() { - this.pushStackLiteral(this.contextName(this.lastContext)); - }, - - // [lookupOnContext] - // - // On stack, before: ... - // On stack, after: currentContext[name], ... - // - // Looks up the value of `name` on the current context and pushes - // it onto the stack. - lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) { - var i = 0; - - if (!scoped && this.options.compat && !this.lastContext) { - // The depthed query is expected to handle the undefined logic for the root level that - // is implemented below, so we evaluate that directly in compat mode - this.push(this.depthedLookup(parts[i++])); - } else { - this.pushContext(); - } - - this.resolvePath('context', parts, i, falsy, strict); - }, - - // [lookupBlockParam] - // - // On stack, before: ... - // On stack, after: blockParam[name], ... - // - // Looks up the value of `parts` on the given block param and pushes - // it onto the stack. - lookupBlockParam: function lookupBlockParam(blockParamId, parts) { - this.useBlockParams = true; - - this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']); - this.resolvePath('context', parts, 1); - }, - - // [lookupData] - // - // On stack, before: ... - // On stack, after: data, ... - // - // Push the data lookup operator - lookupData: function lookupData(depth, parts, strict) { - if (!depth) { - this.pushStackLiteral('data'); - } else { - this.pushStackLiteral('container.data(data, ' + depth + ')'); - } - - this.resolvePath('data', parts, 0, true, strict); - }, - - resolvePath: function resolvePath(type, parts, i, falsy, strict) { - // istanbul ignore next - - var _this = this; - - if (this.options.strict || this.options.assumeObjects) { - this.push(strictLookup(this.options.strict && strict, this, parts, type)); - return; - } - - var len = parts.length; - for (; i < len; i++) { - /* eslint-disable no-loop-func */ - this.replaceStack(function (current) { - var lookup = _this.nameLookup(current, parts[i], type); - // We want to ensure that zero and false are handled properly if the context (falsy flag) - // needs to have the special handling for these values. - if (!falsy) { - return [' != null ? ', lookup, ' : ', current]; - } else { - // Otherwise we can use generic falsy handling - return [' && ', lookup]; - } - }); - /* eslint-enable no-loop-func */ - } - }, - - // [resolvePossibleLambda] - // - // On stack, before: value, ... - // On stack, after: resolved value, ... - // - // If the `value` is a lambda, replace it on the stack by - // the return value of the lambda - resolvePossibleLambda: function resolvePossibleLambda() { - this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']); - }, - - // [pushStringParam] - // - // On stack, before: ... - // On stack, after: string, currentContext, ... - // - // This opcode is designed for use in string mode, which - // provides the string value of a parameter along with its - // depth rather than resolving it immediately. - pushStringParam: function pushStringParam(string, type) { - this.pushContext(); - this.pushString(type); - - // If it's a subexpression, the string result - // will be pushed after this opcode. - if (type !== 'SubExpression') { - if (typeof string === 'string') { - this.pushString(string); - } else { - this.pushStackLiteral(string); - } - } - }, - - emptyHash: function emptyHash(omitEmpty) { - if (this.trackIds) { - this.push('{}'); // hashIds - } - if (this.stringParams) { - this.push('{}'); // hashContexts - this.push('{}'); // hashTypes - } - this.pushStackLiteral(omitEmpty ? 'undefined' : '{}'); - }, - pushHash: function pushHash() { - if (this.hash) { - this.hashes.push(this.hash); - } - this.hash = { values: [], types: [], contexts: [], ids: [] }; - }, - popHash: function popHash() { - var hash = this.hash; - this.hash = this.hashes.pop(); - - if (this.trackIds) { - this.push(this.objectLiteral(hash.ids)); - } - if (this.stringParams) { - this.push(this.objectLiteral(hash.contexts)); - this.push(this.objectLiteral(hash.types)); - } - - this.push(this.objectLiteral(hash.values)); - }, - - // [pushString] - // - // On stack, before: ... - // On stack, after: quotedString(string), ... - // - // Push a quoted version of `string` onto the stack - pushString: function pushString(string) { - this.pushStackLiteral(this.quotedString(string)); - }, - - // [pushLiteral] - // - // On stack, before: ... - // On stack, after: value, ... - // - // Pushes a value onto the stack. This operation prevents - // the compiler from creating a temporary variable to hold - // it. - pushLiteral: function pushLiteral(value) { - this.pushStackLiteral(value); - }, - - // [pushProgram] - // - // On stack, before: ... - // On stack, after: program(guid), ... - // - // Push a program expression onto the stack. This takes - // a compile-time guid and converts it into a runtime-accessible - // expression. - pushProgram: function pushProgram(guid) { - if (guid != null) { - this.pushStackLiteral(this.programExpression(guid)); - } else { - this.pushStackLiteral(null); - } - }, - - // [registerDecorator] - // - // On stack, before: hash, program, params..., ... - // On stack, after: ... - // - // Pops off the decorator's parameters, invokes the decorator, - // and inserts the decorator into the decorators list. - registerDecorator: function registerDecorator(paramSize, name) { - var foundDecorator = this.nameLookup('decorators', name, 'decorator'), - options = this.setupHelperArgs(name, paramSize); - - this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']); - }, - - // [invokeHelper] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of helper invocation - // - // Pops off the helper's parameters, invokes the helper, - // and pushes the helper's return value onto the stack. - // - // If the helper is not found, `helperMissing` is called. - invokeHelper: function invokeHelper(paramSize, name, isSimple) { - var nonHelper = this.popStack(), - helper = this.setupHelper(paramSize, name), - simple = isSimple ? [helper.name, ' || '] : ''; - - var lookup = ['('].concat(simple, nonHelper); - if (!this.options.strict) { - lookup.push(' || ', this.aliasable('helpers.helperMissing')); - } - lookup.push(')'); - - this.push(this.source.functionCall(lookup, 'call', helper.callParams)); - }, - - // [invokeKnownHelper] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of helper invocation - // - // This operation is used when the helper is known to exist, - // so a `helperMissing` fallback is not required. - invokeKnownHelper: function invokeKnownHelper(paramSize, name) { - var helper = this.setupHelper(paramSize, name); - this.push(this.source.functionCall(helper.name, 'call', helper.callParams)); - }, - - // [invokeAmbiguous] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of disambiguation - // - // This operation is used when an expression like `{{foo}}` - // is provided, but we don't know at compile-time whether it - // is a helper or a path. - // - // This operation emits more code than the other options, - // and can be avoided by passing the `knownHelpers` and - // `knownHelpersOnly` flags at compile-time. - invokeAmbiguous: function invokeAmbiguous(name, helperCall) { - this.useRegister('helper'); - - var nonHelper = this.popStack(); - - this.emptyHash(); - var helper = this.setupHelper(0, name, helperCall); - - var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper'); - - var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')']; - if (!this.options.strict) { - lookup[0] = '(helper = '; - lookup.push(' != null ? helper : ', this.aliasable('helpers.helperMissing')); - } - - this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']); - }, - - // [invokePartial] - // - // On stack, before: context, ... - // On stack after: result of partial invocation - // - // This operation pops off a context, invokes a partial with that context, - // and pushes the result of the invocation back. - invokePartial: function invokePartial(isDynamic, name, indent) { - var params = [], - options = this.setupParams(name, 1, params); - - if (isDynamic) { - name = this.popStack(); - delete options.name; - } - - if (indent) { - options.indent = JSON.stringify(indent); - } - options.helpers = 'helpers'; - options.partials = 'partials'; - options.decorators = 'container.decorators'; - - if (!isDynamic) { - params.unshift(this.nameLookup('partials', name, 'partial')); - } else { - params.unshift(name); - } - - if (this.options.compat) { - options.depths = 'depths'; - } - options = this.objectLiteral(options); - params.push(options); - - this.push(this.source.functionCall('container.invokePartial', '', params)); - }, - - // [assignToHash] - // - // On stack, before: value, ..., hash, ... - // On stack, after: ..., hash, ... - // - // Pops a value off the stack and assigns it to the current hash - assignToHash: function assignToHash(key) { - var value = this.popStack(), - context = undefined, - type = undefined, - id = undefined; - - if (this.trackIds) { - id = this.popStack(); - } - if (this.stringParams) { - type = this.popStack(); - context = this.popStack(); - } - - var hash = this.hash; - if (context) { - hash.contexts[key] = context; - } - if (type) { - hash.types[key] = type; - } - if (id) { - hash.ids[key] = id; - } - hash.values[key] = value; - }, - - pushId: function pushId(type, name, child) { - if (type === 'BlockParam') { - this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : '')); - } else if (type === 'PathExpression') { - this.pushString(name); - } else if (type === 'SubExpression') { - this.pushStackLiteral('true'); - } else { - this.pushStackLiteral('null'); - } - }, - - // HELPERS - - compiler: JavaScriptCompiler, - - compileChildren: function compileChildren(environment, options) { - var children = environment.children, - child = undefined, - compiler = undefined; - - for (var i = 0, l = children.length; i < l; i++) { - child = children[i]; - compiler = new this.compiler(); // eslint-disable-line new-cap - - var index = this.matchExistingProgram(child); - - if (index == null) { - this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children - index = this.context.programs.length; - child.index = index; - child.name = 'program' + index; - this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile); - this.context.decorators[index] = compiler.decorators; - this.context.environments[index] = child; - - this.useDepths = this.useDepths || compiler.useDepths; - this.useBlockParams = this.useBlockParams || compiler.useBlockParams; - } else { - child.index = index; - child.name = 'program' + index; - - this.useDepths = this.useDepths || child.useDepths; - this.useBlockParams = this.useBlockParams || child.useBlockParams; - } - } - }, - matchExistingProgram: function matchExistingProgram(child) { - for (var i = 0, len = this.context.environments.length; i < len; i++) { - var environment = this.context.environments[i]; - if (environment && environment.equals(child)) { - return i; - } - } - }, - - programExpression: function programExpression(guid) { - var child = this.environment.children[guid], - programParams = [child.index, 'data', child.blockParams]; - - if (this.useBlockParams || this.useDepths) { - programParams.push('blockParams'); - } - if (this.useDepths) { - programParams.push('depths'); - } - - return 'container.program(' + programParams.join(', ') + ')'; - }, - - useRegister: function useRegister(name) { - if (!this.registers[name]) { - this.registers[name] = true; - this.registers.list.push(name); - } - }, - - push: function push(expr) { - if (!(expr instanceof Literal)) { - expr = this.source.wrap(expr); - } - - this.inlineStack.push(expr); - return expr; - }, - - pushStackLiteral: function pushStackLiteral(item) { - this.push(new Literal(item)); - }, - - pushSource: function pushSource(source) { - if (this.pendingContent) { - this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)); - this.pendingContent = undefined; - } - - if (source) { - this.source.push(source); - } - }, - - replaceStack: function replaceStack(callback) { - var prefix = ['('], - stack = undefined, - createdStack = undefined, - usedLiteral = undefined; - - /* istanbul ignore next */ - if (!this.isInline()) { - throw new _exception2['default']('replaceStack on non-inline'); - } - - // We want to merge the inline statement into the replacement statement via ',' - var top = this.popStack(true); - - if (top instanceof Literal) { - // Literals do not need to be inlined - stack = [top.value]; - prefix = ['(', stack]; - usedLiteral = true; - } else { - // Get or create the current stack name for use by the inline - createdStack = true; - var _name = this.incrStack(); - - prefix = ['((', this.push(_name), ' = ', top, ')']; - stack = this.topStack(); - } - - var item = callback.call(this, stack); - - if (!usedLiteral) { - this.popStack(); - } - if (createdStack) { - this.stackSlot--; - } - this.push(prefix.concat(item, ')')); - }, - - incrStack: function incrStack() { - this.stackSlot++; - if (this.stackSlot > this.stackVars.length) { - this.stackVars.push('stack' + this.stackSlot); - } - return this.topStackName(); - }, - topStackName: function topStackName() { - return 'stack' + this.stackSlot; - }, - flushInline: function flushInline() { - var inlineStack = this.inlineStack; - this.inlineStack = []; - for (var i = 0, len = inlineStack.length; i < len; i++) { - var entry = inlineStack[i]; - /* istanbul ignore if */ - if (entry instanceof Literal) { - this.compileStack.push(entry); - } else { - var stack = this.incrStack(); - this.pushSource([stack, ' = ', entry, ';']); - this.compileStack.push(stack); - } - } - }, - isInline: function isInline() { - return this.inlineStack.length; - }, - - popStack: function popStack(wrapped) { - var inline = this.isInline(), - item = (inline ? this.inlineStack : this.compileStack).pop(); - - if (!wrapped && item instanceof Literal) { - return item.value; - } else { - if (!inline) { - /* istanbul ignore next */ - if (!this.stackSlot) { - throw new _exception2['default']('Invalid stack pop'); - } - this.stackSlot--; - } - return item; - } - }, - - topStack: function topStack() { - var stack = this.isInline() ? this.inlineStack : this.compileStack, - item = stack[stack.length - 1]; - - /* istanbul ignore if */ - if (item instanceof Literal) { - return item.value; - } else { - return item; - } - }, - - contextName: function contextName(context) { - if (this.useDepths && context) { - return 'depths[' + context + ']'; - } else { - return 'depth' + context; - } - }, - - quotedString: function quotedString(str) { - return this.source.quotedString(str); - }, - - objectLiteral: function objectLiteral(obj) { - return this.source.objectLiteral(obj); - }, - - aliasable: function aliasable(name) { - var ret = this.aliases[name]; - if (ret) { - ret.referenceCount++; - return ret; - } - - ret = this.aliases[name] = this.source.wrap(name); - ret.aliasable = true; - ret.referenceCount = 1; - - return ret; - }, - - setupHelper: function setupHelper(paramSize, name, blockHelper) { - var params = [], - paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper); - var foundHelper = this.nameLookup('helpers', name, 'helper'), - callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : {}'); - - return { - params: params, - paramsInit: paramsInit, - name: foundHelper, - callParams: [callContext].concat(params) - }; - }, - - setupParams: function setupParams(helper, paramSize, params) { - var options = {}, - contexts = [], - types = [], - ids = [], - objectArgs = !params, - param = undefined; - - if (objectArgs) { - params = []; - } - - options.name = this.quotedString(helper); - options.hash = this.popStack(); - - if (this.trackIds) { - options.hashIds = this.popStack(); - } - if (this.stringParams) { - options.hashTypes = this.popStack(); - options.hashContexts = this.popStack(); - } - - var inverse = this.popStack(), - program = this.popStack(); - - // Avoid setting fn and inverse if neither are set. This allows - // helpers to do a check for `if (options.fn)` - if (program || inverse) { - options.fn = program || 'container.noop'; - options.inverse = inverse || 'container.noop'; - } - - // The parameters go on to the stack in order (making sure that they are evaluated in order) - // so we need to pop them off the stack in reverse order - var i = paramSize; - while (i--) { - param = this.popStack(); - params[i] = param; - - if (this.trackIds) { - ids[i] = this.popStack(); - } - if (this.stringParams) { - types[i] = this.popStack(); - contexts[i] = this.popStack(); - } - } - - if (objectArgs) { - options.args = this.source.generateArray(params); - } - - if (this.trackIds) { - options.ids = this.source.generateArray(ids); - } - if (this.stringParams) { - options.types = this.source.generateArray(types); - options.contexts = this.source.generateArray(contexts); - } - - if (this.options.data) { - options.data = 'data'; - } - if (this.useBlockParams) { - options.blockParams = 'blockParams'; - } - return options; - }, - - setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) { - var options = this.setupParams(helper, paramSize, params); - options = this.objectLiteral(options); - if (useRegister) { - this.useRegister('options'); - params.push('options'); - return ['options=', options]; - } else if (params) { - params.push(options); - return ''; - } else { - return options; - } - } - }; - - (function () { - var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' '); - - var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {}; - - for (var i = 0, l = reservedWords.length; i < l; i++) { - compilerWords[reservedWords[i]] = true; - } - })(); - - JavaScriptCompiler.isValidJavaScriptVariableName = function (name) { - return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name); - }; - - function strictLookup(requireTerminal, compiler, parts, type) { - var stack = compiler.popStack(), - i = 0, - len = parts.length; - if (requireTerminal) { - len--; - } - - for (; i < len; i++) { - stack = compiler.nameLookup(stack, parts[i], type); - } - - if (requireTerminal) { - return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ')']; - } else { - return stack; - } - } - - exports['default'] = JavaScriptCompiler; - module.exports = exports['default']; - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - /* global define */ - 'use strict'; - - exports.__esModule = true; - - var _utils = __webpack_require__(5); - - var SourceNode = undefined; - - try { - /* istanbul ignore next */ - if (false) { - // We don't support this in AMD environments. For these environments, we asusme that - // they are running on the browser and thus have no need for the source-map library. - var SourceMap = require('source-map'); - SourceNode = SourceMap.SourceNode; - } - } catch (err) {} - /* NOP */ - - /* istanbul ignore if: tested but not covered in istanbul due to dist build */ - if (!SourceNode) { - SourceNode = function (line, column, srcFile, chunks) { - this.src = ''; - if (chunks) { - this.add(chunks); - } - }; - /* istanbul ignore next */ - SourceNode.prototype = { - add: function add(chunks) { - if (_utils.isArray(chunks)) { - chunks = chunks.join(''); - } - this.src += chunks; - }, - prepend: function prepend(chunks) { - if (_utils.isArray(chunks)) { - chunks = chunks.join(''); - } - this.src = chunks + this.src; - }, - toStringWithSourceMap: function toStringWithSourceMap() { - return { code: this.toString() }; - }, - toString: function toString() { - return this.src; - } - }; - } - - function castChunk(chunk, codeGen, loc) { - if (_utils.isArray(chunk)) { - var ret = []; - - for (var i = 0, len = chunk.length; i < len; i++) { - ret.push(codeGen.wrap(chunk[i], loc)); - } - return ret; - } else if (typeof chunk === 'boolean' || typeof chunk === 'number') { - // Handle primitives that the SourceNode will throw up on - return chunk + ''; - } - return chunk; - } - - function CodeGen(srcFile) { - this.srcFile = srcFile; - this.source = []; - } - - CodeGen.prototype = { - isEmpty: function isEmpty() { - return !this.source.length; - }, - prepend: function prepend(source, loc) { - this.source.unshift(this.wrap(source, loc)); - }, - push: function push(source, loc) { - this.source.push(this.wrap(source, loc)); - }, - - merge: function merge() { - var source = this.empty(); - this.each(function (line) { - source.add([' ', line, '\n']); - }); - return source; - }, - - each: function each(iter) { - for (var i = 0, len = this.source.length; i < len; i++) { - iter(this.source[i]); - } - }, - - empty: function empty() { - var loc = this.currentLocation || { start: {} }; - return new SourceNode(loc.start.line, loc.start.column, this.srcFile); - }, - wrap: function wrap(chunk) { - var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1]; - - if (chunk instanceof SourceNode) { - return chunk; - } - - chunk = castChunk(chunk, this, loc); - - return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk); - }, - - functionCall: function functionCall(fn, type, params) { - params = this.generateList(params); - return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']); - }, - - quotedString: function quotedString(str) { - return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4 - .replace(/\u2029/g, '\\u2029') + '"'; - }, - - objectLiteral: function objectLiteral(obj) { - var pairs = []; - - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - var value = castChunk(obj[key], this); - if (value !== 'undefined') { - pairs.push([this.quotedString(key), ':', value]); - } - } - } - - var ret = this.generateList(pairs); - ret.prepend('{'); - ret.add('}'); - return ret; - }, - - generateList: function generateList(entries) { - var ret = this.empty(); - - for (var i = 0, len = entries.length; i < len; i++) { - if (i) { - ret.add(','); - } - - ret.add(castChunk(entries[i], this)); - } - - return ret; - }, - - generateArray: function generateArray(entries) { - var ret = this.generateList(entries); - ret.prepend('['); - ret.add(']'); - - return ret; - } - }; - - exports['default'] = CodeGen; - module.exports = exports['default']; - -/***/ } -/******/ ]) -}); -; \ No newline at end of file diff --git a/web/public/resource/javascript/jquery.min.js b/web/public/resource/javascript/jquery.min.js deleted file mode 100644 index 2d871b9..0000000 --- a/web/public/resource/javascript/jquery.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -*/ -(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t) -};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*\s*$/g,ct={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("' - ; - } - else if(source == 'youtube') { - html = '' - + '' - ; - } - } - else if(url) { - html = '' - + '' - ; - } - else { - module.error(error.noVideo); - } - return html; - }, - - // generate url parameters - url: function(source) { - var - api = (settings.api) - ? 1 - : 0, - autoplay = (settings.autoplay) - ? 1 - : 0, - hd = (settings.hd) - ? 1 - : 0, - showUI = (settings.showUI) - ? 1 - : 0, - // opposite used for some params - hideUI = !(settings.showUI) - ? 1 - : 0, - url = '' - ; - if(source == 'vimeo') { - url = '' - + 'api=' + api - + '&title=' + showUI - + '&byline=' + showUI - + '&portrait=' + showUI - + '&autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - if(source == 'ustream') { - url = '' - + 'autoplay=' + autoplay - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - else if(source == 'youtube') { - url = '' - + 'enablejsapi=' + api - + '&autoplay=' + autoplay - + '&autohide=' + hideUI - + '&hq=' + hd - + '&modestbranding=1' - ; - if(settings.color) { - url += '&color=' + settings.color; - } - } - return url; - } - }, - - setting: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, settings, name); - } - else if(value !== undefined) { - settings[name] = value; - } - else { - return settings[name]; - } - }, - internal: function(name, value) { - if( $.isPlainObject(name) ) { - $.extend(true, module, name); - } - else if(value !== undefined) { - module[name] = value; - } - else { - return module[name]; - } - }, - debug: function() { - if(settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.debug.apply(console, arguments); - } - } - }, - verbose: function() { - if(settings.verbose && settings.debug) { - if(settings.performance) { - module.performance.log(arguments); - } - else { - module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); - module.verbose.apply(console, arguments); - } - } - }, - error: function() { - module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); - module.error.apply(console, arguments); - }, - performance: { - log: function(message) { - var - currentTime, - executionTime, - previousTime - ; - if(settings.performance) { - currentTime = new Date().getTime(); - previousTime = time || currentTime; - executionTime = currentTime - previousTime; - time = currentTime; - performance.push({ - 'Element' : element, - 'Name' : message[0], - 'Arguments' : [].slice.call(message, 1) || '', - 'Execution Time' : executionTime - }); - } - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); - }, - display: function() { - var - title = settings.name + ':', - totalTime = 0 - ; - time = false; - clearTimeout(module.performance.timer); - $.each(performance, function(index, data) { - totalTime += data['Execution Time']; - }); - title += ' ' + totalTime + 'ms'; - if(moduleSelector) { - title += ' \'' + moduleSelector + '\''; - } - if($allModules.size() > 1) { - title += ' ' + '(' + $allModules.size() + ')'; - } - if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { - console.groupCollapsed(title); - if(console.table) { - console.table(performance); - } - else { - $.each(performance, function(index, data) { - console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); - }); - } - console.groupEnd(); - } - performance = []; - } - }, - invoke: function(query, passedArguments, context) { - var - maxDepth, - found, - response - ; - passedArguments = passedArguments || queryArguments; - context = element || context; - if(typeof query == 'string' && instance !== undefined) { - query = query.split(/[\. ]/); - maxDepth = query.length - 1; - $.each(query, function(depth, value) { - var camelCaseValue = (depth != maxDepth) - ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) - : query - ; - if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) { - instance = instance[camelCaseValue]; - } - else if( instance[camelCaseValue] !== undefined ) { - found = instance[camelCaseValue]; - return false; - } - else if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { - instance = instance[value]; - } - else if( instance[value] !== undefined ) { - found = instance[value]; - return false; - } - else { - module.error(error.method, query); - return false; - } - }); - } - if ( $.isFunction( found ) ) { - response = found.apply(context, passedArguments); - } - else if(found !== undefined) { - response = found; - } - if($.isArray(returnedValue)) { - returnedValue.push(response); - } - else if(returnedValue !== undefined) { - returnedValue = [returnedValue, response]; - } - else if(response !== undefined) { - returnedValue = response; - } - return found; - } - }; - - if(methodInvoked) { - if(instance === undefined) { - module.initialize(); - } - module.invoke(query); - } - else { - if(instance !== undefined) { - module.destroy(); - } - module.initialize(); - } - }) - ; - return (returnedValue !== undefined) - ? returnedValue - : this - ; -}; - -$.fn.video.settings = { - - name : 'Video', - namespace : 'video', - - debug : true, - verbose : true, - performance : true, - - metadata : { - source : 'source', - id : 'id', - url : 'url' - }, - - onPlay : function(){}, - onReset : function(){}, - onChange : function(){}, - - // callbacks not coded yet (needs to use jsapi) - onPause : function() {}, - onStop : function() {}, - - width : 'auto', - height : 'auto', - - autoplay : false, - color : '#442359', - hd : true, - showUI : false, - api : true, - - error : { - noVideo : 'No video specified', - method : 'The method you called is not defined' - }, - - className : { - active : 'active' - }, - - selector : { - embed : '.embed', - placeholder : '.placeholder', - playButton : '.play' - } -}; - - -})( jQuery, window , document ); diff --git a/web/public/resource/javascript/user_new_devices.js b/web/public/resource/javascript/user_new_devices.js deleted file mode 100644 index 14eb640..0000000 --- a/web/public/resource/javascript/user_new_devices.js +++ /dev/null @@ -1,60 +0,0 @@ -$(document).ready(function() { - //the dropdown menu - $('.ui.dropdown') - .dropdown({ - on:'hover' - }); - - $('.ui.selection.dropdown') - .dropdown(); - - $('.field .ui.image') - .dimmer({on: 'hover'}) - .dimmer('setting','duration',{ - show: 1, - hide: 100 - }); - - Gmap(); - function Gmap() { - var centerMarker = null; // 中心标记 - var center = new google.maps.LatLng(36.071883,120.4339423); - var initOptions = { - zoom: 10, - center: center, - mapTypeControl: false, - mapTypeId: google.maps.MapTypeId.ROADMAP - }; - - var map = new google.maps.Map(document.getElementById("locmap"), initOptions); - - google.maps.event.addListener(map, "click", function(event) { - if(centerMarker == null) - { - centerMarker = new google.maps.Marker( {position:new google.maps.LatLng(event.latLng.lat(), event.latLng.lng()), draggable:true, map:map} ); - google.maps.event.addListener(centerMarker, "dragend", function(event) { - var centerMarkerPos = centerMarker.getPosition(); - $("#device_lng").val(centerMarkerPos.lng()); - $("#device_lat").val(centerMarkerPos.lat()); - }); - } - else - { - centerMarker.setPosition(new google.maps.LatLng(event.latLng.lat(),event.latLng.lng())); - } - $("#device_lng").val(event.latLng.lng()); - $("#device_lat").val(event.latLng.lat()); - }); - - if($(".locmap").attr('edit_device') == "true") - { - centerMarker = new google.maps.Marker( {position:new google.maps.LatLng($("#device_lat").val(), $("#device_lng").val()), draggable:true, map:map} ); - google.maps.event.addListener(centerMarker, "dragend", function(event) { - var centerMarkerPos = centerMarker.getPosition(); - $("#device_lng").val(centerMarkerPos.lng()); - $("#device_lat").val(centerMarkerPos.lat()); - }); - } - } - -}); diff --git a/web/public/resource/javascript/vue.min.js b/web/public/resource/javascript/vue.min.js deleted file mode 100644 index d0cecce..0000000 --- a/web/public/resource/javascript/vue.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * Vue.js v2.2.0 - * (c) 2014-2017 Evan You - * Released under the MIT License. - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Vue=t()}(this,function(){"use strict";function e(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function t(e){var t=parseFloat(e);return isNaN(t)?e:t}function n(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i-1)return e.splice(n,1)}}function i(e,t){return Ei.call(e,t)}function o(e){return"string"==typeof e||"number"==typeof e}function a(e){var t=Object.create(null);return function(n){var r=t[n];return r||(t[n]=e(n))}}function s(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function c(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function u(e,t){for(var n in t)e[n]=t[n];return e}function l(e){return null!==e&&"object"==typeof e}function f(e){return Mi.call(e)===Pi}function p(e){for(var t={},n=0;n1?c(n):n;for(var r=c(arguments,1),i=0,o=n.length;i=0&&bo[n].id>e.id;)n--;bo.splice(Math.max(n,xo)+1,0,e)}else bo.push(e);wo||(wo=!0,Xi(he))}}function ge(e){Oo.clear(),ye(e,Oo)}function ye(e,t){var n,r,i=Array.isArray(e);if((i||l(e))&&Object.isExtensible(e)){if(e.__ob__){var o=e.__ob__.dep.id;if(t.has(o))return;t.add(o)}if(i)for(n=e.length;n--;)ye(e[n],t);else for(r=Object.keys(e),n=r.length;n--;)ye(e[r[n]],t)}}function _e(e,t,n){So.get=function(){return this[t][n]},So.set=function(e){this[t][n]=e},Object.defineProperty(e,n,So)}function be(e){e._watchers=[];var t=e.$options;t.props&&$e(e,t.props),t.methods&&Ae(e,t.methods),t.data?we(e):A(e._data={},!0),t.computed&&Ce(e,t.computed),t.watch&&Oe(e,t.watch)}function $e(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[],o=!e.$parent;uo.shouldConvert=o;var a=function(o){i.push(o);var a=R(o,t,n,e);O(r,o,a),o in e||_e(e,"_props",o)};for(var s in t)a(s);uo.shouldConvert=!0}function we(e){var t=e.$options.data;t=e._data="function"==typeof t?t.call(e):t||{},f(t)||(t={});for(var n=Object.keys(t),r=e.$options.props,o=n.length;o--;)r&&i(r,n[o])||_(n[o])||_e(e,"_data",n[o]);A(t,!0)}function Ce(e,t){var n=e._computedWatchers=Object.create(null);for(var r in t){var i=t[r],o="function"==typeof i?i:i.get;n[r]=new Ao(e,o,d,To),r in e||xe(e,r,i)}}function xe(e,t,n){"function"==typeof n?(So.get=ke(t),So.set=d):(So.get=n.get?n.cache!==!1?ke(t):n.get:d,So.set=n.set?n.set:d),Object.defineProperty(e,t,So)}function ke(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),io.target&&t.depend(),t.value}}function Ae(e,t){e.$options.props;for(var n in t)e[n]=null==t[n]?d:s(t[n],e)}function Oe(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i-1:e instanceof RegExp&&e.test(t)}function yt(e,t){for(var n in e){var r=e[n];if(r){var i=mt(r.componentOptions);i&&!t(i)&&(_t(r),e[n]=null)}}}function _t(e){e&&(e.componentInstance._inactive||de(e.componentInstance,"deactivated"),e.componentInstance.$destroy())}function bt(e){var t={};t.get=function(){return Hi},Object.defineProperty(e,"config",t),e.util={warn:no,extend:u,mergeOptions:M,defineReactive:O},e.set=S,e.delete=T,e.nextTick=Xi,e.options=Object.create(null),Hi._assetTypes.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,u(e.options.components,Po),lt(e),ft(e),pt(e),ht(e)}function $t(e){for(var t=e.data,n=e,r=e;r.componentInstance;)r=r.componentInstance._vnode,r.data&&(t=wt(r.data,t));for(;n=n.parent;)n.data&&(t=wt(t,n.data));return Ct(t)}function wt(e,t){return{staticClass:xt(e.staticClass,t.staticClass),class:e.class?[e.class,t.class]:t.class}}function Ct(e){var t=e.class,n=e.staticClass;return n||t?xt(n,kt(t)):""}function xt(e,t){return e?t?e+" "+t:e:t||""}function kt(e){var t="";if(!e)return t;if("string"==typeof e)return e;if(Array.isArray(e)){for(var n,r=0,i=e.length;r-1?aa[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:aa[e]=/HTMLUnknownElement/.test(t.toString())}function St(e){if("string"==typeof e){var t=document.querySelector(e);return t?t:document.createElement("div")}return e}function Tt(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function Et(e,t){return document.createElementNS(ta[e],t)}function jt(e){return document.createTextNode(e)}function Nt(e){return document.createComment(e)}function It(e,t,n){e.insertBefore(t,n)}function Lt(e,t){e.removeChild(t)}function Dt(e,t){e.appendChild(t)}function Mt(e){return e.parentNode}function Pt(e){return e.nextSibling}function Rt(e){return e.tagName}function Ft(e,t){e.textContent=t}function Ht(e,t,n){e.setAttribute(t,n)}function Ut(e,t){var n=e.data.ref;if(n){var i=e.context,o=e.componentInstance||e.elm,a=i.$refs;t?Array.isArray(a[n])?r(a[n],o):a[n]===o&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])&&a[n].indexOf(o)<0?a[n].push(o):a[n]=[o]:a[n]=o}}function Bt(e){return null==e}function Vt(e){return null!=e}function zt(e,t){return e.key===t.key&&e.tag===t.tag&&e.isComment===t.isComment&&!e.data==!t.data}function Jt(e,t,n){var r,i,o={};for(r=t;r<=n;++r)i=e[r].key,Vt(i)&&(o[i]=r);return o}function Kt(e){function t(e){return new vo(O.tagName(e).toLowerCase(),{},[],void 0,e)}function r(e,t){function n(){0===--n.listeners&&i(e)}return n.listeners=t,n}function i(e){var t=O.parentNode(e);t&&O.removeChild(t,e)}function a(e,t,n,r,i){if(e.isRootInsert=!i,!s(e,t,n,r)){var o=e.data,a=e.children,c=e.tag;Vt(c)?(e.elm=e.ns?O.createElementNS(e.ns,c):O.createElement(c,e),v(e),f(e,a,t),Vt(o)&&d(e,t),l(n,e.elm,r)):e.isComment?(e.elm=O.createComment(e.text),l(n,e.elm,r)):(e.elm=O.createTextNode(e.text),l(n,e.elm,r))}}function s(e,t,n,r){var i=e.data;if(Vt(i)){var o=Vt(e.componentInstance)&&i.keepAlive;if(Vt(i=i.hook)&&Vt(i=i.init)&&i(e,!1,n,r),Vt(e.componentInstance))return c(e,t),o&&u(e,t,n,r),!0}}function c(e,t){e.data.pendingInsert&&t.push.apply(t,e.data.pendingInsert),e.elm=e.componentInstance.$el,p(e)?(d(e,t),v(e)):(Ut(e),t.push(e))}function u(e,t,n,r){for(var i,o=e;o.componentInstance;)if(o=o.componentInstance._vnode,Vt(i=o.data)&&Vt(i=i.transition)){for(i=0;ip?(u=Bt(n[m+1])?null:n[m+1].elm,h(e,u,n,f,m,r)):f>m&&g(e,t,l,p)}function b(e,t,n,r){if(e!==t){if(t.isStatic&&e.isStatic&&t.key===e.key&&(t.isCloned||t.isOnce))return t.elm=e.elm,void(t.componentInstance=e.componentInstance);var i,o=t.data,a=Vt(o);a&&Vt(i=o.hook)&&Vt(i=i.prepatch)&&i(e,t);var s=t.elm=e.elm,c=e.children,u=t.children;if(a&&p(t)){for(i=0;i=0&&(m=e.charAt(h)," "===m);h--);m&&ma.test(m)||(l=!0)}}else void 0===o?(v=i+1,o=e.slice(0,i).trim()):t();if(void 0===o?o=e.slice(0,i).trim():0!==v&&t(),a)for(i=0;i=Ro}function gn(e){return 34===e||39===e}function yn(e){var t=1;for(Bo=Uo;!mn();)if(e=hn(),gn(e))_n(e);else if(91===e&&t++,93===e&&t--,0===t){Vo=Uo;break}}function _n(e){for(var t=e;!mn()&&(e=hn(),e!==t););}function bn(e,t,n){zo=n;var r=t.value,i=t.modifiers,o=e.tag,a=e.attrsMap.type;if("select"===o)Cn(e,r,i);else if("input"===o&&"checkbox"===a)$n(e,r,i);else if("input"===o&&"radio"===a)wn(e,r,i);else if("input"===o||"textarea"===o)xn(e,r,i);else if(!Hi.isReservedTag(o))return pn(e,r,i),!1;return!0}function $n(e,t,n){var r=n&&n.number,i=ln(e,"value")||"null",o=ln(e,"true-value")||"true",a=ln(e,"false-value")||"false";an(e,"checked","Array.isArray("+t+")?_i("+t+","+i+")>-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),un(e,ya,"var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$c){$$i<0&&("+t+"=$$a.concat($$v))}else{$$i>-1&&("+t+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+t+"=$$c}",null,!0)}function wn(e,t,n){var r=n&&n.number,i=ln(e,"value")||"null";i=r?"_n("+i+")":i,an(e,"checked","_q("+t+","+i+")"),un(e,ya,dn(t,i),null,!0)}function Cn(e,t,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",o="$event.target.multiple ? $$selectedVal : $$selectedVal[0]",a="var $$selectedVal = "+i+";";a=a+" "+dn(t,o),un(e,"change",a,null,!0)}function xn(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?ga:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=dn(t,l);c&&(f="if($event.target.composing)return;"+f),an(e,"value","("+t+")"),un(e,u,f,null,!0),(s||a||"number"===r)&&un(e,"blur","$forceUpdate()")}function kn(e){var t;e[ga]&&(t=zi?"change":"input",e[t]=[].concat(e[ga],e[t]||[]),delete e[ga]),e[ya]&&(t=Zi?"click":"change",e[t]=[].concat(e[ya],e[t]||[]),delete e[ya])}function An(e,t,n,r){if(n){var i=t,o=Jo;t=function(n){var a=1===arguments.length?i(n):i.apply(null,arguments);null!==a&&On(e,t,r,o)}}Jo.addEventListener(e,t,r)}function On(e,t,n,r){(r||Jo).removeEventListener(e,t,n)}function Sn(e,t){if(e.data.on||t.data.on){var n=t.data.on||{},r=e.data.on||{};Jo=t.elm,kn(n),q(n,r,An,On,t.context)}}function Tn(e,t){if(e.data.domProps||t.data.domProps){var n,r,i=t.elm,o=e.data.domProps||{},a=t.data.domProps||{};a.__ob__&&(a=t.data.domProps=u({},a));for(n in o)null==a[n]&&(i[n]="");for(n in a)if(r=a[n],"textContent"!==n&&"innerHTML"!==n||(t.children&&(t.children.length=0),r!==o[n]))if("value"===n){i._value=r;var s=null==r?"":String(r);En(i,t,s)&&(i.value=s)}else i[n]=r}}function En(e,t,n){return!e.composing&&("option"===t.tag||jn(e,n)||Nn(e,n))}function jn(e,t){return document.activeElement!==e&&e.value!==t}function Nn(e,n){var r=e.value,i=e._vModifiers;return i&&i.number||"number"===e.type?t(r)!==t(n):i&&i.trim?r.trim()!==n.trim():r!==n}function In(e){var t=Ln(e.style);return e.staticStyle?u(e.staticStyle,t):t}function Ln(e){return Array.isArray(e)?p(e):"string"==typeof e?$a(e):e}function Dn(e,t){var n,r={};if(t)for(var i=e;i.componentInstance;)i=i.componentInstance._vnode,i.data&&(n=In(i.data))&&u(r,n);(n=In(e.data))&&u(r,n);for(var o=e;o=o.parent;)o.data&&(n=In(o.data))&&u(r,n);return r}function Mn(e,t){var n=t.data,r=e.data;if(n.staticStyle||n.style||r.staticStyle||r.style){var i,o,a=t.elm,s=e.data.staticStyle,c=e.data.style||{},l=s||c,f=Ln(t.data.style)||{};t.data.style=f.__ob__?u({},f):f;var p=Dn(t,!0);for(o in l)null==p[o]&&xa(a,o,"");for(o in p)i=p[o],i!==l[o]&&xa(a,o,null==i?"":i)}}function Pn(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Rn(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t);else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");e.setAttribute("class",n.trim())}}function Fn(e){if(e){if("object"==typeof e){var t={};return e.css!==!1&&u(t,Sa(e.name||"v")),u(t,e),t}return"string"==typeof e?Sa(e):void 0}}function Hn(e){Ma(function(){Ma(e)})}function Un(e,t){(e._transitionClasses||(e._transitionClasses=[])).push(t),Pn(e,t)}function Bn(e,t){e._transitionClasses&&r(e._transitionClasses,t),Rn(e,t)}function Vn(e,t,n){var r=zn(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Ea?Ia:Da,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c0&&(n=Ea,l=a,f=o.length):t===ja?u>0&&(n=ja,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?Ea:ja:null,f=n?n===Ea?o.length:c.length:0);var p=n===Ea&&Pa.test(r[Na+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:p}}function Jn(e,t){for(;e.length1}function Yn(e,t){t.data.show||qn(t)}function Qn(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s-1,a.selected!==o&&(a.selected=o);else if(h(er(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Xn(e,t){for(var n=0,r=t.length;n',n.innerHTML.indexOf(t)>0}function vr(e){return Ga=Ga||document.createElement("div"),Ga.innerHTML=e,Ga.textContent}function hr(e,t){var n=t?Ms:Ds;return e.replace(n,function(e){return Ls[e]})}function mr(e,t){function n(t){f+=t,e=e.substring(t)}function r(){var t=e.match(ss);if(t){var r={tagName:t[1],attrs:[],start:f};n(t[0].length);for(var i,o;!(i=e.match(cs))&&(o=e.match(is));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=f,r}}function i(e){var n=e.tagName,r=e.unarySlash;u&&("p"===s&&es(n)&&o(s),Xa(n)&&s===n&&o(n));for(var i=l(n)||"html"===n&&"head"===s||!!r,a=e.attrs.length,f=new Array(a),p=0;p=0&&c[i].lowerCasedTag!==o;i--);else i=0;if(i>=0){for(var a=c.length-1;a>=i;a--)t.end&&t.end(c[a].tag,n,r);c.length=i,s=i&&c[i-1].tag}else"br"===o?t.start&&t.start(e,[],!0,n,r):"p"===o&&(t.start&&t.start(e,[],!1,n,r),t.end&&t.end(e,n,r))}for(var a,s,c=[],u=t.expectHTML,l=t.isUnaryTag||Ri,f=0;e;){if(a=e,s&&Ns(s)){var p=s.toLowerCase(),d=Is[p]||(Is[p]=new RegExp("([\\s\\S]*?)(]*>)","i")),v=0,h=e.replace(d,function(e,n,r){return v=r.length,"script"!==p&&"style"!==p&&"noscript"!==p&&(n=n.replace(//g,"$1").replace(//g,"$1")),t.chars&&t.chars(n),""});f+=e.length-h.length,e=h,o(p,f-v,f)}else{var m=e.indexOf("<");if(0===m){if(fs.test(e)){var g=e.indexOf("-->");if(g>=0){n(g+3);continue}}if(ps.test(e)){var y=e.indexOf("]>");if(y>=0){n(y+2);continue}}var _=e.match(ls);if(_){n(_[0].length);continue}var b=e.match(us);if(b){var $=f;n(b[0].length),o(b[1],$,f);continue}var w=r();if(w){i(w);continue}}var C=void 0,x=void 0,k=void 0;if(m>=0){for(x=e.slice(m);!(us.test(x)||ss.test(x)||fs.test(x)||ps.test(x)||(k=x.indexOf("<",1),k<0));)m+=k,x=e.slice(m);C=e.substring(0,m),n(m)}m<0&&(C=e,e=""),t.chars&&C&&t.chars(C)}if(e===a){t.chars&&t.chars(e);break}}o()}function gr(e,t){var n=t?Fs(t):Ps;if(n.test(e)){for(var r,i,o=[],a=n.lastIndex=0;r=n.exec(e);){i=r.index,i>a&&o.push(JSON.stringify(e.slice(a,i)));var s=tn(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a0,Ki=Vi&&Vi.indexOf("edge/")>0,qi=Vi&&Vi.indexOf("android")>0,Wi=Vi&&/iphone|ipad|ipod|ios/.test(Vi),Zi=Vi&&/chrome\/\d+/.test(Vi)&&!Ki,Gi=function(){return void 0===Oi&&(Oi=!Bi&&"undefined"!=typeof global&&"server"===global.process.env.VUE_ENV),Oi},Yi=Bi&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Qi="undefined"!=typeof Symbol&&y(Symbol)&&"undefined"!=typeof Reflect&&y(Reflect.ownKeys),Xi=function(){function e(){r=!1;var e=n.slice(0);n.length=0;for(var t=0;t1&&(t[n[0].trim()]=n[1].trim())}}),t}),wa=/^--/,Ca=/\s*!important$/,xa=function(e,t,n){wa.test(t)?e.style.setProperty(t,n):Ca.test(n)?e.style.setProperty(t,n.replace(Ca,""),"important"):e.style[Aa(t)]=n},ka=["Webkit","Moz","ms"],Aa=a(function(e){if(Ko=Ko||document.createElement("div"),e=Ni(e),"filter"!==e&&e in Ko.style)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n\/=]+)/,ns=/(?:=)/,rs=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],is=new RegExp("^\\s*"+ts.source+"(?:\\s*("+ns.source+")\\s*(?:"+rs.join("|")+"))?"),os="[a-zA-Z_][\\w\\-\\.]*",as="((?:"+os+"\\:)?"+os+")",ss=new RegExp("^<"+as),cs=/^\s*(\/?)>/,us=new RegExp("^<\\/"+as+"[^>]*>"),ls=/^]+>/i,fs=/^