commit cc925e0475f510dcfa98aca9ea408b6c7386c279 Author: Rinjae Date: Thu Aug 7 15:36:26 2025 +0900 init diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..0d01ebd --- /dev/null +++ b/.gitattributes @@ -0,0 +1,31 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# These are explicitly windows files and should use crlf +*.bat text eol=crlf +* text eol=lf +*.java text eol=lf +*.js text eol=lf +*.css text eol=lf +*.html text eol=lf + +*.docx binary +*.xlsx binary +*.pptx binary +*.doc binary +*.xls binary +*.ppt binary +*.png binary +*.jpg binary +*.jar binary +*.pdf binary +*.eot binary +*.ttf binary +*.woff binary +*.woff2 binary +*.gzip binary +*.zip binary +*.gz binary +*.ai binary +*.eps binary +*.swf binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ad42c8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,99 @@ +bin/ +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ +/src/main/generated +/log +/target + +/_src/ +/_script/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +/Log +logs/ +src/main/generated + +.DS_Store +node_modules +/dist +/resources +/components + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* +*.war +portal_deploy.tar + +file_upload/ + +# Ignore Gradle build output directory +build + + + +build_knbank.sh +portal.side +portal_page.zip +requirements.md +TODO.txt +/apim/ +/apim-elastic/ +/jeus_lib/ +/jeus-tibero/ +*.zip +/src/docs/ +/docs/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..57510db --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM openjdk:11-jdk + +WORKDIR /app + +COPY build/libs/*.war /app/app.war + +ENV JAVA_OPTS="" + +ENTRYPOINT java -jar ${JAVA_OPTS} app.war \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..a0af67c --- /dev/null +++ b/build.gradle @@ -0,0 +1,154 @@ +plugins { + id 'java' + id 'war' + id 'eclipse' + id 'idea' + id 'org.springframework.boot' version '2.7.18' + id 'io.spring.dependency-management' version '1.1.3' +} + +group = 'com.eactive' +version = '1.0.0' +sourceCompatibility = "1.8" +targetCompatibility = "1.8" + +def nexusUrl = "https://nexus.eactive.synology.me:8090" + +repositories { + mavenCentral() + maven { + url "${nexusUrl}/repository/maven-public/" + allowInsecureProtocol = true + } +} + +dependencies { + annotationProcessor "org.projectlombok:lombok:1.18.28" + annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0", "org.mapstruct:mapstruct-processor:1.5.5.Final" + + implementation 'com.eactive.elink.common:elink-common-data:4.5.5' + +// implementation 'io.swagger.core.v3:swagger-core:2.2.25' +// implementation 'io.swagger.parser.v3:swagger-parser:2.1.23' + implementation fileTree(dir: 'libs/swagger', include: ['*.jar']) + + implementation project(':elink-online-core-jpa') + implementation project(':elink-portal-common') + + implementation('org.springframework.boot:spring-boot-starter') + implementation 'org.springframework.boot:spring-boot-starter-jta-atomikos' + implementation('org.springframework.boot:spring-boot-starter-web') + implementation('org.springframework.boot:spring-boot-starter-validation') + implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0' + implementation group: 'com.fasterxml.woodstox', name: 'woodstox-core', version: '6.5.1' + + + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' + implementation 'org.springframework.boot:spring-boot-starter-security' + implementation('org.springframework.boot:spring-boot-starter-cache') + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.data:spring-data-envers' + implementation 'org.springframework.boot:spring-boot-starter-jdbc' + + runtimeOnly 'org.springframework.boot:spring-boot-devtools' + implementation 'org.springframework:spring-expression:5.3.30' + + implementation group: 'xalan', name: 'xalan', version: '2.7.3' + + implementation 'org.hibernate:hibernate-envers:5.6.15.Final' + implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.0.0' + implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' + + implementation 'com.github.ua-parser:uap-java:1.5.3' + implementation 'org.apache.httpcomponents:httpclient:4.5.14' + implementation 'com.navercorp.lucy:lucy-xss-servlet:2.0.1' + implementation 'javax.servlet:javax.servlet-api:4.0.0' + implementation 'org.jasypt:jasypt:1.9.3' + implementation 'xerces:xercesImpl:2.12.2' + + implementation 'org.apache.commons:commons-lang3:3.12.0' + implementation 'org.apache.commons:commons-collections4:4.4' + + implementation 'commons-net:commons-net:3.9.0' + implementation('commons-beanutils:commons-beanutils:1.9.4') { +// exclude group: 'commons-collections', module: 'commons-collections' + } + implementation 'org.mapstruct:mapstruct:1.5.5.Final' + implementation 'com.fasterxml.jackson.core:jackson-core:2.15.3' + implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.3' + implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.3' + + implementation group: 'org.apache.velocity', name: 'velocity-engine-core', version: '2.3' + + runtimeOnly group: 'com.mysql', name: 'mysql-connector-j', version: '8.4.0' + + implementation 'net.bytebuddy:byte-buddy:1.14.5' + + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' + testImplementation 'org.mockito:mockito-inline:3.11.2' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.seleniumhq.selenium:selenium-java:4.8.3' + testImplementation group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '5.9.1' + testImplementation 'org.apache.httpcomponents.client5:httpclient5:5.2.1' + +} + +ext { + springMavenArtifactVersion = '5.3.30' + encoding = 'UTF-8' + profile = 'local' +} + + +task printProfile { + doLast { + if (project.hasProperty('profile')) { + println "Current profile: ${project.property('profile')}" + } else { + println "No profile specified" + } + } +} + +bootRun { + // 디버깅 사용시에는 아래 내용 주석 해제 하세요 +// jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005' + + args = ["--spring.profiles.active=dev"] +} + + +sourceSets { + main { + java { + srcDir 'src/main/java' + srcDir 'build/generated/sources/annotationProcessor/java/main' + } + } +} + +configurations { + annotationProcessor +} + +compileJava { + options.annotationProcessorPath = configurations.annotationProcessor + options.compilerArgs += ["-parameters"] + options.encoding = 'UTF-8' +} +test { + useJUnitPlatform() + enabled = true +} + +war { + + // Set the name of the WAR file (optional) + archiveFileName = "PTLWeb.war" + + from('src/main/resources/jeus-web-dd.xml') { + into 'WEB-INF' + } + +} diff --git a/build_docker.sh b/build_docker.sh new file mode 100644 index 0000000..1cf0a19 --- /dev/null +++ b/build_docker.sh @@ -0,0 +1,3 @@ +./gradlew bootWar +docker build -t eactive-portal . + diff --git a/deploy_portal.sh b/deploy_portal.sh new file mode 100644 index 0000000..5344dea --- /dev/null +++ b/deploy_portal.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Check if the war file is provided +if [ -z "$1" ]; then + echo "Usage: $0 /path/to/DEVPortal.war" + exit 1 +fi + +# Variables +WAR_FILE="$1" +TIMESTAMP=$(date +%Y%m%d%H%M%S) +DEST_DIR="/app/apim/deploy/DVPWeb" +BACKUP_DIR="/app/apim/backup" + +# Create backup directory if not exists +mkdir -p $BACKUP_DIR + +# Backup the existing directory +if [ -d "$DEST_DIR" ]; then + echo "Backing up existing directory..." + mv $DEST_DIR "${BACKUP_DIR}/dvp_${TIMESTAMP}" +fi + +# Create destination directory if not exists +mkdir -p $DEST_DIR + +# Unzip the file to the dedicated location +echo "Extracting WAR file to $DEST_DIR..." +unzip $WAR_FILE -d $DEST_DIR + +echo "deploy successful" diff --git a/deploy_portal2.sh b/deploy_portal2.sh new file mode 100644 index 0000000..952665c --- /dev/null +++ b/deploy_portal2.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Check if the war file is provided +if [ -z "$1" ]; then + echo "Usage: $0 /path/to/DEVPortal.war" + exit 1 +fi + +# Variables +WAR_FILE="$1" +TIMESTAMP=$(date +%Y%m%d%H%M%S) +DEST_DIR="/app/apim/deploy/DVPWeb" +STATIC_DIR="/app/apim/deploy/static" +BACKUP_DIR="/app/apim/backup" + +# Create backup directory if not exists +mkdir -p $BACKUP_DIR + +# Backup the existing directory +if [ -d "$STATIC_DIR" ]; then + echo "Backing up existing static directory..." + mv $STATIC_DIR "${BACKUP_DIR}/dvp_static_${TIMESTAMP}" +fi + +if [ -d "$DEST_DIR" ]; then + echo "Backing up existing directory..." + mv $DEST_DIR "${BACKUP_DIR}/dvp_${TIMESTAMP}" +fi + + +# Create destination directory if not exists +mkdir -p $DEST_DIR +mkdir -p $STATIC_DIR + +# unzip the file to the dedicated location +echo "Extracting WAR file to $DEST_DIR..." +unzip $WAR_FILE -d $DEST_DIR +mv $DEST_DIR/static/* $STATIC_DIR/ + +echo "deploy successful" diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..848df0e --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.caching=true +org.gradle.offline=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..ccebba7 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..f8a4e70 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=gradle-7.6.3-bin.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..79a61d4 --- /dev/null +++ b/gradlew @@ -0,0 +1,244 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/lib/apache-24.pom b/lib/apache-24.pom new file mode 100644 index 0000000..dedd77f --- /dev/null +++ b/lib/apache-24.pom @@ -0,0 +1,519 @@ + + + + + + 4.0.0 + + + org.apache + apache + 24 + pom + + The Apache Software Foundation + + The Apache Software Foundation provides support for the Apache community of open-source software projects. + The Apache projects are characterized by a collaborative, consensus based development process, an open and + pragmatic software license, and a desire to create high quality software that leads the way in its field. + We consider ourselves not simply a group of projects sharing a server, but rather a community of developers + and users. + + https://www.apache.org/ + + The Apache Software Foundation + https://www.apache.org/ + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + Apache Announce List + announce-subscribe@apache.org + announce-unsubscribe@apache.org + announce@apache.org + https://mail-archives.apache.org/mod_mbox/www-announce/ + + + + + scm:git:https://gitbox.apache.org/repos/asf/maven-apache-parent.git + scm:git:https://gitbox.apache.org/repos/asf/maven-apache-parent.git + https://github.com/apache/maven-apache-parent/tree/${project.scm.tag} + apache-24 + + + + + apache.releases.https + Apache Release Distribution Repository + https://repository.apache.org/service/local/staging/deploy/maven2 + + + apache.snapshots.https + ${distMgmtSnapshotsName} + ${distMgmtSnapshotsUrl} + + + + + Apache Development Snapshot Repository + https://repository.apache.org/content/repositories/snapshots + https://www.apache.org/images/asf_logo_wide_2016.png + UTF-8 + UTF-8 + source-release + true + 3.1.1 + 1.8 + ${maven.compiler.target} + 1.7 + 2.22.2 + posix + + + + + + apache.snapshots + Apache Snapshot Repository + https://repository.apache.org/snapshots + + false + + + + + + apache.snapshots + Apache Snapshot Repository + https://repository.apache.org/snapshots + + false + + + + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.0.0 + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + org.apache.maven.plugins + maven-clean-plugin + 3.1.0 + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + + org.apache.maven.plugins + maven-dependency-plugin + 3.1.2 + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + + org.apache.maven.plugins + maven-docck-plugin + 1.1 + + + org.apache.maven.plugins + maven-ear-plugin + 3.2.0 + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.4.1 + + + org.apache.maven.plugins + maven-failsafe-plugin + ${surefire.version} + + + org.apache.maven.plugins + maven-gpg-plugin + 3.0.1 + + + --digest-algo=SHA512 + + + + + org.apache.maven.plugins + maven-help-plugin + 3.2.0 + + + org.apache.maven.plugins + maven-install-plugin + 2.5.2 + + + org.apache.maven.plugins + maven-invoker-plugin + 3.2.2 + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + true + true + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.3.0 + + true + + + + org.apache.maven.plugins + maven-plugin-plugin + 3.6.1 + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.1.2 + + + org.eclipse.m2e:lifecycle-mapping + + + + + + org.apache.maven.plugins + maven-release-plugin + 3.0.0-M4 + + false + deploy + apache-release + + + + + org.apache.maven.plugins + maven-remote-resources-plugin + 1.7.0 + + + org.apache.maven.plugins + maven-resources-plugin + 3.2.0 + + + org.apache.maven.plugins + maven-scm-plugin + 1.11.2 + + + org.apache.maven.plugins + maven-scm-publish-plugin + 3.1.0 + + + org.apache.maven.plugins + maven-site-plugin + 3.9.1 + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + org.apache.maven.plugins + maven-surefire-plugin + ${surefire.version} + + + org.apache.maven.plugins + maven-surefire-report-plugin + ${surefire.version} + + + org.apache.maven.plugins + maven-war-plugin + 3.3.1 + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + org.apache.rat + apache-rat-plugin + 0.13 + + + + + + + org.apache.maven.plugins + maven-remote-resources-plugin + + + process-resource-bundles + + process + + + + org.apache:apache-jar-resource-bundle:1.4 + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-maven-version + + enforce + + + + + ${minimalMavenBuildVersion} + + + + + + enforce-java-version + + enforce + + + + + ${minimalJavaBuildVersion} + + + + + + + + org.apache.maven.plugins + maven-site-plugin + + + attach-descriptor + + attach-descriptor + + + + + + + + + + + apache-release + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + org.apache.apache.resources + apache-source-release-assembly-descriptor + 1.0.6 + + + + + source-release-assembly + package + + single + + + true + + ${sourceReleaseAssemblyDescriptor} + + posix + + + + + + + true + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + + net.nicoulaj.maven.plugins + checksum-maven-plugin + 1.11 + + + source-release-checksum + + artifacts + + + post-integration-test + + + SHA-512 + + + source-release + true + false + + true + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-release-artifacts + + sign + + + + + + + + + + enforce-output-timestamp-property + + + ${basedir}/.maven-apache-parent.marker + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-output-timestamp-property + + enforce + + + + + project.build.outputTimestamp + The property "project.build.outputTimestamp" must be set on the reactor's root pom.xml to make the build reproducible. Further information at "https://maven.apache.org/guides/mini/guide-reproducible-builds.html". + + + + + + + + + + + diff --git a/lib/commons-compress-1.21.jar b/lib/commons-compress-1.21.jar new file mode 100644 index 0000000..4892334 Binary files /dev/null and b/lib/commons-compress-1.21.jar differ diff --git a/lib/dependency-management-plugin-1.1.5.jar b/lib/dependency-management-plugin-1.1.5.jar new file mode 100644 index 0000000..8a1b017 Binary files /dev/null and b/lib/dependency-management-plugin-1.1.5.jar differ diff --git a/lib/dependency-management-plugin-1.1.5.pom b/lib/dependency-management-plugin-1.1.5.pom new file mode 100644 index 0000000..b0b7df1 --- /dev/null +++ b/lib/dependency-management-plugin-1.1.5.pom @@ -0,0 +1,40 @@ + + + + + + + + 4.0.0 + io.spring.gradle + dependency-management-plugin + 1.1.5 + Dependency management plugin + A Gradle plugin that provides Maven-like dependency management functionality + https://github.com/spring-gradle-plugins/dependency-management-plugin + + VMware, Inc. + https://spring.io + + + + The Apache Software License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + + + + + wilkinsona + Andy Wilkinson + wilkinsona@vmware.com + + Project lead + + + + + scm:git:https://github.com/spring-gradle-plugins/dependency-management-plugin + https://github.com/spring-gradle-plugins/dependency-management-plugin + + diff --git a/lib/groovy-bom-3.0.19.pom b/lib/groovy-bom-3.0.19.pom new file mode 100644 index 0000000..5db18f7 --- /dev/null +++ b/lib/groovy-bom-3.0.19.pom @@ -0,0 +1,975 @@ + + + 4.0.0 + org.codehaus.groovy + groovy-bom + 3.0.19 + pom + Apache Groovy + Groovy: A powerful, dynamic language for the JVM + https://groovy-lang.org + 2003 + + Apache Software Foundation + https://apache.org + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + glaforge + Guillaume Laforge + Google + + Developer + + + + bob + bob mcwhirter + bob@werken.com + The Werken Company + + Founder + + + + jstrachan + James Strachan + james@coredevelopers.com + Core Developers Network + + Founder + + + + joe + Joe Walnes + ThoughtWorks + + Developer Emeritus + + + + skizz + Chris Stevenson + ThoughtWorks + + Developer Emeritus + + + + jamiemc + Jamie McCrindle + Three + + Developer Emeritus + + + + mattf + Matt Foemmel + ThoughtWorks + + Developer Emeritus + + + + alextkachman + Alex Tkachman + + Developer Emeritus + + + + roshandawrani + Roshan Dawrani + + Developer Emeritus + + + + spullara + Sam Pullara + sam@sampullara.com + + Developer Emeritus + + + + kasper + Kasper Nielsen + + Developer Emeritus + + + + travis + Travis Kay + + Developer Emeritus + + + + zohar + Zohar Melamed + + Developer Emeritus + + + + jwilson + John Wilson + tug@wilson.co.uk + The Wilson Partnership + + Developer Emeritus + + + + cpoirier + Chris Poirier + cpoirier@dreaming.org + + Developer Emeritus + + + + ckl + Christiaan ten Klooster + ckl@dacelo.nl + Dacelo WebDevelopment + + Developer Emeritus + + + + goetze + Steve Goetze + goetze@dovetail.com + Dovetailed Technologies, LLC + + Developer Emeritus + + + + bran + Bing Ran + b55r@sina.com + Leadingcare + + Developer Emeritus + + + + jez + Jeremy Rayner + jeremy.rayner@gmail.com + javanicus + + Developer Emeritus + + + + jstump + John Stump + johnstump2@yahoo.com + + Developer Emeritus + + + + blackdrag + Jochen Theodorou + blackdrag@gmx.org + + Developer + + + + russel + Russel Winder + russel@winder.org.uk + Concertant LLP & It'z Interactive Ltd + + Developer + Founder of Gant + + + + phk + Pilho Kim + phkim@cluecom.co.kr + + Developer Emeritus + + + + cstein + Christian Stein + sormuras@gmx.de + CTSR.de + + Developer Emeritus + + + + mittie + Dierk Koenig + Karakun AG + + Developer + + + + paulk + Paul King + paulk@asert.com.au + OCI, Australia + + Project Manager + Developer + + + + galleon + Guillaume Alleon + guillaume.alleon@gmail.com + + Developer Emeritus + + + + user57 + Jason Dillon + jason@planet57.com + + Developer Emeritus + + + + shemnon + Danno Ferrin + + Developer Emeritus + + + + jwill + James Williams + + Developer Emeritus + + + + timyates + Tim Yates + + Developer + + + + aalmiray + Andres Almiray + aalmiray@users.sourceforge.net + + Developer + + + + mguillem + Marc Guillemot + mguillemot@yahoo.fr + + Developer Emeritus + + + + jimwhite + Jim White + jim@pagesmiths.com + IFCX.org + + Developer + + + + pniederw + Peter Niederwieser + pniederw@gmail.com + + Developer Emeritus + + + + andresteingress + Andre Steingress + + Developer + + + + hamletdrc + Hamlet D'Arcy + hamletdrc@gmail.com + + Developer Emeritus + + + + melix + Cedric Champeau + cedric.champeau@gmail.com + + Developer + + + + pascalschumacher + Pascal Schumacher + + Developer + + + + sunlan + Daniel Sun + + Developer + + + + rpopma + Remko Popma + + Developer + + + + grocher + Graeme Rocher + + Developer + + + + emilles + Eric Milles + Thomson Reuters + + Developer + + + + + + Joern Eyrich + + + Robert Kuzelj + + + Rod Cope + + + Yuri Schimke + + + James Birchfield + + + Robert Fuller + + + Sergey Udovenko + + + Hallvard Traetteberg + + + Peter Reilly + + + Brian McCallister + + + Richard Monson-Haefel + + + Brian Larson + + + Artur Biesiadowski + abies@pg.gda.pl + + + Ivan Z. Ganza + + + Larry Jacobson + + + Jake Gage + + + Arjun Nayyar + + + Masato Nagai + + + Mark Chu-Carroll + + + Mark Turansky + + + Jean-Louis Berliet + + + Graham Miller + + + Marc Palmer + + + Tugdual Grall + + + Edwin Tellman + + + Evan "Hippy" Slatis + + + Mike Dillon + + + Bernhard Huber + + + Yasuharu Nakano + + + Marc DeXeT + + + Dejan Bosanac + dejan@nighttale.net + + + Denver Dino + + + Ted Naleid + + + Ted Leung + + + Merrick Schincariol + + + Chanwit Kaewkasi + + + Stefan Matthias Aust + + + Andy Dwelly + + + Philip Milne + + + Tiago Fernandez + + + Steve Button + + + Joachim Baumann + + + Jochen Eddel+ + + + Ilinca V. Hallberg + + + Björn Westlin + + + Andrew Glover + + + Brad Long + + + John Bito + + + Jim Jagielski + + + Rodolfo Velasco + + + John Hurst + + + Merlyn Albery-Speyer + + + jeremi Joslin + + + UEHARA Junji + + + NAKANO Yasuharu + + + Dinko Srkoc + + + Raffaele Cigni + + + Alberto Vilches Raton + + + Paulo Poiati + + + Alexander Klein + + + Adam Murdoch + + + David Durham + + + Daniel Henrique Alves Lima + + + John Wagenleitner + + + Colin Harrington + + + Brian Alexander + + + Jan Weitz + + + Chris K Wensel + + + David Sutherland + + + Mattias Reichel + + + David Lee + + + Sergei Egorov + + + Hein Meling + + + Michael Baehr + + + Craig Andrews + + + Peter Ledbrook + + + Scott Stirling + + + Thibault Kruse + + + Tim Tiemens + + + Mike Spille + + + Nikolay Chugunov + + + Francesco Durbin + + + Paolo Di Tommaso + + + Rene Scheibe + + + Matias Bjarland + + + Tomasz Bujok + + + Richard Hightower + + + Andrey Bloschetsov + + + Yu Kobayashi + + + Nick Grealy + + + Vaclav Pech + + + Chuck Tassoni + + + Steven Devijver + + + Ben Manes + + + Troy Heninger + + + Andrew Eisenberg + + + Eric Milles + + + Kohsuke Kawaguchi + + + Scott Vlaminck + + + Hjalmar Ekengren + + + Rafael Luque + + + Joachim Heldmann + + + dgouyette + + + Marcin Grzejszczak + + + Pap Lőrinc + + + Guillaume Balaine + + + Santhosh Kumar T + + + Alan Green + + + Marty Saxton + + + Marcel Overdijk + + + Jonathan Carlson + + + Thomas Heller + + + John Stump + + + Ivan Ganza + + + Alex Popescu + + + Martin Kempf + + + Martin Ghados + + + Martin Stockhammer + + + Martin C. Martin + + + Alexey Verkhovsky + + + Alberto Mijares + + + Matthias Cullmann + + + Tomek Bujok + + + Stephane Landelle + + + Stephane Maldini + + + Mark Volkmann + + + Andrew Taylor + + + Vladimir Vivien + + + Vladimir Orany + + + Joe Wolf + + + Kent Inge Fagerland Simonsen + + + Tom Nichols + + + Ingo Hoffmann + + + Sergii Bondarenko + + + mgroovy + + + Dominik Przybysz + + + Jason Thomas + + + Trygve Amundsens + + + Morgan Hankins + + + Shruti Gupta + + + Ben Yu + + + Dejan Bosanac + + + Lidia Donajczyk-Lipinska + + + Peter Gromov + + + Johannes Link + + + Chris Reeves + + + Sean Timm + + + Dmitry Vyazelenko + + + + + Groovy Developer List + https://mail-archives.apache.org/mod_mbox/groovy-dev/ + + + Groovy User List + https://mail-archives.apache.org/mod_mbox/groovy-users/ + + + + scm:git:https://github.com/apache/groovy.git + scm:git:https://github.com/apache/groovy.git + https://github.com/apache/groovy.git + + + jira + https://issues.apache.org/jira/browse/GROOVY + + + + + org.codehaus.groovy + groovy + 3.0.19 + + + org.codehaus.groovy + groovy-ant + 3.0.19 + + + org.codehaus.groovy + groovy-astbuilder + 3.0.19 + + + org.codehaus.groovy + groovy-bsf + 3.0.19 + + + org.codehaus.groovy + groovy-cli-commons + 3.0.19 + + + org.codehaus.groovy + groovy-cli-picocli + 3.0.19 + + + org.codehaus.groovy + groovy-console + 3.0.19 + + + org.codehaus.groovy + groovy-datetime + 3.0.19 + + + org.codehaus.groovy + groovy-dateutil + 3.0.19 + + + org.codehaus.groovy + groovy-docgenerator + 3.0.19 + + + org.codehaus.groovy + groovy-groovydoc + 3.0.19 + + + org.codehaus.groovy + groovy-groovysh + 3.0.19 + + + org.codehaus.groovy + groovy-jaxb + 3.0.19 + + + org.codehaus.groovy + groovy-jmx + 3.0.19 + + + org.codehaus.groovy + groovy-json + 3.0.19 + + + org.codehaus.groovy + groovy-jsr223 + 3.0.19 + + + org.codehaus.groovy + groovy-macro + 3.0.19 + + + org.codehaus.groovy + groovy-nio + 3.0.19 + + + org.codehaus.groovy + groovy-servlet + 3.0.19 + + + org.codehaus.groovy + groovy-sql + 3.0.19 + + + org.codehaus.groovy + groovy-swing + 3.0.19 + + + org.codehaus.groovy + groovy-templates + 3.0.19 + + + org.codehaus.groovy + groovy-test + 3.0.19 + + + org.codehaus.groovy + groovy-test-junit5 + 3.0.19 + + + org.codehaus.groovy + groovy-testng + 3.0.19 + + + org.codehaus.groovy + groovy-xml + 3.0.19 + + + org.codehaus.groovy + groovy-yaml + 3.0.19 + + + + diff --git a/lib/infinispan-bom-13.0.20.Final.pom b/lib/infinispan-bom-13.0.20.Final.pom new file mode 100644 index 0000000..00a16da --- /dev/null +++ b/lib/infinispan-bom-13.0.20.Final.pom @@ -0,0 +1,419 @@ + + + 4.0.0 + + + org.infinispan + infinispan-build-configuration-parent + 13.0.20.Final + ../pom.xml + + + infinispan-bom + pom + + Infinispan BOM + Infinispan BOM module + http://www.infinispan.org + + JBoss, a division of Red Hat + http://www.jboss.org + + + + Apache License 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + repo + + + + + placeholder + See http://www.infinispan.org for a complete list of contributors + + + + + Infinispan Issues + https://lists.jboss.org/mailman/listinfo/infinispan-issues + https://lists.jboss.org/mailman/listinfo/infinispan-issues + infinispan-issues@lists.jboss.org + http://lists.jboss.org/pipermail/infinispan-issues/ + + + Infinispan Developers + https://lists.jboss.org/mailman/listinfo/infinispan-dev + https://lists.jboss.org/mailman/listinfo/infinispan-dev + infinispan-dev@lists.jboss.org + http://lists.jboss.org/pipermail/infinispan-dev/ + + + + scm:git:git@github.com:infinispan/infinispan.git + scm:git:git@github.com:infinispan/infinispan.git + https://github.com/infinispan/infinispan + + + jira + https://issues.jboss.org/browse/ISPN + + + + + 1.8 + + ${version.console} + + + + + + org.infinispan + infinispan-api + ${version.infinispan} + + + org.infinispan + infinispan-cachestore-jdbc + ${version.infinispan} + + + org.infinispan + infinispan-cachestore-sql + ${version.infinispan} + + + org.infinispan + infinispan-cachestore-jpa + ${version.infinispan} + + + org.infinispan + infinispan-cachestore-remote + ${version.infinispan} + + + org.infinispan + infinispan-cachestore-rocksdb + ${version.infinispan} + + + org.infinispan + infinispan-cdi-common + ${version.infinispan} + + + org.infinispan + infinispan-cdi-embedded + ${version.infinispan} + + + org.infinispan + infinispan-cdi-remote + ${version.infinispan} + + + org.infinispan + infinispan-checkstyle + ${version.infinispan} + + + org.infinispan + infinispan-cli-client + ${version.infinispan} + + + org.infinispan + infinispan-client-hotrod + ${version.infinispan} + + + org.infinispan + infinispan-client-rest + ${version.infinispan} + + + org.infinispan + infinispan-key-value-store-client + ${version.infinispan} + + + org.infinispan + infinispan-clustered-counter + ${version.infinispan} + + + org.infinispan + infinispan-clustered-lock + ${version.infinispan} + + + org.infinispan + infinispan-commons + ${version.infinispan} + + + + org.infinispan + infinispan-commons-test + ${version.infinispan} + + + org.infinispan + infinispan-component-annotations + ${version.infinispan} + provided + + + org.infinispan + infinispan-component-processor + ${version.infinispan} + + + org.infinispan + infinispan-core + ${version.infinispan} + + + org.infinispan + infinispan-jboss-marshalling + ${version.infinispan} + + + org.infinispan + infinispan-extended-statistics + ${version.infinispan} + + + org.infinispan + infinispan-hibernate-cache-commons + ${version.infinispan} + + + org.infinispan + infinispan-hibernate-cache-spi + ${version.infinispan} + + + org.infinispan + infinispan-hibernate-cache-v53 + ${version.infinispan} + + + org.infinispan + infinispan-jcache-commons + ${version.infinispan} + + + org.infinispan + infinispan-jcache + ${version.infinispan} + + + org.infinispan + infinispan-jcache-remote + ${version.infinispan} + + + org.infinispan + infinispan-console + ${versionx.org.infinispan.infinispan-console} + + + org.infinispan + infinispan-multimap + ${version.infinispan} + + + org.infinispan + infinispan-objectfilter + ${version.infinispan} + + + org.infinispan + infinispan-query-core + ${version.infinispan} + + + org.infinispan + infinispan-query + ${version.infinispan} + + + org.infinispan + infinispan-query-dsl + ${version.infinispan} + + + org.infinispan + infinispan-remote-query-client + ${version.infinispan} + + + org.infinispan + infinispan-remote-query-server + ${version.infinispan} + + + org.infinispan + infinispan-scripting + ${version.infinispan} + + + + org.infinispan + infinispan-server-core + ${version.infinispan} + + + + org.infinispan + infinispan-server-hotrod + ${version.infinispan} + + + + org.infinispan + infinispan-server-memcached + ${version.infinispan} + + + + org.infinispan + infinispan-server-rest + ${version.infinispan} + + + + org.infinispan + infinispan-server-router + ${version.infinispan} + + + org.infinispan + infinispan-server-runtime + ${version.infinispan} + + + + org.infinispan + infinispan-server-testdriver-core + ${version.infinispan} + + + + org.infinispan + infinispan-server-testdriver-junit4 + ${version.infinispan} + + + + org.infinispan + infinispan-server-testdriver-junit5 + ${version.infinispan} + + + + org.infinispan + infinispan-spring5-common + ${version.infinispan} + + + org.infinispan + infinispan-spring5-embedded + ${version.infinispan} + + + org.infinispan + infinispan-spring5-remote + ${version.infinispan} + + + org.infinispan + infinispan-spring-boot-starter-embedded + ${version.infinispan} + + + org.infinispan + infinispan-spring-boot-starter-remote + ${version.infinispan} + + + org.infinispan + infinispan-tasks + ${version.infinispan} + + + org.infinispan + infinispan-tasks-api + ${version.infinispan} + + + org.infinispan + infinispan-tools + ${version.infinispan} + + + org.infinispan + infinispan-anchored-keys + ${version.infinispan} + + + org.infinispan.protostream + protostream + ${version.protostream} + + + org.infinispan.protostream + protostream-types + ${version.protostream} + + + org.infinispan.protostream + protostream-processor + ${version.protostream} + + provided + + + org.infinispan + infinispan-cloudevents-integration + ${version.infinispan} + + + + + + + community-release + + true + + + + + org.infinispan + infinispan-marshaller-kryo + ${version.infinispan} + + + org.infinispan + infinispan-marshaller-kryo-bundle + ${version.infinispan} + + + org.infinispan + infinispan-marshaller-protostuff + ${version.infinispan} + + + org.infinispan + infinispan-marshaller-protostuff-bundle + ${version.infinispan} + + + + + + diff --git a/lib/infinispan-build-configuration-parent-13.0.20.Final.pom b/lib/infinispan-build-configuration-parent-13.0.20.Final.pom new file mode 100644 index 0000000..3cb0677 --- /dev/null +++ b/lib/infinispan-build-configuration-parent-13.0.20.Final.pom @@ -0,0 +1,338 @@ + + + 4.0.0 + + + org.jboss + jboss-parent + 36 + + + + + org.infinispan + infinispan-build-configuration-parent + 13.0.20.Final + pom + + Infinispan Common Parent + Infinispan common parent POM module + http://www.infinispan.org + + JBoss, a division of Red Hat + http://www.jboss.org + + + + Apache License 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + repo + + + + + placeholder + See http://www.infinispan.org for a complete list of contributors + + + + + Infinispan Issues + https://lists.jboss.org/mailman/listinfo/infinispan-issues + https://lists.jboss.org/mailman/listinfo/infinispan-issues + infinispan-issues@lists.jboss.org + http://lists.jboss.org/pipermail/infinispan-issues/ + + + Infinispan Developers + https://lists.jboss.org/mailman/listinfo/infinispan-dev + https://lists.jboss.org/mailman/listinfo/infinispan-dev + infinispan-dev@lists.jboss.org + http://lists.jboss.org/pipermail/infinispan-dev/ + + + + scm:git:git@github.com:infinispan/infinispan.git + scm:git:git@github.com:infinispan/infinispan.git + https://github.com/infinispan/infinispan + + + jira + https://issues.jboss.org/browse/ISPN + + + Jenkins + https://ci.infinispan.org + + + mail +
infinispan-commits@lists.jboss.org
+
+
+
+ + + ${maven.snapshots.repo.id} + ${maven.snapshots.repo.url} + + + ${maven.releases.repo.id} + ${maven.releases.repo.url} + + + + bom + + + + 1.8 + 1.8 + + + Infinispan + infinispan + infinispan + ${project.version} + Triskaidekaphobia + ispn + 13.0 + ${infinispan.module.slot.prefix}-${infinispan.base.version} + ${infinispan.base.version} + community-operators + operatorhubio-catalog + infinispan + 9E31AB27445478DB + WildFly + wildfly + + + https://s01.oss.sonatype.org/ + ossrh + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + ossrh + https://s01.oss.sonatype.org/content/repositories/snapshots + + + + + org.wildfly + 24.0.1.Final + + + 11 + + + 1.10.7 + 1.8.1 + 1.0b3 + 3.5.2 + 1.6.0.Final + 1.0.6.RELEASE + 1.70 + 4.0.9 + 2.8.4 + 1.21 + 0.15.5.Final + 5.7.4 + 2.3.1 + 1.1.4 + 2.4.8 + 1.3 + 5.3.22.Final + 6.0.8.Final + 13.0.20.Final + 1.2.0.Beta3 + 1.4.0.Final + 1.0.2.Final + 1.12 + 1.0.0 + 2.14.1 + 2.14.1 + 0.8.7 + 1.3.3 + 2.0.2 + 2.2.3 + 1.1.0 + 3.4.1.Final + 2.0.12.Final + 5.0.6.CR1 + 5.12.0.Final + 3.0.6.Final + 1.2.6 + 2.0.0 + 3.1.3 + 1.0 + 4.2.18.Final + 1.1.0 + 4.13.1 + 5.6.2 + 2.17.1 + 8.7.0 + 1.7 + 2.27.0 + 1.9.7 + 2.6 + 15.3 + 4.1.100.Final + 3.14.9 + 1.23 + 3.0.1.Final + 16.0.1.Final + 1.17.2.Final + 2.2.5.Final + 2.2.2.SP01 + 2.2.2.SP01 + 2.2.2.Final + 2.2.2.Final + 5.0.3.Final + 2.5.5.SP12 + 4.4.4.Final + 1.6.2 + 1.0.3 + 6.22.1.1 + 3.0.4 + 2.10.0 + 2.0.2 + 3.0.1 + 2.0 + 3.0 + 1.1.10.5 + 2.6.6 + 5.3.18 + 2.6.2 + 1.7.1 + 2.7.2 + 1.3.7 + 1.4.20 + + + 3.1.1 + 3.8.2 + ${version.antlr3} + 3.0.0 + 3.1.0 + 4.2.1 + 3.0.1 + 3.10.1 + 3.2.1 + 3.2.0 + 3.4.0 + 3.6.0 + 3.0.0-M1 + 1.5 + 3.1.0 + 3.2.4 + 3.2.0 + 3.0.0-M5 + 4.2.8.Final + 5.2.1.Final + 6.1.0 + 2.4.8.Final + 1.6.13 + + + 8.32 + 6.29.0 + + + false + + + + + + + com.github.spotbugs + spotbugs-maven-plugin + + + org.owasp + dependency-check-maven + + + org.sonatype.plugins + nexus-staging-maven-plugin + ${version.sonatype.nexus-staging-plugin} + + true + ${infinispan.brand.name} ${project.version} release + ${maven.releases.nexus.url} + ${maven.releases.repo.id} + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${version.maven.javadoc} + + + javadoc + package + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + ${version.maven.gpg} + + + sign-artifacts + verify + + sign + + + ${infinispan.gpg.key} + ${infinispan.gpg.key} + + + + + + + + + + + community-release + + false + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + + + + + + nexus-staging + + !skipNexusStaging + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + false + + + + + + + +
diff --git a/lib/jackson-bom-2.13.5.pom b/lib/jackson-bom-2.13.5.pom new file mode 100644 index 0000000..3ac441c --- /dev/null +++ b/lib/jackson-bom-2.13.5.pom @@ -0,0 +1,428 @@ + + + 4.0.0 + + + com.fasterxml.jackson + jackson-parent + + 2.13 + + + jackson-bom + Jackson BOM + Bill of Materials pom for getting full, complete set of compatible versions +of Jackson components maintained by FasterXML.com + + 2.13.5 + pom + + + base + + + + FasterXML + http://fasterxml.com/ + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + cowtowncoder + Tatu Saloranta + tatu@fasterxml.com + + + + https://github.com/FasterXML/jackson-bom + + scm:git:git@github.com:FasterXML/jackson-bom.git + scm:git:git@github.com:FasterXML/jackson-bom.git + https://github.com/FasterXML/jackson-bom + jackson-bom-2.13.5 + + + + 2.13.5 + + + ${jackson.version} + ${jackson.version} + ${jackson.version} + ${jackson.version} + ${jackson.version} + ${jackson.version} + ${jackson.version} + ${jackson.version} + + ${jackson.version} + ${jackson.version.module} + ${jackson.version.module} + + 1.2.0 + + + + + + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version.annotations} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version.core} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version.databind} + + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-avro + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-cbor + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-csv + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-ion + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-properties + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-protobuf + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-smile + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-toml + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.version.dataformat} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + ${jackson.version.dataformat} + + + + + com.fasterxml.jackson.datatype + jackson-datatype-eclipse-collections + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-guava + ${jackson.version.datatype} + + + + + + + com.fasterxml.jackson.datatype + jackson-datatype-hibernate4 + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-hibernate5 + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-hibernate5-jakarta + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-hppc + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-jakarta-jsonp + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-jaxrs + + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-joda-money + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-json-org + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr353 + ${jackson.version.datatype} + + + com.fasterxml.jackson.datatype + jackson-datatype-pcollections + ${jackson.version.datatype} + + + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-base + ${jackson.version.jaxrs} + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-cbor-provider + ${jackson.version.jaxrs} + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + ${jackson.version.jaxrs} + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-smile-provider + ${jackson.version.jaxrs} + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-xml-provider + ${jackson.version.jaxrs} + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-yaml-provider + ${jackson.version.jaxrs} + + + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-base + ${jackson.version.jakarta.rs} + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-cbor-provider + ${jackson.version.jakarta.rs} + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-json-provider + ${jackson.version.jakarta.rs} + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-smile-provider + ${jackson.version.jakarta.rs} + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-xml-provider + ${jackson.version.jakarta.rs} + + + com.fasterxml.jackson.jakarta.rs + jackson-jakarta-rs-yaml-provider + ${jackson.version.jakarta.rs} + + + + + com.fasterxml.jackson.jr + jackson-jr-all + ${jackson.version.jacksonjr} + + + com.fasterxml.jackson.jr + jackson-jr-annotation-support + ${jackson.version.jacksonjr} + + + com.fasterxml.jackson.jr + jackson-jr-objects + ${jackson.version.jacksonjr} + + + com.fasterxml.jackson.jr + jackson-jr-retrofit2 + ${jackson.version.jacksonjr} + + + com.fasterxml.jackson.jr + jackson-jr-stree + ${jackson.version.jacksonjr} + + + + + com.fasterxml.jackson.module + jackson-module-afterburner + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-blackbird + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-guice + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-jakarta-xmlbind-annotations + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-jsonSchema + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-kotlin + ${jackson.version.module.kotlin} + + + com.fasterxml.jackson.module + jackson-module-mrbean + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-no-ctor-deser + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-osgi + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-parameter-names + ${jackson.version.module} + + + com.fasterxml.jackson.module + jackson-module-paranamer + ${jackson.version.module} + + + + + + + com.fasterxml.jackson.module + jackson-module-scala_2.11 + ${jackson.version.module.scala} + + + com.fasterxml.jackson.module + jackson-module-scala_2.12 + ${jackson.version.module.scala} + + + com.fasterxml.jackson.module + jackson-module-scala_2.13 + ${jackson.version.module.scala} + + + com.fasterxml.jackson.module + jackson-module-scala_3 + ${jackson.version.module.scala} + + + + + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots + false + true + + + diff --git a/lib/jackson-parent-2.13.pom b/lib/jackson-parent-2.13.pom new file mode 100644 index 0000000..df2f148 --- /dev/null +++ b/lib/jackson-parent-2.13.pom @@ -0,0 +1,191 @@ + + + 4.0.0 + + + com.fasterxml + oss-parent + 43 + + + com.fasterxml.jackson + jackson-parent + 2.13 + pom + + Jackson parent poms + Parent pom for all Jackson components + http://github.com/FasterXML/ + + FasterXML + http://fasterxml.com/ + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + cowtowncoder + Tatu Saloranta + tatu@fasterxml.com + + + + + scm:git:git@github.com:FasterXML/jackson-parent.git + scm:git:git@github.com:FasterXML/jackson-parent.git + http://github.com/FasterXML/jackson-parent + jackson-parent-2.13 + + + + + + 1.8 + 1.8 + lines,source,vars + + + ${basedir}/src/main/java/${packageVersion.dir}/PackageVersion.java.in + ${generatedSourcesDir}/${packageVersion.dir}/PackageVersion.java + + + + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots + false + true + + + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-java + validate + + enforce + + + + + [3.6,) + [ERROR] The currently supported version of Maven is 3.6 or higher + + + true + true + true + clean,deploy,site + [ERROR] Best Practice is to always define plugin versions! + + + + + + + + + com.google.code.maven-replacer-plugin + replacer + ${version.plugin.replacer} + + + process-packageVersion + + replace + + + + + + ${packageVersion.template.input} + ${packageVersion.template.output} + + + @package@ + ${packageVersion.package} + + + @projectversion@ + ${project.version} + + + @projectgroupid@ + ${project.groupId} + + + @projectartifactid@ + ${project.artifactId} + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + com.google.code.maven-replacer-plugin + replacer + [${version.plugin.replacer},) + + replace + + + + + false + + + + + + + + + + + + diff --git a/lib/java-driver-bom-4.14.1.pom b/lib/java-driver-bom-4.14.1.pom new file mode 100644 index 0000000..ee7a6a1 --- /dev/null +++ b/lib/java-driver-bom-4.14.1.pom @@ -0,0 +1,110 @@ + + + + 4.0.0 + com.datastax.oss + java-driver-bom + 4.14.1 + pom + DataStax Java driver for Apache Cassandra(R) - Bill Of Materials + A driver for Apache Cassandra(R) 2.1+ that works exclusively with the Cassandra Query Language version 3 (CQL3) and Cassandra's native protocol versions 3 and above. + https://github.com/datastax/java-driver/java-driver-bom + 2017 + + + Apache 2 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + Apache License Version 2.0 + + + + + Various + DataStax + + + + scm:git:git@github.com:datastax/java-driver.git/java-driver-bom + scm:git:git@github.com:datastax/java-driver.git/java-driver-bom + 4.14.1 + https://github.com/datastax/java-driver/java-driver-bom + + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + com.datastax.oss + java-driver-core + 4.14.1 + + + com.datastax.oss + java-driver-core-shaded + 4.14.1 + + + com.datastax.oss + java-driver-mapper-processor + 4.14.1 + + + com.datastax.oss + java-driver-mapper-runtime + 4.14.1 + + + com.datastax.oss + java-driver-query-builder + 4.14.1 + + + com.datastax.oss + java-driver-test-infra + 4.14.1 + + + com.datastax.oss + java-driver-metrics-micrometer + 4.14.1 + + + com.datastax.oss + java-driver-metrics-microprofile + 4.14.1 + + + com.datastax.oss + native-protocol + 1.5.1 + + + com.datastax.oss + java-driver-shaded-guava + 25.1-jre-graal-sub-1 + + + + diff --git a/lib/jboss-parent-36.pom b/lib/jboss-parent-36.pom new file mode 100644 index 0000000..efab1d9 --- /dev/null +++ b/lib/jboss-parent-36.pom @@ -0,0 +1,1478 @@ + + + + + 4.0.0 + + org.jboss + 36 + jboss-parent + + pom + + JBoss Parent Parent POM + Provides, via submodules, a base configuration for JBoss project builds, as well as a derived configuration supporting multi-release JARs + http://www.jboss.org + + + JIRA + https://issues.jboss.org/ + + + + scm:git:git@github.com:jboss/jboss-parent-pom.git + scm:git:git@github.com:jboss/jboss-parent-pom.git + http://github.com/jboss/jboss-parent-pom + HEAD + + + + + jboss.org + JBoss.org Community + JBoss.org + http://www.jboss.org + + + + + + JBoss User List + https://lists.jboss.org/mailman/listinfo/jboss-user + https://lists.jboss.org/mailman/listinfo/jboss-user + http://lists.jboss.org/pipermail/jboss-user/ + + + JBoss Developer List + https://lists.jboss.org/mailman/listinfo/jboss-development + https://lists.jboss.org/mailman/listinfo/jboss-development + http://lists.jboss.org/pipermail/jboss-development/ + + + + + + Public Domain + http://repository.jboss.org/licenses/cc0-1.0.txt + repo + + + + + JBoss by Red Hat + http://www.jboss.org + + + + + + + 1.8 + 3.0.1 + 3.1.0 + 3.0.0 + 1.4 + 3.5.0 + 3.0.0 + 3.1.0 + 4.1.2 + 2.7 + 3.8.0-jboss-2 + 3.1.1 + 2.8.2 + 1.4.1 + 3.0.1 + 1.0.0 + 3.0.1 + 1.6.0 + 3.0.0-M2 + 3.0.5 + 1.6 + 3.1.0 + 1.0.2 + 2.5.2 + 3.1.0 + 3.0.1 + 2.1 + 2.5 + 1.16 + 2.9 + 3.5.2 + 3.10.0 + 2.4 + 2.5.3 + 3.1.0 + 3.1.1 + 3.7.1 + 3.6.0.1398 + 3.0.1 + 2.22.0 + ${version.surefire.plugin} + 3.2.2 + 4.4.3 + + + 3.6.0 + + + + + + jboss-releases-repository + https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/ + jboss-snapshots-repository + https://repository.jboss.org/nexus/content/repositories/snapshots/ + + + + + + + UTF-8 + UTF-8 + + + 1.8 + 1.8 + ${maven.compiler.target} + ${maven.compiler.source} + + + ${maven.compiler.target} + ${maven.compiler.source} + ${maven.compiler.testTarget} + ${maven.compiler.testSource} + + + 3.2.5 + ${maven.compiler.argument.source} + ERROR + + + true + + + ${maven.compiler.argument.target} + + + false + -Pjboss-release + + + source-release + 8.19 + + + + + 3.Final + + + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + ${version.antrun.plugin} + + + org.apache.maven.plugins + maven-archetype-plugin + ${version.archetype.plugin} + + + org.apache.maven.plugins + maven-assembly-plugin + ${version.assembly.plugin} + + + true + + + true + + + true + + + + ${project.url} + ${java.version} + ${java.vendor} + ${os.name} + ${os.arch} + ${os.version} + ${project.scm.url} + ${project.scm.connection} + ${buildNumber} + + + + + + org.codehaus.mojo + build-helper-maven-plugin + ${version.buildhelper.plugin} + + + org.codehaus.mojo + buildnumber-maven-plugin + ${version.buildnumber.plugin} + + + com.googlecode.maven-download-plugin + download-maven-plugin + ${version.download.plugin} + + + org.apache.felix + maven-bundle-plugin + ${version.bundle.plugin} + + + true + + + true + + + true + + + + ${project.url} + ${java.version} + ${java.vendor} + ${os.name} + ${os.arch} + ${os.version} + ${project.scm.url} + ${project.scm.connection} + + + + ${buildNumber} + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${version.checkstyle.plugin} + + + com.puppycrawl.tools + checkstyle + ${version.checkstyle} + + + com.sun + tools + + + + + + + org.apache.maven.plugins + maven-clean-plugin + ${version.clean.plugin} + + + com.atlassian.maven.plugins + clover-maven-plugin + ${version.clover.plugin} + + + org.codehaus.mojo + cobertura-maven-plugin + ${version.cobertura.plugin} + + + org.apache.maven.plugins + maven-compiler-plugin + ${version.compiler.plugin} + + true + true + ${maven.compiler.argument.source} + ${maven.compiler.argument.target} + ${maven.compiler.argument.testSource} + ${maven.compiler.argument.testTarget} + + -Xlint:unchecked + + + + + org.apache.maven.plugins + maven-dependency-plugin + ${version.dependency.plugin} + + + org.apache.maven.plugins + maven-deploy-plugin + ${version.deploy.plugin} + + + org.apache.maven.plugins + maven-ear-plugin + ${version.ear.plugin} + + + org.codehaus.plexus + plexus-archiver + ${version.plexus.archiver} + + + + + true + + + true + + + true + + + + ${project.url} + ${java.version} + ${java.vendor} + ${os.name} + ${os.arch} + ${os.version} + ${project.scm.url} + ${project.scm.connection} + ${buildNumber} + + + + + + org.apache.maven.plugins + maven-ejb-plugin + ${version.ejb.plugin} + + + org.apache.maven.plugins + maven-enforcer-plugin + ${version.enforcer.plugin} + + + org.codehaus.mojo + exec-maven-plugin + ${version.exec.plugin} + + + org.apache.maven.plugins + maven-failsafe-plugin + ${version.failsafe.plugin} + + + org.codehaus.mojo + findbugs-maven-plugin + ${version.findbugs.plugin} + + + org.apache.maven.plugins + maven-gpg-plugin + ${version.gpg.plugin} + + + org.apache.maven.plugins + maven-help-plugin + ${version.help.plugin} + + + org.jboss.maven.plugins + maven-injection-plugin + ${version.injection.plugin} + + + compile + + bytecode + + + + + + org.apache.maven.plugins + maven-install-plugin + ${version.install.plugin} + + + org.apache.maven.plugins + maven-jar-plugin + ${version.jar.plugin} + + + true + + + true + + + true + + + + ${project.url} + ${java.version} + ${java.vendor} + ${os.name} + ${os.arch} + ${os.version} + ${project.scm.url} + ${project.scm.connection} + ${buildNumber} + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${version.javadoc.plugin} + +
${project.name} ${project.version}]]>
+
${project.name} ${project.version}]]>
+ + true + + + true + + + true + + + + ${project.url} + ${java.version} + ${java.vendor} + ${os.name} + ${os.arch} + ${os.version} + ${project.scm.url} + ${project.scm.connection} + ${buildNumber} + + + + ${javadoc.additional.params} + ${javadoc.additional.params} +
+
+ + org.codehaus.mojo + javancss-maven-plugin + ${version.javancss.plugin} + + + org.apache.maven.plugins + maven-jxr-plugin + ${version.jxr.plugin} + + + org.codehaus.mojo + license-maven-plugin + ${version.license.plugin} + + + org.apache.maven.plugins + maven-plugin-plugin + ${version.plugin.plugin} + + + org.apache.maven.plugins + maven-pmd-plugin + ${version.pmd.plugin} + + + org.apache.maven.plugins + maven-rar-plugin + ${version.rar.plugin} + + + org.apache.maven.plugins + maven-release-plugin + ${version.release.plugin} + + + org.apache.maven.plugins + maven-resources-plugin + ${version.resources.plugin} + + + org.apache.maven.plugins + maven-shade-plugin + ${version.shade.plugin} + + + org.apache.maven.plugins + maven-site-plugin + ${version.site.plugin} + + + org.codehaus.mojo + sonar-maven-plugin + ${version.sonar.plugin} + + + org.apache.maven.plugins + maven-source-plugin + ${version.source.plugin} + + + true + + + true + + + true + + + + ${project.url} + ${java.version} + ${java.vendor} + ${os.name} + ${os.arch} + ${os.version} + ${project.scm.url} + ${project.scm.connection} + ${buildNumber} + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${version.surefire.plugin} + + false + + ${project.build.directory} + + + + + org.apache.maven.plugins + maven-war-plugin + ${version.war.plugin} + + + true + + + true + + + true + + + + ${project.url} + ${java.version} + ${java.vendor} + ${os.name} + ${os.arch} + ${os.version} + ${project.scm.url} + ${project.scm.connection} + ${buildNumber} + + + false + + + + org.zanata + zanata-maven-plugin + ${version.zanata.plugin} + + + + + org.eclipse.m2e + lifecycle-mapping + ${version.org.eclipse.m2e.lifecycle-mapping} + + + + + + + org.apache.felix + maven-bundle-plugin + [2.3.7,) + + manifest + + + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + [1.3.1,) + + enforce + + + + + + + + + + org.codehaus.mojo + buildnumber-maven-plugin + [1.0.0,) + + create + + + + + + + + + + + +
+ +
+ + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-java-version + + enforce + + + + + ${insecure.repositories} + + http://* + + + http://* + + + + To build this project JDK ${jdk.min.version} (or greater) is required. Please install it. + ${jdk.min.version} + + + + + + enforce-maven-version + + enforce + + + + + To build this project Maven ${maven.min.version} (or greater) is required. Please install it. + ${maven.min.version} + + + + + + + + + + org.codehaus.mojo + buildnumber-maven-plugin + + + get-scm-revision + initialize + + create + + + false + false + UNKNOWN + true + + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + + +
+ + + + + + jboss-release + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${version.assembly.plugin} + + + org.apache.apache.resources + apache-source-release-assembly-descriptor + 1.0.6 + + + + + source-release-assembly + package + + single + + + true + + ${sourceReleaseAssemblyDescriptor} + + gnu + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + + + + doclint-java8-disable + + [1.8,) + + + -Xdoclint:none + + + + + gpg-sign + + + + + org.apache.maven.plugins + maven-gpg-plugin + + true + + + + + sign + + + + + + + + + + compile-java8-release-flag + + + ${basedir}/build-release-8 + + [9,) + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + default-compile + compile + + compile + + + 8 + + + + + + + + + + + include-jdk-misc + + + ${basedir}/build-include-jdk-misc + + [9,) + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + fetch-jdk-misc + generate-sources + + get + copy + + + org.jboss:jdk-misc:${version.jdk-misc} + ${project.build.directory} + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + default-compile + compile + + compile + + + 8 + + ${project.build.directory}/jdk-misc.jar + + + + + + + + + + + + + java8-test + + [9,) + + java8.home + + + ${basedir}/build-test-java8 + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + java8-test + test + + test + + + ${java8.home}/bin/java + + ${java8.home}/lib/tools.jar + + + + + + + + + + + + java9-mr-build + + [9,) + + ${basedir}/src/main/java9 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + compile-java9 + compile + + compile + + + 9 + ${project.build.directory} + ${project.basedir}/src/main/java9 + ${project.build.directory}/classes/META-INF/versions/9 + + + ${project.build.outputDirectory} + + + + + + + + maven-jar-plugin + + + + true + + + + + + + + + + + java9-test + + [10,) + + java9.home + + + ${basedir}/build-test-java9 + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + java9-test + test + + test + + + ${java9.home}/bin/java + ${project.build.directory}/classes/META-INF/versions/9 + + + ${project.build.outputDirectory} + + + + + + + + + + + + + java10-mr-build + + [10,) + + ${basedir}/src/main/java10 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + compile-java10 + compile + + compile + + + 10 + ${project.build.directory} + ${project.basedir}/src/main/java10 + ${project.build.directory}/classes/META-INF/versions/10 + + + + ${project.build.directory}/classes/META-INF/versions/9 + + ${project.build.outputDirectory} + + + + + + + + maven-jar-plugin + + + + true + + + + + + + + + + + java10-test + + [11,) + + java10.home + + + ${basedir}/build-test-java10 + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + java10-test + test + + test + + + ${java10.home}/bin/java + ${project.build.directory}/classes/META-INF/versions/10 + + + + ${project.build.directory}/classes/META-INF/versions/9 + + ${project.build.outputDirectory} + + + + + + + + + + + + + java11-mr-build + + [11,) + + ${basedir}/src/main/java11 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + compile-java11 + compile + + compile + + + 11 + ${project.build.directory} + ${project.basedir}/src/main/java11 + ${project.build.directory}/classes/META-INF/versions/11 + + + + ${project.build.directory}/classes/META-INF/versions/10 + + + ${project.build.directory}/classes/META-INF/versions/9 + + ${project.build.outputDirectory} + + + + + + + + maven-jar-plugin + + + + true + + + + + + + + + + + java11-test + + [12,) + + java11.home + + + ${basedir}/build-test-java11 + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + java11-test + test + + test + + + ${java11.home}/bin/java + ${project.build.directory}/classes/META-INF/versions/11 + + + + ${project.build.directory}/classes/META-INF/versions/10 + + + ${project.build.directory}/classes/META-INF/versions/9 + + ${project.build.outputDirectory} + + + + + + + + + + + + + java12-mr-build + + [12,) + + ${basedir}/src/main/java12 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + compile-java12 + compile + + compile + + + 12 + ${project.build.directory} + ${project.basedir}/src/main/java12 + ${project.build.directory}/classes/META-INF/versions/12 + + + + ${project.build.directory}/classes/META-INF/versions/11 + + + ${project.build.directory}/classes/META-INF/versions/10 + + + ${project.build.directory}/classes/META-INF/versions/9 + + ${project.build.outputDirectory} + + + + + + + + maven-jar-plugin + + + + true + + + + + + + + + + + java12-test + + [13,) + + java12.home + + + ${basedir}/build-test-java12 + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + java12-test + test + + test + + + ${java12.home}/bin/java + ${project.build.directory}/classes/META-INF/versions/12 + + + + ${project.build.directory}/classes/META-INF/versions/11 + + + ${project.build.directory}/classes/META-INF/versions/10 + + + ${project.build.directory}/classes/META-INF/versions/9 + + ${project.build.outputDirectory} + + + + + + + + + + + + + java13-mr-build + + [13,) + + ${basedir}/src/main/java13 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + compile-java13 + compile + + compile + + + 12 + ${project.build.directory} + ${project.basedir}/src/main/java13 + ${project.build.directory}/classes/META-INF/versions/13 + + + + ${project.build.directory}/classes/META-INF/versions/12 + + + ${project.build.directory}/classes/META-INF/versions/11 + + + ${project.build.directory}/classes/META-INF/versions/10 + + + ${project.build.directory}/classes/META-INF/versions/9 + + ${project.build.outputDirectory} + + + + + + + + maven-jar-plugin + + + + true + + + + + + + + + + + + + + jboss-public-repository + JBoss Public Maven Repository + https://repository.jboss.org/nexus/content/groups/public/ + default + + true + + + false + + + + + + + ${jboss.releases.repo.id} + JBoss Releases Repository + ${jboss.releases.repo.url} + + + ${jboss.snapshots.repo.id} + JBoss Snapshots Repository + ${jboss.snapshots.repo.url} + + + +
diff --git a/lib/jersey-bom-2.35.pom b/lib/jersey-bom-2.35.pom new file mode 100644 index 0000000..1801f9e --- /dev/null +++ b/lib/jersey-bom-2.35.pom @@ -0,0 +1,435 @@ + + + + + + 4.0.0 + + + org.eclipse.ee4j + project + 1.0.6 + + + + org.glassfish.jersey + jersey-bom + 2.35 + pom + jersey-bom + + Jersey Bill of Materials (BOM) + + + + + org.glassfish.jersey.core + jersey-common + ${project.version} + + + org.glassfish.jersey.core + jersey-client + ${project.version} + + + org.glassfish.jersey.core + jersey-server + ${project.version} + + + org.glassfish.jersey.bundles + jaxrs-ri + ${project.version} + + + org.glassfish.jersey.connectors + jersey-apache-connector + ${project.version} + + + org.glassfish.jersey.connectors + jersey-helidon-connector + ${project.version} + + + org.glassfish.jersey.connectors + jersey-grizzly-connector + ${project.version} + + + org.glassfish.jersey.connectors + jersey-jetty-connector + ${project.version} + + + org.glassfish.jersey.connectors + jersey-jdk-connector + ${project.version} + + + org.glassfish.jersey.connectors + jersey-netty-connector + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-jetty-http + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-grizzly2-http + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-grizzly2-servlet + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-jetty-servlet + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-jdk-http + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-netty-http + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-servlet + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-servlet-core + ${project.version} + + + org.glassfish.jersey.containers + jersey-container-simple-http + ${project.version} + + + org.glassfish.jersey.containers.glassfish + jersey-gf-ejb + ${project.version} + + + org.glassfish.jersey.ext + jersey-bean-validation + ${project.version} + + + org.glassfish.jersey.ext + jersey-entity-filtering + ${project.version} + + + org.glassfish.jersey.ext + jersey-metainf-services + ${project.version} + + + org.glassfish.jersey.ext.microprofile + jersey-mp-config + ${project.version} + + + org.glassfish.jersey.ext + jersey-mvc + ${project.version} + + + org.glassfish.jersey.ext + jersey-mvc-bean-validation + ${project.version} + + + org.glassfish.jersey.ext + jersey-mvc-freemarker + ${project.version} + + + org.glassfish.jersey.ext + jersey-mvc-jsp + ${project.version} + + + org.glassfish.jersey.ext + jersey-mvc-mustache + ${project.version} + + + org.glassfish.jersey.ext + jersey-proxy-client + ${project.version} + + + org.glassfish.jersey.ext + jersey-servlet-portability + ${project.version} + + + org.glassfish.jersey.ext + jersey-spring4 + ${project.version} + + + org.glassfish.jersey.ext + jersey-spring5 + ${project.version} + + + org.glassfish.jersey.ext + jersey-declarative-linking + ${project.version} + + + org.glassfish.jersey.ext + jersey-wadl-doclet + ${project.version} + + + org.glassfish.jersey.ext.cdi + jersey-weld2-se + ${project.version} + + + org.glassfish.jersey.ext.cdi + jersey-cdi1x + ${project.version} + + + org.glassfish.jersey.ext.cdi + jersey-cdi1x-transaction + ${project.version} + + + org.glassfish.jersey.ext.cdi + jersey-cdi1x-validation + ${project.version} + + + org.glassfish.jersey.ext.cdi + jersey-cdi1x-servlet + ${project.version} + + + org.glassfish.jersey.ext.cdi + jersey-cdi1x-ban-custom-hk2-binding + ${project.version} + + + org.glassfish.jersey.ext.cdi + jersey-cdi-rs-inject + ${project.version} + + + org.glassfish.jersey.ext.rx + jersey-rx-client-guava + ${project.version} + + + org.glassfish.jersey.ext.rx + jersey-rx-client-rxjava + ${project.version} + + + org.glassfish.jersey.ext.rx + jersey-rx-client-rxjava2 + ${project.version} + + + org.glassfish.jersey.ext.microprofile + jersey-mp-rest-client + ${project.version} + + + org.glassfish.jersey.media + jersey-media-jaxb + ${project.version} + + + org.glassfish.jersey.media + jersey-media-json-jackson + ${project.version} + + + + org.glassfish.jersey.media + jersey-media-json-jettison + ${project.version} + + + org.glassfish.jersey.media + jersey-media-json-processing + ${project.version} + + + org.glassfish.jersey.media + jersey-media-json-binding + ${project.version} + + + org.glassfish.jersey.media + jersey-media-kryo + ${project.version} + + + org.glassfish.jersey.media + jersey-media-moxy + ${project.version} + + + org.glassfish.jersey.media + jersey-media-multipart + ${project.version} + + + org.glassfish.jersey.media + jersey-media-sse + ${project.version} + + + org.glassfish.jersey.security + oauth1-client + ${project.version} + + + org.glassfish.jersey.security + oauth1-server + ${project.version} + + + org.glassfish.jersey.security + oauth1-signature + ${project.version} + + + org.glassfish.jersey.security + oauth2-client + ${project.version} + + + org.glassfish.jersey.inject + jersey-hk2 + ${project.version} + + + org.glassfish.jersey.inject + jersey-cdi2-se + ${project.version} + + + org.glassfish.jersey.test-framework + jersey-test-framework-core + ${project.version} + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-bundle + ${project.version} + pom + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-external + ${project.version} + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-grizzly2 + ${project.version} + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-inmemory + ${project.version} + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-jdk-http + ${project.version} + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-simple + ${project.version} + + + org.glassfish.jersey.test-framework.providers + jersey-test-framework-provider-jetty + ${project.version} + + + org.glassfish.jersey.test-framework + jersey-test-framework-util + ${project.version} + + + + + + + + org.glassfish.copyright + glassfish-copyright-maven-plugin + 2.4 + true + + + org.apache.maven.plugins + maven-site-plugin + 3.7.1 + + + + + + + project-info + + false + + + + + + localhost + http://localhost + + + + + diff --git a/lib/jetty-bom-9.4.53.v20231009.pom b/lib/jetty-bom-9.4.53.v20231009.pom new file mode 100644 index 0000000..a089f5a --- /dev/null +++ b/lib/jetty-bom-9.4.53.v20231009.pom @@ -0,0 +1,481 @@ + + + 4.0.0 + org.eclipse.jetty + jetty-bom + 9.4.53.v20231009 + pom + Jetty :: Bom + Jetty BOM artifact + https://eclipse.org/jetty + 1995 + + Webtide + https://webtide.com + + + + Apache Software License - Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + + + Eclipse Public License - Version 1.0 + https://www.eclipse.org/org/documents/epl-v10.php + + + + + gregw + Greg Wilkins + gregw@webtide.com + Webtide, LLC + https://webtide.com + 10 + + + janb + Jan Bartel + janb@webtide.com + Webtide, LLC + https://webtide.com + 10 + + + jesse + Jesse McConnell + jesse.mcconnell@gmail.com + Webtide, LLC + https://webtide.com + -6 + + + joakime + Joakim Erdfelt + joakim.erdfelt@gmail.com + Webtide, LLC + https://webtide.com + -7 + + + sbordet + Simone Bordet + simone.bordet@gmail.com + Webtide, LLC + https://webtide.com + 1 + + + djencks + David Jencks + david.a.jencks@gmail.com + IBM + -8 + + + olamy + Olivier Lamy + oliver.lamy@gmail.com + Webtide, LLC + https://webtide.com + Australia/Brisbane + + + lorban + Ludovic Orban + lorban@bitronix.be + Webtide, LLC + https://webtide.com + 1 + + + + + Jetty Developer Mailing List + https://dev.eclipse.org/mailman/listinfo/jetty-dev + https://dev.eclipse.org/mailman/listinfo/jetty-dev + https://dev.eclipse.org/mhonarc/lists/jetty-dev/maillist.html + + + Jetty Commit Mailing List + https://dev.eclipse.org/mailman/listinfo/jetty-commit + https://dev.eclipse.org/mailman/listinfo/jetty-commit + https://dev.eclipse.org/mhonarc/lists/jetty-commit/maillist.html + + + Jetty Users Mailing List + https://dev.eclipse.org/mailman/listinfo/jetty-users + https://dev.eclipse.org/mailman/listinfo/jetty-users + https://dev.eclipse.org/mhonarc/lists/jetty-users/maillist.html + + + Jetty Announce Mailing List + https://dev.eclipse.org/mailman/listinfo/jetty-announce + https://dev.eclipse.org/mailman/listinfo/jetty-announce + https://dev.eclipse.org/mhonarc/lists/jetty-announce/maillist.html + + + + scm:git:https://github.com/eclipse/jetty.project.git/jetty-bom + scm:git:git@github.com:eclipse/jetty.project.git/jetty-bom + https://github.com/eclipse/jetty.project/jetty-bom + + + github + https://github.com/eclipse/jetty.project/issues + + + + oss.sonatype.org + Jetty Staging Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + oss.sonatype.org + Jetty Snapshot Repository + https://oss.sonatype.org/content/repositories/jetty-snapshots/ + + + jetty.eclipse.website + scp://build.eclipse.org:/home/data/httpd/download.eclipse.org/jetty/9.4.53.v20231009/jetty-bom/ + + + + + + org.eclipse.jetty + apache-jsp + 9.4.53.v20231009 + + + org.eclipse.jetty + apache-jstl + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-client + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-java-client + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-java-server + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-openjdk8-client + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-openjdk8-server + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-conscrypt-client + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-conscrypt-server + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-alpn-server + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-annotations + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-ant + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-client + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-continuation + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-deploy + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-distribution + 9.4.53.v20231009 + zip + + + org.eclipse.jetty + jetty-distribution + 9.4.53.v20231009 + tar.gz + + + org.eclipse.jetty.fcgi + fcgi-client + 9.4.53.v20231009 + + + org.eclipse.jetty.fcgi + fcgi-server + 9.4.53.v20231009 + + + org.eclipse.jetty.gcloud + jetty-gcloud-session-manager + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-home + 9.4.53.v20231009 + zip + + + org.eclipse.jetty + jetty-home + 9.4.53.v20231009 + tar.gz + + + org.eclipse.jetty + jetty-http + 9.4.53.v20231009 + + + org.eclipse.jetty.http2 + http2-client + 9.4.53.v20231009 + + + org.eclipse.jetty.http2 + http2-common + 9.4.53.v20231009 + + + org.eclipse.jetty.http2 + http2-hpack + 9.4.53.v20231009 + + + org.eclipse.jetty.http2 + http2-http-client-transport + 9.4.53.v20231009 + + + org.eclipse.jetty.http2 + http2-server + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-http-spi + 9.4.53.v20231009 + + + org.eclipse.jetty + infinispan-common + 9.4.53.v20231009 + + + org.eclipse.jetty + infinispan-remote-query + 9.4.53.v20231009 + + + org.eclipse.jetty + infinispan-embedded-query + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-hazelcast + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-io + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-jaas + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-jaspi + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-jmx + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-jndi + 9.4.53.v20231009 + + + org.eclipse.jetty.memcached + jetty-memcached-sessions + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-nosql + 9.4.53.v20231009 + + + org.eclipse.jetty.osgi + jetty-osgi-boot + 9.4.53.v20231009 + + + org.eclipse.jetty.osgi + jetty-osgi-boot-jsp + 9.4.53.v20231009 + + + org.eclipse.jetty.osgi + jetty-osgi-boot-warurl + 9.4.53.v20231009 + + + org.eclipse.jetty.osgi + jetty-httpservice + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-plus + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-proxy + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-quickstart + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-rewrite + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-security + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-openid + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-server + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-servlet + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-servlets + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-spring + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-unixsocket + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-util + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-util-ajax + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-webapp + 9.4.53.v20231009 + + + org.eclipse.jetty.websocket + javax-websocket-client-impl + 9.4.53.v20231009 + + + org.eclipse.jetty.websocket + javax-websocket-server-impl + 9.4.53.v20231009 + + + org.eclipse.jetty.websocket + websocket-api + 9.4.53.v20231009 + + + org.eclipse.jetty.websocket + websocket-client + 9.4.53.v20231009 + + + org.eclipse.jetty.websocket + websocket-common + 9.4.53.v20231009 + + + org.eclipse.jetty.websocket + websocket-server + 9.4.53.v20231009 + + + org.eclipse.jetty.websocket + websocket-servlet + 9.4.53.v20231009 + + + org.eclipse.jetty + jetty-xml + 9.4.53.v20231009 + + + + diff --git a/lib/junit-bom-5.8.2.pom b/lib/junit-bom-5.8.2.pom new file mode 100644 index 0000000..c92aae6 --- /dev/null +++ b/lib/junit-bom-5.8.2.pom @@ -0,0 +1,159 @@ + + + + + + + + 4.0.0 + org.junit + junit-bom + 5.8.2 + pom + JUnit 5 (Bill of Materials) + This Bill of Materials POM can be used to ease dependency management when referencing multiple JUnit artifacts using Gradle or Maven. + https://junit.org/junit5/ + + + Eclipse Public License v2.0 + https://www.eclipse.org/legal/epl-v20.html + + + + + bechte + Stefan Bechtold + stefan.bechtold@me.com + + + jlink + Johannes Link + business@johanneslink.net + + + marcphilipp + Marc Philipp + mail@marcphilipp.de + + + mmerdes + Matthias Merdes + matthias.merdes@heidelpay.com + + + sbrannen + Sam Brannen + sam@sambrannen.com + + + sormuras + Christian Stein + sormuras@gmail.com + + + juliette-derancourt + Juliette de Rancourt + derancourt.juliette@gmail.com + + + + scm:git:git://github.com/junit-team/junit5.git + scm:git:git://github.com/junit-team/junit5.git + https://github.com/junit-team/junit5 + + + + + org.junit.jupiter + junit-jupiter + 5.8.2 + + + org.junit.jupiter + junit-jupiter-api + 5.8.2 + + + org.junit.jupiter + junit-jupiter-engine + 5.8.2 + + + org.junit.jupiter + junit-jupiter-migrationsupport + 5.8.2 + + + org.junit.jupiter + junit-jupiter-params + 5.8.2 + + + org.junit.platform + junit-platform-commons + 1.8.2 + + + org.junit.platform + junit-platform-console + 1.8.2 + + + org.junit.platform + junit-platform-engine + 1.8.2 + + + org.junit.platform + junit-platform-jfr + 1.8.2 + + + org.junit.platform + junit-platform-launcher + 1.8.2 + + + org.junit.platform + junit-platform-reporting + 1.8.2 + + + org.junit.platform + junit-platform-runner + 1.8.2 + + + org.junit.platform + junit-platform-suite + 1.8.2 + + + org.junit.platform + junit-platform-suite-api + 1.8.2 + + + org.junit.platform + junit-platform-suite-commons + 1.8.2 + + + org.junit.platform + junit-platform-suite-engine + 1.8.2 + + + org.junit.platform + junit-platform-testkit + 1.8.2 + + + org.junit.vintage + junit-vintage-engine + 5.8.2 + + + + diff --git a/lib/kotlin-bom-1.6.21.pom b/lib/kotlin-bom-1.6.21.pom new file mode 100644 index 0000000..3d0767c --- /dev/null +++ b/lib/kotlin-bom-1.6.21.pom @@ -0,0 +1,230 @@ + + + + 4.0.0 + + org.jetbrains.kotlin + kotlin-bom + 1.6.21 + pom + + + + Kotlin Libraries bill-of-materials + Kotlin is a statically typed programming language that compiles to JVM byte codes and JavaScript + https://kotlinlang.org/ + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + A business-friendly OSS license + + + + + https://github.com/JetBrains/kotlin + scm:git:https://github.com/JetBrains/kotlin.git + scm:git:https://github.com/JetBrains/kotlin.git + + + + + JetBrains + JetBrains Team + JetBrains + https://www.jetbrains.com + + + + + + + ${project.version} + + + + + + + ${project.groupId} + kotlin-stdlib + ${kotlin.version} + + + ${project.groupId} + kotlin-stdlib-jdk7 + ${kotlin.version} + + + ${project.groupId} + kotlin-stdlib-jdk8 + ${kotlin.version} + + + ${project.groupId} + kotlin-stdlib-js + ${kotlin.version} + + + ${project.groupId} + kotlin-stdlib-common + ${kotlin.version} + + + + ${project.groupId} + kotlin-reflect + ${kotlin.version} + + + + ${project.groupId} + kotlin-osgi-bundle + ${kotlin.version} + + + + ${project.groupId} + kotlin-test + ${kotlin.version} + + + ${project.groupId} + kotlin-test-junit + ${kotlin.version} + + + ${project.groupId} + kotlin-test-junit5 + ${kotlin.version} + + + ${project.groupId} + kotlin-test-testng + ${kotlin.version} + + + ${project.groupId} + kotlin-test-js + ${kotlin.version} + + + ${project.groupId} + kotlin-test-common + ${kotlin.version} + + + ${project.groupId} + kotlin-test-annotations-common + ${kotlin.version} + + + + ${project.groupId} + kotlin-main-kts + ${kotlin.version} + + + ${project.groupId} + kotlin-script-runtime + ${kotlin.version} + + + ${project.groupId} + kotlin-script-util + ${kotlin.version} + + + ${project.groupId} + kotlin-scripting-common + ${kotlin.version} + + + ${project.groupId} + kotlin-scripting-jvm + ${kotlin.version} + + + ${project.groupId} + kotlin-scripting-jvm-host + ${kotlin.version} + + + ${project.groupId} + kotlin-scripting-ide-services + ${kotlin.version} + + + + ${project.groupId} + kotlin-compiler + ${kotlin.version} + + + ${project.groupId} + kotlin-compiler-embeddable + ${kotlin.version} + + + ${project.groupId} + kotlin-daemon-client + ${kotlin.version} + + + + + + + ${deploy-repo} + ${deploy-url} + + + sonatype-nexus-staging + https://oss.sonatype.org/content/repositories/snapshots/ + + + + + + sign-artifacts + + + + maven-gpg-plugin + 1.6 + + ${kotlin.key.passphrase} + ${kotlin.key.name} + ../../.gnupg + + + + sign-artifacts + verify + + sign + + + + --pinentry-mode + loopback + + + + + + + + + + diff --git a/lib/kotlinx-coroutines-bom-1.6.4.pom b/lib/kotlinx-coroutines-bom-1.6.4.pom new file mode 100644 index 0000000..129f9ad --- /dev/null +++ b/lib/kotlinx-coroutines-bom-1.6.4.pom @@ -0,0 +1,119 @@ + + + 4.0.0 + org.jetbrains.kotlinx + kotlinx-coroutines-bom + 1.6.4 + pom + kotlinx-coroutines-bom + Coroutines support libraries for Kotlin + https://github.com/Kotlin/kotlinx.coroutines + + + The Apache Software License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + JetBrains + JetBrains Team + JetBrains + https://www.jetbrains.com + + + + https://github.com/Kotlin/kotlinx.coroutines + + + + + org.jetbrains.kotlinx + kotlinx-coroutines-android + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-core-jvm + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-core + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-debug + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-guava + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-javafx + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-jdk8 + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-jdk9 + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-play-services + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-reactive + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-reactor + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-rx2 + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-rx3 + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-slf4j + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-swing + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-test-jvm + 1.6.4 + + + org.jetbrains.kotlinx + kotlinx-coroutines-test + 1.6.4 + + + + diff --git a/lib/logging-parent-5.pom b/lib/logging-parent-5.pom new file mode 100644 index 0000000..c969098 --- /dev/null +++ b/lib/logging-parent-5.pom @@ -0,0 +1,86 @@ + + + + + 4.0.0 + + + org.apache + apache + 24 + + + org.apache.logging + logging-parent + pom + 5 + + Apache Logging Services + + Parent pom for Apache Logging Services projects. + + https://logging.apache.org/ + 1999 + + + + 1.8 + 1.8 + + 1640651760 + + + + scm:git:https://gitbox.apache.org/repos/asf/logging-parent.git + scm:git:https://gitbox.apache.org/repos/asf/logging-parent.git + https://gitbox.apache.org/repos/asf?p=logging-parent.git + logging-parent-5 + + + + + log4j-user + log4j-user-subscribe@logging.apache.org + log4j-user-unsubscribe@logging.apache.org + log4j-user@logging.apache.org + https://lists.apache.org/list.html?log4j-user@logging.apache.org + + + dev + dev-subscribe@logging.apache.org + dev-unsubscribe@logging.apache.org + dev@logging.apache.org + https://lists.apache.org/list.html?dev@logging.apache.org + + + + + JIRA + https://issues.apache.org/jira/browse/LOG4J2 + + + + + diff --git a/lib/mapstruct-processor-1.5.5.Final.jar b/lib/mapstruct-processor-1.5.5.Final.jar new file mode 100644 index 0000000..ca7dda5 Binary files /dev/null and b/lib/mapstruct-processor-1.5.5.Final.jar differ diff --git a/lib/metrics-bom-4.2.21.pom b/lib/metrics-bom-4.2.21.pom new file mode 100644 index 0000000..192d16a --- /dev/null +++ b/lib/metrics-bom-4.2.21.pom @@ -0,0 +1,191 @@ + + + 4.0.0 + + + io.dropwizard.metrics + metrics-parent + 4.2.21 + + + metrics-bom + Metrics BOM + pom + Bill of Materials for Metrics + + + + + io.dropwizard.metrics + metrics-annotation + ${project.version} + + + io.dropwizard.metrics + metrics-caffeine + ${project.version} + + + io.dropwizard.metrics + metrics-caffeine3 + ${project.version} + + + io.dropwizard.metrics + metrics-core + ${project.version} + + + io.dropwizard.metrics + metrics-collectd + ${project.version} + + + io.dropwizard.metrics + metrics-ehcache + ${project.version} + + + io.dropwizard.metrics + metrics-graphite + ${project.version} + + + io.dropwizard.metrics + metrics-healthchecks + ${project.version} + + + io.dropwizard.metrics + metrics-httpclient + ${project.version} + + + io.dropwizard.metrics + metrics-httpclient5 + ${project.version} + + + io.dropwizard.metrics + metrics-httpasyncclient + ${project.version} + + + io.dropwizard.metrics + metrics-jakarta-servlet + ${project.version} + + + io.dropwizard.metrics + metrics-jakarta-servlet6 + ${project.version} + + + io.dropwizard.metrics + metrics-jakarta-servlets + ${project.version} + + + io.dropwizard.metrics + metrics-jcache + ${project.version} + + + io.dropwizard.metrics + metrics-jdbi + ${project.version} + + + io.dropwizard.metrics + metrics-jdbi3 + ${project.version} + + + io.dropwizard.metrics + metrics-jersey2 + ${project.version} + + + io.dropwizard.metrics + metrics-jersey3 + ${project.version} + + + io.dropwizard.metrics + metrics-jersey31 + ${project.version} + + + io.dropwizard.metrics + metrics-jetty9 + ${project.version} + + + io.dropwizard.metrics + metrics-jetty10 + ${project.version} + + + io.dropwizard.metrics + metrics-jetty11 + ${project.version} + + + io.dropwizard.metrics + metrics-jetty12 + ${project.version} + + + io.dropwizard.metrics + metrics-jetty12-ee10 + ${project.version} + + + io.dropwizard.metrics + metrics-jmx + ${project.version} + + + io.dropwizard.metrics + metrics-json + ${project.version} + + + io.dropwizard.metrics + metrics-jvm + ${project.version} + + + io.dropwizard.metrics + metrics-log4j2 + ${project.version} + + + io.dropwizard.metrics + metrics-logback + ${project.version} + + + io.dropwizard.metrics + metrics-logback13 + ${project.version} + + + io.dropwizard.metrics + metrics-logback14 + ${project.version} + + + io.dropwizard.metrics + metrics-servlet + ${project.version} + + + io.dropwizard.metrics + metrics-servlets + ${project.version} + + + + + diff --git a/lib/metrics-parent-4.2.21.pom b/lib/metrics-parent-4.2.21.pom new file mode 100644 index 0000000..473eb2c --- /dev/null +++ b/lib/metrics-parent-4.2.21.pom @@ -0,0 +1,479 @@ + + + 4.0.0 + + io.dropwizard.metrics + metrics-parent + 4.2.21 + pom + Metrics Parent + + The Metrics library. + + https://metrics.dropwizard.io + + + docs + metrics-bom + metrics-annotation + metrics-benchmarks + metrics-caffeine + metrics-caffeine3 + metrics-core + metrics-collectd + metrics-ehcache + metrics-graphite + metrics-healthchecks + metrics-httpclient + metrics-httpclient5 + metrics-httpasyncclient + metrics-jakarta-servlet + metrics-jakarta-servlet6 + metrics-jakarta-servlets + metrics-jcache + metrics-jcstress + metrics-jdbi + metrics-jdbi3 + metrics-jersey2 + metrics-jersey3 + metrics-jersey31 + metrics-jetty9 + metrics-jetty10 + metrics-jetty11 + metrics-jmx + metrics-json + metrics-jvm + metrics-log4j2 + metrics-logback + metrics-logback13 + metrics-logback14 + metrics-servlet + metrics-servlets + + + + 2023-10-13T11:40:34Z + UTF-8 + UTF-8 + + 9.4.53.v20231009 + 10.0.17 + 11.0.17 + 12.0.2 + 1.7.36 + 3.24.2 + 1.14.9 + 5.6.0 + 4.13.1 + 1.3 + 3.13.0 + 3.11.0 + 2.22.0 + 9+181-r4173-1 + 6.0.0 + + dropwizard_metrics + dropwizard + https://sonarcloud.io + ${project.artifactId} + + + + + Coda Hale + coda.hale@gmail.com + America/Los_Angeles + + architect + + + + Ryan Tenney + ryan@10e.us + America/New_York + + committer + + + + Artem Prigoda + prigoda.artem@ya.ru + Europe/Berlin + + committer + + + + + + + Apache License 2.0 + https://www.apache.org/licenses/LICENSE-2.0.html + repo + + + + + scm:git:git://github.com/dropwizard/metrics.git + scm:git:git@github.com:dropwizard/metrics.git + https://github.com/dropwizard/metrics/ + v4.2.21 + + + + github + https://github.com/dropwizard/metrics/issues/ + + + + + ossrh + Sonatype Nexus Snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots + + + ossrh + Nexus Release Repository + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + jdk8 + + 1.8 + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -J-Xbootclasspath/p:${settings.localRepository}/com/google/errorprone/javac/${errorprone.javac.version}/javac-${errorprone.javac.version}.jar + + + + + + + + jdk17 + + [17,) + + + metrics-jetty12 + metrics-jetty12-ee10 + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -Xlint:all + -XDcompilePolicy=simple + -Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-sources/.* + -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED + -J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED + -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED + + + + com.google.errorprone + error_prone_core + ${errorprone.version} + + + + + + + + + release-sign-artifacts + + + performRelease + true + + + + EDA86E9FB607B5FC9223FB767D4868B53E31E7AD + + + + + org.apache.maven.plugins + maven-source-plugin + 3.3.0 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.1.0 + + + --pinentry-mode + loopback + + + + + sign-artifacts + verify + + sign + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.13 + + ossrh + https://s01.oss.sonatype.org/ + true + + + + nexus-deploy + deploy + + deploy + + + + + + org.cyclonedx + cyclonedx-maven-plugin + 2.7.9 + + + package + + makeAggregateBom + + + + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.1 + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.6.0 + + 8 + none + true + true + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + true + true + true + + -Xlint:all + -XDcompilePolicy=simple + -Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-sources/.* + + + + com.google.errorprone + error_prone_core + ${errorprone.version} + + + + + + org.apache.felix + maven-bundle-plugin + 5.1.9 + true + + + + + ${javaModuleName} + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.1.2 + + @{argLine} -Djava.net.preferIPv4Stack=true + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.4.1 + + + enforce + + + + + + + enforce + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.6.0 + + + analyze + + analyze-only + analyze-dep-mgt + analyze-duplicate + + verify + + true + true + + + + + + org.apache.maven.plugins + maven-release-plugin + 3.0.1 + + true + forked-path + v@{project.version} + clean test + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + + true + + + ${javaModuleName} + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.3.0 + + checkstyle.xml + true + + + + org.apache.maven.plugins + maven-site-plugin + 3.12.1 + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.4.5 + + + org.jacoco + jacoco-maven-plugin + 0.8.10 + + + prepare-agent + + prepare-agent + + + + report + + report + + + + + + + diff --git a/lib/micrometer-bom-1.9.16.pom b/lib/micrometer-bom-1.9.16.pom new file mode 100644 index 0000000..d8ee4a5 --- /dev/null +++ b/lib/micrometer-bom-1.9.16.pom @@ -0,0 +1,182 @@ + + + 4.0.0 + io.micrometer + micrometer-bom + 1.9.16 + pom + micrometer-bom + Micrometer BOM (Bill of Materials) for managing Micrometer artifact versions + https://github.com/micrometer-metrics/micrometer + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + shakuzen + Tommy Ludwig + tludwig@vmware.com + + + + git@github.com:micrometer-metrics/micrometer.git + + + + + io.micrometer + micrometer-core + 1.9.16 + + + io.micrometer + micrometer-registry-appoptics + 1.9.16 + + + io.micrometer + micrometer-registry-atlas + 1.9.16 + + + io.micrometer + micrometer-registry-azure-monitor + 1.9.16 + + + io.micrometer + micrometer-registry-cloudwatch + 1.9.16 + + + io.micrometer + micrometer-registry-cloudwatch2 + 1.9.16 + + + io.micrometer + micrometer-registry-datadog + 1.9.16 + + + io.micrometer + micrometer-registry-dynatrace + 1.9.16 + + + io.micrometer + micrometer-registry-elastic + 1.9.16 + + + io.micrometer + micrometer-registry-ganglia + 1.9.16 + + + io.micrometer + micrometer-registry-graphite + 1.9.16 + + + io.micrometer + micrometer-registry-health + 1.9.16 + + + io.micrometer + micrometer-registry-humio + 1.9.16 + + + io.micrometer + micrometer-registry-influx + 1.9.16 + + + io.micrometer + micrometer-registry-jmx + 1.9.16 + + + io.micrometer + micrometer-registry-kairos + 1.9.16 + + + io.micrometer + micrometer-registry-new-relic + 1.9.16 + + + io.micrometer + micrometer-registry-opentsdb + 1.9.16 + + + io.micrometer + micrometer-registry-otlp + 1.9.16 + + + io.micrometer + micrometer-registry-prometheus + 1.9.16 + + + io.micrometer + micrometer-registry-signalfx + 1.9.16 + + + io.micrometer + micrometer-registry-stackdriver + 1.9.16 + + + io.micrometer + micrometer-registry-statsd + 1.9.16 + + + io.micrometer + micrometer-registry-wavefront + 1.9.16 + + + io.micrometer + micrometer-test + 1.9.16 + + + + + 1.0 + io.micrometer#micrometer-bom;1.9.16 + 1.9.16 + release + circleci + Linux + Etc/UTC + 2023-10-10T06:19:57.315351580Z + 2023-10-10_06:19:57 + 8.4 + /micrometer-bom + git@github.com:micrometer-metrics/micrometer.git + 5cba7fa + 5cba7fae38865618f88f2ee9a53c30dfc86a484d + HEAD + 0a43d85887ff + deploy + 25401 + 25401 + https://circleci.com/gh/micrometer-metrics/micrometer/25401 + 20.0.1+9 (Eclipse Adoptium) + tludwig@vmware.com + tludwig@vmware.com + + diff --git a/lib/mockito-bom-4.5.1.pom b/lib/mockito-bom-4.5.1.pom new file mode 100644 index 0000000..19c4d6a --- /dev/null +++ b/lib/mockito-bom-4.5.1.pom @@ -0,0 +1,98 @@ + + + 4.0.0 + org.mockito + mockito-bom + 4.5.1 + pom + mockito-bom + Mockito Bill of Materials (BOM) + https://github.com/mockito/mockito + + + The MIT License + https://github.com/mockito/mockito/blob/main/LICENSE + repo + + + + + mockitoguy + Szczepan Faber + https://github.com/mockitoguy + + Core developer + + + + bric3 + Brice Dutheil + https://github.com/bric3 + + Core developer + + + + raphw + Rafael Winterhalter + https://github.com/raphw + + Core developer + + + + TimvdLippe + Tim van der Lippe + https://github.com/TimvdLippe + + Core developer + + + + + https://github.com/mockito/mockito.git + + + GitHub issues + https://github.com/mockito/mockito/issues + + + GH Actions + https://github.com/mockito/mockito/actions + + + + + org.mockito + mockito-core + 4.5.1 + + + org.mockito + mockito-android + 4.5.1 + + + org.mockito + mockito-errorprone + 4.5.1 + + + org.mockito + mockito-inline + 4.5.1 + + + org.mockito + mockito-junit-jupiter + 4.5.1 + + + org.mockito + mockito-proxy + 4.5.1 + + + + diff --git a/lib/netty-bom-4.1.100.Final.pom b/lib/netty-bom-4.1.100.Final.pom new file mode 100644 index 0000000..247a557 --- /dev/null +++ b/lib/netty-bom-4.1.100.Final.pom @@ -0,0 +1,375 @@ + + + + 4.0.0 + + org.sonatype.oss + oss-parent + 7 + + + + io.netty + netty-bom + 4.1.100.Final + pom + + Netty/BOM + Netty (Bill of Materials) + https://netty.io/ + + + The Netty Project + https://netty.io/ + + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + 2008 + + + https://github.com/netty/netty + scm:git:git://github.com/netty/netty.git + scm:git:ssh://git@github.com/netty/netty.git + netty-4.1.100.Final + + + + + netty.io + The Netty Project Contributors + netty@googlegroups.com + https://netty.io/ + The Netty Project + https://netty.io/ + + + + + + 2.0.61.Final + + + + + + com.commsen.maven + bom-helper-maven-plugin + 0.4.0 + + + + + + + + io.netty + netty-buffer + ${project.version} + + + io.netty + netty-codec + ${project.version} + + + io.netty + netty-codec-dns + ${project.version} + + + io.netty + netty-codec-haproxy + ${project.version} + + + io.netty + netty-codec-http + ${project.version} + + + io.netty + netty-codec-http2 + ${project.version} + + + io.netty + netty-codec-memcache + ${project.version} + + + io.netty + netty-codec-mqtt + ${project.version} + + + io.netty + netty-codec-redis + ${project.version} + + + io.netty + netty-codec-smtp + ${project.version} + + + io.netty + netty-codec-socks + ${project.version} + + + io.netty + netty-codec-stomp + ${project.version} + + + io.netty + netty-codec-xml + ${project.version} + + + io.netty + netty-common + ${project.version} + + + io.netty + netty-dev-tools + ${project.version} + + + io.netty + netty-handler + ${project.version} + + + io.netty + netty-handler-proxy + ${project.version} + + + io.netty + netty-handler-ssl-ocsp + ${project.version} + + + io.netty + netty-resolver + ${project.version} + + + io.netty + netty-resolver-dns + ${project.version} + + + io.netty + netty-transport + ${project.version} + + + io.netty + netty-transport-rxtx + ${project.version} + + + io.netty + netty-transport-sctp + ${project.version} + + + io.netty + netty-transport-udt + ${project.version} + + + io.netty + netty-example + ${project.version} + + + io.netty + netty-all + ${project.version} + + + io.netty + netty-resolver-dns-classes-macos + ${project.version} + + + io.netty + netty-resolver-dns-native-macos + ${project.version} + + + io.netty + netty-resolver-dns-native-macos + ${project.version} + osx-x86_64 + + + io.netty + netty-resolver-dns-native-macos + ${project.version} + osx-aarch_64 + + + io.netty + netty-transport-native-unix-common + ${project.version} + + + io.netty + netty-transport-native-unix-common + ${project.version} + linux-aarch_64 + + + io.netty + netty-transport-native-unix-common + ${project.version} + linux-x86_64 + + + io.netty + netty-transport-native-unix-common + ${project.version} + osx-x86_64 + + + io.netty + netty-transport-native-unix-common + ${project.version} + osx-aarch_64 + + + io.netty + netty-transport-classes-epoll + ${project.version} + + + io.netty + netty-transport-native-epoll + ${project.version} + + + io.netty + netty-transport-native-epoll + ${project.version} + linux-aarch_64 + + + io.netty + netty-transport-native-epoll + ${project.version} + linux-x86_64 + + + io.netty + netty-transport-classes-kqueue + ${project.version} + + + io.netty + netty-transport-native-kqueue + ${project.version} + + + io.netty + netty-transport-native-kqueue + ${project.version} + osx-x86_64 + + + io.netty + netty-transport-native-kqueue + ${project.version} + osx-aarch_64 + + + + io.netty + netty-tcnative-classes + ${tcnative.version} + + + io.netty + netty-tcnative + ${tcnative.version} + linux-x86_64 + + + io.netty + netty-tcnative + ${tcnative.version} + linux-x86_64-fedora + + + io.netty + netty-tcnative + ${tcnative.version} + linux-aarch_64-fedora + + + io.netty + netty-tcnative + ${tcnative.version} + osx-x86_64 + + + io.netty + netty-tcnative-boringssl-static + ${tcnative.version} + + + io.netty + netty-tcnative-boringssl-static + ${tcnative.version} + linux-x86_64 + + + io.netty + netty-tcnative-boringssl-static + ${tcnative.version} + linux-aarch_64 + + + io.netty + netty-tcnative-boringssl-static + ${tcnative.version} + osx-x86_64 + + + io.netty + netty-tcnative-boringssl-static + ${tcnative.version} + osx-aarch_64 + + + io.netty + netty-tcnative-boringssl-static + ${tcnative.version} + windows-x86_64 + + + + diff --git a/lib/ojdbc-bom-21.5.0.0.pom b/lib/ojdbc-bom-21.5.0.0.pom new file mode 100644 index 0000000..2ab7591 --- /dev/null +++ b/lib/ojdbc-bom-21.5.0.0.pom @@ -0,0 +1,278 @@ + + + 4.0.0 + com.oracle.database.jdbc + ojdbc-bom + 21.5.0.0 + pom + + + 21.5.0.0 + + + + ojdbc-bom + Bill of Materials (BOM) for JDBC driver and other additional jars + https://www.oracle.com/database/technologies/maven-central-guide.html + 1997 + + + + Oracle Free Use Terms and Conditions (FUTC) + https://www.oracle.com/downloads/licenses/oracle-free-license.html + + + + + + Oracle America, Inc. + http://www.oracle.com + + + + + + + + + + + + com.oracle.database.jdbc + ojdbc11 + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc + ojdbc8 + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc + ucp + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc + ucp11 + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc + rsi + ${version.lib.ojdbc} + + + + + + com.oracle.database.security + oraclepki + ${version.lib.ojdbc} + + + + com.oracle.database.security + osdt_core + ${version.lib.ojdbc} + + + + com.oracle.database.security + osdt_cert + ${version.lib.ojdbc} + + + + + + com.oracle.database.ha + simplefan + ${version.lib.ojdbc} + + + + com.oracle.database.ha + ons + ${version.lib.ojdbc} + + + + com.oracle.database.nls + orai18n + ${version.lib.ojdbc} + + + + com.oracle.database.xml + xdb + ${version.lib.ojdbc} + + + + com.oracle.database.xml + xmlparserv2 + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc.debug + ojdbc11_g + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc.debug + ojdbc8_g + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc.debug + ojdbc8dms_g + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc.debug + ojdbc11dms_g + ${version.lib.ojdbc} + + + + com.oracle.database.observability + dms + ${version.lib.ojdbc} + + + + com.oracle.database.observability + ojdbc11dms + ${version.lib.ojdbc} + + + + com.oracle.database.observability + ojdbc8dms + ${version.lib.ojdbc} + + + + com.oracle.database.jdbc + ojdbc11-production + ${version.lib.ojdbc} + pom + + + + com.oracle.database.jdbc + ojdbc8-production + ${version.lib.ojdbc} + pom + + + + com.oracle.database.observability + ojdbc8-observability + ${version.lib.ojdbc} + pom + + + + com.oracle.database.observability + ojdbc11-observability + ${version.lib.ojdbc} + pom + + + + com.oracle.database.jdbc.debug + ojdbc8-debug + ${version.lib.ojdbc} + pom + + + + com.oracle.database.jdbc.debug + ojdbc11-debug + ${version.lib.ojdbc} + pom + + + + com.oracle.database.jdbc.debug + ojdbc8-observability-debug + ${version.lib.ojdbc} + pom + + + + com.oracle.database.jdbc.debug + ojdbc11-observability-debug + ${version.lib.ojdbc} + pom + + + + + + diff --git a/lib/okhttp-bom-4.9.3.pom b/lib/okhttp-bom-4.9.3.pom new file mode 100644 index 0000000..72da974 --- /dev/null +++ b/lib/okhttp-bom-4.9.3.pom @@ -0,0 +1,82 @@ + + + + + + + + 4.0.0 + com.squareup.okhttp3 + okhttp-bom + 4.9.3 + pom + okhttp-bom + Square’s meticulous HTTP client for Java and Kotlin. + https://square.github.io/okhttp/ + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + Square, Inc. + + + + scm:git:https://github.com/square/okhttp.git + scm:git:ssh://git@github.com/square/okhttp.git + https://github.com/square/okhttp + + + + + com.squareup.okhttp3 + mockwebserver + 4.9.3 + + + com.squareup.okhttp3 + okcurl + 4.9.3 + + + com.squareup.okhttp3 + okhttp + 4.9.3 + + + com.squareup.okhttp3 + okhttp-brotli + 4.9.3 + + + com.squareup.okhttp3 + okhttp-dnsoverhttps + 4.9.3 + + + com.squareup.okhttp3 + logging-interceptor + 4.9.3 + + + com.squareup.okhttp3 + okhttp-sse + 4.9.3 + + + com.squareup.okhttp3 + okhttp-tls + 4.9.3 + + + com.squareup.okhttp3 + okhttp-urlconnection + 4.9.3 + + + + diff --git a/lib/oss-parent-43.pom b/lib/oss-parent-43.pom new file mode 100644 index 0000000..d5225fb --- /dev/null +++ b/lib/oss-parent-43.pom @@ -0,0 +1,660 @@ + + + + 4.0.0 + + com.fasterxml + oss-parent + 43 + pom + + FasterXML.com parent pom + FasterXML.com parent pom + http://github.com/FasterXML/ + + FasterXML + http://fasterxml.com/ + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + + cowtowncoder + Tatu Saloranta + tatu@fasterxml.com + + + + + scm:git:git@github.com:FasterXML/oss-parent.git + scm:git:git@github.com:FasterXML/oss-parent.git + http://github.com/FasterXML/oss-parent + oss-parent-43 + + + GitHub Issue Management + https://github.com/FasterXML/${project.artifactId}/issues + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots + + + + sonatype-nexus-staging + Nexus Release Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + UTF-8 + UTF-8 + UTF-8 + + ${project.build.directory}/generated-sources + + 1g + + + 1.6 + 1.6 + + + lines,source,vars + yyyy-MM-dd HH:mm:ssZ + + ${project.groupId}.*;version=${project.version} + * + + + + ${range;[===,=+);${@}} + {maven-resources} + + + + + + + 5.1.1 + + 3.1.0 + 2.7 + + + 3.8.1 + 3.0.0-M1 + + + 3.0.0-M3 + 1.6 + + 3.0.0-M1 + 0.8.7 + 3.2.0 + + 3.3.0 + + + 1.0.0.RC1 + + 3.0.0-M1 + 1.5.3 + 3.1.0 + + 3.2.4 + 3.9.1 + + 3.2.1 + + + + + 2.22.2 + + + + 4.13.1 + + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots + + false + + + true + + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.7 + + + org.apache.maven.plugins + maven-clean-plugin + ${version.plugin.clean} + + + org.apache.maven.plugins + maven-dependency-plugin + 3.1.2 + + + org.apache.maven.plugins + maven-deploy-plugin + ${version.plugin.deploy} + + + org.apache.maven.plugins + maven-gpg-plugin + ${version.plugin.gpg} + + + org.apache.maven.plugins + maven-install-plugin + ${version.plugin.install} + + + org.apache.maven.plugins + maven-javadoc-plugin + ${version.plugin.javadoc} + + + org.apache.maven.plugins + maven-resources-plugin + ${version.plugin.resources} + + + + org.apache.maven.plugins + maven-shade-plugin + ${version.plugin.shade} + + + org.apache.maven.plugins + maven-site-plugin + ${version.plugin.site} + + + org.apache.maven.plugins + maven-source-plugin + ${version.plugin.source} + + + + org.moditect + moditect-maven-plugin + ${version.plugin.moditect} + + + + + com.google.code.maven-replacer-plugin + replacer + + ${version.plugin.replacer} + + + org.codehaus.mojo + cobertura-maven-plugin + ${version.plugin.cobertura} + + + + org.apache.felix + maven-bundle-plugin + ${version.plugin.bundle} + + + + + + + <_removeheaders>Include-Resource,JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME + <_versionpolicy>${osgi.versionpolicy} + ${project.name} + ${project.groupId}.${project.artifactId} + ${project.description} + ${osgi.export} + ${osgi.private} + ${osgi.import} + ${osgi.dynamicImport} + ${osgi.includeResource} + ${project.url} + ${osgi.requiredExecutionEnvironment} + + ${maven.build.timestamp} + ${javac.src.version} + ${javac.target.version} + + ${project.name} + ${project.version} + ${project.groupId} + ${project.organization.name} + + ${project.name} + ${project.version} + ${project.organization.name} + + ${osgi.mainClass} + + + + + + + + org.apache.maven.plugins + maven-release-plugin + ${version.plugin.release} + + forked-path + false + -Prelease + + + + + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-generated-sources + generate-sources + + add-source + + + + ${generatedSourcesDir} + + + + + + + + org.jacoco + jacoco-maven-plugin + ${version.plugin.jacoco} + + + + org.apache.maven.plugins + maven-compiler-plugin + ${version.plugin.compiler} + + + + org.ow2.asm + asm + 7.0 + + + + ${javac.src.version} + ${javac.target.version} + true + true + true + + true + ${javac.debuglevel} + + + + + org.apache.maven.plugins + maven-enforcer-plugin + ${version.plugin.enforcer} + + + enforce-java + validate + + enforce + + + + + + [1.6,) + [ERROR] The currently supported version of Java is 1.6 or higher + + + [3.0,) + [ERROR] The currently supported version of Maven is 3.0 or higher + + + true + true + true + clean,deploy,site + [ERROR] Best Practice is to always define plugin versions! + + + + + + + + + org.apache.felix + maven-bundle-plugin + true + + + + org.apache.maven.plugins + maven-jar-plugin + ${version.plugin.jar} + + + + org.apache.maven.plugins + maven-scm-plugin + 1.9.1 + + + org.apache.maven.scm + maven-scm-provider-gitexe + 1.9.1 + + + + + + org.apache.maven.plugins + maven-site-plugin + + + attach-descriptor + + attach-descriptor + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${version.plugin.surefire} + + + + + + + org.apache.maven.scm + maven-scm-provider-gitexe + 1.9.1 + + + + org.apache.maven.scm + maven-scm-manager-plexus + 1.9.1 + + + + + org.kathrynhuxtable.maven.wagon + wagon-gitsite + 0.3.1 + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${version.plugin.javadoc} + + ${sun.boot.class.path} + com.google.doclava.Doclava + false + -J-Xmx1024m + ${javadoc.maxmemory} + + http://docs.oracle.com/javase/8/docs/api/ + + + com.google.doclava + doclava + 1.0.3 + + + -hdf project.name "${project.name}" + -d ${project.reporting.outputDirectory}/apidocs + + + + + default + + javadoc + + + + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 2.5 + + + + org.apache.maven.plugins + maven-jxr-plugin + 2.3 + + + + org.codehaus.mojo + jdepend-maven-plugin + 2.0 + + + + org.apache.maven.plugins + maven-surefire-report-plugin + ${version.plugin.surefire} + + + + org.apache.maven.plugins + maven-pmd-plugin + 2.7.1 + + true + 100 + 1.5 + + + + + org.codehaus.mojo + taglist-maven-plugin + 2.4 + + + + + Todo Work + + + TODO + ignoreCase + + + FIXME + ignoreCase + + + + + + + + + + + + + release + + + + org.apache.maven.plugins + maven-source-plugin + ${version.plugin.source} + + + attach-sources + + jar-no-fork + + + + + true + true + + + ${maven.build.timestamp} + ${javac.src.version} + ${javac.target.version} + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${version.plugin.javadoc} + + + attach-javadocs + + jar + + + true + + + true + true + + + ${maven.build.timestamp} + ${javac.src.version} + ${javac.target.version} + + + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + + + + + + + diff --git a/lib/oss-parent-7.pom b/lib/oss-parent-7.pom new file mode 100644 index 0000000..3963952 --- /dev/null +++ b/lib/oss-parent-7.pom @@ -0,0 +1,155 @@ + + + + 4.0.0 + + org.sonatype.oss + oss-parent + 7 + pom + + Sonatype OSS Parent + http://nexus.sonatype.org/oss-repository-hosting.html + Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/ + + + scm:svn:http://svn.sonatype.org/spice/tags/oss-parent-7 + scm:svn:https://svn.sonatype.org/spice/tags/oss-parent-7 + http://svn.sonatype.org/spice/tags/oss-parent-7 + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots + + false + + + true + + + + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + ${sonatypeOssDistMgmtSnapshotsUrl} + + + sonatype-nexus-staging + Nexus Release Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.0 + + + enforce-maven + + enforce + + + + + (,2.1.0),(2.1.0,2.2.0),(2.2.0,) + Maven 2.1.0 and 2.2.0 produce incorrect GPG signatures and checksums respectively. + + + + + + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.1 + + forked-path + false + -Psonatype-oss-release + + + + + + + + UTF-8 + https://oss.sonatype.org/content/repositories/snapshots/ + + + + + sonatype-oss-release + + + + org.apache.maven.plugins + maven-source-plugin + 2.1.2 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.7 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.1 + + + sign-artifacts + verify + + sign + + + + + + + + + + diff --git a/lib/parent-0.15.0.pom b/lib/parent-0.15.0.pom new file mode 100644 index 0000000..dde08f7 --- /dev/null +++ b/lib/parent-0.15.0.pom @@ -0,0 +1,304 @@ + + + pom + 4.0.0 + + io.prometheus + parent + 0.15.0 + + Prometheus Java Suite + http://github.com/prometheus/client_java + + The Prometheus Java Suite: Client Metrics, Exposition, and Examples + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + scm:git:git@github.com:prometheus/client_java.git + scm:git:git@github.com:prometheus/client_java.git + git@github.com:prometheus/client_java.git + parent-0.15.0 + + + + + mtp + Matt T. Proud + matt.proud@gmail.com + + + + + simpleclient + simpleclient_common + simpleclient_caffeine + simpleclient_dropwizard + simpleclient_graphite_bridge + simpleclient_hibernate + simpleclient_guava + simpleclient_hotspot + simpleclient_httpserver + simpleclient_log4j + simpleclient_log4j2 + simpleclient_logback + simpleclient_pushgateway + simpleclient_servlet + simpleclient_servlet_common + simpleclient_servlet_jakarta + simpleclient_spring_web + simpleclient_spring_boot + simpleclient_jetty + simpleclient_jetty_jdk8 + simpleclient_tracer + simpleclient_vertx + simpleclient_bom + benchmarks + integration_tests + + + + UTF-8 + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + + + + maven-install-plugin + 2.4 + + + maven-resources-plugin + 2.6 + + + maven-compiler-plugin + 3.1 + + + maven-surefire-plugin + 2.12.4 + + + maven-jar-plugin + 2.4 + + + maven-deploy-plugin + 2.7 + + + maven-clean-plugin + 2.5 + + + maven-site-plugin + 3.3 + + + + maven-shade-plugin + 3.2.4 + + + maven-failsafe-plugin + 2.22.2 + + + maven-release-plugin + 2.5.3 + + + maven-dependency-plugin + 3.1.2 + + + maven-javadoc-plugin + 3.3.0 + + + maven-gpg-plugin + 3.0.1 + + + maven-source-plugin + 3.2.1 + + + maven-enforcer-plugin + 1.4.1 + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-plugin-versions + + enforce + + + + + org.springframework.boot:spring-boot-maven-plugin + + + + + + + + + org.apache.maven.plugins + maven-release-plugin + + true + false + release + deploy + + + + org.apache.maven.plugins + maven-deploy-plugin + + + org.apache.felix + maven-bundle-plugin + 2.4.0 + true + + + org.apache.maven.plugins + maven-surefire-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + UTF-8 + UTF-8 + true + 8 + ${java.home}/bin/javadoc + + + + generate-javadoc-site-report + site + + aggregate + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.6 + 1.6 + + + + + + + + + + maven-project-info-reports-plugin + 2.9 + + + maven-javadoc-plugin + + + aggregate + false + + aggregate + + + + default + + javadoc + + + + + + + + + + release + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + + + + diff --git a/lib/project-1.0.6.pom b/lib/project-1.0.6.pom new file mode 100644 index 0000000..eb7064a --- /dev/null +++ b/lib/project-1.0.6.pom @@ -0,0 +1,313 @@ + + + + + 4.0.0 + org.eclipse.ee4j + project + 1.0.6 + pom + + EE4J Project + https://projects.eclipse.org/projects/ee4j + + Eclipse Enterprise for Java (EE4J) is an open source initiative to create standard APIs, + implementations of those APIs, and technology compatibility kits for Java runtimes + that enable development, deployment, and management of server-side and cloud-native applications. + + + + Eclipse Foundation + https://www.eclipse.org + + 2017 + + + + eclipseee4j + Eclipse EE4J Developers + Eclipse Foundation + ee4j-pmc@eclipse.org + + + + + + Eclipse Public License v. 2.0 + https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt + repo + + + GNU General Public License, version 2 with the GNU Classpath Exception + https://www.gnu.org/software/classpath/license.html + repo + + + + + GitHub Issues + https://github.com/eclipse-ee4j/ee4j/issues + + + + scm:git:git@github.com:eclipse-ee4j/ee4j.git + scm:git:git@github.com:eclipse-ee4j/ee4j.git + https://github.com/eclipse-ee4j/ee4j + + + + + Community discussions + jakarta.ee-community@eclipse.org + https://accounts.eclipse.org/mailing-list/jakarta.ee-community + https://accounts.eclipse.org/mailing-list/jakarta.ee-community + https://dev.eclipse.org/mhonarc/lists/jakarta.ee-community/ + + http://dev.eclipse.org/mhonarc/lists/jakarta.ee-community/maillist.rss + + + + PMC discussions + ee4j-pmc@eclipse.org + https://accounts.eclipse.org/mailing-list/ee4j-pmc + https://accounts.eclipse.org/mailing-list/ee4j-pmc + https://dev.eclipse.org/mhonarc/lists/ee4j-pmc/ + + http://dev.eclipse.org/mhonarc/lists/ee4j-pmc/maillist.rss + + + + + + https://jakarta.oss.sonatype.org/ + ${sonatypeOssDistMgmtNexusUrl}content/repositories/snapshots/ + ${sonatypeOssDistMgmtNexusUrl}content/repositories/staging/ + ${sonatypeOssDistMgmtNexusUrl}service/local/staging/deploy/maven2/ + UTF-8 + + + + + + + ossrh + Sonatype Nexus Snapshots + ${sonatypeOssDistMgmtSnapshotsUrl} + + + ossrh + Sonatype Nexus Releases + ${sonatypeOssDistMgmtReleasesUrl} + + + + + + + + org.apache.maven.plugins + maven-release-plugin + 2.5.3 + + forked-path + false + -Poss-release ${release.arguments} + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + + ossrh + ${sonatypeOssDistMgmtNexusUrl} + false + + ${maven.deploy.skip} + + + + + + + + + + oss-release + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-maven + + enforce + + + + + [3.0.4,) + Maven 3.0 through 3.0.3 inclusive does not pass + correct settings.xml to Maven Release Plugin. + + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + 1.6 + + + --pinentry-mode + loopback + + + + + sign-artifacts + verify + + sign + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + true + + + + + + + + snapshots + + false + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + ${sonatypeOssDistMgmtSnapshotsUrl} + + false + + + true + + + + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + ${sonatypeOssDistMgmtSnapshotsUrl} + + false + + + true + + + + + + + + staging + + false + + + + sonatype-nexus-staging + Sonatype Nexus Staging + ${sonatypeOssDistMgmtStagingUrl} + + true + + + false + + + + + + sonatype-nexus-staging + Sonatype Nexus Staging + ${sonatypeOssDistMgmtStagingUrl} + + true + + + false + + + + + + diff --git a/lib/querydsl-bom-5.0.0.pom b/lib/querydsl-bom-5.0.0.pom new file mode 100644 index 0000000..14db260 --- /dev/null +++ b/lib/querydsl-bom-5.0.0.pom @@ -0,0 +1,217 @@ + + + 4.0.0 + com.querydsl + querydsl-bom + 5.0.0 + pom + Querydsl - Bill of materials + Bill of materials + http://www.querydsl.com + 2007 + + Querydsl + http://www.querydsl.com + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + timowest + Timo Westkämper + Mysema Ltd + + Project Manager + Architect + + + + ssaarela + Samppa Saarela + Mysema Ltd + + Developer + + + + ponzao + Vesa Marttila + Mysema Ltd + + Developer + + + + mangolas + Lassi Immonen + Mysema Ltd + + Developer + + + + Shredder121 + Ruben Dijkstra + + Developer + + + + johnktims + John Tims + + Developer + + + + robertandrewbain + Robert Bain + + Developer + + + + jwgmeligmeyling + Jan-Willem Gmelig Meyling + + Developer + + + + + scm:git:git@github.com:querydsl/querydsl.git/querydsl-bom + scm:git:git@github.com:querydsl/querydsl.git/querydsl-bom + http://github.com/querydsl/querydsl/querydsl-bom + + + + sonatype-nexus-staging + Nexus Release Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + + + + + + ${project.groupId} + querydsl-core + ${project.version} + + + ${project.groupId} + querydsl-codegen + ${project.version} + + + ${project.groupId} + querydsl-codegen-utils + ${project.version} + + + ${project.groupId} + querydsl-spatial + ${project.version} + + + ${project.groupId} + querydsl-apt + ${project.version} + + + ${project.groupId} + querydsl-collections + ${project.version} + + + ${project.groupId} + querydsl-guava + ${project.version} + + + ${project.groupId} + querydsl-sql + ${project.version} + + + ${project.groupId} + querydsl-sql-spatial + ${project.version} + + + ${project.groupId} + querydsl-sql-codegen + ${project.version} + + + ${project.groupId} + querydsl-sql-spring + ${project.version} + + + ${project.groupId} + querydsl-jpa + ${project.version} + + + ${project.groupId} + querydsl-jpa-codegen + ${project.version} + + + ${project.groupId} + querydsl-jdo + ${project.version} + + + ${project.groupId} + querydsl-kotlin-codegen + ${project.version} + + + ${project.groupId} + querydsl-lucene3 + ${project.version} + + + ${project.groupId} + querydsl-lucene4 + ${project.version} + + + ${project.groupId} + querydsl-lucene5 + ${project.version} + + + ${project.groupId} + querydsl-hibernate-search + ${project.version} + + + ${project.groupId} + querydsl-mongodb + ${project.version} + + + ${project.groupId} + querydsl-scala + ${project.version} + + + ${project.groupId} + querydsl-kotlin + ${project.version} + + + + diff --git a/lib/r2dbc-bom-Borca-SR2.pom b/lib/r2dbc-bom-Borca-SR2.pom new file mode 100644 index 0000000..c080e12 --- /dev/null +++ b/lib/r2dbc-bom-Borca-SR2.pom @@ -0,0 +1,99 @@ + + + + 4.0.0 + io.r2dbc + r2dbc-bom + Borca-SR2 + pom + Reactive Relational Database Connectivity - Bill of Materials + Dependency Management for R2DBC Drivers + https://github.com/r2dbc/r2dbc-bom + + + Apache License 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + R2DBC Working Group + + + + scm:git:https://github.com/r2dbc/r2dbc-bom + https://github.com/r2dbc/r2dbc-bom + + + 0.9.2.RELEASE + 0.9.1.RELEASE + 0.9.0.RELEASE + 0.4.0 + 0.9.2.RELEASE + UTF-8 + UTF-8 + 0.9.1.RELEASE + 0.9.1.RELEASE + 1.1.2 + + + + + com.oracle.database.r2dbc + oracle-r2dbc + ${r2dbc-oracle.version} + + + io.r2dbc + r2dbc-h2 + ${r2dbc-h2.version} + + + org.mariadb + r2dbc-mariadb + ${r2dbc-mariadb.version} + + + io.r2dbc + r2dbc-mssql + ${r2dbc-mssql.version} + + + org.postgresql + r2dbc-postgresql + ${r2dbc-postgresql.version} + + + io.r2dbc + r2dbc-pool + ${r2dbc-pool.version} + + + io.r2dbc + r2dbc-proxy + ${r2dbc-proxy.version} + + + io.r2dbc + r2dbc-spi + ${r2dbc-spi.version} + + + + diff --git a/lib/reactor-bom-2020.0.37.pom b/lib/reactor-bom-2020.0.37.pom new file mode 100644 index 0000000..e09f72c --- /dev/null +++ b/lib/reactor-bom-2020.0.37.pom @@ -0,0 +1,128 @@ + + + + + + + + 4.0.0 + io.projectreactor + reactor-bom + 2020.0.37 + pom + Project Reactor 3 Release Train - BOM + Bill of materials to make sure a consistent set of versions is used for Reactor 3. + https://projectreactor.io + + reactor + https://github.com/reactor + + + + The Apache Software License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + simonbasle + Simon Baslé + sbasle at vmware.com + + + violetagg + Violeta Georgieva + violetag at vmware.com + + + odokuka + Oleh Dokuka + odokuka at vmware.com + + + + scm:git:git://github.com/reactor/reactor + scm:git:git://github.com/reactor/reactor + https://github.com/reactor/reactor + + + GitHub Issues + https://github.com/reactor + + + + + org.reactivestreams + reactive-streams + 1.0.4 + + + io.projectreactor + reactor-core + 3.4.33 + + + io.projectreactor + reactor-test + 3.4.33 + + + io.projectreactor + reactor-tools + 3.4.33 + + + io.projectreactor.addons + reactor-extra + 3.4.10 + + + io.projectreactor.addons + reactor-adapter + 3.4.10 + + + io.projectreactor.netty + reactor-netty + 1.0.38 + + + io.projectreactor.netty + reactor-netty-core + 1.0.38 + + + io.projectreactor.netty + reactor-netty-http + 1.0.38 + + + io.projectreactor.netty + reactor-netty-http-brave + 1.0.38 + + + io.projectreactor.addons + reactor-pool + 0.2.12 + + + io.projectreactor.kafka + reactor-kafka + 1.3.21 + + + io.projectreactor.rabbitmq + reactor-rabbitmq + 1.5.6 + + + io.projectreactor.kotlin + reactor-kotlin-extensions + 1.1.10 + + + + diff --git a/lib/rest-assured-bom-4.5.1.pom b/lib/rest-assured-bom-4.5.1.pom new file mode 100644 index 0000000..8f9d621 --- /dev/null +++ b/lib/rest-assured-bom-4.5.1.pom @@ -0,0 +1,149 @@ + + + + + 4.0.0 + + io.rest-assured + rest-assured-bom + 4.5.1 + REST Assured: BOM + pom + Centralized dependencyManagement for the Rest Assured Project + + http://code.google.com/p/rest-assured + + + Apache 2.0 + http://www.apache.org/licenses/LICENSE-2.0.html + repo + + + + + + scm:git:git://github.com/rest-assured/rest-assured.git + scm:git:ssh://git@github.com/rest-assured/rest-assured.git + http://github.com/rest-assured/rest-assured/tree/master + HEAD + + + + + johan.haleby + Johan Haleby + johan.haleby at gmail.com + Jayway + http://www.jayway.com + + + + + + io.rest-assured + json-schema-validator + 4.5.1 + + + io.rest-assured + rest-assured-common + 4.5.1 + + + io.rest-assured + json-path + 4.5.1 + + + io.rest-assured + xml-path + 4.5.1 + + + io.rest-assured + rest-assured + 4.5.1 + + + io.rest-assured + spring-commons + 4.5.1 + + + io.rest-assured + spring-mock-mvc + 4.5.1 + + + io.rest-assured + scala-support + 4.5.1 + + + io.rest-assured + spring-web-test-client + 4.5.1 + + + io.rest-assured + kotlin-extensions + 4.5.1 + + + io.rest-assured + spring-mock-mvc-kotlin-extensions + 4.5.1 + + + io.rest-assured + rest-assured-all + 4.5.1 + + + io.rest-assured.examples + scalatra-example + 4.5.1 + + + io.rest-assured.examples + scalatra-webapp + 4.5.1 + war + + + io.rest-assured.examples + rest-assured-itest-java + 4.5.1 + + + io.rest-assured.examples + spring-mvc-webapp + 4.5.1 + war + + + io.rest-assured.examples + scala-example + 4.5.1 + + + io.rest-assured.examples + scala-mock-mvc-example + 4.5.1 + + + io.rest-assured.examples + kotlin-example + 4.5.1 + + + + + + + + + + + + diff --git a/lib/rsocket-bom-1.1.3.pom b/lib/rsocket-bom-1.1.3.pom new file mode 100644 index 0000000..4609984 --- /dev/null +++ b/lib/rsocket-bom-1.1.3.pom @@ -0,0 +1,79 @@ + + + 4.0.0 + io.rsocket + rsocket-bom + 1.1.3 + pom + rsocket-bom + RSocket Java Bill of materials. + http://rsocket.io + + + The Apache Software License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + rdegnan + Ryland Degnan + ryland@netifi.com + + + yschimke + Yuri Schimke + yuri@schimke.ee + + + OlegDokuka + Oleh Dokuka + oleh.dokuka@icloud.com + + + rstoyanchev + Rossen Stoyanchev + rstoyanchev@vmware.com + + + + scm:git:https://github.com/rsocket/rsocket-java.git + scm:git:https://github.com/rsocket/rsocket-java.git + https://github.com/rsocket/rsocket-java + + + + + io.rsocket + rsocket-core + 1.1.3 + + + io.rsocket + rsocket-load-balancer + 1.1.3 + + + io.rsocket + rsocket-micrometer + 1.1.3 + + + io.rsocket + rsocket-test + 1.1.3 + + + io.rsocket + rsocket-transport-local + 1.1.3 + + + io.rsocket + rsocket-transport-netty + 1.1.3 + + + + diff --git a/lib/simpleclient_bom-0.15.0.pom b/lib/simpleclient_bom-0.15.0.pom new file mode 100644 index 0000000..ca56738 --- /dev/null +++ b/lib/simpleclient_bom-0.15.0.pom @@ -0,0 +1,141 @@ + + + 4.0.0 + + + io.prometheus + parent + 0.15.0 + + + simpleclient_bom + pom + + Prometheus Java Simpleclient BOM + + Bill of Materials for the Simpleclient. + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + + io.prometheus + simpleclient + ${project.version} + + + io.prometheus + simpleclient_caffeine + ${project.version} + + + io.prometheus + simpleclient_common + ${project.version} + + + io.prometheus + simpleclient_dropwizard + ${project.version} + + + io.prometheus + simpleclient_graphite_bridge + ${project.version} + + + io.prometheus + simpleclient_guava + ${project.version} + + + io.prometheus + simpleclient_hibernate + ${project.version} + + + io.prometheus + simpleclient_hotspot + ${project.version} + + + io.prometheus + simpleclient_httpserver + ${project.version} + + + io.prometheus + simpleclient_jetty + ${project.version} + + + io.prometheus + simpleclient_jetty_jdk8 + ${project.version} + + + io.prometheus + simpleclient_log4j + ${project.version} + + + io.prometheus + simpleclient_log4j2 + ${project.version} + + + io.prometheus + simpleclient_logback + ${project.version} + + + io.prometheus + simpleclient_pushgateway + ${project.version} + + + io.prometheus + simpleclient_servlet + ${project.version} + + + io.prometheus + simpleclient_servlet_jakarta + ${project.version} + + + io.prometheus + simpleclient_spring_boot + ${project.version} + + + io.prometheus + simpleclient_spring_web + ${project.version} + + + io.prometheus + simpleclient_tracer_otel + ${project.version} + + + io.prometheus + simpleclient_tracer_otel_agent + ${project.version} + + + io.prometheus + simpleclient_vertx + ${project.version} + + + + diff --git a/lib/spring-boot-buildpack-platform-2.7.17.jar b/lib/spring-boot-buildpack-platform-2.7.17.jar new file mode 100644 index 0000000..e0291d7 Binary files /dev/null and b/lib/spring-boot-buildpack-platform-2.7.17.jar differ diff --git a/lib/spring-boot-dependencies-2.7.17.pom b/lib/spring-boot-dependencies-2.7.17.pom new file mode 100644 index 0000000..4ffe490 --- /dev/null +++ b/lib/spring-boot-dependencies-2.7.17.pom @@ -0,0 +1,2942 @@ + + + 4.0.0 + org.springframework.boot + spring-boot-dependencies + 2.7.17 + pom + spring-boot-dependencies + Spring Boot Dependencies + https://spring.io/projects/spring-boot + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + + + Spring + ask@spring.io + VMware, Inc. + https://www.spring.io + + + + https://github.com/spring-projects/spring-boot + + + 5.16.6 + 2.7.7 + 1.9.98 + 2.19.1 + 1.9.7 + 3.22.0 + 4.0.6 + 4.2.0 + 3.3.0 + 1.12.23 + 2.6.1.Final + 2.9.3 + 4.14.1 + 1.5.1 + 1.15 + 2.9.0 + 3.12.0 + 1.6 + 2.11.1 + 3.3.4 + 11.5.8.0 + 1.0.15.RELEASE + 10.14.2.0 + 4.2.21 + 2.10.9.2 + 3.10.8 + 7.17.14 + 3.4.11 + 8.5.13 + 2.3.32 + 4.9.10 + 3.0.4 + 2.3.8 + 1.2.6 + 18.5 + 3.0.19 + 2.9.1 + 2.1.214 + 2.2 + 5.1.7 + 2.2.1 + 5.6.15.Final + 6.2.5.Final + 4.0.3 + 2.5.2 + 2.60.0 + 4.1.5 + 4.5.14 + 5.1.4 + 4.4.16 + 5.1.5 + 13.0.20.Final + 2.22 + 2.13.5 + 1.2.2 + 1.3.5 + 2.0.3 + 1.1.6 + 1.0.2 + 1.6.7 + 1.1.4 + 2.2.3 + 4.0.4 + 1.2.7 + 1.3.3 + 2.0.2 + 1.1.2 + 2.1.6 + 2.3.3 + 1.4.2 + 2.3.3 + 3.1.10 + 1.2.0 + 1.3.2 + 1.1.1 + 2.3.1 + 2.3.1 + 2.0.1 + 1.1.4 + 1.0 + 1.6.2 + 1.1 + 2.2 + 1.3 + 2.0.1.Final + 1.1 + 1.2.0 + 4.0.9.java8 + 3.4.3.Final + 2.0.6.1 + 3.8.0 + 2.35 + 9.0.52 + 2.2.0.v201112011158 + 1.1.15 + 9.4.53.v20231009 + 1.15 + 1.2.21 + 1.7.2 + 3.14.16 + 2.7.0 + 2.4.11 + 1.5.1 + 1.2 + 1.3.1 + 4.13.2 + 5.8.2 + 3.1.2 + 1.6.21 + 1.6.4 + 6.1.10.RELEASE + 4.9.1 + 2.17.2 + 1.2.12 + 1.18.30 + 3.1.4 + 3.0.0 + 3.3.0 + 3.2.0 + 3.10.1 + 3.3.0 + 2.8.2 + 3.0.0 + 2.22.2 + 3.2.0 + 2.5.2 + 3.2.2 + 3.2.2 + 3.4.1 + 3.2.0 + 3.3.0 + 3.2.1 + 2.22.2 + 3.3.2 + 1.9.16 + 4.5.1 + 4.6.1 + 10.2.3.jre8 + 8.0.33 + 1.9.22 + 4.4.12 + 4.1.100.Final + 4.9.3 + 21.5.0.0 + 1.2.5 + 42.3.8 + 0.15.0 + 2.3.2 + 5.0.0 + Borca-SR2 + 5.14.3 + 0.5.0 + 1.0.4 + 2020.0.37 + 4.5.1 + 1.1.3 + 1.3.8 + 1.2.1 + 2.2.21 + 1.5.3 + 4.1.4 + 3.61.0 + 4.9.3 + 4.0.1 + 1.7.36 + 1.30 + 8.11.2 + 2.4.17 + 4.3.9 + 2021.2.17 + 5.3.30 + 1.0.6 + 1.5.5 + 5.5.19 + 2.8.11 + 2.4.1 + 2.0.7.RELEASE + 1.3.4 + 5.7.11 + 2021.2.3 + 3.1.7 + 3.36.0.3 + 1.6.7 + 3.0.15.RELEASE + 2.0.1 + 3.0.4.RELEASE + 3.0.5.RELEASE + 3.0.0 + 9.0.82 + 6.0.10 + 2.2.28.Final + 2.10.0 + 0.50 + 1.6.3 + 1.0.2 + 2.9.1 + + + + + org.apache.activemq + activemq-amqp + ${activemq.version} + + + org.apache.activemq + activemq-blueprint + ${activemq.version} + + + org.apache.activemq + activemq-broker + ${activemq.version} + + + org.apache.activemq + activemq-camel + ${activemq.version} + + + org.apache.activemq + activemq-client + ${activemq.version} + + + org.apache.activemq + activemq-console + ${activemq.version} + + + commons-logging + commons-logging + + + + + org.apache.activemq + activemq-http + ${activemq.version} + + + org.apache.activemq + activemq-jaas + ${activemq.version} + + + org.apache.activemq + activemq-jdbc-store + ${activemq.version} + + + org.apache.activemq + activemq-jms-pool + ${activemq.version} + + + org.apache.activemq + activemq-kahadb-store + ${activemq.version} + + + org.apache.activemq + activemq-karaf + ${activemq.version} + + + org.apache.activemq + activemq-leveldb-store + ${activemq.version} + + + commons-logging + commons-logging + + + + + org.apache.activemq + activemq-log4j-appender + ${activemq.version} + + + org.apache.activemq + activemq-mqtt + ${activemq.version} + + + org.apache.activemq + activemq-openwire-generator + ${activemq.version} + + + org.apache.activemq + activemq-openwire-legacy + ${activemq.version} + + + org.apache.activemq + activemq-osgi + ${activemq.version} + + + org.apache.activemq + activemq-partition + ${activemq.version} + + + org.apache.activemq + activemq-pool + ${activemq.version} + + + org.apache.activemq + activemq-ra + ${activemq.version} + + + org.apache.activemq + activemq-run + ${activemq.version} + + + org.apache.activemq + activemq-runtime-config + ${activemq.version} + + + org.apache.activemq + activemq-shiro + ${activemq.version} + + + org.apache.activemq + activemq-spring + ${activemq.version} + + + commons-logging + commons-logging + + + + + org.apache.activemq + activemq-stomp + ${activemq.version} + + + org.apache.activemq + activemq-web + ${activemq.version} + + + antlr + antlr + ${antlr2.version} + + + com.google.appengine + appengine-api-1.0-sdk + ${appengine-sdk.version} + + + org.apache.activemq + artemis-amqp-protocol + ${artemis.version} + + + org.apache.activemq + artemis-commons + ${artemis.version} + + + commons-logging + commons-logging + + + + + org.apache.activemq + artemis-core-client + ${artemis.version} + + + org.apache.geronimo.specs + geronimo-json_1.0_spec + + + + + org.apache.activemq + artemis-jdbc-store + ${artemis.version} + + + org.apache.activemq + artemis-jms-client + ${artemis.version} + + + org.apache.geronimo.specs + geronimo-json_1.0_spec + + + + + org.apache.activemq + artemis-jms-server + ${artemis.version} + + + org.apache.geronimo.specs + geronimo-json_1.0_spec + + + + + org.apache.activemq + artemis-journal + ${artemis.version} + + + org.apache.activemq + artemis-quorum-api + ${artemis.version} + + + org.apache.activemq + artemis-selector + ${artemis.version} + + + org.apache.activemq + artemis-server + ${artemis.version} + + + commons-logging + commons-logging + + + org.apache.geronimo.specs + geronimo-json_1.0_spec + + + + + org.apache.activemq + artemis-service-extensions + ${artemis.version} + + + org.aspectj + aspectjrt + ${aspectj.version} + + + org.aspectj + aspectjtools + ${aspectj.version} + + + org.aspectj + aspectjweaver + ${aspectj.version} + + + org.assertj + assertj-core + ${assertj.version} + + + com.atomikos + transactions-jdbc + ${atomikos.version} + + + com.atomikos + transactions-jms + ${atomikos.version} + + + com.atomikos + transactions-jta + ${atomikos.version} + + + org.awaitility + awaitility + ${awaitility.version} + + + org.awaitility + awaitility-groovy + ${awaitility.version} + + + org.awaitility + awaitility-kotlin + ${awaitility.version} + + + org.awaitility + awaitility-scala + ${awaitility.version} + + + net.bytebuddy + byte-buddy + ${byte-buddy.version} + + + net.bytebuddy + byte-buddy-agent + ${byte-buddy.version} + + + org.cache2k + cache2k-api + ${cache2k.version} + + + org.cache2k + cache2k-config + ${cache2k.version} + + + org.cache2k + cache2k-core + ${cache2k.version} + + + org.cache2k + cache2k-jcache + ${cache2k.version} + + + org.cache2k + cache2k-micrometer + ${cache2k.version} + + + org.cache2k + cache2k-spring + ${cache2k.version} + + + com.github.ben-manes.caffeine + caffeine + ${caffeine.version} + + + com.github.ben-manes.caffeine + guava + ${caffeine.version} + + + com.github.ben-manes.caffeine + jcache + ${caffeine.version} + + + com.github.ben-manes.caffeine + simulator + ${caffeine.version} + + + com.datastax.oss + java-driver-core + ${cassandra-driver.version} + + + org.slf4j + jcl-over-slf4j + + + + + com.fasterxml + classmate + ${classmate.version} + + + commons-codec + commons-codec + ${commons-codec.version} + + + org.apache.commons + commons-dbcp2 + ${commons-dbcp2.version} + + + commons-logging + commons-logging + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + commons-pool + commons-pool + ${commons-pool.version} + + + org.apache.commons + commons-pool2 + ${commons-pool2.version} + + + com.couchbase.client + java-client + ${couchbase-client.version} + + + com.ibm.db2 + jcc + ${db2-jdbc.version} + + + io.spring.gradle + dependency-management-plugin + ${dependency-management-plugin.version} + + + org.apache.derby + derby + ${derby.version} + + + org.apache.derby + derbyclient + ${derby.version} + + + org.apache.derby + derbynet + ${derby.version} + + + org.apache.derby + derbyoptionaltools + ${derby.version} + + + org.apache.derby + derbytools + ${derby.version} + + + net.sf.ehcache + ehcache + ${ehcache.version} + + + org.ehcache + ehcache + ${ehcache3.version} + + + org.ehcache + ehcache-clustered + ${ehcache3.version} + + + org.ehcache + ehcache-transactions + ${ehcache3.version} + + + org.elasticsearch + elasticsearch + ${elasticsearch.version} + + + org.elasticsearch.client + transport + ${elasticsearch.version} + + + org.elasticsearch.client + elasticsearch-rest-client + ${elasticsearch.version} + + + commons-logging + commons-logging + + + + + org.elasticsearch.client + elasticsearch-rest-client-sniffer + ${elasticsearch.version} + + + commons-logging + commons-logging + + + + + org.elasticsearch.client + elasticsearch-rest-high-level-client + ${elasticsearch.version} + + + org.elasticsearch.distribution.integ-test-zip + elasticsearch + ${elasticsearch.version} + zip + + + org.elasticsearch.plugin + transport-netty4-client + ${elasticsearch.version} + + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + ${embedded-mongo.version} + + + org.flywaydb + flyway-core + ${flyway.version} + + + org.flywaydb + flyway-firebird + ${flyway.version} + + + org.flywaydb + flyway-mysql + ${flyway.version} + + + org.flywaydb + flyway-sqlserver + ${flyway.version} + + + org.freemarker + freemarker + ${freemarker.version} + + + org.glassfish + jakarta.el + ${glassfish-el.version} + + + org.glassfish.jaxb + codemodel + ${glassfish-jaxb.version} + + + org.glassfish.jaxb + codemodel-annotation-compiler + ${glassfish-jaxb.version} + + + org.glassfish.jaxb + jaxb-jxc + ${glassfish-jaxb.version} + + + org.glassfish.jaxb + jaxb-runtime + ${glassfish-jaxb.version} + + + org.glassfish.jaxb + jaxb-xjc + ${glassfish-jaxb.version} + + + org.glassfish.jaxb + txw2 + ${glassfish-jaxb.version} + + + org.glassfish.jaxb + txwc2 + ${glassfish-jaxb.version} + + + org.glassfish.jaxb + xsom + ${glassfish-jaxb.version} + + + org.glassfish.web + jakarta.servlet.jsp.jstl + ${glassfish-jstl.version} + + + com.graphql-java + graphql-java + ${graphql-java.version} + + + com.google.code.gson + gson + ${gson.version} + + + com.h2database + h2 + ${h2.version} + + + org.hamcrest + hamcrest + ${hamcrest.version} + + + org.hamcrest + hamcrest-core + ${hamcrest.version} + + + org.hamcrest + hamcrest-library + ${hamcrest.version} + + + com.hazelcast + hazelcast + ${hazelcast.version} + + + com.hazelcast + hazelcast-spring + ${hazelcast.version} + + + com.hazelcast + hazelcast-hibernate52 + ${hazelcast-hibernate5.version} + + + com.hazelcast + hazelcast-hibernate53 + ${hazelcast-hibernate5.version} + + + org.hibernate + hibernate-c3p0 + ${hibernate.version} + + + org.hibernate + hibernate-core + ${hibernate.version} + + + org.hibernate + hibernate-ehcache + ${hibernate.version} + + + org.hibernate + hibernate-entitymanager + ${hibernate.version} + + + org.hibernate + hibernate-envers + ${hibernate.version} + + + org.hibernate + hibernate-hikaricp + ${hibernate.version} + + + org.hibernate + hibernate-java8 + ${hibernate.version} + + + org.hibernate + hibernate-jcache + ${hibernate.version} + + + org.hibernate + hibernate-jpamodelgen + ${hibernate.version} + + + org.hibernate + hibernate-micrometer + ${hibernate.version} + + + org.hibernate + hibernate-proxool + ${hibernate.version} + + + org.hibernate + hibernate-spatial + ${hibernate.version} + + + org.hibernate + hibernate-testing + ${hibernate.version} + + + org.hibernate + hibernate-vibur + ${hibernate.version} + + + org.hibernate.validator + hibernate-validator + ${hibernate-validator.version} + + + org.hibernate.validator + hibernate-validator-annotation-processor + ${hibernate-validator.version} + + + com.zaxxer + HikariCP + ${hikaricp.version} + + + org.hsqldb + hsqldb + ${hsqldb.version} + + + net.sourceforge.htmlunit + htmlunit + ${htmlunit.version} + + + commons-logging + commons-logging + + + + + org.apache.httpcomponents + httpasyncclient + ${httpasyncclient.version} + + + commons-logging + commons-logging + + + + + org.apache.httpcomponents + fluent-hc + ${httpclient.version} + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + commons-logging + commons-logging + + + + + org.apache.httpcomponents + httpclient-cache + ${httpclient.version} + + + org.apache.httpcomponents + httpclient-osgi + ${httpclient.version} + + + org.apache.httpcomponents + httpclient-win + ${httpclient.version} + + + org.apache.httpcomponents + httpmime + ${httpclient.version} + + + org.apache.httpcomponents.client5 + httpclient5 + ${httpclient5.version} + + + org.apache.httpcomponents.client5 + httpclient5-cache + ${httpclient5.version} + + + org.apache.httpcomponents.client5 + httpclient5-fluent + ${httpclient5.version} + + + org.apache.httpcomponents.client5 + httpclient5-win + ${httpclient5.version} + + + org.apache.httpcomponents + httpcore + ${httpcore.version} + + + org.apache.httpcomponents + httpcore-nio + ${httpcore.version} + + + org.apache.httpcomponents.core5 + httpcore5 + ${httpcore5.version} + + + org.apache.httpcomponents.core5 + httpcore5-h2 + ${httpcore5.version} + + + org.apache.httpcomponents.core5 + httpcore5-reactive + ${httpcore5.version} + + + org.influxdb + influxdb-java + ${influxdb-java.version} + + + com.sun.activation + jakarta.activation + ${jakarta-activation.version} + + + jakarta.activation + jakarta.activation-api + ${jakarta-activation.version} + + + jakarta.annotation + jakarta.annotation-api + ${jakarta-annotation.version} + + + jakarta.jms + jakarta.jms-api + ${jakarta-jms.version} + + + jakarta.json + jakarta.json-api + ${jakarta-json.version} + + + jakarta.json.bind + jakarta.json.bind-api + ${jakarta-json-bind.version} + + + jakarta.mail + jakarta.mail-api + ${jakarta-mail.version} + + + jakarta.management.j2ee + jakarta.management.j2ee-api + ${jakarta-management.version} + + + jakarta.persistence + jakarta.persistence-api + ${jakarta-persistence.version} + + + jakarta.servlet + jakarta.servlet-api + ${jakarta-servlet.version} + + + jakarta.servlet.jsp.jstl + jakarta.servlet.jsp.jstl-api + ${jakarta-servlet-jsp-jstl.version} + + + jakarta.transaction + jakarta.transaction-api + ${jakarta-transaction.version} + + + jakarta.validation + jakarta.validation-api + ${jakarta-validation.version} + + + jakarta.websocket + jakarta.websocket-api + ${jakarta-websocket.version} + + + jakarta.ws.rs + jakarta.ws.rs-api + ${jakarta-ws-rs.version} + + + jakarta.xml.bind + jakarta.xml.bind-api + ${jakarta-xml-bind.version} + + + jakarta.xml.soap + jakarta.xml.soap-api + ${jakarta-xml-soap.version} + + + jakarta.xml.ws + jakarta.xml.ws-api + ${jakarta-xml-ws.version} + + + org.codehaus.janino + commons-compiler + ${janino.version} + + + org.codehaus.janino + commons-compiler-jdk + ${janino.version} + + + org.codehaus.janino + janino + ${janino.version} + + + javax.activation + javax.activation-api + ${javax-activation.version} + + + javax.annotation + javax.annotation-api + ${javax-annotation.version} + + + javax.cache + cache-api + ${javax-cache.version} + + + javax.xml.bind + jaxb-api + ${javax-jaxb.version} + + + javax.xml.ws + jaxws-api + ${javax-jaxws.version} + + + javax.jms + javax.jms-api + ${javax-jms.version} + + + javax.json + javax.json-api + ${javax-json.version} + + + javax.json.bind + javax.json.bind-api + ${javax-jsonb.version} + + + javax.mail + javax.mail-api + ${javax-mail.version} + + + javax.money + money-api + ${javax-money.version} + + + javax.persistence + javax.persistence-api + ${javax-persistence.version} + + + javax.transaction + javax.transaction-api + ${javax-transaction.version} + + + javax.validation + validation-api + ${javax-validation.version} + + + javax.websocket + javax.websocket-api + ${javax-websocket.version} + + + jaxen + jaxen + ${jaxen.version} + + + org.firebirdsql.jdbc + jaybird + ${jaybird.version} + + + org.firebirdsql.jdbc + jaybird-jdk18 + ${jaybird.version} + + + org.jboss.logging + jboss-logging + ${jboss-logging.version} + + + org.jdom + jdom2 + ${jdom2.version} + + + redis.clients + jedis + ${jedis.version} + + + org.mortbay.jasper + apache-el + ${jetty-el.version} + + + org.eclipse.jetty.orbit + javax.servlet.jsp + ${jetty-jsp.version} + + + org.eclipse.jetty + jetty-reactive-httpclient + ${jetty-reactive-httpclient.version} + + + com.samskivert + jmustache + ${jmustache.version} + + + org.apache.johnzon + johnzon-core + ${johnzon.version} + + + org.apache.johnzon + johnzon-jaxrs + ${johnzon.version} + + + org.apache.johnzon + johnzon-jsonb + ${johnzon.version} + + + org.apache.johnzon + johnzon-jsonb-extras + ${johnzon.version} + + + org.apache.johnzon + johnzon-jsonschema + ${johnzon.version} + + + org.apache.johnzon + johnzon-mapper + ${johnzon.version} + + + org.apache.johnzon + johnzon-websocket + ${johnzon.version} + + + org.jolokia + jolokia-core + ${jolokia.version} + + + org.jooq + jooq + ${jooq.version} + + + org.jooq + jooq-codegen + ${jooq.version} + + + org.jooq + jooq-kotlin + ${jooq.version} + + + org.jooq + jooq-meta + ${jooq.version} + + + com.jayway.jsonpath + json-path + ${json-path.version} + + + com.jayway.jsonpath + json-path-assert + ${json-path.version} + + + net.minidev + json-smart + ${json-smart.version} + + + org.skyscreamer + jsonassert + ${jsonassert.version} + + + javax.servlet + jstl + ${jstl.version} + + + net.sourceforge.jtds + jtds + ${jtds.version} + + + junit + junit + ${junit.version} + + + org.apache.kafka + connect + ${kafka.version} + + + org.apache.kafka + connect-api + ${kafka.version} + + + org.apache.kafka + connect-basic-auth-extension + ${kafka.version} + + + org.apache.kafka + connect-file + ${kafka.version} + + + org.apache.kafka + connect-json + ${kafka.version} + + + org.apache.kafka + connect-mirror + ${kafka.version} + + + org.apache.kafka + connect-mirror-client + ${kafka.version} + + + org.apache.kafka + connect-runtime + ${kafka.version} + + + org.apache.kafka + connect-transforms + ${kafka.version} + + + org.apache.kafka + generator + ${kafka.version} + + + org.apache.kafka + kafka-clients + ${kafka.version} + + + org.apache.kafka + kafka-clients + ${kafka.version} + test + + + org.apache.kafka + kafka-log4j-appender + ${kafka.version} + + + org.apache.kafka + kafka-metadata + ${kafka.version} + + + org.apache.kafka + kafka-raft + ${kafka.version} + + + org.apache.kafka + kafka-server-common + ${kafka.version} + + + org.apache.kafka + kafka-server-common + ${kafka.version} + test + + + org.apache.kafka + kafka-shell + ${kafka.version} + + + org.apache.kafka + kafka-storage + ${kafka.version} + + + org.apache.kafka + kafka-storage-api + ${kafka.version} + + + org.apache.kafka + kafka-streams + ${kafka.version} + + + org.apache.kafka + kafka-streams-scala_2.12 + ${kafka.version} + + + org.apache.kafka + kafka-streams-scala_2.13 + ${kafka.version} + + + org.apache.kafka + kafka-streams-test-utils + ${kafka.version} + + + org.apache.kafka + kafka-tools + ${kafka.version} + + + org.apache.kafka + kafka_2.12 + ${kafka.version} + + + org.apache.kafka + kafka_2.12 + ${kafka.version} + test + + + org.apache.kafka + kafka_2.13 + ${kafka.version} + + + org.apache.kafka + kafka_2.13 + ${kafka.version} + test + + + org.apache.kafka + trogdor + ${kafka.version} + + + io.lettuce + lettuce-core + ${lettuce.version} + + + org.liquibase + liquibase-cdi + ${liquibase.version} + + + org.liquibase + liquibase-core + ${liquibase.version} + + + ch.qos.logback + logback-access + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + ch.qos.logback + logback-core + ${logback.version} + + + org.projectlombok + lombok + ${lombok.version} + + + org.mariadb.jdbc + mariadb-java-client + ${mariadb.version} + + + io.micrometer + micrometer-registry-stackdriver + ${micrometer.version} + + + javax.annotation + javax.annotation-api + + + + + org.mongodb + bson + ${mongodb.version} + + + org.mongodb + bson-record-codec + ${mongodb.version} + + + org.mongodb + mongodb-driver-core + ${mongodb.version} + + + org.mongodb + mongodb-driver-legacy + ${mongodb.version} + + + org.mongodb + mongodb-driver-reactivestreams + ${mongodb.version} + + + org.mongodb + mongodb-driver-sync + ${mongodb.version} + + + com.microsoft.sqlserver + mssql-jdbc + ${mssql-jdbc.version} + + + com.mysql + mysql-connector-j + ${mysql.version} + + + com.google.protobuf + protobuf-java + + + + + net.sourceforge.nekohtml + nekohtml + ${nekohtml.version} + + + org.neo4j.driver + neo4j-java-driver + ${neo4j-java-driver.version} + + + org.messaginghub + pooled-jms + ${pooled-jms.version} + + + org.postgresql + postgresql + ${postgresql.version} + + + org.quartz-scheduler + quartz + ${quartz.version} + + + com.mchange + c3p0 + + + com.zaxxer + * + + + + + org.quartz-scheduler + quartz-jobs + ${quartz.version} + + + com.rabbitmq + amqp-client + ${rabbit-amqp-client.version} + + + com.rabbitmq + stream-client + ${rabbit-stream-client.version} + + + org.reactivestreams + reactive-streams + ${reactive-streams.version} + + + io.reactivex + rxjava + ${rxjava.version} + + + io.reactivex + rxjava-reactive-streams + ${rxjava-adapter.version} + + + io.reactivex.rxjava2 + rxjava + ${rxjava2.version} + + + org.springframework.boot + spring-boot + 2.7.17 + + + org.springframework.boot + spring-boot-test + 2.7.17 + + + org.springframework.boot + spring-boot-test-autoconfigure + 2.7.17 + + + org.springframework.boot + spring-boot-actuator + 2.7.17 + + + org.springframework.boot + spring-boot-actuator-autoconfigure + 2.7.17 + + + org.springframework.boot + spring-boot-autoconfigure + 2.7.17 + + + org.springframework.boot + spring-boot-autoconfigure-processor + 2.7.17 + + + org.springframework.boot + spring-boot-buildpack-platform + 2.7.17 + + + org.springframework.boot + spring-boot-configuration-metadata + 2.7.17 + + + org.springframework.boot + spring-boot-configuration-processor + 2.7.17 + + + org.springframework.boot + spring-boot-devtools + 2.7.17 + + + org.springframework.boot + spring-boot-jarmode-layertools + 2.7.17 + + + org.springframework.boot + spring-boot-loader + 2.7.17 + + + org.springframework.boot + spring-boot-loader-tools + 2.7.17 + + + org.springframework.boot + spring-boot-properties-migrator + 2.7.17 + + + org.springframework.boot + spring-boot-starter + 2.7.17 + + + org.springframework.boot + spring-boot-starter-activemq + 2.7.17 + + + org.springframework.boot + spring-boot-starter-actuator + 2.7.17 + + + org.springframework.boot + spring-boot-starter-amqp + 2.7.17 + + + org.springframework.boot + spring-boot-starter-aop + 2.7.17 + + + org.springframework.boot + spring-boot-starter-artemis + 2.7.17 + + + org.springframework.boot + spring-boot-starter-batch + 2.7.17 + + + org.springframework.boot + spring-boot-starter-cache + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-cassandra + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-cassandra-reactive + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-couchbase + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-couchbase-reactive + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-elasticsearch + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-jdbc + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-jpa + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-ldap + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-mongodb + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-mongodb-reactive + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-r2dbc + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-redis + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-redis-reactive + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-neo4j + 2.7.17 + + + org.springframework.boot + spring-boot-starter-data-rest + 2.7.17 + + + org.springframework.boot + spring-boot-starter-freemarker + 2.7.17 + + + org.springframework.boot + spring-boot-starter-graphql + 2.7.17 + + + org.springframework.boot + spring-boot-starter-groovy-templates + 2.7.17 + + + org.springframework.boot + spring-boot-starter-hateoas + 2.7.17 + + + org.springframework.boot + spring-boot-starter-integration + 2.7.17 + + + org.springframework.boot + spring-boot-starter-jdbc + 2.7.17 + + + org.springframework.boot + spring-boot-starter-jersey + 2.7.17 + + + org.springframework.boot + spring-boot-starter-jetty + 2.7.17 + + + org.springframework.boot + spring-boot-starter-jooq + 2.7.17 + + + org.springframework.boot + spring-boot-starter-json + 2.7.17 + + + org.springframework.boot + spring-boot-starter-jta-atomikos + 2.7.17 + + + org.springframework.boot + spring-boot-starter-log4j2 + 2.7.17 + + + org.springframework.boot + spring-boot-starter-logging + 2.7.17 + + + org.springframework.boot + spring-boot-starter-mail + 2.7.17 + + + org.springframework.boot + spring-boot-starter-mustache + 2.7.17 + + + org.springframework.boot + spring-boot-starter-oauth2-client + 2.7.17 + + + org.springframework.boot + spring-boot-starter-oauth2-resource-server + 2.7.17 + + + org.springframework.boot + spring-boot-starter-quartz + 2.7.17 + + + org.springframework.boot + spring-boot-starter-reactor-netty + 2.7.17 + + + org.springframework.boot + spring-boot-starter-rsocket + 2.7.17 + + + org.springframework.boot + spring-boot-starter-security + 2.7.17 + + + org.springframework.boot + spring-boot-starter-test + 2.7.17 + + + org.springframework.boot + spring-boot-starter-thymeleaf + 2.7.17 + + + org.springframework.boot + spring-boot-starter-tomcat + 2.7.17 + + + org.springframework.boot + spring-boot-starter-undertow + 2.7.17 + + + org.springframework.boot + spring-boot-starter-validation + 2.7.17 + + + org.springframework.boot + spring-boot-starter-web + 2.7.17 + + + org.springframework.boot + spring-boot-starter-webflux + 2.7.17 + + + org.springframework.boot + spring-boot-starter-websocket + 2.7.17 + + + org.springframework.boot + spring-boot-starter-web-services + 2.7.17 + + + com.sun.xml.messaging.saaj + saaj-impl + ${saaj-impl.version} + + + org.seleniumhq.selenium + lift + ${selenium.version} + + + org.seleniumhq.selenium + selenium-api + ${selenium.version} + + + org.seleniumhq.selenium + selenium-chrome-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-chromium-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-devtools-v100 + ${selenium.version} + + + org.seleniumhq.selenium + selenium-devtools-v101 + ${selenium.version} + + + org.seleniumhq.selenium + selenium-devtools-v85 + ${selenium.version} + + + org.seleniumhq.selenium + selenium-devtools-v99 + ${selenium.version} + + + org.seleniumhq.selenium + selenium-edge-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-firefox-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-grid + ${selenium.version} + + + org.seleniumhq.selenium + selenium-http + ${selenium.version} + + + org.seleniumhq.selenium + selenium-ie-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-java + ${selenium.version} + + + org.seleniumhq.selenium + selenium-json + ${selenium.version} + + + org.seleniumhq.selenium + selenium-opera-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-remote-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-safari-driver + ${selenium.version} + + + org.seleniumhq.selenium + selenium-session-map-jdbc + ${selenium.version} + + + org.seleniumhq.selenium + selenium-session-map-redis + ${selenium.version} + + + org.seleniumhq.selenium + selenium-support + ${selenium.version} + + + org.seleniumhq.selenium + htmlunit-driver + ${selenium-htmlunit.version} + + + com.sendgrid + sendgrid-java + ${sendgrid.version} + + + javax.servlet + javax.servlet-api + ${servlet-api.version} + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + org.slf4j + jul-to-slf4j + ${slf4j.version} + + + org.slf4j + log4j-over-slf4j + ${slf4j.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-ext + ${slf4j.version} + + + org.slf4j + slf4j-jcl + ${slf4j.version} + + + org.slf4j + slf4j-jdk14 + ${slf4j.version} + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + + + org.slf4j + slf4j-nop + ${slf4j.version} + + + org.slf4j + slf4j-simple + ${slf4j.version} + + + org.yaml + snakeyaml + ${snakeyaml.version} + + + org.apache.solr + solr-analysis-extras + ${solr.version} + + + org.apache.solr + solr-analytics + ${solr.version} + + + org.apache.solr + solr-cell + ${solr.version} + + + org.apache.solr + solr-core + ${solr.version} + + + org.apache.solr + solr-dataimporthandler + ${solr.version} + + + org.apache.solr + solr-dataimporthandler-extras + ${solr.version} + + + org.apache.solr + solr-gcs-repository + ${solr.version} + + + org.apache.solr + solr-jaegertracer-configurator + ${solr.version} + + + org.apache.solr + solr-langid + ${solr.version} + + + org.apache.solr + solr-ltr + ${solr.version} + + + org.apache.solr + solr-prometheus-exporter + ${solr.version} + + + org.apache.solr + solr-s3-repository + ${solr.version} + + + org.apache.solr + solr-solrj + ${solr.version} + + + org.slf4j + jcl-over-slf4j + + + + + org.apache.solr + solr-test-framework + ${solr.version} + + + org.apache.solr + solr-velocity + ${solr.version} + + + org.springframework.amqp + spring-amqp + ${spring-amqp.version} + + + org.springframework.amqp + spring-rabbit + ${spring-amqp.version} + + + org.springframework.amqp + spring-rabbit-stream + ${spring-amqp.version} + + + org.springframework.amqp + spring-rabbit-junit + ${spring-amqp.version} + + + org.springframework.amqp + spring-rabbit-test + ${spring-amqp.version} + + + org.springframework.batch + spring-batch-core + ${spring-batch.version} + + + org.springframework.batch + spring-batch-infrastructure + ${spring-batch.version} + + + org.springframework.batch + spring-batch-integration + ${spring-batch.version} + + + org.springframework.batch + spring-batch-test + ${spring-batch.version} + + + org.springframework.graphql + spring-graphql + ${spring-graphql.version} + + + org.springframework.graphql + spring-graphql-test + ${spring-graphql.version} + + + org.springframework.hateoas + spring-hateoas + ${spring-hateoas.version} + + + org.springframework.kafka + spring-kafka + ${spring-kafka.version} + + + org.springframework.kafka + spring-kafka-test + ${spring-kafka.version} + + + org.springframework.ldap + spring-ldap-core + ${spring-ldap.version} + + + org.springframework.ldap + spring-ldap-core-tiger + ${spring-ldap.version} + + + org.springframework.ldap + spring-ldap-ldif-core + ${spring-ldap.version} + + + org.springframework.ldap + spring-ldap-odm + ${spring-ldap.version} + + + org.springframework.ldap + spring-ldap-test + ${spring-ldap.version} + + + org.springframework.restdocs + spring-restdocs-asciidoctor + ${spring-restdocs.version} + + + org.springframework.restdocs + spring-restdocs-core + ${spring-restdocs.version} + + + org.springframework.restdocs + spring-restdocs-mockmvc + ${spring-restdocs.version} + + + org.springframework.restdocs + spring-restdocs-restassured + ${spring-restdocs.version} + + + org.springframework.restdocs + spring-restdocs-webtestclient + ${spring-restdocs.version} + + + org.springframework.retry + spring-retry + ${spring-retry.version} + + + org.springframework.ws + spring-ws-core + ${spring-ws.version} + + + org.springframework.ws + spring-ws-security + ${spring-ws.version} + + + org.springframework.ws + spring-ws-support + ${spring-ws.version} + + + org.springframework.ws + spring-ws-test + ${spring-ws.version} + + + org.springframework.ws + spring-xml + ${spring-ws.version} + + + org.xerial + sqlite-jdbc + ${sqlite-jdbc.version} + + + com.sun.mail + jakarta.mail + ${sun-mail.version} + + + org.thymeleaf + thymeleaf + ${thymeleaf.version} + + + org.thymeleaf + thymeleaf-spring5 + ${thymeleaf.version} + + + com.github.mxab.thymeleaf.extras + thymeleaf-extras-data-attribute + ${thymeleaf-extras-data-attribute.version} + + + org.thymeleaf.extras + thymeleaf-extras-java8time + ${thymeleaf-extras-java8time.version} + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity5 + ${thymeleaf-extras-springsecurity.version} + + + nz.net.ultraq.thymeleaf + thymeleaf-layout-dialect + ${thymeleaf-layout-dialect.version} + + + org.apache.tomcat + tomcat-annotations-api + ${tomcat.version} + + + org.apache.tomcat + tomcat-jdbc + ${tomcat.version} + + + org.apache.tomcat + tomcat-jsp-api + ${tomcat.version} + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.version} + + + org.apache.tomcat.embed + tomcat-embed-el + ${tomcat.version} + + + org.apache.tomcat.embed + tomcat-embed-jasper + ${tomcat.version} + + + org.apache.tomcat.embed + tomcat-embed-websocket + ${tomcat.version} + + + com.unboundid + unboundid-ldapsdk + ${unboundid-ldapsdk.version} + + + io.undertow + undertow-core + ${undertow.version} + + + io.undertow + undertow-servlet + ${undertow.version} + + + io.undertow + undertow-websockets-jsr + ${undertow.version} + + + org.webjars + webjars-locator-core + ${webjars-locator-core.version} + + + wsdl4j + wsdl4j + ${wsdl4j.version} + + + org.xmlunit + xmlunit-assertj + ${xmlunit2.version} + + + org.xmlunit + xmlunit-assertj3 + ${xmlunit2.version} + + + org.xmlunit + xmlunit-core + ${xmlunit2.version} + + + org.xmlunit + xmlunit-legacy + ${xmlunit2.version} + + + org.xmlunit + xmlunit-matchers + ${xmlunit2.version} + + + org.xmlunit + xmlunit-placeholders + ${xmlunit2.version} + + + com.datastax.oss + java-driver-bom + ${cassandra-driver.version} + pom + import + + + io.dropwizard.metrics + metrics-bom + ${dropwizard-metrics.version} + pom + import + + + org.codehaus.groovy + groovy-bom + ${groovy.version} + pom + import + + + org.infinispan + infinispan-bom + ${infinispan.version} + pom + import + + + com.fasterxml.jackson + jackson-bom + ${jackson-bom.version} + pom + import + + + org.glassfish.jersey + jersey-bom + ${jersey.version} + pom + import + + + org.eclipse.jetty + jetty-bom + ${jetty.version} + pom + import + + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + + + org.jetbrains.kotlin + kotlin-bom + ${kotlin.version} + pom + import + + + org.jetbrains.kotlinx + kotlinx-coroutines-bom + ${kotlin-coroutines.version} + pom + import + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + pom + import + + + io.micrometer + micrometer-bom + ${micrometer.version} + pom + import + + + org.mockito + mockito-bom + ${mockito.version} + pom + import + + + io.netty + netty-bom + ${netty.version} + pom + import + + + com.squareup.okhttp3 + okhttp-bom + ${okhttp.version} + pom + import + + + com.oracle.database.jdbc + ojdbc-bom + ${oracle-database.version} + pom + import + + + io.prometheus + simpleclient_bom + ${prometheus-client.version} + pom + import + + + com.querydsl + querydsl-bom + ${querydsl.version} + pom + import + + + io.r2dbc + r2dbc-bom + ${r2dbc-bom.version} + pom + import + + + io.projectreactor + reactor-bom + ${reactor-bom.version} + pom + import + + + io.rest-assured + rest-assured-bom + ${rest-assured.version} + pom + import + + + io.rsocket + rsocket-bom + ${rsocket.version} + pom + import + + + org.springframework.data + spring-data-bom + ${spring-data-bom.version} + pom + import + + + org.springframework + spring-framework-bom + ${spring-framework.version} + pom + import + + + org.springframework.integration + spring-integration-bom + ${spring-integration.version} + pom + import + + + org.springframework.security + spring-security-bom + ${spring-security.version} + pom + import + + + org.springframework.session + spring-session-bom + ${spring-session-bom.version} + pom + import + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} + + + org.flywaydb + flyway-maven-plugin + ${flyway.version} + + + pl.project13.maven + git-commit-id-plugin + ${git-commit-id-plugin.version} + + + org.apache.johnzon + johnzon-maven-plugin + ${johnzon.version} + + + org.jooq + jooq-codegen-maven + ${jooq.version} + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + org.liquibase + liquibase-maven-plugin + ${liquibase.version} + + + org.apache.maven.plugins + maven-antrun-plugin + ${maven-antrun-plugin.version} + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + + + org.apache.maven.plugins + maven-clean-plugin + ${maven-clean-plugin.version} + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + + org.apache.maven.plugins + maven-dependency-plugin + ${maven-dependency-plugin.version} + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + + org.apache.maven.plugins + maven-enforcer-plugin + ${maven-enforcer-plugin.version} + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + + org.apache.maven.plugins + maven-help-plugin + ${maven-help-plugin.version} + + + org.apache.maven.plugins + maven-install-plugin + ${maven-install-plugin.version} + + + org.apache.maven.plugins + maven-invoker-plugin + ${maven-invoker-plugin.version} + + + org.apache.maven.plugins + maven-jar-plugin + ${maven-jar-plugin.version} + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + org.apache.maven.plugins + maven-resources-plugin + ${maven-resources-plugin.version} + + + org.apache.maven.plugins + maven-shade-plugin + ${maven-shade-plugin.version} + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + + org.springframework.boot + spring-boot-maven-plugin + 2.7.17 + + + org.codehaus.mojo + versions-maven-plugin + ${versions-maven-plugin.version} + + + org.codehaus.mojo + xml-maven-plugin + ${xml-maven-plugin.version} + + + + + diff --git a/lib/spring-boot-gradle-plugin-2.7.17.jar b/lib/spring-boot-gradle-plugin-2.7.17.jar new file mode 100644 index 0000000..2a5884f Binary files /dev/null and b/lib/spring-boot-gradle-plugin-2.7.17.jar differ diff --git a/lib/spring-boot-gradle-plugin-2.7.17.pom b/lib/spring-boot-gradle-plugin-2.7.17.pom new file mode 100644 index 0000000..08a54a2 --- /dev/null +++ b/lib/spring-boot-gradle-plugin-2.7.17.pom @@ -0,0 +1,75 @@ + + + + + + + + 4.0.0 + org.springframework.boot + spring-boot-gradle-plugin + 2.7.17 + spring-boot-gradle-plugin + Spring Boot Gradle Plugin + https://spring.io/projects/spring-boot + + VMware, Inc. + https://spring.io + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + + + Spring + ask@spring.io + VMware, Inc. + https://www.spring.io + + + + scm:git:git://github.com/spring-projects/spring-boot.git + scm:git:ssh://git@github.com/spring-projects/spring-boot.git + https://github.com/spring-projects/spring-boot + + + GitHub + https://github.com/spring-projects/spring-boot/issues + + + + org.springframework.boot + spring-boot-buildpack-platform + 2.7.17 + runtime + + + org.springframework.boot + spring-boot-loader-tools + 2.7.17 + runtime + + + io.spring.gradle + dependency-management-plugin + 1.0.15.RELEASE + runtime + + + org.apache.commons + commons-compress + 1.21 + runtime + + + org.springframework + spring-core + 5.3.30 + runtime + + + diff --git a/lib/spring-boot-loader-tools-2.7.17.jar b/lib/spring-boot-loader-tools-2.7.17.jar new file mode 100644 index 0000000..949b9fe Binary files /dev/null and b/lib/spring-boot-loader-tools-2.7.17.jar differ diff --git a/lib/spring-core-5.3.30.jar b/lib/spring-core-5.3.30.jar new file mode 100644 index 0000000..8065069 Binary files /dev/null and b/lib/spring-core-5.3.30.jar differ diff --git a/lib/spring-data-bom-2021.2.17.pom b/lib/spring-data-bom-2021.2.17.pom new file mode 100644 index 0000000..fe5153b --- /dev/null +++ b/lib/spring-data-bom-2021.2.17.pom @@ -0,0 +1,153 @@ + + + 4.0.0 + org.springframework.data + spring-data-bom + 2021.2.17 + pom + Spring Data Release Train - BOM + Bill of materials to make sure a consistent set of versions is used for + Spring Data modules. + https://github.com/spring-projects/spring-data-bom + + Pivotal Software, Inc. + https://www.spring.io + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + Copyright 2010 the original author or authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + + mpaluch + Mark Paluch + mpaluch at pivotal.io + Pivotal Software, Inc. + https://www.spring.io + + Project lead + + +1 + + + + scm:git:git://github.com/spring-projects/spring-data-bom.git + scm:git:ssh://git@github.com:spring-projects/spring-data-bom.git + https://github.com/spring-projects/spring-data-bom + + + GitHub + https://github.com/spring-projects/spring-data-bom/issues + + + + + org.springframework.data + spring-data-cassandra + 3.4.17 + + + org.springframework.data + spring-data-commons + 2.7.17 + + + org.springframework.data + spring-data-couchbase + 4.4.17 + + + org.springframework.data + spring-data-elasticsearch + 4.4.17 + + + org.springframework.data + spring-data-geode + 2.7.17 + + + org.springframework.data + spring-data-jdbc + 2.4.17 + + + org.springframework.data + spring-data-relational + 2.4.17 + + + org.springframework.data + spring-data-jpa + 2.7.17 + + + org.springframework.data + spring-data-mongodb + 3.4.17 + + + org.springframework.data + spring-data-neo4j + 6.3.17 + + + org.springframework.data + spring-data-r2dbc + 1.5.17 + + + org.springframework.data + spring-data-redis + 2.7.17 + + + org.springframework.data + spring-data-rest-webmvc + 3.7.17 + + + org.springframework.data + spring-data-rest-core + 3.7.17 + + + org.springframework.data + spring-data-rest-hal-explorer + 3.7.17 + + + org.springframework.data + spring-data-keyvalue + 2.7.17 + + + org.springframework.data + spring-data-envers + 2.7.17 + + + org.springframework.data + spring-data-ldap + 2.7.17 + + + + diff --git a/lib/spring-framework-bom-5.3.30.pom b/lib/spring-framework-bom-5.3.30.pom new file mode 100644 index 0000000..efdf5eb --- /dev/null +++ b/lib/spring-framework-bom-5.3.30.pom @@ -0,0 +1,157 @@ + + + + + + + + 4.0.0 + org.springframework + spring-framework-bom + 5.3.30 + pom + Spring Framework (Bill of Materials) + Spring Framework (Bill of Materials) + https://github.com/spring-projects/spring-framework + + Spring IO + https://spring.io/projects/spring-framework + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + repo + + + + + jhoeller + Juergen Hoeller + jhoeller@pivotal.io + + + + scm:git:git://github.com/spring-projects/spring-framework + scm:git:git://github.com/spring-projects/spring-framework + https://github.com/spring-projects/spring-framework + + + GitHub + https://github.com/spring-projects/spring-framework/issues + + + + + org.springframework + spring-aop + 5.3.30 + + + org.springframework + spring-aspects + 5.3.30 + + + org.springframework + spring-beans + 5.3.30 + + + org.springframework + spring-context + 5.3.30 + + + org.springframework + spring-context-indexer + 5.3.30 + + + org.springframework + spring-context-support + 5.3.30 + + + org.springframework + spring-core + 5.3.30 + + + org.springframework + spring-expression + 5.3.30 + + + org.springframework + spring-instrument + 5.3.30 + + + org.springframework + spring-jcl + 5.3.30 + + + org.springframework + spring-jdbc + 5.3.30 + + + org.springframework + spring-jms + 5.3.30 + + + org.springframework + spring-messaging + 5.3.30 + + + org.springframework + spring-orm + 5.3.30 + + + org.springframework + spring-oxm + 5.3.30 + + + org.springframework + spring-r2dbc + 5.3.30 + + + org.springframework + spring-test + 5.3.30 + + + org.springframework + spring-tx + 5.3.30 + + + org.springframework + spring-web + 5.3.30 + + + org.springframework + spring-webflux + 5.3.30 + + + org.springframework + spring-webmvc + 5.3.30 + + + org.springframework + spring-websocket + 5.3.30 + + + + diff --git a/lib/spring-integration-bom-5.5.19.pom b/lib/spring-integration-bom-5.5.19.pom new file mode 100644 index 0000000..96024a5 --- /dev/null +++ b/lib/spring-integration-bom-5.5.19.pom @@ -0,0 +1,246 @@ + + + 4.0.0 + org.springframework.integration + spring-integration-bom + 5.5.19 + pom + Spring Integration (Bill of Materials) + Spring Integration (Bill of Materials) + https://github.com/spring-projects/spring-integration + + Spring IO + https://spring.io/projects/spring-integration + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + artembilan + Artem Bilan + abilan@vmware.com + + project lead + + + + garyrussell + Gary Russell + grussell@vmware.com + + project lead emeritus + + + + markfisher + Mark Fisher + markfisher@vmware.com + + project founder and lead emeritus + + + + + scm:git:git://github.com/spring-projects/spring-integration.git + scm:git:ssh://git@github.com:spring-projects/spring-integration.git + https://github.com/spring-projects/spring-integration + + + GitHub + https://github.com/spring-projects/spring-integration/issues + + + + + org.springframework.integration + spring-integration-amqp + 5.5.19 + + + org.springframework.integration + spring-integration-core + 5.5.19 + + + org.springframework.integration + spring-integration-event + 5.5.19 + + + org.springframework.integration + spring-integration-feed + 5.5.19 + + + org.springframework.integration + spring-integration-file + 5.5.19 + + + org.springframework.integration + spring-integration-ftp + 5.5.19 + + + org.springframework.integration + spring-integration-gemfire + 5.5.19 + + + org.springframework.integration + spring-integration-groovy + 5.5.19 + + + org.springframework.integration + spring-integration-http + 5.5.19 + + + org.springframework.integration + spring-integration-ip + 5.5.19 + + + org.springframework.integration + spring-integration-jdbc + 5.5.19 + + + org.springframework.integration + spring-integration-jms + 5.5.19 + + + org.springframework.integration + spring-integration-jmx + 5.5.19 + + + org.springframework.integration + spring-integration-jpa + 5.5.19 + + + org.springframework.integration + spring-integration-kafka + 5.5.19 + + + org.springframework.integration + spring-integration-mail + 5.5.19 + + + org.springframework.integration + spring-integration-mongodb + 5.5.19 + + + org.springframework.integration + spring-integration-mqtt + 5.5.19 + + + org.springframework.integration + spring-integration-r2dbc + 5.5.19 + + + org.springframework.integration + spring-integration-redis + 5.5.19 + + + org.springframework.integration + spring-integration-rmi + 5.5.19 + + + org.springframework.integration + spring-integration-rsocket + 5.5.19 + + + org.springframework.integration + spring-integration-scripting + 5.5.19 + + + org.springframework.integration + spring-integration-security + 5.5.19 + + + org.springframework.integration + spring-integration-sftp + 5.5.19 + + + org.springframework.integration + spring-integration-stomp + 5.5.19 + + + org.springframework.integration + spring-integration-stream + 5.5.19 + + + org.springframework.integration + spring-integration-syslog + 5.5.19 + + + org.springframework.integration + spring-integration-test + 5.5.19 + + + org.springframework.integration + spring-integration-test-support + 5.5.19 + + + org.springframework.integration + spring-integration-webflux + 5.5.19 + + + org.springframework.integration + spring-integration-websocket + 5.5.19 + + + org.springframework.integration + spring-integration-ws + 5.5.19 + + + org.springframework.integration + spring-integration-xml + 5.5.19 + + + org.springframework.integration + spring-integration-xmpp + 5.5.19 + + + org.springframework.integration + spring-integration-zeromq + 5.5.19 + + + org.springframework.integration + spring-integration-zookeeper + 5.5.19 + + + + diff --git a/lib/spring-security-bom-5.7.11.pom b/lib/spring-security-bom-5.7.11.pom new file mode 100644 index 0000000..f9f201e --- /dev/null +++ b/lib/spring-security-bom-5.7.11.pom @@ -0,0 +1,148 @@ + + + + + + + + 4.0.0 + org.springframework.security + spring-security-bom + 5.7.11 + pom + spring-security-bom + Spring Security + https://spring.io/projects/spring-security + + Pivotal Software, Inc. + https://spring.io + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + + + Pivotal + info@pivotal.io + Pivotal Software, Inc. + https://www.spring.io + + + + scm:git:git://github.com/spring-projects/spring-security.git + scm:git:ssh://git@github.com/spring-projects/spring-security.git + https://github.com/spring-projects/spring-security + + + GitHub + https://github.com/spring-projects/spring-security/issues + + + + + org.springframework.security + spring-security-acl + 5.7.11 + + + org.springframework.security + spring-security-aspects + 5.7.11 + + + org.springframework.security + spring-security-cas + 5.7.11 + + + org.springframework.security + spring-security-config + 5.7.11 + + + org.springframework.security + spring-security-core + 5.7.11 + + + org.springframework.security + spring-security-crypto + 5.7.11 + + + org.springframework.security + spring-security-data + 5.7.11 + + + org.springframework.security + spring-security-ldap + 5.7.11 + + + org.springframework.security + spring-security-messaging + 5.7.11 + + + org.springframework.security + spring-security-oauth2-client + 5.7.11 + + + org.springframework.security + spring-security-oauth2-core + 5.7.11 + + + org.springframework.security + spring-security-oauth2-jose + 5.7.11 + + + org.springframework.security + spring-security-oauth2-resource-server + 5.7.11 + + + org.springframework.security + spring-security-openid + 5.7.11 + + + org.springframework.security + spring-security-remoting + 5.7.11 + + + org.springframework.security + spring-security-rsocket + 5.7.11 + + + org.springframework.security + spring-security-saml2-service-provider + 5.7.11 + + + org.springframework.security + spring-security-taglibs + 5.7.11 + + + org.springframework.security + spring-security-test + 5.7.11 + + + org.springframework.security + spring-security-web + 5.7.11 + + + + diff --git a/lib/spring-session-bom-2021.2.3.pom b/lib/spring-session-bom-2021.2.3.pom new file mode 100644 index 0000000..f83fd2d --- /dev/null +++ b/lib/spring-session-bom-2021.2.3.pom @@ -0,0 +1,78 @@ + + + + + + + + 4.0.0 + org.springframework.session + spring-session-bom + 2021.2.3 + pom + spring-session-bom + Spring Session BOM + https://spring.io/projects/spring-security + + Pivotal Software, Inc. + https://spring.io + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + + + Pivotal + info@pivotal.io + Pivotal Software, Inc. + https://www.spring.io + + + + scm:git:git://github.com/spring-projects/spring-security.git + scm:git:ssh://git@github.com/spring-projects/spring-security.git + https://github.com/spring-projects/spring-security + + + GitHub + https://github.com/spring-projects/spring-security/issues + + + + + org.springframework.session + spring-session-core + 2.7.4 + + + org.springframework.session + spring-session-data-geode + 2.7.1 + + + org.springframework.session + spring-session-data-mongodb + 2.7.4 + + + org.springframework.session + spring-session-data-redis + 2.7.4 + + + org.springframework.session + spring-session-hazelcast + 2.7.4 + + + org.springframework.session + spring-session-jdbc + 2.7.4 + + + + diff --git a/libs/HikariCP-4.0.3.jar b/libs/HikariCP-4.0.3.jar new file mode 100644 index 0000000..f328920 Binary files /dev/null and b/libs/HikariCP-4.0.3.jar differ diff --git a/libs/antlr-2.7.7.jar b/libs/antlr-2.7.7.jar new file mode 100644 index 0000000..5e5f14b Binary files /dev/null and b/libs/antlr-2.7.7.jar differ diff --git a/libs/aspectjrt-1.9.7.jar b/libs/aspectjrt-1.9.7.jar new file mode 100644 index 0000000..b24eece Binary files /dev/null and b/libs/aspectjrt-1.9.7.jar differ diff --git a/libs/aspectjweaver-1.9.7.jar b/libs/aspectjweaver-1.9.7.jar new file mode 100644 index 0000000..aae2690 Binary files /dev/null and b/libs/aspectjweaver-1.9.7.jar differ diff --git a/libs/attoparser-2.0.5.RELEASE.jar b/libs/attoparser-2.0.5.RELEASE.jar new file mode 100644 index 0000000..acf5ac7 Binary files /dev/null and b/libs/attoparser-2.0.5.RELEASE.jar differ diff --git a/libs/byte-buddy-1.14.5.jar b/libs/byte-buddy-1.14.5.jar new file mode 100644 index 0000000..409c3c3 Binary files /dev/null and b/libs/byte-buddy-1.14.5.jar differ diff --git a/libs/classmate-1.5.1.jar b/libs/classmate-1.5.1.jar new file mode 100644 index 0000000..819f5ea Binary files /dev/null and b/libs/classmate-1.5.1.jar differ diff --git a/libs/commons-beanutils-1.9.4.jar b/libs/commons-beanutils-1.9.4.jar new file mode 100644 index 0000000..b73543c Binary files /dev/null and b/libs/commons-beanutils-1.9.4.jar differ diff --git a/libs/commons-codec-1.15.jar b/libs/commons-codec-1.15.jar new file mode 100644 index 0000000..f14985a Binary files /dev/null and b/libs/commons-codec-1.15.jar differ diff --git a/libs/commons-collections4-4.4.jar b/libs/commons-collections4-4.4.jar new file mode 100644 index 0000000..da06c3e Binary files /dev/null and b/libs/commons-collections4-4.4.jar differ diff --git a/libs/commons-fileupload-1.5.jar b/libs/commons-fileupload-1.5.jar new file mode 100644 index 0000000..5e60875 Binary files /dev/null and b/libs/commons-fileupload-1.5.jar differ diff --git a/libs/commons-io-2.11.0.jar b/libs/commons-io-2.11.0.jar new file mode 100644 index 0000000..be507d9 Binary files /dev/null and b/libs/commons-io-2.11.0.jar differ diff --git a/libs/commons-lang3-3.13.0.jar b/libs/commons-lang3-3.13.0.jar new file mode 100644 index 0000000..891540f Binary files /dev/null and b/libs/commons-lang3-3.13.0.jar differ diff --git a/libs/commons-logging-1.2.jar b/libs/commons-logging-1.2.jar new file mode 100644 index 0000000..93a3b9f Binary files /dev/null and b/libs/commons-logging-1.2.jar differ diff --git a/libs/commons-net-3.10.0.jar b/libs/commons-net-3.10.0.jar new file mode 100644 index 0000000..0e40351 Binary files /dev/null and b/libs/commons-net-3.10.0.jar differ diff --git a/libs/dom4j-2.1.3.jar b/libs/dom4j-2.1.3.jar new file mode 100644 index 0000000..9a4f5d2 Binary files /dev/null and b/libs/dom4j-2.1.3.jar differ diff --git a/libs/elink-common-data-4.5.jar b/libs/elink-common-data-4.5.jar new file mode 100644 index 0000000..e6d4edf Binary files /dev/null and b/libs/elink-common-data-4.5.jar differ diff --git a/libs/groovy-3.0.19.jar b/libs/groovy-3.0.19.jar new file mode 100644 index 0000000..ea5097a Binary files /dev/null and b/libs/groovy-3.0.19.jar differ diff --git a/libs/groovy-extensions-1.1.0.jar b/libs/groovy-extensions-1.1.0.jar new file mode 100644 index 0000000..cfae08b Binary files /dev/null and b/libs/groovy-extensions-1.1.0.jar differ diff --git a/libs/hibernate-commons-annotations-5.1.2.Final.jar b/libs/hibernate-commons-annotations-5.1.2.Final.jar new file mode 100644 index 0000000..0b2e88f Binary files /dev/null and b/libs/hibernate-commons-annotations-5.1.2.Final.jar differ diff --git a/libs/hibernate-core-5.6.15.Final.jar b/libs/hibernate-core-5.6.15.Final.jar new file mode 100644 index 0000000..c7fd659 Binary files /dev/null and b/libs/hibernate-core-5.6.15.Final.jar differ diff --git a/libs/hibernate-envers-5.6.15.Final.jar b/libs/hibernate-envers-5.6.15.Final.jar new file mode 100644 index 0000000..16631cd Binary files /dev/null and b/libs/hibernate-envers-5.6.15.Final.jar differ diff --git a/libs/hibernate-validator-6.2.5.Final.jar b/libs/hibernate-validator-6.2.5.Final.jar new file mode 100644 index 0000000..1199abf Binary files /dev/null and b/libs/hibernate-validator-6.2.5.Final.jar differ diff --git a/libs/httpclient-4.5.14.jar b/libs/httpclient-4.5.14.jar new file mode 100644 index 0000000..2bb7c07 Binary files /dev/null and b/libs/httpclient-4.5.14.jar differ diff --git a/libs/httpcore-4.4.16.jar b/libs/httpcore-4.4.16.jar new file mode 100644 index 0000000..f0bdebe Binary files /dev/null and b/libs/httpcore-4.4.16.jar differ diff --git a/libs/istack-commons-runtime-3.0.12.jar b/libs/istack-commons-runtime-3.0.12.jar new file mode 100644 index 0000000..627bc32 Binary files /dev/null and b/libs/istack-commons-runtime-3.0.12.jar differ diff --git a/libs/jackson-annotations-2.15.3.jar b/libs/jackson-annotations-2.15.3.jar new file mode 100644 index 0000000..83a6e4d Binary files /dev/null and b/libs/jackson-annotations-2.15.3.jar differ diff --git a/libs/jackson-core-2.15.3.jar b/libs/jackson-core-2.15.3.jar new file mode 100644 index 0000000..f0c53d1 Binary files /dev/null and b/libs/jackson-core-2.15.3.jar differ diff --git a/libs/jackson-databind-2.15.3.jar b/libs/jackson-databind-2.15.3.jar new file mode 100644 index 0000000..b1a891a Binary files /dev/null and b/libs/jackson-databind-2.15.3.jar differ diff --git a/libs/jackson-datatype-jdk8-2.13.5.jar b/libs/jackson-datatype-jdk8-2.13.5.jar new file mode 100644 index 0000000..b002723 Binary files /dev/null and b/libs/jackson-datatype-jdk8-2.13.5.jar differ diff --git a/libs/jackson-datatype-jsr310-2.13.5.jar b/libs/jackson-datatype-jsr310-2.13.5.jar new file mode 100644 index 0000000..adf48ed Binary files /dev/null and b/libs/jackson-datatype-jsr310-2.13.5.jar differ diff --git a/libs/jackson-module-parameter-names-2.13.5.jar b/libs/jackson-module-parameter-names-2.13.5.jar new file mode 100644 index 0000000..1208f7c Binary files /dev/null and b/libs/jackson-module-parameter-names-2.13.5.jar differ diff --git a/libs/jakarta.activation-1.2.2.jar b/libs/jakarta.activation-1.2.2.jar new file mode 100644 index 0000000..bddea49 Binary files /dev/null and b/libs/jakarta.activation-1.2.2.jar differ diff --git a/libs/jakarta.persistence-api-2.2.3.jar b/libs/jakarta.persistence-api-2.2.3.jar new file mode 100644 index 0000000..9c758cf Binary files /dev/null and b/libs/jakarta.persistence-api-2.2.3.jar differ diff --git a/libs/jakarta.validation-api-2.0.2.jar b/libs/jakarta.validation-api-2.0.2.jar new file mode 100644 index 0000000..d68c9f7 Binary files /dev/null and b/libs/jakarta.validation-api-2.0.2.jar differ diff --git a/libs/jakarta.xml.bind-api-2.3.3.jar b/libs/jakarta.xml.bind-api-2.3.3.jar new file mode 100644 index 0000000..b8c7dc1 Binary files /dev/null and b/libs/jakarta.xml.bind-api-2.3.3.jar differ diff --git a/libs/jandex-2.4.2.Final.jar b/libs/jandex-2.4.2.Final.jar new file mode 100644 index 0000000..8e17960 Binary files /dev/null and b/libs/jandex-2.4.2.Final.jar differ diff --git a/libs/jasypt-1.9.3.jar b/libs/jasypt-1.9.3.jar new file mode 100644 index 0000000..f4c4606 Binary files /dev/null and b/libs/jasypt-1.9.3.jar differ diff --git a/libs/javassist-3.20.0-GA.jar b/libs/javassist-3.20.0-GA.jar new file mode 100644 index 0000000..0f1ff72 Binary files /dev/null and b/libs/javassist-3.20.0-GA.jar differ diff --git a/libs/javax.annotation-api-1.3.2.jar b/libs/javax.annotation-api-1.3.2.jar new file mode 100644 index 0000000..a8a470a Binary files /dev/null and b/libs/javax.annotation-api-1.3.2.jar differ diff --git a/libs/javax.servlet-api-4.0.0.jar b/libs/javax.servlet-api-4.0.0.jar new file mode 100644 index 0000000..9c9f4b7 Binary files /dev/null and b/libs/javax.servlet-api-4.0.0.jar differ diff --git a/libs/jaxb-api-2.3.0.jar b/libs/jaxb-api-2.3.0.jar new file mode 100644 index 0000000..0817c08 Binary files /dev/null and b/libs/jaxb-api-2.3.0.jar differ diff --git a/libs/jaxb-runtime-2.3.8.jar b/libs/jaxb-runtime-2.3.8.jar new file mode 100644 index 0000000..7b0e4ac Binary files /dev/null and b/libs/jaxb-runtime-2.3.8.jar differ diff --git a/libs/jboss-logging-3.4.3.Final.jar b/libs/jboss-logging-3.4.3.Final.jar new file mode 100644 index 0000000..31d55c6 Binary files /dev/null and b/libs/jboss-logging-3.4.3.Final.jar differ diff --git a/libs/jcl-over-slf4j-1.7.36.jar b/libs/jcl-over-slf4j-1.7.36.jar new file mode 100644 index 0000000..3ecd7d5 Binary files /dev/null and b/libs/jcl-over-slf4j-1.7.36.jar differ diff --git a/libs/joda-time-2.10.14.jar b/libs/joda-time-2.10.14.jar new file mode 100644 index 0000000..cb09f6a Binary files /dev/null and b/libs/joda-time-2.10.14.jar differ diff --git a/libs/jul-to-slf4j-1.7.36.jar b/libs/jul-to-slf4j-1.7.36.jar new file mode 100644 index 0000000..ae8f815 Binary files /dev/null and b/libs/jul-to-slf4j-1.7.36.jar differ diff --git a/libs/log4j-api-2.17.2.jar b/libs/log4j-api-2.17.2.jar new file mode 100644 index 0000000..16d9061 Binary files /dev/null and b/libs/log4j-api-2.17.2.jar differ diff --git a/libs/log4j-core-2.17.2.jar b/libs/log4j-core-2.17.2.jar new file mode 100644 index 0000000..0fd0051 Binary files /dev/null and b/libs/log4j-core-2.17.2.jar differ diff --git a/libs/log4j-jul-2.17.2.jar b/libs/log4j-jul-2.17.2.jar new file mode 100644 index 0000000..59b6539 Binary files /dev/null and b/libs/log4j-jul-2.17.2.jar differ diff --git a/libs/log4j-over-slf4j-1.7.36.jar b/libs/log4j-over-slf4j-1.7.36.jar new file mode 100644 index 0000000..13fbc0a Binary files /dev/null and b/libs/log4j-over-slf4j-1.7.36.jar differ diff --git a/libs/log4j-slf4j-impl-2.17.2.jar b/libs/log4j-slf4j-impl-2.17.2.jar new file mode 100644 index 0000000..a5cc396 Binary files /dev/null and b/libs/log4j-slf4j-impl-2.17.2.jar differ diff --git a/libs/lombok-1.18.28.jar b/libs/lombok-1.18.28.jar new file mode 100644 index 0000000..dcaa423 Binary files /dev/null and b/libs/lombok-1.18.28.jar differ diff --git a/libs/lucy-xss-1.6.3.jar b/libs/lucy-xss-1.6.3.jar new file mode 100644 index 0000000..d0bb158 Binary files /dev/null and b/libs/lucy-xss-1.6.3.jar differ diff --git a/libs/lucy-xss-servlet-2.0.1.jar b/libs/lucy-xss-servlet-2.0.1.jar new file mode 100644 index 0000000..f41ce3c Binary files /dev/null and b/libs/lucy-xss-servlet-2.0.1.jar differ diff --git a/libs/mapstruct-1.5.5.Final.jar b/libs/mapstruct-1.5.5.Final.jar new file mode 100644 index 0000000..9380888 Binary files /dev/null and b/libs/mapstruct-1.5.5.Final.jar differ diff --git a/libs/ognl-3.1.26.jar b/libs/ognl-3.1.26.jar new file mode 100644 index 0000000..2740eab Binary files /dev/null and b/libs/ognl-3.1.26.jar differ diff --git a/libs/org.egovframe.rte.fdl.cmmn-4.1.0.jar b/libs/org.egovframe.rte.fdl.cmmn-4.1.0.jar new file mode 100644 index 0000000..830b090 Binary files /dev/null and b/libs/org.egovframe.rte.fdl.cmmn-4.1.0.jar differ diff --git a/libs/org.egovframe.rte.fdl.idgnr-4.1.0.jar b/libs/org.egovframe.rte.fdl.idgnr-4.1.0.jar new file mode 100644 index 0000000..86feff6 Binary files /dev/null and b/libs/org.egovframe.rte.fdl.idgnr-4.1.0.jar differ diff --git a/libs/org.egovframe.rte.fdl.logging-4.1.0.jar b/libs/org.egovframe.rte.fdl.logging-4.1.0.jar new file mode 100644 index 0000000..ee83520 Binary files /dev/null and b/libs/org.egovframe.rte.fdl.logging-4.1.0.jar differ diff --git a/libs/slf4j-api-1.7.36.jar b/libs/slf4j-api-1.7.36.jar new file mode 100644 index 0000000..7d3ce68 Binary files /dev/null and b/libs/slf4j-api-1.7.36.jar differ diff --git a/libs/snakeyaml-1.30.jar b/libs/snakeyaml-1.30.jar new file mode 100644 index 0000000..6c9b2bc Binary files /dev/null and b/libs/snakeyaml-1.30.jar differ diff --git a/libs/spring-aop-5.3.30.jar b/libs/spring-aop-5.3.30.jar new file mode 100644 index 0000000..df9e3ef Binary files /dev/null and b/libs/spring-aop-5.3.30.jar differ diff --git a/libs/spring-aspects-5.3.30.jar b/libs/spring-aspects-5.3.30.jar new file mode 100644 index 0000000..0f8e0f5 Binary files /dev/null and b/libs/spring-aspects-5.3.30.jar differ diff --git a/libs/spring-beans-5.3.30.jar b/libs/spring-beans-5.3.30.jar new file mode 100644 index 0000000..772d69d Binary files /dev/null and b/libs/spring-beans-5.3.30.jar differ diff --git a/libs/spring-boot-2.7.17.jar b/libs/spring-boot-2.7.17.jar new file mode 100644 index 0000000..fd8e0ef Binary files /dev/null and b/libs/spring-boot-2.7.17.jar differ diff --git a/libs/spring-boot-autoconfigure-2.7.17.jar b/libs/spring-boot-autoconfigure-2.7.17.jar new file mode 100644 index 0000000..5ae6cfc Binary files /dev/null and b/libs/spring-boot-autoconfigure-2.7.17.jar differ diff --git a/libs/spring-boot-devtools-2.7.17.jar b/libs/spring-boot-devtools-2.7.17.jar new file mode 100644 index 0000000..02b81a5 Binary files /dev/null and b/libs/spring-boot-devtools-2.7.17.jar differ diff --git a/libs/spring-boot-starter-2.7.17.jar b/libs/spring-boot-starter-2.7.17.jar new file mode 100644 index 0000000..ff72c50 Binary files /dev/null and b/libs/spring-boot-starter-2.7.17.jar differ diff --git a/libs/spring-boot-starter-aop-2.7.17.jar b/libs/spring-boot-starter-aop-2.7.17.jar new file mode 100644 index 0000000..8c4d7bf Binary files /dev/null and b/libs/spring-boot-starter-aop-2.7.17.jar differ diff --git a/libs/spring-boot-starter-cache-2.7.17.jar b/libs/spring-boot-starter-cache-2.7.17.jar new file mode 100644 index 0000000..78e4db1 Binary files /dev/null and b/libs/spring-boot-starter-cache-2.7.17.jar differ diff --git a/libs/spring-boot-starter-data-jpa-2.7.17.jar b/libs/spring-boot-starter-data-jpa-2.7.17.jar new file mode 100644 index 0000000..9c410d9 Binary files /dev/null and b/libs/spring-boot-starter-data-jpa-2.7.17.jar differ diff --git a/libs/spring-boot-starter-jdbc-2.7.17.jar b/libs/spring-boot-starter-jdbc-2.7.17.jar new file mode 100644 index 0000000..bb15d59 Binary files /dev/null and b/libs/spring-boot-starter-jdbc-2.7.17.jar differ diff --git a/libs/spring-boot-starter-json-2.7.17.jar b/libs/spring-boot-starter-json-2.7.17.jar new file mode 100644 index 0000000..5509a30 Binary files /dev/null and b/libs/spring-boot-starter-json-2.7.17.jar differ diff --git a/libs/spring-boot-starter-log4j2-2.7.17.jar b/libs/spring-boot-starter-log4j2-2.7.17.jar new file mode 100644 index 0000000..29c3b2b Binary files /dev/null and b/libs/spring-boot-starter-log4j2-2.7.17.jar differ diff --git a/libs/spring-boot-starter-security-2.7.17.jar b/libs/spring-boot-starter-security-2.7.17.jar new file mode 100644 index 0000000..f1b0578 Binary files /dev/null and b/libs/spring-boot-starter-security-2.7.17.jar differ diff --git a/libs/spring-boot-starter-thymeleaf-2.7.17.jar b/libs/spring-boot-starter-thymeleaf-2.7.17.jar new file mode 100644 index 0000000..ec24eb4 Binary files /dev/null and b/libs/spring-boot-starter-thymeleaf-2.7.17.jar differ diff --git a/libs/spring-boot-starter-validation-2.7.17.jar b/libs/spring-boot-starter-validation-2.7.17.jar new file mode 100644 index 0000000..7361c79 Binary files /dev/null and b/libs/spring-boot-starter-validation-2.7.17.jar differ diff --git a/libs/spring-boot-starter-web-2.7.17.jar b/libs/spring-boot-starter-web-2.7.17.jar new file mode 100644 index 0000000..bc7c0b9 Binary files /dev/null and b/libs/spring-boot-starter-web-2.7.17.jar differ diff --git a/libs/spring-context-5.3.30.jar b/libs/spring-context-5.3.30.jar new file mode 100644 index 0000000..7d5483d Binary files /dev/null and b/libs/spring-context-5.3.30.jar differ diff --git a/libs/spring-context-support-5.3.30.jar b/libs/spring-context-support-5.3.30.jar new file mode 100644 index 0000000..0a537c3 Binary files /dev/null and b/libs/spring-context-support-5.3.30.jar differ diff --git a/libs/spring-core-5.3.30.jar b/libs/spring-core-5.3.30.jar new file mode 100644 index 0000000..8065069 Binary files /dev/null and b/libs/spring-core-5.3.30.jar differ diff --git a/libs/spring-data-commons-2.7.17.jar b/libs/spring-data-commons-2.7.17.jar new file mode 100644 index 0000000..aefb11b Binary files /dev/null and b/libs/spring-data-commons-2.7.17.jar differ diff --git a/libs/spring-data-envers-2.7.17.jar b/libs/spring-data-envers-2.7.17.jar new file mode 100644 index 0000000..3d89115 Binary files /dev/null and b/libs/spring-data-envers-2.7.17.jar differ diff --git a/libs/spring-data-jpa-2.7.17.jar b/libs/spring-data-jpa-2.7.17.jar new file mode 100644 index 0000000..37358c9 Binary files /dev/null and b/libs/spring-data-jpa-2.7.17.jar differ diff --git a/libs/spring-expression-5.3.30.jar b/libs/spring-expression-5.3.30.jar new file mode 100644 index 0000000..f248a27 Binary files /dev/null and b/libs/spring-expression-5.3.30.jar differ diff --git a/libs/spring-jcl-5.3.30.jar b/libs/spring-jcl-5.3.30.jar new file mode 100644 index 0000000..ce31f75 Binary files /dev/null and b/libs/spring-jcl-5.3.30.jar differ diff --git a/libs/spring-jdbc-5.3.30.jar b/libs/spring-jdbc-5.3.30.jar new file mode 100644 index 0000000..2a9d4aa Binary files /dev/null and b/libs/spring-jdbc-5.3.30.jar differ diff --git a/libs/spring-orm-5.3.30.jar b/libs/spring-orm-5.3.30.jar new file mode 100644 index 0000000..d1a9c67 Binary files /dev/null and b/libs/spring-orm-5.3.30.jar differ diff --git a/libs/spring-security-config-5.7.11.jar b/libs/spring-security-config-5.7.11.jar new file mode 100644 index 0000000..43ebe7a Binary files /dev/null and b/libs/spring-security-config-5.7.11.jar differ diff --git a/libs/spring-security-core-5.7.11.jar b/libs/spring-security-core-5.7.11.jar new file mode 100644 index 0000000..8aa839d Binary files /dev/null and b/libs/spring-security-core-5.7.11.jar differ diff --git a/libs/spring-security-crypto-5.7.11.jar b/libs/spring-security-crypto-5.7.11.jar new file mode 100644 index 0000000..68456ab Binary files /dev/null and b/libs/spring-security-crypto-5.7.11.jar differ diff --git a/libs/spring-security-web-5.7.11.jar b/libs/spring-security-web-5.7.11.jar new file mode 100644 index 0000000..5e9ef0b Binary files /dev/null and b/libs/spring-security-web-5.7.11.jar differ diff --git a/libs/spring-tx-5.3.30.jar b/libs/spring-tx-5.3.30.jar new file mode 100644 index 0000000..6e2bc51 Binary files /dev/null and b/libs/spring-tx-5.3.30.jar differ diff --git a/libs/spring-web-5.3.30.jar b/libs/spring-web-5.3.30.jar new file mode 100644 index 0000000..ff1bc94 Binary files /dev/null and b/libs/spring-web-5.3.30.jar differ diff --git a/libs/spring-webmvc-5.3.30.jar b/libs/spring-webmvc-5.3.30.jar new file mode 100644 index 0000000..4566404 Binary files /dev/null and b/libs/spring-webmvc-5.3.30.jar differ diff --git a/libs/stax2-api-4.2.1.jar b/libs/stax2-api-4.2.1.jar new file mode 100644 index 0000000..28c6a08 Binary files /dev/null and b/libs/stax2-api-4.2.1.jar differ diff --git a/libs/swagger/jackson-dataformat-yaml-2.18.1.jar b/libs/swagger/jackson-dataformat-yaml-2.18.1.jar new file mode 100644 index 0000000..a1e25c1 Binary files /dev/null and b/libs/swagger/jackson-dataformat-yaml-2.18.1.jar differ diff --git a/libs/swagger/swagger-annotations-1.6.14.jar b/libs/swagger/swagger-annotations-1.6.14.jar new file mode 100644 index 0000000..1f8db9b Binary files /dev/null and b/libs/swagger/swagger-annotations-1.6.14.jar differ diff --git a/libs/swagger/swagger-annotations-2.2.25.jar b/libs/swagger/swagger-annotations-2.2.25.jar new file mode 100644 index 0000000..23ef295 Binary files /dev/null and b/libs/swagger/swagger-annotations-2.2.25.jar differ diff --git a/libs/swagger/swagger-compat-spec-parser-1.0.71.jar b/libs/swagger/swagger-compat-spec-parser-1.0.71.jar new file mode 100644 index 0000000..d768696 Binary files /dev/null and b/libs/swagger/swagger-compat-spec-parser-1.0.71.jar differ diff --git a/libs/swagger/swagger-core-1.6.14.jar b/libs/swagger/swagger-core-1.6.14.jar new file mode 100644 index 0000000..037dce7 Binary files /dev/null and b/libs/swagger/swagger-core-1.6.14.jar differ diff --git a/libs/swagger/swagger-core-2.2.25.jar b/libs/swagger/swagger-core-2.2.25.jar new file mode 100644 index 0000000..286953d Binary files /dev/null and b/libs/swagger/swagger-core-2.2.25.jar differ diff --git a/libs/swagger/swagger-models-1.6.14.jar b/libs/swagger/swagger-models-1.6.14.jar new file mode 100644 index 0000000..fcb069a Binary files /dev/null and b/libs/swagger/swagger-models-1.6.14.jar differ diff --git a/libs/swagger/swagger-models-2.2.25.jar b/libs/swagger/swagger-models-2.2.25.jar new file mode 100644 index 0000000..8113753 Binary files /dev/null and b/libs/swagger/swagger-models-2.2.25.jar differ diff --git a/libs/swagger/swagger-parser-1.0.71.jar b/libs/swagger/swagger-parser-1.0.71.jar new file mode 100644 index 0000000..2d34db0 Binary files /dev/null and b/libs/swagger/swagger-parser-1.0.71.jar differ diff --git a/libs/swagger/swagger-parser-2.1.23.jar b/libs/swagger/swagger-parser-2.1.23.jar new file mode 100644 index 0000000..eb18923 Binary files /dev/null and b/libs/swagger/swagger-parser-2.1.23.jar differ diff --git a/libs/swagger/swagger-parser-core-2.1.23.jar b/libs/swagger/swagger-parser-core-2.1.23.jar new file mode 100644 index 0000000..e1455ae Binary files /dev/null and b/libs/swagger/swagger-parser-core-2.1.23.jar differ diff --git a/libs/swagger/swagger-parser-safe-url-resolver-1.0.71.jar b/libs/swagger/swagger-parser-safe-url-resolver-1.0.71.jar new file mode 100644 index 0000000..e26b64e Binary files /dev/null and b/libs/swagger/swagger-parser-safe-url-resolver-1.0.71.jar differ diff --git a/libs/swagger/swagger-parser-safe-url-resolver-2.1.23.jar b/libs/swagger/swagger-parser-safe-url-resolver-2.1.23.jar new file mode 100644 index 0000000..7e88d67 Binary files /dev/null and b/libs/swagger/swagger-parser-safe-url-resolver-2.1.23.jar differ diff --git a/libs/swagger/swagger-parser-v2-converter-2.1.23.jar b/libs/swagger/swagger-parser-v2-converter-2.1.23.jar new file mode 100644 index 0000000..dc0fe3c Binary files /dev/null and b/libs/swagger/swagger-parser-v2-converter-2.1.23.jar differ diff --git a/libs/swagger/swagger-parser-v3-2.1.23.jar b/libs/swagger/swagger-parser-v3-2.1.23.jar new file mode 100644 index 0000000..2dbf66c Binary files /dev/null and b/libs/swagger/swagger-parser-v3-2.1.23.jar differ diff --git a/libs/thymeleaf-3.0.15.RELEASE.jar b/libs/thymeleaf-3.0.15.RELEASE.jar new file mode 100644 index 0000000..6744a4f Binary files /dev/null and b/libs/thymeleaf-3.0.15.RELEASE.jar differ diff --git a/libs/thymeleaf-expression-processor-3.0.0.jar b/libs/thymeleaf-expression-processor-3.0.0.jar new file mode 100644 index 0000000..6d17777 Binary files /dev/null and b/libs/thymeleaf-expression-processor-3.0.0.jar differ diff --git a/libs/thymeleaf-extras-java8time-3.0.4.RELEASE.jar b/libs/thymeleaf-extras-java8time-3.0.4.RELEASE.jar new file mode 100644 index 0000000..1359352 Binary files /dev/null and b/libs/thymeleaf-extras-java8time-3.0.4.RELEASE.jar differ diff --git a/libs/thymeleaf-extras-springsecurity5-3.0.5.RELEASE.jar b/libs/thymeleaf-extras-springsecurity5-3.0.5.RELEASE.jar new file mode 100644 index 0000000..741e071 Binary files /dev/null and b/libs/thymeleaf-extras-springsecurity5-3.0.5.RELEASE.jar differ diff --git a/libs/thymeleaf-layout-dialect-3.0.0.jar b/libs/thymeleaf-layout-dialect-3.0.0.jar new file mode 100644 index 0000000..db88469 Binary files /dev/null and b/libs/thymeleaf-layout-dialect-3.0.0.jar differ diff --git a/libs/thymeleaf-spring5-3.0.15.RELEASE.jar b/libs/thymeleaf-spring5-3.0.15.RELEASE.jar new file mode 100644 index 0000000..a6100c5 Binary files /dev/null and b/libs/thymeleaf-spring5-3.0.15.RELEASE.jar differ diff --git a/libs/tibero6-jdbc.jar b/libs/tibero6-jdbc.jar new file mode 100644 index 0000000..d221e12 Binary files /dev/null and b/libs/tibero6-jdbc.jar differ diff --git a/libs/tomcat-embed-el-9.0.82.jar b/libs/tomcat-embed-el-9.0.82.jar new file mode 100644 index 0000000..0815ee6 Binary files /dev/null and b/libs/tomcat-embed-el-9.0.82.jar differ diff --git a/libs/txw2-2.3.8.jar b/libs/txw2-2.3.8.jar new file mode 100644 index 0000000..dafabae Binary files /dev/null and b/libs/txw2-2.3.8.jar differ diff --git a/libs/uap-java-1.5.4.jar b/libs/uap-java-1.5.4.jar new file mode 100644 index 0000000..a9351f2 Binary files /dev/null and b/libs/uap-java-1.5.4.jar differ diff --git a/libs/unbescape-1.1.6.RELEASE.jar b/libs/unbescape-1.1.6.RELEASE.jar new file mode 100644 index 0000000..10e4da5 Binary files /dev/null and b/libs/unbescape-1.1.6.RELEASE.jar differ diff --git a/libs/velocity-engine-core-2.3.jar b/libs/velocity-engine-core-2.3.jar new file mode 100644 index 0000000..879a7b4 Binary files /dev/null and b/libs/velocity-engine-core-2.3.jar differ diff --git a/libs/woodstox-core-6.5.1.jar b/libs/woodstox-core-6.5.1.jar new file mode 100644 index 0000000..b22b384 Binary files /dev/null and b/libs/woodstox-core-6.5.1.jar differ diff --git a/libs/xalan-2.7.3.jar b/libs/xalan-2.7.3.jar new file mode 100644 index 0000000..7085480 Binary files /dev/null and b/libs/xalan-2.7.3.jar differ diff --git a/libs/xercesImpl-2.12.2.jar b/libs/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/libs/xercesImpl-2.12.2.jar differ diff --git a/local_jars/jakarta.annotation-api-1.3.5.jar b/local_jars/jakarta.annotation-api-1.3.5.jar new file mode 100644 index 0000000..606d992 Binary files /dev/null and b/local_jars/jakarta.annotation-api-1.3.5.jar differ diff --git a/local_jars/jakarta.transaction-api-1.3.3.jar b/local_jars/jakarta.transaction-api-1.3.3.jar new file mode 100644 index 0000000..643303f Binary files /dev/null and b/local_jars/jakarta.transaction-api-1.3.3.jar differ diff --git a/local_jars/spring-boot-starter-tomcat-2.7.17.jar b/local_jars/spring-boot-starter-tomcat-2.7.17.jar new file mode 100644 index 0000000..f3be8ed Binary files /dev/null and b/local_jars/spring-boot-starter-tomcat-2.7.17.jar differ diff --git a/local_jars/tomcat-embed-core-9.0.82.jar b/local_jars/tomcat-embed-core-9.0.82.jar new file mode 100644 index 0000000..4e84690 Binary files /dev/null and b/local_jars/tomcat-embed-core-9.0.82.jar differ diff --git a/local_jars/tomcat-embed-websocket-9.0.82.jar b/local_jars/tomcat-embed-websocket-9.0.82.jar new file mode 100644 index 0000000..9b7cc99 Binary files /dev/null and b/local_jars/tomcat-embed-websocket-9.0.82.jar differ diff --git a/local_jars/validation-api-2.0.1.Final.jar b/local_jars/validation-api-2.0.1.Final.jar new file mode 100644 index 0000000..2368e10 Binary files /dev/null and b/local_jars/validation-api-2.0.1.Final.jar differ diff --git a/local_jars/xml-apis-1.4.01.jar b/local_jars/xml-apis-1.4.01.jar new file mode 100644 index 0000000..4673346 Binary files /dev/null and b/local_jars/xml-apis-1.4.01.jar differ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..28056c5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "eactive-portal", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/script/portal/mysql/data.sql b/script/portal/mysql/data.sql new file mode 100644 index 0000000..4b4c616 --- /dev/null +++ b/script/portal/mysql/data.sql @@ -0,0 +1,90 @@ +insert into PT_CODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013' ,'회원상태', '회원 가입 신청/승인/삭제를 위한 상태 구분','Y', '2022-11-24 00:35:10','SYSTEM', '2022-11-24 00:35:10','SYSTEM'); + +insert into PT_CODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','비밀번호 힌트','비밀번호 힌트 구분코드','Y','2022-11-24 00:35:12','SYSTEM','2022-11-24 00:35:12','SYSTEM'); + +insert into PT_CODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) + values ('COM101','게시판유형','게시판 유형 구분코드','Y','2022-11-24 00:35:23','SYSTEM','2022-11-24 00:35:23','SYSTEM'); + + + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','ACTIVE','활성화','활성화 상태','Y','2022-11-24 00:35:42','SYSTEM','2022-11-24 00:35:42','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','DELETED','삭제','삭제 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','INACTIVE','비활성화','비활성화 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','LOCKED','잠김','잠김 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','WAITING','가입승인 대기','가입승인 대기 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P01','가장 기억에 남는 장소는?','가장 기억에 남는 장소는?','Y','2022-11-24 00:35:46','SYSTEM','2022-11-24 00:35:46','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P02','나의 좌우명은?','나의 좌우명은?','Y','2022-11-24 00:35:46','SYSTEM','2022-11-24 00:35:46','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P03','나의 보물 제1호는?','나의 보물 제1호는?','Y','2022-11-24 00:35:46','SYSTEM','2022-11-24 00:35:46','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P04','가장 기억에 남는 선생님 성함은?','가장 기억에 남는 선생님 성함은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P05','다른 사람은 모르는 나만의 신체비밀은?','다른 사람은 모르는 나만의 신체비밀은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P06','오래도록 기억하고 싶은 날짜는?','오래도록 기억하고 싶은 날짜는?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P07','받았던 선물 중 기억에 남는 독특한 선물은?','받았던 선물 중 기억에 남는 독특한 선물은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P08','가장 생각나는 친구 이름은?','가장 생각나는 친구 이름은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P09','인상 깊게 읽은 책 이름은?','인상 깊게 읽은 책 이름은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P10','내가 존경하는 인물은?','내가 존경하는 인물은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P11','나의 노래방 애창곡은?','나의 노래방 애창곡은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P12','가장 감명깊게 본 영화는?','가장 감명깊게 본 영화는?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P13','좋아하는 스포츠팀 이름은?','좋아하는 스포츠팀 이름은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM101','BBST01','통합게시판','통합게시판','Y','2022-11-24 00:36:42','SYSTEM','2022-11-24 00:36:42','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM101','BBST02','블로그형게시판','블로그형게시판','Y','2022-11-24 00:36:42','SYSTEM','2022-11-24 00:36:42','SYSTEM'); + +insert into PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM101','BBST03','방명록','방명록','Y','2022-11-24 00:36:42','SYSTEM','2022-11-24 00:36:42','SYSTEM'); + + +insert into PT_BOARD_MASTER (BOARD_ID, BOARD_NAME, BOARD_DESC, BOARD_TYPE, REPLY_POSBL_AT, FILE_ATCH_POSBL_AT, + ATCH_POSBL_FILE_NUMBER, ATCH_POSBL_FILE_SIZE, USE_AT, REGISTERED_BY, + REGISTERED_ON) +values ('BBSMSTR_000000000000', '공지사항', '공지사항', 'BBST01', 'N', 'Y', 3, 2048576, 'Y', 'SYSTEM', now()); + +insert into PT_ID (TABLE_NAME, NEXT_ID) values ('BBS_ID', 10); +insert into PT_ID (TABLE_NAME, NEXT_ID) values ('FILE_ID', 1); +insert into PT_ID (TABLE_NAME, NEXT_ID) values ('BOARD_AUTH_ID', 1); +insert into PT_ID (TABLE_NAME, NEXT_ID) values ('NTT_ID', 1); +insert into PT_ID (TABLE_NAME, NEXT_ID) values ('FAQ_ID', 1); +insert into PT_ID (TABLE_NAME, NEXT_ID) values ('APPROVAL_ID', 1); + + + diff --git a/script/portal/mysql/portal.sql b/script/portal/mysql/portal.sql new file mode 100644 index 0000000..a29bab8 --- /dev/null +++ b/script/portal/mysql/portal.sql @@ -0,0 +1,540 @@ +CREATE DATABASE portal character set utf8mb4 collate utf8mb4_unicode_ci; +use portal; + +CREATE TABLE PT_ID +( + TABLE_NAME VARCHAR(36) NOT NULL, + NEXT_ID NUMERIC(30) NULL, + CONSTRAINT PT_ID_PK PRIMARY KEY (TABLE_NAME) +); + + +CREATE TABLE PT_CODE +( + CODE_ID VARCHAR(6) NOT NULL, + CODE_ID_NAME VARCHAR(60) NULL, + CODE_ID_DC VARCHAR(200) NULL, + USE_AT VARCHAR(1) NULL, + REGISTERED_ON DATETIME NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_CODE_PK PRIMARY KEY (CODE_ID) +); + + +CREATE TABLE PT_DETAIL_CODE +( + CODE_ID VARCHAR(6) NOT NULL, + CODE VARCHAR(15) NOT NULL, + CODE_VALUE VARCHAR(4000) NULL, + CODE_DC VARCHAR(200) NULL, + USE_AT VARCHAR(1) NULL, + REGISTERED_ON DATETIME NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_DETAIL_CODE_PK PRIMARY KEY (CODE_ID, CODE), + CONSTRAINT PT_DETAIL_CODE_FK1 FOREIGN KEY (CODE_ID) REFERENCES PT_CODE (CODE_ID) +); + + +CREATE TABLE PT_AUTHORITY +( + AUTHOR_CODE VARCHAR(30) NOT NULL, + AUTHOR_NAME VARCHAR(60) NOT NULL, + AUTHOR_DC VARCHAR(200) NULL, + REGISTERED_ON DATETIME NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_AUTHORITY_PK PRIMARY KEY (AUTHOR_CODE) +); + + + +CREATE TABLE PT_USER_SECURITY +( + USER_ESNTL_ID VARCHAR(36) NOT NULL, + MBER_TY_CODE VARCHAR(5) NULL, + AUTHOR_CODE VARCHAR(30) NOT NULL, + CONSTRAINT PT_USER_SECURITY_PK PRIMARY KEY (USER_ESNTL_ID) +); + + +CREATE TABLE PT_BOARD_MASTER +( + BOARD_ID VARCHAR(36) NOT NULL, + BOARD_NAME VARCHAR(255) NOT NULL, + BOARD_DESC VARCHAR(2400) NULL, + BOARD_TYPE VARCHAR(6) NOT NULL, + REPLY_POSBL_AT VARCHAR(1) NULL, + FILE_ATCH_POSBL_AT VARCHAR(1) NOT NULL, + ATCH_POSBL_FILE_NUMBER NUMERIC(2) NOT NULL, + ATCH_POSBL_FILE_SIZE NUMERIC(8) NULL, + USE_AT VARCHAR(1) NOT NULL, + TMPLAT_ID VARCHAR(20) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + CONSTRAINT PT_BOARD_MASTER_PK PRIMARY KEY (BOARD_ID) +); + + +CREATE TABLE PT_FILE +( + FILE_ID VARCHAR(36) NOT NULL, + USE_AT VARCHAR(1) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + CONSTRAINT PT_FILE_PK PRIMARY KEY (FILE_ID) +); + +CREATE TABLE PT_FILE_DETAIL +( + FILE_ID VARCHAR(36) NOT NULL, + FILE_SN NUMERIC(10) NOT NULL, + ORIGNL_FILE_NAME VARCHAR(255) NULL, + FILE_EXTSN VARCHAR(36) NULL, + FILE_CN LONGTEXT NULL, + FILE_SIZE NUMERIC(8) NULL, + CONSTRAINT PT_FILE_PK PRIMARY KEY (FILE_ID, FILE_SN), + CONSTRAINT PT_FILE_FK FOREIGN KEY (FILE_ID) REFERENCES PT_FILE (FILE_ID) +); + + +CREATE TABLE PT_BOARD_ARTICLE +( + BOARD_ID VARCHAR(36) NOT NULL, + NTT_NO NUMERIC(20) NULL, + NTT_ID NUMERIC(20) NOT NULL, + NTT_SJ VARCHAR(2000) NULL, + NTT_CN LONGTEXT NULL, + ANSWER_AT VARCHAR(1) NULL, + PARNTSCTT_NO NUMERIC(10) NULL, + ANSWER_LC NUMERIC(8) NULL, + SORT_ORDR NUMERIC(8) NULL, + RDCNT NUMERIC(10) NULL, + USE_AT VARCHAR(1) NOT NULL, + NTCE_BGNDE VARCHAR(20) NULL, + NTCE_ENDDE VARCHAR(20) NULL, + NTCR_ID VARCHAR(36) NULL, + NTCR_NAME VARCHAR(36) NULL, + PASSWORD VARCHAR(200) NULL, + FILE_ID VARCHAR(20) NULL, + NOTICE_AT VARCHAR(1) NULL, + SJ_BOLD_AT VARCHAR(1) NULL, + SECRET_AT VARCHAR(1) NULL, + REGISTERED_ON DATETIME NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_BOARD_ARTICLE_PK PRIMARY KEY (NTT_ID, BOARD_ID), + CONSTRAINT PT_BOARD_ARTICLE_FK1 FOREIGN KEY (BOARD_ID) REFERENCES PT_BOARD_MASTER (BOARD_ID), + CONSTRAINT PT_BOARD_ARTICLE_FK2 FOREIGN KEY (FILE_ID) REFERENCES PT_FILE (FILE_ID) +); + +CREATE TABLE PT_FAQ +( + FAQ_ID VARCHAR(36) NOT NULL, + TITLE VARCHAR(255) NULL, + QUESTION VARCHAR(2500) NULL, + ANSWER VARCHAR(2500) NULL, + RDCNT NUMERIC(10) NULL, + FILE_ID VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_FAQ_PK PRIMARY KEY (FAQ_ID), + CONSTRAINT PT_FAQ_FK FOREIGN KEY (FILE_ID) REFERENCES PT_FILE (FILE_ID) ON DELETE SET NULL +); + + +CREATE TABLE REVINFO +( + REV INT AUTO_INCREMENT PRIMARY KEY, + REVTSTMP BIGINT NULL +); + + +CREATE TABLE PT_USER +( + ESNTL_ID VARCHAR(36) NOT NULL, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + MOBILE_PHONE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + LOCK_AT VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE DATETIME NULL, + LAST_CHANGE_PASSWORD_DATE DATETIME NULL, + REGISTERED_ON DATETIME null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON datetime null, + LAST_MODIFIED_BY VARCHAR(36) null, + PRIMARY KEY (ESNTL_ID) +); +CREATE UNIQUE INDEX PT_USER_PK ON PT_USER + ( + USER_ID + ) +; + +CREATE TABLE PT_USER_AUD +( + ESNTL_ID VARCHAR(36) NOT NULL, + REV integer not null, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + MOBILE_PHONE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + LOCK_AT VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE DATETIME NULL, + LAST_CHANGE_PASSWORD_DATE DATETIME NULL, + REGISTERED_ON DATETIME null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON datetime null, + LAST_MODIFIED_BY VARCHAR(36) null, + REVTYPE tinyint, + PRIMARY KEY (ESNTL_ID, REV) + +); + + +CREATE TABLE PT_ENT_USER +( + ESNTL_ID VARCHAR(36) NOT NULL, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + IP_ADDRESS VARCHAR(15) NULL, + MOBILE_PHONE VARCHAR(15) NULL, + OFFICE_PHONE VARCHAR(15) NULL, + COMPANY_NAME VARCHAR(15) NULL, + CEO_NAME VARCHAR(15) NULL, + BIZRNO VARCHAR(15) NULL, + JURIRNO VARCHAR(15) NULL, + ZIP VARCHAR(6) NULL, + ADRES VARCHAR(100) NULL, + DETAIL_ADRES VARCHAR(100) NULL, + FXNUM VARCHAR(36) NULL, + INDUTY_CODE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + GROUP_ID VARCHAR(36) NULL, + ENTRPRS_SE_CODE VARCHAR(15) NULL, + LOCK_AT VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE DATETIME NULL, + LAST_CHANGE_PASSWORD_DATE DATETIME NULL, + REGISTERED_ON DATETIME null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON datetime null, + LAST_MODIFIED_BY VARCHAR(36) null, + PRIMARY KEY (ESNTL_ID) +); +CREATE UNIQUE INDEX PT_ENT_USER_PK ON PT_ENT_USER + ( + USER_ID + ) +; + +CREATE TABLE PT_ENT_USER_AUD +( + ESNTL_ID VARCHAR(36) NOT NULL, + REV integer not null, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + IP_ADDRESS VARCHAR(15) NULL, + MOBILE_PHONE VARCHAR(15) NULL, + OFFICE_PHONE VARCHAR(15) NULL, + COMPANY_NAME VARCHAR(15) NULL, + CEO_NAME VARCHAR(15) NULL, + BIZRNO VARCHAR(15) NULL, + JURIRNO VARCHAR(15) NULL, + ZIP VARCHAR(6) NULL, + ADRES VARCHAR(100) NULL, + DETAIL_ADRES VARCHAR(100) NULL, + FXNUM VARCHAR(36) NULL, + INDUTY_CODE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + GROUP_ID VARCHAR(36) NULL, + ENTRPRS_SE_CODE VARCHAR(15) NULL, + LOCK_AT VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE DATETIME NULL, + LAST_CHANGE_PASSWORD_DATE DATETIME NULL, + REGISTERED_ON DATETIME null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON datetime null, + LAST_MODIFIED_BY VARCHAR(36) null, + REVTYPE tinyint, + PRIMARY KEY (ESNTL_ID, REV) + +); + + +CREATE TABLE PT_APPROVAL +( + ID BIGINT PRIMARY KEY, + APPROVAL_TYPE VARCHAR(32) NULL, + BODY LONGTEXT NULL, + ENDED_ON DATETIME NULL, + EVENT VARCHAR(255) NULL, + REQUESTER_ID VARCHAR(36) NULL, + STATUS VARCHAR(32) NULL, + TARGET_ID VARCHAR(36) NULL, + TITLE VARCHAR(255) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL +); + +CREATE TABLE PT_APPROVAL_APPROVER +( + APPROVAL_ID BIGINT NOT NULL, + ORDINAL BIGINT NOT NULL, + APPROVED_ON DATETIME NULL, + MESSAGE VARCHAR(255) NULL, + STATUS VARCHAR(255) NULL, + USER_ID VARCHAR(36) NULL, + PRIMARY KEY (APPROVAL_ID, ORDINAL), + CONSTRAINT FK_APPROVAL_APPROVER1 + FOREIGN KEY (APPROVAL_ID) REFERENCES PT_APPROVAL (ID) +); + +CREATE TABLE PT_ROUTE_INFO +( + ID VARCHAR(36) NOT NULL PRIMARY KEY, + API_PATH VARCHAR(512) NULL, + DESCRIPTION LONGTEXT NULL, + LOG_CONTENT_ENCODE_YN VARCHAR(1) NULL, + LOG_LEVEL VARCHAR(1) NULL, + NAME VARCHAR(256) NOT NULL, + ORDER_NO INT NULL, + PATH VARCHAR(256) NOT NULL, + METHOD VARCHAR(32) NULL, + META_DATA_STR LONGTEXT NULL, + RESPONSE_TYPE VARCHAR(32) NULL, + MOCK_URL VARCHAR(255) NULL, + SAMPLE_RESPONSE LONGTEXT NULL, + STATUS VARCHAR(32) NULL, + TYPE VARCHAR(2) NULL, + URI VARCHAR(512) NOT NULL, + USE_YN VARCHAR(1) NULL, + FILE_ID VARCHAR(36) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL +); + +CREATE TABLE PT_API_KEY +( + ID VARCHAR(36) NOT NULL PRIMARY KEY, + OWNER VARCHAR(255) NULL, + NAME VARCHAR(255) NULL, + ENV VARCHAR(32) NULL, + CLIENT_ID VARCHAR(255) NULL, + CLIENT_SECRET VARCHAR(255) NULL, + REDIRECT_URL VARCHAR(255) NULL, + RESPONSE_TYPE VARCHAR(255) NULL, + SCOPE VARCHAR(2000) NULL, + STATUS VARCHAR(255) NULL, + DESCRIPTION VARCHAR(2000) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL +); + + +CREATE TABLE PT_API_KEY_API +( + API_KEY_ID VARCHAR(36) NOT NULL, + API_ID VARCHAR(36) NOT NULL, + CONSTRAINT FK_API_KEY_API1 FOREIGN KEY (API_KEY_ID) REFERENCES PT_API_KEY (ID), + CONSTRAINT FK_API_KEY_API2 FOREIGN KEY (API_ID) REFERENCES PT_ROUTE_INFO (ID) +); + +CREATE TABLE PT_API_KEY_AUD +( + ID VARCHAR(36) NOT NULL, + REV integer not null, + REVTYPE tinyint, + OWNER VARCHAR(255) NULL, + NAME VARCHAR(255) NULL, + ENV VARCHAR(32) NULL, + CLIENT_ID VARCHAR(255) NULL, + CLIENT_SECRET VARCHAR(255) NULL, + REDIRECT_URL VARCHAR(255) NULL, + RESPONSE_TYPE VARCHAR(255) NULL, + SCOPE VARCHAR(2000) NULL, + STATUS VARCHAR(255) NULL, + DESCRIPTION VARCHAR(2000) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + PRIMARY KEY (ID, REV) +); + + +CREATE TABLE PT_API_KEY_API_AUD +( + API_KEY_ID VARCHAR(36) NOT NULL, + API_ID VARCHAR(36) NOT NULL, + REV integer not null, + REVTYPE tinyint, + PRIMARY KEY (API_KEY_ID, API_ID, REV) +); + + + +CREATE TABLE PT_GROUP_INFO +( + ID VARCHAR(36) NOT NULL PRIMARY KEY, + DESCRIPTION VARCHAR(512) NULL, + DESCRIPTION_EN VARCHAR(512) NULL, + NAME VARCHAR(256) NOT NULL, + NAME_EN VARCHAR(256) NULL, + SPEC LONGTEXT NULL, + STATUS VARCHAR(32) NULL, + USE_YN VARCHAR(1) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL +); + + +CREATE TABLE PT_GROUP_ROUTE_INFO +( + GROUP_ID VARCHAR(36) NOT NULL, + ROUTE_ID VARCHAR(128) NOT NULL, + CONSTRAINT FK_GROUP_ROUTE_INFO1 FOREIGN KEY (GROUP_ID) REFERENCES PT_GROUP_INFO (ID), + CONSTRAINT FK_GROUP_ROUTE_INFO2 FOREIGN KEY (ROUTE_ID) REFERENCES PT_ROUTE_INFO (ID) +); + + +CREATE TABLE PT_AGREEMENTS +( + AGREEMENTS_TYPE VARCHAR(36) NOT NULL, + REVISION INT NOT NULL, + AGREEMENTS_NAME VARCHAR(100) NOT NULL, + AGREEMENTS_CONTENTS LONGTEXT NULL, + STATUS VARCHAR(36) NULL, + PUBLISHED_ON DATETIME NULL, + SCHEDULED_ON DATETIME NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + primary key (AGREEMENTS_TYPE, REVISION) +); + +CREATE TABLE PT_MESSAGE_TEMPLATE +( + MESSAGE_KEY VARCHAR(32) NOT NULL, + MESSAGE_TYPE VARCHAR(16) NOT NULL, + SUBJECT VARCHAR(100) NOT NULL, + CONTENTS LONGTEXT NULL, + USE_YN VARCHAR(1) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + primary key (MESSAGE_KEY, MESSAGE_TYPE) +); + +CREATE TABLE PT_MESSAGE_RECIPIENT +( + MESSAGE_KEY VARCHAR(32) not null, + MESSAGE_TYPE VARCHAR(16) not null, + ESNTL_ID VARCHAR(36) not null, + constraint PK_MESSAGE_RECIPIENT PRIMARY KEY (MESSAGE_KEY, MESSAGE_TYPE, ESNTL_ID) +) +; + +CREATE TABLE PT_TOKEN +( + TOKEN VARCHAR(255) NOT NULL, + EMAIL VARCHAR(255) NOT NULL, + EXPIRES_AT DATETIME NOT NULL, + primary key (TOKEN) +); + +CREATE TABLE PT_TWO_FACTOR_AUTH +( + RECIPIENT VARCHAR(255) NOT NULL, + AUTH_NUMBER VARCHAR(255), + EXPIRES_AT DATETIME, + PRIMARY KEY (RECIPIENT) +); + + +CREATE TABLE PT_BOARD_AUTHORITY +( + AUTHORITY_ID VARCHAR(36) NOT NULL, + BBS_ID VARCHAR(36) NOT NULL, + AUTHORITY_CODE VARCHAR(36) NULL, + ESNTL_ID VARCHAR(36) NULL, + READ_YN VARCHAR(1) NOT NULL, + WRITE_YN VARCHAR(1) NOT NULL, + MODIFY_YN VARCHAR(1) NOT NULL, + DELETE_YN VARCHAR(1) NOT NULL, + ADMIN_YN VARCHAR(1) NOT NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL, + primary key (AUTHORITY_ID) +); + +CREATE TABLE PT_CHART +( + id VARCHAR(36) PRIMARY KEY, + name VARCHAR(255), + query LONGTEXT, + options LONGTEXT, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON DATETIME NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON DATETIME NULL +); + + + +CREATE VIEW PT_USER_VIEW + (ESNTL_ID, USER_ID, PASSWORD, USER_NAME, USER_SE) +AS +SELECT ESNTL_ID, + USER_ID, + PASSWORD, + USER_NAME, + 'USR' AS USER_SE +FROM PT_USER +UNION ALL +SELECT ESNTL_ID, + USER_ID, + PASSWORD, + USER_NAME, + 'ENT' AS USER_SE +FROM PT_ENT_USER +ORDER BY ESNTL_ID; diff --git a/script/portal/oracle/1_portal.sql b/script/portal/oracle/1_portal.sql new file mode 100644 index 0000000..520b32d --- /dev/null +++ b/script/portal/oracle/1_portal.sql @@ -0,0 +1,518 @@ +create table DVPOWN.PT_USER +( + ESNTL_ID VARCHAR2(36) not null + constraint PT_USER_PK + primary key, + USER_ID VARCHAR2(256) not null, + USER_NAME VARCHAR2(60) not null, + PASSWORD VARCHAR2(200) not null, + PASSWORD_HINT VARCHAR2(100), + PASSWORD_CNSR VARCHAR2(100), + MBTLNUM VARCHAR2(20), + EMPLYR_STTUS_CODE VARCHAR2(15) not null, + LOCK_AT CHAR, + LOCK_CNT NUMBER(3), + LAST_LOCK_DATE TIMESTAMP(6), + LAST_CHANGE_PASSWORD_DATE TIMESTAMP(6), + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36) +) +; + +create unique index DVPOWN.PT_USER_UNIQUE_IDX + on DVPOWN.PT_USER (USER_ID) +; + +create table DVPOWN.PT_USER_AUD +( + ESNTL_ID VARCHAR2(36) not null, + REV NUMBER(10) not null, + USER_ID VARCHAR2(256) not null, + USER_NAME VARCHAR2(60), + PASSWORD VARCHAR2(200), + PASSWORD_HINT VARCHAR2(100), + PASSWORD_CNSR VARCHAR2(100), + MBTLNUM VARCHAR2(20), + EMPLYR_STTUS_CODE VARCHAR2(15), + LOCK_AT CHAR, + LOCK_CNT NUMBER(3), + LAST_LOCK_DATE TIMESTAMP(6), + LAST_CHANGE_PASSWORD_DATE TIMESTAMP(6), + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + REVTYPE NUMBER(3), + constraint PT_USER_AUD_PK + primary key (ESNTL_ID, REV) +) +; + +create table DVPOWN.PT_ENT_USER +( + ESNTL_ID VARCHAR2(36) not null + constraint PT_ENT_USER_PK + primary key, + USER_ID VARCHAR2(256) not null + constraint PT_ENT_USER_UNIQUE_IDX + unique, + USER_NAME VARCHAR2(50) not null, + PASSWORD VARCHAR2(200) not null, + STATUS VARCHAR2(15), + MOBILE_PHONE VARCHAR2(20), + OFFICE_PHONE VARCHAR2(20), + COMPANY_NAME VARCHAR2(60), + CEO_NAME VARCHAR2(50), + BIZRNO VARCHAR2(10), + JURIRNO VARCHAR2(13), + ZIP VARCHAR2(6), + ADRES VARCHAR2(100), + DETAIL_ADRES VARCHAR2(100), + FXNUM VARCHAR2(20), + ENTRPRS_SE_CODE CHAR(8), + INDUTY_CODE CHAR, + PASSWORD_HINT VARCHAR2(100), + PASSWORD_CNSR VARCHAR2(100), + LOCK_AT CHAR, + LOCK_CNT NUMBER(3), + LAST_LOCK_DATE TIMESTAMP(6), + LAST_CHANGE_PASSWORD_DATE TIMESTAMP(6), + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36) +) +; + +create table DVPOWN.PT_ENT_USER_AUD +( + ESNTL_ID VARCHAR2(36) not null, + REV NUMBER(10) not null, + USER_ID VARCHAR2(256), + USER_NAME VARCHAR2(50), + PASSWORD VARCHAR2(200), + STATUS VARCHAR2(15), + MOBILE_PHONE VARCHAR2(20), + OFFICE_PHONE VARCHAR2(20), + COMPANY_NAME VARCHAR2(60), + CEO_NAME VARCHAR2(50), + BIZRNO VARCHAR2(10), + JURIRNO VARCHAR2(13), + ZIP VARCHAR2(6), + ADRES VARCHAR2(100), + DETAIL_ADRES VARCHAR2(100), + FXNUM VARCHAR2(20), + ENTRPRS_SE_CODE CHAR(8), + INDUTY_CODE CHAR, + PASSWORD_HINT VARCHAR2(100), + PASSWORD_CNSR VARCHAR2(100), + LOCK_AT CHAR, + LOCK_CNT NUMBER(3), + LAST_LOCK_DATE TIMESTAMP(6), + LAST_CHANGE_PASSWORD_DATE TIMESTAMP(6), + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + REVTYPE NUMBER(3) not null, + primary key (ESNTL_ID, REV) +) +; + +create table DVPOWN.PT_APPROVAL +( + ID NUMBER(19) not null, + APPROVAL_TYPE VARCHAR2(32), + BODY CLOB, + ENDED_ON TIMESTAMP(6), + REQUESTER_ID VARCHAR2(36), + STATUS VARCHAR2(32), + TARGET_ID VARCHAR2(36), + TITLE VARCHAR2(255), + REGISTERED_BY VARCHAR2(36), + REGISTERED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + primary key (ID) +) +; + +create table DVPOWN.PT_APPROVAL_APPROVER +( + APPROVAL_ID NUMBER(19) not null + constraint FK_APPROVAL_APPROVER + references DVPOWN.PT_APPROVAL, + ORDINAL NUMBER(19) not null, + APPROVED_ON TIMESTAMP(6), + MESSAGE VARCHAR2(255), + STATUS VARCHAR2(255), + USER_ID VARCHAR2(36), + primary key (APPROVAL_ID, ORDINAL) +) +; + +create table DVPOWN.PT_ROUTE_INFO +( + ID VARCHAR2(36) not null, + API_PATH VARCHAR2(512), + DESCRIPTION CLOB, + LOG_CONTENT_ENCODE_YN VARCHAR2(1), + LOG_LEVEL VARCHAR2(1), + NAME VARCHAR2(256) not null, + ORDER_NO NUMBER(10), + PATH VARCHAR2(256) not null, + METHOD VARCHAR2(32), + META_DATA_STR CLOB, + RESPONSE_TYPE VARCHAR2(32) NULL, + SAMPLE_RESPONSE CLOB, + STATUS VARCHAR2(32), + TYPE VARCHAR2(2), + URI VARCHAR2(512) not null, + USE_YN VARCHAR2(1), + FILE_ID VARCHAR2(20), + REGISTERED_BY VARCHAR2(36), + REGISTERED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + primary key (ID) +) +; + +create table DVPOWN.PT_API_KEY +( + ID VARCHAR2(36) not null, + OWNER VARCHAR2(255), + NAME VARCHAR2(255), + ENV VARCHAR2(32), + CLIENT_ID VARCHAR2(255), + CLIENT_SECRET VARCHAR2(255), + REDIRECT_URL VARCHAR2(255), + RESPONSE_TYPE VARCHAR2(255), + SCOPE VARCHAR2(2000), + STATUS VARCHAR2(255), + DESCRIPTION VARCHAR2(2000), + REGISTERED_BY VARCHAR2(36), + REGISTERED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + primary key (ID) +) +; + +create table DVPOWN.PT_API_KEY_API +( + API_KEY_ID VARCHAR2(36) not null + constraint FK_API_KEY_API1 + references DVPOWN.PT_API_KEY, + API_ID VARCHAR2(36) not null + constraint FK_API_KEY_API2 + references DVPOWN.PT_ROUTE_INFO +) +; + +create table DVPOWN.PT_AGREEMENTS +( + AGREEMENTS_TYPE VARCHAR2(20) not null, + REVISION NUMBER(10) not null, + AGREEMENTS_NAME VARCHAR2(100) not null, + AGREEMENTS_CONTENTS CLOB, + STATUS VARCHAR2(20), + PUBLISHED_ON TIMESTAMP(6), + SCHEDULED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + REGISTERED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + primary key (AGREEMENTS_TYPE, REVISION) +) +; + +create table DVPOWN.PT_MESSAGE_TEMPLATE +( + MESSAGE_KEY VARCHAR2(32) not null, + MESSAGE_TYPE VARCHAR2(16) not null, + SUBJECT VARCHAR2(100) not null, + CONTENTS CLOB, + USE_YN VARCHAR2(1), + REGISTERED_BY VARCHAR2(36), + REGISTERED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + primary key (MESSAGE_KEY, MESSAGE_TYPE) +) +; + + +CREATE TABLE DVPOWN.PT_MESSAGE_RECIPIENT +( + MESSAGE_KEY VARCHAR2(32) not null, + MESSAGE_TYPE VARCHAR2(16) not null, + ESNTL_ID VARCHAR2(36) not null, + constraint PK_MESSAGE_RECIPIENT PRIMARY KEY (MESSAGE_KEY, MESSAGE_TYPE, ESNTL_ID) +) +; + +create table DVPOWN.PT_TOKEN +( + TOKEN VARCHAR2(255) not null + primary key, + EMAIL VARCHAR2(255) not null, + EXPIRES_AT TIMESTAMP(6) not null +) +; + +create table DVPOWN.PT_BOARD_AUTHORITY +( + AUTHORITY_ID VARCHAR2(20) not null + primary key, + BBS_ID VARCHAR2(20) not null, + AUTHORITY_CODE VARCHAR2(36), + ESNTL_ID VARCHAR2(36), + READ_YN VARCHAR2(1) not null, + WRITE_YN VARCHAR2(1) not null, + MODIFY_YN VARCHAR2(1) not null, + DELETE_YN VARCHAR2(1) not null, + ADMIN_YN VARCHAR2(1) not null, + REGISTERED_BY VARCHAR2(36), + REGISTERED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6) +) +; + +create table DVPOWN.COMTECOPSEQ +( + TABLE_NAME VARCHAR2(20) not null + constraint COMTECOPSEQ_PK + primary key, + NEXT_ID NUMBER(30) +) +; + +create table DVPOWN.COMTCCMMNCODE +( + CODE_ID VARCHAR2(6) not null + constraint COMTCCMMNCODE_PK + primary key, + CODE_ID_NAME VARCHAR2(60), + CODE_ID_DC VARCHAR2(200), + USE_AT CHAR, + CL_CODE CHAR(3), + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36) +) +; + +create index DVPOWN.COMTCCMMNCODE_I01 + on DVPOWN.COMTCCMMNCODE (CL_CODE) +; + +create table DVPOWN.COMTCCMMNDETAILCODE +( + CODE_ID VARCHAR2(6) not null + constraint COMTCCMMNDETAILCODE_FK1 + references DVPOWN.COMTCCMMNCODE, + CODE VARCHAR2(15) not null, + CODE_VALUE VARCHAR2(4000) not null, + CODE_DC VARCHAR2(200), + USE_AT CHAR, + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + constraint COMTCCMMNDETAILCODE_PK + primary key (CODE_ID, CODE) +) +; + +create index DVPOWN.COMTCCMMNDETAILCODE_I01 + on DVPOWN.COMTCCMMNDETAILCODE (CODE_ID) +; + +create table DVPOWN.COMTNAUTHORINFO +( + AUTHOR_CODE VARCHAR2(30) not null + constraint COMTNAUTHORINFO_PK + primary key, + AUTHOR_NAME VARCHAR2(60) not null, + AUTHOR_DC VARCHAR2(200), + AUTHOR_CREAT_DE TIMESTAMP(6) +) +; + +create table DVPOWN.COMTNEMPLYRSCRTYESTBS +( + SCRTY_DTRMN_TRGET_ID VARCHAR2(36) not null, + MBER_TY_CODE CHAR(5), + AUTHOR_CODE VARCHAR2(30) not null +) +; + +create index DVPOWN.COMTNEMPLYRSCRTYESTBS_I04 + on DVPOWN.COMTNEMPLYRSCRTYESTBS (AUTHOR_CODE) +; + +create table DVPOWN.COMTNBBSMASTER +( + BBS_ID CHAR(20) not null + constraint COMTNBBSMASTER_PK + primary key, + BBS_NAME VARCHAR2(255) not null, + BBS_INTRCN VARCHAR2(2400), + BBS_TY_CODE CHAR(6) not null, + REPLY_POSBL_AT CHAR, + FILE_ATCH_POSBL_AT CHAR not null, + ATCH_POSBL_FILE_NUMBER NUMBER(2) not null, + ATCH_POSBL_FILE_SIZE NUMBER(8), + USE_AT CHAR not null, + TMPLAT_ID CHAR(20), + CMMNTY_ID CHAR(20), + REGISTERED_BY VARCHAR2(36), + REGISTERED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + BLOG_ID CHAR(20), + BLOG_AT CHAR(2) +) +; + +create table DVPOWN.COMTNFILE +( + ATCH_FILE_ID CHAR(20) not null + constraint COMTNFILE_PK + primary key, + CREAT_DT TIMESTAMP(6) not null, + USE_AT CHAR +) +; + +create table DVPOWN.COMTNFILEDETAIL +( + ATCH_FILE_ID CHAR(20) not null + constraint COMTNFILEDETAIL_FK1 + references DVPOWN.COMTNFILE, + FILE_SN NUMBER(10) not null, + ORIGNL_FILE_NAME VARCHAR2(255), + FILE_EXTSN VARCHAR2(20), + FILE_CN CLOB, + FILE_SIZE NUMBER(8), + constraint COMTNFILEDETAIL_PK + primary key (ATCH_FILE_ID, FILE_SN) +) +; + +create index DVPOWN.COMTNFILEDETAIL_I01 + on DVPOWN.COMTNFILEDETAIL (ATCH_FILE_ID) +; + +create table DVPOWN.COMTNBBS +( + NTT_ID NUMBER(20) not null, + BBS_ID CHAR(20) not null + constraint COMTNBBS_FK1 + references DVPOWN.COMTNBBSMASTER, + NTT_NO NUMBER(20), + NTT_SJ VARCHAR2(2000), + NTT_CN CLOB, + ANSWER_AT CHAR, + PARNTSCTT_NO NUMBER(10), + ANSWER_LC NUMBER(8), + SORT_ORDR NUMBER(8), + RDCNT NUMBER(10), + USE_AT CHAR not null, + NTCE_BGNDE CHAR(20), + NTCE_ENDDE CHAR(20), + NTCR_ID VARCHAR2(36), + NTCR_NAME VARCHAR2(20), + PASSWORD VARCHAR2(200), + ATCH_FILE_ID CHAR(20) + constraint COMTNBBS_FK2 + references DVPOWN.COMTNFILE, + NOTICE_AT CHAR, + SJ_BOLD_AT CHAR, + SECRET_AT CHAR, + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + BLOG_ID CHAR(20), + constraint COMTNBBS_PK + primary key (NTT_ID, BBS_ID) +) +; + +create index DVPOWN.COMTNBBS_I01 + on DVPOWN.COMTNBBS (BBS_ID) +; + +create table DVPOWN.COMTNFAQINFO +( + FAQ_ID CHAR(20) not null + constraint COMTNFAQINFO_PK + primary key, + QESTN_SJ VARCHAR2(255), + QESTN_CN VARCHAR2(2500), + ANSWER_CN VARCHAR2(2500), + RDCNT NUMBER(10), + REGISTERED_ON TIMESTAMP(6), + REGISTERED_BY VARCHAR2(36), + LAST_MODIFIED_ON TIMESTAMP(6), + LAST_MODIFIED_BY VARCHAR2(36), + ATCH_FILE_ID CHAR(20) + constraint COMTNFAQINFO_FK1 + references DVPOWN.COMTNFILE + on delete set null, + QNA_PROCESS_STTUS_CODE CHAR +) +; + +create index DVPOWN.COMTNFAQINFO_I01 + on DVPOWN.COMTNFAQINFO (ATCH_FILE_ID) +; + +create table DVPOWN.PT_TWO_FACTOR_AUTH +( + RECIPIENT VARCHAR2(255) not null + primary key, + AUTH_NUMBER VARCHAR2(255), + EXPIRES_AT TIMESTAMP(6) +) +; + +CREATE table DVPOWN.REVINFO +( + REVTSTMP NUMBER, + REV NUMBER +) +; + + + +CREATE SEQUENCE DVPOWN.HIBERNATE_SEQUENCE; + + +CREATE VIEW DVPOWN.COMVNUSERMASTER + (ESNTL_ID, USER_ID, PASSWORD, USER_NAME, GROUP_ID, USER_SE, ORGNZT_ID) +AS +SELECT ESNTL_ID, + USER_ID, + PASSWORD, + USER_NAME, + GROUP_ID, + 'USR' AS USER_SE, + ORGNZT_ID +FROM PT_USER +UNION ALL +SELECT ESNTL_ID, + USER_ID, + PASSWORD, + USER_NAME, + ' ', + 'ENT' AS USER_SE, + ' ' ORGNZT_ID +FROM PT_ENT_USER +ORDER BY ESNTL_ID; \ No newline at end of file diff --git a/script/portal/oracle/2_comment.sql b/script/portal/oracle/2_comment.sql new file mode 100644 index 0000000..e822298 --- /dev/null +++ b/script/portal/oracle/2_comment.sql @@ -0,0 +1,505 @@ +COMMENT ON TABLE DVPOWN.COMTECOPSEQ IS 'COMTECOPSEQ'; + +COMMENT ON COLUMN DVPOWN.COMTECOPSEQ.TABLE_NAME IS '테이블 이름'; + +COMMENT ON COLUMN DVPOWN.COMTECOPSEQ.NEXT_ID IS '다음 아이디'; + + + +COMMENT ON TABLE DVPOWN.COMTCCMMNCODE IS '공통 코드'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.CODE_ID IS '코드 ID'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.CODE_ID_NAME IS '코드ID 이름'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.CODE_ID_DC IS '코드ID설명'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.USE_AT IS '사용여부'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.CL_CODE IS '분류코드'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.REGISTERED_ON IS '최초등록시점'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.REGISTERED_BY IS '최초등록자ID'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.LAST_MODIFIED_ON IS '최종수정시점'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNCODE.LAST_MODIFIED_BY IS '최종수정자ID'; + + +COMMENT ON TABLE DVPOWN.COMTCCMMNDETAILCODE IS '공통상세코드'; + + + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.CODE_ID IS '코드ID'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.CODE IS '코드'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.CODE_VALUE IS '코드명'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.CODE_DC IS '코드설명'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.USE_AT IS '사용여부'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.REGISTERED_ON IS '최초등록시점'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.REGISTERED_BY IS '최초등록자ID'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.LAST_MODIFIED_ON IS '최종수정시점'; + +COMMENT ON COLUMN DVPOWN.COMTCCMMNDETAILCODE.LAST_MODIFIED_BY IS '최종수정자ID'; + + + COMMENT ON TABLE DVPOWN.COMTNAUTHORINFO IS '권한정보'; + + + +COMMENT ON COLUMN DVPOWN.COMTNAUTHORINFO.AUTHOR_CODE IS '권한코드'; + +COMMENT ON COLUMN DVPOWN.COMTNAUTHORINFO.AUTHOR_NAME IS '권한명'; + +COMMENT ON COLUMN DVPOWN.COMTNAUTHORINFO.AUTHOR_DC IS '권한설명'; + +COMMENT ON COLUMN DVPOWN.COMTNAUTHORINFO.AUTHOR_CREAT_DE IS '권한생성일'; + + + COMMENT ON TABLE DVPOWN.COMTNEMPLYRSCRTYESTBS IS '사용자보안설정'; + + + +COMMENT ON COLUMN DVPOWN.COMTNEMPLYRSCRTYESTBS.SCRTY_DTRMN_TRGET_ID IS '보안설정대상ID'; + +COMMENT ON COLUMN DVPOWN.COMTNEMPLYRSCRTYESTBS.MBER_TY_CODE IS '회원유형코드'; + +COMMENT ON COLUMN DVPOWN.COMTNEMPLYRSCRTYESTBS.AUTHOR_CODE IS '권한코드'; + + + + COMMENT ON TABLE DVPOWN.COMTNBBSMASTER IS '게시판마스터'; + + + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.BBS_ID IS '게시판ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.BBS_NAME IS '게시판명'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.BBS_INTRCN IS '게시판소개'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.BBS_TY_CODE IS '게시판유형코드'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.REPLY_POSBL_AT IS '답장가능여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.FILE_ATCH_POSBL_AT IS '파일첨부가능여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.ATCH_POSBL_FILE_NUMBER IS '첨부가능파일숫자'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.ATCH_POSBL_FILE_SIZE IS '첨부가능파일사이즈'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.USE_AT IS '사용여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.TMPLAT_ID IS '템플릿ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.REGISTERED_BY IS '최초등록자ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.REGISTERED_ON IS '최초등록시점'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.LAST_MODIFIED_BY IS '최종수정자ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.LAST_MODIFIED_ON IS '최종수정시점'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.BLOG_AT IS '블로그 여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.BLOG_ID IS '블로그 ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBSMASTER.CMMNTY_ID IS '커뮤니티ID'; + + + COMMENT ON TABLE DVPOWN.COMTNBBS IS '게시판'; + + + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTT_ID IS '게시물ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.BBS_ID IS '게시판ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTT_NO IS '게시물번호'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTT_SJ IS '게시물제목'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTT_CN IS '게시물내용'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.ANSWER_AT IS '댓글여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.PARNTSCTT_NO IS '부모글번호'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.ANSWER_LC IS '댓글위치'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.SORT_ORDR IS '정렬순서'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.USE_AT IS '사용여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.RDCNT IS '조회수'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTCE_BGNDE IS '게시시작일'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTCE_ENDDE IS '게시 종료일'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTCR_ID IS '게시자 ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NTCR_NAME IS '게시자 이름'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.PASSWORD IS '비밀 번호'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.ATCH_FILE_ID IS '첨부 파일 ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.REGISTERED_ON IS '최초 등록 시점'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.REGISTERED_BY IS '최초등록자ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.LAST_MODIFIED_ON IS '최종수정시점'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.LAST_MODIFIED_BY IS '최종수정자ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.BLOG_ID IS '블로그 ID'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.NOTICE_AT IS '공지사항여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.SECRET_AT IS '비밀글여부'; + +COMMENT ON COLUMN DVPOWN.COMTNBBS.SJ_BOLD_AT IS '제목볼드여부'; + +COMMENT ON TABLE DVPOWN.COMTNFAQINFO IS 'FAQ정보'; + + + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.FAQ_ID IS 'FAQID'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.QESTN_SJ IS '질문제목'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.QESTN_CN IS '질문내용'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.ANSWER_CN IS '답변내용'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.RDCNT IS '조회수'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.REGISTERED_ON IS '최초등록시점'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.REGISTERED_BY IS '최초등록자ID'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.LAST_MODIFIED_ON IS '최종수정시점'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.LAST_MODIFIED_BY IS '최종수정자ID'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.ATCH_FILE_ID IS '첨부파일ID'; + +COMMENT ON COLUMN DVPOWN.COMTNFAQINFO.QNA_PROCESS_STTUS_CODE IS '질의응답처리상태코드'; + + + + +COMMENT ON TABLE DVPOWN.COMTNFILE IS '파일속성'; + + + +COMMENT ON COLUMN DVPOWN.COMTNFILE.ATCH_FILE_ID IS '첨부파일ID'; + +COMMENT ON COLUMN DVPOWN.COMTNFILE.CREAT_DT IS '생성일시'; + +COMMENT ON COLUMN DVPOWN.COMTNFILE.USE_AT IS '사용여부'; + + + + +COMMENT ON TABLE DVPOWN.COMTNFILEDETAIL IS '파일상세정보'; + + + +COMMENT ON COLUMN DVPOWN.COMTNFILEDETAIL.ATCH_FILE_ID IS '첨부파일ID'; + +COMMENT ON COLUMN DVPOWN.COMTNFILEDETAIL.FILE_SN IS '파일순번'; + + +COMMENT ON COLUMN DVPOWN.COMTNFILEDETAIL.ORIGNL_FILE_NAME IS '원파일명'; + +COMMENT ON COLUMN DVPOWN.COMTNFILEDETAIL.FILE_EXTSN IS '파일확장자'; + +COMMENT ON COLUMN DVPOWN.COMTNFILEDETAIL.FILE_CN IS '파일내용'; + +COMMENT ON COLUMN DVPOWN.COMTNFILEDETAIL.FILE_SIZE IS '파일크기'; + + +-- PT_USER +COMMENT ON TABLE PT_USER IS '내부 사용자 정보'; + +-- PT_USER 의 컬럼 +COMMENT ON COLUMN PT_USER.ESNTL_ID IS '기본 키'; +COMMENT ON COLUMN PT_USER.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PT_USER.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PT_USER.PASSWORD IS '비밀번호'; +COMMENT ON COLUMN PT_USER.PASSWORD_HINT IS '비밀번호 힌트'; +COMMENT ON COLUMN PT_USER.PASSWORD_CNSR IS '비밀번호 확인'; +COMMENT ON COLUMN PT_USER.MBTLNUM IS '모바일 번호'; +COMMENT ON COLUMN PT_USER.EMPLYR_STTUS_CODE IS '상태 코드'; +COMMENT ON COLUMN PT_USER.LOCK_AT IS '잠금 상태'; +COMMENT ON COLUMN PT_USER.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PT_USER.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PT_USER.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀번호 변경 일시'; +COMMENT ON COLUMN PT_USER.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_USER.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_USER.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PT_USER.LAST_MODIFIED_BY IS '마지막 수정자'; + +-- PT_USER_AUD +COMMENT ON TABLE PT_USER_AUD IS '사용자 감사 정보'; + +-- PT_USER_AUD +COMMENT ON COLUMN PT_USER_AUD.ESNTL_ID IS '기본 키'; +COMMENT ON COLUMN PT_USER_AUD.REV IS '감사 리비전 번호'; +COMMENT ON COLUMN PT_USER_AUD.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PT_USER_AUD.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PT_USER_AUD.PASSWORD IS '비밀번호'; +COMMENT ON COLUMN PT_USER_AUD.PASSWORD_HINT IS '비밀번호 힌트'; +COMMENT ON COLUMN PT_USER_AUD.PASSWORD_CNSR IS '비밀번호 확인'; +COMMENT ON COLUMN PT_USER_AUD.MBTLNUM IS '모바일 번호'; +COMMENT ON COLUMN PT_USER_AUD.EMPLYR_STTUS_CODE IS '상태 코드'; +COMMENT ON COLUMN PT_USER_AUD.LOCK_AT IS '잠금 상태'; +COMMENT ON COLUMN PT_USER_AUD.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PT_USER_AUD.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PT_USER_AUD.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀번호 변경 일시'; +COMMENT ON COLUMN PT_USER_AUD.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_USER_AUD.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_USER_AUD.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PT_USER_AUD.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_USER_AUD.REVTYPE IS '리비전 타입'; + + +-- PT_ENT_USER +COMMENT ON TABLE PT_ENT_USER IS '기업 사용자 정보'; + +-- PT_ENT_USER 컬럼 +COMMENT ON COLUMN PT_ENT_USER.ESNTL_ID IS '사용자 식별 키'; +COMMENT ON COLUMN PT_ENT_USER.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PT_ENT_USER.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PT_ENT_USER.PASSWORD IS '비밀 번호'; +COMMENT ON COLUMN PT_ENT_USER.STATUS IS '계정 상태'; +COMMENT ON COLUMN PT_ENT_USER.MOBILE_PHONE IS '모바일 전화'; +COMMENT ON COLUMN PT_ENT_USER.OFFICE_PHONE IS '사무실 전화'; +COMMENT ON COLUMN PT_ENT_USER.COMPANY_NAME IS '회사 이름'; +COMMENT ON COLUMN PT_ENT_USER.CEO_NAME IS '대표자 이름'; +COMMENT ON COLUMN PT_ENT_USER.BIZRNO IS '사업자 번호'; +COMMENT ON COLUMN PT_ENT_USER.JURIRNO IS '법인 등록 번호'; +COMMENT ON COLUMN PT_ENT_USER.ZIP IS '우편 번호'; +COMMENT ON COLUMN PT_ENT_USER.ADRES IS '주소'; +COMMENT ON COLUMN PT_ENT_USER.DETAIL_ADRES IS '상세 주소'; +COMMENT ON COLUMN PT_ENT_USER.FXNUM IS '팩스 번호'; +COMMENT ON COLUMN PT_ENT_USER.ENTRPRS_SE_CODE IS '기업 유형 코드'; +COMMENT ON COLUMN PT_ENT_USER.INDUTY_CODE IS '산업 코드'; +COMMENT ON COLUMN PT_ENT_USER.PASSWORD_HINT IS '비밀 번호 힌트'; +COMMENT ON COLUMN PT_ENT_USER.PASSWORD_CNSR IS '비밀 번호 확인'; +COMMENT ON COLUMN PT_ENT_USER.LOCK_AT IS '잠금 상태'; +COMMENT ON COLUMN PT_ENT_USER.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PT_ENT_USER.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PT_ENT_USER.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀 번호 변경 일시'; +COMMENT ON COLUMN PT_ENT_USER.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_ENT_USER.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_ENT_USER.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PT_ENT_USER.LAST_MODIFIED_BY IS '마지막 수정자'; + +-- PT_ENT_USER_AUD +COMMENT ON TABLE PT_ENT_USER_AUD IS '기업 사용자 감사 정보'; + +-- PT_ENT_USER_AUD 컬럼 +COMMENT ON COLUMN PT_ENT_USER_AUD.ESNTL_ID IS '사용자 식별 키'; +COMMENT ON COLUMN PT_ENT_USER_AUD.REV IS '감사 리비전 번호'; +COMMENT ON COLUMN PT_ENT_USER_AUD.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PT_ENT_USER_AUD.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PT_ENT_USER_AUD.PASSWORD IS '비밀 번호'; +COMMENT ON COLUMN PT_ENT_USER_AUD.STATUS IS '계정 상태'; +COMMENT ON COLUMN PT_ENT_USER_AUD.MOBILE_PHONE IS '모바일 전화'; +COMMENT ON COLUMN PT_ENT_USER_AUD.OFFICE_PHONE IS '사무실 전화'; +COMMENT ON COLUMN PT_ENT_USER_AUD.COMPANY_NAME IS '회사 이름'; +COMMENT ON COLUMN PT_ENT_USER_AUD.CEO_NAME IS '대표자 이름'; +COMMENT ON COLUMN PT_ENT_USER_AUD.BIZRNO IS '사업자 번호'; +COMMENT ON COLUMN PT_ENT_USER_AUD.JURIRNO IS '법인 등록 번호'; +COMMENT ON COLUMN PT_ENT_USER_AUD.ZIP IS '우편 번호'; +COMMENT ON COLUMN PT_ENT_USER_AUD.ADRES IS '주소'; +COMMENT ON COLUMN PT_ENT_USER_AUD.DETAIL_ADRES IS '상세 주소'; +COMMENT ON COLUMN PT_ENT_USER_AUD.FXNUM IS '팩스 번호'; +COMMENT ON COLUMN PT_ENT_USER_AUD.ENTRPRS_SE_CODE IS '기업 유형 코드'; +COMMENT ON COLUMN PT_ENT_USER_AUD.INDUTY_CODE IS '산업 코드'; +COMMENT ON COLUMN PT_ENT_USER_AUD.PASSWORD_HINT IS '비밀 번호 힌트'; +COMMENT ON COLUMN PT_ENT_USER_AUD.PASSWORD_CNSR IS '비밀 번호 확인'; +COMMENT ON COLUMN PT_ENT_USER_AUD.LOCK_AT IS '잠금 상태'; +COMMENT ON COLUMN PT_ENT_USER_AUD.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PT_ENT_USER_AUD.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PT_ENT_USER_AUD.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀 번호 변경 일시'; +COMMENT ON COLUMN PT_ENT_USER_AUD.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_ENT_USER_AUD.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_ENT_USER_AUD.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PT_ENT_USER_AUD.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_ENT_USER_AUD.REVTYPE IS '리비전 타입'; + + +-- PT_APPROVAL +COMMENT ON TABLE PT_APPROVAL IS '승인 요청 정보'; + +-- PT_APPROVAL 컬럼 +COMMENT ON COLUMN PT_APPROVAL.ID IS '승인 요청 ID'; +COMMENT ON COLUMN PT_APPROVAL.APPROVAL_TYPE IS '승인 유형'; +COMMENT ON COLUMN PT_APPROVAL.BODY IS '승인 내용'; +COMMENT ON COLUMN PT_APPROVAL.ENDED_ON IS '종료 일시'; +COMMENT ON COLUMN PT_APPROVAL.REQUESTER_ID IS '요청자 ID'; +COMMENT ON COLUMN PT_APPROVAL.STATUS IS '승인 상태'; +COMMENT ON COLUMN PT_APPROVAL.TARGET_ID IS '대상 ID'; +COMMENT ON COLUMN PT_APPROVAL.TITLE IS '승인 제목'; +COMMENT ON COLUMN PT_APPROVAL.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_APPROVAL.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_APPROVAL.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_APPROVAL.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +-- PT_APPROVAL_APPROVER +COMMENT ON TABLE PT_APPROVAL_APPROVER IS '승인자 정보'; + +-- PT_APPROVAL_APPROVER 컬럼 +COMMENT ON COLUMN PT_APPROVAL_APPROVER.APPROVAL_ID IS '승인 요청 ID'; +COMMENT ON COLUMN PT_APPROVAL_APPROVER.ORDINAL IS '승인 순서'; +COMMENT ON COLUMN PT_APPROVAL_APPROVER.APPROVED_ON IS '승인 일시'; +COMMENT ON COLUMN PT_APPROVAL_APPROVER.MESSAGE IS '메시지'; +COMMENT ON COLUMN PT_APPROVAL_APPROVER.STATUS IS '승인 상태'; +COMMENT ON COLUMN PT_APPROVAL_APPROVER.USER_ID IS '승인자 ID'; + + +-- PT_ROUTE_INFO +COMMENT ON TABLE PT_ROUTE_INFO IS 'API 라우트 정보'; + +-- PT_ROUTE_INFO 컬럼 +COMMENT ON COLUMN PT_ROUTE_INFO.ID IS '라우트 ID (기본 키)'; +COMMENT ON COLUMN PT_ROUTE_INFO.API_PATH IS 'API 경로'; +COMMENT ON COLUMN PT_ROUTE_INFO.DESCRIPTION IS '라우트 설명'; +COMMENT ON COLUMN PT_ROUTE_INFO.LOG_CONTENT_ENCODE_YN IS '로그 내용 인코딩 여부 (Y/N)'; +COMMENT ON COLUMN PT_ROUTE_INFO.LOG_LEVEL IS '로그 레벨'; +COMMENT ON COLUMN PT_ROUTE_INFO.NAME IS '라우트 이름'; +COMMENT ON COLUMN PT_ROUTE_INFO.ORDER_NO IS '라우트 순서 번호'; +COMMENT ON COLUMN PT_ROUTE_INFO.PATH IS '라우트 경로'; +COMMENT ON COLUMN PT_ROUTE_INFO.METHOD IS 'HTTP 메서드'; +COMMENT ON COLUMN PT_ROUTE_INFO.META_DATA_STR IS '메타 데이터 문자열'; +COMMENT ON COLUMN PT_ROUTE_INFO.SAMPLE_RESPONSE IS '샘플 응답'; +COMMENT ON COLUMN PT_ROUTE_INFO.STATUS IS '라우트 상태'; +COMMENT ON COLUMN PT_ROUTE_INFO.TYPE IS '라우트 유형'; +COMMENT ON COLUMN PT_ROUTE_INFO.URI IS '라우트 URI'; +COMMENT ON COLUMN PT_ROUTE_INFO.USE_YN IS '사용 여부 (Y/N)'; +COMMENT ON COLUMN PT_ROUTE_INFO.FILE_ID IS '파일 ID'; +COMMENT ON COLUMN PT_ROUTE_INFO.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_ROUTE_INFO.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_ROUTE_INFO.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_ROUTE_INFO.LAST_MODIFIED_ON IS '마지막 수정 일시'; + + + -- PT_API_KEY 테이블 +COMMENT ON TABLE PT_API_KEY IS 'API 키 정보 테이블'; + +-- PT_API_KEY 컬럼 +COMMENT ON COLUMN PT_API_KEY.ID IS 'API 키 ID'; +COMMENT ON COLUMN PT_API_KEY.OWNER IS 'API 키 소유자'; +COMMENT ON COLUMN PT_API_KEY.NAME IS 'API 키 이름'; +COMMENT ON COLUMN PT_API_KEY.ENV IS '환경'; +COMMENT ON COLUMN PT_API_KEY.CLIENT_ID IS '클라이언트 ID'; +COMMENT ON COLUMN PT_API_KEY.CLIENT_SECRET IS '클라이언트 비밀 번호'; +COMMENT ON COLUMN PT_API_KEY.REDIRECT_URL IS '리다이렉트 URL'; +COMMENT ON COLUMN PT_API_KEY.RESPONSE_TYPE IS '응답 타입'; +COMMENT ON COLUMN PT_API_KEY.SCOPE IS 'API 범위'; +COMMENT ON COLUMN PT_API_KEY.STATUS IS 'API 키 상태'; +COMMENT ON COLUMN PT_API_KEY.DESCRIPTION IS 'API 키 설명'; +COMMENT ON COLUMN PT_API_KEY.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_API_KEY.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_API_KEY.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_API_KEY.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +-- PT_API_KEY_API 테이블 +COMMENT ON TABLE PT_API_KEY_API IS 'API 키와 라우트 정보 매핑 테이블'; + +-- PT_API_KEY_API 컬럼 +COMMENT ON COLUMN PT_API_KEY_API.API_KEY_ID IS 'API 키 ID'; +COMMENT ON COLUMN PT_API_KEY_API.API_ID IS 'API 라우트 ID'; + + +-- PT_MESSAGE_TEMPLATE 테이블 +COMMENT ON TABLE PT_MESSAGE_TEMPLATE IS '메시지 템플릿'; + +-- PT_MESSAGE_TEMPLATE 컬럼 +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.MESSAGE_KEY IS '메시지 키'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.MESSAGE_TYPE IS '메시지 타입(이메일,sms)'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.SUBJECT IS '메시지 제목'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.CONTENTS IS '메시지 내용'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_MESSAGE_TEMPLATE.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +-- PT_MESSAGE_RECIPIENT 테이블 +COMMENT ON TABLE PT_MESSAGE_RECIPIENT IS '메시지 추가 수신자'; + +-- PT_MESSAGE_RECIPIENT 컬럼 +COMMENT ON COLUMN PT_MESSAGE_RECIPIENT.MESSAGE_KEY IS '메시지 키'; +COMMENT ON COLUMN PT_MESSAGE_RECIPIENT.MESSAGE_TYPE IS '메시지 타입'; +COMMENT ON COLUMN PT_MESSAGE_RECIPIENT.ESNTL_ID IS '수신자의 고유 ID'; + +-- PT_AGREEMENTS 테이블 +COMMENT ON TABLE PT_AGREEMENTS IS '사용자 동의서 정보'; + +-- PT_AGREEMENTS 컬럼 +COMMENT ON COLUMN PT_AGREEMENTS.AGREEMENTS_TYPE IS '동의서 유형'; +COMMENT ON COLUMN PT_AGREEMENTS.REVISION IS '동의서 리비전 번호'; +COMMENT ON COLUMN PT_AGREEMENTS.AGREEMENTS_NAME IS '동의서 이름'; +COMMENT ON COLUMN PT_AGREEMENTS.AGREEMENTS_CONTENTS IS '동의서 내용'; +COMMENT ON COLUMN PT_AGREEMENTS.STATUS IS '동의서 상태'; +COMMENT ON COLUMN PT_AGREEMENTS.PUBLISHED_ON IS '동의서 발행 일시'; +COMMENT ON COLUMN PT_AGREEMENTS.SCHEDULED_ON IS '동의서 예정 일시'; +COMMENT ON COLUMN PT_AGREEMENTS.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_AGREEMENTS.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_AGREEMENTS.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_AGREEMENTS.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +-- PT_TOKEN 테이블 +COMMENT ON TABLE PT_TOKEN IS '토큰 관리 테이블'; + +-- PT_TOKEN 컬럼 +COMMENT ON COLUMN PT_TOKEN.TOKEN IS '토큰 값'; +COMMENT ON COLUMN PT_TOKEN.EMAIL IS '이메일 주소'; +COMMENT ON COLUMN PT_TOKEN.EXPIRES_AT IS '토큰 만료 일시'; + + +-- PT_BOARD_AUTHORITY 테이블 +COMMENT ON TABLE PT_BOARD_AUTHORITY IS '게시판 권한 관리 테이블'; + +-- PT_BOARD_AUTHORITY 컬럼 +COMMENT ON COLUMN PT_BOARD_AUTHORITY.AUTHORITY_ID IS '권한 ID'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.BBS_ID IS '게시판 ID'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.AUTHORITY_CODE IS '권한 코드'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.ESNTL_ID IS '기본 ID'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.READ_YN IS '읽기 권한 여부'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.WRITE_YN IS '쓰기 권한 여부'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.MODIFY_YN IS '수정 권한 여부'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.DELETE_YN IS '삭제 권한 여부'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.ADMIN_YN IS '관리자 권한 여부'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PT_BOARD_AUTHORITY.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +-- PT_TWO_FACTOR_AUTH 테이블 +COMMENT ON TABLE PT_TWO_FACTOR_AUTH IS '2단계 인증 정보 테이블'; + +-- PT_TWO_FACTOR_AUTH 컬럼 +COMMENT ON COLUMN PT_TWO_FACTOR_AUTH.RECIPIENT IS '인증 수신자'; +COMMENT ON COLUMN PT_TWO_FACTOR_AUTH.AUTH_NUMBER IS '인증 번호'; +COMMENT ON COLUMN PT_TWO_FACTOR_AUTH.EXPIRES_AT IS '인증 만료 시간'; + +-- REVINFO 테이블 +COMMENT ON TABLE REVINFO IS '리비전 정보 테이블'; + +-- REVINFO 컬럼 +COMMENT ON COLUMN REVINFO.REVTSTMP IS '리비전 타임스탬프'; +COMMENT ON COLUMN REVINFO.REV IS '리비전 번호'; + diff --git a/script/portal/oracle/3_knbank.sql b/script/portal/oracle/3_knbank.sql new file mode 100644 index 0000000..a29ea63 --- /dev/null +++ b/script/portal/oracle/3_knbank.sql @@ -0,0 +1,57 @@ +grant insert, update, delete, select on COMTCCMMNCODE to DVPAPP; +grant insert, update, delete, select on COMTCCMMNDETAILCODE to DVPAPP; +grant insert, update, delete, select on COMTECOPSEQ to DVPAPP; +grant insert, update, delete, select on COMTNAUTHORINFO to DVPAPP; +grant insert, update, delete, select on COMTNBBS to DVPAPP; +grant insert, update, delete, select on COMTNBBSMASTER to DVPAPP; +grant insert, update, delete, select on COMTNEMPLYRSCRTYESTBS to DVPAPP; +grant insert, update, delete, select on COMTNFAQINFO to DVPAPP; +grant insert, update, delete, select on COMTNFILE to DVPAPP; +grant insert, update, delete, select on COMTNFILEDETAIL to DVPAPP; +grant insert, update, delete, select on PT_AGREEMENTS to DVPAPP; +grant insert, update, delete, select on PT_API_KEY to DVPAPP; +grant insert, update, delete, select on PT_API_KEY_API to DVPAPP; +grant insert, update, delete, select on PT_APPROVAL to DVPAPP; +grant insert, update, delete, select on PT_APPROVAL_APPROVER to DVPAPP; +grant insert, update, delete, select on PT_BOARD_AUTHORITY to DVPAPP; +grant insert, update, delete, select on PT_ENT_USER to DVPAPP; +grant insert, update, delete, select on PT_ENT_USER_AUD to DVPAPP; +grant insert, update, delete, select on PT_MESSAGE_TEMPLATE to DVPAPP; +grant insert, update, delete, select on PT_MESSAGE_RECIPIENT to DVPAPP; +grant insert, update, delete, select on PT_PROPERTIES to DVPAPP; +grant insert, update, delete, select on PT_ROUTE_INFO to DVPAPP; +grant insert, update, delete, select on PT_TOKEN to DVPAPP; +grant insert, update, delete, select on PT_USER to DVPAPP; +grant insert, update, delete, select on PT_USER_AUD to DVPAPP; +grant insert, update, delete, select on PT_TWO_FACTOR_AUTH to DVPAPP; +grant insert, update, delete, select on REVINFO to DVPAPP; + +create synonym DVPAPP.COMTCCMMNCODE for DVPOWN.COMTCCMMNCODE; +create synonym DVPAPP.COMTCCMMNDETAILCODE for DVPOWN.COMTCCMMNDETAILCODE; +create synonym DVPAPP.COMTECOPSEQ for DVPOWN.COMTECOPSEQ; +create synonym DVPAPP.COMTNAUTHORINFO for DVPOWN.COMTNAUTHORINFO; +create synonym DVPAPP.COMTNBBS for DVPOWN.COMTNBBS; +create synonym DVPAPP.COMTNBBSMASTER for DVPOWN.COMTNBBSMASTER; +create synonym DVPAPP.COMTNEMPLYRSCRTYESTBS for DVPOWN.COMTNEMPLYRSCRTYESTBS; +create synonym DVPAPP.COMTNFAQINFO for DVPOWN.COMTNFAQINFO; +create synonym DVPAPP.COMTNFILE for DVPOWN.COMTNFILE; +create synonym DVPAPP.COMTNFILEDETAIL for DVPOWN.COMTNFILEDETAIL; + +create synonym DVPAPP.PT_AGREEMENTS for DVPOWN.PT_AGREEMENTS; +create synonym DVPAPP.PT_API_KEY for DVPOWN.PT_API_KEY; +create synonym DVPAPP.PT_API_KEY_API for DVPOWN.PT_API_KEY_API; +create synonym DVPAPP.PT_APPROVAL for DVPOWN.PT_APPROVAL; +create synonym DVPAPP.PT_APPROVAL_APPROVER for DVPOWN.PT_APPROVAL_APPROVER; +create synonym DVPAPP.PT_BOARD_AUTHORITY for DVPOWN.PT_BOARD_AUTHORITY; +create synonym DVPAPP.PT_ENT_USER for DVPOWN.PT_ENT_USER; +create synonym DVPAPP.PT_ENT_USER_AUD for DVPOWN.PT_ENT_USER_AUD; +create synonym DVPAPP.PT_MESSAGE_RECIPIENT for DVPOWN.PT_MESSAGE_RECIPIENT; +create synonym DVPAPP.PT_MESSAGE_TEMPLATE for DVPOWN.PT_MESSAGE_TEMPLATE; +create synonym DVPAPP.PT_PROPERTIES for DVPOWN.PT_PROPERTIES; +create synonym DVPAPP.PT_ROUTE_INFO for DVPOWN.PT_ROUTE_INFO; +create synonym DVPAPP.PT_TOKEN for DVPOWN.PT_TOKEN; +create synonym DVPAPP.PT_TWO_FACTOR_AUTH for DVPOWN.PT_TWO_FACTOR_AUTH; +create synonym DVPAPP.PT_USER for DVPOWN.PT_USER; +create synonym DVPAPP.PT_USER_AUD for DVPOWN.PT_USER_AUD; +create synonym DVPAPP.REVINFO for DVPOWN.REVINFO; +create synonym DVPAPP.COMVNUSERMASTER for DVPOWN.COMVNUSERMASTER; diff --git a/script/portal/oracle/4_knbank_data.sql b/script/portal/oracle/4_knbank_data.sql new file mode 100644 index 0000000..91875e2 --- /dev/null +++ b/script/portal/oracle/4_knbank_data.sql @@ -0,0 +1,46 @@ +INSERT INTO DVPOWN.COMTECOPSEQ (TABLE_NAME, NEXT_ID) VALUES ('FILE_ID', 1); +INSERT INTO DVPOWN.COMTECOPSEQ (TABLE_NAME, NEXT_ID) VALUES ('MSG_ID', 1); +INSERT INTO DVPOWN.COMTECOPSEQ (TABLE_NAME, NEXT_ID) VALUES ('APPROVAL_ID', 1); +INSERT INTO DVPOWN.COMTECOPSEQ (TABLE_NAME, NEXT_ID) VALUES ('FAQ_ID', 1); +INSERT INTO DVPOWN.COMTECOPSEQ (TABLE_NAME, NEXT_ID) VALUES ('NTT_ID', 1); +INSERT INTO DVPOWN.COMTECOPSEQ (TABLE_NAME, NEXT_ID) VALUES ('BBS_ID', 1); +INSERT INTO DVPOWN.COMTECOPSEQ (TABLE_NAME, NEXT_ID) VALUES ('BOARD_AUTH_ID', 1); + + +INSERT INTO DVPOWN.COMTCCMMNCODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, CL_CODE, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM013', '회원상태', '회원 가입 신청/승인/삭제를 위한 상태 구분', 'Y', 'EFC', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNCODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, CL_CODE, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', '비밀번호 힌트', '비밀번호 힌트 구분코드', 'Y', 'EFC', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); + +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM013', 'WAITING', '가입승인 대기', '가입승인 대기', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM013', 'ACTIVE', '활성화', '활성화', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM013', 'RESET_PASSWORD', '비밀번호 초기화', '비밀번호 초기화', 'Y',SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM013', 'INACTIVE', '비활성화', '비활성화', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM013', 'LOCKED', '잠김', '잠김', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM013', 'DELETED', '삭제', '삭제', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P01', '가장 기억에 남는 장소는?', '가장 기억에 남는 장소는?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P02', '나의 좌우명은?', '나의 좌우명은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P03', '나의 보물 제1호는?', '나의 보물 제1호는?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P04', '가장 기억에 남는 선생님 성함은?', '가장 기억에 남는 선생님 성함은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P05', '다른 사람은 모르는 나만의 신체비밀은?', '다른 사람은 모르는 나만의 신체비밀은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P06', '오래도록 기억하고 싶은 날짜는?', '오래도록 기억하고 싶은 날짜는?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P07', '받았던 선물 중 기억에 남는 독특한 선물은?', '받았던 선물 중 기억에 남는 독특한 선물은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P08', '가장 생각나는 친구 이름은?', '가장 생각나는 친구 이름은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P09', '인상 깊게 읽은 책 이름은?', '인상 깊게 읽은 책 이름은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P10', '내가 존경하는 인물은?', '내가 존경하는 인물은?', 'Y', SYSDATE, 'SYSTEM',SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P11', '나의 노래방 애창곡은?', '나의 노래방 애창곡은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P12', '가장 감명깊게 본 영화는?', '가장 감명깊게 본 영화는?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); +INSERT INTO DVPOWN.COMTCCMMNDETAILCODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('COM022', 'P13', '좋아하는 스포츠팀 이름은?', '좋아하는 스포츠팀 이름은?', 'Y', SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM'); + + +INSERT INTO DVPOWN.PT_USER (ESNTL_ID, USER_ID, ORGNZT_ID, USER_NAME, PASSWORD, EMPL_NO, IHIDNUM, SEXDSTN_CODE, BRTHDY, FXNUM, HOUSE_ADRES, PASSWORD_HINT, PASSWORD_CNSR, HOUSE_END_TELNO, AREA_NO, DETAIL_ADRES, ZIP, OFFM_TELNO, MBTLNUM, EMAIL_ADRES, OFCPS_NAME, HOUSE_MIDDLE_TELNO, GROUP_ID, PSTINST_CODE, EMPLYR_STTUS_CODE, CRTFC_DN_VALUE, SBSCRB_DE, LOCK_AT, LOCK_CNT, LAST_LOCK_DATE, LAST_CHANGE_PASSWORD_DATE, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) VALUES ('SYSADMIN', 'admin@knbank.co.kr', null, '포탈관리자', 'n4PYnz95OwhnEVoX71BLhxhjup0Y+BSwfsnqXUNEts4=', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 'ACTIVE', null, null, 'N', 0, null, null, SYSDATE, 'SYSADMIN', SYSDATE, 'SYSADMIN'); + +INSERT INTO DVPOWN.COMTNEMPLYRSCRTYESTBS (SCRTY_DTRMN_TRGET_ID, MBER_TY_CODE, AUTHOR_CODE) VALUES ('SYSADMIN', 'USR ', 'ROLE_ADMIN'); + +INSERT INTO DVPOWN.COMTNBBSMASTER (BBS_ID, BBS_NAME, BBS_INTRCN, BBS_TY_CODE, REPLY_POSBL_AT, FILE_ATCH_POSBL_AT, ATCH_POSBL_FILE_NUMBER, ATCH_POSBL_FILE_SIZE, USE_AT, TMPLAT_ID, CMMNTY_ID, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY, LAST_MODIFIED_ON, BLOG_ID, BLOG_AT) VALUES ('BBSMSTR_000000000000', '공지사항', '공지사항 게시판', 'BBST01', 'Y', 'Y', 1, null, 'Y', null, null, 'SYSADMIN', SYSDATE, 'SYSADMIN', SYSDATE, null, null); + +insert into DVPOWN.PT_BOARD_AUTHORITY (AUTHORITY_ID, BBS_ID, AUTHORITY_CODE, ESNTL_ID, READ_YN, WRITE_YN, MODIFY_YN,DELETE_YN, ADMIN_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY,LAST_MODIFIED_ON) values ('1','BBSMSTR_000000000000','ROLE_ADMIN','_','Y','N','N','N','Y','SYSADMIN',sysdate,'SYSADMIN',SYSDATE); +insert into DVPOWN.PT_BOARD_AUTHORITY (AUTHORITY_ID, BBS_ID, AUTHORITY_CODE, ESNTL_ID, READ_YN, WRITE_YN, MODIFY_YN,DELETE_YN, ADMIN_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY,LAST_MODIFIED_ON) values ('2','BBSMSTR_000000000000','ROLE_USER','_','Y','N','N','N','N','SYSADMIN',sysdate,'SYSADMIN',SYSDATE); +insert into DVPOWN.PT_BOARD_AUTHORITY (AUTHORITY_ID, BBS_ID, AUTHORITY_CODE, ESNTL_ID, READ_YN, WRITE_YN, MODIFY_YN,DELETE_YN, ADMIN_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY,LAST_MODIFIED_ON) values ('3','BBSMSTR_000000000000','ROLE_ANONYMOUS','_','Y','N','N','N','N','SYSADMIN',sysdate,'SYSADMIN',SYSDATE); + +INSERT INTO DVPOWN.PT_MESSAGE_TEMPLATE (MESSAGE_KEY, MESSAGE_TYPE, SUBJECT, CONTENTS, USE_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY, LAST_MODIFIED_ON) VALUES ('request_password_reset', 'email', '초기화 요청', '

초기화 요청

', 'N', null, null, 'SYSADMIN', SYSDATE); +INSERT INTO DVPOWN.PT_MESSAGE_TEMPLATE (MESSAGE_KEY, MESSAGE_TYPE, SUBJECT, CONTENTS, USE_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY, LAST_MODIFIED_ON) VALUES ('request_auth_number', 'sms', '인증번호 발송', '인증번호[%authNumber%]를 입력해주세요.', 'Y', 'SYSADMIN', SYSDATE, 'SYSADMIN', SYSDATE); +INSERT INTO DVPOWN.PT_MESSAGE_TEMPLATE (MESSAGE_KEY, MESSAGE_TYPE, SUBJECT, CONTENTS, USE_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY, LAST_MODIFIED_ON) VALUES ('request_auth_number', 'email', '포탈 인증번호', '

인증번호[%authNumber%]를 입력해주세요.


', 'Y', null, null, 'SYSADMIN', SYSDATE); diff --git a/script/portal/tibero/comment.sql b/script/portal/tibero/comment.sql new file mode 100644 index 0000000..1dcec0f --- /dev/null +++ b/script/portal/tibero/comment.sql @@ -0,0 +1,377 @@ +COMMENT ON TABLE PORTAL.PT_ID IS '테이블 식별자 관리'; + +COMMENT ON COLUMN PORTAL.PT_ID.TABLE_NAME IS '테이블 이름'; +COMMENT ON COLUMN PORTAL.PT_ID.NEXT_ID IS '다음 ID'; + +COMMENT ON TABLE PORTAL.PT_CODE IS '공통 코드 관리'; + +COMMENT ON COLUMN PORTAL.PT_CODE.CODE_ID IS '코드 ID'; +COMMENT ON COLUMN PORTAL.PT_CODE.CODE_ID_NAME IS '코드 이름'; +COMMENT ON COLUMN PORTAL.PT_CODE.CODE_ID_DC IS '코드 설명'; +COMMENT ON COLUMN PORTAL.PT_CODE.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PORTAL.PT_CODE.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_CODE.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_CODE.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_CODE.LAST_MODIFIED_BY IS '마지막 수정자'; + +COMMENT ON TABLE PORTAL.PT_DETAIL_CODE IS '상세 코드 관리'; + +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.CODE_ID IS '코드 ID'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.CODE IS '상세 코드'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.CODE_VALUE IS '상세 코드 값'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.CODE_DC IS '상세 코드 설명'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_DETAIL_CODE.LAST_MODIFIED_BY IS '마지막 수정자'; + +COMMENT ON TABLE PORTAL.PT_USER_SECURITY IS '사용자 보안 설정'; + +COMMENT ON COLUMN PORTAL.PT_USER_SECURITY.USER_ESNTL_ID IS '사용자 식별자'; +COMMENT ON COLUMN PORTAL.PT_USER_SECURITY.MBER_TY_CODE IS '회원 유형 코드'; +COMMENT ON COLUMN PORTAL.PT_USER_SECURITY.AUTHOR_CODE IS '권한 코드'; + +COMMENT ON TABLE PORTAL.PT_BOARD_MASTER IS '게시판 마스터 정보'; + +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.BOARD_ID IS '게시판 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.BOARD_NAME IS '게시판 이름'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.BOARD_DESC IS '게시판 설명'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.BOARD_TYPE IS '게시판 유형'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.REPLY_POSBL_YN IS '답글 가능 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.FILE_ATCH_POSBL_YN IS '파일 첨부 가능 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.ATCH_POSBL_FILE_NUMBER IS '첨부 가능 파일 수'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.ATCH_POSBL_FILE_SIZE IS '첨부 가능 파일 크기'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.TMPLAT_ID IS '템플릿 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_BOARD_MASTER.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_BOARD_AUTHORITY IS '게시판 권한 관리'; + +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.AUTHORITY_ID IS '권한 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.BBS_ID IS '게시판 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.AUTHORITY_CODE IS '권한 코드'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.ESNTL_ID IS '사용자 식별 키'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.READ_YN IS '읽기 권한 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.WRITE_YN IS '쓰기 권한 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.MODIFY_YN IS '수정 권한 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.DELETE_YN IS '삭제 권한 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.ADMIN_YN IS '관리자 권한 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_BOARD_AUTHORITY.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_BOARD_ARTICLE IS '게시판 게시물'; + +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.BOARD_ID IS '게시판 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTT_NO IS '게시물 번호'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTT_ID IS '게시물 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTT_SJ IS '게시물 제목'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTT_CN IS '게시물 내용'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.ANSWER_YN IS '답글 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.PARNTSCTT_NO IS '부모 게시물 번호'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.ANSWER_LC IS '답글 위치'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.SORT_ORDR IS '정렬 순서'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.RDCNT IS '조회수'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTCE_BGNDE IS '공지 시작일'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTCE_ENDDE IS '공지 종료일'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTCR_ID IS '게시자 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NTCR_NAME IS '게시자 이름'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.PASSWORD IS '비밀번호'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.FILE_ID IS '첨부파일 ID'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.NOTICE_YN IS '공지 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.SJ_BOLD_YN IS '제목 볼드 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.SECRET_YN IS '비밀글 여부'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_BOARD_ARTICLE.LAST_MODIFIED_BY IS '마지막 수정자'; + +COMMENT ON TABLE PORTAL.PT_FILE IS '파일 속성 정보'; + +COMMENT ON COLUMN PORTAL.PT_FILE.FILE_ID IS '파일 ID'; +COMMENT ON COLUMN PORTAL.PT_FILE.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PORTAL.PT_FILE.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_FILE.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_FILE.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_FILE.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_FILE_DETAIL IS '파일 상세 정보'; + +COMMENT ON COLUMN PORTAL.PT_FILE_DETAIL.FILE_ID IS '파일 ID'; +COMMENT ON COLUMN PORTAL.PT_FILE_DETAIL.FILE_SN IS '파일 일련 번호'; +COMMENT ON COLUMN PORTAL.PT_FILE_DETAIL.ORIGNL_FILE_NAME IS '원본 파일 이름'; +COMMENT ON COLUMN PORTAL.PT_FILE_DETAIL.FILE_EXTSN IS '파일 확장자'; +COMMENT ON COLUMN PORTAL.PT_FILE_DETAIL.FILE_CN IS '파일 내용'; +COMMENT ON COLUMN PORTAL.PT_FILE_DETAIL.FILE_SIZE IS '파일 크기'; + +COMMENT ON TABLE PORTAL.PT_FAQ IS 'FAQ 정보'; + +COMMENT ON COLUMN PORTAL.PT_FAQ.FAQ_ID IS 'FAQ ID'; +COMMENT ON COLUMN PORTAL.PT_FAQ.TITLE IS '질문 제목'; +COMMENT ON COLUMN PORTAL.PT_FAQ.QUESTION IS '질문 내용'; +COMMENT ON COLUMN PORTAL.PT_FAQ.ANSWER IS '답변 내용'; +COMMENT ON COLUMN PORTAL.PT_FAQ.RDCNT IS '조회수'; +COMMENT ON COLUMN PORTAL.PT_FAQ.FILE_ID IS '첨부파일 ID'; +COMMENT ON COLUMN PORTAL.PT_FAQ.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_FAQ.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_FAQ.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_FAQ.LAST_MODIFIED_BY IS '마지막 수정자'; + +COMMENT ON TABLE PORTAL.REVINFO IS '리비전 정보'; + +COMMENT ON COLUMN PORTAL.REVINFO.REV IS '리비전 번호'; +COMMENT ON COLUMN PORTAL.REVINFO.REVTSTMP IS '리비전 타임스탬프'; + +COMMENT ON TABLE PORTAL.PT_USER IS '내부 사용자 정보'; + +COMMENT ON COLUMN PORTAL.PT_USER.ESNTL_ID IS '사용자 식별 키'; +COMMENT ON COLUMN PORTAL.PT_USER.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PORTAL.PT_USER.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PORTAL.PT_USER.STATUS IS '상태'; +COMMENT ON COLUMN PORTAL.PT_USER.MOBILE_PHONE IS '모바일 전화번호'; +COMMENT ON COLUMN PORTAL.PT_USER.PASSWORD IS '비밀번호'; +COMMENT ON COLUMN PORTAL.PT_USER.PASSWORD_HINT IS '비밀번호 힌트'; +COMMENT ON COLUMN PORTAL.PT_USER.PASSWORD_CNSR IS '비밀번호 확인'; +COMMENT ON COLUMN PORTAL.PT_USER.LOCK_YN IS '잠금 여부'; +COMMENT ON COLUMN PORTAL.PT_USER.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PORTAL.PT_USER.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PORTAL.PT_USER.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀번호 변경 일시'; +COMMENT ON COLUMN PORTAL.PT_USER.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_USER.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_USER.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_USER.LAST_MODIFIED_BY IS '마지막 수정자'; + +COMMENT ON TABLE PORTAL.PT_USER_AUD IS '사용자 이력 정보'; + +COMMENT ON COLUMN PORTAL.PT_USER_AUD.ESNTL_ID IS '사용자 식별 키'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.REV IS '리비전 번호'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.STATUS IS '상태'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.MOBILE_PHONE IS '모바일 전화번호'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.PASSWORD IS '비밀번호'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.PASSWORD_HINT IS '비밀번호 힌트'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.PASSWORD_CNSR IS '비밀번호 확인'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.LOCK_YN IS '잠금 여부'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀번호 변경 일시'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_USER_AUD.REVTYPE IS '리비전 유형'; + +COMMENT ON TABLE PORTAL.PT_ENT_USER IS '기업 사용자 정보'; + +COMMENT ON COLUMN PORTAL.PT_ENT_USER.ESNTL_ID IS '사용자 식별 키'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.STATUS IS '상태'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.IP_ADDRESS IS 'IP 주소'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.MOBILE_PHONE IS '모바일 전화번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.OFFICE_PHONE IS '사무실 전화번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.COMPANY_NAME IS '회사 이름'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.CEO_NAME IS '대표자 이름'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.BIZRNO IS '사업자 등록번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.JURIRNO IS '법인 등록번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.ZIP IS '우편번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.ADRES IS '주소'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.DETAIL_ADRES IS '상세 주소'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.FXNUM IS '팩스번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.INDUTY_CODE IS '산업 코드'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.PASSWORD IS '비밀번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.PASSWORD_HINT IS '비밀번호 힌트'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.PASSWORD_CNSR IS '비밀번호 확인'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.ENTRPRS_SE_CODE IS '기업 유형 코드'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.LOCK_YN IS '잠금 여부'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀번호 변경 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER.LAST_MODIFIED_BY IS '마지막 수정자'; + +COMMENT ON TABLE PORTAL.PT_ENT_USER_AUD IS '기업 사용자 이력 정보'; + +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.ESNTL_ID IS '사용자 식별 키'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.REV IS '리비전 번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.USER_ID IS '사용자 ID'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.USER_NAME IS '사용자 이름'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.STATUS IS '상태'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.IP_ADDRESS IS 'IP 주소'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.MOBILE_PHONE IS '모바일 전화번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.OFFICE_PHONE IS '사무실 전화번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.COMPANY_NAME IS '회사 이름'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.CEO_NAME IS '대표자 이름'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.BIZRNO IS '사업자 등록번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.JURIRNO IS '법인 등록번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.ZIP IS '우편번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.ADRES IS '주소'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.DETAIL_ADRES IS '상세 주소'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.FXNUM IS '팩스번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.INDUTY_CODE IS '산업 코드'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.PASSWORD IS '비밀번호'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.PASSWORD_HINT IS '비밀번호 힌트'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.PASSWORD_CNSR IS '비밀번호 확인'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.ENTRPRS_SE_CODE IS '기업 유형 코드'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.LOCK_YN IS '잠금 여부'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.LOCK_CNT IS '잠금 횟수'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.LAST_LOCK_DATE IS '마지막 잠금 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.LAST_CHANGE_PASSWORD_DATE IS '마지막 비밀번호 변경 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.LAST_MODIFIED_ON IS '마지막 수정 일시'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_ENT_USER_AUD.REVTYPE IS '리비전 유형'; + +COMMENT ON TABLE PORTAL.PT_APPROVAL IS '승인 요청 정보'; + +COMMENT ON COLUMN PORTAL.PT_APPROVAL.ID IS '승인 요청 ID'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.APPROVAL_TYPE IS '승인 유형'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.BODY IS '승인 내용'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.ENDED_ON IS '종료 일시'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.REQUESTER_ID IS '요청자 ID'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.STATUS IS '승인 상태'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.TARGET_ID IS '대상 ID'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.TITLE IS '승인 제목'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_APPROVAL_APPROVER IS '승인자 정보'; + +COMMENT ON COLUMN PORTAL.PT_APPROVAL_APPROVER.APPROVAL_ID IS '승인 요청 ID'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL_APPROVER.ORDINAL IS '승인 순서'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL_APPROVER.APPROVED_ON IS '승인 일시'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL_APPROVER.MESSAGE IS '메시지'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL_APPROVER.STATUS IS '승인 상태'; +COMMENT ON COLUMN PORTAL.PT_APPROVAL_APPROVER.USER_ID IS '승인자 ID'; + +COMMENT ON TABLE PORTAL.PT_ROUTE_INFO IS 'API 라우트 정보'; + +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.ID IS '라우트 ID'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.API_PATH IS 'API 경로'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.DESCRIPTION IS '라우트 설명'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.LOG_CONTENT_ENCODE_YN IS '로그 내용 인코딩 여부'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.LOG_LEVEL IS '로그 레벨'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.NAME IS '라우트 이름'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.ORDER_NO IS '라우트 순서 번호'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.PATH IS '라우트 경로'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.METHOD IS 'HTTP 메서드'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.META_DATA_STR IS '메타 데이터 문자열'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.RESPONSE_TYPE IS '응답유형'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.MOCK_URL IS 'Mock 응답주소'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.SAMPLE_RESPONSE IS '샘플 응답'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.STATUS IS '라우트 상태'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.TYPE IS '라우트 유형'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.URI IS '라우트 URI'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.FILE_ID IS '첨부파일 ID'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_ROUTE_INFO.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_API_KEY IS 'API 키 정보'; + +COMMENT ON COLUMN PORTAL.PT_API_KEY.ID IS 'API 키 ID'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.OWNER IS 'API 키 소유자'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.NAME IS 'API 키 이름'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.ENV IS '환경'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.CLIENT_ID IS '클라이언트 ID'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.CLIENT_SECRET IS '클라이언트 비밀 번호'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.REDIRECT_URL IS '리다이렉트 URL'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.RESPONSE_TYPE IS '응답 유형'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.SCOPE IS 'API 범위'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.STATUS IS 'API 키 상태'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.DESCRIPTION IS 'API 키 설명'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_API_KEY.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_API_KEY_API IS 'API 키와 라우트 정보 매핑'; + +COMMENT ON COLUMN PORTAL.PT_API_KEY_API.API_KEY_ID IS 'API 키 ID'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_API.API_ID IS 'API 라우트 ID'; + +COMMENT ON TABLE PORTAL.PT_API_KEY_AUD IS 'API 키 이력 정보'; + +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.ID IS 'API 키 ID'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.REV IS '리비전 번호'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.REVTYPE IS '리비전 유형'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.OWNER IS 'API 키 소유자'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.NAME IS 'API 키 이름'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.ENV IS '환경'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.CLIENT_ID IS '클라이언트 ID'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.CLIENT_SECRET IS '클라이언트 비밀 번호'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.REDIRECT_URL IS '리다이렉트 URL'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.RESPONSE_TYPE IS '응답 유형'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.SCOPE IS 'API 범위'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.STATUS IS 'API 키 상태'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.DESCRIPTION IS 'API 키 설명'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_AUD.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_API_KEY_API_AUD IS 'API 키와 라우트 정보 매핑 이력'; + +COMMENT ON COLUMN PORTAL.PT_API_KEY_API_AUD.API_KEY_ID IS 'API 키 ID'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_API_AUD.API_ID IS 'API 라우트 ID'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_API_AUD.REV IS '리비전 번호'; +COMMENT ON COLUMN PORTAL.PT_API_KEY_API_AUD.REVTYPE IS '리비전 유형'; + +COMMENT ON TABLE PORTAL.PT_AGREEMENTS IS '약관 정보'; + +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.AGREEMENTS_TYPE IS '약관 유형'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.REVISION IS '리비전 번호'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.AGREEMENTS_NAME IS '약관 이름'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.AGREEMENTS_CONTENTS IS '약관 내용'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.STATUS IS '약관 상태'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.PUBLISHED_ON IS '발행 일시'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.SCHEDULED_ON IS '예정 일시'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_AGREEMENTS.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_MESSAGE_TEMPLATE IS '메시지 템플릿'; + +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.MESSAGE_KEY IS '메시지 키'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.MESSAGE_TYPE IS '메시지 유형'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.SUBJECT IS '메시지 제목'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.CONTENTS IS '메시지 내용'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.USE_YN IS '사용 여부'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.REGISTERED_BY IS '등록자'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.REGISTERED_ON IS '등록 일시'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.LAST_MODIFIED_BY IS '마지막 수정자'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_TEMPLATE.LAST_MODIFIED_ON IS '마지막 수정 일시'; + +COMMENT ON TABLE PORTAL.PT_MESSAGE_RECIPIENT IS '메시지 수신자'; + +COMMENT ON COLUMN PORTAL.PT_MESSAGE_RECIPIENT.MESSAGE_KEY IS '메시지 키'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_RECIPIENT.MESSAGE_TYPE IS '메시지 유형'; +COMMENT ON COLUMN PORTAL.PT_MESSAGE_RECIPIENT.ESNTL_ID IS '수신자 식별 키'; + +COMMENT ON TABLE PORTAL.PT_TOKEN IS '토큰 관리'; + +COMMENT ON COLUMN PORTAL.PT_TOKEN.TOKEN IS '토큰 값'; +COMMENT ON COLUMN PORTAL.PT_TOKEN.EMAIL IS '이메일 주소'; +COMMENT ON COLUMN PORTAL.PT_TOKEN.EXPIRES_ON IS '토큰 만료 일시'; + +COMMENT ON TABLE PORTAL.PT_TWO_FACTOR_AUTH IS '2단계 인증 정보'; + +COMMENT ON COLUMN PORTAL.PT_TWO_FACTOR_AUTH.RECIPIENT IS '인증 수신자'; +COMMENT ON COLUMN PORTAL.PT_TWO_FACTOR_AUTH.AUTH_NUMBER IS '인증 번호'; +COMMENT ON COLUMN PORTAL.PT_TWO_FACTOR_AUTH.EXPIRES_ON IS '인증 만료 시간'; + diff --git a/script/portal/tibero/data.sql b/script/portal/tibero/data.sql new file mode 100644 index 0000000..c6aba35 --- /dev/null +++ b/script/portal/tibero/data.sql @@ -0,0 +1,96 @@ +insert into PORTAL.PT_CODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013' ,'회원상태', '회원 가입 신청/승인/삭제를 위한 상태 구분','Y', '2022-11-24 00:35:10','SYSTEM', '2022-11-24 00:35:10','SYSTEM'); + +insert into PORTAL.PT_CODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','비밀번호 힌트','비밀번호 힌트 구분코드','Y','2022-11-24 00:35:12','SYSTEM','2022-11-24 00:35:12','SYSTEM'); + +insert into PORTAL.PT_CODE (CODE_ID, CODE_ID_NAME, CODE_ID_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) + values ('COM101','게시판유형','게시판 유형 구분코드','Y','2022-11-24 00:35:23','SYSTEM','2022-11-24 00:35:23','SYSTEM'); + + + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','ACTIVE','활성화','활성화 상태','Y','2022-11-24 00:35:42','SYSTEM','2022-11-24 00:35:42','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','DELETED','삭제','삭제 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','INACTIVE','비활성화','비활성화 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','LOCKED','잠김','잠김 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM013','WAITING','가입승인 대기','가입승인 대기 상태','Y','2022-11-24 00:35:41','SYSTEM','2022-11-24 00:35:41','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P01','가장 기억에 남는 장소는?','가장 기억에 남는 장소는?','Y','2022-11-24 00:35:46','SYSTEM','2022-11-24 00:35:46','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P02','나의 좌우명은?','나의 좌우명은?','Y','2022-11-24 00:35:46','SYSTEM','2022-11-24 00:35:46','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P03','나의 보물 제1호는?','나의 보물 제1호는?','Y','2022-11-24 00:35:46','SYSTEM','2022-11-24 00:35:46','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P04','가장 기억에 남는 선생님 성함은?','가장 기억에 남는 선생님 성함은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P05','다른 사람은 모르는 나만의 신체비밀은?','다른 사람은 모르는 나만의 신체비밀은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P06','오래도록 기억하고 싶은 날짜는?','오래도록 기억하고 싶은 날짜는?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P07','받았던 선물 중 기억에 남는 독특한 선물은?','받았던 선물 중 기억에 남는 독특한 선물은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P08','가장 생각나는 친구 이름은?','가장 생각나는 친구 이름은?','Y','2022-11-24 00:35:47','SYSTEM','2022-11-24 00:35:47','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P09','인상 깊게 읽은 책 이름은?','인상 깊게 읽은 책 이름은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P10','내가 존경하는 인물은?','내가 존경하는 인물은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P11','나의 노래방 애창곡은?','나의 노래방 애창곡은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P12','가장 감명깊게 본 영화는?','가장 감명깊게 본 영화는?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM022','P13','좋아하는 스포츠팀 이름은?','좋아하는 스포츠팀 이름은?','Y','2022-11-24 00:35:48','SYSTEM','2022-11-24 00:35:48','SYSTEM'); + +insert into PORTAL.PT_DETAIL_CODE (CODE_ID, CODE, CODE_VALUE, CODE_DC, USE_AT, REGISTERED_ON, REGISTERED_BY, LAST_MODIFIED_ON, LAST_MODIFIED_BY) +values ('COM101','BBST01','통합게시판','통합게시판','Y','2022-11-24 00:36:42','SYSTEM','2022-11-24 00:36:42','SYSTEM'); + + +insert into PORTAL.PT_BOARD_MASTER (BOARD_ID, BOARD_NAME, BOARD_DESC, BOARD_TYPE, REPLY_POSBL_AT, FILE_ATCH_POSBL_AT, + ATCH_POSBL_FILE_NUMBER, ATCH_POSBL_FILE_SIZE, USE_AT, REGISTERED_BY, + REGISTERED_ON) +values ('BBSMSTR_000000000000', '공지사항', '공지사항', 'BBST01', 'N', 'Y', 3, 2048576, 'Y', 'SYSTEM', current_timestamp); + + +INSERT INTO PORTAL.PT_BOARD_AUTHORITY +(AUTHORITY_ID, BBS_ID, AUTHORITY_CODE, ESNTL_ID, READ_YN, WRITE_YN, MODIFY_YN, DELETE_YN, ADMIN_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY, LAST_MODIFIED_ON) +VALUES('1', 'BBSMSTR_000000000000', 'ROLE_ADMIN', '_', 'Y', 'Y', 'Y', 'Y', 'Y', NULL, NULL, 'ec8d0a41-b94b-4772-9487-efa2b8395589', '2024-05-13 10:19:16.195'); +INSERT INTO PORTAL.PT_BOARD_AUTHORITY +(AUTHORITY_ID, BBS_ID, AUTHORITY_CODE, ESNTL_ID, READ_YN, WRITE_YN, MODIFY_YN, DELETE_YN, ADMIN_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY, LAST_MODIFIED_ON) +VALUES('2', 'BBSMSTR_000000000000', 'ROLE_USER', '_', 'Y', 'N', 'N', 'N', 'N', NULL, NULL, 'ec8d0a41-b94b-4772-9487-efa2b8395589', '2024-05-13 10:19:16.195'); +INSERT INTO PORTAL.PT_BOARD_AUTHORITY +(AUTHORITY_ID, BBS_ID, AUTHORITY_CODE, ESNTL_ID, READ_YN, WRITE_YN, MODIFY_YN, DELETE_YN, ADMIN_YN, REGISTERED_BY, REGISTERED_ON, LAST_MODIFIED_BY, LAST_MODIFIED_ON) +VALUES('3', 'BBSMSTR_000000000000', 'ROLE_ANONYMOUS', '_', 'Y', 'N', 'N', 'N', 'N', NULL, NULL, 'ec8d0a41-b94b-4772-9487-efa2b8395589', '2024-05-13 10:19:16.196'); + + +insert into PORTAL.PT_ID (TABLE_NAME, NEXT_ID) values ('BBS_ID', 10); +insert into PORTAL.PT_ID (TABLE_NAME, NEXT_ID) values ('FILE_ID', 1); +insert into PORTAL.PT_ID (TABLE_NAME, NEXT_ID) values ('BOARD_AUTH_ID', 1); +insert into PORTAL.PT_ID (TABLE_NAME, NEXT_ID) values ('NTT_ID', 1); +insert into PORTAL.PT_ID (TABLE_NAME, NEXT_ID) values ('FAQ_ID', 1); +insert into PORTAL.PT_ID (TABLE_NAME, NEXT_ID) values ('APPROVAL_ID', 1); + + + diff --git a/script/portal/tibero/portal.sql b/script/portal/tibero/portal.sql new file mode 100644 index 0000000..cc36bbb --- /dev/null +++ b/script/portal/tibero/portal.sql @@ -0,0 +1,504 @@ +CREATE SEQUENCE PORTAL.hibernate_sequence START WITH 1 INCREMENT BY 1; + +CREATE TABLE PORTAL.REVINFO +( + REV NUMBER(19,0) PRIMARY KEY, + REVTSTMP NUMBER(19,0) NULL +); + +CREATE TABLE PORTAL.PT_ID +( + TABLE_NAME VARCHAR(36) NOT NULL, + NEXT_ID NUMERIC(30) NULL, + CONSTRAINT PT_ID_PK PRIMARY KEY (TABLE_NAME) +); + + +CREATE TABLE PORTAL.PT_CODE +( + CODE_ID VARCHAR(6) NOT NULL, + CODE_ID_NAME VARCHAR(60) NULL, + CODE_ID_DC VARCHAR(200) NULL, + USE_YN VARCHAR(1) NULL, + REGISTERED_ON TIMESTAMP NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_CODE_PK PRIMARY KEY (CODE_ID) +); + + +CREATE TABLE PORTAL.PT_DETAIL_CODE +( + CODE_ID VARCHAR(6) NOT NULL, + CODE VARCHAR(15) NOT NULL, + CODE_VALUE VARCHAR(4000) NULL, + CODE_DC VARCHAR(200) NULL, + USE_YN VARCHAR(1) NULL, + REGISTERED_ON TIMESTAMP NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_DETAIL_CODE_PK PRIMARY KEY (CODE_ID, CODE) +); + + +CREATE TABLE PORTAL.PT_USER_SECURITY +( + USER_ESNTL_ID VARCHAR(36) NOT NULL, + MBER_TY_CODE VARCHAR(5) NULL, + AUTHOR_CODE VARCHAR(30) NOT NULL, + CONSTRAINT PT_USER_SECURITY_PK PRIMARY KEY (USER_ESNTL_ID) +); + + +CREATE TABLE PORTAL.PT_BOARD_MASTER +( + BOARD_ID VARCHAR(36) NOT NULL, + BOARD_NAME VARCHAR(255) NOT NULL, + BOARD_DESC VARCHAR(2400) NULL, + BOARD_TYPE VARCHAR(6) NOT NULL, + REPLY_POSBL_YN VARCHAR(1) NULL, + FILE_ATCH_POSBL_YN VARCHAR(1) NOT NULL, + ATCH_POSBL_FILE_NUMBER NUMERIC(2) NOT NULL, + ATCH_POSBL_FILE_SIZE NUMERIC(8) NULL, + USE_YN VARCHAR(1) NOT NULL, + TMPLAT_ID VARCHAR(20) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + CONSTRAINT PT_BOARD_MASTER_PK PRIMARY KEY (BOARD_ID) +); + +CREATE TABLE PORTAL.PT_BOARD_AUTHORITY +( + AUTHORITY_ID VARCHAR(36) NOT NULL, + BBS_ID VARCHAR(36) NOT NULL, + AUTHORITY_CODE VARCHAR(36) NULL, + ESNTL_ID VARCHAR(36) NULL, + READ_YN VARCHAR(1) NOT NULL, + WRITE_YN VARCHAR(1) NOT NULL, + MODIFY_YN VARCHAR(1) NOT NULL, + DELETE_YN VARCHAR(1) NOT NULL, + ADMIN_YN VARCHAR(1) NOT NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + primary key (AUTHORITY_ID) +); + +CREATE TABLE PORTAL.PT_BOARD_ARTICLE +( + BOARD_ID VARCHAR(36) NOT NULL, + NTT_NO NUMERIC(20) NULL, + NTT_ID NUMERIC(20) NOT NULL, + NTT_SJ VARCHAR(2000) NULL, + NTT_CN CLOB NULL, + ANSWER_YN VARCHAR(1) NULL, + PARNTSCTT_NO NUMERIC(10) NULL, + ANSWER_LC NUMERIC(8) NULL, + SORT_ORDR NUMERIC(8) NULL, + RDCNT NUMERIC(10) NULL, + USE_YN VARCHAR(1) NOT NULL, + NTCE_BGNDE VARCHAR(20) NULL, + NTCE_ENDDE VARCHAR(20) NULL, + NTCR_ID VARCHAR(36) NULL, + NTCR_NAME VARCHAR(36) NULL, + PASSWORD VARCHAR(200) NULL, + FILE_ID VARCHAR(36) NULL, + NOTICE_YN VARCHAR(1) NULL, + SJ_BOLD_YN VARCHAR(1) NULL, + SECRET_YN VARCHAR(1) NULL, + REGISTERED_ON TIMESTAMP NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_BOARD_ARTICLE_PK PRIMARY KEY (NTT_ID, BOARD_ID) +); + +CREATE TABLE PORTAL.PT_FILE +( + FILE_ID VARCHAR(36) NOT NULL, + USE_YN VARCHAR(1) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + CONSTRAINT PT_FILE_PK PRIMARY KEY (FILE_ID) +); + +CREATE TABLE PORTAL.PT_FILE_DETAIL +( + FILE_ID VARCHAR(36) NOT NULL, + FILE_SN NUMERIC(10) NOT NULL, + ORIGNL_FILE_NAME VARCHAR(255) NULL, + FILE_EXTSN VARCHAR(36) NULL, + FILE_CN CLOB NULL, + FILE_SIZE NUMERIC(8) NULL, + CONSTRAINT PT_FILE_DETAIL_PK PRIMARY KEY (FILE_ID, FILE_SN) +); + + +CREATE TABLE PORTAL.PT_FAQ +( + FAQ_ID VARCHAR(36) NOT NULL, + TITLE VARCHAR(255) NULL, + QUESTION VARCHAR(2500) NULL, + ANSWER VARCHAR(2500) NULL, + RDCNT NUMERIC(10) NULL, + FILE_ID VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + REGISTERED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + CONSTRAINT PT_FAQ_PK PRIMARY KEY (FAQ_ID) +); + + +CREATE TABLE PORTAL.PT_USER +( + ESNTL_ID VARCHAR(36) NOT NULL, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + MOBILE_PHONE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + LOCK_YN VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE TIMESTAMP NULL, + LAST_CHANGE_PASSWORD_DATE TIMESTAMP NULL, + REGISTERED_ON TIMESTAMP null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON TIMESTAMP null, + LAST_MODIFIED_BY VARCHAR(36) null, + PRIMARY KEY (ESNTL_ID) +); + + +CREATE UNIQUE INDEX PT_USER_IDX1 ON PORTAL.PT_USER + ( + USER_ID + ) +; + +CREATE TABLE PORTAL.PT_USER_AUD +( + ESNTL_ID VARCHAR(36) NOT NULL, + REV NUMBER(10) not null, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + MOBILE_PHONE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + LOCK_YN VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE TIMESTAMP NULL, + LAST_CHANGE_PASSWORD_DATE TIMESTAMP NULL, + REGISTERED_ON TIMESTAMP null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON TIMESTAMP null, + LAST_MODIFIED_BY VARCHAR(36) null, + REVTYPE NUMBER(3), + PRIMARY KEY (ESNTL_ID, REV) + +); + + +CREATE TABLE PORTAL.PT_ENT_USER +( + ESNTL_ID VARCHAR(36) NOT NULL, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + IP_ADDRESS VARCHAR(15) NULL, + MOBILE_PHONE VARCHAR(15) NULL, + OFFICE_PHONE VARCHAR(15) NULL, + COMPANY_NAME VARCHAR(15) NULL, + CEO_NAME VARCHAR(15) NULL, + BIZRNO VARCHAR(15) NULL, + JURIRNO VARCHAR(15) NULL, + ZIP VARCHAR(6) NULL, + ADRES VARCHAR(100) NULL, + DETAIL_ADRES VARCHAR(100) NULL, + FXNUM VARCHAR(36) NULL, + INDUTY_CODE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + ENTRPRS_SE_CODE VARCHAR(15) NULL, + LOCK_YN VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE TIMESTAMP NULL, + LAST_CHANGE_PASSWORD_DATE TIMESTAMP NULL, + REGISTERED_ON TIMESTAMP null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON TIMESTAMP null, + LAST_MODIFIED_BY VARCHAR(36) null, + PRIMARY KEY (ESNTL_ID) +); + +CREATE UNIQUE INDEX PT_ENT_USER_PK ON PORTAL.PT_ENT_USER + ( + USER_ID + ) +; + +CREATE TABLE PORTAL.PT_ENT_USER_AUD +( + ESNTL_ID VARCHAR(36) NOT NULL, + REV NUMBER(10) not null, + USER_ID VARCHAR(256) NOT NULL, + USER_NAME VARCHAR(60) NOT NULL, + STATUS VARCHAR(15) NOT NULL, + IP_ADDRESS VARCHAR(15) NULL, + MOBILE_PHONE VARCHAR(15) NULL, + OFFICE_PHONE VARCHAR(15) NULL, + COMPANY_NAME VARCHAR(15) NULL, + CEO_NAME VARCHAR(15) NULL, + BIZRNO VARCHAR(15) NULL, + JURIRNO VARCHAR(15) NULL, + ZIP VARCHAR(6) NULL, + ADRES VARCHAR(100) NULL, + DETAIL_ADRES VARCHAR(100) NULL, + FXNUM VARCHAR(36) NULL, + INDUTY_CODE VARCHAR(15) NULL, + PASSWORD VARCHAR(200) NOT NULL, + PASSWORD_HINT VARCHAR(100) NULL, + PASSWORD_CNSR VARCHAR(100) NULL, + ENTRPRS_SE_CODE VARCHAR(15) NULL, + LOCK_YN VARCHAR(1) NULL, + LOCK_CNT NUMERIC(3) NULL, + LAST_LOCK_DATE TIMESTAMP NULL, + LAST_CHANGE_PASSWORD_DATE TIMESTAMP NULL, + REGISTERED_ON TIMESTAMP null, + REGISTERED_BY VARCHAR(36) null, + LAST_MODIFIED_ON TIMESTAMP null, + LAST_MODIFIED_BY VARCHAR(36) null, + REVTYPE NUMBER(3), + PRIMARY KEY (ESNTL_ID, REV) + +); + + +CREATE TABLE PORTAL.PT_APPROVAL +( + ID NUMBER(19,0) PRIMARY KEY, + APPROVAL_TYPE VARCHAR(32) NULL, + BODY CLOB NULL, + ENDED_ON TIMESTAMP NULL, + REQUESTER_ID VARCHAR(36) NULL, + STATUS VARCHAR(32) NULL, + TARGET_ID VARCHAR(36) NULL, + TITLE VARCHAR(255) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL +); + +CREATE TABLE PORTAL.PT_APPROVAL_APPROVER +( + APPROVAL_ID NUMBER(19,0) NOT NULL, + ORDINAL NUMBER(19,0) NOT NULL, + APPROVED_ON TIMESTAMP NULL, + MESSAGE VARCHAR(255) NULL, + STATUS VARCHAR(255) NULL, + USER_ID VARCHAR(36) NULL, + PRIMARY KEY (APPROVAL_ID, ORDINAL) +); + +CREATE TABLE PORTAL.PT_ROUTE_INFO +( + ID VARCHAR(36) NOT NULL PRIMARY KEY, + API_PATH VARCHAR(512) NULL, + DESCRIPTION CLOB NULL, + LOG_CONTENT_ENCODE_YN VARCHAR(1) NULL, + LOG_LEVEL VARCHAR(1) NULL, + NAME VARCHAR(256) NOT NULL, + ORDER_NO INT NULL, + PATH VARCHAR(256) NOT NULL, + METHOD VARCHAR(32) NULL, + META_DATA_STR CLOB NULL, + RESPONSE_TYPE VARCHAR(32) NULL, + MOCK_URL VARCHAR(255) NULL, + SAMPLE_RESPONSE CLOB NULL, + STATUS VARCHAR(32) NULL, + TYPE VARCHAR(2) NULL, + URI VARCHAR(512) NOT NULL, + USE_YN VARCHAR(1) NULL, + FILE_ID VARCHAR(36) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL +); + +CREATE TABLE PORTAL.PT_API_KEY +( + ID VARCHAR(36) NOT NULL PRIMARY KEY, + OWNER VARCHAR(255) NULL, + NAME VARCHAR(255) NULL, + ENV VARCHAR(32) NULL, + CLIENT_ID VARCHAR(255) NULL, + CLIENT_SECRET VARCHAR(255) NULL, + REDIRECT_URL VARCHAR(255) NULL, + RESPONSE_TYPE VARCHAR(255) NULL, + SCOPE VARCHAR(2000) NULL, + STATUS VARCHAR(255) NULL, + DESCRIPTION VARCHAR(2000) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL +); + + +CREATE TABLE PORTAL.PT_API_KEY_API +( + API_KEY_ID VARCHAR(36) NOT NULL, + API_ID VARCHAR(36) NOT NULL +); + +CREATE TABLE PORTAL.PT_API_KEY_AUD +( + ID VARCHAR(36) NOT NULL, + REV NUMBER(10) not null, + REVTYPE NUMBER(3), + OWNER VARCHAR(255) NULL, + NAME VARCHAR(255) NULL, + ENV VARCHAR(32) NULL, + CLIENT_ID VARCHAR(255) NULL, + CLIENT_SECRET VARCHAR(255) NULL, + REDIRECT_URL VARCHAR(255) NULL, + RESPONSE_TYPE VARCHAR(255) NULL, + SCOPE VARCHAR(2000) NULL, + STATUS VARCHAR(255) NULL, + DESCRIPTION VARCHAR(2000) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + PRIMARY KEY (ID, REV) +); + + +CREATE TABLE PORTAL.PT_API_KEY_API_AUD +( + API_KEY_ID VARCHAR(36) NOT NULL, + API_ID VARCHAR(36) NOT NULL, + REV NUMBER(10) not null, + REVTYPE NUMBER(3), + PRIMARY KEY (API_KEY_ID, API_ID, REV) +); + + +CREATE TABLE PORTAL.PT_AGREEMENTS +( + AGREEMENTS_TYPE VARCHAR(36) NOT NULL, + REVISION INT NOT NULL, + AGREEMENTS_NAME VARCHAR(100) NOT NULL, + AGREEMENTS_CONTENTS CLOB NULL, + STATUS VARCHAR(36) NULL, + PUBLISHED_ON TIMESTAMP NULL, + SCHEDULED_ON TIMESTAMP NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + primary key (AGREEMENTS_TYPE, REVISION) +); + +CREATE TABLE PORTAL.PT_MESSAGE_TEMPLATE +( + MESSAGE_KEY VARCHAR(32) NOT NULL, + MESSAGE_TYPE VARCHAR(16) NOT NULL, + SUBJECT VARCHAR(100) NOT NULL, + CONTENTS CLOB NULL, + USE_YN VARCHAR(1) NULL, + REGISTERED_BY VARCHAR(36) NULL, + REGISTERED_ON TIMESTAMP NULL, + LAST_MODIFIED_BY VARCHAR(36) NULL, + LAST_MODIFIED_ON TIMESTAMP NULL, + primary key (MESSAGE_KEY, MESSAGE_TYPE) +); + +CREATE TABLE PORTAL.PT_MESSAGE_RECIPIENT +( + MESSAGE_KEY VARCHAR(32) not null, + MESSAGE_TYPE VARCHAR(16) not null, + ESNTL_ID VARCHAR(36) not null, + constraint PK_MESSAGE_RECIPIENT PRIMARY KEY (MESSAGE_KEY, MESSAGE_TYPE, ESNTL_ID) +); + +CREATE TABLE PORTAL.PT_TOKEN +( + TOKEN VARCHAR(255) NOT NULL, + EMAIL VARCHAR(255) NOT NULL, + EXPIRES_ON TIMESTAMP NOT NULL, + primary key (TOKEN) +); + +CREATE TABLE PORTAL.PT_TWO_FACTOR_AUTH +( + RECIPIENT VARCHAR(255) NOT NULL, + AUTH_NUMBER VARCHAR(255), + EXPIRES_ON TIMESTAMP, + PRIMARY KEY (RECIPIENT) +); + +create table PORTAL.PT_QNA_QUESTION +( + ID VARCHAR(36) not null, + EMAIL VARCHAR(100) not null, + NAME VARCHAR(50) not null, + PHONE VARCHAR(20), + PASSWORD VARCHAR(100), + SUBJECT VARCHAR(200) not null, + CONTENT CLOB not null, + STATUS VARCHAR(20) not null, + FILE_ID VARCHAR(36), + IP_ADDRESS VARCHAR(45), + USER_ID VARCHAR(36), + ANSWERED_AT TIMESTAMP, + CREATED_AT TIMESTAMP null, + UPDATED_AT TIMESTAMP null, + PRIMARY KEY (ID) +); + +create table PORTAL.PT_QNA_ANSWER +( + ID VARCHAR(36) not null, + QUESTION_ID VARCHAR(36) not null, + ADMIN_ID VARCHAR(36) not null, + CONTENT CLOB not null, + FILE_ID VARCHAR(36), + CREATED_AT TIMESTAMP null, + UPDATED_AT TIMESTAMP null, + PRIMARY KEY (ID) +); + + + +CREATE VIEW PORTAL.PT_USER_VIEW + (ESNTL_ID, USER_ID, PASSWORD, USER_NAME, USER_SE) +AS +SELECT ESNTL_ID, + USER_ID, + PASSWORD, + USER_NAME, + 'USR' AS USER_SE +FROM PORTAL.PT_USER +UNION ALL +SELECT ESNTL_ID, + USER_ID, + PASSWORD, + USER_NAME, + 'ENT' AS USER_SE +FROM PORTAL.PT_ENT_USER +ORDER BY ESNTL_ID; diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..330c133 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,7 @@ +rootProject.name = 'eapim-portal' + +include 'elink-online-core-jpa' +include 'elink-portal-common' + +project (':elink-online-core-jpa').projectDir = new File(settingsDir, "../eapim-online/elink-online-core-jpa") +project (':elink-portal-common').projectDir = new File(settingsDir, "../elink-portal-common") diff --git a/src/main/java/com/eactive/apim/gateway/data/ClientEntityRepository.java b/src/main/java/com/eactive/apim/gateway/data/ClientEntityRepository.java new file mode 100644 index 0000000..eb14853 --- /dev/null +++ b/src/main/java/com/eactive/apim/gateway/data/ClientEntityRepository.java @@ -0,0 +1,17 @@ +package com.eactive.apim.gateway.data; + +import com.eactive.eai.data.entity.onl.authserver.ClientEntity; +import com.eactive.eai.data.jpa.BaseRepository; +import java.util.List; +import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +public interface ClientEntityRepository extends BaseRepository { + + Page findAllByOrgid(Pageable pageable, String orgid); + + List findAllByOrgid(String orgid); + + Optional findByClientidAndOrgid(String clientid, String orgid); +} diff --git a/src/main/java/com/eactive/apim/gateway/data/apiservice/repository/ApiServiceRepository.java b/src/main/java/com/eactive/apim/gateway/data/apiservice/repository/ApiServiceRepository.java new file mode 100644 index 0000000..d171cb9 --- /dev/null +++ b/src/main/java/com/eactive/apim/gateway/data/apiservice/repository/ApiServiceRepository.java @@ -0,0 +1,8 @@ +package com.eactive.apim.gateway.data.apiservice.repository; + +import com.eactive.eai.data.entity.onl.apim.apigroup.ApiGroup; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface ApiServiceRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/src/main/java/com/eactive/apim/gateway/data/bizcode/UnifBwkTpRepository.java b/src/main/java/com/eactive/apim/gateway/data/bizcode/UnifBwkTpRepository.java new file mode 100644 index 0000000..03ffdd9 --- /dev/null +++ b/src/main/java/com/eactive/apim/gateway/data/bizcode/UnifBwkTpRepository.java @@ -0,0 +1,8 @@ +package com.eactive.apim.gateway.data.bizcode; + +import com.eactive.eai.data.entity.onl.unifbwk.UnifBwkTp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface UnifBwkTpRepository extends JpaRepository, JpaSpecificationExecutor{ +} diff --git a/src/main/java/com/eactive/apim/gateway/data/eaimessage/EAIMessageRepository.java b/src/main/java/com/eactive/apim/gateway/data/eaimessage/EAIMessageRepository.java new file mode 100644 index 0000000..1575970 --- /dev/null +++ b/src/main/java/com/eactive/apim/gateway/data/eaimessage/EAIMessageRepository.java @@ -0,0 +1,8 @@ +package com.eactive.apim.gateway.data.eaimessage; + +import com.eactive.eai.data.entity.onl.message.EAIMessageEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface EAIMessageRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/src/main/java/com/eactive/apim/gateway/data/standardmessageinfo/StandardMessageInfoRepository.java b/src/main/java/com/eactive/apim/gateway/data/standardmessageinfo/StandardMessageInfoRepository.java new file mode 100644 index 0000000..fd93321 --- /dev/null +++ b/src/main/java/com/eactive/apim/gateway/data/standardmessageinfo/StandardMessageInfoRepository.java @@ -0,0 +1,12 @@ +package com.eactive.apim.gateway.data.standardmessageinfo; + +import com.eactive.eai.data.entity.onl.stdmessage.StandardMessageInfo; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +import java.util.Optional; + + +public interface StandardMessageInfoRepository extends JpaRepository,JpaSpecificationExecutor { + Optional findByEaisvcname(String eaiSvcName); +} diff --git a/src/main/java/com/eactive/apim/portal/PortalApplication.java b/src/main/java/com/eactive/apim/portal/PortalApplication.java new file mode 100644 index 0000000..1b2a38d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/PortalApplication.java @@ -0,0 +1,35 @@ +package com.eactive.apim.portal; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication(exclude = { + UserDetailsServiceAutoConfiguration.class, +}, +scanBasePackages = "com.eactive.apim.portal") +@EnableScheduling +@EnableConfigurationProperties +@ConfigurationPropertiesScan(basePackages = {"com.eactive.apim.portal"}) +public class PortalApplication extends SpringBootServletInitializer { + + private static final Logger portal_logger = LoggerFactory.getLogger(PortalApplication.class); + + public static void main(String[] args) { + + portal_logger.info("##### PortalApplication Start #####"); + + SpringApplication.run(new Class[]{PortalApplication.class}, args); + + portal_logger.info("##### PortalApplication Ready #####"); + } + +} + diff --git a/src/main/java/com/eactive/apim/portal/apps/HealthCheckController.java b/src/main/java/com/eactive/apim/portal/apps/HealthCheckController.java new file mode 100644 index 0000000..00f9c3f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/HealthCheckController.java @@ -0,0 +1,14 @@ +package com.eactive.apim.portal.apps; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HealthCheckController { + @GetMapping(value = "/health", produces = "text/plain") + public String health() { + return "ok"; + } +} + + diff --git a/src/main/java/com/eactive/apim/portal/apps/agreements/controller/AgreementsController.java b/src/main/java/com/eactive/apim/portal/apps/agreements/controller/AgreementsController.java new file mode 100644 index 0000000..6b7f9a9 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/agreements/controller/AgreementsController.java @@ -0,0 +1,64 @@ +package com.eactive.apim.portal.apps.agreements.controller; + +import com.eactive.apim.portal.agreements.entity.AgreementType; +import com.eactive.apim.portal.apps.agreements.dto.AgreementsDTO; +import com.eactive.apim.portal.apps.agreements.service.AgreementsFacade; +import java.time.format.DateTimeFormatter; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +@RequestMapping("/agreements") +public class AgreementsController { + public static final String TERMS_AGREEMENTS = "fragment/kbank/terms_agreements"; + + private final AgreementsFacade agreementsFacade; + + @Autowired + public AgreementsController(AgreementsFacade agreementsFacade) { + this.agreementsFacade = agreementsFacade; + } + + @GetMapping("/terms") + public String showTerms(@RequestParam(required = false) String tab, + @RequestParam(required = false) String publishedOn, + Model model) { + AgreementType type; + if ("privacy".equals(tab)) { + type = AgreementType.PRIVACY_POLICY; + } else { + type = AgreementType.TERMS_OF_USE; + } + + List agreementsList = agreementsFacade.getAgreementsList(String.valueOf(type)); + model.addAttribute("agreementsList", agreementsList); + + AgreementsDTO selectedAgreement = publishedOn != null && !publishedOn.isEmpty() ? + findAgreementByDate(agreementsList, publishedOn) : agreementsList.get(0); + + model.addAttribute("selectedAgreement", selectedAgreement); + model.addAttribute("selectedDate", publishedOn); + + model.addAttribute("isTermsOfUse", type == AgreementType.TERMS_OF_USE); + model.addAttribute("isPrivacyPolicy", type == AgreementType.PRIVACY_POLICY); + model.addAttribute("agreementTitle", type.getDescription()); + model.addAttribute("agreementType", type.getCode()); + + model.addAttribute("currentTab", tab != null ? tab : "terms"); + + return TERMS_AGREEMENTS; + } + + private AgreementsDTO findAgreementByDate(List agreements, String publishedOn) { + return agreements.stream() + .filter(a -> publishedOn.equals( + a.getPublishedOn().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) + .findFirst() + .orElse(agreements.get(0)); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/agreements/dto/AgreementsDTO.java b/src/main/java/com/eactive/apim/portal/apps/agreements/dto/AgreementsDTO.java new file mode 100644 index 0000000..a782879 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/agreements/dto/AgreementsDTO.java @@ -0,0 +1,43 @@ +package com.eactive.apim.portal.apps.agreements.dto; + +import com.eactive.apim.portal.agreements.entity.AgreementsStatus; +import java.time.LocalDateTime; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode +public class AgreementsDTO { + /* pk */ + private String agreementsType; + + private int revision; + + + private String name; + + private String contents; + + private AgreementsStatus status; + + /* 제정일 */ + private LocalDateTime publishedOn; + + /* 시행일 */ + private LocalDateTime scheduledOn; + + + private String createdBy; + + private LocalDateTime createdDate; + + private String updatedBy; + + private LocalDateTime updatedDate; + + // 기본 생성자 추가 + public AgreementsDTO() { + this.contents = ""; // null 방지를 위한 기본값 설정 + this.name = ""; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/agreements/mapper/AgreementsMapper.java b/src/main/java/com/eactive/apim/portal/apps/agreements/mapper/AgreementsMapper.java new file mode 100644 index 0000000..0a4631c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/agreements/mapper/AgreementsMapper.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.apps.agreements.mapper; + +import com.eactive.apim.portal.agreements.entity.Agreements; +import com.eactive.apim.portal.apps.agreements.dto.AgreementsDTO; +import com.eactive.apim.portal.common.mapper.CommonMapper; +import java.util.List; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring", + uses = {CommonMapper.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Component + +public interface AgreementsMapper { + + AgreementsDTO map(Agreements entity); + + List map(List agreementsList); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/agreements/service/AgreementsFacade.java b/src/main/java/com/eactive/apim/portal/apps/agreements/service/AgreementsFacade.java new file mode 100644 index 0000000..9d7db5c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/agreements/service/AgreementsFacade.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.apps.agreements.service; + +import com.eactive.apim.portal.agreements.entity.AgreementType; +import com.eactive.apim.portal.apps.agreements.dto.AgreementsDTO; +import java.util.List; + +public interface AgreementsFacade { + + AgreementsDTO getAgreement(String agreementsType); + + List getAgreementsList(String agreementsType); + + void saveUserAgreements(String userId, AgreementType privacyCollectType); + + void deleteUserAgreements(String userId); + +} + diff --git a/src/main/java/com/eactive/apim/portal/apps/agreements/service/AgreementsFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/agreements/service/AgreementsFacadeImpl.java new file mode 100644 index 0000000..65d1c18 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/agreements/service/AgreementsFacadeImpl.java @@ -0,0 +1,163 @@ +package com.eactive.apim.portal.apps.agreements.service; + +import com.eactive.apim.portal.agreements.entity.AgreementType; +import com.eactive.apim.portal.agreements.entity.Agreements; +import com.eactive.apim.portal.agreements.service.AgreementsService; +import com.eactive.apim.portal.apps.agreements.dto.AgreementsDTO; +import com.eactive.apim.portal.apps.agreements.mapper.AgreementsMapper; +import com.eactive.apim.portal.apps.user.service.PortalUserPrivacyAgreementService; +import com.eactive.apim.portal.common.exception.NotFoundException; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import org.apache.commons.lang3.StringEscapeUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class AgreementsFacadeImpl implements AgreementsFacade { + + private final AgreementsService agreementsService; + private final AgreementsMapper agreementsMapper; + private final PortalUserPrivacyAgreementService userAgreementService; + + @Autowired + public AgreementsFacadeImpl(AgreementsService agreementsService, + AgreementsMapper agreementsMapper, + PortalUserPrivacyAgreementService userAgreementService) { + this.agreementsService = agreementsService; + this.agreementsMapper = agreementsMapper; + this.userAgreementService = userAgreementService; + } + + @Override + @Transactional + public void saveUserAgreements(String userId, AgreementType privacyCollectType) { + LocalDateTime now = LocalDateTime.now(); + + // 1. 이용약관 처리 + Optional termsOfUse = agreementsService + .findLastesBeforeDate( + AgreementType.TERMS_OF_USE, + now); + if (termsOfUse.isPresent()) { + userAgreementService.saveOrUpdateAgreements( + userId, // UUID 사용 + String.valueOf(AgreementType.TERMS_OF_USE), + termsOfUse.get().getRevision() + ); + } else { + throw new NotFoundException("현재 시행중인 이용약관이 없습니다."); + } + + // 2. 개인정보수집동의서 처리 + if (privacyCollectType != null && privacyCollectType.isPrivacyCollect()) { + Optional privacyCollect = agreementsService + .findLastesBeforeDate( + privacyCollectType, + now); + if (privacyCollect.isPresent()) { + userAgreementService.saveOrUpdateAgreements( + userId, + String.valueOf(privacyCollectType), + privacyCollect.get().getRevision() + ); + } else { + throw new NotFoundException("현재 시행중인 개인정보수집동의서가 없습니다."); + } + } + } + + // HTML 언이스케이프 처리 + private AgreementsDTO convertToDTO(Agreements agreement) { + AgreementsDTO dto = agreementsMapper.map(agreement); + if (dto.getContents() != null) { + dto.setContents(StringEscapeUtils.unescapeHtml4(dto.getContents())); + } + return dto; + } + + @Override + public AgreementsDTO getAgreement(String agreementsTypeCode) { + LocalDateTime date = LocalDateTime.now(); + AgreementType agreementType = AgreementType.fromCode(agreementsTypeCode); + + // 1. 현재 날짜 이전의 가장 최근 약관 조회 + Optional beforeToday = agreementsService + .findLastesBeforeDate(agreementType, date); + if (beforeToday.isPresent()) { + return convertToDTO(beforeToday.get()); + } + + // 2. 현재 날짜 이후의 가장 가까운 약관 조회 + Optional afterToday = agreementsService + .findEarliesAfterDate(String.valueOf(agreementType), date); + if (afterToday.isPresent()) { + return convertToDTO(afterToday.get()); + } + + // 3. 약관이 없는 경우 기본 약관 + return createDefaultAgreement(String.valueOf(agreementType)); + } + + private AgreementsDTO createDefaultAgreement(String agreementType) { + AgreementsDTO defaultAgreement = new AgreementsDTO(); + defaultAgreement.setAgreementsType(agreementType); + defaultAgreement.setRevision(0); + + switch (agreementType) { + case "TERMS_OF_USE": + defaultAgreement.setName("이용약관"); + defaultAgreement.setContents("현재 이용약관을 불러올 수 없습니다. 잠시 후 다시 시도해 주세요."); + break; + case "PRIVACY_POLICY": + defaultAgreement.setName("개인정보처리방침"); + defaultAgreement.setContents("현재 개인정보처리방침을 불러올 수 없습니다. 잠시 후 다시 시도해 주세요."); + break; + case "PRIVACY_COLLECT_IND": + defaultAgreement.setName("개인용 개인정보수집동의서"); + defaultAgreement.setContents("현재 개인용 개인정보수집동의서를 불러올 수 없습니다. 잠시 후 다시 시도해 주세요."); + break; + case "PRIVACY_COLLECT_ORG": + defaultAgreement.setName("법인용 개인정보수집동의서"); + defaultAgreement.setContents("현재 법인용 개인정보수집동의서를 불러올 수 없습니다. 잠시 후 다시 시도해 주세요."); + break; + default: + defaultAgreement.setName("약관"); + defaultAgreement.setContents("약관 내용을 불러올 수 없습니다. 잠시 후 다시 시도해 주세요."); + break; + } + + return defaultAgreement; + } + + @Override + public List getAgreementsList(String agreementsType) { + AgreementType agreementTypeCode = AgreementType.fromCode(agreementsType); + List agreementsList = agreementsService.findAllAgreementsSortPublishedOn(agreementTypeCode); + if (agreementsList == null || agreementsList.isEmpty()) { + return Collections.singletonList(createDefaultAgreement(String.valueOf(agreementTypeCode))); + } + return agreementsList.stream() + .map(agreement -> { + AgreementsDTO dto = agreementsMapper.map(agreement); + + // HTML 언이스케이프 처리 + if (dto.getContents() != null) { + dto.setContents(StringEscapeUtils.unescapeHtml4(dto.getContents())); + } + return dto; + }) + .collect(Collectors.toList()); + } + + @Override + @Transactional + public void deleteUserAgreements(String userId) { + userAgreementService.deleteUserAgreements(userId); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiAjaxController.java b/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiAjaxController.java new file mode 100644 index 0000000..c2cec8f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiAjaxController.java @@ -0,0 +1,106 @@ +package com.eactive.apim.portal.apps.apis.controller; + + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiService; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; +import com.eactive.apim.portal.apps.app.dto.ClientDTO; +import com.eactive.apim.portal.apps.app.service.AppServiceFacade; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.annotation.Secured; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/apis") +@RequiredArgsConstructor +public class ApiAjaxController { + + private final static String STG_SERVER = "STG"; + + private final ApiService apiService; + private final ApiServiceService apiServiceService; + private final AppServiceFacade appServiceFacade; + + public Map getMainIconsFromServiceDtos(List apiServices) { + Map mainIconsMap = new HashMap<>(); + + apiServices.forEach(service -> { + service.getApiGroupApiList().forEach(api -> { + String apiId = api.getApiId(); + mainIconsMap.put(apiId, service); + }); + }); + + return mainIconsMap; + } + + @GetMapping("/for_request") + @Secured("ROLE_API_KEY_REQUEST") + public List apiRequest(@ModelAttribute ApiGroupSearch search) { + List apiServices = apiServiceService.searchApiGroups(search); + Map mainIconsMap = getMainIconsFromServiceDtos(apiServices); + List apiSpecInfoDtos = apiService.findApis(); + + for (ApiSpecInfoDto spec : apiSpecInfoDtos) { + ApiServiceDTO serviceDTO = mainIconsMap.get(spec.getApiId()); + if (serviceDTO != null) { + String mainIcon = serviceDTO.getMainIcon(); + String service = serviceDTO.getGroupName(); + spec.setMainIcon(mainIcon); + spec.setService(service); + } + } + return apiSpecInfoDtos; + } + + @GetMapping("/for_request_prod") + @Secured("ROLE_API_KEY_REQUEST") + public List apiRequestProd(@ModelAttribute ApiGroupSearch search) { + + List apiServices = apiServiceService.searchApiGroups(search); + Map mainIconsMap = getMainIconsFromServiceDtos(apiServices); + + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + + List apikeys = appServiceFacade.getApiKeyList(user.getPortalOrg(), STG_SERVER); + + List apis = apikeys.stream() + .flatMap(client -> client.getApiList().stream()) // flatten all apiLists into a single stream of ApiServiceApiDTO + .distinct() // remove duplicates + .collect(Collectors.toList()); // collect to List + + List apiSpecInfoDtos = new ArrayList<>(); + + apis.forEach(api -> { + ApiSpecInfoDto specInfoDto = new ApiSpecInfoDto(); + specInfoDto.setApiId(api.getApiId()); + specInfoDto.setApiName(api.getApiDesc()); + apiSpecInfoDtos.add(specInfoDto); + }); + + for (ApiSpecInfoDto spec : apiSpecInfoDtos) { + ApiServiceDTO serviceDTO = mainIconsMap.get(spec.getApiId()); + if (serviceDTO != null) { + String mainIcon = serviceDTO.getMainIcon(); + String service = serviceDTO.getGroupName(); + spec.setMainIcon(mainIcon); + spec.setService(service); + } + } + return apiSpecInfoDtos; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiController.java b/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiController.java new file mode 100644 index 0000000..a3ecb91 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiController.java @@ -0,0 +1,144 @@ +package com.eactive.apim.portal.apps.apis.controller; + + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiSearchFacade; +import com.eactive.apim.portal.apps.apis.service.ApiService; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; + +import java.util.*; + +import com.eactive.apim.portal.common.exception.NotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +@RequestMapping("/apis") +@RequiredArgsConstructor +public class ApiController { + private static final String NOT_FOUND_MESSAGE = "찾을 수 없습니다."; + private final ApiService apiService; + private final ApiServiceService apiServiceService; + private final ApiSearchFacade apiSearchFacade; + private static final String DEFAULT_TOKEN_API_ID = "default-token-api-spec"; + private static final String DEFAULT_TOKEN_API_NAME = "인증"; + + @GetMapping("/detail") + public String apidetail(@RequestParam(value = "id", required = false) String id, ModelMap model) { + if( id ==null) { + return "redirect:/apis/common"; + } + + ApiSpecInfoDto api = apiService.selectDetail(id); + if(api==null){ + throw new NotFoundException(NOT_FOUND_MESSAGE); + } + model.addAttribute("apiSpecInfo", api); + return "apps/apis/mainApiDetail"; + } + + @GetMapping + public String apiList(@ModelAttribute ApiGroupSearch search, Model model) { + Map searchResult = apiSearchFacade.searchApis(search); + + model.addAttribute("search", search); + model.addAttribute("services", searchResult.get("services")); + model.addAttribute("apis", searchResult.get("apis")); + model.addAttribute("totalApiCount", searchResult.get("totalApiCount")); + model.addAttribute("selectedApiCount", searchResult.get("selectedApiCount")); + model.addAttribute("selected", search.getGroupIds().size() >0 ? search.getGroupIds().get(0) : "-1"); + + return "apps/apis/mainApiList"; + } + + @GetMapping("/testbed/api") + public String testbedByApi(@RequestParam(value = "id", required = false) String id, Model model) { + String selectedApiServiceName = "API 서비스 선택"; + String selectedServiceId = ""; + boolean idExists = false; + + try { + if (id != null && !id.isEmpty()) { + ApiServiceDTO apiService = apiServiceService.findApiServiceByApiId(id); + if (apiService != null) { + selectedApiServiceName = apiService.getGroupName(); + selectedServiceId = apiService.getId(); + idExists = true; + setupTestbedModel(model, selectedServiceId, selectedApiServiceName, idExists); + } + } + } catch (Exception e) { + model.addAttribute("errorMessage", "API 정보를 조회하는 중 오류가 발생했습니다."); + } + + setupTestbedModel(model, selectedServiceId, selectedApiServiceName, idExists); + + return "apps/apis/mainTestbed"; + } + + @GetMapping("/testbed") + public String testbedByApiService(@RequestParam(value = "id", required = false) String id, Model model) { + String selectedApiServiceName = "API 서비스 선택"; + boolean idExists = false; + + try { + if (id != null && !id.isEmpty()) { + List apiServiceDtoList = apiServiceService.searchApiGroupsForLnb(); + Optional selectedApi = apiServiceDtoList.stream() + .filter(api -> api.getId().equals(id)) + .findFirst(); + + if (selectedApi.isPresent()) { + selectedApiServiceName = selectedApi.get().getGroupName(); + idExists = true; + } + } + } catch (Exception e) { + model.addAttribute("errorMessage", "API 서비스 정보를 조회하는 중 오류가 발생했습니다."); + } + + setupTestbedModel(model, id, selectedApiServiceName, idExists); + + return "apps/apis/mainTestbed"; + } + + private void setupTestbedModel(Model model, String id, String selectedApiServiceName, boolean idExists) { + List apiServiceDtoList = apiServiceService.searchApiGroupsForLnb(); + + if (apiServiceDtoList == null) { + apiServiceDtoList = new ArrayList<>(); + } + + // OAuth API를 첫 번째 항목으로 추가 + ApiServiceDTO oauthService = new ApiServiceDTO(); + oauthService.setId(DEFAULT_TOKEN_API_ID); + oauthService.setGroupName(DEFAULT_TOKEN_API_NAME); + apiServiceDtoList.add(0, oauthService); + + for (ApiServiceDTO apiServiceDTO : apiServiceDtoList) { + apiServiceDTO.setContentIcon(null); + apiServiceDTO.setMainIcon(null); + apiServiceDTO.setApiGroupApiList(null); + } + + // id가 없는 경우 OAuth를 기본값으로 설정 + if (!idExists) { + id = DEFAULT_TOKEN_API_ID; + selectedApiServiceName = DEFAULT_TOKEN_API_NAME; + idExists = true; + } + + model.addAttribute("apiServices", apiServiceDtoList); + model.addAttribute("id", idExists ? id : ""); + model.addAttribute("selectedApiName", selectedApiServiceName); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiHandler.java b/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiHandler.java new file mode 100644 index 0000000..d77a072 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/controller/ApiHandler.java @@ -0,0 +1,34 @@ +package com.eactive.apim.portal.apps.apis.controller; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; +import com.eactive.apim.portal.common.pagerouter.PageHandler; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import org.springframework.ui.Model; + +@Component("apiHandler") +@RequiredArgsConstructor +public class ApiHandler implements PageHandler { + + private final ApiServiceService apiServiceService; + + @Override + public void handleRequest(HttpServletRequest httpRequest, Model model) { + + ApiGroupSearch search = new ApiGroupSearch(); + List apiServices = apiServiceService.searchApiGroups(search); + + for (ApiServiceDTO apiServiceDTO : apiServices) { + ApiServiceDTO apiService = apiServiceService.getApiGroupById(apiServiceDTO.getId()); + apiServiceDTO.getApiGroupApiList().clear(); + apiServiceDTO.getApiGroupApiList().addAll(apiService.getApiGroupApiList()); + } + + model.addAttribute("apiServices", apiServices); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/controller/SampleCodeGeneratorController.java b/src/main/java/com/eactive/apim/portal/apps/apis/controller/SampleCodeGeneratorController.java new file mode 100644 index 0000000..d512a46 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/controller/SampleCodeGeneratorController.java @@ -0,0 +1,37 @@ +package com.eactive.apim.portal.apps.apis.controller; + + +import com.eactive.apim.portal.apps.apis.dto.ParsedRequestDTO; +import com.eactive.apim.portal.apps.apis.service.SampleCodeGenerator; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by Sungpil Hyun + */ +@RestController +@RequestMapping("/api/sample_code") +public class SampleCodeGeneratorController { + + private final SampleCodeGenerator sampleCodeGenerator; + + private static final List allowLang = Arrays.asList("java", "csharp", "python", "ecma5"); + + public SampleCodeGeneratorController(SampleCodeGenerator sampleCodeGenerator) { + this.sampleCodeGenerator = sampleCodeGenerator; + } + + @PostMapping(value = "/{language}", consumes = "application/json", produces = "text/plain") + public ResponseEntity createRoute(@PathVariable("language") String language, + @RequestBody ParsedRequestDTO parsedRequest) { + if (!allowLang.contains(language)) { + return ResponseEntity.ok().body(""); + } + + String code = sampleCodeGenerator.generateCodeSnippet(language, parsedRequest); + return ResponseEntity.ok().body(code); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/controller/TestbedSpecController.java b/src/main/java/com/eactive/apim/portal/apps/apis/controller/TestbedSpecController.java new file mode 100644 index 0000000..a442e93 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/controller/TestbedSpecController.java @@ -0,0 +1,51 @@ +package com.eactive.apim.portal.apps.apis.controller; + +import com.eactive.apim.portal.apps.apiservice.service.ApiSpecService; +import java.io.IOException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/apis") +@Slf4j +public class TestbedSpecController { + + @Autowired + ApiSpecService apiSpecService; + + private static final String DEFAULT_TOKEN_API_ID = "default-token-api-spec"; + private static final String DEFAULT_SPEC_PATH = "swagger/default-token-api-spec.json"; + + @GetMapping(value = "/{id}/swagger.json", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity getSwagger(@PathVariable String id) { + + if (DEFAULT_TOKEN_API_ID.equals(id)) { + try { + Resource resource = new ClassPathResource(DEFAULT_SPEC_PATH); + String content = new String(FileCopyUtils.copyToByteArray(resource.getInputStream())); + return ResponseEntity.ok().body(content); + } catch (IOException e) { + log.error("Failed to read default token api spec file", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + } + + String testbedSpec = apiSpecService.generateApiServiceTestbedSpec(id); + + if (testbedSpec.isEmpty()) { + return ResponseEntity.notFound().build(); + } else { + return ResponseEntity.ok().body(testbedSpec); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/dto/ApiSearchData.java b/src/main/java/com/eactive/apim/portal/apps/apis/dto/ApiSearchData.java new file mode 100644 index 0000000..39a5ecc --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/dto/ApiSearchData.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.apps.apis.dto; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import java.util.List; +import java.util.Map; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class ApiSearchData { + + private List allServices; + + private Map apiSpecsById; + + private Map servicesByApiId; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/dto/ApiSpecInfoDto.java b/src/main/java/com/eactive/apim/portal/apps/apis/dto/ApiSpecInfoDto.java new file mode 100644 index 0000000..593c80d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/dto/ApiSpecInfoDto.java @@ -0,0 +1,47 @@ +package com.eactive.apim.portal.apps.apis.dto; + +import lombok.Data; + +@Data +public class ApiSpecInfoDto { + + private String apiId; + + private String apiName; + + private String apiSimpleDescription; + + private String apiUrl; + + private String apiMethod; + + private String apiContentType; + + private String apiRequestSpec; + + private String apiResponseSpec; + + private String sampleRequest; + + private String sampleResponse; + + private String responseType; //sample, mock + + private String mockUrl; + + private String fileId; + + private String description; + + private String testbedSpec; //swagger json + + private String mainIcon; + + private String service; + + private String displayYn; + + private String displayOrg; + + private String displayRoleCode; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/dto/Param.java b/src/main/java/com/eactive/apim/portal/apps/apis/dto/Param.java new file mode 100644 index 0000000..480a178 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/dto/Param.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.apps.apis.dto; + +import lombok.Data; + +@Data +public class Param { + + private String key; + private Boolean isFile; + private String value; + + public Param() { + } + + public Param(String key, Boolean isFile, String value) { + this.key = key; + this.isFile = isFile; + this.value = value; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/dto/ParsedRequestDTO.java b/src/main/java/com/eactive/apim/portal/apps/apis/dto/ParsedRequestDTO.java new file mode 100644 index 0000000..6b8502a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/dto/ParsedRequestDTO.java @@ -0,0 +1,22 @@ +package com.eactive.apim.portal.apps.apis.dto; + +import java.util.Map; +import lombok.Data; + +@Data +public class ParsedRequestDTO { + + private String method; + private String originalUrl; + private String host; + private String port; + private String protocol; + private Map headers; + private RequestBody body; + + public String getContentType(){ + if(headers == null || headers.isEmpty()) return "application/json"; + return headers.get("content-type"); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/dto/PortalApiDTO.java b/src/main/java/com/eactive/apim/portal/apps/apis/dto/PortalApiDTO.java new file mode 100644 index 0000000..19152c1 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/dto/PortalApiDTO.java @@ -0,0 +1,32 @@ +package com.eactive.apim.portal.apps.apis.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode +public class PortalApiDTO { + + private String id; + + private String name; //gw + + private String method; //gw + + private String uri; //http://로 시작하는 서버 경로 //gw + + private String path; //gateway 에 노출 되는 경로 //gw + + private String apiPath; //backend 경로 //gw + + private String apiSpec; //api_spec_info + + private String description; //api_spec_info + + private String responseType; //api_spec_info + + private String mockUrl; //api_spec_info + + private String sampleResponse; //api_spec_info + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/dto/PropertyDTO.java b/src/main/java/com/eactive/apim/portal/apps/apis/dto/PropertyDTO.java new file mode 100644 index 0000000..63eb344 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/dto/PropertyDTO.java @@ -0,0 +1,38 @@ +package com.eactive.apim.portal.apps.apis.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +@Data +public class PropertyDTO implements Serializable { + + private Long id; + + private String application; + + private String profile; + + private String label; + + private String propertyKey; + + private String propertyValue; + + private String description; + + private String descriptionEn; + + private Integer orderNo; + + private boolean useYn; + + private Date registeredOn; + + private String registeredBy; + + private Date modifiedOn; + + private String modifiedBy; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/dto/RequestBody.java b/src/main/java/com/eactive/apim/portal/apps/apis/dto/RequestBody.java new file mode 100644 index 0000000..c0417d3 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/dto/RequestBody.java @@ -0,0 +1,14 @@ +package com.eactive.apim.portal.apps.apis.dto; + +import java.util.ArrayList; +import java.util.List; +import lombok.Data; + +@Data +public class RequestBody { + private Boolean isFile; + private String payload; + + private List params = new ArrayList<>(); + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/filter/APISender.java b/src/main/java/com/eactive/apim/portal/apps/apis/filter/APISender.java new file mode 100644 index 0000000..0a3874a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/filter/APISender.java @@ -0,0 +1,145 @@ +package com.eactive.apim.portal.apps.apis.filter; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component +public class APISender { + + private static final Logger logger = LoggerFactory.getLogger(APISender.class); + + public String requestPost(String uri, String requestBody) throws IOException { + + HttpURLConnection connection = getHttpURLConnection(uri, requestBody); + + String response = getResponse(connection); + + connection.disconnect(); + if (logger.isDebugEnabled()) { + logger.debug(response); + } + return response; + } + + private String appendUriAndParams(String uri, Map params) throws UnsupportedEncodingException { + StringBuilder uriBuilder = new StringBuilder(uri); + + if (params != null && !params.isEmpty()) { + uriBuilder.append("?"); + for (Map.Entry entry : params.entrySet()) { + String key = entry.getKey(); + String[] values = entry.getValue(); + for (String value : values) { + uriBuilder.append(URLEncoder.encode(key, "UTF-8")); + uriBuilder.append("="); + uriBuilder.append(URLEncoder.encode(value, "UTF-8")); + uriBuilder.append("&"); + } + } + // Remove the last '&' + uriBuilder.deleteCharAt(uriBuilder.length() - 1); + } + return uriBuilder.toString(); + } + + public String requestGet(String uri, Map headers, Map params) throws IOException { + + URL endpoint = new URL(appendUriAndParams(uri, params)); + HttpURLConnection connection = (HttpURLConnection) endpoint.openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("Accept", "application/json"); + for (Map.Entry entry : headers.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + if (key != null && value != null) { + connection.setRequestProperty(key, value); + } + } + connection.setDoOutput(true); + + String response = getResponse(connection); + connection.disconnect(); + + if (logger.isDebugEnabled()) { + logger.debug(response); + } + return response; + } + + public String requestPost(String uri, Map headers, Map params, String requestBody) throws IOException { + + URL endpoint = new URL(appendUriAndParams(uri, params)); + HttpURLConnection connection = (HttpURLConnection) endpoint.openConnection(); + connection.setRequestMethod("POST"); + + for (Map.Entry entry : headers.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + if (key != null && value != null) { + connection.setRequestProperty(key, value); + } + } + connection.setDoOutput(true); + + try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { + byte[] requestBodyBytes = requestBody.getBytes(StandardCharsets.UTF_8); + outputStream.write(requestBodyBytes); + outputStream.flush(); + } + + String response = getResponse(connection); + connection.disconnect(); + + if (logger.isDebugEnabled()) { + logger.debug(response); + } + return response; + } + + + private static String getResponse(HttpURLConnection connection) throws IOException { + int responseCode = connection.getResponseCode(); + StringBuilder response = new StringBuilder(); + + try (InputStream stream = (responseCode < 400) ? connection.getInputStream() : connection.getErrorStream(); InputStreamReader isr = new InputStreamReader(stream); + BufferedReader reader = new BufferedReader(isr)) { + + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + } + + return response.toString(); + } + + private static HttpURLConnection getHttpURLConnection(String uri, String requestBody) throws IOException { + URL endpoint = new URL(uri); + + HttpURLConnection connection = (HttpURLConnection) endpoint.openConnection(); + + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json; charset=utf-8"); + connection.setRequestProperty("Accept", "application/json"); + connection.setDoOutput(true); + + try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) { + byte[] requestBodyBytes = requestBody.getBytes(StandardCharsets.UTF_8); + outputStream.write(requestBodyBytes); + outputStream.flush(); + } + return connection; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/filter/ApiTesterFilter.java b/src/main/java/com/eactive/apim/portal/apps/apis/filter/ApiTesterFilter.java new file mode 100644 index 0000000..a95204a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/filter/ApiTesterFilter.java @@ -0,0 +1,158 @@ +package com.eactive.apim.portal.apps.apis.filter; + + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiService; +import com.eactive.apim.portal.common.util.ApplicationContextUtil; +import java.io.BufferedReader; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@WebFilter(urlPatterns = "/api/call-api") +public class ApiTesterFilter implements Filter { + + private static final Logger logger = LoggerFactory.getLogger(ApiTesterFilter.class); + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + logger.debug("ApiTesterFilter initialized"); + } + + + public String parseUri(String url) { + if (url == null || url.trim().isEmpty()) { + return "/"; + } + + try { + URI uri = new URI(url); + String path = uri.getPath(); + + // If path is null or empty, return root path + return (path == null || path.isEmpty()) ? "/" : path; + + } catch (URISyntaxException e) { + logger.error("Failed to parse URL: {}", url, e); + return "/"; + } + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + + if (httpServletRequest.getRequestURI().contains("/api/call-api")) { + ApiService apiSpecInfoDtoService = ApplicationContextUtil.getContext().getBean(ApiService.class); + String url = httpServletRequest.getHeader("original-url"); + + if (url.contains("/api/v1/oauth/token")){ + StringBuilder sb = new StringBuilder(); + BufferedReader reader = httpServletRequest.getReader(); + String line; + while ((line = reader.readLine()) != null) { + sb.append(line); + } + String body = sb.toString(); + + // Parse request parameters + Map params = new HashMap<>(); + String[] pairs = body.split("&"); + for (String pair : pairs) { + String[] keyValue = pair.split("="); + if (keyValue.length == 2) { + params.put(keyValue[0], keyValue[1]); + } + } + String scope = params.getOrDefault("scope", "default"); + + String token = "{\n" + + " \"access_token\": \"kbank_gw_sample_token\",\n" + + " \"token_type\": \"bearer\",\n" + + " \"expires_in\": 86400,\n" + + " \"scope\": \""+scope +"\",\n" + + " \"jti\": \""+ UUID.randomUUID().toString()+"\"\n" + + "}"; + + response.setContentType("application/json"); + response.getWriter().println(token); + + } else { + ApiSpecInfoDto apiSpecInfoDto = apiSpecInfoDtoService.selectDetailByURLAndMethod(parseUri(url), httpServletRequest.getMethod()); + + if (apiSpecInfoDto.getResponseType().equals("sample")) { + response.setContentType("application/json"); + response.getWriter().println(apiSpecInfoDto.getSampleResponse()); + } else { + String mockUrl = apiSpecInfoDto.getMockUrl(); + String method = apiSpecInfoDto.getApiMethod(); + Enumeration headerNames = httpServletRequest.getHeaderNames(); + + Map headers = new HashMap<>(); + while (headerNames.hasMoreElements()) { + String header = headerNames.nextElement(); + headers.put(header, httpServletRequest.getHeader(header)); + } + Map paramMap = new HashMap<>(); + + String originalUrl = headers.get("original-url"); + //sprlit original url with ? get the second part then split with & put into paramMap + + String[] originalUrlArr = originalUrl.split("\\?"); + if (originalUrlArr.length > 1) { + String[] paramArr = originalUrlArr[1].split("&"); + for (String param : paramArr) { + String[] paramKeyValue = param.split("="); + if (paramKeyValue.length > 1) { + paramMap.put(paramKeyValue[0], new String[]{paramKeyValue[1]}); + } + } + } + + headers.remove("original-url"); + headers.remove("original-api-id"); + APISender apiSender = ApplicationContextUtil.getContext().getBean(APISender.class); + + String responseStr = ""; + if (method.equalsIgnoreCase("post")) { + StringBuilder sb = new StringBuilder(); + BufferedReader reader = httpServletRequest.getReader(); + String line; + while ((line = reader.readLine()) != null) { + sb.append(line); + } + String body = sb.toString(); + responseStr = apiSender.requestPost(mockUrl, headers, paramMap, body); + + } else { + responseStr = apiSender.requestGet(mockUrl, headers, paramMap); + } + response.setContentType("application/json"); + response.getWriter().println(responseStr); + } + } + } else { + chain.doFilter(request, response); + } + } + + @Override + public void destroy() { + // Do nothing + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/mapper/ApiSpecMapper.java b/src/main/java/com/eactive/apim/portal/apps/apis/mapper/ApiSpecMapper.java new file mode 100644 index 0000000..4787100 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/mapper/ApiSpecMapper.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.apps.apis.mapper; + +import com.eactive.apim.portal.apispec.entity.ApiSpecInfo; +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import java.util.Optional; +import org.mapstruct.Mapper; + +@Mapper(config = BaseMapperConfig.class) +public interface ApiSpecMapper { + + ApiSpecInfoDto mapToDto(ApiSpecInfo apiSpecInfo); + + default ApiSpecInfoDto map(Optional optionalApiSpecInfo) { + return optionalApiSpecInfo.map(this::mapToDto).orElse(new ApiSpecInfoDto()); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiSearchFacade.java b/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiSearchFacade.java new file mode 100644 index 0000000..ce69d0b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiSearchFacade.java @@ -0,0 +1,17 @@ +package com.eactive.apim.portal.apps.apis.service; + +import com.eactive.apim.portal.apps.apis.dto.ApiSearchData; +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import java.util.List; +import java.util.Map; + +public interface ApiSearchFacade { + + ApiSearchData loadAllApiData(); + + Map searchApis(ApiGroupSearch search); + + List sortApisByService(List filteredApis, List services); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiSearchFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiSearchFacadeImpl.java new file mode 100644 index 0000000..8fdf84b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiSearchFacadeImpl.java @@ -0,0 +1,205 @@ +package com.eactive.apim.portal.apps.apis.service; + +import com.eactive.apim.portal.apps.apis.dto.ApiSearchData; +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; +import com.eactive.apim.portal.apps.auth.service.ApiPermissionFilter; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + + + + + + +@Service +@RequiredArgsConstructor +public class ApiSearchFacadeImpl implements ApiSearchFacade { + + private final ApiService apiService; + private final ApiServiceService apiServiceService; + + public ApiSearchData loadAllApiData() { + + List allServices = apiServiceService.searchApiGroups(new ApiGroupSearch()); + + + Set allApiIds = allServices.stream() + .filter(service -> service.getApiGroupApiList() != null) + .flatMap(service -> service.getApiGroupApiList().stream()) + .map(ApiServiceApiDTO::getApiId) + .collect(Collectors.toSet()); + + + Map apiSpecsById = apiService.findApisForApiIds(new ArrayList<>(allApiIds)) + .stream() + .collect(Collectors.toMap( + ApiSpecInfoDto::getApiId, + Function.identity(), + (existing, replacement) -> existing + )); + + + Map servicesByApiId = new HashMap<>(); + allServices.forEach(service -> { + if (service.getApiGroupApiList() != null) { + service.getApiGroupApiList().forEach(api -> + servicesByApiId.put(api.getApiId(), service)); + } + }); + + return new ApiSearchData(allServices, apiSpecsById, servicesByApiId); + } + + @Override + public Map searchApis(ApiGroupSearch search) { + + ApiSearchData apiData = loadAllApiData(); + String keyword = search.getKeyword(); + + + Set matchingApiIds = new HashSet<>(); + if (!StringUtils.isEmpty(keyword)) { + + apiData.getAllServices().stream() + .filter(service -> isServiceMatchingKeyword(service, keyword)) + .filter(service -> service.getApiGroupApiList() != null) + .flatMap(service -> service.getApiGroupApiList().stream()) + .map(ApiServiceApiDTO::getApiId) + .forEach(matchingApiIds::add); + + + apiData.getApiSpecsById().values().stream() + .filter(api -> isApiMatchingKeyword(api, keyword)) + .map(ApiSpecInfoDto::getApiId) + .forEach(matchingApiIds::add); + } else { + + matchingApiIds.addAll(apiData.getApiSpecsById().keySet()); + } + + + if (search.getGroupIds() != null && !search.getGroupIds().isEmpty()) { + Set selectedGroupIds = new HashSet<>(search.getGroupIds()); + Set allowedApiIds = apiData.getAllServices().stream() + .filter(service -> selectedGroupIds.contains(service.getId())) + .filter(service -> service.getApiGroupApiList() != null) + .flatMap(service -> service.getApiGroupApiList().stream()) + .map(ApiServiceApiDTO::getApiId) + .collect(Collectors.toSet()); + + matchingApiIds.retainAll(allowedApiIds); + } + + + List matchingApis = matchingApiIds.stream() + .map(apiId -> apiData.getApiSpecsById().get(apiId)) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + + List filteredApis = ApiPermissionFilter.filterApisByPermissions(matchingApis); + Set finalApiIds = filteredApis.stream() + .map(ApiSpecInfoDto::getApiId) + .collect(Collectors.toSet()); + + filteredApis.forEach(api -> { + api.setMainIcon(apiData.getServicesByApiId().get(api.getApiId()).getMainIcon()); + }); + + List servicesToReturn = apiData.getAllServices().stream() + .map(service -> { + ApiServiceDTO filteredService = new ApiServiceDTO(); + BeanUtils.copyProperties(service, filteredService); + + if (service.getApiGroupApiList() != null) { + List filteredApiList = service.getApiGroupApiList().stream() + .filter(api -> finalApiIds.contains(api.getApiId())) + .collect(Collectors.toList()); + filteredService.setApiGroupApiList(filteredApiList); + } else { + filteredService.setApiGroupApiList(new ArrayList<>()); + } + + return filteredService; + }) + + .collect(Collectors.toList()); + + + List sortedApis = sortApisByService(filteredApis, servicesToReturn); + + + Map result = new HashMap<>(); + result.put("services", servicesToReturn); + result.put("apis", sortedApis); + result.put("selectedApiCount", sortedApis.size()); + + return result; + } + + + private boolean isServiceMatchingKeyword(ApiServiceDTO service, String keyword) { + String lowerKeyword = keyword.toLowerCase(); + return service.getGroupName() != null && + service.getGroupName().toLowerCase().contains(lowerKeyword); + } + + private boolean isApiMatchingKeyword(ApiSpecInfoDto api, String keyword) { + String lowerKeyword = keyword.toLowerCase(); + return (api.getApiName() != null && + api.getApiName().toLowerCase().contains(lowerKeyword)) || + (api.getApiSimpleDescription() != null && + api.getApiSimpleDescription().toLowerCase().contains(lowerKeyword)); + } + + + public List sortApisByService(List filteredApis, List services) { + // Create a map of apiId to its service and API details for efficient lookup + Map sortingMetadataMap = new HashMap<>(); + + services.forEach(service -> { + if (service.getApiGroupApiList() != null) { + for (int i = 0; i < service.getApiGroupApiList().size(); i++) { + ApiServiceApiDTO api = service.getApiGroupApiList().get(i); + sortingMetadataMap.put(api.getApiId(), new SortingMetadata(service.getDisplayOrder() != null ? service.getDisplayOrder() : Integer.MAX_VALUE, i)); + } + } + }); + + // Sort the filtered APIs based on both service and API display orders + return filteredApis.stream() + .filter(api -> sortingMetadataMap.containsKey(api.getApiId())) + .sorted((api1, api2) -> { + SortingMetadata metadata1 = sortingMetadataMap.getOrDefault( + api1.getApiId(), + new SortingMetadata(Integer.MAX_VALUE, Integer.MAX_VALUE) + ); + + SortingMetadata metadata2 = sortingMetadataMap.getOrDefault( + api2.getApiId(), + new SortingMetadata(Integer.MAX_VALUE, Integer.MAX_VALUE) + ); + + // First compare by service display order + int serviceOrderComparison = metadata1.getServiceDisplayOrder().compareTo(metadata2.getServiceDisplayOrder()); + if (serviceOrderComparison != 0) { + return serviceOrderComparison; + } + + // If service display orders are equal, compare by API display order + return metadata1.getApiDisplayOrder().compareTo(metadata2.getApiDisplayOrder()); + }) + .collect(Collectors.toList()); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiService.java b/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiService.java new file mode 100644 index 0000000..7b19fde --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/service/ApiService.java @@ -0,0 +1,74 @@ +package com.eactive.apim.portal.apps.apis.service; + +import com.eactive.apim.portal.apispec.entity.ApiSpecInfo; +import com.eactive.apim.portal.apispec.service.ApiSpecInfoService; +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.mapper.ApiSpecMapper; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringEscapeUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +@Service +@Transactional +@RequiredArgsConstructor +public class ApiService { + private final ApiSpecMapper apiSpecMapper; + private final ApiSpecInfoService apiSpecInfoService; + + private ApiSpecInfoDto processDTO(ApiSpecInfo apiSpecInfo) { + return Optional.ofNullable(apiSpecInfo) + .map(apiSpecMapper::mapToDto) + .map(dto -> { + if (dto.getDescription() != null) { + dto.setDescription(StringEscapeUtils.unescapeHtml4(dto.getDescription())); + } + if (dto.getApiRequestSpec() != null) { + dto.setApiRequestSpec(StringEscapeUtils.unescapeHtml4(dto.getApiRequestSpec())); + } + if (dto.getApiResponseSpec() != null) { + dto.setApiResponseSpec(StringEscapeUtils.unescapeHtml4(dto.getApiResponseSpec())); + } + if (dto.getDescription() != null) { + dto.setDescription(StringEscapeUtils.unescapeHtml4(dto.getDescription())); + } + return dto; + }) + .orElse(null); + } + + public ApiSpecInfoDto selectDetail(String eaiSvcName) { + Optional apiSpecInfo = apiSpecInfoService.findById(eaiSvcName); + return apiSpecInfo.map(this::processDTO).orElse(null); + } + + public ApiSpecInfoDto selectDetailByURLAndMethod(String url, String method) { + Optional apiSpecInfo = apiSpecInfoService.findByUrlAndMethod(url, method); + return apiSpecMapper.map(apiSpecInfo); + } + + public List findApis() { + return apiSpecInfoService.findPublicApis().stream() + .map(apiSpecMapper::mapToDto) + .collect(Collectors.toList()); + } + + public List findApisForApiIds(List apiIds) { + return apiSpecInfoService.findApiSpecsByApiIds(apiIds).stream() + .map(apiSpecMapper::mapToDto) + .collect(Collectors.toList()); + } + + public List searchApis(String keyword) { + return apiSpecInfoService.searchApis(keyword).stream() + .map(this::processDTO) + .collect(Collectors.toList()); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/service/SampleCodeGenerator.java b/src/main/java/com/eactive/apim/portal/apps/apis/service/SampleCodeGenerator.java new file mode 100644 index 0000000..b303570 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/service/SampleCodeGenerator.java @@ -0,0 +1,51 @@ +package com.eactive.apim.portal.apps.apis.service; + +import com.eactive.apim.portal.apps.apis.dto.ParsedRequestDTO; +import java.io.StringWriter; +import java.util.Properties; +import javax.annotation.PostConstruct; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.VelocityEngine; +import org.apache.velocity.runtime.RuntimeConstants; +import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +public class SampleCodeGenerator { + + private static final String TEMPLATE_PATH = "templates/sample_code/"; + + @Value("${sample-code-path}") + private String sampleCodePath; + + private VelocityEngine velocityEngine; + + public String generateCodeSnippet(String language, ParsedRequestDTO parsedRequest) { + + Template t = velocityEngine.getTemplate( TEMPLATE_PATH + language + ".vm"); + + VelocityContext context = new VelocityContext(); + context.put("request", parsedRequest); + + StringWriter writer = new StringWriter(); + t.merge(context, writer); + + return writer.toString(); + } + + + @PostConstruct + public void init() { + velocityEngine = new VelocityEngine(); + Properties props = new Properties(); + props.setProperty(RuntimeConstants.RESOURCE_LOADERS, "classpath"); + props.setProperty( "resource.loader.classpath.class", ClasspathResourceLoader.class.getName() ); + props.setProperty("resource.loader.classpath.path", sampleCodePath); + + props.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem"); + velocityEngine.init(props); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apis/service/SortingMetadata.java b/src/main/java/com/eactive/apim/portal/apps/apis/service/SortingMetadata.java new file mode 100644 index 0000000..457bc0e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apis/service/SortingMetadata.java @@ -0,0 +1,12 @@ +package com.eactive.apim.portal.apps.apis.service; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class SortingMetadata { + + private Integer serviceDisplayOrder; + private Integer apiDisplayOrder; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/controller/ApiServiceController.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/controller/ApiServiceController.java new file mode 100644 index 0000000..afd1364 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/controller/ApiServiceController.java @@ -0,0 +1,55 @@ +package com.eactive.apim.portal.apps.apiservice.controller; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceTabInfo; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; +import java.util.Arrays; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Controller +@RequestMapping("/api-services") +@RequiredArgsConstructor +public class ApiServiceController { + + private final ApiServiceService apiServiceService; + + + @GetMapping + public ModelAndView apiServiceList(@ModelAttribute ApiGroupSearch search) { + List apiServices = apiServiceService.searchApiGroups(search); + + ModelAndView mav = new ModelAndView("apps/apiservice/apiServiceList"); + mav.addObject("apiServices", apiServices); + mav.addObject("search", search); + List tabs = Arrays.asList( + new ApiServiceTabInfo("전체", true, apiServices.size()), + new ApiServiceTabInfo("공통", false, 0), + new ApiServiceTabInfo("이체", false, 0), + new ApiServiceTabInfo("조회", false, 0), + new ApiServiceTabInfo("인증", false, 0), + new ApiServiceTabInfo("결제", false, 0), + new ApiServiceTabInfo("펌뱅킹", false, 0), + new ApiServiceTabInfo("가상계좌", false, 0) + ); + mav.addObject("tabs", tabs); + + return mav; + } + + @GetMapping("/detail/{id}") + public String apiServiceDetail(@PathVariable String id, Model model) { + ApiServiceDTO apiService = apiServiceService.getApiGroupById(id); + model.addAttribute("apiService", apiService); + + return "apps/apiservice/apiServiceDetail"; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiGroupSearch.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiGroupSearch.java new file mode 100644 index 0000000..3ee818b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiGroupSearch.java @@ -0,0 +1,40 @@ +package com.eactive.apim.portal.apps.apiservice.dto; + +import com.eactive.apim.portal.common.search.BaseSearch; +import com.eactive.apim.portal.common.search.ColumnSearchModel; +import com.eactive.apim.portal.common.search.SearchCondition; +import com.eactive.apim.portal.common.search.SearchModel; +import com.eactive.apim.portal.common.search.SpecificationSearchModel; +import com.eactive.eai.data.entity.onl.apim.apigroup.ApiGroup; +import java.util.ArrayList; +import java.util.List; +import lombok.Data; + +@Data +public class ApiGroupSearch implements BaseSearch { + + private String keyword; + private List groupIds = new ArrayList<>(); + + @Override + public List buildSearchCondition() { + List models = new ArrayList<>(); + + if (keyword != null && !keyword.trim().isEmpty()) { + // keyword로 groupName과 groupDesc 모두 검색하는 OR 조건 + models.add(new SpecificationSearchModel( + (root, query, cb) -> cb.or( + cb.like(cb.lower(root.get("groupName")), "%" + keyword.toLowerCase() + "%"), + cb.like(cb.lower(root.get("groupDesc")), "%" + keyword.toLowerCase() + "%") + ) + )); + } + + if (groupIds != null && !groupIds.isEmpty()) { + models.add(new ColumnSearchModel("id", SearchCondition.IN, groupIds)); + } + models.add(new ColumnSearchModel("displayYn", SearchCondition.EQUAL, "1")); + + return models; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceApiDTO.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceApiDTO.java new file mode 100644 index 0000000..58f54dc --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceApiDTO.java @@ -0,0 +1,14 @@ +package com.eactive.apim.portal.apps.apiservice.dto; + +import lombok.Data; + +@Data +public class ApiServiceApiDTO { + private String apiGroupId; + private String bizCode; + private String apiId; + private String apiDesc; + private String apiUrl; + private String apiMethod; + private String service; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceDTO.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceDTO.java new file mode 100644 index 0000000..bbb5215 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceDTO.java @@ -0,0 +1,30 @@ +package com.eactive.apim.portal.apps.apiservice.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.time.LocalDateTime; +import java.util.List; +import lombok.Data; + +@Data +public class ApiServiceDTO { + private String id; + private String groupName; + private String groupDesc; + private String contentDetail; + private String contentIcon; + private String contentSubject; + private Integer displayOrder; + private Integer menuDisplayOrder; + private String mainText; + private String displayOrg; + private String displayRoleCode; + private String displayYn; + private String mainIcon; + private String createdBy; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createdDate; + private String lastModifiedBy; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastModifiedDate; + private List apiGroupApiList; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceTabInfo.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceTabInfo.java new file mode 100644 index 0000000..8f60cbd --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/dto/ApiServiceTabInfo.java @@ -0,0 +1,13 @@ +package com.eactive.apim.portal.apps.apiservice.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class ApiServiceTabInfo { + private String name; + private boolean active; + private int count; + +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiServiceApiMapper.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiServiceApiMapper.java new file mode 100644 index 0000000..5e492e8 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiServiceApiMapper.java @@ -0,0 +1,24 @@ +package com.eactive.apim.portal.apps.apiservice.mapper; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.eai.data.entity.onl.apim.apigroup.ApiGroupApi; +import com.eactive.eai.data.entity.onl.message.EAIMessageEntity; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +@Mapper(config = BaseMapperConfig.class, uses = {}) +public interface ApiServiceApiMapper extends GenericMapper { + @Mapping(source = "id.apiGroupId", target = "apiGroupId") + @Mapping(source = "id.apiId", target = "apiId") + ApiServiceApiDTO toVo(ApiGroupApi apiGroupApi); + @InheritInverseConfiguration + ApiGroupApi toEntity(ApiServiceApiDTO apiServiceApiDTO); + + @Mapping(source = "eaibzwkdstcd", target = "bizCode") + @Mapping(source = "eaisvcname", target = "apiId") + @Mapping(source = "eaisvcdesc", target = "apiDesc") + ApiServiceApiDTO toVo(EAIMessageEntity eaiMessageEntity); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiServiceMapper.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiServiceMapper.java new file mode 100644 index 0000000..34d6ef2 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiServiceMapper.java @@ -0,0 +1,27 @@ +package com.eactive.apim.portal.apps.apiservice.mapper; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.eai.data.entity.onl.apim.apigroup.ApiGroup; +import com.eactive.eai.data.entity.onl.message.EAIMessageEntity; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.*; + +import java.util.List; + +@Mapper(config = BaseMapperConfig.class, uses = { ApiServiceApiMapper.class }) +public interface ApiServiceMapper extends GenericMapper { + + @Mapping(source = "apiGroupApiList", target = "apiGroupApiList") + ApiServiceDTO toVo(ApiGroup apiGroup); + + @Mapping(source = "eaiMessageEntityList", target = "apiGroupApiList") + ApiServiceDTO toVo(ApiGroup apiGroup, List eaiMessageEntityList); + + @InheritInverseConfiguration + ApiGroup toEntity(ApiServiceDTO apiServiceDTO); + + @InheritInverseConfiguration + @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE) + void updateToEntity(ApiServiceDTO apiServiceDTO, @MappingTarget ApiGroup apiGroup); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiSpecInfoMapper.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiSpecInfoMapper.java new file mode 100644 index 0000000..f4d5931 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/mapper/ApiSpecInfoMapper.java @@ -0,0 +1,16 @@ +package com.eactive.apim.portal.apps.apiservice.mapper; + +import com.eactive.apim.portal.apispec.entity.ApiSpecInfo; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +@Mapper(config = BaseMapperConfig.class, uses = {}) +public interface ApiSpecInfoMapper extends GenericMapper { + + + @Mapping(source = "apiName", target = "apiDesc") + ApiServiceApiDTO toVo(ApiSpecInfo apiGroupApi); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/service/ApiServiceService.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/service/ApiServiceService.java new file mode 100644 index 0000000..da3a0ad --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/service/ApiServiceService.java @@ -0,0 +1,113 @@ +package com.eactive.apim.portal.apps.apiservice.service; + +import com.eactive.apim.gateway.data.apiservice.repository.ApiServiceRepository; +import com.eactive.apim.portal.apispec.entity.ApiSpecInfo; +import com.eactive.apim.portal.apispec.service.ApiSpecInfoService; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.mapper.ApiServiceMapper; +import com.eactive.apim.portal.apps.apiservice.mapper.ApiSpecInfoMapper; +import com.eactive.apim.portal.common.exception.NotFoundException; +import com.eactive.eai.data.entity.onl.apim.apigroup.ApiGroup; +import com.eactive.eai.data.entity.onl.apim.apigroup.ApiGroupApi; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service("apiServiceService") +@Transactional +@RequiredArgsConstructor +@Slf4j +public class ApiServiceService { + + private final ApiServiceRepository apiServiceRepository; + private final ApiServiceMapper apiServiceMapper; + private final ApiSpecInfoService apiSpecInfoService; + private final ApiSpecInfoMapper apiSpecInfoMapper; + + public List searchApiGroups(ApiGroupSearch search) { + Sort sortByDisplayOrder = Sort.by(Sort.Direction.ASC, "displayOrder"); + List apiGroups = apiServiceRepository.findAll(search.buildSpecification(), sortByDisplayOrder); + + List apiServices = apiGroups.stream() + .map(apiServiceMapper::toVo) + .collect(Collectors.toList()); + + for (ApiServiceDTO apiServiceDTO : apiServices) { + ApiServiceDTO apiService = getApiGroupById(apiServiceDTO.getId()); + apiServiceDTO.getApiGroupApiList().clear(); + apiServiceDTO.getApiGroupApiList().addAll(apiService.getApiGroupApiList()); + } + + return apiServices; + } + + public List searchApiGroupsForLnb() { + ApiGroupSearch search = new ApiGroupSearch(); + Sort sortByDisplayOrder = Sort.by(Sort.Direction.ASC, "displayOrder"); + List apiGroups = apiServiceRepository.findAll(search.buildSpecification(), sortByDisplayOrder); + + List apiServices = apiGroups.stream() + .map(apiServiceMapper::toVo) + .collect(Collectors.toList()); + + for (ApiServiceDTO apiServiceDTO : apiServices) { + ApiServiceDTO apiService = getApiGroupById(apiServiceDTO.getId()); + apiServiceDTO.getApiGroupApiList().clear(); + apiServiceDTO.getApiGroupApiList().addAll(apiService.getApiGroupApiList()); + } + + return apiServices; + } + + public ApiServiceDTO getApiGroupById(String id) { + ApiGroup apiGroup = apiServiceRepository.findById(id) + .orElseThrow(() -> new NotFoundException("API Group not found with id: " + id)); + + ApiServiceDTO apiServiceDTO = apiServiceMapper.toVo(apiGroup); + + if (apiGroup.getApiGroupApiList() != null && !apiGroup.getApiGroupApiList().isEmpty()) { + List apiIds = apiGroup.getApiGroupApiList().stream() + .sorted(Comparator.comparing( + ApiGroupApi::getDisplayOrder, + Comparator.nullsLast(Comparator.naturalOrder()) + )) + .map(a -> a.getId().getApiId()) + .collect(Collectors.toList()); + + List apiSpecInfos = apiSpecInfoService.findApiSpecsByApiIds(apiIds); + + // Create a map of apiId to index for efficient lookup + Map orderMap = IntStream.range(0, apiIds.size()) + .boxed() + .collect(Collectors.toMap(apiIds::get, i -> i)); + + List apiServiceApiDTOS = apiSpecInfos.stream() + .sorted(Comparator.comparing(api -> orderMap.get(api.getApiId()))) + .map(apiSpecInfoMapper::toVo) + .collect(Collectors.toList()); + apiServiceDTO.setApiGroupApiList(apiServiceApiDTOS); + } + + return apiServiceDTO; + } + + public ApiServiceDTO findApiServiceByApiId(String apiId) { + return apiServiceRepository.findAll().stream() + .filter(apiGroup -> apiGroup.getApiGroupApiList().stream() + .anyMatch(api -> api.getId().getApiId().equals(apiId))) + .map(apiServiceMapper::toVo) + .findFirst() + .orElse(null); + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/apiservice/service/ApiSpecService.java b/src/main/java/com/eactive/apim/portal/apps/apiservice/service/ApiSpecService.java new file mode 100644 index 0000000..3536942 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/apiservice/service/ApiSpecService.java @@ -0,0 +1,531 @@ +package com.eactive.apim.portal.apps.apiservice.service; + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiService; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import io.swagger.parser.OpenAPIParser; +import io.swagger.v3.core.util.Json; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.PathItem; +import io.swagger.v3.oas.models.Paths; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.parameters.Parameter; +import io.swagger.v3.oas.models.servers.Server; +import io.swagger.v3.oas.models.tags.Tag; +import io.swagger.v3.parser.core.models.SwaggerParseResult; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Objects; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +@RequiredArgsConstructor +public class ApiSpecService { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + private final ApiServiceService apiServiceService; + private final ApiService apiService; + + public String generateApiServiceTestbedSpec(String apiServiceId) { + + ApiServiceDTO apiServiceDTO = apiServiceService.getApiGroupById(apiServiceId); + List apiGroupApiList = apiServiceDTO.getApiGroupApiList(); + String groupName = apiServiceDTO.getGroupName(); + + OpenAPI mergedOpenAPI = new OpenAPI() + .info(new Info() + .title(groupName + " API Documentation") + .version("1.0.0") + .description("API documentation for " + groupName)) + .tags(Collections.singletonList(new Tag().name(groupName))); + + Paths mergedPaths = new Paths(); + Map mergedComponents = new HashMap<>(); + + // 경로 중복 체크를 위한 맵 + Map pathOwners = new HashMap<>(); + List duplicateWarnings = new ArrayList<>(); + + for (ApiServiceApiDTO apiServiceApiDTO : apiGroupApiList) { + String apiId = apiServiceApiDTO.getApiId(); + ApiSpecInfoDto apiSpecInfoDto = apiService.selectDetail(apiId); + OpenAPI currentAPI = parseSpec(apiSpecInfoDto.getTestbedSpec()); + if (currentAPI == null) { + continue; + } + + String basePath = getBasePath(currentAPI); + checkAndMergePaths(currentAPI, basePath, groupName, apiId, mergedPaths, + apiSpecInfoDto, pathOwners, duplicateWarnings); + mergeComponents(currentAPI, apiId, apiSpecInfoDto.getApiName(), mergedComponents, objectMapper); + } + + // 중복 경로 경고가 있으면 description에 추가 + if (!duplicateWarnings.isEmpty()) { + String currentDesc = mergedOpenAPI.getInfo().getDescription(); + String warningDesc = "\n\n⚠️ Warning: Duplicate Path Detected\n" + + String.join("\n", duplicateWarnings); + mergedOpenAPI.getInfo().setDescription(currentDesc + warningDesc); + } + + if (!mergedComponents.isEmpty()) { + mergedOpenAPI.setComponents(objectMapper.convertValue(mergedComponents, io.swagger.v3.oas.models.Components.class)); + } + mergedOpenAPI.setPaths(mergedPaths); + + try { + return Json.mapper().writeValueAsString(mergedOpenAPI); + } catch (Exception e) { + log.error("Error generating merged API specification", e); + return "{}"; + } + } + + private PathItem mergePathItems(PathItem existing, PathItem newItem, String fullPath, + String apiName, Map pathOwners, List duplicateWarnings) { + + PathItem merged = new PathItem(); + + // HTTP 메소드와 getter/setter를 매핑 + Map>> methodMap = new HashMap<>(); + methodMap.put("GET", Triple.of(existing.getGet(), newItem.getGet(), merged::setGet)); + methodMap.put("POST", Triple.of(existing.getPost(), newItem.getPost(), merged::setPost)); + methodMap.put("PUT", Triple.of(existing.getPut(), newItem.getPut(), merged::setPut)); + methodMap.put("DELETE", Triple.of(existing.getDelete(), newItem.getDelete(), merged::setDelete)); + methodMap.put("PATCH", Triple.of(existing.getPatch(), newItem.getPatch(), merged::setPatch)); + methodMap.put("HEAD", Triple.of(existing.getHead(), newItem.getHead(), merged::setHead)); + methodMap.put("OPTIONS", Triple.of(existing.getOptions(), newItem.getOptions(), merged::setOptions)); + methodMap.put("TRACE", Triple.of(existing.getTrace(), newItem.getTrace(), merged::setTrace)); + + // 각 메소드에 대해 처리 + methodMap.forEach((method, triple) -> { + Operation existingOp = triple.getLeft(); + Operation newOp = triple.getMiddle(); + Consumer setter = triple.getRight(); + + if (existingOp != null && newOp != null) { + checkAndAddOperation(existingOp, newOp, method, setter, fullPath, apiName, pathOwners, duplicateWarnings); + } else { + setter.accept(existingOp != null ? existingOp : newOp); + } + }); + + // 공통 속성 병합 + merged.setParameters(mergeParameters(existing.getParameters(), newItem.getParameters())); + merged.setServers(mergeServers(existing.getServers(), newItem.getServers())); + merged.setDescription(mergeDescriptions(existing.getDescription(), newItem.getDescription())); + merged.setSummary(mergeSummaries(existing.getSummary(), newItem.getSummary())); + + return merged; + } + + private void checkAndMergePaths(OpenAPI currentAPI, String basePath, String groupName, + String apiId, Paths mergedPaths, ApiSpecInfoDto apiSpecInfoDto, + Map pathOwners, List duplicateWarnings) { + + if (currentAPI.getPaths() == null) { + return; + } + + currentAPI.getPaths().forEach((path, pathItem) -> { + updateOperationTags(pathItem, groupName); + updateOperationSummary(pathItem, apiSpecInfoDto.getApiName()); + updateReferences(pathItem, apiId); + + String tmpFullPath = StringUtils.isNotEmpty(basePath) + ? StringUtils.join(basePath, "/", StringUtils.removeStart(path, "/")) + : path; + + final String fullPath = StringUtils.replacePattern(tmpFullPath, "//+", "/"); + + // HTTP 메소드별로 중복 체크 + pathItem.readOperationsMap().forEach((httpMethod, operation) -> { + final String pathKey = fullPath + ":" + httpMethod; + final String existingOwner = pathOwners.get(pathKey); + + if (existingOwner != null) { + String warning = String.format( + "- Path '%s' [%s] is duplicated between '%s' and '%s'", + fullPath, + httpMethod, + existingOwner, + apiSpecInfoDto.getApiName() + ); + duplicateWarnings.add(warning); + log.warn(warning); + } + pathOwners.put(pathKey, apiSpecInfoDto.getApiName()); + }); + + // 기존 PathItem 가져오기 + PathItem existingPathItem = mergedPaths.get(fullPath); + if (existingPathItem == null) { + // 새로운 경로면 그대로 추가 + mergedPaths.addPathItem(fullPath, pathItem); + } else { + // 기존 경로가 있으면 HTTP 메소드별로 병합 + PathItem mergedPathItem = mergePathItems(existingPathItem, pathItem, fullPath, + apiSpecInfoDto.getApiName(), pathOwners, duplicateWarnings); + mergedPaths.put(fullPath, mergedPathItem); + } + }); + } + + private void checkAndAddOperation(Operation existingOp, Operation newOp, String method, + Consumer setter, String fullPath, String apiName, + Map pathOwners, List duplicateWarnings) { + + final String pathKey = fullPath + ":" + method; + final String existingOwner = pathOwners.get(pathKey); + + if (existingOwner != null) { + String warning = String.format( + "- Path '%s' [%s] is duplicated between '%s' and '%s'", + fullPath, + method, + existingOwner, + apiName + ); + duplicateWarnings.add(warning); + log.warn(warning); + } + + // 새로운 오퍼레이션으로 설정 + setter.accept(newOp); + pathOwners.put(pathKey, apiName); + } + + private List mergeParameters(List existing, List newParams) { + if (existing == null || existing.isEmpty()) { + return newParams; + } + if (newParams == null || newParams.isEmpty()) { + return existing; + } + + List merged = new ArrayList<>(existing); + for (Parameter newParam : newParams) { + if (!parameterExists(merged, newParam)) { + merged.add(newParam); + } + } + return merged; + } + + private boolean parameterExists(List parameters, Parameter parameter) { + return parameters.stream() + .anyMatch(p -> Objects.equals(p.getName(), parameter.getName()) + && Objects.equals(p.getIn(), parameter.getIn())); + } + + private List mergeServers(List existing, List newServers) { + if (existing == null || existing.isEmpty()) { + return newServers; + } + if (newServers == null || newServers.isEmpty()) { + return existing; + } + + Set existingUrls = existing.stream() + .map(Server::getUrl) + .collect(Collectors.toSet()); + + List merged = new ArrayList<>(existing); + newServers.stream() + .filter(server -> !existingUrls.contains(server.getUrl())) + .forEach(merged::add); + + return merged; + } + + private String mergeDescriptions(String existing, String newDesc) { + if (StringUtils.isEmpty(existing)) { + return newDesc; + } + if (StringUtils.isEmpty(newDesc)) { + return existing; + } + return existing + "\n\n" + newDesc; + } + + private String mergeSummaries(String existing, String newSummary) { + if (StringUtils.isEmpty(existing)) { + return newSummary; + } + if (StringUtils.isEmpty(newSummary)) { + return existing; + } + return existing + " | " + newSummary; + } + + private OpenAPI parseSpec(String spec) { + SwaggerParseResult result = new OpenAPIParser().readContents(spec, null, null); + if (result == null || result.getOpenAPI() == null) { + log.error("Failed to parse API specification"); + return null; + } + return result.getOpenAPI(); + } + + private String getBasePath(OpenAPI api) { + if (CollectionUtils.isEmpty(api.getServers())) { + return StringUtils.EMPTY; + } + Server server = api.getServers().get(0); + return StringUtils.removeEnd(server.getUrl(), "/"); + } + + private void mergeComponents(OpenAPI currentAPI, String apiId, String apiName, Map mergedComponents, ObjectMapper objectMapper) { + if (currentAPI.getComponents() == null) { + return; + } + + JsonNode componentsNode = objectMapper.valueToTree(currentAPI.getComponents()); + if (!componentsNode.isObject()) { + return; + } + + componentsNode.fields().forEachRemaining(entry -> { + if (!entry.getValue().isObject()) { + return; + } + + @SuppressWarnings("unchecked") + Map section = (Map) mergedComponents + .computeIfAbsent(entry.getKey(), k -> new HashMap()); + + if ("schemas".equals(entry.getKey())) { + entry.getValue().fields().forEachRemaining(schemaEntry -> { + String originalSchemaName = schemaEntry.getKey(); + String newSchemaName = apiId + "-" + originalSchemaName; + JsonNode schemaValue = schemaEntry.getValue(); + + // 스키마 내용 복사 및 참조 업데이트 + JsonNode updatedSchema = updateReferencesInSchema(schemaValue.deepCopy(), apiId); + + // title 필드 추가하여 화면에 표시될 이름 설정 + if (updatedSchema.isObject()) { + ((ObjectNode) updatedSchema).put("title", apiName + "-" + originalSchemaName); + } + + section.put(newSchemaName, objectMapper.convertValue(updatedSchema, Object.class)); + }); + } else { + entry.getValue().fields().forEachRemaining(subEntry -> + section.put(apiId + "-" + subEntry.getKey(), + objectMapper.convertValue(subEntry.getValue(), Object.class))); + } + }); + } + + private JsonNode updateReferencesInSchema(JsonNode node, String apiId) { + if (node == null) { + return null; + } + + if (node.isObject()) { + ObjectNode objectNode = (ObjectNode) node; + Iterator> fields = objectNode.fields(); + + while (fields.hasNext()) { + Map.Entry entry = fields.next(); + String key = entry.getKey(); + JsonNode value = entry.getValue(); + + if ("$ref".equals(key)) { + String ref = value.asText(); + // 내부 참조인 경우에만 apiId 추가 + if (ref.startsWith("#/")) { + String updatedRef = updateSchemaReference(ref, apiId); + objectNode.put(key, updatedRef); + } + } else if (value.isObject() || value.isArray()) { + JsonNode updatedValue = updateReferencesInSchema(value, apiId); + objectNode.set(key, updatedValue); + } + } + return objectNode; + } else if (node.isArray()) { + for (int i = 0; i < node.size(); i++) { + JsonNode item = node.get(i); + if (item.isObject() || item.isArray()) { + ((com.fasterxml.jackson.databind.node.ArrayNode) node).set(i, + updateReferencesInSchema(item, apiId)); + } + } + } + return node; + } + + private String updateSchemaReference(String ref, String apiId) { + if (StringUtils.isEmpty(ref) || !ref.startsWith("#/")) { + return ref; + } + + String[] parts = ref.split("/"); + if (parts.length < 4) { + return ref; // 최소 #/components/schemas/name 형식이어야 함 + } + + // 마지막 부분만 apiId- 접두어 추가 + String schemaName = parts[parts.length - 1]; + parts[parts.length - 1] = apiId + "-" + schemaName; + + return String.join("/", parts); + } + + + private void updateOperationReferences(Operation operation, String apiId) { + // RequestBody 참조 업데이트 + if (operation.getRequestBody() != null && operation.getRequestBody().getContent() != null) { + operation.getRequestBody().getContent().forEach((mediaType, content) -> { + if (content.getSchema() != null) { + updateSchemaReferencesRecursively(content.getSchema(), apiId); + } + }); + } + + // original-api-id 확장 필드 추가 + if (operation.getExtensions() == null) { + operation.setExtensions(new HashMap<>()); + } + operation.getExtensions().put("x-original-api-id", apiId); + + // Responses 참조 업데이트 + if (operation.getResponses() != null) { + operation.getResponses().forEach((code, response) -> { + if (response.getContent() != null) { + response.getContent().forEach((mediaType, content) -> { + if (content.getSchema() != null) { + updateSchemaReferencesRecursively(content.getSchema(), apiId); + } + }); + } + }); + } + + // Parameters 참조 업데이트 + if (operation.getParameters() != null) { + operation.getParameters().forEach(parameter -> { + if (parameter.getSchema() != null) { + updateSchemaReferencesRecursively(parameter.getSchema(), apiId); + } + }); + } + } + + private void updateSchemaReferencesRecursively(io.swagger.v3.oas.models.media.Schema schema, String apiId) { + if (schema == null) { + return; + } + + if (schema.get$ref() != null) { + schema.set$ref(updateSchemaReference(schema.get$ref(), apiId)); + } + + // Handle properties + if (schema.getProperties() != null) { + schema.getProperties().forEach((propertyName, propertySchema) -> + updateSchemaReferencesRecursively((io.swagger.v3.oas.models.media.Schema) propertySchema, apiId)); + } + + // Handle arrays + if (schema.getItems() != null) { + updateSchemaReferencesRecursively(schema.getItems(), apiId); + } + + // Handle allOf, anyOf, oneOf + Stream.of(schema.getAllOf(), schema.getAnyOf(), schema.getOneOf()) + .filter(Objects::nonNull) + .flatMap(List::stream) + .forEach(s -> updateSchemaReferencesRecursively(s, apiId)); + + // Handle additional properties + if (schema.getAdditionalProperties() instanceof io.swagger.v3.oas.models.media.Schema) { + updateSchemaReferencesRecursively( + (io.swagger.v3.oas.models.media.Schema) schema.getAdditionalProperties(), + apiId + ); + } + } + + private void updateOperationTags(PathItem pathItem, String groupName) { + Stream.of( + pathItem.getGet(), pathItem.getPost(), + pathItem.getPut(), pathItem.getDelete(), + pathItem.getPatch(), pathItem.getHead(), + pathItem.getOptions(), pathItem.getTrace() + ) + .filter(Objects::nonNull) + .forEach(operation -> operation.setTags(Collections.singletonList(groupName))); + } + + private void updateReferences(PathItem pathItem, String apiId) { + Stream.of( + pathItem.getGet(), pathItem.getPost(), + pathItem.getPut(), pathItem.getDelete(), + pathItem.getPatch(), pathItem.getHead(), + pathItem.getOptions(), pathItem.getTrace() + ) + .filter(Objects::nonNull) + .forEach(operation -> updateOperationReferences(operation, apiId)); + } + + private void updateOperationSummary(PathItem pathItem, String apiName) { + Stream.of( + pathItem.getGet(), pathItem.getPost(), + pathItem.getPut(), pathItem.getDelete(), + pathItem.getPatch(), pathItem.getHead(), + pathItem.getOptions(), pathItem.getTrace() + ) + .filter(Objects::nonNull) + .forEach(operation -> { + // 기존 summary가 있으면 API 이름을 앞에 추가 + String existingSummary = operation.getSummary(); + if (StringUtils.isNotEmpty(existingSummary)) { + operation.setSummary(apiName + " - " + existingSummary); + } else { + operation.setSummary(apiName); + } + + // operationId가 있다면 API 이름을 앞에 추가 + String existingOperationId = operation.getOperationId(); + if (StringUtils.isNotEmpty(existingOperationId)) { + operation.setOperationId(apiName + "-" + existingOperationId); + } + }); + } + + + @Data + @AllArgsConstructor(staticName = "of") + private static class Triple { + + private final L left; + private final M middle; + private final R right; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/controller/ApiKeyRestController.java b/src/main/java/com/eactive/apim/portal/apps/app/controller/ApiKeyRestController.java new file mode 100644 index 0000000..73ff405 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/controller/ApiKeyRestController.java @@ -0,0 +1,112 @@ +package com.eactive.apim.portal.apps.app.controller; + +import com.eactive.apim.portal.apprequest.entity.AppRequestType; +import com.eactive.apim.portal.apps.apis.dto.ApiSearchData; +import com.eactive.apim.portal.apps.apis.service.ApiSearchFacade; +import com.eactive.apim.portal.apps.app.dto.AppRequestDTO; +import com.eactive.apim.portal.apps.app.dto.ClientDTO; +import com.eactive.apim.portal.apps.app.dto.ClientSimpleDTO; +import com.eactive.apim.portal.apps.app.mapper.CredentialMapper; +import com.eactive.apim.portal.apps.app.service.AppServiceFacade; +import com.eactive.apim.portal.common.dto.ResponseDTO; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.EncryptionUtil; +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.List; +import java.util.stream.Collectors; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; +import org.springframework.security.access.annotation.Secured; +import org.springframework.ui.Model; +import org.springframework.validation.ValidationUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/myapikey") +@RequiredArgsConstructor +@Secured("ROLE_API_KEY_REQUEST") +public class ApiKeyRestController { + + private final static String PROD_SERVER = "PROD"; + private final static String STG_SERVER = "STG"; + + private final AppServiceFacade appServiceFacade; + private final CredentialMapper credentialMapper; + private final EncryptionUtil encryptionUtil; + private final ApiSearchFacade apiSearchFacade; + + @PostMapping("/api_key_request") + public ResponseDTO apiRequest(@RequestBody AppRequestDTO appRequest) { + appRequest.setOrg(SecurityUtil.getUserOrg()); + if (appRequest.getType() == null) { + appRequest.setType(AppRequestType.NEW); + } + AppRequestDTO appRequestDTO = appServiceFacade.createAppRequest(appRequest); + appServiceFacade.beginApproval(appRequestDTO.getApproval().getId()); + return new ResponseDTO(200, "SUCCESS", appRequestDTO.getType().getDescription() + " 신청이 완료되었습니다."); + } + + @PostMapping("/api_key_request_prod") + public ResponseDTO requestProdApiKey(@RequestBody AppRequestDTO appRequest) { + appRequest.setOrg(SecurityUtil.getUserOrg()); + + if (appRequest.getClientId() != null && !appRequest.getClientId().isEmpty()) { + try { + appRequest.setClientId(encryptionUtil.decrypt(appRequest.getClientId())); + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) { + return new ResponseDTO(400, "FAILURE", "API 키 정보가 올바르지 않습니다."); + } + appRequest.setType(AppRequestType.PROD_MODIFY); + } else { + appRequest.setType(AppRequestType.PROD_NEW); + } + + AppRequestDTO appRequestDTO = appServiceFacade.createAppRequest(appRequest); + appServiceFacade.beginApproval(appRequestDTO.getApproval().getId()); + + return new ResponseDTO(200, "SUCCESS", appRequestDTO.getType().getDescription() + " 신청이 완료되었습니다."); + } + + @GetMapping("/dev") + public List apiKeyList() { + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + List apikeys = appServiceFacade.getApiKeyList(user.getPortalOrg(), STG_SERVER); + + ApiSearchData apiSearchData = apiSearchFacade.loadAllApiData(); + for (ClientDTO apikey : apikeys) { + apikey.getApiList().forEach(api -> { + api.setService(apiSearchData.getServicesByApiId().get(api.getApiId()).getGroupName()); + }); + } + + return apikeys.stream().map(credentialMapper::mapToClientSimpleDTO).collect(Collectors.toList()); + } + + @PostMapping("/prod") + public ClientSimpleDTO apiKeyProdList(@RequestBody AppRequestDTO appRequest) { + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + + try { + ClientDTO apiKey = appServiceFacade.getApiKey(user.getPortalOrg().getId(), encryptionUtil.decrypt(appRequest.getClientId()), PROD_SERVER); + ApiSearchData apiSearchData = apiSearchFacade.loadAllApiData(); + apiKey.getApiList().forEach(api -> { + api.setService(apiSearchData.getServicesByApiId().get(api.getApiId()).getGroupName()); + }); + apiKey.setClientid(encryptionUtil.encrypt(apiKey.getClientid())); + return credentialMapper.mapToClientSimpleDTO(apiKey); + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) { + return new ClientSimpleDTO(); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/controller/MyAppController.java b/src/main/java/com/eactive/apim/portal/apps/app/controller/MyAppController.java new file mode 100644 index 0000000..1f15bfc --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/controller/MyAppController.java @@ -0,0 +1,263 @@ +package com.eactive.apim.portal.apps.app.controller; + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiService; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; +import com.eactive.apim.portal.apps.app.dto.AppRequestDTO; +import com.eactive.apim.portal.apps.app.dto.ClientDTO; +import com.eactive.apim.portal.apps.app.service.AppServiceFacade; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.ApiServiceHelper; +import com.eactive.apim.portal.common.util.EncryptionUtil; +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.ModelAndView; + +@Controller +@RequestMapping("/myapikey") +@RequiredArgsConstructor +public class MyAppController { + + private final static String PROD_SERVER = "PROD"; + private final static String STG_SERVER = "STG"; + + public static final String API_KEY_LIST = "apps/mypage/apiKeyList"; + + public static final String API_KEY_DETAIL = "apps/mypage/apiKeyDetail"; + + public static final String API_KEY_PROD_LIST = "apps/mypage/apiKeyProdList"; + + public static final String API_KEY_PROD_DETAIL = "apps/mypage/apiKeyProdDetail"; + + public static final String API_KEY_REQUEST_HISTORY = "apps/mypage/apiRequestHistory"; + + public static final String API_KEY_REQUEST_DETAIL = "apps/mypage/apiRequestDetail"; + + public static final String API_KEY_REQUEST_PROD_HISTORY = "apps/mypage/apiRequestProdHistory"; + + public static final String API_KEY_REQUEST_PROD_DETAIL = "apps/mypage/apiRequestProdDetail"; + + private final AppServiceFacade appServiceFacade; + private final ApiServiceService apiServiceService; + private final ApiService apiService; + private final EncryptionUtil encryptionUtil; + private final ApiServiceHelper apiServiceHelper; + + @GetMapping + @Secured("ROLE_APP") + public ModelAndView apiKeyList(@PageableDefault Pageable pageable, Model model) { + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + Page apikeys = appServiceFacade.getApiKeyPageForServer(pageable, user.getPortalOrg(), STG_SERVER); + model.addAttribute("apiKeys", apikeys.getContent()); + model.addAttribute("page", apikeys); + return new ModelAndView(API_KEY_LIST); + } + + @GetMapping("/api_key_prod_page") + @Secured("ROLE_APP") + public ModelAndView apiKeyProdList(@PageableDefault Pageable pageable, Model model) { + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + Page apikeys = appServiceFacade.getApiKeyPageForServer(pageable, user.getPortalOrg(), PROD_SERVER); + model.addAttribute("apiKeys", apikeys.getContent()); + model.addAttribute("page", apikeys); + return new ModelAndView(API_KEY_PROD_LIST); + } + + @GetMapping("/api_key_prod_detail") + @Secured("ROLE_APP") + public ModelAndView apiKeyProdDetail(@RequestParam(value = "id", required = false) String id, Model model) { + + if(id == null) { + return new ModelAndView("redirect:/myapikey/api_key_prod_page"); + } + ClientDTO apiKey = null; + try { + apiKey = appServiceFacade.getApiKey(SecurityUtil.getPortalAuthenticatedUser().getPortalOrg().getId(), encryptionUtil.decrypt(id), PROD_SERVER); + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) { + return new ModelAndView("/"); + } + + if (apiKey == null) { + return new ModelAndView("/"); + } else { + ApiGroupSearch search = new ApiGroupSearch(); + List apiServices = apiServiceService.searchApiGroups(search); + Map mainIconsMap = apiServiceHelper.getMainIconsFromServiceDtos(apiServices); + + apiKey.getApiList().forEach(api -> { + ApiServiceDTO serviceDTO = mainIconsMap.get(api.getApiId()); + api.setService(serviceDTO.getGroupName()); + }); + + model.addAttribute("apiKey", apiKey); + return new ModelAndView(API_KEY_PROD_DETAIL); + } + } + + @GetMapping("/api_key_detail") + @Secured("ROLE_APP") + public ModelAndView apiKeyDetail(@RequestParam(value = "id", required = false) String id, Model model) { + + if(id == null) { + return new ModelAndView("redirect:/myapikey"); + } + + ClientDTO apiKey = appServiceFacade.getApiKey(SecurityUtil.getPortalAuthenticatedUser().getPortalOrg().getId(), id, STG_SERVER); + if (apiKey == null) { + return new ModelAndView("/"); + } else { + ApiGroupSearch search = new ApiGroupSearch(); + List apiServices = apiServiceService.searchApiGroups(search); + Map mainIconsMap = apiServiceHelper.getMainIconsFromServiceDtos(apiServices); + + apiKey.getApiList().forEach(api -> { + ApiServiceDTO serviceDTO = mainIconsMap.get(api.getApiId()); + api.setService(serviceDTO.getGroupName()); + }); + + List prodHistory = appServiceFacade.getProdApiRequestHistory(apiKey.getClientid()); + model.addAttribute("apiKey", apiKey); + model.addAttribute("prodhistory", prodHistory); + return new ModelAndView(API_KEY_DETAIL); + } + } + + @PostMapping("/api_key_request/cancel") + @Secured("ROLE_API_KEY_REQUEST") + public String apiRequestCancel(@RequestParam String id) { + appServiceFacade.cancelApiRequest(id, SecurityUtil.getPortalAuthenticatedUser().getPortalOrg()); + return "redirect:/myapikey/api_key_request/history"; + } + + @GetMapping("/api_key_request/history") + @Secured("ROLE_API_KEY_REQUEST_VIEW") + public ModelAndView apiRequestHistory(@PageableDefault(sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable, Model model) { + Page apiRequests = appServiceFacade.getApiRequestHistory(pageable, SecurityUtil.getUserOrg()); + + for (AppRequestDTO request : apiRequests.getContent()) { + + if (!StringUtils.isEmpty(request.getApiGroupList())) { + String[] apiGroupList = request.getApiGroupList().split(","); + + ApiServiceDTO firstService = apiServiceService.getApiGroupById(apiGroupList[0]); + + if (apiGroupList.length == 1) { + request.setContents(firstService.getGroupName()); + } else { + request.setContents(firstService.getGroupName() + " 외 " + (apiGroupList.length - 1) + "개의 API 그룹"); + } + } + + if (StringUtils.isEmpty(request.getContents())) { + if (!StringUtils.isEmpty(request.getApiList())) { + String[] apiList = request.getApiList().split(","); + + ApiSpecInfoDto firstApi = apiService.selectDetail(apiList[0]); + + if (apiList.length == 1) { + request.setContents(firstApi.getApiName()); + } else { + request.setContents(firstApi.getApiName() + " 외 " + (apiList.length - 1) + "개의 API"); + } + } + } + } + + model.addAttribute("requests", apiRequests.getContent()); + model.addAttribute("page", apiRequests); + return new ModelAndView(API_KEY_REQUEST_HISTORY); + } + + @GetMapping("/api_key_request/prod_history") + @Secured("ROLE_API_KEY_REQUEST_VIEW") + public ModelAndView apiRequestProdHistory(@PageableDefault(sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable, Model model) { + Page apiRequests = appServiceFacade.getApiRequestProdHistory(pageable, SecurityUtil.getUserOrg()); + + for (AppRequestDTO request : apiRequests.getContent()) { + + if (!StringUtils.isEmpty(request.getApiGroupList())) { + String[] apiGroupList = request.getApiGroupList().split(","); + + ApiServiceDTO firstService = apiServiceService.getApiGroupById(apiGroupList[0]); + + if (apiGroupList.length == 1) { + request.setContents(firstService.getGroupName()); + } else { + request.setContents(firstService.getGroupName() + " 외 " + (apiGroupList.length - 1) + "개의 API 그룹"); + } + } + + if (StringUtils.isEmpty(request.getContents())) { + if (!StringUtils.isEmpty(request.getApiList())) { + String[] apiList = request.getApiList().split(","); + + ApiSpecInfoDto firstApi = apiService.selectDetail(apiList[0]); + + if (apiList.length == 1) { + request.setContents(firstApi.getApiName()); + } else { + request.setContents(firstApi.getApiName() + " 외 " + (apiList.length - 1) + "개의 API"); + } + } + } + } + + model.addAttribute("requests", apiRequests.getContent()); + model.addAttribute("page", apiRequests); + return new ModelAndView(API_KEY_REQUEST_PROD_HISTORY); + } + + @GetMapping("/api_key_request/detail") + @Secured("ROLE_API_KEY_REQUEST_VIEW") + public ModelAndView apiRequestDetail(@RequestParam(value = "id", required = false) String id, Model model) { + + if (id == null) { + return new ModelAndView("redirect:/myapikey/api_key_request/history"); + } + + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + AppRequestDTO appRequest = appServiceFacade.getApiRequestByIdAndPortalOrg(id, user.getPortalOrg()); + + model.addAttribute("appRequest", appRequest); + return new ModelAndView(API_KEY_REQUEST_DETAIL); + } + + @GetMapping("/api_key_request/prod_detail") + @Secured("ROLE_API_KEY_REQUEST_VIEW") + public ModelAndView apiRequestProdDetail(@RequestParam(value = "id", required = false) String id, Model model) { + + if(id == null) { + return new ModelAndView("redirect:/myapikey/api_key_request/prod_history"); + } + + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + AppRequestDTO appRequest = appServiceFacade.getApiRequestProdByIdAndPortalOrg(id, user.getPortalOrg()); + + + model.addAttribute("appRequest", appRequest); + return new ModelAndView(API_KEY_REQUEST_PROD_DETAIL); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/dto/AppRequestDTO.java b/src/main/java/com/eactive/apim/portal/apps/app/dto/AppRequestDTO.java new file mode 100644 index 0000000..c034fe9 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/dto/AppRequestDTO.java @@ -0,0 +1,57 @@ +package com.eactive.apim.portal.apps.app.dto; + +import com.eactive.apim.portal.apprequest.entity.AppRequestType; +import com.eactive.apim.portal.approval.entity.ApprovalStatus; +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.approval.dto.ApprovalDTO; +import com.eactive.apim.portal.apps.user.dto.PortalOrgDTO; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import javax.validation.constraints.NotEmpty; +import lombok.Data; + +@Data +public class AppRequestDTO { + + private String id; + + private PortalOrgDTO org; + + private ApprovalStatus status; // 승인 대기, 승인 완료, 승인 거부 + + private AppRequestType type; //신규, 변경 + + private ApprovalDTO approval; + + @NotEmpty + private String apiList = ""; //comma separated api id list + + private String apiGroupList = ""; //comma separated api group id list + + private String clientId; + + private String clientName; + + private String refClient; + + private List apiServiceDTOList = new ArrayList<>(); + + private List apiSpecList = new ArrayList<>(); + + private String contents; + + private String reason; + + private LocalDateTime createdDate; + + private String prevApiList; + + private List removedApiList = new ArrayList<>(); + + public String getPrevApiList() { + return prevApiList == null ? "" : prevApiList; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/dto/ClientDTO.java b/src/main/java/com/eactive/apim/portal/apps/app/dto/ClientDTO.java new file mode 100644 index 0000000..552eb51 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/dto/ClientDTO.java @@ -0,0 +1,50 @@ +package com.eactive.apim.portal.apps.app.dto; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import lombok.Data; + +@Data +public class ClientDTO { + + private String clientid; + + private String accesstokenvalidityseconds; + + private String allowedips; + + private String authorities; + + private String autoapprove; + + private String clientname; + + private String clientsecret; + + private String granttypes; + + private String modifiedby; + + private LocalDateTime modifiedon; + + private String redirecturi; + + private String refreshtokenvalidityseconds; + + private String resourceids; + + private String scope; + + private String securitykey; + + private String orgid; + + private String orgname; + + private String appstatus; + + private List apiList = new ArrayList<>(); + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/dto/ClientSimpleDTO.java b/src/main/java/com/eactive/apim/portal/apps/app/dto/ClientSimpleDTO.java new file mode 100644 index 0000000..4d5bb18 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/dto/ClientSimpleDTO.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.apps.app.dto; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import lombok.Data; + +@Data +public class ClientSimpleDTO { + + private String clientid; + + private String clientname; + + private List apiList = new ArrayList<>(); + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/dto/PortalOrgDTO.java b/src/main/java/com/eactive/apim/portal/apps/app/dto/PortalOrgDTO.java new file mode 100644 index 0000000..91716d1 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/dto/PortalOrgDTO.java @@ -0,0 +1,13 @@ +package com.eactive.apim.portal.apps.app.dto; + +import java.io.Serializable; +import lombok.Data; + +@Data +public class PortalOrgDTO implements Serializable { + private static final long serialVersionUID = 1L; + + private String id; + private String orgName; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/mapper/AppRequestMapper.java b/src/main/java/com/eactive/apim/portal/apps/app/mapper/AppRequestMapper.java new file mode 100644 index 0000000..0be97f5 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/mapper/AppRequestMapper.java @@ -0,0 +1,16 @@ +package com.eactive.apim.portal.apps.app.mapper; + + +import com.eactive.apim.portal.apprequest.entity.AppRequest; +import com.eactive.apim.portal.apps.apiservice.mapper.ApiServiceApiMapper; +import com.eactive.apim.portal.apps.app.dto.AppRequestDTO; +import com.eactive.apim.portal.apps.approval.mapper.ApprovalMapper; +import com.eactive.apim.portal.apps.user.mapper.PortalOrgMapper; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; + +@Mapper(config = BaseMapperConfig.class, uses = {PortalOrgMapper.class, ApiServiceApiMapper.class, ApprovalMapper.class}) +public interface AppRequestMapper extends GenericMapper { + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/mapper/ClientEntityMapper.java b/src/main/java/com/eactive/apim/portal/apps/app/mapper/ClientEntityMapper.java new file mode 100644 index 0000000..aebd3f6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/mapper/ClientEntityMapper.java @@ -0,0 +1,15 @@ +package com.eactive.apim.portal.apps.app.mapper; + +import com.eactive.apim.portal.apps.apiservice.mapper.ApiServiceApiMapper; +import com.eactive.apim.portal.apps.app.dto.ClientDTO; +import com.eactive.eai.data.entity.onl.authserver.ClientEntity; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; + +@Mapper(config = BaseMapperConfig.class, uses = {ApiServiceApiMapper.class}) +public interface ClientEntityMapper extends GenericMapper { + + +} + diff --git a/src/main/java/com/eactive/apim/portal/apps/app/mapper/CredentialMapper.java b/src/main/java/com/eactive/apim/portal/apps/app/mapper/CredentialMapper.java new file mode 100644 index 0000000..b3a6e40 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/mapper/CredentialMapper.java @@ -0,0 +1,16 @@ +package com.eactive.apim.portal.apps.app.mapper; + +import com.eactive.apim.portal.app.entity.Credential; +import com.eactive.apim.portal.apps.apiservice.mapper.ApiSpecInfoMapper; +import com.eactive.apim.portal.apps.app.dto.ClientDTO; +import com.eactive.apim.portal.apps.app.dto.ClientSimpleDTO; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; + +@Mapper(config = BaseMapperConfig.class, uses = {ApiSpecInfoMapper.class}) +public interface CredentialMapper extends GenericMapper { + + + ClientSimpleDTO mapToClientSimpleDTO(ClientDTO client); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/mapper/ProdClientMapper.java b/src/main/java/com/eactive/apim/portal/apps/app/mapper/ProdClientMapper.java new file mode 100644 index 0000000..96ac7de --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/mapper/ProdClientMapper.java @@ -0,0 +1,15 @@ +package com.eactive.apim.portal.apps.app.mapper; + +import com.eactive.apim.portal.app.entity.ProdClient; +import com.eactive.apim.portal.apps.apiservice.mapper.ApiSpecInfoMapper; +import com.eactive.apim.portal.apps.app.dto.ClientDTO; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; + +@Mapper(config = BaseMapperConfig.class, uses = {ApiSpecInfoMapper.class}) +public interface ProdClientMapper extends GenericMapper { + + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/app/service/AppServiceFacade.java b/src/main/java/com/eactive/apim/portal/apps/app/service/AppServiceFacade.java new file mode 100644 index 0000000..d4828df --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/app/service/AppServiceFacade.java @@ -0,0 +1,195 @@ +package com.eactive.apim.portal.apps.app.service; + +import com.eactive.apim.portal.apispec.entity.ApiSpecInfo; +import com.eactive.apim.portal.app.entity.Credential; +import com.eactive.apim.portal.app.repository.CredentialRepository; +import com.eactive.apim.portal.apprequest.entity.AppRequest; +import com.eactive.apim.portal.apprequest.entity.AppRequestType; +import com.eactive.apim.portal.apprequest.repository.AppRequestRepository; +import com.eactive.apim.portal.approval.entity.Approval; +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiService; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; +import com.eactive.apim.portal.apps.app.dto.AppRequestDTO; +import com.eactive.apim.portal.apps.app.dto.ClientDTO; +import com.eactive.apim.portal.apps.app.mapper.AppRequestMapper; +import com.eactive.apim.portal.apps.app.mapper.CredentialMapper; +import com.eactive.apim.portal.apps.approval.service.ApprovalService; +import com.eactive.apim.portal.apps.user.dto.PortalOrgDTO; +import com.eactive.apim.portal.apps.user.mapper.PortalOrgMapper; +import com.eactive.apim.portal.common.exception.NotFoundException; +import com.eactive.apim.portal.common.util.ApiServiceHelper; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; +import javax.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +@Service +@Transactional +@RequiredArgsConstructor +public class AppServiceFacade { + + private final CredentialRepository credentialRepository; + private final AppRequestRepository appRequestRepository; + private final ApprovalService approvalService; + private final ApiServiceService apiServiceService; + private final ApiService apiService; + private final CredentialMapper credentialMapper; + private final AppRequestMapper appRequestMapper; + private final PortalOrgMapper portalOrgMapper; + private final ApiServiceHelper apiServiceHelper; + + public Page getApiKeyPageForServer(Pageable pageable, PortalOrg portalOrg, String server) { + Page clients = credentialRepository.findAllByOrgidAndServer(pageable, portalOrg.getId(), server); + return clients.map(credentialMapper::toVo); + } + + public List getApiKeyList(PortalOrg portalOrg, String server) { + List clients = credentialRepository.findAllByOrgidAndServer(portalOrg.getId(), server); + return clients.stream().map(credentialMapper::toVo).collect(Collectors.toList()); + + } + + public ClientDTO getApiKey(String orgid, String clientId, String server) { + return credentialRepository.findByClientidAndOrgidAndServer(clientId, orgid, server).map(credentialMapper::toVo).orElse(null); + } + + + public Page getApiRequestHistory(Pageable pageable, PortalOrgDTO portalOrg) { + return appRequestRepository.findAllByOrgAndTypeIsIn(pageable, portalOrgMapper.toEntity(portalOrg), Arrays.asList(AppRequestType.NEW,AppRequestType.MODIFY, AppRequestType.DELETE)).map(appRequestMapper::toVo); + } + + public Page getApiRequestProdHistory(Pageable pageable, PortalOrgDTO portalOrg) { + return appRequestRepository.findAllByOrgAndTypeIsIn(pageable, portalOrgMapper.toEntity(portalOrg), Arrays.asList(AppRequestType.PROD_NEW,AppRequestType.PROD_MODIFY, AppRequestType.PROD_DELETE)).map(appRequestMapper::toVo); + } + + public AppRequestDTO createAppRequest(AppRequestDTO appRequest) { + + setApiGroupsFromApiList(appRequest); + AppRequest request = appRequestRepository.save(appRequestMapper.toEntity(appRequest)); + + if (request.getType() != null && (request.getType().equals(AppRequestType.MODIFY) || request.getType().equals(AppRequestType.DELETE) || + request.getType().equals(AppRequestType.PROD_MODIFY) || request.getType().equals(AppRequestType.PROD_DELETE))) { + + Optional client = credentialRepository.findById(request.getClientId()); + + if (client.isPresent()) { + request.setClientName(client.get().getClientname()); + + if(client.get().getApiList() != null) { + // 기존 API 목록을 저장 + String existingApiList = client.get().getApiList().stream() + .map(ApiSpecInfo::getApiId) + .collect(Collectors.joining(",")); + request.setPrevApiList(existingApiList); + } + + if(AppRequestType.DELETE.equals(request.getType()) || AppRequestType.PROD_DELETE.equals(request.getType())) { + request.setApiList(request.getPrevApiList()); + } + } else { + throw new NotFoundException("Client not found"); + } + } + + request.setCreatedDate(LocalDateTime.now()); + Approval approval = approvalService.createAppApproval(request); + request.setApproval(approval); + request = appRequestRepository.save(request); + return appRequestMapper.toVo(request); + } + + private void setApiGroupsFromApiList(AppRequestDTO appRequest) { + if (StringUtils.isEmpty(appRequest.getApiList())) { + return; + } + + Set uniqueGroupIds = Arrays.stream(appRequest.getApiList().split(",")) + .map(apiId -> apiServiceService.findApiServiceByApiId(apiId)) + .filter(Objects::nonNull) + .flatMap(apiService -> apiService.getApiGroupApiList().stream()) + .map(ApiServiceApiDTO::getApiGroupId) + .collect(Collectors.toSet()); + + appRequest.setApiGroupList(String.join(",", uniqueGroupIds)); + } + + + public void beginApproval(String approvalId) { + approvalService.beginApproval(approvalId); + } + + public void cancelApiRequest(String id, PortalOrg portalOrg) { + appRequestRepository.findByIdAndOrg(id, portalOrg).ifPresent(approvalService::cancelAppApproval); + } + + public List getProdApiRequestHistory(String clientid) { + return appRequestRepository.findAllByClientIdsContainsAndTypeIsIn(clientid,Arrays.asList(AppRequestType.PROD_NEW,AppRequestType.PROD_MODIFY, AppRequestType.PROD_DELETE)).stream().map(appRequestMapper::toVo).collect(Collectors.toList()); + } + + + public AppRequestDTO getApiRequestProdByIdAndPortalOrg(String id, PortalOrg portalOrg) { + AppRequestDTO appRequest = appRequestRepository.findByIdAndOrgAndTypeIsIn(id, portalOrg, + Arrays.asList(AppRequestType.PROD_NEW,AppRequestType.PROD_MODIFY, AppRequestType.PROD_DELETE)).map(this::convertToAppRequestDTO).orElse(null); + + if(appRequest != null) { + processApiGroups(appRequest); + processApiList(appRequest); + } + return appRequest; + } + + public AppRequestDTO getApiRequestByIdAndPortalOrg(String id, PortalOrg org) { + AppRequestDTO appRequest = appRequestRepository.findByIdAndOrg(id, org).map(this::convertToAppRequestDTO).orElse(null); + + if(appRequest != null) { + processApiGroups(appRequest); + processApiList(appRequest); + } + return appRequest; + } + + private AppRequestDTO convertToAppRequestDTO(AppRequest entity) { + AppRequestDTO dto = appRequestMapper.toVo(entity); + // prevApiList null 처리 + if (dto.getPrevApiList() == null) { + dto.setPrevApiList(""); + } + return dto; + } + + private void processApiGroups(AppRequestDTO appRequest) { + + if (!StringUtils.isEmpty(appRequest.getApiGroupList())) { + String[] apiGroupList = appRequest.getApiGroupList().split(","); + for (String apiGroupId : apiGroupList) { + appRequest.getApiServiceDTOList().add(apiServiceService.getApiGroupById(apiGroupId)); + } + } + } + + private void processApiList(AppRequestDTO appRequest) { + + if (!StringUtils.isEmpty(appRequest.getApiList())) { + String[] apiList = appRequest.getApiList().split(","); + List apiServices = apiServiceService.searchApiGroups(new ApiGroupSearch()); + Map mainIconsMap = apiServiceHelper.getMainIconsFromServiceDtos(apiServices); + + for (String apiId : apiList) { + ApiServiceDTO serviceDTO = mainIconsMap.get(apiId); + ApiSpecInfoDto spec = apiService.selectDetail(apiId); + spec.setService(serviceDTO.getGroupName()); + appRequest.getApiSpecList().add(spec); + } + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/approval/dto/ApprovalDTO.java b/src/main/java/com/eactive/apim/portal/apps/approval/dto/ApprovalDTO.java new file mode 100644 index 0000000..154503d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/approval/dto/ApprovalDTO.java @@ -0,0 +1,34 @@ +package com.eactive.apim.portal.apps.approval.dto; + +import com.eactive.apim.portal.approval.entity.ApprovalType; +import com.eactive.apim.portal.approval.entity.Approver; +import com.eactive.apim.portal.approval.statemachine.ApprovalState; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import lombok.Data; + +@Data +public class ApprovalDTO { + + private String id; + + private ApprovalState approvalStatus; + + private ApprovalType approvalType; + + private String targetId; + + private PortalUser requester; + + private List approvers = new ArrayList<>(); + + private String approvalSubject; //제목 + + private String approvalDetail; //승인 요청 내용 + + private LocalDateTime createdDate; + + private LocalDateTime approvalDate; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/approval/dto/ApproverDTO.java b/src/main/java/com/eactive/apim/portal/apps/approval/dto/ApproverDTO.java new file mode 100644 index 0000000..5dcb33e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/approval/dto/ApproverDTO.java @@ -0,0 +1,33 @@ +package com.eactive.apim.portal.apps.approval.dto; + +import com.eactive.apim.portal.approval.entity.ApprovalType; +import com.eactive.apim.portal.approval.statemachine.ApprovalState; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import lombok.Data; + +@Data +public class ApproverDTO { + + private String id; + + private ApprovalState approvalStatus; + + private ApprovalType approvalType; + + private String targetId; + + private PortalUser requester; + + private List approvers = new ArrayList<>(); + + private String approvalSubject; //제목 + + private String approvalDetail; //승인 요청 내용 + + private LocalDateTime createdDate; + + private LocalDateTime approvalDate; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/approval/mapper/ApprovalMapper.java b/src/main/java/com/eactive/apim/portal/apps/approval/mapper/ApprovalMapper.java new file mode 100644 index 0000000..8b9460f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/approval/mapper/ApprovalMapper.java @@ -0,0 +1,13 @@ +package com.eactive.apim.portal.apps.approval.mapper; + +import com.eactive.apim.portal.approval.entity.Approval; +import com.eactive.apim.portal.apps.approval.dto.ApprovalDTO; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; + +@Mapper(config = BaseMapperConfig.class, uses = {ApproverMapper.class}) +public interface ApprovalMapper extends GenericMapper { + +} + diff --git a/src/main/java/com/eactive/apim/portal/apps/approval/mapper/ApproverMapper.java b/src/main/java/com/eactive/apim/portal/apps/approval/mapper/ApproverMapper.java new file mode 100644 index 0000000..5a39c13 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/approval/mapper/ApproverMapper.java @@ -0,0 +1,44 @@ +package com.eactive.apim.portal.apps.approval.mapper; + +import com.eactive.apim.portal.approval.entity.Approver; +import com.eactive.apim.portal.approval.entity.ApproverId; +import com.eactive.apim.portal.apps.approval.dto.ApproverDTO; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +@Mapper(config = BaseMapperConfig.class, uses = {}) +public interface ApproverMapper extends GenericMapper { + + @Mapping(target = "id", expression = "java(approverIdToString(approver.getId()))") + @Override + ApproverDTO toVo(Approver approver); + + @Mapping(target = "id", expression = "java(stringToApproverId(approverDTO.getId()))") + @Override + Approver toEntity(ApproverDTO approverDTO); + + + default String approverIdToString(ApproverId approverId) { + if (approverId == null) { + return null; + } + return approverId.getOrdinal().toString(); + } + + default ApproverId stringToApproverId(String id) { + if (id == null) { + return null; + } + String[] parts = id.split(":"); + if (parts.length != 2) { + throw new IllegalArgumentException("Invalid ApproverId string format"); + } + ApproverId approverId = new ApproverId(); + approverId.setApproval(parts[0]); + approverId.setOrdinal(Integer.parseInt(parts[1])); + return approverId; + } +} + diff --git a/src/main/java/com/eactive/apim/portal/apps/approval/service/ApprovalService.java b/src/main/java/com/eactive/apim/portal/apps/approval/service/ApprovalService.java new file mode 100644 index 0000000..56a8f75 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/approval/service/ApprovalService.java @@ -0,0 +1,101 @@ +package com.eactive.apim.portal.apps.approval.service; + +import com.eactive.apim.portal.apprequest.entity.AppRequest; +import com.eactive.apim.portal.approval.entity.Approval; +import com.eactive.apim.portal.approval.entity.ApprovalType; +import com.eactive.apim.portal.approval.entity.Approver; +import com.eactive.apim.portal.approval.entity.ApproverId; +import com.eactive.apim.portal.approval.entity.ApproverStatus; +import com.eactive.apim.portal.approval.repository.ApprovalRepository; +import com.eactive.apim.portal.approval.statemachine.ApprovalEvent; +import com.eactive.apim.portal.approval.statemachine.ApprovalStateMachine; +import com.eactive.apim.portal.approvalline.entity.PortalApprovalLine; +import com.eactive.apim.portal.approvalline.entity.PortalApprovalLineUser; +import com.eactive.apim.portal.approvalline.repository.PortalApprovalLineRepository; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.user.entity.UserInfo; +import java.util.HashMap; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class ApprovalService { + + private final ApprovalRepository approvalRepository; + + private final PortalApprovalLineRepository portalApprovalLineRepository; + + private final ApprovalStateMachine approvalStateMachine; + + public Approval createAppApproval(AppRequest request) { + + Optional optLine = portalApprovalLineRepository.findPortalApprovalLineByApprovalType(ApprovalType.APP.name()); + + if (optLine.isPresent()) { + Approval approval = new Approval(); + approval.setApprovalType(ApprovalType.APP); + approval.setTargetId(request.getId()); + approval.setRequester(SecurityUtil.getPortalAuthenticatedUser()); + approval.setApprovalSubject("[" + request.getOrg().getOrgName() + "] " + request.getType().getDescription() + " 승인"); + + for (PortalApprovalLineUser user : optLine.get().getPortalApprovalLineUsers()) { + this.addApprover(approval, user.getUser(), user.getApprovalOrder()); + } + + return approvalRepository.save(approval); + } + return null; + } + + public Approval createUserApproval(PortalUser newPortalUser) { + + Optional optLine = portalApprovalLineRepository.findPortalApprovalLineByApprovalType(ApprovalType.USER.name()); + + if (optLine.isPresent()) { + Approval approval = new Approval(); + approval.setApprovalType(ApprovalType.USER); + approval.setTargetId(newPortalUser.getId()); + approval.setRequester(newPortalUser); + approval.setApprovalSubject( newPortalUser.getPortalOrg().getOrgName() + " 사용 신청 승인"); + + for (PortalApprovalLineUser user : optLine.get().getPortalApprovalLineUsers()) { + this.addApprover(approval, user.getUser(), user.getApprovalOrder()); + } + approvalStateMachine.transition(approval, ApprovalEvent.BEGIN, new HashMap<>()); + return approvalRepository.save(approval); + } + return null; + } + + public void addApprover(Approval apprval, UserInfo user, int ordinal) { + Approver newApprover = new Approver(); + ApproverId approverId = new ApproverId(apprval.getId(), ordinal); + newApprover.setId(approverId); + newApprover.setUser(user); + newApprover.setApproverStatus(ApproverStatus.PENDING); + newApprover.setApproval(apprval); + apprval.getApprovers().add(newApprover); + } + + public void beginApproval(String approvalId) { + Optional approval = approvalRepository.findById(approvalId); + + if (approval.isPresent()) { + approvalStateMachine.transition(approval.get(), ApprovalEvent.BEGIN, new HashMap<>()); + approvalRepository.save(approval.get()); + } + } + + public void cancelAppApproval(AppRequest appRequest) { + Optional optApproval = approvalRepository.findById(appRequest.getApproval().getId()); + if (optApproval.isPresent()) { + approvalStateMachine.transition(optApproval.get(), ApprovalEvent.CANCEL, new HashMap<>()); + approvalRepository.save(optApproval.get()); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/exception/AuthNumberNotFoundException.java b/src/main/java/com/eactive/apim/portal/apps/auth/exception/AuthNumberNotFoundException.java new file mode 100644 index 0000000..c01138c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/exception/AuthNumberNotFoundException.java @@ -0,0 +1,11 @@ +package com.eactive.apim.portal.apps.auth.exception; + +public class AuthNumberNotFoundException extends RuntimeException { + public AuthNumberNotFoundException(String message) { + super(message); + } + + public AuthNumberNotFoundException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/ApiPermissionFilter.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/ApiPermissionFilter.java new file mode 100644 index 0000000..3de31b3 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/ApiPermissionFilter.java @@ -0,0 +1,95 @@ +package com.eactive.apim.portal.apps.auth.service; + + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.common.util.SecurityUtil; +import lombok.var; + +import java.util.List; +import java.util.stream.Collectors; + +public class ApiPermissionFilter { + + public static List filterApisByPermissions(List apis) { + boolean isAuthenticated = SecurityUtil.isAuthenticated(); + String roleCode = null; + String org = null; + + if (isAuthenticated) { + // null 체크 추가 + var user = SecurityUtil.getPortalAuthenticatedUser(); + if (user != null && user.getRoleCode() != null) { + roleCode = user.getRoleCode().toString(); + } + + var userOrg = SecurityUtil.getUserOrg(); + if (userOrg != null) { + org = userOrg.getId(); + } + } + + String finalRoleCode = roleCode; + String finalOrg = org; + + return apis.stream() + .filter(spec -> checkApiPermissions(spec, isAuthenticated, finalOrg, finalRoleCode)) + .collect(Collectors.toList()); + } + + public static List filterServicesByPermissions(List services) { + boolean isAuthenticated = SecurityUtil.isAuthenticated(); + String roleCode = null; + String org = null; + + if (isAuthenticated) { + // null 체크 추가 + var user = SecurityUtil.getPortalAuthenticatedUser(); + if (user != null && user.getRoleCode() != null) { + roleCode = user.getRoleCode().toString(); + } + + var userOrg = SecurityUtil.getUserOrg(); + if (userOrg != null) { + org = userOrg.getId(); + } + } + + String finalRoleCode = roleCode; + String finalOrg = org; + + return services.stream() + .filter(service -> checkServicePermissions(service, isAuthenticated, finalOrg, finalRoleCode)) + .collect(Collectors.toList()); + } + + private static boolean checkServicePermissions(ApiServiceDTO spec, boolean isAuthenticated, + String org, String roleCode) { + if (!isAuthenticated) { + return (spec.getDisplayOrg() == null || spec.getDisplayOrg().isEmpty()) && (spec.getDisplayRoleCode() == null || spec.getDisplayRoleCode().isEmpty()); + } + + boolean orgMatch = org != null && (spec.getDisplayOrg() == null || + spec.getDisplayOrg().isEmpty() || + spec.getDisplayOrg().contains(org)); + boolean roleMatch = roleCode != null && (spec.getDisplayRoleCode() == null || + spec.getDisplayRoleCode().isEmpty() || + spec.getDisplayRoleCode().contains(roleCode)); + return orgMatch || roleMatch; + } + + private static boolean checkApiPermissions(ApiSpecInfoDto spec, boolean isAuthenticated, + String org, String roleCode) { + if (!isAuthenticated) { + return (spec.getDisplayOrg() == null || spec.getDisplayOrg().isEmpty()) && (spec.getDisplayRoleCode() == null || spec.getDisplayRoleCode().isEmpty()); + } + + boolean orgMatch = org != null && (spec.getDisplayOrg() == null || + spec.getDisplayOrg().isEmpty() || + spec.getDisplayOrg().contains(org)); + boolean roleMatch = roleCode != null && (spec.getDisplayRoleCode() == null || + spec.getDisplayRoleCode().isEmpty() || + spec.getDisplayRoleCode().contains(roleCode)); + return orgMatch || roleMatch; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberGenerator.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberGenerator.java new file mode 100644 index 0000000..f7cc450 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberGenerator.java @@ -0,0 +1,30 @@ +package com.eactive.apim.portal.apps.auth.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import java.security.SecureRandom; +import java.util.Arrays; + +@Component +public class AuthNumberGenerator { + private final Environment env; + + @Autowired + public AuthNumberGenerator(Environment env) { + this.env = env; + } + + public String generateAuthNumber() { + if (isDevProfile()) { + return "123456"; + } + SecureRandom rand = new SecureRandom(); + return String.format("%06d", 100000 + rand.nextInt(900000)); + } + + private boolean isDevProfile() { + return Arrays.asList(env.getActiveProfiles()).contains("dev"); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberService.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberService.java new file mode 100644 index 0000000..22a1981 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberService.java @@ -0,0 +1,8 @@ +package com.eactive.apim.portal.apps.auth.service; + +public interface AuthNumberService { + + void sendRequestAuthNumber(String recipientKey, String msgType); + + boolean verifyAuthNumber(String recipientKey, String authNumber); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberServiceImpl.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberServiceImpl.java new file mode 100644 index 0000000..e32a34f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberServiceImpl.java @@ -0,0 +1,98 @@ +package com.eactive.apim.portal.apps.auth.service; + +import com.eactive.apim.portal.portaluser.entity.TwoFactorAuth; +import com.eactive.apim.portal.portaluser.service.AuthNumberException; +import com.eactive.apim.portal.template.service.MessageRecipient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; + +@Service +@Transactional +public class AuthNumberServiceImpl implements AuthNumberService { + + private static final Logger logger = LoggerFactory.getLogger(AuthNumberServiceImpl.class); + + private final AuthNumberStorage storage; + private final AuthNumberGenerator generator; + private final MessageSender messageSender; + + @Value("${auth-ttl:300}") + private int authNumberExpirationTime; + + @Value("${auth.resend.limit.seconds:30}") + private int resendLimitSeconds; + + @Autowired + public AuthNumberServiceImpl(AuthNumberStorage storage, + AuthNumberGenerator generator, + MessageSender messageSender) { + this.storage = storage; + this.generator = generator; + this.messageSender = messageSender; + } + + @Override + @Transactional(noRollbackFor = AuthNumberException.class) + public void sendRequestAuthNumber(String recipientKey, String msgType) { + logger.info("Sending auth number to: {} via {}", recipientKey, msgType); + + validateResendTime(recipientKey); + + String authNumber = generator.generateAuthNumber(); + + MessageRecipient recipient = createMessageRecipient(recipientKey, msgType); + messageSender.sendAuthMessage(recipient, authNumber, msgType); + + storage.saveAuthNumber(recipientKey, authNumber, + LocalDateTime.now().plusSeconds(authNumberExpirationTime)); + } + + @Override + @Transactional(noRollbackFor = AuthNumberException.class) + public boolean verifyAuthNumber(String recipientKey, String authNumber) { + logger.info("Verifying auth number for: {}", recipientKey); + + TwoFactorAuth storedAuth = storage.getAuthNumber(recipientKey) + .orElseThrow(() -> new AuthNumberException("인증번호가 존재하지 않습니다. 인증번호를 다시 발송해주세요.")); + + if (storedAuth.getExpiresAt().isBefore(LocalDateTime.now())) { + storage.deleteAuthNumber(recipientKey); + throw new AuthNumberException("입력 시간이 초과되었습니다. 인증번호를 다시 발송해주세요."); + } + + if (authNumber.equals(storedAuth.getAuthNumber())) { + return true; + } else { + throw new AuthNumberException("입력된 인증번호가 올바르지 않습니다."); + } + } + + private void validateResendTime(String recipientKey) { + storage.getAuthNumber(recipientKey).ifPresent(existingAuth -> { + LocalDateTime now = LocalDateTime.now(); + if (existingAuth.getExpiresAt().minusSeconds(authNumberExpirationTime) + .plusSeconds(resendLimitSeconds).isAfter(now)) { + throw new AuthNumberException("잠시 후에 다시 시도해 주세요."); + } + }); + } + + private MessageRecipient createMessageRecipient(String recipientKey, String msgType) { + MessageRecipient recipient = new MessageRecipient(); + recipient.setUserId(recipientKey); + if ("SMS".equalsIgnoreCase(msgType)) { + recipient.setPhone(recipientKey); + } else if ("EMAIL".equalsIgnoreCase(msgType)) { + recipient.setUserId(recipientKey); + } else { + throw new IllegalArgumentException("Unsupported message type: " + msgType); + } + return recipient; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberStorage.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberStorage.java new file mode 100644 index 0000000..6cd0859 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/AuthNumberStorage.java @@ -0,0 +1,42 @@ +package com.eactive.apim.portal.apps.auth.service; + +import com.eactive.apim.portal.portaluser.entity.TwoFactorAuth; +import com.eactive.apim.portal.portaluser.repository.TwoFactorAuthRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.Optional; + +@Component +public class AuthNumberStorage { + private final TwoFactorAuthRepository twoFactorAuthRepository; + + @Autowired + public AuthNumberStorage(TwoFactorAuthRepository twoFactorAuthRepository) { + this.twoFactorAuthRepository = twoFactorAuthRepository; + } + + public void saveAuthNumber(String recipientKey, String authNumber, LocalDateTime expiresAt) { + + Optional exist = twoFactorAuthRepository.findById(recipientKey); + if (exist.isPresent()) { + TwoFactorAuth old = exist.get(); + old.setAuthNumber(authNumber); + old.setExpiresAt(expiresAt); + twoFactorAuthRepository.save(old); + } else { + TwoFactorAuth auth = new TwoFactorAuth(recipientKey, authNumber, expiresAt); + twoFactorAuthRepository.save(auth); + } + + } + + public Optional getAuthNumber(String recipientKey) { + return twoFactorAuthRepository.findById(recipientKey); + } + + public void deleteAuthNumber(String recipientKey) { + twoFactorAuthRepository.deleteById(recipientKey); + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/MessageSender.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/MessageSender.java new file mode 100644 index 0000000..b5f104b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/MessageSender.java @@ -0,0 +1,34 @@ +package com.eactive.apim.portal.apps.auth.service; + +import com.eactive.apim.portal.portaluser.event.RequestAuthNumberEvent; +import com.eactive.apim.portal.template.service.MessageHandlerService; +import com.eactive.apim.portal.template.service.MessageRecipient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; + +@Component +public class MessageSender { + private final MessageHandlerService messageHandlerService; + + @Autowired + public MessageSender(MessageHandlerService messageHandlerService) { + this.messageHandlerService = messageHandlerService; + } + + public void sendAuthMessage(MessageRecipient recipient, String authNumber, String msgType) { + if ("sms".equalsIgnoreCase(msgType)) { + recipient.setPhone(recipient.getUserId()); + } else if ("email".equalsIgnoreCase(msgType)) { + recipient.setUserId(recipient.getUserId()); + } else { + throw new IllegalArgumentException("Unsupported message type: " + msgType); + } + + HashMap params = new HashMap<>(); + params.put("authNumber", authNumber); + + messageHandlerService.publishEvent(RequestAuthNumberEvent.KEY, recipient, params); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordResetTokenRepository.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordResetTokenRepository.java new file mode 100644 index 0000000..9b42a25 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordResetTokenRepository.java @@ -0,0 +1,7 @@ +package com.eactive.apim.portal.apps.auth.service; + +import com.eactive.apim.portal.portaluser.entity.PasswordResetToken; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PasswordResetTokenRepository extends JpaRepository { +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordResetTokenService.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordResetTokenService.java new file mode 100644 index 0000000..273e3b3 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordResetTokenService.java @@ -0,0 +1,31 @@ +package com.eactive.apim.portal.apps.auth.service; + +import com.eactive.apim.portal.portaluser.entity.PasswordResetToken; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.UUID; + +@Service +@Transactional +public class PasswordResetTokenService { + @Autowired + private PasswordTokenRepository passwordTokenRepository; + + public PasswordResetToken createToken(String email) { + String token = UUID.randomUUID().toString(); + LocalDateTime expiresAt = LocalDateTime.now().plusHours(24); + PasswordResetToken tokenObj = new PasswordResetToken(token, email, expiresAt); + return passwordTokenRepository.save(tokenObj); + } + + public PasswordResetToken findByToken(String token) { + return passwordTokenRepository.findById(token).orElse(null); + } + + public void deleteToken(PasswordResetToken token) { + passwordTokenRepository.delete(token); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordTokenRepository.java b/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordTokenRepository.java new file mode 100644 index 0000000..4a0249a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/auth/service/PasswordTokenRepository.java @@ -0,0 +1,7 @@ +package com.eactive.apim.portal.apps.auth.service; + +import com.eactive.apim.portal.portaluser.entity.PasswordResetToken; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PasswordTokenRepository extends JpaRepository { +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/controller/FaqController.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/controller/FaqController.java new file mode 100644 index 0000000..d78dcfd --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/controller/FaqController.java @@ -0,0 +1,50 @@ +package com.eactive.apim.portal.apps.community.faq.controller; + +import com.eactive.apim.portal.apps.community.faq.dto.FaqDTO; +import com.eactive.apim.portal.apps.community.faq.dto.FaqSearch; +import com.eactive.apim.portal.apps.community.faq.service.FaqFacade; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; + +@Controller +public class FaqController { + + public static final String FAQ_QUESTION = "faqQuestion"; + + private final FaqFacade faqFacade; + + @Autowired + public FaqController(FaqFacade faqFacade){ + this.faqFacade = faqFacade; + } + + + @PostMapping("/faq_list") + public String postSearchView(@ModelAttribute("search") FaqSearch search, Model model, + @PageableDefault(sort = FAQ_QUESTION, direction = Sort.Direction.ASC) Pageable pageable) { + return searchView(search, pageable, model); + } + + @GetMapping("/faq_list") + public String getSearchView(@PageableDefault(sort = FAQ_QUESTION, + direction = Sort.Direction.ASC) Pageable pageable, Model model) { + return searchView(new FaqSearch(), pageable, model); + } + + private String searchView(FaqSearch search, Pageable pageable, Model model) { + Page page = faqFacade.getFaqs(search, pageable); + + model.addAttribute("search", search); + model.addAttribute("page", page); + + return "apps/community/mainFaqList"; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/dto/FaqDTO.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/dto/FaqDTO.java new file mode 100644 index 0000000..0bc1c51 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/dto/FaqDTO.java @@ -0,0 +1,47 @@ +package com.eactive.apim.portal.apps.community.faq.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotEmpty; +import java.time.LocalDateTime; + +@Data +@EqualsAndHashCode +public class FaqDTO { + + private String id; + + /** + * 답변내용 + */ + @NotEmpty(message = "{field.required}") + private String faqAnswer; + + /** + * 질문내용 + */ + @NotEmpty(message = "{field.required}") + private String faqQuestion; + + /** + * 사용여부 + */ + private String useYn; + + /** + * 첨부파일ID + */ + private String fileId; + + + private String createdBy; + + private LocalDateTime createdDate; + + private String lastModifiedBy; + + private LocalDateTime lastModifiedDate; + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/dto/FaqSearch.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/dto/FaqSearch.java new file mode 100644 index 0000000..599a273 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/dto/FaqSearch.java @@ -0,0 +1,36 @@ +package com.eactive.apim.portal.apps.community.faq.dto; + +import com.eactive.apim.portal.common.search.*; +import com.eactive.apim.portal.portalfaq.entity.PortalFaq; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +public class FaqSearch implements BaseSearch { + + private String searchWrd; + + public String getSearchWrd() { + return searchWrd; + } + + public void setSearchWrd(String searchWrd) { + this.searchWrd = searchWrd; + } + + @Override + public List buildSearchCondition() { + List models = new ArrayList<>(); + + if(StringUtils.isNotEmpty(searchWrd)) { + models.add(new SpecificationSearchModel((root, query, criteriaBuilder) -> + criteriaBuilder.or( + criteriaBuilder.like(root.get("faqQuestion"), "%" + searchWrd + "%"), + criteriaBuilder.like(root.get("faqAnswer"), "%" + searchWrd + "%") + ) + )); + } + return models; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/mapper/FaqMapper.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/mapper/FaqMapper.java new file mode 100644 index 0000000..ccfffa2 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/mapper/FaqMapper.java @@ -0,0 +1,20 @@ +package com.eactive.apim.portal.apps.community.faq.mapper; + + +import com.eactive.apim.portal.apps.community.faq.dto.FaqDTO; +import com.eactive.apim.portal.common.mapper.CommonMapper; +import com.eactive.apim.portal.portalfaq.entity.PortalFaq; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring", + uses = {CommonMapper.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Component + +public interface FaqMapper { + + PortalFaq map(FaqDTO dto); + FaqDTO map(PortalFaq entity); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/repository/FaqRepository.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/repository/FaqRepository.java new file mode 100644 index 0000000..f369466 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/repository/FaqRepository.java @@ -0,0 +1,12 @@ +package com.eactive.apim.portal.apps.community.faq.repository; + +import com.eactive.apim.portal.portalfaq.entity.PortalFaq; +import com.eactive.eai.rms.data.EMSDataSource; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +@Repository +@EMSDataSource +public interface FaqRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqFacade.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqFacade.java new file mode 100644 index 0000000..4931830 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqFacade.java @@ -0,0 +1,10 @@ +package com.eactive.apim.portal.apps.community.faq.service; + +import com.eactive.apim.portal.apps.community.faq.dto.FaqDTO; +import com.eactive.apim.portal.apps.community.faq.dto.FaqSearch; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +public interface FaqFacade { + Page getFaqs(FaqSearch search, Pageable pageable); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqFacadeImpl.java new file mode 100644 index 0000000..779fc7e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqFacadeImpl.java @@ -0,0 +1,37 @@ +package com.eactive.apim.portal.apps.community.faq.service; + +import com.eactive.apim.portal.apps.community.faq.dto.FaqDTO; +import com.eactive.apim.portal.apps.community.faq.dto.FaqSearch; +import com.eactive.apim.portal.apps.community.faq.mapper.FaqMapper; +import com.eactive.apim.portal.portalfaq.entity.PortalFaq; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +@Service +public class FaqFacadeImpl implements FaqFacade { + + private final FaqService faqService; + private final FaqMapper faqMapper; + + @Autowired + public FaqFacadeImpl(FaqService faqService, FaqMapper faqMapper) { + this.faqService = faqService; + this.faqMapper = faqMapper; + } + + @Override + public Page getFaqs(FaqSearch search, Pageable pageable) { + Specification useYnSpec = (root, query, criteriaBuilder) -> + criteriaBuilder.equal(root.get("useYn"), "Y"); + + Specification searchSpec = search.buildSpecification(); + Specification finalSpec = useYnSpec.and(searchSpec); + + Page faqPage = faqService.findAll(finalSpec, pageable); + return faqPage.map(faqMapper::map); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqService.java b/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqService.java new file mode 100644 index 0000000..0c21fc6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/faq/service/FaqService.java @@ -0,0 +1,36 @@ +package com.eactive.apim.portal.apps.community.faq.service; + +import com.eactive.apim.portal.apps.community.faq.repository.FaqRepository; +import com.eactive.apim.portal.common.exception.NotFoundException; +import com.eactive.apim.portal.portalfaq.entity.PortalFaq; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +@Service +@Transactional +public class FaqService { + + private final FaqRepository faqRepository; + + @Autowired + public FaqService(FaqRepository faqRepository) { + this.faqRepository = faqRepository; + } + + @Transactional(readOnly = true) + public Page findAll(Specification spec, Pageable pageable) { + return faqRepository.findAll(spec, pageable); + } + + @Transactional(readOnly = true) + public PortalFaq findById(String id) { + return faqRepository.findById(id) + .orElseThrow(() -> new NotFoundException("FAQ not found with id: " + id)); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/controller/PortalNoticeController.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/controller/PortalNoticeController.java new file mode 100644 index 0000000..5f8d87b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/controller/PortalNoticeController.java @@ -0,0 +1,55 @@ +package com.eactive.apim.portal.apps.community.notice.controller; + +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeDTO; +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeSearch; +import com.eactive.apim.portal.apps.community.notice.service.PortalNoticeFacade; +import com.eactive.apim.portal.file.service.FileService; +import javax.annotation.Resource; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 공지사항 컨트롤러 + */ +@Controller +@RequestMapping("/portalnotice") +public class PortalNoticeController { + + private final PortalNoticeFacade portalNoticeFacade; + + public PortalNoticeController(PortalNoticeFacade portalNoticeFacade) { + this.portalNoticeFacade = portalNoticeFacade; + } + + @Resource(name = "fileService") + private FileService fileService; + + @GetMapping + public String listNotices(@PageableDefault(sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable, + @ModelAttribute("search") PortalNoticeSearch portalNoticeSearch, Model model) { + Page portalNotices = portalNoticeFacade.getNotices(portalNoticeSearch, pageable); + model.addAttribute("portalNotices", portalNotices.getContent()); + model.addAttribute("page", portalNotices); + return "apps/community/mainNoticeList"; + } + + @GetMapping("/detail") + public String viewNotice(@RequestParam(value = "id", required = false) String id, Model model) { + if(id == null) { + return "redirect:/portalnotice"; + } + + PortalNoticeDTO portalNotice = portalNoticeFacade.getNotice(id); + model.addAttribute("portalNotice", portalNotice); + return "apps/community/mainNoticeDetail"; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/dto/PortalNoticeDTO.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/dto/PortalNoticeDTO.java new file mode 100644 index 0000000..450f195 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/dto/PortalNoticeDTO.java @@ -0,0 +1,37 @@ +package com.eactive.apim.portal.apps.community.notice.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Size; +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PortalNoticeDTO { + private String id; + + @NotEmpty(message = "제목을 입력해주세요.") + @Size(max = 255, message = "제목은 255자를 초과할 수 없습니다.") + private String noticeSubject; + + @NotEmpty(message = "내용을 입력해주세요.") + @Length(max = 4000, message = "내용은 4000자를 초과할 수 없습니다.") + private String noticeDetail; + + private String fileId; + + private Long readCount; + + private boolean useYn; + + private String inquirerName; + + private LocalDateTime createdDate; + + private LocalDateTime lastModifiedDate; +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/dto/PortalNoticeSearch.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/dto/PortalNoticeSearch.java new file mode 100644 index 0000000..1e93dbf --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/dto/PortalNoticeSearch.java @@ -0,0 +1,37 @@ +package com.eactive.apim.portal.apps.community.notice.dto; + +import com.eactive.apim.portal.common.search.BaseSearch; +import com.eactive.apim.portal.common.search.ColumnSearchModel; +import com.eactive.apim.portal.common.search.SearchCondition; +import com.eactive.apim.portal.common.search.SearchModel; +import com.eactive.apim.portal.portalNotice.entity.PortalNotice; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class PortalNoticeSearch implements BaseSearch { + + private String searchSubjectOrDetail; + + private String searchUseYn; + + + @Override + public List buildSearchCondition() { + List models = new ArrayList<>(); + + if (StringUtils.isNotEmpty(searchSubjectOrDetail)) { + models.add(new ColumnSearchModel("noticeSubject", SearchCondition.LIKE, searchSubjectOrDetail)); + models.add(new ColumnSearchModel("noticeDetail", SearchCondition.LIKE, searchSubjectOrDetail)); + } + if (StringUtils.isNotEmpty(searchUseYn)) { + models.add(new ColumnSearchModel("useYn", SearchCondition.LIKE, searchUseYn)); + } + + return models; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/mapper/PortalNoticeMapper.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/mapper/PortalNoticeMapper.java new file mode 100644 index 0000000..e52fdc6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/mapper/PortalNoticeMapper.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.apps.community.notice.mapper; + + +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeDTO; +import com.eactive.apim.portal.common.mapper.CommonMapper; +import com.eactive.apim.portal.portalNotice.entity.PortalNotice; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring", + uses = {CommonMapper.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Component +public interface PortalNoticeMapper { + + PortalNotice toEntity(PortalNoticeDTO noticeDTO); + + PortalNoticeDTO map(PortalNotice portalNotice); + +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/repository/PortalNoticeRepository.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/repository/PortalNoticeRepository.java new file mode 100644 index 0000000..e0a65bb --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/repository/PortalNoticeRepository.java @@ -0,0 +1,12 @@ +package com.eactive.apim.portal.apps.community.notice.repository; + +import com.eactive.apim.portal.portalNotice.entity.PortalNotice; +import com.eactive.eai.rms.data.EMSDataSource; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +@EMSDataSource +public interface PortalNoticeRepository extends JpaRepository, JpaSpecificationExecutor { + +} + diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeFacade.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeFacade.java new file mode 100644 index 0000000..4e79668 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeFacade.java @@ -0,0 +1,13 @@ +package com.eactive.apim.portal.apps.community.notice.service; + +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeDTO; +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeSearch; +import java.util.List; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +public interface PortalNoticeFacade { + List getLatestNotices(); + Page getNotices(PortalNoticeSearch search, Pageable pageable); + PortalNoticeDTO getNotice(String id); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeFacadeImpl.java new file mode 100644 index 0000000..1a8f6f0 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeFacadeImpl.java @@ -0,0 +1,48 @@ +package com.eactive.apim.portal.apps.community.notice.service; + +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeDTO; +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeSearch; +import com.eactive.apim.portal.apps.community.notice.mapper.PortalNoticeMapper; +import com.eactive.apim.portal.portalNotice.entity.PortalNotice; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service("portalNoticeFacade") +@RequiredArgsConstructor +public class PortalNoticeFacadeImpl implements PortalNoticeFacade { + + private final PortalNoticeService portalNoticeService; + private final PortalNoticeMapper portalNoticeMapper; + + @Override + public List getLatestNotices() { + PortalNoticeSearch search = new PortalNoticeSearch(); + Pageable pageable = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC, "createdDate")); +// Pageable pageable = Pageable.ofSize(3); + Page notices = getNotices(search, pageable); + return notices.getContent(); + } + + @Override + public Page getNotices(PortalNoticeSearch search, Pageable pageable) { + /* 사용여부 Y일경우만 조회 */ + Specification spec = Specification.where(search.buildSpecification()) + .and((root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("useYn"),"Y")); + + Page noticesPage = portalNoticeService.getNotices(spec, pageable); + return noticesPage.map(portalNoticeMapper::map); + } + + @Override + public PortalNoticeDTO getNotice(String id) { + PortalNotice portalNotice = portalNoticeService.getNotice(id); + return portalNoticeMapper.map(portalNotice); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeService.java b/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeService.java new file mode 100644 index 0000000..762c7b7 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/notice/service/PortalNoticeService.java @@ -0,0 +1,35 @@ +package com.eactive.apim.portal.apps.community.notice.service; + +import com.eactive.apim.portal.apps.community.notice.repository.PortalNoticeRepository; +import com.eactive.apim.portal.common.exception.NotFoundException; +import com.eactive.apim.portal.portalNotice.entity.PortalNotice; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class PortalNoticeService { + + private final PortalNoticeRepository portalNoticeRepository; + + @Autowired + public PortalNoticeService(PortalNoticeRepository portalNoticeRepository) { + this.portalNoticeRepository = portalNoticeRepository; + } + + @Transactional(readOnly = true) + public Page getNotices(Specification spec, Pageable pageable) { + return portalNoticeRepository.findAll(spec, pageable); + } + + @Transactional(readOnly = true) + public PortalNotice getNotice(String id) { + return portalNoticeRepository.findById(id) + .orElseThrow(() -> new NotFoundException("PortalNotice not found with id: " + id)); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/controller/PartnershipApplicationController.java b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/controller/PartnershipApplicationController.java new file mode 100644 index 0000000..46c7e2a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/controller/PartnershipApplicationController.java @@ -0,0 +1,61 @@ +package com.eactive.apim.portal.apps.community.partnershipapplication.controller; + +import com.eactive.apim.portal.apps.community.partnershipapplication.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.apps.community.partnershipapplication.service.PartnershipApplicationFacade; +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.io.IOException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +@Controller +@RequestMapping("/partnership") +public class PartnershipApplicationController { + + private final PartnershipApplicationFacade partnershipApplicationFacade; + + @Autowired + public PartnershipApplicationController(PartnershipApplicationFacade partnershipApplicationFacade){ + this.partnershipApplicationFacade = partnershipApplicationFacade; + } + + + @GetMapping + public String newPartnershipApplicationForm(Model model, HttpServletRequest request) { + if (!SecurityUtil.isAuthenticated()) { + return "redirect:/login?redirect=/partnership"; + } + + String referer = request.getHeader("Referer"); + if(referer != null && !referer.contains("/partnership")) { + request.getSession().setAttribute("previousPage", referer); + } + + model.addAttribute("partnership", new PartnershipApplicationDTO()); + return "apps/community/mainPartnershipForm"; + } + + + @PostMapping + public String createPartnershipApplication(@Valid @ModelAttribute PartnershipApplicationDTO partnershipApplicationDTO, + BindingResult bindingResult, HttpServletRequest httpServletRequest, RedirectAttributes redirectAttributes) throws IOException { + if (bindingResult.hasErrors()) { + return "apps/community/mainPartnershipForm"; + } + + partnershipApplicationFacade.createPartnershipApplication(partnershipApplicationDTO); + + // 성공 메시지 추가 + redirectAttributes.addFlashAttribute("success", "사업제휴신청이 완료되었습니다."); + + httpServletRequest.getSession().removeAttribute("previousPage"); + return "redirect:/partnership"; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/dto/PartnershipApplicationDTO.java b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/dto/PartnershipApplicationDTO.java new file mode 100644 index 0000000..72a08d5 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/dto/PartnershipApplicationDTO.java @@ -0,0 +1,29 @@ +package com.eactive.apim.portal.apps.community.partnershipapplication.dto; + +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Size; +import org.springframework.web.multipart.MultipartFile; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PartnershipApplicationDTO { + + @Size(max = 255, message = "제목은 255자를 초과할 수 없습니다.") + private String bizSubject; + + private String bizDetail; + + /** + * 첨부파일ID + */ + private String fileId; + + private List files; + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/mapper/PartnershipApplicationMapper.java b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/mapper/PartnershipApplicationMapper.java new file mode 100644 index 0000000..529d32c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/mapper/PartnershipApplicationMapper.java @@ -0,0 +1,19 @@ +package com.eactive.apim.portal.apps.community.partnershipapplication.mapper; + + +import com.eactive.apim.portal.apps.community.partnershipapplication.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.common.mapper.CommonMapper; +import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring", + uses = {CommonMapper.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Component + +public interface PartnershipApplicationMapper { + + PartnershipApplication toEntity(PartnershipApplicationDTO dto); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/repository/PartnershipApplicationRepository.java b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/repository/PartnershipApplicationRepository.java new file mode 100644 index 0000000..8f52467 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/repository/PartnershipApplicationRepository.java @@ -0,0 +1,12 @@ +package com.eactive.apim.portal.apps.community.partnershipapplication.repository; + +import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import com.eactive.eai.rms.data.EMSDataSource; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +@Repository +@EMSDataSource +public interface PartnershipApplicationRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationFacade.java b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationFacade.java new file mode 100644 index 0000000..6410d69 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationFacade.java @@ -0,0 +1,9 @@ +package com.eactive.apim.portal.apps.community.partnershipapplication.service; + +import com.eactive.apim.portal.apps.community.partnershipapplication.dto.PartnershipApplicationDTO; +import java.io.IOException; + +public interface PartnershipApplicationFacade { + + void createPartnershipApplication(PartnershipApplicationDTO partnershipApplicationDTO) throws IOException; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationFacadeImpl.java new file mode 100644 index 0000000..38284e8 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationFacadeImpl.java @@ -0,0 +1,37 @@ +package com.eactive.apim.portal.apps.community.partnershipapplication.service; + +import com.eactive.apim.portal.apps.community.partnershipapplication.dto.PartnershipApplicationDTO; +import com.eactive.apim.portal.apps.community.partnershipapplication.mapper.PartnershipApplicationMapper; +import com.eactive.apim.portal.file.entity.FileInfo; +import com.eactive.apim.portal.file.service.FileService; +import com.eactive.apim.portal.file.service.FileTypeContext; +import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.io.IOException; + +@Service +@RequiredArgsConstructor +public class PartnershipApplicationFacadeImpl implements PartnershipApplicationFacade { + + private final PartnershipApplicationService partnershipApplicationService; + private final PartnershipApplicationMapper partnershipApplicationMapper; + private final FileService fileService; + + + @Override + public void createPartnershipApplication(PartnershipApplicationDTO partnershipApplicationDTO) throws IOException { + + FileInfo file = null; + if (!partnershipApplicationDTO.getFiles().isEmpty()) { + FileTypeContext.setFileType("business"); + file = fileService.createFile(partnershipApplicationDTO.getFiles()); + } + PartnershipApplication partnershipApplication = partnershipApplicationMapper.toEntity(partnershipApplicationDTO); + if (file != null) { + partnershipApplication.setFileId(file.getFileId()); + } + partnershipApplicationService.createPartnershipApplication(partnershipApplication); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationService.java b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationService.java new file mode 100644 index 0000000..a00277a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/partnershipapplication/service/PartnershipApplicationService.java @@ -0,0 +1,24 @@ +package com.eactive.apim.portal.apps.community.partnershipapplication.service; + +import com.eactive.apim.portal.apps.community.partnershipapplication.repository.PartnershipApplicationRepository; +import com.eactive.apim.portal.partnershipapplication.entity.PartnershipApplication; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +@Service +@Transactional +public class PartnershipApplicationService { + + private final PartnershipApplicationRepository partnershipApplicationRepository; + + @Autowired + public PartnershipApplicationService(PartnershipApplicationRepository partnershipApplicationRepository) { + this.partnershipApplicationRepository = partnershipApplicationRepository; + } + + public void createPartnershipApplication(PartnershipApplication partnershipApplication) { + partnershipApplicationRepository.save(partnershipApplication); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/controller/InquiryController.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/controller/InquiryController.java new file mode 100644 index 0000000..6b67b90 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/controller/InquiryController.java @@ -0,0 +1,133 @@ +package com.eactive.apim.portal.apps.community.qna.controller; + +import com.eactive.apim.portal.apps.community.qna.dto.InquiryDTO; +import com.eactive.apim.portal.apps.community.qna.dto.InquirySearch; +import com.eactive.apim.portal.apps.community.qna.service.InquiryFacade; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.io.IOException; + +import com.eactive.apim.portal.file.exception.InvalidFileException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import javax.validation.Valid; + +@Controller +@RequestMapping("/inquiry") +@Secured("ROLE_INQUIRY") +public class InquiryController { + + public static final String APPS_COMMUNITY_MAIN_INQUIRY_FORM = "apps/community/mainInquiryForm"; + public static final String REDIRECT_INQUIRY = "redirect:/inquiry"; + private final InquiryFacade inquiryFacade; + + public InquiryController(InquiryFacade inquiryFacade) { + this.inquiryFacade = inquiryFacade; + } + + /** + * 1. inquiry 목록 조회 페이지 + */ + @GetMapping + public String listInquiries(@PageableDefault(sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable, @ModelAttribute("search") InquirySearch search, + Model model) { + PortalAuthenticatedUser user = SecurityUtil.getPortalAuthenticatedUser(); + Page inquiries = inquiryFacade.getInquiries(search, pageable, user); + model.addAttribute("inquiries", inquiries.getContent()); + model.addAttribute("page", inquiries); + return "apps/community/mainInquiryList"; + } + + /** + * 2. inquiry 상세 조회 페이지 + */ + @GetMapping("/detail") + public String viewInquiry(@RequestParam(value = "id", required = false) String id, Model model) { + + if(id == null) { + return REDIRECT_INQUIRY; + } + + InquiryDTO inquiry = inquiryFacade.getMyInquiry(SecurityUtil.getPortalAuthenticatedUser(), id); + model.addAttribute("inquiry", inquiry); + return "apps/community/mainInquiryDetail"; + } + + /** + * 3. inquiry 등록 페이지 + */ + @GetMapping("/new") + public String newInquiryForm(Model model) { + model.addAttribute("inquiry", new InquiryDTO()); + return APPS_COMMUNITY_MAIN_INQUIRY_FORM; + } + + /** + * 4. inquiry 수정 페이지 + */ + @GetMapping("/edit") + public String editInquiryForm(@RequestParam("id") String id, Model model) { + InquiryDTO inquiry = inquiryFacade.getMyInquiry(SecurityUtil.getPortalAuthenticatedUser(), id); + model.addAttribute("inquiry", inquiry); + return APPS_COMMUNITY_MAIN_INQUIRY_FORM; + } + + /** + * 5. inquiry 등록 요청 + */ + @PostMapping + public String createInquiry(@Valid @ModelAttribute InquiryDTO inquiryDTO, BindingResult bindingResult, + RedirectAttributes redirectAttributes, + Model model) throws IOException { + if (bindingResult.hasErrors()) { + model.addAttribute("inquiry", inquiryDTO); + return APPS_COMMUNITY_MAIN_INQUIRY_FORM; + } + + inquiryFacade.createInquiry(inquiryDTO); + + redirectAttributes.addFlashAttribute("success", "Q&A 작성이 완료되었습니다."); + return REDIRECT_INQUIRY; + } + + /** + * 6. inquiry 수정 요청 + */ + @PostMapping("/edit") + public String updateInquiry(@Valid @ModelAttribute InquiryDTO inquiryDTO, BindingResult bindingResult, + RedirectAttributes redirectAttributes) throws IOException { + if (bindingResult.hasErrors()) { + return APPS_COMMUNITY_MAIN_INQUIRY_FORM; + } + inquiryFacade.updateUserInquiry(SecurityUtil.getPortalAuthenticatedUser(), inquiryDTO.getId(), inquiryDTO); + redirectAttributes.addFlashAttribute("success", "Q&A 수정이 완료되었습니다."); + return "redirect:/inquiry/detail?id=" + inquiryDTO.getId(); + } + + /** + * 7. inquiry 삭제 요청 + */ + @PostMapping("/{id}/delete") + public String deleteInquiry(@PathVariable String id, RedirectAttributes redirectAttributes) { + inquiryFacade.deleteUserInquiry(SecurityUtil.getPortalAuthenticatedUser(), id); + // 성공 메시지 추가 + redirectAttributes.addFlashAttribute("success", "삭제 되었습니다."); + return REDIRECT_INQUIRY; + } + + @ExceptionHandler(InvalidFileException.class) + public String handleInvalidFileException(InvalidFileException e, Model model) { + model.addAttribute("inquiry", new InquiryDTO()); + model.addAttribute("error", e.getMessage()); + return "redirect:/inquiry/new"; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/dto/InquiryDTO.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/dto/InquiryDTO.java new file mode 100644 index 0000000..63b11db --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/dto/InquiryDTO.java @@ -0,0 +1,59 @@ +package com.eactive.apim.portal.apps.community.qna.dto; + +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.NotEmpty; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; +import java.time.LocalDateTime; +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class InquiryDTO { + + private String id; + + @NotEmpty(message = "제목을 입력해주세요.") + @Size(max = 50, message = "제목은 50자를 초과할 수 없습니다.") + private String inquirySubject; + + @NotEmpty(message = "내용을 입력해주세요.") + @Size(max = 4000, message = "제목은 50자를 초과할 수 없습니다.") + private String inquiryDetail; + + @Pattern(regexp = "^(PENDING|IN_PROGRESS|CLOSED)$", message = "유효하지 않은 문의 상태입니다.") + private String inquiryStatus; + + private String inquirerName; + + private PortalUserDTO inquirer; + + @Size(max = 4000, message = "응답 내용은 4000자를 초과할 수 없습니다.") + private String responseDetail; + + private LocalDateTime responseDate; + + private String responderName; + + private String createdBy; + + private LocalDateTime createdDate; + + private String lastModifiedBy; + + private LocalDateTime lastModifiedDate; + + private List files; + + private String attachFile; + + private String maskedInquirerName; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/dto/InquirySearch.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/dto/InquirySearch.java new file mode 100644 index 0000000..121c7d6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/dto/InquirySearch.java @@ -0,0 +1,62 @@ +package com.eactive.apim.portal.apps.community.qna.dto; + +import com.eactive.apim.portal.common.search.BaseSearch; +import com.eactive.apim.portal.common.search.ColumnSearchModel; +import com.eactive.apim.portal.common.search.SearchCondition; +import com.eactive.apim.portal.common.search.SearchModel; +import com.eactive.apim.portal.qna.entity.Inquiry; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * 게시물 검색 조건 + */ +public class InquirySearch implements BaseSearch { + + private String searchCnd; + + private String searchWrd; + + + @Override + public List buildSearchCondition() { + List models = new ArrayList<>(); + + if (StringUtils.isNotEmpty(searchCnd) && StringUtils.isNotEmpty(searchWrd)) { + switch (searchCnd) { + case "0": + models.add(new ColumnSearchModel("inquirySubject", SearchCondition.LIKE, searchWrd)); + break; + case "1": + models.add(new ColumnSearchModel("inquiryDetail", SearchCondition.LIKE, searchWrd)); + break; + case "2": + models.add(new ColumnSearchModel("inquirer.userName", SearchCondition.LIKE, searchWrd)); + break; + default: + break; + } + + } + + return models; + } + + public String getSearchCnd() { + return searchCnd; + } + + public void setSearchCnd(String searchCnd) { + this.searchCnd = searchCnd; + } + + public String getSearchWrd() { + return searchWrd; + } + + public void setSearchWrd(String searchWrd) { + this.searchWrd = searchWrd; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/mapper/InquiryMapper.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/mapper/InquiryMapper.java new file mode 100644 index 0000000..3aaa400 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/mapper/InquiryMapper.java @@ -0,0 +1,22 @@ +package com.eactive.apim.portal.apps.community.qna.mapper; + +import com.eactive.apim.portal.apps.community.qna.dto.InquiryDTO; +import com.eactive.apim.portal.common.mapper.CommonMapper; +import com.eactive.apim.portal.qna.entity.Inquiry; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.ReportingPolicy; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring", + uses = {CommonMapper.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE) +@Component +public interface InquiryMapper { + + Inquiry toEntity(InquiryDTO inquiry); + + @Mapping(target = "inquirerName", source = "inquirer.userName") + InquiryDTO map(Inquiry inquiry); + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/repository/InquiryRepository.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/repository/InquiryRepository.java new file mode 100644 index 0000000..bb23f9d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/repository/InquiryRepository.java @@ -0,0 +1,16 @@ +package com.eactive.apim.portal.apps.community.qna.repository; + +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.qna.entity.Inquiry; +import com.eactive.eai.rms.data.EMSDataSource; +import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +@Repository +@EMSDataSource +public interface InquiryRepository extends JpaRepository, JpaSpecificationExecutor { + + Optional findByInquirerAndId(PortalUser inquirer, String id); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryFacade.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryFacade.java new file mode 100644 index 0000000..a2f3874 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryFacade.java @@ -0,0 +1,23 @@ +package com.eactive.apim.portal.apps.community.qna.service; + +import com.eactive.apim.portal.apps.community.qna.dto.InquiryDTO; +import com.eactive.apim.portal.apps.community.qna.dto.InquirySearch; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import java.io.IOException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +public interface InquiryFacade { + + Page getInquiries(InquirySearch search, Pageable pageable, PortalAuthenticatedUser user); + + InquiryDTO getUserInquiry(PortalAuthenticatedUser user, String id); + + InquiryDTO getMyInquiry(PortalAuthenticatedUser user, String id); + + void createInquiry(InquiryDTO inquiryDTO) throws IOException; + + void updateUserInquiry(PortalAuthenticatedUser user, String id, InquiryDTO inquiryDTO) throws IOException; + + void deleteUserInquiry(PortalAuthenticatedUser user, String id); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryFacadeImpl.java new file mode 100644 index 0000000..9f84e7c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryFacadeImpl.java @@ -0,0 +1,128 @@ +package com.eactive.apim.portal.apps.community.qna.service; + +import com.eactive.apim.portal.apps.community.qna.dto.InquiryDTO; +import com.eactive.apim.portal.apps.community.qna.dto.InquirySearch; +import com.eactive.apim.portal.apps.community.qna.mapper.InquiryMapper; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.common.util.StringMaskingUtil; +import com.eactive.apim.portal.file.entity.FileInfo; +import com.eactive.apim.portal.file.service.FileService; +import com.eactive.apim.portal.file.service.FileTypeContext; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import com.eactive.apim.portal.qna.entity.Inquiry; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.util.HashMap; + +@Service +@RequiredArgsConstructor +public class InquiryFacadeImpl implements InquiryFacade { + + private final FileService fileService; + private final InquiryService inquiryService; + private final InquiryMapper inquiryMapper; + + @Override + public Page getInquiries(InquirySearch search, Pageable pageable, PortalAuthenticatedUser user) { + Specification spec = Specification.where(search.buildSpecification()); + + spec = user.getRoleCode().equals(PortalUserEnums.RoleCode.ROLE_USER) + ? spec.and((root, query, criteriaBuilder) -> + criteriaBuilder.equal(root.get("inquirer").get("id"), user.getId())) + : spec.and((root, query, criteriaBuilder) -> + criteriaBuilder.equal(root.get("inquirer").get("portalOrg").get("id"), user.getPortalOrg().getId())); + + Page inquiriesPage = inquiryService.getInquiries(spec, pageable); + + return inquiriesPage.map(inquiry -> { + InquiryDTO dto = inquiryMapper.map(inquiry); + if (dto != null && dto.getInquirer() != null) { + dto.setMaskedInquirerName(StringMaskingUtil.maskName( + inquiry.getInquirer().getUserName(), + inquiry.getInquirer().getId(), + user.getId() + )); + dto.getInquirer().setUserName(null); // 원본 데이터 제거 + } + return dto; + }); + } + + + @Override + public InquiryDTO getUserInquiry(PortalAuthenticatedUser user, String id) { + Inquiry inquiry = inquiryService.getInquiry(id); + InquiryDTO dto = inquiryMapper.map(inquiry); + + if (dto != null && dto.getInquirer() != null) { + dto.setMaskedInquirerName(StringMaskingUtil.maskName( + inquiry.getInquirer().getUserName(), + inquiry.getInquirer().getId(), + user.getId() + )); + dto.getInquirer().setUserName(null); // 원본 데이터 제거 + } + + return dto; + } + + @Override + public InquiryDTO getMyInquiry(PortalAuthenticatedUser user, String id) { + Inquiry inquiry = inquiryService.getMyInquiry(user, id); + return inquiryMapper.map(inquiry); + } + + @Override + public void createInquiry(InquiryDTO inquiryDTO) throws IOException { + + FileInfo file = null; + if (!inquiryDTO.getFiles().isEmpty()) { + FileTypeContext.setFileType("qna"); + file = fileService.createFile(inquiryDTO.getFiles()); + } + + Inquiry inquiry = inquiryMapper.toEntity(inquiryDTO); + if (file != null) { + inquiry.setAttachFile(file.getFileId()); + } + inquiry.setInquirer(SecurityUtil.getPortalAuthenticatedUser()); + inquiryService.createInquiry(inquiry); + + HashMap params = new HashMap<>(); + params.put("inquiryId", inquiry.getId()); + params.put("subject", inquiry.getInquirySubject()); + + } + + @Override + public void updateUserInquiry(PortalAuthenticatedUser user, String id, InquiryDTO inquiryDTO) throws IOException { + Inquiry existingInquiry = inquiryService.getMyInquiry(user, id); + + // 파일이 새로 업로드된 경우 + if (!inquiryDTO.getFiles().isEmpty() && !inquiryDTO.getFiles().get(0).isEmpty()) { + FileTypeContext.setFileType("qna"); + FileInfo file = fileService.createFile(inquiryDTO.getFiles()); + if(file != null) { + inquiryDTO.setAttachFile(file.getFileId()); + } + } else if (existingInquiry.getAttachFile() != null && inquiryDTO.getAttachFile() == null) { + fileService.deleteFile(inquiryDTO.getAttachFile()); + inquiryDTO.setAttachFile(null); + } + + Inquiry inquiry = inquiryMapper.toEntity(inquiryDTO); + inquiry.setInquirer(existingInquiry.getInquirer()); + inquiryService.updateInquiry(id, inquiry); + } + + @Override + public void deleteUserInquiry(PortalAuthenticatedUser user, String id) { + inquiryService.deleteMyInquiry(user, id); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryService.java b/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryService.java new file mode 100644 index 0000000..cf64989 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/community/qna/service/InquiryService.java @@ -0,0 +1,94 @@ +package com.eactive.apim.portal.apps.community.qna.service; + + +import com.eactive.apim.portal.apps.community.qna.repository.InquiryRepository; +import com.eactive.apim.portal.common.exception.NotFoundException; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.qna.entity.Inquiry; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class InquiryService { + + public static final String PENDING = "PENDING"; + private final InquiryRepository inquiryRepository; + + public InquiryService(InquiryRepository inquiryRepository) { + this.inquiryRepository = inquiryRepository; + } + + /** + * 1. Inquiry 조회 + * + * @param id Inquiry의 ID + * @return 조회된 Inquiry 객체 + * @throws NotFoundException Inquiry가 존재하지 않을 경우 + */ + @Transactional(readOnly = true) + public Inquiry getInquiry(String id) { + return inquiryRepository.findById(id) + .orElseThrow(() -> new NotFoundException("Inquiry not found with id: " + id)); + } + + /** + * Inquiry 목록 조회 (페이징 및 필터링 지원) + * + * @param spec 필터링 조건 + * @param pageable 페이징 정보 + * @return 페이징된 Inquiry 목록 + */ + @Transactional(readOnly = true) + public Page getInquiries(Specification spec, Pageable pageable) { + return inquiryRepository.findAll(spec, pageable); + } + + /** + * 2. 새로운 Inquiry 등록 + * + * @param inquiry 등록할 Inquiry 객체 + * @return 등록된 Inquiry 객체 + */ + public Inquiry createInquiry(Inquiry inquiry) { + inquiry.setId(null); + inquiry.setInquiryStatus(PENDING); + return inquiryRepository.save(inquiry); + } + + /** + * 3. Inquiry 수정 + * + * @param id 수정할 Inquiry의 ID + * @param updatedInquiry 수정할 내용이 담긴 Inquiry 객체 + * @return 수정된 Inquiry 객체 + * @throws RuntimeException Inquiry가 존재하지 않을 경우 + */ + public Inquiry updateInquiry(String id, Inquiry updatedInquiry) { + Inquiry inquiry = getInquiry(id); + inquiry.setInquirySubject(updatedInquiry.getInquirySubject()); + inquiry.setInquiryDetail(updatedInquiry.getInquiryDetail()); + inquiry.setAttachFile(updatedInquiry.getAttachFile()); + return inquiryRepository.save(inquiry); + } + + /** + * 4. Inquiry 삭제 + * + * @param id 삭제할 Inquiry의 ID + * @throws NotFoundException Inquiry가 존재하지 않을 경우 + */ + public void deleteMyInquiry(PortalAuthenticatedUser user, String id) { + Inquiry myInquiry = inquiryRepository.findByInquirerAndId(user, id).orElseThrow(() -> new NotFoundException("내 질문을 찾을 수 없습니다.")); + inquiryRepository.delete(myInquiry); + } + + public Inquiry getMyInquiry(PortalAuthenticatedUser user, String id) { + return inquiryRepository.findByInquirerAndId(user, id).orElseThrow(() -> new NotFoundException("내 질문을 찾을 수 없습니다.")); + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/dashboard/ApiDailyStatistics.java b/src/main/java/com/eactive/apim/portal/apps/dashboard/ApiDailyStatistics.java new file mode 100644 index 0000000..114b064 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/dashboard/ApiDailyStatistics.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.apps.dashboard; + +public class ApiDailyStatistics { + private final String apiId; + private final String apiName; + private final String date; + private final Long requestCount; + + public ApiDailyStatistics(String apiId, String apiName, String date, Long requestCount) { + this.apiId = apiId; + this.apiName = apiName; + this.date = date; + this.requestCount = requestCount; + } + + public String getApiId() { return apiId; } + public String getApiName() { return apiName; } + public String getDate() { return date; } + public Long getRequestCount() { return requestCount; } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/dashboard/controller/DailyApiUsageHandler.java b/src/main/java/com/eactive/apim/portal/apps/dashboard/controller/DailyApiUsageHandler.java new file mode 100644 index 0000000..55f62d3 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/dashboard/controller/DailyApiUsageHandler.java @@ -0,0 +1,56 @@ +package com.eactive.apim.portal.apps.dashboard.controller; + +import com.eactive.apim.portal.apps.dashboard.service.DashboardService; +import com.eactive.apim.portal.common.pagerouter.PageHandler; +import com.eactive.apim.portal.common.util.DateUtil; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import javax.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import org.springframework.ui.Model; + +@Component("dailyApiUsageHandler") +@RequiredArgsConstructor +public class DailyApiUsageHandler implements PageHandler { + + private final DashboardService dashboardService; + + @Override + public void handleRequest(HttpServletRequest httpRequest, Model model) { + + if (SecurityUtil.getPortalAuthenticatedUser() != null && SecurityUtil.getPortalAuthenticatedUser().getPortalOrg() != null) { + PortalOrg org = SecurityUtil.getPortalAuthenticatedUser().getPortalOrg(); + + String fromDateStr = httpRequest.getParameter("fromDate"); + String toDateStr = httpRequest.getParameter("toDate"); + + LocalDate startDate; + LocalDate endDate; + + // Parse dates if provided, otherwise use default dates + if (fromDateStr != null && toDateStr != null) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + try { + startDate = LocalDate.parse(fromDateStr, formatter); + endDate = LocalDate.parse(toDateStr, formatter); + } catch (DateTimeParseException e) { + // Fallback to default dates if parsing fails + startDate = DateUtil.getFirstDateOfCurrentMonthAsDate(); + endDate = DateUtil.getLastDateOfCurrentMonthAsDate(); + } + } else { + // Use default dates if parameters are not provided + startDate = DateUtil.getFirstDateOfCurrentMonthAsDate(); + endDate = DateUtil.getLastDateOfCurrentMonthAsDate(); + } + + model.addAttribute("matrix", dashboardService.generateMatrix(org, startDate, endDate)); + } + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/dashboard/controller/DashboardHandler.java b/src/main/java/com/eactive/apim/portal/apps/dashboard/controller/DashboardHandler.java new file mode 100644 index 0000000..ade2417 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/dashboard/controller/DashboardHandler.java @@ -0,0 +1,38 @@ +package com.eactive.apim.portal.apps.dashboard.controller; + +import com.eactive.apim.portal.apps.dashboard.service.DashboardService; +import com.eactive.apim.portal.common.pagerouter.PageHandler; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import org.springframework.ui.Model; + +@Component("dashboardHandler") +@RequiredArgsConstructor +public class DashboardHandler implements PageHandler { + + private final DashboardService dashboardService; + + @Override + public void handleRequest(HttpServletRequest httpRequest, Model model) { + + if (SecurityUtil.getPortalAuthenticatedUser() != null && SecurityUtil.getPortalAuthenticatedUser().getPortalOrg() != null) { + PortalOrg org = SecurityUtil.getPortalAuthenticatedUser().getPortalOrg(); + model.addAttribute("pendingKeyCount", dashboardService.getPendingApiKeyRequestCount(org)); + model.addAttribute("testKeyCount", dashboardService.getTestApiKeyCount(org)); + model.addAttribute("pendingProdCount", dashboardService.getProdApiKeyRequestCount(org)); + model.addAttribute("prodKeyCount", dashboardService.getProdApiKeyCount(org)); + + model.addAttribute("totalApi", dashboardService.getTotalApi(org)); + model.addAttribute("dailyTotal", dashboardService.getDailyTotalApiUsage(org)); + model.addAttribute("weeklyTotal", dashboardService.getWeeklyTotalApiUsage(org)); + model.addAttribute("monthlyTotal", dashboardService.getMonthlyTotalApiUsage(org)); + model.addAttribute("topApi", dashboardService.getTopApis(org)); + } + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/dashboard/repository/PortalStatisticsRepository.java b/src/main/java/com/eactive/apim/portal/apps/dashboard/repository/PortalStatisticsRepository.java new file mode 100644 index 0000000..5f5832f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/dashboard/repository/PortalStatisticsRepository.java @@ -0,0 +1,69 @@ +package com.eactive.apim.portal.apps.dashboard.repository; + +import com.eactive.apim.portal.apps.dashboard.ApiDailyStatistics; +import com.eactive.apim.portal.portalstatistics.entity.PortalStatistics; +import com.eactive.apim.portal.portalstatistics.entity.PortalStatisticsId; +import com.eactive.eai.data.jpa.BaseRepository; +import java.util.List; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +public interface PortalStatisticsRepository extends BaseRepository { + + @Query("SELECT p.id.apiId as apiId, p.apiName as apiName, COALESCE(SUM(p.requestCount), 0) as totalRequests " + + "FROM PortalStatistics p " + + "WHERE p.orgId = :orgId " + + "GROUP BY p.id.apiId, p.apiName " + + "ORDER BY totalRequests DESC") + List findTop3ApisByOrg(@Param("orgId") String orgId, Pageable pageable); + + + @Query("SELECT p.id.apiId as apiId, p.apiName as apiName, COALESCE(SUM(p.requestCount), 0) as totalRequests " + + "FROM PortalStatistics p " + + "WHERE p.orgId = :orgId " + + "AND p.id.statisticsTime >= :fromTime " + + "AND p.id.statisticsTime <= :toTime " + + "GROUP BY p.id.apiId, p.apiName " + + "ORDER BY totalRequests DESC") + List findTop3ApisByOrgAndTimePeriod( + @Param("orgId") String orgId, + @Param("fromTime") String fromTime, + @Param("toTime") String toTime, + Pageable pageable); + + @Query("SELECT COALESCE(SUM(p.requestCount), 0) " + + "FROM PortalStatistics p " + + "WHERE p.orgId = :orgId " + + "AND p.id.statisticsTime >= :fromTime") + int findTotalRequestsByOrgAndFromTime( + @Param("orgId") String orgId, + @Param("fromTime") String fromTime); + + @Query("SELECT NEW com.eactive.apim.portal.apps.dashboard.ApiDailyStatistics(" + + "p.id.apiId, " + + "p.apiName, " + + "SUBSTRING(p.id.statisticsTime, 1, 8), " + // Extract YYYYMMDD from statisticsTime + "SUM(p.requestCount)) " + + "FROM PortalStatistics p " + + "WHERE p.orgId = :orgId " + + "AND p.id.statisticsTime >= :fromDate " + + "AND p.id.statisticsTime <= :toDate " + + "GROUP BY p.id.apiId, p.apiName, SUBSTRING(p.id.statisticsTime, 1, 8) " + + "ORDER BY SUBSTRING(p.id.statisticsTime, 1, 8) ASC") + List findApiDailyStatsByOrg( + @Param("orgId") String orgId, + @Param("fromDate") String fromDate, + @Param("toDate") String toDate); + + interface TopApiUsage { + + String getApiId(); + + String getApiName(); + + Long getTotalRequests(); + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/dashboard/service/DashboardService.java b/src/main/java/com/eactive/apim/portal/apps/dashboard/service/DashboardService.java new file mode 100644 index 0000000..d227516 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/dashboard/service/DashboardService.java @@ -0,0 +1,222 @@ +package com.eactive.apim.portal.apps.dashboard.service; + +import com.eactive.apim.portal.apispec.entity.ApiSpecInfo; +import com.eactive.apim.portal.app.entity.Credential; +import com.eactive.apim.portal.app.repository.CredentialRepository; +import com.eactive.apim.portal.apprequest.entity.AppRequestType; +import com.eactive.apim.portal.apprequest.repository.AppRequestRepository; +import com.eactive.apim.portal.approval.entity.ApprovalStatus; +import com.eactive.apim.portal.approval.statemachine.ProcessingState; +import com.eactive.apim.portal.approval.statemachine.RequestedState; +import com.eactive.apim.portal.apps.approval.service.ApprovalService; +import com.eactive.apim.portal.apps.dashboard.ApiDailyStatistics; +import com.eactive.apim.portal.apps.dashboard.repository.PortalStatisticsRepository; +import com.eactive.apim.portal.apps.dashboard.repository.PortalStatisticsRepository.TopApiUsage; +import com.eactive.apim.portal.common.util.DateUtil; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@RequiredArgsConstructor +@Transactional +@Service +public class DashboardService { + + private final static String PROD_SERVER = "PROD"; + private final static String STG_SERVER = "STG"; + + private final AppRequestRepository appRequestRepository; + private final CredentialRepository credentialRepository; + private final PortalStatisticsRepository portalStatisticsRepository; + + public int getTestApiKeyCount(PortalOrg org) { + return credentialRepository.countAllByOrgidAndServer(org.getId(), STG_SERVER); + } + + public int getPendingApiKeyRequestCount(PortalOrg org) { + return appRequestRepository.countAllByOrgAndTypeIsInAndApproval_ApprovalStatusIn(org, Arrays.asList(AppRequestType.NEW, AppRequestType.MODIFY, AppRequestType.DELETE), + Arrays.asList(new ProcessingState(), new RequestedState())); + } + + public int getProdApiKeyRequestCount(PortalOrg org) { + return appRequestRepository.countAllByOrgAndTypeIsInAndApproval_ApprovalStatusIn(org, Arrays.asList(AppRequestType.PROD_NEW, AppRequestType.PROD_MODIFY, AppRequestType.PROD_DELETE), + Arrays.asList(new ProcessingState(), new RequestedState())); + } + + public int getProdApiKeyCount(PortalOrg org) { + return credentialRepository.findAllByOrgidAndServer(org.getId(), PROD_SERVER).size(); + } + + public int getTotalApi(PortalOrg org) { + + List credentials = credentialRepository.findAllByOrgidAndServer(org.getId(), PROD_SERVER); + return (int) credentials.stream() + .flatMap(credential -> credential.getApiList().stream()) + .map(ApiSpecInfo::getApiId) + .distinct() + .count(); + } + + + public List> createStatisticsMatrix(List statistics) { + if (statistics == null || statistics.isEmpty()) { + return Collections.emptyList(); + } + + // Get unique dates and sort them + Set dates = statistics.stream() + .map(ApiDailyStatistics::getDate) + .collect(Collectors.toCollection(TreeSet::new)); + + // Get unique API names and sort them + Set apiNames = statistics.stream() + .map(ApiDailyStatistics::getApiName) + .collect(Collectors.toCollection(TreeSet::new)); + + // Create header row with formatted dates + List headerRow = new ArrayList<>(); + headerRow.add(""); // Empty cell for top-left corner + + // Format dates from YYYYMMDD to MM.DD + DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM.dd"); + + dates.forEach(date -> { + LocalDate localDate = LocalDate.parse(date, inputFormatter); + headerRow.add(localDate.format(outputFormatter)); + }); + + // Create a map for quick lookup of statistics + Map> apiDateMap = new HashMap<>(); + for (ApiDailyStatistics stat : statistics) { + apiDateMap.computeIfAbsent(stat.getApiName(), k -> new HashMap<>()) + .put(stat.getDate(), stat.getRequestCount()); + } + + // Create matrix + List> matrix = new ArrayList<>(); + matrix.add(headerRow); + + // Add rows for each API + for (String apiName : apiNames) { + List row = new ArrayList<>(); + row.add(apiName); + + for (String date : dates) { + Long count = apiDateMap + .getOrDefault(apiName, Collections.emptyMap()) + .getOrDefault(date, 0L); + row.add(String.format("%,d", count)); // Format number with thousands separator + } + + matrix.add(row); + } + + return matrix; + } + + + public List> generateMatrix(PortalOrg org, LocalDate startDate, LocalDate endDate) { + + + String fromTime = formatToStatisticsStartTime(startDate); + String toTime = formatToStatisticsEndTime(endDate); + + List statistics = portalStatisticsRepository.findApiDailyStatsByOrg(org.getId(), fromTime, toTime); + + List allDates = new ArrayList<>(); + LocalDate currentDate = startDate; + + while (!currentDate.isAfter(endDate)) { + allDates.add(currentDate.format(DateTimeFormatter.BASIC_ISO_DATE)); // Formats to yyyyMMdd + currentDate = currentDate.plusDays(1); + } + + Map apiIdToName = statistics.stream() + .collect(Collectors.toMap( + ApiDailyStatistics::getApiId, + ApiDailyStatistics::getApiName, + (existing, replacement) -> existing // Keep first occurrence if duplicates + )); + + // Create a map for existing statistics + Map> existingStats = new HashMap<>(); + for (ApiDailyStatistics stat : statistics) { + existingStats.computeIfAbsent(stat.getApiId(), k -> new HashMap<>()) + .put(stat.getDate(), stat.getRequestCount()); + } + + // Create complete statistics list with filled empty values + List completeStatistics = new ArrayList<>(); + + for (Map.Entry api : apiIdToName.entrySet()) { + String apiId = api.getKey(); + String apiName = api.getValue(); + + for (String date : allDates) { + Long requestCount = existingStats + .getOrDefault(apiId, Collections.emptyMap()) + .getOrDefault(date, 0L); + + completeStatistics.add(new ApiDailyStatistics( + apiId, + apiName, + date, + requestCount + )); + } + } + return createStatisticsMatrix(completeStatistics); + } + + public List getTopApis(PortalOrg org) { + return portalStatisticsRepository.findTop3ApisByOrg(org.getId(), PageRequest.of(0, 3)); + } + + public static String formatToStatisticsStartTime(LocalDate date) { + return String.format("%04d%02d%02d000000", + date.getYear(), + date.getMonthValue(), + date.getDayOfMonth()); + } + + public static String formatToStatisticsEndTime(LocalDate date) { + return String.format("%04d%02d%02d235959", + date.getYear(), + date.getMonthValue(), + date.getDayOfMonth()); + } + + public int getDailyTotalApiUsage(PortalOrg org) { + String fromTime = formatToStatisticsStartTime(LocalDate.now()); + return portalStatisticsRepository.findTotalRequestsByOrgAndFromTime(org.getId(), fromTime); + } + + public int getWeeklyTotalApiUsage(PortalOrg org) { + String fromTime = formatToStatisticsStartTime(DateUtil.getFirstDateOfCurrentWeekAsDate()); + return portalStatisticsRepository.findTotalRequestsByOrgAndFromTime(org.getId(), fromTime); + } + + public int getMonthlyTotalApiUsage(PortalOrg org) { + String fromTime = formatToStatisticsStartTime(DateUtil.getFirstDateOfCurrentMonthAsDate()); + return portalStatisticsRepository.findTotalRequestsByOrgAndFromTime(org.getId(), fromTime); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/file/controller/FileDownloadController.java b/src/main/java/com/eactive/apim/portal/apps/file/controller/FileDownloadController.java new file mode 100644 index 0000000..2ff632d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/file/controller/FileDownloadController.java @@ -0,0 +1,42 @@ +package com.eactive.apim.portal.apps.file.controller; + +import com.eactive.apim.portal.file.entity.FileDetail; +import com.eactive.apim.portal.file.service.FileService; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; + +@Controller +@RequestMapping("/file") +public class FileDownloadController { + + @Autowired + FileService fileService; + + @GetMapping(value = "/download") + public void downloadFile(@RequestParam(value = "fileId", defaultValue = "0") String fileId, + @RequestParam(value = "fileSn", defaultValue = "-1") int fileSn, + HttpServletResponse response) throws IOException { + + // Get the FileDetail object from the service layer + FileDetail fileDetail = fileService.getFileDetailByIds(fileId, fileSn); + + // Set the response headers + response.setContentType("application/octet-stream"); + String encodedFilename = URLEncoder.encode(fileDetail.getOriginalFileName() + "." + fileDetail.getFileExtension(), "UTF-8"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFilename + "\";"); + response.setContentLength(fileDetail.getFileSize()); + + // Decode the base64-encoded file contents and write the file to the response stream + byte[] fileContents = fileService.retrieveFileContent(fileDetail); + IOUtils.write(fileContents, response.getOutputStream()); + response.flushBuffer(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/login/constants/LoginConstants.java b/src/main/java/com/eactive/apim/portal/apps/login/constants/LoginConstants.java new file mode 100644 index 0000000..752db77 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/login/constants/LoginConstants.java @@ -0,0 +1,6 @@ +package com.eactive.apim.portal.apps.login.constants; + +public class LoginConstants { + + public static final String LOGIN_MESSAGE = "loginMessage"; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/login/controller/AccountRecoveryController.java b/src/main/java/com/eactive/apim/portal/apps/login/controller/AccountRecoveryController.java new file mode 100644 index 0000000..433870d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/login/controller/AccountRecoveryController.java @@ -0,0 +1,253 @@ +package com.eactive.apim.portal.apps.login.controller; + +import com.eactive.apim.portal.apps.login.dto.FindIdDTO; +import com.eactive.apim.portal.apps.login.dto.PasswordResetDTO; +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.apps.user.service.PortalUserAuthService; + +import java.util.HashMap; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.validation.Valid; + +import com.eactive.apim.portal.common.breadcrumb.PageService; +import com.eactive.apim.portal.common.exception.UserNotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +@Controller +@RequiredArgsConstructor +public class AccountRecoveryController { + public static final String ACCOUNT_RECOVERY = "apps/login/findId"; + public static final String ACCOUNT_RECOVERY_RESULT = "apps/login/findIdResult"; + public static final String RESET_PASSWROD = "apps/login/resetPassword"; + public static final String DORMANT_ACCOUNT = "apps/login/inactiveAccountRecovery"; + + private final PortalUserAuthService portalUserAuthService; + private final PageService pageService; + + @GetMapping("/account_recovery") + public String showAccountRecoveryPage(@RequestParam(defaultValue = "findId") String tab, Model model, HttpSession session) { + // 페이지 최초 로드 시 인증 관련 세션 데이터 초기화 + session.removeAttribute("mobileNumber"); + session.removeAttribute("isVerified"); + + setModelForAccountRecovery(model, tab); + + if (tab.equals("resetPassword")) { + return RESET_PASSWROD; + } + return ACCOUNT_RECOVERY; + } + + @PostMapping("/find_id") + public String findId(@Valid @ModelAttribute("findIdDTO") FindIdDTO findIdDTO, + BindingResult result, + HttpSession session, + RedirectAttributes redirectAttributes, + Model model) { + if (result.hasErrors()) { + setModelForError(redirectAttributes, "findId", null, "처리 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요.", findIdDTO, null); + return "redirect:/account_recovery?tab=findId"; + } + + // 세션에서 인증 여부 확인 + Boolean isVerified = (Boolean) session.getAttribute("isVerified"); + String sessionMobileNumber = (String) session.getAttribute("mobileNumber"); + + if (isVerified == null || !isVerified) { + setModelForError(redirectAttributes, "findId", findIdDTO, "휴대폰 번호 인증을 먼저 진행해주세요.", findIdDTO, null); + return "redirect:/account_recovery?tab=findId"; + } + + if (!findIdDTO.getMobileNumber().replace("-", "").equals(sessionMobileNumber)) { + setModelForError(redirectAttributes, "findId", findIdDTO, "인증된 휴대폰 번호와 입력한 번호가 일치하지 않습니다.", findIdDTO, null); + return "redirect:/account_recovery?tab=findId"; + } + + try { + PortalUserDTO foundId = portalUserAuthService.findUsersByNameAndMobile(findIdDTO.getUserName(), findIdDTO.getMobileNumber()); + + // 인증 관련 세션 정보 제거 + session.removeAttribute("mobileNumber"); + session.removeAttribute("isVerified"); + + //redirect 가 아닌 경우에는 model 을 사용해서 페이지 렌더링 처리 + model.addAttribute("findIdDTO", findIdDTO); + model.addAttribute("foundId", foundId); + + return ACCOUNT_RECOVERY_RESULT; + } catch (UserNotFoundException e) { + setModelForError(redirectAttributes, "findId", findIdDTO, e.getMessage(), findIdDTO, null); + return "redirect:/account_recovery?tab=findId"; + } catch (Exception e) { + setModelForError(redirectAttributes, "findId", findIdDTO, "처리 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요.", findIdDTO, null); + return "redirect:/account_recovery?tab=findId"; + } + } + + @PostMapping("/reset_password") + public String resetPassword(@Valid @ModelAttribute("passwordResetDTO") PasswordResetDTO passwordReset, + BindingResult bindingResult, + HttpSession session, + RedirectAttributes redirectAttributes) { + + if (bindingResult.hasErrors()) { + setModelForError(redirectAttributes, "resetPassword", null, "입력값을 확인해주세요.", null, passwordReset); + return "redirect:/account_recovery?tab=resetPassword"; + } + + // 세션에서 인증 여부 확인 + Boolean isVerified = (Boolean) session.getAttribute("isVerified"); + if (isVerified == null || !isVerified) { + setModelForError(redirectAttributes, "resetPassword", null, "휴대폰 번호 인증을 먼저 진행해주세요.", null, passwordReset); + return "redirect:/account_recovery?tab=resetPassword"; + } + + try { + // 사용자 정보 확인 + portalUserAuthService.initializePassword( + passwordReset.getLoginId(), + passwordReset.getUserName(), + passwordReset.getMobileNumber() + ); + + // 인증 관련 세션 정보 제거 + session.removeAttribute("mobileNumber"); + session.removeAttribute("isVerified"); + + redirectAttributes.addFlashAttribute("success", "임시 비밀번호가 전송되었습니다."); + return "redirect:/account_recovery?tab=resetPassword"; + + } catch (UserNotFoundException e) { + setModelForError(redirectAttributes, "resetPassword", null, e.getMessage(), null, passwordReset); + return "redirect:/account_recovery?tab=resetPassword"; + + } catch (Exception e) { + setModelForError(redirectAttributes, "resetPassword", null, "비밀번호 초기화 요청에 실패했습니다.", null, passwordReset); + return "redirect:/account_recovery?tab=resetPassword"; + } + } + + @PostMapping("/resend_verification_email") + public ResponseEntity> resendVerificationEmail(@RequestParam String loginId) { + Map response = new HashMap<>(); + + try { + portalUserAuthService.resendVerificationEmail(loginId); + response.put("success", "인증 이메일이 재발송되었습니다."); + return ResponseEntity.ok(response); + + } catch (IllegalArgumentException e) { + response.put("error", e.getMessage()); + return ResponseEntity.badRequest().body(response); + + } catch (Exception e) { + response.put("error", "이메일 발송 중 오류가 발생했습니다."); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); + } + } + + @GetMapping("/dormant_account") + public String showDormantAccountPage(HttpSession session,Model model) { + + // 세션에서 로그인 시도한 ID 가져오기 + String loginId = (String) session.getAttribute("dormantLoginId"); + + model.addAttribute("breadcrumb", pageService.getBreadcrumb("/dormant_account")); + model.addAttribute("currentPage", pageService.getPageName("/dormant_account")); + model.addAttribute("loginId", loginId); + return DORMANT_ACCOUNT; + } + + @PostMapping("/dormant_account/verify") + public String verifyDormantAccount(@RequestParam String loginId, + @RequestParam String password, + @RequestParam String mobileNumber, + HttpServletRequest request, + HttpServletResponse response, + Model model, + RedirectAttributes redirectAttributes) { + try { + portalUserAuthService.reactivateDormantAccount(loginId, password, mobileNumber); + + // 로그아웃 처리 + new SecurityContextLogoutHandler().logout(request, response, + SecurityContextHolder.getContext().getAuthentication()); + + redirectAttributes.addFlashAttribute("success", "장기미사용 계정이 활성화되었습니다. 다시 로그인해주세요."); + return "redirect:/login"; + + } catch (UserNotFoundException e) { + model.addAttribute("error", "사용자 정보가 일치하지 않습니다."); + return DORMANT_ACCOUNT; + + } catch (Exception e) { + model.addAttribute("error", "처리 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요."); + return DORMANT_ACCOUNT; + } + } + + // 에러 발생 시 모델 세팅을 위한 private 메서드 + private void setModelForError(RedirectAttributes redirectAttributes, + String activeTab, + FindIdDTO findIdDTO, + String errorMessage, + FindIdDTO redirectFindIdDTO, + PasswordResetDTO passwordResetDTO) { + if (activeTab != null) { + redirectAttributes.addFlashAttribute("activeTab", activeTab); + } + + // breadcrumb 정보 추가 + String currentPath = "/account_recovery?tab=" + activeTab; + redirectAttributes.addFlashAttribute("breadcrumb", pageService.getBreadcrumb(currentPath)); + redirectAttributes.addFlashAttribute("currentPage", pageService.getPageName(currentPath)); + + if (findIdDTO != null) { + redirectAttributes.addFlashAttribute("findIdDTO", findIdDTO); + } + + if (passwordResetDTO != null) { + redirectAttributes.addFlashAttribute("passwordResetDTO", passwordResetDTO); + // 비밀번호 초기화 관련 필드들 개별 추가 + redirectAttributes.addFlashAttribute("userName", passwordResetDTO.getUserName()); + redirectAttributes.addFlashAttribute("loginId", passwordResetDTO.getLoginId()); + redirectAttributes.addFlashAttribute("mobileNumber", passwordResetDTO.getMobileNumber()); + } + + if (errorMessage != null) { + redirectAttributes.addFlashAttribute("error", errorMessage); + } + + if (redirectFindIdDTO != null) { + redirectAttributes.addFlashAttribute("userName", redirectFindIdDTO.getUserName()); + redirectAttributes.addFlashAttribute("mobileNumber", redirectFindIdDTO.getMobileNumber()); + } + } + + // 계정 복구 페이지 모델 세팅을 위한 private 메서드 + private void setModelForAccountRecovery(Model model, String tab) { + model.addAttribute("findIdDTO", new FindIdDTO()); + model.addAttribute("passwordResetDTO", new PasswordResetDTO()); + model.addAttribute("activeTab", tab != null ? tab : "findId"); + + // 현재 path에 tab 파라미터 포함하여 breadcrumb 생성 + String currentPath = "/account_recovery?tab=" + tab; + model.addAttribute("breadcrumb", pageService.getBreadcrumb(currentPath)); + model.addAttribute("currentPage", pageService.getPageName(currentPath)); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/login/controller/LoginHandler.java b/src/main/java/com/eactive/apim/portal/apps/login/controller/LoginHandler.java new file mode 100644 index 0000000..3ab9e52 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/login/controller/LoginHandler.java @@ -0,0 +1,56 @@ +package com.eactive.apim.portal.apps.login.controller; + +import com.eactive.apim.portal.common.exception.PortalRedirectException; +import com.eactive.apim.portal.common.pagerouter.PageHandler; +import org.apache.commons.lang3.StringUtils; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; +import org.springframework.ui.Model; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import static com.eactive.apim.portal.apps.login.constants.LoginConstants.LOGIN_MESSAGE; + +/** + * 일반 로그인을 처리하는 컨트롤러 클래스 + * + * @author Sungpil Hyun + * @version 1.0 + */ +@Component("LoginHandler") +public class LoginHandler implements PageHandler { + + + /** + * 로그인 화면으로 들어간다 + * + * @return 로그인 페이지 + */ + @Override + public void handleRequest(HttpServletRequest httpRequest, Model model) { + + HttpSession session = httpRequest.getSession(); + + // 로그인 메시지 처리 + String message = (String) session.getAttribute(LOGIN_MESSAGE); + if (StringUtils.isNotEmpty(message)) { + model.addAttribute("loginMessage", message); + session.removeAttribute(LOGIN_MESSAGE); + } + + // loginId 처리 + String loginId = (String) session.getAttribute("loginId"); + if (StringUtils.isNotEmpty(loginId)) { + model.addAttribute("loginId", loginId); + session.removeAttribute("loginId"); + } + + // 이미 인증된 사용자인지 확인 + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && !"anonymousUser".equalsIgnoreCase(authentication.getPrincipal().toString())) { + throw new PortalRedirectException("redirect:/"); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/login/dto/FindIdDTO.java b/src/main/java/com/eactive/apim/portal/apps/login/dto/FindIdDTO.java new file mode 100644 index 0000000..3dc861c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/login/dto/FindIdDTO.java @@ -0,0 +1,19 @@ +package com.eactive.apim.portal.apps.login.dto; + +import com.eactive.apim.portal.common.validator.CellPhone; +import lombok.Data; +import org.hibernate.validator.constraints.NotEmpty; + +@Data +public class FindIdDTO { + + @NotEmpty(message = "{field.required}") + private String userName; + + @CellPhone + private String mobileNumber; + + private String authNumber; + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/login/dto/FindIdRequest.java b/src/main/java/com/eactive/apim/portal/apps/login/dto/FindIdRequest.java new file mode 100644 index 0000000..c14c9b3 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/login/dto/FindIdRequest.java @@ -0,0 +1,12 @@ +package com.eactive.apim.portal.apps.login.dto; + +import lombok.Data; + +@Data +public class FindIdRequest { + + private String name; + + private String email; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/login/dto/LoginRequestDTO.java b/src/main/java/com/eactive/apim/portal/apps/login/dto/LoginRequestDTO.java new file mode 100644 index 0000000..6074e84 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/login/dto/LoginRequestDTO.java @@ -0,0 +1,12 @@ +package com.eactive.apim.portal.apps.login.dto; + +import lombok.Data; + +@Data +public class LoginRequestDTO { + + private String id; + + private String password; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/login/dto/PasswordResetDTO.java b/src/main/java/com/eactive/apim/portal/apps/login/dto/PasswordResetDTO.java new file mode 100644 index 0000000..30664a6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/login/dto/PasswordResetDTO.java @@ -0,0 +1,23 @@ +package com.eactive.apim.portal.apps.login.dto; + +import javax.validation.constraints.NotNull; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; + +@Data +public class PasswordResetDTO implements Serializable { + + @NotNull(message = "{field.required}") + private String userName; + + private String loginId; + + private String mobileNumber; + + private String token; + private String password; + private String password2; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/main/controller/IndexController.java b/src/main/java/com/eactive/apim/portal/apps/main/controller/IndexController.java new file mode 100644 index 0000000..2a51fab --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/main/controller/IndexController.java @@ -0,0 +1,186 @@ +package com.eactive.apim.portal.apps.main.controller; + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiSearchFacade; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceApiDTO; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.community.notice.dto.PortalNoticeDTO; +import com.eactive.apim.portal.apps.community.notice.service.PortalNoticeFacade; +import com.eactive.apim.portal.apps.main.service.MainApiFacade; +import com.eactive.apim.portal.common.util.SecurityUtil; + +import java.util.*; +import java.util.stream.Collectors; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +@RequiredArgsConstructor +public class IndexController { + + private final ApiSearchFacade apiSearchFacade; + private final MainApiFacade mainApiFacade; + private final PortalNoticeFacade portalNoticeFacade; + + /** + * 메인 페이지 API는 Portal Property 에 main.service.list 에 등록된 그룹을 기준으로 API를 조회함. + * 프로퍼티에 등록되어 있어도 어드민의 그룹 표시 설정이 N이면 표시 되지 않음. + * 어드민의 API 스펙의 표시 설정이 N이면 표시되지 않음. + * 그룹 또는 권한이 지정된 경우, 해당사용자의 권한 또는 기관이 일치해야 표시됨. + *

+ * 검색어는 Portal Property 또는 메인 관리 화면에 main.keyword.list 에 등록된 내용이 표시 됨. + * + * @param model + * @return + */ + @GetMapping("/") + public String index(Model model) { + // Step 1: Fetch and sort API services + List apiServices = getSortedApiServices(null); + + // Step 2: Create a map of API ID to ApiServiceDTO for icon mapping + Map mainIconsMap = createMainIconsMap(apiServices); + + // Step 3: Merge all API lists from apiServices + List allApis = getAllApis(apiServices); + + // Step 4: Enrich API spec info DTOs with main icon and service info + List apiSpecInfoDtos = enrichApiSpecInfo(apiServices, allApis, mainIconsMap); + + // Step 5: Calculate total API count + int totalApiCount = calculateTotalApiCount(apiServices); + + // Step 6: Fetch portal notices and hashtags + List portalNotices = portalNoticeFacade.getLatestNotices(); + List hashTags = mainApiFacade.getHashTags(); + + ApiGroupSearch search = new ApiGroupSearch(); + Map searchResult = apiSearchFacade.searchApis(search); + + int selectedApiCount = (int) searchResult.get("selectedApiCount"); + + // 서비스 이용 수 + int serviceCount = ((List) searchResult.get("services")).size(); + + // 승인된 기업 건수 + int approvedOrgCount = mainApiFacade.getApprovedOrgCount(); + + // Step 7: Add attributes to model + addAttributesToModel(model, apiServices, apiSearchFacade.sortApisByService(apiSpecInfoDtos, apiServices), totalApiCount, portalNotices, hashTags, serviceCount, approvedOrgCount, selectedApiCount); + + return "apps/main/index"; + } + + private List getSortedApiServices(String apiId) { + List apiServices = mainApiFacade.getOpenApiServices(apiId); + apiServices.sort(Comparator.comparing(ApiServiceDTO::getDisplayOrder)); + return apiServices; + } + + private Map createMainIconsMap(List apiServices) { + Map mainIconsMap = new HashMap<>(); + apiServices.forEach(service -> + service.getApiGroupApiList().forEach(api -> + mainIconsMap.put(api.getApiId(), service) + ) + ); + return mainIconsMap; + } + + private List getAllApis(List apiServices) { + return apiServices.stream() + .flatMap(service -> service.getApiGroupApiList().stream()) + .collect(Collectors.toList()); + } + + private List enrichApiSpecInfo(List services, List allApis, Map mainIconsMap) { + List apiIds = allApis.stream().map(ApiServiceApiDTO::getApiId).collect(Collectors.toList()); + List apiSpecInfoDtos = mainApiFacade.getOpenApis(apiIds); + apiSpecInfoDtos.forEach(spec -> { + ApiServiceDTO serviceDTO = mainIconsMap.get(spec.getApiId()); + if (serviceDTO != null) { + spec.setMainIcon(serviceDTO.getMainIcon()); + spec.setService(serviceDTO.getGroupName()); + } + }); + + boolean isAuthenticated = SecurityUtil.isAuthenticated(); + String roleCode; + String org; + + if (isAuthenticated) { + roleCode = SecurityUtil.getPortalAuthenticatedUser().getRoleCode().toString(); + org = SecurityUtil.getUserOrg().getId(); + } else { + roleCode = null; + org = null; + } + + List filteredApiSpecInfoDtos = apiSpecInfoDtos.stream() + .filter(spec -> { + if (!isAuthenticated) { + return spec.getDisplayOrg() == null && spec.getDisplayRoleCode() == null; + } + boolean orgMatch = false; + if (org != null) { + orgMatch = spec.getDisplayOrg() == null || spec.getDisplayOrg().isEmpty() || spec.getDisplayOrg().contains(org); + } + boolean roleMatch = spec.getDisplayRoleCode() == null || spec.getDisplayRoleCode().isEmpty() || spec.getDisplayRoleCode().contains(roleCode); + return orgMatch || roleMatch; + }) + .collect(Collectors.toList()); + + Set filteredApiIds = filteredApiSpecInfoDtos.stream() + .map(ApiSpecInfoDto::getApiId) + .collect(Collectors.toSet()); + + services.forEach(service -> { + if (service.getApiGroupApiList() != null) { + List filteredApiList = service.getApiGroupApiList().stream() + .filter(api -> filteredApiIds.contains(api.getApiId())) + .collect(Collectors.toList()); + service.setApiGroupApiList(filteredApiList); + } + }); + + return filteredApiSpecInfoDtos.stream().collect(Collectors.toList()); + } + + private int calculateTotalApiCount(List apiServices) { + return apiServices.stream() + .mapToInt(service -> service.getApiGroupApiList().size()) + .sum(); + } + + private void addAttributesToModel(Model model, List apiServices, + List apiSpecInfoDtos, int totalApiCount, + List portalNotices, List hashTags, int serviceCount, int approvedOrgCount, int selectedApiCount) { + + model.addAttribute("services", apiServices); + model.addAttribute("apis", apiSpecInfoDtos); + model.addAttribute("totalApiCount", totalApiCount); + model.addAttribute("portalNotices", portalNotices); + model.addAttribute("hashtags", hashTags); + + model.addAttribute("serviceCount", serviceCount); + model.addAttribute("approvedOrgCount", approvedOrgCount); + model.addAttribute("selectedApiCount", selectedApiCount); + } + + @GetMapping("/api_fragments") + public String getApiFragments(@RequestParam(value = "id", required = false) String id, Model model) { + List apiServices = getSortedApiServices(id); + Map mainIconsMap = createMainIconsMap(apiServices); + List allApis = getAllApis(apiServices); + List apiSpecInfoDtos = enrichApiSpecInfo(apiServices, allApis, mainIconsMap); + model.addAttribute("apis", apiSpecInfoDtos); + return "apps/main/apiListFragment :: apiListFragment"; + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/main/service/MainApiFacade.java b/src/main/java/com/eactive/apim/portal/apps/main/service/MainApiFacade.java new file mode 100644 index 0000000..3ef9abf --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/main/service/MainApiFacade.java @@ -0,0 +1,62 @@ +package com.eactive.apim.portal.apps.main.service; + +import com.eactive.apim.portal.apps.apis.dto.ApiSpecInfoDto; +import com.eactive.apim.portal.apps.apis.service.ApiService; +import com.eactive.apim.portal.apps.apiservice.dto.ApiGroupSearch; +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import com.eactive.apim.portal.apps.apiservice.service.ApiServiceService; +import com.eactive.apim.portal.apps.user.service.PortalOrgService; +import com.eactive.apim.portal.portalproperty.service.PortalPropertyService; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +@Transactional +@Service +@RequiredArgsConstructor +public class MainApiFacade { + + public static final String PORTAL_PROPERTY = "Portal"; + private final ApiServiceService apiServiceService; + private final ApiService apiService; + private final PortalPropertyService portalPropertyService; + private final PortalOrgService portalOrgService; + + public int getApprovedOrgCount() { + return portalOrgService.getActiveApprovedOrgCount(); + } + + public List getOpenApiServices(String serviceId) { + ApiGroupSearch search = new ApiGroupSearch(); + + Map property = portalPropertyService.getPortalPropertiesAsMap(PORTAL_PROPERTY); + String services = property.getOrDefault("main.service.list", ""); + + if (StringUtils.hasText(serviceId) && services.contains(serviceId)) { + search.setGroupIds(Collections.singletonList(serviceId)); + } else { + search.setGroupIds(Arrays.asList(services.split(","))); + } + + return apiServiceService.searchApiGroups(search); + } + + + public List getHashTags() { + Map property = portalPropertyService.getPortalPropertiesAsMap(PORTAL_PROPERTY); + String hashTags = property.getOrDefault("main.keyword.list", "#인증, #대출, #예금"); + //split with , and return as a list + return Arrays.asList(hashTags.split(",")); + } + + public List getOpenApis(List apiIds) { + return apiService.findApisForApiIds(apiIds); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/proxy/ApimProxyController.java b/src/main/java/com/eactive/apim/portal/apps/proxy/ApimProxyController.java new file mode 100644 index 0000000..13b5b8d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/proxy/ApimProxyController.java @@ -0,0 +1,146 @@ +package com.eactive.apim.portal.apps.proxy; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import javax.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.HttpStatusCodeException; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +@RestController +@RequestMapping("/_proxy") // /proxy 대신 /_proxy 사용 +@Slf4j +public class ApimProxyController { + + private final RestTemplate restTemplate; + private final ProxyProperties proxyProperties; + private final ObjectMapper objectMapper; + private final MediaType JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON, StandardCharsets.UTF_8); + + + public ApimProxyController( + RestTemplateBuilder restTemplateBuilder, + ProxyProperties proxyProperties, + ObjectMapper objectMapper) { + this.proxyProperties = proxyProperties; + this.objectMapper = objectMapper; + this.restTemplate = restTemplateBuilder + .setConnectTimeout(Duration.ofMillis(proxyProperties.getTimeout().getConnect())) + .setReadTimeout(Duration.ofMillis(proxyProperties.getTimeout().getRead())) + .build(); + } + + private ResponseEntity createJsonResponse(HttpStatus status, String message) { + ObjectNode jsonResponse = objectMapper.createObjectNode() + .put("status", status.value()) + .put("message", message); + return ResponseEntity + .status(status) + .contentType(JSON_UTF8) + .body(jsonResponse.toString()); + } + + @RequestMapping(value = "/**") + public ResponseEntity proxyRequest( + HttpServletRequest request, + @RequestBody(required = false) String body, + @RequestHeader HttpHeaders headers) { + + String targetKey = headers.getFirst("target_host"); + if (targetKey == null || targetKey.trim().isEmpty()) { + log.error("Missing or empty target_host header"); + return createJsonResponse(HttpStatus.BAD_REQUEST, "Error: target_host header is required"); + } + + String targetUrl = proxyProperties.getTargets().get(targetKey.trim().toLowerCase()); + if (targetUrl == null) { + log.error("Invalid target_host: {}. Available targets: {}", + targetKey, proxyProperties.getTargets().keySet()); + return createJsonResponse(HttpStatus.BAD_REQUEST, + "Error: Invalid target_host. Must be one of: " + + String.join(", ", proxyProperties.getTargets().keySet())); + } + + try { + String requestUrl = request.getRequestURI().replace("/_proxy", ""); + URI uri = UriComponentsBuilder + .fromHttpUrl(targetUrl + requestUrl) + .query(request.getQueryString()) + .build() + .toUri(); + + HttpMethod method = HttpMethod.valueOf(request.getMethod()); + + HttpHeaders proxyHeaders = new HttpHeaders(); + headers.forEach((key, value) -> { + if (!key.equalsIgnoreCase("host") && + !key.equalsIgnoreCase("target_host")) { + proxyHeaders.addAll(key, value); + } + }); + + HttpEntity httpEntity = new HttpEntity<>(body, proxyHeaders); + + log.debug("Forwarding request to: {} ({})", targetKey, uri); + ResponseEntity response = restTemplate.exchange( + uri, + method, + httpEntity, + String.class + ); + log.debug("Received response status: {}", response.getStatusCode()); + + // Create JSON response with the original response data + ObjectNode jsonResponse = objectMapper.createObjectNode() + .put("status", response.getStatusCode().value()); + + // Try to parse the response body as JSON, if it fails, include it as a string + try { + jsonResponse.set("data", objectMapper.readTree(response.getBody())); + } catch (Exception e) { + jsonResponse.put("data", response.getBody()); + } + + return ResponseEntity + .status(response.getStatusCode()) + .contentType(JSON_UTF8) + .body(jsonResponse.toString()); + + } catch (HttpStatusCodeException e) { + log.error("Target server returned error: {} for host: {}", e.getStatusCode(), targetKey); + ObjectNode jsonResponse = objectMapper.createObjectNode() + .put("status", e.getStatusCode().value()); + + // Try to parse the error response body as JSON, if it fails, include it as a string + try { + jsonResponse.set("data", objectMapper.readTree(e.getResponseBodyAsString())); + } catch (Exception ex) { + jsonResponse.put("data", e.getResponseBodyAsString()); + } + + return ResponseEntity + .status(e.getStatusCode()) + .contentType(JSON_UTF8) + .body(jsonResponse.toString()); + + } catch (Exception e) { + log.error("Error during proxy request to: {}", targetKey, e); + return createJsonResponse(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage()); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/proxy/ProxyProperties.java b/src/main/java/com/eactive/apim/portal/apps/proxy/ProxyProperties.java new file mode 100644 index 0000000..3f021d9 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/proxy/ProxyProperties.java @@ -0,0 +1,23 @@ +package com.eactive.apim.portal.apps.proxy; + +import java.util.Map; +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "proxy") +@Getter +@Setter +public class ProxyProperties { + private Map targets; + private Timeout timeout = new Timeout(); + + @Getter + @Setter + public static class Timeout { + private int connect = 5000; + private int read = 5000; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/sample/CustomThymeleafDemoController.java b/src/main/java/com/eactive/apim/portal/apps/sample/CustomThymeleafDemoController.java new file mode 100644 index 0000000..317a4be --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/sample/CustomThymeleafDemoController.java @@ -0,0 +1,84 @@ +package com.eactive.apim.portal.apps.sample; + +import com.eactive.apim.portal.user.entity.UserInfo; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import javax.servlet.http.HttpServletRequest; +import org.springframework.context.annotation.Profile; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@SuppressWarnings("all") +@Controller +@Profile("dev") +public class CustomThymeleafDemoController { + + @GetMapping("/custom-thymeleaf-demo") + public String customThymeleafDemo(Model model, HttpServletRequest request) { + model.addAttribute("uri", request.getRequestURI()); + model.addAttribute("page", createDummyPage()); + model.addAttribute("user", new UserInfo()); + model.addAttribute("article", article()); + model.addAttribute("resultInfo", resultInfo()); + model.addAttribute("fileDetails", createDummyFileDetails()); + model.addAttribute("resultMsg", "authnumber.not.match"); + model.addAttribute("notice", notice()); + + return "samples/portal"; + } + + private Map notice() { + Map notice = new HashMap(); + notice.put("createdAt", LocalDateTime.now()); + return notice; + } + + + private Map article() { + Map article = new HashMap(); + article.put("nttId", "200"); + article.put("id", "10"); + return article; + } + + private Map resultInfo() { + Map resultInfo = new HashMap(); + resultInfo.put("nttSj", "Example Subject"); + resultInfo.put("sjBoldAt", "Y"); + resultInfo.put("nttId", "100"); + resultInfo.put("boardId", "200"); + return resultInfo; + } + + private Page createDummyPage() { + List content = IntStream.range(0, 10) + .mapToObj(i -> { + HashMap map = new HashMap(); + map.put("id", i); + map.put("name", "name" + i); + return map; + }) + .collect(Collectors.toList()); + return new PageImpl<>(content, PageRequest.of(0, 10), 100); + } + + private List createDummyFileDetails() { + return IntStream.range(0, 5) + .mapToObj(i -> { + HashMap map = new HashMap(); + map.put("fileId", "fileId" + i); + map.put("fileSn", i); + map.put("fileName", "fileName" + i); + return map; + }) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/sample/MySecureService.java b/src/main/java/com/eactive/apim/portal/apps/sample/MySecureService.java new file mode 100644 index 0000000..6860fc6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/sample/MySecureService.java @@ -0,0 +1,26 @@ +package com.eactive.apim.portal.apps.sample; + +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import org.springframework.context.annotation.Profile; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Service; + +@Service +@Profile("dev") +public class MySecureService { + + @PreAuthorize("hasRole('ROLE_USER')") + public String getSecureData(PortalAuthenticatedUser user) { + return "This is secure data that can only be accessed by users with " + user.getUsername(); + } + + @PreAuthorize("hasRole('ROLE_ADMIN')") + public String getAdminOnlyData() { + return "This is highly sensitive data that can only be accessed by administrators"; + } + + @PreAuthorize("#username == authentication.principal.username") + public String getUserSpecificData(String username) { + return "This is specific data for user: " + username; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/sample/MySecurityEvaluator.java b/src/main/java/com/eactive/apim/portal/apps/sample/MySecurityEvaluator.java new file mode 100644 index 0000000..a9d3f01 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/sample/MySecurityEvaluator.java @@ -0,0 +1,32 @@ +package com.eactive.apim.portal.apps.sample; + +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Component; + +@Component("mySecurityEvaluator") +public class MySecurityEvaluator { + + public boolean canAccessUser(Authentication authentication, String userId) { + if (authentication == null || !authentication.isAuthenticated()) { + return false; + } + + // Allow access if the user has ROLE_ADMIN + boolean isAdmin = authentication.getAuthorities().stream() + .map(GrantedAuthority ::getAuthority) + .anyMatch(a -> a.equals("ROLE_ADMIN")); + if (isAdmin) { + return true; + } + + // Allow access if the authenticated user ID matches the requested user ID + if (authentication.getPrincipal() instanceof PortalAuthenticatedUser) { + PortalAuthenticatedUser user = (PortalAuthenticatedUser) authentication.getPrincipal(); + return user.getId().equals(userId); + } + + return false; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/sample/SecurityThymeleafDemoController.java b/src/main/java/com/eactive/apim/portal/apps/sample/SecurityThymeleafDemoController.java new file mode 100644 index 0000000..3cf7214 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/sample/SecurityThymeleafDemoController.java @@ -0,0 +1,38 @@ +package com.eactive.apim.portal.apps.sample; + +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletRequest; +import org.springframework.context.annotation.Profile; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +@Profile("dev") +public class SecurityThymeleafDemoController { + + @GetMapping("/security-thymeleaf-demo") + @Secured("ROLE_USER") + public String securityThymeleafDemo(Model model, HttpServletRequest request) { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + + model.addAttribute("uri", request.getRequestURI()); + model.addAttribute("isAuthenticated", auth.isAuthenticated()); + model.addAttribute("username", auth.getName()); + model.addAttribute("roles", auth.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .collect(Collectors.toList())); + + model.addAttribute("user", SecurityUtil.getPortalAuthenticatedUser()); + + // Simulating secure data + model.addAttribute("secureData", "This is secure data visible only to authorized users"); + + return "samples/security"; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/sample/ThymeleafDemoController.java b/src/main/java/com/eactive/apim/portal/apps/sample/ThymeleafDemoController.java new file mode 100644 index 0000000..556993e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/sample/ThymeleafDemoController.java @@ -0,0 +1,113 @@ +package com.eactive.apim.portal.apps.sample; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; + +@SuppressWarnings("all") +@Controller +@Profile("dev") +public class ThymeleafDemoController { + + @GetMapping("/demo-index") + public String demoIndex() { + return "samples/demo-index"; + } + + @GetMapping("/thymeleaf-demo") + public String thymeleafDemo(Model model) { + // 1. Basic Variable Expression + model.addAttribute("variable", "This is a variable value"); + + // 2. String Concatenation + model.addAttribute("userName", "User"); + + // 3. Conditional Rendering + model.addAttribute("condition", true); + + // 4. Iterating over a Collection + + // 5. Formatting Dates + model.addAttribute("date", LocalDateTime.of(2023, 1, 1, 12, 0)); + + // 6. URL Building + model.addAttribute("user", new User(1L, "John Doe", "ADMIN")); + + // 7. Form Handling + model.addAttribute("formObject", new FormObject()); + + // 8. Inline JavaScript + model.addAttribute("jsVariable", "Hello from JavaScript!"); + + // 9. Switch Statement + model.addAttribute("userRole", "ADMIN"); + + // 10. Elvis Operator + model.addAttribute("nullableValue", null); + + // 11. Attribute Setting + // (user object already added) + + // 12. Class Attribute + model.addAttribute("isActive", true); + + // 13. Fragments + // (no additional model attributes needed) + + // 14. Iteration Status + List> items = IntStream.range(0, 3) + .mapToObj(i -> { + Map item = new HashMap<>(); + item.put("index", i); + item.put("name", "Item name " + (i + 1)); + return item; + }) + .collect(Collectors.toList()); + model.addAttribute("items", items); + + // 15. Number Formatting + model.addAttribute("price", 1234.5678); + + return "samples/thymeleaf"; + } + + @ModelAttribute("user") + public User getUser() { + return new User(1L, "John Doe", "ADMIN"); + } + + // Inner classes for demo purposes + public static class User { + private Long id; + private String name; + private String role; + + public User(Long id, String name, String role) { + this.id = id; + this.name = name; + this.role = role; + } + + public Long getId() { return id; } + public String getName() { return name; } + + public String getRole() { + return role; + } + } + + public static class FormObject { + private String name; + + public String getName() { return name; } + public void setName(String name) { this.name = name; } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/AccountController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/AccountController.java new file mode 100644 index 0000000..a57a97b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/AccountController.java @@ -0,0 +1,329 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.agreements.service.AgreementsFacade; +import com.eactive.apim.portal.apps.user.dto.PasswordChangeRequestDTO; +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.facade.OrgRegisterFacade; +import com.eactive.apim.portal.apps.user.facade.UserFacade; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.RoleCode; +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import lombok.RequiredArgsConstructor; +import lombok.var; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +@Controller +@Secured("ROLE_ACCOUNT") +@RequiredArgsConstructor +public class AccountController { + + private static final Logger logger = LoggerFactory.getLogger(AccountController.class); + + private final UserFacade userFacade; + private final OrgRegisterFacade orgRegisterFacade; + private final AgreementsFacade agreementsFacade; + + + @PostMapping("/confirm_password") + public ResponseEntity confirmPassword(@RequestParam String inputPassword) { + String currentLoginId = SecurityUtil.getCurrentLoginId(); + boolean isPasswordCorrect = userFacade.verifyCurrentPassword(currentLoginId, inputPassword); + + String message = isPasswordCorrect ? "비밀번호가 확인되었습니다." : "비밀번호가 일치하지 않습니다."; + return ResponseEntity.ok(new ValidationResponse(isPasswordCorrect, message)); + } + + @GetMapping("/change_password") + public String showChangePasswordPage(Model model) { + model.addAttribute("passwordChangeRequest", new PasswordChangeRequestDTO()); + return "apps/mypage/passwordChangeEntry"; + } + + @GetMapping("/new_password") + public String showNewPasswordPage(Model model) { + model.addAttribute("passwordChangeRequest", new PasswordChangeRequestDTO()); + return "apps/mypage/passwordChange"; + } + + @PostMapping("/verify_current_password") + public String verifyCurrentPassword(@RequestParam String currentPassword, RedirectAttributes redirectAttributes, HttpSession session, Model model) { + String currentLoginId = SecurityUtil.getCurrentLoginId(); + if (userFacade.verifyCurrentPassword(currentLoginId, currentPassword)) { + model.addAttribute("passwordChangeRequest", new PasswordChangeRequestDTO()); + return "apps/mypage/passwordChange"; + } else { + redirectAttributes.addFlashAttribute("error", "현재 비밀번호가 일치하지 않습니다."); + return "redirect:/change_password"; + } + } + + @PostMapping("/mypage/change_new_password") + public String updatePassword(@RequestParam String newPassword, + @RequestParam String confirmPassword, + HttpSession session, + HttpServletRequest request, + HttpServletResponse response, + RedirectAttributes redirectAttributes, Model model) { + + try { + String currentLoginId = SecurityUtil.getCurrentLoginId(); + userFacade.updatePassword(currentLoginId, newPassword, confirmPassword); + + // 비밀번호 만료 관련 세션 속성 제거 + session.removeAttribute("passwordExpired"); + session.removeAttribute("success"); + session.removeAttribute("redirectUrl"); + + new SecurityContextLogoutHandler().logout(request, response, + SecurityContextHolder.getContext().getAuthentication()); + + redirectAttributes.addFlashAttribute("success", "비밀번호가 성공적으로 변경되었습니다."); + return "redirect:/login"; + } catch (IllegalArgumentException e) { + model.addAttribute("error", e.getMessage()); + model.addAttribute("passwordChangeRequest", new PasswordChangeRequestDTO()); + return "apps/mypage/passwordChange"; + } catch (Exception e) { + model.addAttribute("error", e.getMessage()); + model.addAttribute("passwordChangeRequest", new PasswordChangeRequestDTO()); + return "apps/mypage/passwordChange"; + } + } + + + @GetMapping("/mypage") + public ModelAndView mypage() { + ModelAndView mav = new ModelAndView(); + + try { + // 현재 로그인된 사용자의 정보를 가져옴 + PortalUserDTO user = userFacade.findById(SecurityUtil.getPortalAuthenticatedUser().getId()); + + // 개별 필드들을 모델에 추가 + mav.addObject("loginId", user.getLoginId()); + mav.addObject("userName", user.getUserName()); + mav.addObject("mobileNumber", user.getMobileNumber()); + + // 기존 user 객체도 유지 (다른 곳에서 필요할 수 있으므로) + mav.addObject("user", user); + + // IP 목록을 분리하여 모델에 추가 (법인 관리자인 경우만) + if (user.getRoleCode() == PortalUserEnums.RoleCode.ROLE_CORP_MANAGER + && user.getPortalOrg() != null + && user.getPortalOrg().getIpWhitelist() != null + && !user.getPortalOrg().getIpWhitelist().isEmpty()) { + + List ipList = Arrays.asList(user.getPortalOrg().getIpWhitelist().split(",")); + mav.addObject("ipList", ipList); + } + + // 사용자의 RoleCode에 따라 다른 페이지로 이동 + switch (SecurityUtil.getPortalAuthenticatedUser().getRoleCode()) { + case ROLE_USER: + mav.setViewName("apps/mypage/updatePersonalUser"); + break; + case ROLE_CORP_USER: + mav.setViewName("apps/mypage/updateCorporateUser"); + break; + case ROLE_CORP_MANAGER: + mav.setViewName("apps/mypage/updateCorporateManager"); + break; + default: + mav.setViewName("redirect:/error"); + break; + } + } catch (UsernameNotFoundException e) { + mav.setViewName("redirect:/error"); + } + + return mav; + } + + @PostMapping("/mypage/update") + public String updateMyPage(@ModelAttribute PortalUserDTO portalUserDTO, RedirectAttributes redirectAttributes, + HttpSession session) { + + try { + PortalAuthenticatedUser currentUser = SecurityUtil.getPortalAuthenticatedUser(); + RoleCode currentRoleCode = currentUser.getRoleCode(); + + if (!currentUser.getLoginId().equals(portalUserDTO.getLoginId())) { + redirectAttributes.addFlashAttribute("error", "잘못된 접근입니다."); + return "redirect:/mypage"; + } + + Object isVerifiedObj = session.getAttribute("isVerified"); + boolean isVerified = Boolean.TRUE.equals(isVerifiedObj); + if (isVerified) { + Object mobileNumberObj = session.getAttribute("mobileNumber"); + if (mobileNumberObj != null) { + String mobileNumber = mobileNumberObj.toString(); + portalUserDTO.setMobileNumber(mobileNumber); + } else { + portalUserDTO.setMobileNumber(currentUser.getMobileNumber()); + } + } else { + portalUserDTO.setMobileNumber(currentUser.getMobileNumber()); + } + + // RoleCode에 따라 다른 업데이트 로직 실행 + switch (currentRoleCode) { + case ROLE_USER: + case ROLE_CORP_USER: + userFacade.updateUser(portalUserDTO); + break; + + case ROLE_CORP_MANAGER: + userFacade.updateCorporateManager(portalUserDTO); + break; + + default: + redirectAttributes.addFlashAttribute("error", "알 수 없는 사용자 유형입니다."); + return "redirect:/mypage"; + } + + redirectAttributes.addFlashAttribute("success", "성공적으로 수정되었습니다."); + return "redirect:/mypage"; + + } catch (Exception e) { + redirectAttributes.addFlashAttribute("error", e.getMessage()); + return "redirect:/mypage"; + } finally { + cleanupAuthSession(session); + } + } + + private void cleanupAuthSession(HttpSession session) { + try { + session.removeAttribute("mobileNumber"); + session.removeAttribute("isVerified"); + } catch (Exception e) { + logger.warn("Error during session cleanup: {}", e.getMessage()); + } + } + + @GetMapping("/mypage/org-transfer") + public String showOrgTransferPage(Model model) { + try { + var authenticatedUser = SecurityUtil.getPortalAuthenticatedUser(); + PortalUserDTO user = userFacade.findById(authenticatedUser.getId()); + + if (user.getRoleCode() != PortalUserEnums.RoleCode.ROLE_USER) { + return "redirect:/mypage"; + } + + model.addAttribute("user", user); + model.addAttribute("portalOrg", new PortalOrgRegistrationDTO()); + model.addAttribute("registrationType", "corporate"); + model.addAttribute("termsOfUse", agreementsFacade.getAgreement("TERMS_OF_USE")); + model.addAttribute("privacyCollect", agreementsFacade.getAgreement("PRIVACY_COLLECT_ORG")); + model.addAttribute("registrationType", "corporate"); + return "apps/mypage/orgTransfer"; + + } catch (Exception e) { + return "redirect:/error"; + } + } + + + @PostMapping("/mypage/org-transfer") + public String processOrgTransfer( + @ModelAttribute PortalOrgRegistrationDTO orgDTO, + @ModelAttribute UserAgreementDTO agreementDTO, + HttpServletRequest request, + HttpServletResponse response, + RedirectAttributes redirectAttributes) { + try { + var currentUser = SecurityUtil.getPortalAuthenticatedUser(); + + if (currentUser.getRoleCode() != PortalUserEnums.RoleCode.ROLE_USER) { + redirectAttributes.addFlashAttribute("error", "잘못된 접근입니다."); + return "redirect:/mypage"; + } + + ValidationResponse validationResponse = orgRegisterFacade.convertToOrgUser( + orgDTO, + agreementDTO, + currentUser.getLoginId() + ); + + if (validationResponse.isValid()) { + // 현재 사용자의 세션을 무효화하고 로그아웃 처리 + SecurityContextHolder.clearContext(); + HttpSession session = request.getSession(false); + if (session != null) { + session.invalidate(); + } + + // 쿠키 삭제 + Cookie[] cookies = request.getCookies(); + if (cookies != null) { + for (Cookie cookie : cookies) { + cookie.setValue(""); + cookie.setPath("/"); + cookie.setMaxAge(0); + response.addCookie(cookie); + } + } + + redirectAttributes.addFlashAttribute("success", validationResponse.getMessage()); + return "apps/mypage/UserConversionCompleted"; + } else { + redirectAttributes.addFlashAttribute("error", validationResponse.getMessage()); + return "redirect:/mypage/org-transfer"; + } + + } catch (Exception e) { + redirectAttributes.addFlashAttribute("error", "법인회원 전환 중 오류가 발생했습니다: " + e.getMessage()); + return "redirect:/mypage/org-transfer"; + } + } + + @PostMapping("/withdraw") + public String processWithdrawal( + HttpSession session, + RedirectAttributes redirectAttributes) { + try { + // 현재 로그인한 사용자 정보 가져오기 + PortalAuthenticatedUser currentUser = SecurityUtil.getPortalAuthenticatedUser(); + + // 회원 탈퇴 처리 + if (currentUser != null) { + userFacade.withdrawUser(currentUser.getId()); + } + + session.invalidate(); + SecurityContextHolder.clearContext(); + + redirectAttributes.addFlashAttribute("success", "회원 탈퇴 신청이 완료 되었습니다. API Portal 회원 정보가 완전히 삭제 됩니다."); + return "redirect:/"; + } catch (IllegalArgumentException e) { + redirectAttributes.addFlashAttribute("error", e.getMessage()); + return "redirect:/mypage"; + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/AuthController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/AuthController.java new file mode 100644 index 0000000..c9ef805 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/AuthController.java @@ -0,0 +1,96 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.facade.AuthFacade; +import com.eactive.apim.portal.common.validator.CellPhoneValidator; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.util.HtmlUtils; + +import javax.servlet.http.HttpSession; +import java.util.regex.Pattern; + +@RestController +@RequestMapping("/auth") +public class AuthController { + + private static final Pattern AUTH_NUMBER_PATTERN = Pattern.compile("^[0-9]{6}$"); + + private final AuthFacade authFacade; + private final CellPhoneValidator cellPhoneValidator; + + public AuthController(AuthFacade authFacade, CellPhoneValidator cellPhoneValidator) { + this.authFacade = authFacade; + this.cellPhoneValidator = cellPhoneValidator; + } + + @PostMapping("/request_auth_number") + public ValidationResponse requestAuthNumber( + @RequestParam(required = false) String mobileNumber, + HttpSession session) { + + ValidationResponse response = new ValidationResponse(); + + if (!cellPhoneValidator.isValid(mobileNumber, null)) { + response.setValid(false); + response.setMessage("유효하지 않은 전화번호 형식입니다."); + return response; + } + + String sanitizedMobile = HtmlUtils.htmlEscape(mobileNumber.replace("-", "")); + + // 이전 세션 데이터 정리 + clearAuthSessionData(session); + + response = authFacade.requestAuth(sanitizedMobile, "SMS"); + + if (response.isValid()) { + session.setAttribute("mobileNumber", sanitizedMobile); + } + + return response; + } + + @PostMapping("/verify_auth_number") + public ValidationResponse verifyAuthNumber( + @RequestParam String mobileNumber, + @RequestParam String authNumber, + HttpSession session) { + + ValidationResponse response = new ValidationResponse(); + + // 입력값 검증 + if (!cellPhoneValidator.isValid(mobileNumber, null) || !AUTH_NUMBER_PATTERN.matcher(authNumber).matches()) { + response.setValid(false); + response.setMessage("유효하지 않은 입력값입니다."); + return response; + } + + String sanitizedMobile = HtmlUtils.htmlEscape(mobileNumber.replace("-", "")); + String sanitizedAuthNumber = HtmlUtils.htmlEscape(authNumber); + + // 세션 검증 + String sessionMobile = (String) session.getAttribute("mobileNumber"); + if (sessionMobile == null || !sessionMobile.equals(sanitizedMobile)) { + response.setValid(false); + response.setMessage("인증 요청된 전화번호와 일치하지 않습니다."); + + return response; + } + + response = authFacade.verifyAuthNumber(sanitizedMobile, sanitizedAuthNumber); + + if (response.isValid()) { + session.setAttribute("isVerified", true); + } + + return response; + } + + private void clearAuthSessionData(HttpSession session) { + session.removeAttribute("mobileNumber"); + session.removeAttribute("isVerified"); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/OrgRegisterController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/OrgRegisterController.java new file mode 100644 index 0000000..3ae08aa --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/OrgRegisterController.java @@ -0,0 +1,96 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.agreements.service.AgreementsFacade; +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.facade.OrgRegisterFacade; +import com.eactive.apim.portal.config.PortalProperties; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +@Controller +@RequestMapping("/signup/portalOrg") +@RequiredArgsConstructor +public class OrgRegisterController { + + private static final String MAIN_ORG_REGISTER = "apps/register/orgUserRegister"; + private static final String MAIN_REGISTER_RESULT = "apps/register/userRegisterResult"; + + private final AgreementsFacade agreementsFacade; + private final PortalProperties portalProperties; + private final OrgRegisterFacade orgRegisterFacade; + + @GetMapping + public String getOrgAgreement(Model model) { + model.addAttribute("registrationType", "corporate"); + model.addAttribute("authTtl", portalProperties.getAuthTtl()); + model.addAttribute("portalOrg", new PortalOrgRegistrationDTO()); + model.addAttribute("termsOfUse", agreementsFacade.getAgreement("TERMS_OF_USE")); + model.addAttribute("privacyCollect", agreementsFacade.getAgreement("PRIVACY_COLLECT_ORG")); + return MAIN_ORG_REGISTER; + } + + @PostMapping + public String registerOrg( + @RequestParam("registrationScenario") String scenario, + @ModelAttribute PortalOrgRegistrationDTO orgDTO, + @ModelAttribute UserAgreementDTO agreementDTO, + Model model) { + + try { + ValidationResponse response; + + switch (scenario) { + case "new": + response = orgRegisterFacade.registerNewOrgUser( + orgDTO, + agreementDTO); + break; + + case "retain": + response = orgRegisterFacade.convertToOrgUser( + orgDTO, + agreementDTO, + orgDTO.getLoginId(), + orgDTO.getConfirmPassword()); + break; + + case "change": + response = orgRegisterFacade.registerNewOrgUserWithEmailChange( + orgDTO, + agreementDTO, + orgDTO.getLoginId(), + orgDTO.getNewLoginId(), + orgDTO.getConfirmPassword()); + break; + + default: + model.addAttribute("error", "잘못된 등록입니다."); + return MAIN_ORG_REGISTER; + } + + if (response.isValid()) { + model.addAttribute("message", response.getMessage()); + return MAIN_REGISTER_RESULT; + } else { + setModelForErrorOrg(model, orgDTO, response.getMessage()); + return MAIN_ORG_REGISTER; + } + + } catch (Exception e) { + setModelForErrorOrg(model, orgDTO, "처리 중 오류가 발생했습니다: " + e.getMessage()); + return MAIN_ORG_REGISTER; + } + } + + private void setModelForErrorOrg(Model model, PortalOrgRegistrationDTO orgDTO, String errorMessage) { + model.addAttribute("registrationType", "corporate"); + model.addAttribute("portalOrg", orgDTO); + model.addAttribute("error", errorMessage); + model.addAttribute("termsOfUse", agreementsFacade.getAgreement("TERMS_OF_USE")); + model.addAttribute("privacyCollect", agreementsFacade.getAgreement("PRIVACY_COLLECT_ORG")); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/OrgRegisterRestController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/OrgRegisterRestController.java new file mode 100644 index 0000000..c7aeec7 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/OrgRegisterRestController.java @@ -0,0 +1,36 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.facade.OrgRegisterFacade; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +public class OrgRegisterRestController { + + private final OrgRegisterFacade orgRegisterFacade; + + @PostMapping("/check-business-number") + public ResponseEntity checkBusinessNumber(@RequestParam String compRegNo) { + return orgRegisterFacade.checkBusinessNumber(compRegNo); + } + + @PostMapping("/check-corp-reg-no") + public ResponseEntity checkCorpRegNo(@RequestParam String corpRegNo) { + return orgRegisterFacade.checkCorpRegNo(corpRegNo); + } + + @PostMapping("/check-org-phone-number") + public ResponseEntity checkOrgPhoneNumber(@RequestParam String orgPhoneNumber) { + return orgRegisterFacade.checkOrgPhoneNumber(orgPhoneNumber); + } + + @PostMapping("/check-sc-phone-number") + public ResponseEntity checkScPhoneNumber(@RequestParam String scPhoneNumber) { + return orgRegisterFacade.checkScPhoneNumber(scPhoneNumber); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/UserManController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserManController.java new file mode 100644 index 0000000..6d6d633 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserManController.java @@ -0,0 +1,55 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.apps.user.facade.UserManFacade; +import com.eactive.apim.portal.common.util.SecurityUtil; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +@Secured("ROLE_USER_MANAGER") +@RequestMapping("/users") +@RequiredArgsConstructor +public class UserManController { + + private final UserManFacade userManFacade; + + @GetMapping + public String userList(@PageableDefault(sort = "createdDate", direction = Sort.Direction.DESC) Pageable pageable, Model model) { + + List pendingUsers = userManFacade.getPendingUsers(SecurityUtil.getUserOrg()); + Page users = userManFacade.getUsers(SecurityUtil.getUserOrg(), pageable); + model.addAttribute("users", users.getContent()); + model.addAttribute("pendingUsers", pendingUsers); + model.addAttribute("page", users); + model.addAttribute("currentUserId", SecurityUtil.getPortalAuthenticatedUser().getId()); + return "apps/users/userList"; + } + + //2. detail + @GetMapping("/detail") + public String userdetail(@RequestParam(value = "id", required = false) String id, ModelMap model) { + + if(id == null) { + return "redirect:/users"; + } + + PortalUserDTO user = userManFacade.getUser(SecurityUtil.getUserOrg(), id); + + model.addAttribute("user", user); + return "apps/users/userDetail"; + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/UserManRestController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserManRestController.java new file mode 100644 index 0000000..066525f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserManRestController.java @@ -0,0 +1,59 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.apps.user.facade.UserManFacade; +import com.eactive.apim.portal.common.dto.ResponseDTO; +import com.eactive.apim.portal.common.util.SecurityUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.annotation.Secured; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Secured("ROLE_USER_MANAGER") +@RequestMapping("/users") +@RequiredArgsConstructor +public class UserManRestController { + + private final UserManFacade userManFacade; + + // 1. Cancel invitation + @PostMapping("/cancel-invitation") + public ResponseDTO cancelInvitation(@RequestBody PortalUserDTO user) { + userManFacade.cancelInvitation(SecurityUtil.getPortalAuthenticatedUser(), user.getId()); + return new ResponseDTO(200, "SUCCESS", "초대가 취소되었습니다."); + } + + // 2. Inactivate user + @PostMapping("/inactivate") + public ResponseDTO inactivateUser(@RequestBody PortalUserDTO user) { + userManFacade.inactivateUser(SecurityUtil.getPortalAuthenticatedUser(), user.getId()); + return new ResponseDTO(200, "SUCCESS", "사용자가 비활성화되었습니다."); + } + + // 3. Activate user + @PostMapping("/activate") + public ResponseDTO activateUser(@RequestBody PortalUserDTO user) { + userManFacade.activateUser(SecurityUtil.getPortalAuthenticatedUser(), user.getId()); + return new ResponseDTO(200, "SUCCESS", "사용자가 활성화되었습니다."); + } + + //5. register new user + @PostMapping("/invite") + public ResponseDTO sendInvitation(@RequestBody PortalUserDTO newUser) { + + userManFacade.sendInvitation(SecurityUtil.getPortalAuthenticatedUser(), newUser.getEmailAddr()); + + return new ResponseDTO(200, "SUCCESS", "요청 메일이 발송되었습니다."); + } + + @PostMapping("/change-role") + public ResponseDTO changeManager(@RequestBody PortalUserDTO newUser) { + + userManFacade.assignManager(SecurityUtil.getPortalAuthenticatedUser(), newUser.getId()); + + return new ResponseDTO(200, "SUCCESS", "변경되었습니다. 확인 버튼을 누르시면 계정을 로그아웃 합니다."); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterController.java new file mode 100644 index 0000000..caf0524 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterController.java @@ -0,0 +1,297 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.agreements.service.AgreementsFacade; +import com.eactive.apim.portal.apps.user.dto.PortalUserRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.facade.UserRegisterFacade; +import com.eactive.apim.portal.apps.user.repository.PortalOrgRepository; +import com.eactive.apim.portal.apps.user.service.PortalUserService; +import com.eactive.apim.portal.apps.user.validator.AgreementValidator; +import com.eactive.apim.portal.common.util.EncryptionUtil; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.config.PortalProperties; +import com.eactive.apim.portal.invitation.entity.UserInvitation; +import com.eactive.apim.portal.invitation.entity.UserInvitationEnums; +import com.eactive.apim.portal.invitation.repository.UserInvitationRepository; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.Optional; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.servlet.http.HttpSession; +import javax.validation.Valid; + +import lombok.RequiredArgsConstructor; +import org.apache.xerces.impl.dv.util.Base64; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + + +@Controller +@RequiredArgsConstructor +public class UserRegisterController { + + private static final String MAIN_USER_REGISTER = "apps/register/userRegister"; + private static final String MAIN_REGISTER_RESULT = "apps/register/userRegisterResult"; + private static final String MAIN_EMAIL_COMPLETED = "apps/register/joinCompleted"; + + private final PortalUserService portalUserService; + private final UserRegisterFacade userRegisterFacade; + private final PortalUserRepository portalUserRepository; + private final PortalOrgRepository portalOrgRepository; + private final AgreementsFacade agreementsFacade; + private final PortalProperties portalProperties; + private final UserInvitationRepository userInvitationRepository; + private final EncryptionUtil encryptionUtil; + private final AgreementValidator agreementValidator; + + @GetMapping("/signup") + public String showSignupSelection() { + return "apps/register/signupSelection"; + } + + @GetMapping("/signup/portalUser") + public String getUserAgreement(@RequestParam(name = "invitation", required = false) String invitationToken, HttpSession session, Model model) { + boolean isInvited = false; + String orgName = null; + String email = null; + String[] parts = null; + + if (invitationToken != null) { + String decodedToken = new String(Base64.decode(invitationToken)); + session.setAttribute("invitationToken", decodedToken); + Optional invitation = userInvitationRepository.findByToken(decodedToken); + if (invitation.isPresent() && invitation.get().getStatus() == UserInvitationEnums.InvitationStatus.PENDING) { + isInvited = true; + String orgId = invitation.get().getOrgId(); + Optional org = portalOrgRepository.findById(orgId); + orgName = org.map(PortalOrg::getOrgName).orElse(null); + email = invitation.get().getInvitationEmail(); + parts = email.split("@"); + } + } + + model.addAttribute("registrationType", isInvited ? "corporate" : "personal"); + model.addAttribute("isInvited", isInvited); + model.addAttribute("orgName", orgName); + model.addAttribute("email", email); + model.addAttribute("loginId", email); + + if (parts != null) { + model.addAttribute("emailId", parts[0]); + model.addAttribute("domain", parts[1]); + } else { + model.addAttribute("emailId", ""); + model.addAttribute("domain", ""); + } + + model.addAttribute("authTtl", portalProperties.getAuthTtl()); + model.addAttribute("portalUser", new PortalUserRegistrationDTO()); + model.addAttribute("termsOfUse", agreementsFacade.getAgreement("TERMS_OF_USE")); + model.addAttribute("privacyCollect", agreementsFacade.getAgreement(isInvited ? "PRIVACY_COLLECT_ORG" : "PRIVACY_COLLECT_IND")); + + return MAIN_USER_REGISTER; + + } + + @PostMapping("/signup/portalUser") + public String registerUser(@Valid @ModelAttribute("agreement") UserAgreementDTO agreement, + @Valid @ModelAttribute("portalUser") PortalUserRegistrationDTO portalUserRegistrationDTO, + BindingResult bindingResult, + HttpSession session, + Model model) { + try { + if (bindingResult.hasErrors()) { + setModelForError(session, model, agreement, portalUserRegistrationDTO, "입력값을 확인해주세요."); + return MAIN_USER_REGISTER; + } + + String invitationToken = (String) session.getAttribute("invitationToken"); + + ValidationResponse response; + if (invitationToken != null) { + response = userRegisterFacade.registerInvitedUser(agreement, portalUserRegistrationDTO, + invitationToken, bindingResult, session, model); + } else { + response = userRegisterFacade.registerNewUser(agreement, portalUserRegistrationDTO, + bindingResult, session, model); + } + + if (!response.isValid()) { + setModelForError(session, model, agreement, portalUserRegistrationDTO, response.getMessage()); + return MAIN_USER_REGISTER; + } + // 성공 시 + session.removeAttribute("invitationToken"); + model.addAttribute("message", "회원가입이 완료되었습니다."); + return invitationToken != null ? MAIN_EMAIL_COMPLETED : MAIN_REGISTER_RESULT; + } catch (Exception e) { + setModelForError(session, model, agreement, portalUserRegistrationDTO, + "처리 중 오류가 발생했습니다: " + e.getMessage()); + return MAIN_USER_REGISTER; + } + } + + @GetMapping("/signup/decision") + public String showDecisionPage(@RequestParam(name = "invitation", required = false) String invitationToken, + HttpSession session, + Model model) { + if (invitationToken == null) { + return "redirect:/"; + } + + String decodedToken = new String(Base64.decode(invitationToken)); + session.setAttribute("decisionToken", decodedToken); + + Optional invitation = userInvitationRepository.findByToken(decodedToken); + + if (!invitation.isPresent() || invitation.get().getStatus() != UserInvitationEnums.InvitationStatus.PENDING) { + model.addAttribute("error", "유효하지 않은 초대입니다."); + return "redirect:/"; + } + + // 이메일로 사용자 정보 조회 + String email = invitation.get().getInvitationEmail(); + Optional portalUser = portalUserRepository.findPortalUserByEmailAddr(email); + + if (!portalUser.isPresent()) { + model.addAttribute("error", "사용자 정보를 찾을 수 없습니다."); + return "redirect:/"; + } + + String orgId = invitation.get().getOrgId(); + Optional org = portalOrgRepository.findById(orgId); + + if (!org.isPresent()) { + model.addAttribute("error", "조직 정보를 찾을 수 없습니다."); + return "redirect:/"; + } + + // 이메일 대신 사용자 이름을 모델에 추가 + model.addAttribute("userName", portalUser.get().getUserName()); + model.addAttribute("orgName", org.get().getOrgName()); + model.addAttribute("isInvited", true); + + return "apps/register/userDecisionAccept"; + } + + @GetMapping("signup/decision_process") + @Secured("ROLE_USER") + public String showDecisionProcessPage(HttpSession session, Model model) { + session.removeAttribute("decisionToken"); + + Optional invitation = userInvitationRepository.findFirstByInvitationEmailAndStatus(SecurityUtil.getPortalAuthenticatedUser().getLoginId(), UserInvitationEnums.InvitationStatus.PENDING); + + if (!invitation.isPresent()) { + model.addAttribute("error", "유효하지 않은 초대입니다"); + return "redirect:/"; + } + if (!SecurityUtil.getPortalAuthenticatedUser().getLoginId().equals(invitation.get().getInvitationEmail())) { + model.addAttribute("error", "유효하지 않은 초대입니다"); + return "redirect:/"; + } + String orgId = invitation.get().getOrgId(); + Optional org = portalOrgRepository.findById(orgId); + + if (!org.isPresent()) { + model.addAttribute("error", "조직 정보를 찾을 수 없습니다."); + return "redirect:/"; + } + + model.addAttribute("userName", SecurityUtil.getPortalAuthenticatedUser().getUsername()); + model.addAttribute("orgName", org.get().getOrgName()); + model.addAttribute("termsOfUse", agreementsFacade.getAgreement("TERMS_OF_USE")); + model.addAttribute("privacyCollect", agreementsFacade.getAgreement("PRIVACY_COLLECT_ORG")); + model.addAttribute("registrationType", "corporate"); + + return "apps/register/userDecisionProcess"; + + } + + @PostMapping("/signup/decision") + @Secured("ROLE_USER") + public String processInvitation(@ModelAttribute("agreement") UserAgreementDTO agreement, + @RequestParam(name = "action") String action, + BindingResult bindingResult, + @RequestParam(name = "invitationToken") String invitationToken, + RedirectAttributes redirectAttributes, + Model model) { + + agreementValidator.validate(agreement, bindingResult); + + Optional invitation = userInvitationRepository.findFirstByInvitationEmailAndStatus(SecurityUtil.getPortalAuthenticatedUser().getLoginId(), UserInvitationEnums.InvitationStatus.PENDING); + + if (action.equalsIgnoreCase("accept") && bindingResult.hasErrors()) { + + String orgId = invitation.get().getOrgId(); + Optional org = portalOrgRepository.findById(orgId); + + model.addAttribute("userName", SecurityUtil.getPortalAuthenticatedUser().getUsername()); + model.addAttribute("orgName", org.get().getOrgName()); + model.addAttribute("termsOfUse", agreementsFacade.getAgreement("TERMS_OF_USE")); + model.addAttribute("privacyCollect", agreementsFacade.getAgreement("PRIVACY_COLLECT_ORG")); + model.addAttribute("registrationType", "corporate"); + + return "apps/register/userDecisionProcess"; + } else { + ValidationResponse response = userRegisterFacade.processInvitation(action, invitation.get()); + + redirectAttributes.addFlashAttribute("success", response.getMessage()); + return "redirect:/"; + } + } + + @GetMapping("signup/deny") + public String deny(HttpSession session, Model model) { + session.removeAttribute("decisionToken"); + return "redirect:/"; + } + + @GetMapping("/validate_email") + public String validateUserEmail(@RequestParam(name = "token", required = false) String token) { + String decodedToken = new String(Base64.decode(token)); + try { + String decToken = encryptionUtil.decrypt(decodedToken); + String[] tokens = decToken.split(":"); + boolean approvalRequired = portalUserService.activateUser(tokens[1]); + if (approvalRequired) { + return "apps/register/emailValidationResultCorpManager"; + } else { + return "apps/register/emailValidationResultUser"; + } + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | + BadPaddingException e) { + throw new IllegalArgumentException("인증 정보 오류. 관리자 문의하세요."); + } + + } + + // 에러 발생 시 모델 세팅을 위한 private 메서드 + private void setModelForError(HttpSession session, Model model, UserAgreementDTO agreement, + PortalUserRegistrationDTO portalUserRegistrationDTO, String errorMessage) { + String invitationToken = (String) session.getAttribute("invitationToken"); + model.addAttribute("isInvited", invitationToken != null); + + model.addAttribute("registrationType", "personal"); + model.addAttribute("portalUser", portalUserRegistrationDTO); + model.addAttribute("error", errorMessage); + model.addAttribute("agreement", agreement); + + model.addAttribute("termsOfUse", agreementsFacade.getAgreement("TERMS_OF_USE")); + model.addAttribute("privacyCollect", agreementsFacade.getAgreement("PRIVACY_COLLECT_IND")); + model.addAttribute("msgType", "sms"); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterRestController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterRestController.java new file mode 100644 index 0000000..c6c86bb --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterRestController.java @@ -0,0 +1,50 @@ +package com.eactive.apim.portal.apps.user.controller; + +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.facade.UserRegisterFacade; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +public class UserRegisterRestController { + + private final UserRegisterFacade userRegisterFacade; + + @PostMapping("/check_id") + public ResponseEntity checkId( + @RequestParam(name = "loginId") String loginId, + @RequestParam(name = "registrationType", defaultValue = "personal") String registrationType) { + ValidationResponse response = userRegisterFacade.handleCheckId(loginId, registrationType); + return ResponseEntity.ok(response); + } + + @PostMapping("/check_new_email") + public ResponseEntity checkNewEmail( + @RequestParam(name = "newLoginId") String newLoginId) { + ValidationResponse response = userRegisterFacade.handleCheckNewEmail(newLoginId); + return ResponseEntity.ok(response); + } + + @PostMapping("/check_password") + public ResponseEntity checkPassword(@RequestParam String password, @RequestParam String loginId, @RequestParam String mobileNumber) { + return ResponseEntity.ok(userRegisterFacade.checkPassword(password, loginId, mobileNumber)); + } + + @PostMapping("/check_password_match") + public ResponseEntity checkPasswordMatch(@RequestParam String password, @RequestParam String password2) { + return ResponseEntity.ok(userRegisterFacade.checkPasswordMatch(password, password2)); + } + + @PostMapping("/register/confirm_password") + public ResponseEntity confirmPassword( + @RequestParam String loginId, + @RequestParam String confirmPassword) { + ValidationResponse response = userRegisterFacade.verifyPassword(loginId, confirmPassword); + return ResponseEntity.ok(response); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/CompanyInfoDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/CompanyInfoDTO.java new file mode 100644 index 0000000..c5e50e8 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/CompanyInfoDTO.java @@ -0,0 +1,67 @@ +package com.eactive.apim.portal.apps.user.dto; + +import javax.validation.constraints.NotEmpty; +import lombok.Data; + +@Data +public class CompanyInfoDTO { + + + /** + * 회사 이름 + */ + @NotEmpty(message = "회사 이름을 입력해 주세요.") + private String companyName; + + /** + * 대표이사 + */ + private String ceoName; + + + /** + * 사업자등록번호 + */ + @NotEmpty(message = "사업자등록번호를 입력해주세요.") + private String bizrno; + + /** + * 법인등록번호 + */ + @NotEmpty(message = "법인등록번호를 입력해주세요.") + private String jurirno; + + + private String officePhone; + + /** + * 우편번호 + */ + private String zip; + + /** + * 사무실 주소 + */ + private String adres; + + /** + * 상세주소 + */ + private String detailAdres; + + /** + * 팩스번호 + */ + private String fxnum; + + /** + * 기업구분코드 + */ + private String entrprsSeCode; + + /** + * 업종코드 + */ + private String indutyCode; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserMyUpdateDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserMyUpdateDTO.java new file mode 100644 index 0000000..6fdf91f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserMyUpdateDTO.java @@ -0,0 +1,44 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.entity.EnabledStatus; +import com.eactive.apim.portal.portaluser.entity.UserStatus; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import lombok.Data; + +@Data +public class EnterpriseUserMyUpdateDTO implements Serializable { + + /** + * 고유ID + */ + private String esntlId; + + /** + * 업무사용자ID + */ + @NotEmpty + private String userId; + + + /** + * 사용자상태코드 + */ + private UserStatus status; + + /** + * 이동전화번호 + */ + @NotEmpty + private String mobilePhone; + + /** + * 사용자 이름 + */ + @NotEmpty + private String username; + + private EnabledStatus lockYn; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserRegisterDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserRegisterDTO.java new file mode 100644 index 0000000..a1a910c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserRegisterDTO.java @@ -0,0 +1,117 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.validator.PasswordMatch; +import com.eactive.apim.portal.common.validator.UniqueId; +import com.eactive.apim.portal.portaluser.entity.UserStatus; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotEmpty; + +@Data +@PasswordMatch(input = "password", confirm = "password2") +public class EnterpriseUserRegisterDTO { + + /** + * 고유ID + */ + private String esntlId; + + /** + * 기업 사용자ID + */ + @NotEmpty + @UniqueId + @Email + private String userId; + + + /** + * 사용자 상태 코드 + */ + private UserStatus status; + + /** + * 이동전화번호 + */ + @NotEmpty + private String mobilePhone; + + /** + * 사용자 이름 + */ + @NotEmpty + private String username; + + /** + * 비밀번호 + */ + @NotEmpty(message = "{field.required}") + @Length(min = 8) + private String password; + + @NotEmpty(message = "{field.required}") + @Length(min = 8) + private String password2; + + /** + * 회사 이름 + */ + @NotEmpty(message = "회사 이름을 입력해주세요.") + private String companyName; + + + /** + * 사업자등록번호 + */ + @NotEmpty(message = "사업자 등록 번호를 입력해 주세요.") + private String bizrno; + + /** + * 법인등록번호 + */ + @NotEmpty(message = "법인 등록 번호를 입력해 주세요.") + private String jurirno; + + /** + * 대표이사 + */ + private String ceoName; + + + private String officePhone; + + /** + * 우편번호 + */ + private String zip; + + /** + * 사무실 주소 + */ + private String adres; + + /** + * 상세주소 + */ + private String detailAdres; + + /** + * 팩스번호 + */ + private String fxnum; + + /** + * 기업구분코드 + */ + private String entrprsSeCode; + + /** + * 업종코드 + */ + private String indutyCode; + +} + + diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserUpdateDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserUpdateDTO.java new file mode 100644 index 0000000..947f3f7 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/EnterpriseUserUpdateDTO.java @@ -0,0 +1,102 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.entity.EnabledStatus; +import com.eactive.apim.portal.portaluser.entity.UserStatus; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import lombok.Data; + +@Data +public class EnterpriseUserUpdateDTO implements Serializable { + + /** + * 고유ID + */ + private String esntlId; + + /** + * 업무사용자ID + */ + @NotEmpty + private String userId; + + + /** + * 사용자상태코드 + */ + private UserStatus status; + + /** + * 이동전화번호 + */ + @NotEmpty + private String mobilePhone; + + /** + * 사용자 이름 + */ + @NotEmpty + private String username; + + private EnabledStatus lockAt; + + + /** + * 회사 이름 + */ + @NotEmpty(message = "회사 이름을 입력해주세요.") + private String companyName; + + /** + * 대표이사 + */ + private String ceoName; + + + /** + * 사업자등록번호 + */ + @NotEmpty(message = "사업자등록번호를 입력해주세요.") + private String bizrno; + + /** + * 법인등록번호 + */ + @NotEmpty(message = "법인등록번호를 입력해주세요.") + private String jurirno; + + + private String officePhone; + + /** + * 우편번호 + */ + private String zip; + + /** + * 사무실 주소 + */ + private String adres; + + /** + * 상세주소 + */ + private String detailAdres; + + /** + * 팩스번호 + */ + private String fxnum; + + /** + * 기업구분코드 + */ + private String entrprsSeCode; + + /** + * 업종코드 + */ + private String indutyCode; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/PasswordChangeRequestDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/PasswordChangeRequestDTO.java new file mode 100644 index 0000000..5fe4b52 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/PasswordChangeRequestDTO.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.validator.PasswordMatch; + +import javax.validation.constraints.NotEmpty; +import lombok.Data; + +@PasswordMatch(input = "newPassword", confirm = "newPassword2") +@Data +public class PasswordChangeRequestDTO { + + @NotEmpty(message = "{field.required}") + private String oldPassword; + + @NotEmpty(message = "{field.required}") + private String newPassword; + + @NotEmpty(message = "{field.required}") + private String newPassword2; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalOrgDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalOrgDTO.java new file mode 100644 index 0000000..2eb2273 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalOrgDTO.java @@ -0,0 +1,67 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.validator.PhoneNumber; +import lombok.Data; +import org.hibernate.validator.constraints.NotEmpty; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@Data +public class PortalOrgDTO { + + private String id; + //법인등록번호 + @NotEmpty(message = "{field.required}") +// @CorpRegNo + private String corpRegNo; + + //사업자등록번호 + @NotEmpty(message = "{field.required}") +// @CompRegNo + private String compRegNo; + + //기관명 + @NotEmpty(message = "{field.required}") + private String orgName; + + //대표자 성명 + @NotEmpty(message = "{field.required}") + private String ceoName; + + //기관사업장소재지 + @NotEmpty(message = "{field.required}") + private String orgAddr; + + private String orgCode; + + //기관업태 + private String orgSectors; + + //기관업종 + private String orgIndustryType; + + //서비스명 + @NotEmpty(message = "{field.required}") + private String serviceName; + + //고객센터연락처 + @NotEmpty(message = "{field.required}") + private String scPhoneNumber; + + //기관전화번호 + @NotEmpty(message = "{field.required}") + @PhoneNumber + private String orgPhoneNumber; + + //사용자서버IP대역 + private String ipWhitelist; + + //사업자등록증-파일 + //@NotEmpty(message = "{field.required}") + private String compRegFile; + + private List files; + + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalOrgRegistrationDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalOrgRegistrationDTO.java new file mode 100644 index 0000000..1181062 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalOrgRegistrationDTO.java @@ -0,0 +1,68 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.validator.PhoneNumber; +import lombok.Data; +import org.hibernate.validator.constraints.NotEmpty; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@Data +public class PortalOrgRegistrationDTO extends PortalUserRegistrationDTO { + + /* + * portal_org + * 기관 가입 + */ + + //법인등록번호 + @NotEmpty(message = "{field.required}") +// @CorpRegNo + private String corpRegNo; + + //사업자등록번호 + @NotEmpty(message = "{field.required}") +// @CompRegNo + private String compRegNo; + + //기관명 + @NotEmpty(message = "{field.required}") + private String orgName; + + //대표자 성명 + @NotEmpty(message = "{field.required}") + private String ceoName; + + //기관사업장소재지 + @NotEmpty(message = "{field.required}") + private String orgAddr; + + //기관업태 + private String orgSectors; + + //기관업종 + private String orgIndustryType; + + //서비스명 + @NotEmpty(message = "{field.required}") + private String serviceName; + + //고객센터연락처 + @NotEmpty(message = "{field.required}") + private String scPhoneNumber; + + //기관전화번호 + @NotEmpty(message = "{field.required}") + @PhoneNumber + private String orgPhoneNumber; + + //사용자서버IP대역 + private String ipWhitelist; + + //사업자등록증-파일 + //@NotEmpty(message = "{field.required}") + private String compRegFile; + + private List files; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserDTO.java new file mode 100644 index 0000000..a5af579 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserDTO.java @@ -0,0 +1,52 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.ApprovalStatus; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.RoleCode; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.UserStatus; +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Data; + +@Data +public class PortalUserDTO implements Serializable { + private static final long serialVersionUID = 1L; + + private String id; + + private String loginId; + + private String userName; + + private String newMobileNumber; + + private String mobileNumber; + + private String emailAddr; + + private PortalOrgDTO portalOrg; + + private UserStatus userStatus; + + private ApprovalStatus approvalStatus; + + private RoleCode roleCode; + + private String accountLockYn; + + private Integer loginFailureCount; + + private LocalDateTime passwordChangeDate; + + private String authCompletedYn; + + private LocalDateTime createdDate; + + private LocalDateTime lastLoginDate; + + private String withdrawalReason; + + // 마스킹된 데이터를 위한 필드 + private String maskedUserName; + private String maskedEmailAddr; + private String maskedMobileNumber; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserPrivacyAgreementDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserPrivacyAgreementDTO.java new file mode 100644 index 0000000..62a64e3 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserPrivacyAgreementDTO.java @@ -0,0 +1,22 @@ +package com.eactive.apim.portal.apps.user.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +public class PortalUserPrivacyAgreementDTO implements Serializable { + private static final long serialVersionUID = 1L; + + private Long id; + + /*종류*/ + private String termsType; + + /*버전*/ + private int termsVersion; + + /* 동의일시 */ + private LocalDateTime agreementDate; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserRegistrationDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserRegistrationDTO.java new file mode 100644 index 0000000..b12a450 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/PortalUserRegistrationDTO.java @@ -0,0 +1,48 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.validator.AuthNumberMatch; +import com.eactive.apim.portal.common.validator.CellPhone; +import com.eactive.apim.portal.common.validator.PasswordMatch; +import com.eactive.apim.portal.common.validator.PasswordRule; +import com.eactive.apim.portal.common.validator.PasswordRuleForKbank; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.NotEmpty; + + +@AuthNumberMatch(recipient = "loginId", authField = "authNumber") +@PasswordMatch(input = "password", confirm = "password2") +@Data +@PasswordRuleForKbank(password = "password", loginId = "loginId", mobile = "mobileNumber") +public class PortalUserRegistrationDTO { + + /** + * 개인회원ID + */ + private String loginId; + + /** + * 신청인 이름 + */ + @NotEmpty(message = "{field.required}") + private String userName; + + /** + * 비밀번호 + */ + private String password; + + private String password2; + + @CellPhone + private String mobileNumber; + + @Length(min = 6, max = 6, message = "인증번호 6자리를 입력해 주세요") + private String authNumber; + + // 비밀번호 확인 필드 + private String confirmPassword; + + // 새로운 로그인 ID 필드 추가 + private String newLoginId; +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/UserAgreementDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/UserAgreementDTO.java new file mode 100644 index 0000000..0ec8589 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/UserAgreementDTO.java @@ -0,0 +1,44 @@ +package com.eactive.apim.portal.apps.user.dto; + +import lombok.Data; +import javax.validation.constraints.AssertTrue; + +@Data +public class UserAgreementDTO { + + private boolean termsOfUse; + private boolean privacyCollectInd; + private boolean privacyCollectOrg; + + private String userType; // "INDIVIDUAL" 또는 "ORGANIZATION" + + // 약관 버전 정보 + private String termsOfUseVersion; + private String privacyCollectIndVersion; + private String privacyCollectOrgVersion; + + // 동의 일시 + private String agreementDateTime; + + public boolean isIndividualUser() { + return "INDIVIDUAL".equals(userType); + } + + public boolean isOrganizationUser() { + return "ORGANIZATION".equals(userType); + } + + // 모든 필수 약관에 동의했는지 확인하는 메서드 + @AssertTrue(message = "모든 필수 약관에 동의해주세요.") + public boolean isAllRequiredTermsAgreed() { + boolean basicAgreements = termsOfUse; + + if (isIndividualUser()) { + return basicAgreements && privacyCollectInd; + } else if (isOrganizationUser()) { + return basicAgreements && privacyCollectOrg; + } + + return basicAgreements; + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/UserRegisterDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/UserRegisterDTO.java new file mode 100644 index 0000000..7340660 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/UserRegisterDTO.java @@ -0,0 +1,62 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.validator.PasswordMatch; +import com.eactive.apim.portal.common.validator.PasswordRule; +import com.eactive.apim.portal.common.validator.PasswordRuleForKbank; +import com.eactive.apim.portal.common.validator.UniqueId; +import com.eactive.apim.portal.portaluser.entity.UserStatus; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; + +@PasswordMatch(input = "password", confirm = "password2") +@Data +@PasswordRuleForKbank(loginId = "userId", password = "password", mobile = "mobilePhone") +public class UserRegisterDTO implements Serializable { + + + /** + * 고유ID + */ + private String esntlId; + + /** + * 업무사용자ID + */ + @NotEmpty + @UniqueId + @Email + private String userId; + + + /** + * 비밀번호 + */ + @NotEmpty(message = "{field.required}") + private String password; + + @NotEmpty(message = "{field.required}") + @Length(min = 8) + private String password2; + + /** + * 사용자상태코드 + */ + private UserStatus status; + + /** + * 이동전화번호 + */ + @NotEmpty + private String mobilePhone; + + /** + * 사용자 이름 + */ + @NotEmpty + private String username; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/UserUpdateDTO.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/UserUpdateDTO.java new file mode 100644 index 0000000..e9b953a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/UserUpdateDTO.java @@ -0,0 +1,46 @@ +package com.eactive.apim.portal.apps.user.dto; + +import com.eactive.apim.portal.common.entity.EnabledStatus; +import com.eactive.apim.portal.portaluser.entity.UserStatus; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import lombok.Data; + +@Data +public class UserUpdateDTO implements Serializable { + + + /** + * 고유ID + */ + private String esntlId; + + /** + * 업무사용자ID + */ + @NotEmpty + private String userId; + + + /** + * 사용자상태코드 + */ + private UserStatus status; + + /** + * 이동전화번호 + */ + @NotEmpty + private String mobilePhone; + + /** + * 사용자 이름 + */ + @NotEmpty + private String username; + +// @NotNull + private EnabledStatus lockAt; + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/dto/ValidationResponse.java b/src/main/java/com/eactive/apim/portal/apps/user/dto/ValidationResponse.java new file mode 100644 index 0000000..2826f65 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/dto/ValidationResponse.java @@ -0,0 +1,25 @@ +package com.eactive.apim.portal.apps.user.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ValidationResponse { + + private boolean isValid; + private String message; + + private boolean showPopup; // 팝업을 띄울지 여부 + private String popupType; // 팝업의 유형 (validEmail, conversionOrChange, error 등) + + private boolean isPersonalAccount; + private boolean isCorporateAccount; + + public ValidationResponse(boolean isValid, String message) { + this.isValid = isValid; + this.message = message; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/AuthFacade.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/AuthFacade.java new file mode 100644 index 0000000..e8c608b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/AuthFacade.java @@ -0,0 +1,11 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; + + +public interface AuthFacade { + + ValidationResponse requestAuth(String mobileNumber, String msgType); + + ValidationResponse verifyAuthNumber(String recipientKey, String authNumber); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/AuthFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/AuthFacadeImpl.java new file mode 100644 index 0000000..06a5e16 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/AuthFacadeImpl.java @@ -0,0 +1,70 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.apps.auth.service.AuthNumberService; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Service +@RequiredArgsConstructor +public class AuthFacadeImpl implements AuthFacade { + + private final AuthNumberService authNumberService; + private static final Logger log = LoggerFactory.getLogger(AuthFacadeImpl.class); + + @Override + public ValidationResponse requestAuth(String recipientKey, String msgType) { + ValidationResponse response = new ValidationResponse(); + + // 기본 유효성 검사 유지 + if (recipientKey == null || msgType == null) { + response.setValid(false); + response.setMessage("수신 정보가 없습니다."); + return response; + } + + if (!"SMS".equalsIgnoreCase(msgType)) { + response.setValid(false); + response.setMessage("유효하지 않은 인증 방식입니다."); + return response; + } + + try { + authNumberService.sendRequestAuthNumber(recipientKey, msgType); + response.setValid(true); + response.setMessage("인증번호를 발송하였습니다."); + } catch (Exception e) { + response.setValid(false); + response.setMessage(e.getMessage()); + log.error("Auth number request failed for recipient: {}", recipientKey, e); + } + return response; + } + + @Override + public ValidationResponse verifyAuthNumber(String recipientKey, String authNumber) { + ValidationResponse response = new ValidationResponse(); + + // 기본 입력값 검증 추가 + if (recipientKey == null || authNumber == null) { + response.setValid(false); + response.setMessage("유효하지 않은 입력값입니다."); + return response; + } + + try { + boolean isValid = authNumberService.verifyAuthNumber(recipientKey, authNumber); + response.setValid(isValid); + response.setMessage(isValid ? "인증이 완료되었습니다." : "인증번호가 일치하지 않습니다."); + } catch (Exception e) { + response.setValid(false); + response.setMessage("입력된 인증번호가 올바르지 않습니다."); + log.error("Auth number verification failed for recipient: {}", recipientKey, e); + } + return response; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/MessageRequestFacade.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/MessageRequestFacade.java new file mode 100644 index 0000000..2baab09 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/MessageRequestFacade.java @@ -0,0 +1,15 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.apps.user.service.MessageRequestService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class MessageRequestFacade { + private final MessageRequestService messageRequestService; + + public void deleteUserMessage(String username, String email) { + messageRequestService.deleteMessageRequestsByUser(username, email); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/OrgRegisterFacade.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/OrgRegisterFacade.java new file mode 100644 index 0000000..b7ac80a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/OrgRegisterFacade.java @@ -0,0 +1,41 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import org.springframework.http.ResponseEntity; + + +public interface OrgRegisterFacade { + // 신규 법인 회원 등록 + ValidationResponse registerNewOrgUser( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO) ; + + // 기존 회원의 법인 전환 + ValidationResponse convertToOrgUser( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO, + String existingUserId, + String confirmPassword); + + // 기존 회원의 마이페이지에서 법인 전환 + ValidationResponse convertToOrgUser( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO, + String existingUserId); + + // 이메일 변경을 포함한 법인 전환 + ValidationResponse registerNewOrgUserWithEmailChange( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO, + String currentEmail, + String newEmail, + String confirmPassword); + + // 유효성 검사 메서드들 + ResponseEntity checkBusinessNumber(String compRegNo); + ResponseEntity checkCorpRegNo(String corpRegNo); + ResponseEntity checkOrgPhoneNumber(String orgPhoneNumber); + ResponseEntity checkScPhoneNumber(String scPhoneNumber); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/OrgRegisterFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/OrgRegisterFacadeImpl.java new file mode 100644 index 0000000..715d2bc --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/OrgRegisterFacadeImpl.java @@ -0,0 +1,309 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.agreements.entity.AgreementType; +import com.eactive.apim.portal.apps.agreements.service.AgreementsFacade; +import com.eactive.apim.portal.apps.approval.service.ApprovalService; +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.service.BasicValidationService; +import com.eactive.apim.portal.apps.user.service.PortalOrgService; +import com.eactive.apim.portal.apps.user.service.PortalUserService; +import com.eactive.apim.portal.apps.user.service.UserRegistrationValidationService; +import com.eactive.apim.portal.apps.user.validator.AgreementValidator; +import com.eactive.apim.portal.common.exception.SystemException; +import com.eactive.apim.portal.common.util.EncryptionUtil; +import com.eactive.apim.portal.file.entity.FileInfo; +import com.eactive.apim.portal.file.service.FileService; +import com.eactive.apim.portal.file.service.FileTypeContext; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import com.eactive.apim.portal.portaluser.event.UserEmailActivationEvent; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; +import com.eactive.apim.portal.template.service.MessageHandlerService; +import com.eactive.apim.portal.template.service.MessageRecipient; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.List; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import lombok.RequiredArgsConstructor; +import org.apache.xerces.impl.dv.util.Base64; +import org.springframework.http.ResponseEntity; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +@Service +@RequiredArgsConstructor +public class OrgRegisterFacadeImpl implements OrgRegisterFacade { + + private final AgreementsFacade agreementsFacade; + private final PortalUserService portalUserService; + private final PortalOrgService portalOrgService; + private final PortalUserRepository portalUserRepository; + private final FileService fileService; + private final BasicValidationService validationService; + private final UserRegistrationValidationService userRegistrationValidationService; + private final PasswordEncoder passwordEncoder; + private final AgreementValidator agreementValidator; + private final ApprovalService approvalService; + private final MessageHandlerService messageHandlerService; + private final EncryptionUtil encryptionUtil; + + @Override + @Transactional + public ValidationResponse registerNewOrgUser( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO) { + + if (!agreementValidator.isAgreementAccepted(agreementDTO)) { + return new ValidationResponse(false, "약관에 모두 동의해야 합니다."); + } + + if (!userRegistrationValidationService.isValidOrgRegistration(orgDTO)) { + return new ValidationResponse(false, "입력 정보가 올바르지 않습니다."); + } + + PortalUser existingUser = portalUserRepository.findByUserNameAndMobileNumber(orgDTO.getUserName(), orgDTO.getMobileNumber()); + + if(existingUser != null) { + return new ValidationResponse(false, "가입된 계정이 이미 존재합니다."); + } + + try { + FileInfo uploadedFile = handleFileUpload(orgDTO.getFiles()); + if (uploadedFile == null) { + return new ValidationResponse(false, "첨부파일이 올바르지 않습니다."); + } + return registerNewCorporateUser(orgDTO, uploadedFile); + } catch (IllegalArgumentException | IOException e) { + return new ValidationResponse(false, e.getMessage()); + } + } + + @Override + @Transactional + public ValidationResponse convertToOrgUser( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO, + String existingUserId, + String confirmPassword) { + + if (!agreementValidator.isAgreementAccepted(agreementDTO)) { + return new ValidationResponse(false, "약관에 모두 동의해야 합니다."); + } + + PortalUser existingUser = validateExistingUser(existingUserId, confirmPassword); + if (existingUser == null) { + return new ValidationResponse(false, "비밀번호가 일치하지 않거나 사용자가 존재하지 않습니다."); + } + + try { + FileInfo uploadedFile = handleFileUpload(orgDTO.getFiles()); + if (uploadedFile == null) { + return new ValidationResponse(false, "첨부파일이 올바르지 않습니다."); + } + return convertExistingUserToCorporate(existingUser, orgDTO, uploadedFile); + } catch (IllegalArgumentException | IOException e) { + return new ValidationResponse(false, e.getMessage()); + } + } + + @Override + @Transactional + public ValidationResponse convertToOrgUser( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO, + String existingUserId) { + + if (!agreementValidator.isAgreementAccepted(agreementDTO)) { + return new ValidationResponse(false, "약관에 모두 동의해야 합니다."); + } + + // 사용자 존재 여부만 확인 + PortalUser existingUser = portalUserRepository.findByLoginId(existingUserId) + .orElseThrow(() -> new IllegalArgumentException("사용자가 존재하지 않습니다.")); + + try { + FileInfo uploadedFile = handleFileUpload(orgDTO.getFiles()); + if (uploadedFile == null) { + return new ValidationResponse(false, "첨부파일이 올바르지 않습니다."); + } + return convertExistingUserToCorporate(existingUser, orgDTO, uploadedFile); + } catch (IllegalArgumentException | IOException e) { + return new ValidationResponse(false, e.getMessage()); + } + } + + @Override + @Transactional + public ValidationResponse registerNewOrgUserWithEmailChange( + PortalOrgRegistrationDTO orgDTO, + UserAgreementDTO agreementDTO, + String currentEmail, + String newEmail, + String confirmPassword) { + + if (!agreementValidator.isAgreementAccepted(agreementDTO)) { + return new ValidationResponse(false, "약관에 모두 동의해야 합니다."); + } + + PortalUser existingUser = validateExistingUser(currentEmail, confirmPassword); + if (existingUser == null) { + return new ValidationResponse(false, "비밀번호가 일치하지 않거나 사용자가 존재하지 않습니다."); + } + + try { + FileInfo uploadedFile = handleFileUpload(orgDTO.getFiles()); + if (uploadedFile == null) { + return new ValidationResponse(false, "첨부파일이 올바르지 않습니다."); + } + return registerNewCorporateUserWithExistingData(orgDTO, existingUser, newEmail, uploadedFile); + } catch (IllegalArgumentException | IOException e) { + return new ValidationResponse(false, e.getMessage()); + } + } + + // 신규 법인 사용자 등록 메서드 + private ValidationResponse registerNewCorporateUser( + PortalOrgRegistrationDTO orgDTO, + FileInfo uploadedFile) { + + // PortalOrgService를 통한 기관 등록 + PortalOrg newOrg = portalOrgService.registerOrgFromDTOWithFile(orgDTO, uploadedFile); + + // 사용자 생성 및 기관 연결 + PortalUser newUser = portalUserService.createUserWithOrg(orgDTO, newOrg, "corporate"); + + agreementsFacade.saveUserAgreements(newUser.getId(), AgreementType.PRIVACY_COLLECT_ORG); + + approvalService.createUserApproval(newUser); + sendActivationEmail(newUser); + + return new ValidationResponse(true, "법인 사용자 등록 신청이 완료되었습니다."); + } + + private void sendActivationEmail(PortalUser newUser) { + MessageRecipient recipient = new MessageRecipient(); + recipient.setUsername(newUser.getUserName()); + recipient.setUserId(newUser.getEmailAddr()); + recipient.setPhone(newUser.getMobileNumber()); + HashMap params = new HashMap<>(); + String tokenValue = newUser.getCreatedDate().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + ":" + newUser.getId(); + + try { + String encToken = encryptionUtil.encrypt(tokenValue); + params.put("token", Base64.encode(encToken.getBytes(StandardCharsets.UTF_8))); + messageHandlerService.publishEvent(UserEmailActivationEvent.KEY, recipient, params); + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) { + throw new SystemException("암호화 모듈 오류"); + } + } + + // 기존 사용자를 법인 사용자로 전환하는 메서드 + private ValidationResponse convertExistingUserToCorporate( + PortalUser existingUser, + PortalOrgRegistrationDTO orgDTO, + FileInfo uploadedFile) { + + // PortalOrgService를 통한 기관 등록 + PortalOrg newOrg = portalOrgService.registerOrgFromDTOWithFile(orgDTO, uploadedFile); + + // 기존 사용자 정보 업데이트 + existingUser.setPortalOrg(newOrg); + existingUser.setRoleCode(PortalUserEnums.RoleCode.ROLE_CORP_MANAGER); + existingUser.setUserStatus(PortalUserEnums.UserStatus.ACTIVE); + existingUser.setApprovalStatus(PortalUserEnums.ApprovalStatus.PENDING); + + portalUserRepository.save(existingUser); + agreementsFacade.deleteUserAgreements(existingUser.getId()); //기존 개인약관 동의 삭제 + agreementsFacade.saveUserAgreements(existingUser.getId(), AgreementType.PRIVACY_COLLECT_ORG); + + approvalService.createUserApproval(existingUser); + + return new ValidationResponse(true, "법인 사용자 전환신청이 완료되었습니다. 관리자 승인 후 법인회원으로 서비스 이용이 가능합니다."); + } + + // 기존 데이터를 사용하여 새 이메일로 법인 사용자로 등록하는 메서드 + private ValidationResponse registerNewCorporateUserWithExistingData( + PortalOrgRegistrationDTO orgDTO, + PortalUser existingUser, + String newEmail, + FileInfo uploadedFile) { + + // PortalOrgService를 통한 기관 등록 + PortalOrg newOrg = portalOrgService.registerOrgFromDTOWithFile(orgDTO, uploadedFile); + + // 새 사용자 생성 + existingUser.setLoginId(newEmail); + existingUser.setEmailAddr(newEmail); + existingUser.setPortalOrg(newOrg); + existingUser.setRoleCode(PortalUserEnums.RoleCode.ROLE_CORP_MANAGER); + existingUser.setUserStatus(PortalUserEnums.UserStatus.READY); + existingUser.setApprovalStatus(PortalUserEnums.ApprovalStatus.PENDING); + + portalUserRepository.save(existingUser); + + // 새로운 법인용 개인정보수집동의서 저장 + agreementsFacade.saveUserAgreements(existingUser.getId(), AgreementType.PRIVACY_COLLECT_ORG); + + approvalService.createUserApproval(existingUser); + + return new ValidationResponse(true, "새로운 이메일로 법인 사용자 전환 신청이 완료되었습니다."); + } + + // 파일 업로드를 처리하는 메서드 + private FileInfo handleFileUpload(List files) throws IOException { + if (!validationService.isFileUploaded(files)) { + throw new IllegalArgumentException("법인 등록을 위해 파일이 필요합니다."); + } + + FileTypeContext.setFileType("certificate"); + return fileService.createFile(files); + } + + // 기존 사용자를 확인하는 메서드 + private PortalUser validateExistingUser(String userId, String confirmPassword) { + PortalUser existingUser = portalUserRepository.findByLoginId(userId).orElse(null); + if (existingUser == null || !passwordEncoder.matches(confirmPassword, existingUser.getPasswordHash())) { + return null; + } + return existingUser; + } + + @Override + public ResponseEntity checkBusinessNumber(String compRegNo) { + boolean isValid = validationService.isValidBusinessNumber(compRegNo); + String message = isValid ? "사용 가능한 사업자 등록번호입니다." : "유효하지 않은 사업자 등록번호입니다."; + return ResponseEntity.ok(new ValidationResponse(isValid, message)); + } + + @Override + public ResponseEntity checkCorpRegNo(String corpRegNo) { + boolean isValid = validationService.isValidCorpRegNo(corpRegNo); + String message = isValid ? "유효한 법인 등록번호입니다." : "유효하지 않은 법인 등록번호입니다."; + return ResponseEntity.ok(new ValidationResponse(isValid, message)); + } + + @Override + public ResponseEntity checkOrgPhoneNumber(String orgPhoneNumber) { + boolean isValid = validationService.isValidPhoneNumber(orgPhoneNumber); + String message = isValid ? "유효한 전화번호 형식입니다." : "유효하지 않은 전화번호 형식입니다."; + return ResponseEntity.ok(new ValidationResponse(isValid, message)); + } + + @Override + public ResponseEntity checkScPhoneNumber(String scPhoneNumber) { + boolean isValid = validationService.isValidPhoneNumber(scPhoneNumber); + String message = isValid ? "유효한 전화번호 형식입니다." : "유효하지 않은 전화번호 형식입니다."; + return ResponseEntity.ok(new ValidationResponse(isValid, message)); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/UserFacade.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserFacade.java new file mode 100644 index 0000000..9ad4952 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserFacade.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; + +public interface UserFacade { + + PortalUserDTO findById(String userId); + + boolean verifyCurrentPassword(String loginId, String currentPassword); + + void updatePassword(String loginId, String newPassword, String confirmPassword); + + void updateUser(PortalUserDTO portalUserDTO); + + void updateCorporateManager(PortalUserDTO portalUserDTO); + + void withdrawUser(String userId); +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/UserFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserFacadeImpl.java new file mode 100644 index 0000000..33c8b38 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserFacadeImpl.java @@ -0,0 +1,201 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.apps.agreements.service.AgreementsFacade; +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.apps.user.mapper.PortalUserMapper; +import com.eactive.apim.portal.apps.user.service.PasswordService; +import com.eactive.apim.portal.apps.user.service.PortalOrgService; +import com.eactive.apim.portal.apps.user.service.PortalUserService; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import com.eactive.apim.portal.portaluser.event.UserPasswordChangedEvent; +import com.eactive.apim.portal.template.service.MessageHandlerService; +import com.eactive.apim.portal.template.service.MessageRecipient; +import java.util.HashMap; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Slf4j +@Service +@RequiredArgsConstructor +public class UserFacadeImpl implements UserFacade { + private final PortalUserService portalUserService; + private final PortalOrgService portalOrgService; + private final PasswordService passwordService; + private final PortalUserMapper portalUserMapper; + private final MessageHandlerService messageHandlerService; + private final AgreementsFacade agreementsFacade; + private final MessageRequestFacade messageRequestFacade; + + @Override + public PortalUserDTO findById(String userId) { + return portalUserMapper.toVo(portalUserService.findById(userId)) ; + } + + @Override + public boolean verifyCurrentPassword(String loginId, String currentPassword) { + try { + return portalUserService.checkPassword(loginId, currentPassword); + } catch (Exception e) { + log.error("비밀번호 확인 중 오류 발생: {}", e.getMessage()); + return false; + } + } + + @Override + @Transactional + public void updatePassword(String loginId, String newPassword, String confirmPassword) { + validatePasswordUpdate(newPassword, confirmPassword); + PortalUser user = passwordService.updatePassword(loginId, newPassword, confirmPassword); + + MessageRecipient recipient = new MessageRecipient(); + recipient.setUsername(user.getUserName()); + recipient.setUserId(user.getEmailAddr()); + recipient.setPhone(user.getMobileNumber()); + HashMap params = new HashMap<>(); + messageHandlerService.publishEvent(UserPasswordChangedEvent.KEY, recipient, params); + } + + @Override + @Transactional + public void updateUser(PortalUserDTO portalUserDTO) { + validateUserUpdate(portalUserDTO); + + PortalUser user = portalUserService.findByLoginId(portalUserDTO.getLoginId()) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자를 찾을 수 없습니다.")); + + // 기본 정보 업데이트 + updateUserBasicInfo(user, portalUserDTO); + portalUserService.updateUser(user); + + log.info("사용자 정보 업데이트 완료: {}", user.getLoginId()); + } + + @Override + @Transactional + public void updateCorporateManager(PortalUserDTO portalUserDTO) { + validateUserUpdate(portalUserDTO); + validateOrgInfo(portalUserDTO); + + PortalUser user = portalUserService.findByLoginId(portalUserDTO.getLoginId()) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자를 찾을 수 없습니다.")); + + // 기본 정보 업데이트 + updateUserBasicInfo(user, portalUserDTO); + + // 법인 정보 업데이트 + PortalOrg org = user.getPortalOrg(); + if (org == null) { + throw new IllegalArgumentException("해당 사용자의 조직 정보를 찾을 수 없습니다."); + } + + updateOrgInformation(org, portalUserDTO); + + // 사용자와 조직 정보 모두 업데이트 + portalUserService.updateUser(user); + portalOrgService.updateOrg(org); + + log.info("법인 관리자 정보 업데이트 완료: {}", user.getLoginId()); + } + + // 사용자 기본 업데이트 + private void updateUserBasicInfo(PortalUser user, PortalUserDTO portalUserDTO) { + user.setUserName(portalUserDTO.getUserName()); + user.setMobileNumber(portalUserDTO.getMobileNumber()); + } + + // 법인 관리자 업데이트 + private void updateOrgInformation(PortalOrg org, PortalUserDTO portalUserDTO) { + if (portalUserDTO.getPortalOrg() == null) { + throw new IllegalArgumentException("법인 정보가 없습니다."); + } + + org.setCompRegNo(portalUserDTO.getPortalOrg().getCompRegNo()); + org.setCorpRegNo(portalUserDTO.getPortalOrg().getCorpRegNo()); + org.setOrgName(portalUserDTO.getPortalOrg().getOrgName()); + org.setCeoName(portalUserDTO.getPortalOrg().getCeoName()); + org.setOrgAddr(portalUserDTO.getPortalOrg().getOrgAddr()); + org.setOrgSectors(portalUserDTO.getPortalOrg().getOrgSectors()); + org.setOrgIndustryType(portalUserDTO.getPortalOrg().getOrgIndustryType()); + org.setServiceName(portalUserDTO.getPortalOrg().getServiceName()); + org.setOrgPhoneNumber(portalUserDTO.getPortalOrg().getOrgPhoneNumber()); + org.setScPhoneNumber(portalUserDTO.getPortalOrg().getScPhoneNumber()); + + if (portalUserDTO.getPortalOrg().getIpWhitelist() != null) { + org.setIpWhitelist(portalUserDTO.getPortalOrg().getIpWhitelist()); + } + } + + @Override + public void withdrawUser(String userId) { + PortalUser user = portalUserService.findById(userId); + + // 법인 관리자 탈퇴 제한 + if (user.getRoleCode() == PortalUserEnums.RoleCode.ROLE_CORP_MANAGER) { + if(portalUserService.checkOrgHasOtherUsers(user.getPortalOrg())){ + throw new IllegalArgumentException("법인 관리자권한을 다른 이용자에게 위임하신 후 탈퇴가 가능합니다."); + } + } + + // 약관 동의 정보 삭제 + agreementsFacade.deleteUserAgreements(user.getId()); + + // 메시지 요청정보 삭제 + messageRequestFacade.deleteUserMessage(user.getUserName(),user.getLoginId()); + + portalUserService.deleteUser(user); + log.info("회원 탈퇴 처리 완료: {}", user.getLoginId()); + } + + // 사용자 정보 업데이트 유효성 확인 + private void validateUserUpdate(PortalUserDTO portalUserDTO) { + if (portalUserDTO == null) { + throw new IllegalArgumentException("사용자 정보가 없습니다."); + } + + if (portalUserDTO.getUserName() == null || portalUserDTO.getUserName().trim().isEmpty()) { + throw new IllegalArgumentException("사용자 이름은 필수 입력 항목입니다."); + } + + if (portalUserDTO.getMobileNumber() == null || portalUserDTO.getMobileNumber().trim().isEmpty()) { + throw new IllegalArgumentException("휴대폰 번호는 필수 입력 항목입니다."); + } + + // 휴대폰 번호 형식 검사 + if (!portalUserService.isValidPhoneNumber(portalUserDTO.getMobileNumber())) { + throw new IllegalArgumentException("유효하지 않은 휴대폰 번호 형식입니다."); + } + } + + // 법인 정보 유효성 확인 + private void validateOrgInfo(PortalUserDTO portalUserDTO) { + if (portalUserDTO.getPortalOrg() == null) { + throw new IllegalArgumentException("법인 정보는 필수입니다."); + } + + if (portalUserDTO.getPortalOrg().getCompRegNo() == null || + portalUserDTO.getPortalOrg().getCompRegNo().trim().isEmpty()) { + throw new IllegalArgumentException("사업자등록번호는 필수 입력 항목입니다."); + } + + if (portalUserDTO.getPortalOrg().getOrgName() == null || + portalUserDTO.getPortalOrg().getOrgName().trim().isEmpty()) { + throw new IllegalArgumentException("법인명은 필수 입력 항목입니다."); + } + } + + // 비밀번호 업데이트 유효성 확인 + private void validatePasswordUpdate(String newPassword, String confirmPassword) { + + if (newPassword == null || newPassword.trim().isEmpty()) { + throw new IllegalArgumentException("새 비밀번호는 필수 입력 항목입니다."); + } + + if (!newPassword.equals(confirmPassword)) { + throw new IllegalArgumentException("새 비밀번호와 확인 비밀번호가 일치하지 않습니다."); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/UserManFacade.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserManFacade.java new file mode 100644 index 0000000..dc7baa0 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserManFacade.java @@ -0,0 +1,231 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.apps.user.dto.PortalOrgDTO; +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.apps.user.mapper.PortalOrgMapper; +import com.eactive.apim.portal.apps.user.mapper.PortalUserMapper; +import com.eactive.apim.portal.common.exception.NotFoundException; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.common.util.StringMaskingUtil; +import com.eactive.apim.portal.invitation.entity.UserInvitation; +import com.eactive.apim.portal.invitation.entity.UserInvitationEnums.InvitationStatus; +import com.eactive.apim.portal.invitation.event.UserInvitationEvent; +import com.eactive.apim.portal.portaluser.event.UserManagerAssignedEvent; +import com.eactive.apim.portal.invitation.repository.UserInvitationRepository; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.RoleCode; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.UserStatus; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; +import com.eactive.apim.portal.template.service.MessageHandlerService; +import com.eactive.apim.portal.template.service.MessageRecipient; +import com.eactive.apim.portal.user.entity.UserLog; +import com.eactive.apim.portal.user.repository.UserLogRepository; +import java.nio.charset.StandardCharsets; +import lombok.RequiredArgsConstructor; +import org.apache.xerces.impl.dv.util.Base64; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +@Transactional +@RequiredArgsConstructor +public class UserManFacade { + + private final PortalUserRepository portalUserRepository; + private final PortalUserMapper portalUserMapper; + private final PortalOrgMapper portalOrgMapper; + private final UserInvitationRepository userInvitationRepository; + private final MessageHandlerService messageHandlerService; + private final UserLogRepository userLogRepository; + + public Page getUsers(PortalOrgDTO userOrg, Pageable pageable) { + return portalUserRepository + .findActiveUsers(portalOrgMapper.toEntity(userOrg), UserStatus.REMOVED, pageable) + .map(user -> { + PortalUserDTO dto = portalUserMapper.toVo(user); + applyMasking(dto, user.getId()); + return dto; + }); + } + + public PortalUserDTO getUser(PortalOrgDTO userOrg, String id) { + PortalUser user = portalUserRepository.findById(id) + .orElseThrow(() -> new NotFoundException("PORTAL USER not found with id: " + id)); + + if (!user.getPortalOrg().getId().equals(userOrg.getId())) { + throw new NotFoundException("PORTAL USER not found with id: " + id); + } + + PortalUserDTO userDto = portalUserMapper.toVo(user); + applyMasking(userDto, user.getId()); + + Optional userLog = userLogRepository.findFirstByLoginIdAndSuccessOrderByLoginTimeDesc( + user.getEmailAddr(), true); + userLog.ifPresent(log -> userDto.setLastLoginDate(log.getLoginTime())); + + return userDto; + } + + private void applyMasking(PortalUserDTO dto, String userId) { + String currentUserId = SecurityUtil.getPortalAuthenticatedUser().getId(); + + dto.setMaskedUserName(StringMaskingUtil.maskName(dto.getUserName(), userId, currentUserId)); + dto.setMaskedEmailAddr(StringMaskingUtil.maskEmail(dto.getEmailAddr(), userId, currentUserId)); + dto.setMaskedMobileNumber(StringMaskingUtil.maskMobileNumber(dto.getMobileNumber(), userId, currentUserId)); + + // Clear unmasked fields for security + dto.setUserName(null); + dto.setEmailAddr(null); + dto.setMobileNumber(null); + } + + public void sendInvitation(PortalUser sender, String emailAddr) { + + //기존 사용자인지 확인 + Optional existingUser = portalUserRepository.findPortalUserByEmailAddr(emailAddr); + + if (existingUser.isPresent()) { + PortalUser user = existingUser.get(); + if (user.getPortalOrg() != null && !user.getRoleCode().equals(RoleCode.ROLE_USER)) { + throw new IllegalArgumentException("기관에 등록된 이용자 입니다."); + } + } + + String token = createInvitation(sender, emailAddr); + + MessageRecipient recipient = new MessageRecipient(); + recipient.setUserId(emailAddr); + HashMap params = new HashMap<>(); + params.put("manager", sender.getUserName()); + params.put("company", sender.getPortalOrg().getOrgName()); + + if (existingUser.isPresent()) { + params.put("url", "signup/decision?invitation=" + Base64.encode(token.getBytes(StandardCharsets.UTF_8))); + } else { + params.put("url", "signup/portalUser?invitation=" + Base64.encode(token.getBytes(StandardCharsets.UTF_8))); + } + + messageHandlerService.publishEvent(UserInvitationEvent.KEY, recipient, params); + } + + public String createInvitation(PortalUser sender, String emailAddr) { + UserInvitation newInvitation = new UserInvitation(); + newInvitation.setAdminId(sender.getId()); + newInvitation.setOrgId(sender.getPortalOrg().getId()); + newInvitation.setInvitationEmail(emailAddr); + + // Set additional required fields + newInvitation.setInvitationDate(LocalDateTime.now()); + newInvitation.setStatus(InvitationStatus.PENDING); + + // Generate a unique token (you might want to use a more secure method) + String token = UUID.randomUUID().toString(); + newInvitation.setToken(token); + + // Set expiration date (e.g., 7 days from now) + newInvitation.setExpiresOn(LocalDateTime.now().plusDays(7)); + + // Save the invitation + userInvitationRepository.save(newInvitation); + return token; + } + + public void assignManager(PortalAuthenticatedUser portalAuthenticatedUser, String targetUserId) { + PortalUser targetUser = portalUserRepository.findById(targetUserId) + .orElseThrow(() -> new NotFoundException("ID [" + targetUserId + "] 사용자를 찾을 수 없습니다. ")); + + if (!targetUser.getPortalOrg().getId().equals(portalAuthenticatedUser.getPortalOrg().getId())) { + throw new IllegalArgumentException("잘 못 된 접근입니다"); + } + + // Find the authenticated user + PortalUser currentUser = portalUserRepository.findById(portalAuthenticatedUser.getId()) + .orElseThrow(() -> new NotFoundException("사용자를 찾을 수 없습니다. ")); + + // 3. Assign role code ROLE_CORP_MANAGER to target User + targetUser.setRoleCode(RoleCode.ROLE_CORP_MANAGER); + + // 4. Assign role code ROLE_CORP_USER to current user + currentUser.setRoleCode(RoleCode.ROLE_CORP_USER); + // Save users + portalUserRepository.save(targetUser); + portalUserRepository.save(currentUser); + + MessageRecipient recipient = new MessageRecipient(); + recipient.setUserId(targetUser.getEmailAddr()); + recipient.setPhone(targetUser.getMobileNumber()); + recipient.setUsername(targetUser.getUserName()); + HashMap params = new HashMap<>(); + + messageHandlerService.publishEvent(UserManagerAssignedEvent.KEY, recipient, params); + + } + + public void cancelInvitation(PortalAuthenticatedUser user, String invitationId) { + UserInvitation invitation = userInvitationRepository.findById(invitationId) + .orElseThrow(() -> new NotFoundException("Invitation not found with id: " + invitationId)); + + if (!invitation.getOrgId().equals(user.getPortalOrg().getId())) { + throw new IllegalArgumentException("Invitation does not belong to the user's organization"); + } + + if (invitation.getStatus() != InvitationStatus.PENDING) { + throw new IllegalStateException("Invitation is not in a cancelable state"); + } + + invitation.setStatus(InvitationStatus.CANCELED); + userInvitationRepository.save(invitation); + + } + + public void inactivateUser(PortalAuthenticatedUser admin, String userId) { + PortalUser user = portalUserRepository.findById(userId) + .orElseThrow(() -> new NotFoundException("ID [" + userId + "] 사용자를 찾을 수 없습니다. ")); + + if (!user.getPortalOrg().getId().equals(admin.getPortalOrg().getId())) { + throw new IllegalArgumentException("잘 못 된 접근입니다"); + } + + user.setUserStatus(UserStatus.ADMINBLOCK); + user.setAccountLockYn("Y"); + portalUserRepository.save(user); + + } + + public void activateUser(PortalAuthenticatedUser admin, String userId) { + PortalUser user = portalUserRepository.findById(userId) + .orElseThrow(() -> new NotFoundException("ID [" + userId + "] 사용자를 찾을 수 없습니다. ")); + + if (!user.getPortalOrg().getId().equals(admin.getPortalOrg().getId())) { + throw new IllegalArgumentException("잘 못 된 접근입니다"); + } + + user.setUserStatus(UserStatus.ACTIVE); + user.setAccountLockYn("N"); + portalUserRepository.save(user); + + } + + public List getPendingUsers(PortalOrgDTO userOrg) { + return userInvitationRepository + .findByOrgIdAndStatus(userOrg.getId(), InvitationStatus.PENDING) + .stream() + .map(invitation -> { + PortalUserDTO dto = portalUserMapper.pendingUserVO(invitation); + dto.setMaskedEmailAddr(StringMaskingUtil.maskEmail(invitation.getInvitationEmail())); + dto.setEmailAddr(null); // Clear unmasked email + return dto; + }) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/UserRegisterFacade.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserRegisterFacade.java new file mode 100644 index 0000000..470df50 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserRegisterFacade.java @@ -0,0 +1,37 @@ +package com.eactive.apim.portal.apps.user.facade; + + +import com.eactive.apim.portal.apps.user.dto.PortalUserRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import com.eactive.apim.portal.invitation.entity.UserInvitation; + +import javax.servlet.http.HttpSession; +import javax.validation.Valid; + +public interface UserRegisterFacade { + + ValidationResponse handleCheckId(String loginId, String registrationType); + + ValidationResponse handleCheckNewEmail(String newLoginId); + + ValidationResponse checkPassword(String password, String loginId, String mobileNumber); + + ValidationResponse checkPasswordMatch(String password, String password2); + + ValidationResponse verifyPassword(String loginId, String confirmPassword); + + ValidationResponse registerNewUser(@Valid UserAgreementDTO agreement, + @Valid PortalUserRegistrationDTO portalUserRegistrationDTO, + BindingResult bindingResult, HttpSession session, Model model); + + ValidationResponse registerInvitedUser(@Valid UserAgreementDTO agreement, + @Valid PortalUserRegistrationDTO portalUserRegistrationDTO, + String invitationToken, + BindingResult bindingResult, HttpSession session, Model model); + + ValidationResponse processInvitation(String action, UserInvitation invitation); + +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/facade/UserRegisterFacadeImpl.java b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserRegisterFacadeImpl.java new file mode 100644 index 0000000..62a25e2 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/facade/UserRegisterFacadeImpl.java @@ -0,0 +1,279 @@ +package com.eactive.apim.portal.apps.user.facade; + +import com.eactive.apim.portal.agreements.entity.AgreementType; +import com.eactive.apim.portal.apps.agreements.service.AgreementsFacade; +import com.eactive.apim.portal.apps.user.dto.PortalUserRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.apps.user.service.BasicValidationService; +import com.eactive.apim.portal.apps.user.service.PortalUserService; +import com.eactive.apim.portal.apps.user.service.UserRegistrationValidationService; +import com.eactive.apim.portal.apps.user.validator.AgreementValidator; +import com.eactive.apim.portal.apps.user.validator.PasswordValidator; +import com.eactive.apim.portal.common.exception.SystemException; +import com.eactive.apim.portal.common.util.EncryptionUtil; +import com.eactive.apim.portal.invitation.entity.UserInvitation; +import com.eactive.apim.portal.invitation.entity.UserInvitationEnums; +import com.eactive.apim.portal.invitation.repository.UserInvitationRepository; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.event.UserEmailActivationEvent; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; +import com.eactive.apim.portal.template.service.MessageHandlerService; +import com.eactive.apim.portal.template.service.MessageRecipient; +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.Optional; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.servlet.http.HttpSession; +import lombok.RequiredArgsConstructor; +import org.apache.xerces.impl.dv.util.Base64; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; + +@Service +@RequiredArgsConstructor +public class UserRegisterFacadeImpl implements UserRegisterFacade { + + private static final Logger logger = LoggerFactory.getLogger(UserRegisterFacadeImpl.class); + + private final BasicValidationService validationService; + private final UserRegistrationValidationService userRegistrationValidationService; + private final PortalUserService portalUserService; + private final AgreementsFacade agreementsFacade; + private final PortalUserRepository portalUserRepository; + private final UserInvitationRepository userInvitationRepository; + private final PasswordValidator passwordValidator; + private final PasswordEncoder passwordEncoder; + private final AgreementValidator agreementValidator; + private final MessageHandlerService messageHandlerService; + private final EncryptionUtil encryptionUtil; + + @Override + public ValidationResponse handleCheckId(String loginId, String registrationType) { + return userRegistrationValidationService.validateEmail(loginId, registrationType, portalUserService); + } + + @Override + public ValidationResponse handleCheckNewEmail(String newLoginId) { + ValidationResponse response = new ValidationResponse(); + + if (!validationService.isValidEmail(newLoginId)) { + response.setValid(false); + response.setMessage("올바른 이메일 형식이 아닙니다."); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + + if (!portalUserService.existsByLoginId(newLoginId)) { + response.setValid(true); + response.setMessage("사용 가능한 이메일입니다."); + response.setShowPopup(true); + response.setPopupType("validEmail"); + return response; + } + + response.setValid(false); + response.setMessage("이미 사용 중인 이메일입니다."); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + + @Override + public ValidationResponse checkPassword(String password, String loginId, String mobileNumber) { + boolean isValid = passwordValidator.isValidPassword(password, loginId, mobileNumber); + String message = isValid ? "유효한 비밀번호입니다." : "비밀번호는 영문/숫자/특수문자 포함 8~20자, 로그인 아이디, 휴대폰 번호, 3자리 이상 연속, 반복 문자 사용 불가능 합니다."; + return new ValidationResponse(isValid, message); + } + + @Override + public ValidationResponse checkPasswordMatch(String password, String password2) { + boolean isMatch = password.equals(password2); + String message = isMatch ? "비밀번호가 일치합니다." : "비밀번호가 일치하지 않습니다."; + return new ValidationResponse(isMatch, message); + } + + @Override + public ValidationResponse verifyPassword(String loginId, String confirmPassword) { + ValidationResponse response = new ValidationResponse(); + + Optional user = portalUserRepository.findPortalUserByEmailAddr(loginId); + if (user != null && passwordEncoder.matches(confirmPassword, user.get().getPasswordHash())) { + response.setValid(true); + response.setMessage("비밀번호가 확인되었습니다."); + } else { + response.setValid(false); + response.setMessage("비밀번호가 일치하지 않습니다."); + } + + return response; + } + + @Override + @Transactional + public ValidationResponse registerNewUser(UserAgreementDTO agreement, + PortalUserRegistrationDTO registrationDTO, + BindingResult bindingResult, + HttpSession session, + Model model) { + + if (!agreementValidator.isAgreementAccepted(agreement)) { + return new ValidationResponse(false,"약관에 모두 동의해야 합니다."); + } + + if (hasValidationErrors(bindingResult, model, registrationDTO)) { + return new ValidationResponse(false,"입력값을 확인해 주세요."); + } + + PortalUser existingUser = portalUserRepository.findByUserNameAndMobileNumber(registrationDTO.getUserName(), registrationDTO.getMobileNumber()); + + if(existingUser != null) { + return new ValidationResponse(false, "가입된 계정이 이미 존재합니다."); + } + // 3. 사용자 등록 ("personal" 등록 유형으로 가정) + PortalUser newUser = portalUserService.registerActiveUser(registrationDTO, "personal"); + if (newUser == null) { + return new ValidationResponse(false,"사용자 등록에 실패했습니다."); + } + + agreementsFacade.saveUserAgreements(newUser.getId(), AgreementType.PRIVACY_COLLECT_IND); + sendEmailActivation(newUser); + return new ValidationResponse(true,"회원가입이 완료되었습니다."); + } + + @Override + @Transactional + public ValidationResponse registerInvitedUser(UserAgreementDTO agreement, + PortalUserRegistrationDTO registrationDTO, + String invitationToken, + BindingResult bindingResult, + HttpSession session, + Model model) { + + if (!agreementValidator.isAgreementAccepted(agreement)) { + return new ValidationResponse(false,"약관에 모두 동의해야 합니다."); + } + + if (hasValidationErrors(bindingResult, model, registrationDTO)) { + return new ValidationResponse(false,"입력값을 확인해 주세요."); + } + + PortalUser existingUser = portalUserRepository.findByUserNameAndMobileNumber(registrationDTO.getUserName(), registrationDTO.getMobileNumber()); + + if(existingUser != null) { + return new ValidationResponse(false, "가입된 계정이 이미 존재합니다."); + } + + try { + + UserInvitation invitation = userInvitationRepository.findByToken(invitationToken) + .orElseThrow(() -> new IllegalArgumentException("유효하지 않은 초대 토큰입니다.")); + + PortalUser newUser = portalUserService.registerInvitedUser(registrationDTO, invitation.getOrgId()); + if (newUser == null) { + return new ValidationResponse(false,"사용자 등록에 실패했습니다."); + } + + agreementsFacade.deleteUserAgreements(newUser.getId()); //이전에 동의한 내역은 삭제 + agreementsFacade.saveUserAgreements(newUser.getId(), AgreementType.PRIVACY_COLLECT_ORG); + + invitation.setStatus(UserInvitationEnums.InvitationStatus.COMPLETED); + invitation.setCompleteDate(LocalDateTime.now()); + userInvitationRepository.save(invitation); + + return new ValidationResponse(true,"회원가입이 완료되었습니다."); + + } catch (Exception e) { + logger.error("초대 사용자 등록 실패", e); + return new ValidationResponse(false, "사용자 등록 중 오류가 발생했습니다: " + e.getMessage()); + } + } + + + private boolean hasValidationErrors(BindingResult bindingResult, Model model, PortalUserRegistrationDTO portalUserRegistrationDTO) { + if (bindingResult.hasErrors()) { + model.addAttribute("agreementErrors", bindingResult.getAllErrors()); + model.addAttribute("portalUser", portalUserRegistrationDTO); + return true; + } + return false; + } + + private void sendEmailActivation(PortalUser registeredUser) { + MessageRecipient recipient = new MessageRecipient(); + recipient.setUsername(registeredUser.getUserName()); + recipient.setUserId(registeredUser.getEmailAddr()); + recipient.setPhone(registeredUser.getMobileNumber()); + + HashMap params = new HashMap<>(); + String tokenValue = registeredUser.getCreatedDate().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + ":" + registeredUser.getId(); + try { + String encToken = encryptionUtil.encrypt(tokenValue); + params.put("token", Base64.encode(encToken.getBytes(StandardCharsets.UTF_8))); + messageHandlerService.publishEvent(UserEmailActivationEvent.KEY, recipient, params); + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) { + throw new SystemException("암호화 모듈 오류"); + } + + } + + @Override + @Transactional + public ValidationResponse processInvitation(String action, UserInvitation invitation) { + try { + if ("accept".equals(action)) { + // 수락 처리 + PortalUser user = portalUserRepository.findPortalUserByEmailAddr(invitation.getInvitationEmail()) + .orElseThrow(() -> new IllegalArgumentException("사용자 정보를 찾을 수 없습니다.")); + + // 서비스 계층에 위임 + portalUserService.updateUserToCorpUser(user, invitation.getOrgId()); + + invitation.setStatus(UserInvitationEnums.InvitationStatus.COMPLETED); + invitation.setCompleteDate(LocalDateTime.now()); + userInvitationRepository.save(invitation); + + agreementsFacade.deleteUserAgreements(user.getId()); + agreementsFacade.saveUserAgreements(user.getId(), AgreementType.PRIVACY_COLLECT_ORG); + + ValidationResponse response = new ValidationResponse(); + response.setValid(true); + response.setMessage("초대가 성공적으로 수락되었습니다. 로그아웃 후 다시 로그인 해 주세요."); + response.setShowPopup(true); + response.setPopupType("success"); + return response; + } else { + // 거절 처리 + invitation.setStatus(UserInvitationEnums.InvitationStatus.REJECTED); + invitation.setCompleteDate(LocalDateTime.now()); + userInvitationRepository.save(invitation); + + ValidationResponse response = new ValidationResponse(); + response.setValid(true); + response.setMessage("초대 거절이 처리되었습니다."); + response.setShowPopup(true); + response.setPopupType("success"); + return response; + } + } catch (Exception e) { + ValidationResponse response = new ValidationResponse(); + response.setValid(false); + response.setMessage(e.getMessage()); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/mapper/PortalOrgMapper.java b/src/main/java/com/eactive/apim/portal/apps/user/mapper/PortalOrgMapper.java new file mode 100644 index 0000000..697804b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/mapper/PortalOrgMapper.java @@ -0,0 +1,24 @@ +package com.eactive.apim.portal.apps.user.mapper; + +import com.eactive.apim.portal.apps.user.dto.PortalOrgDTO; +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring") +@Component +public abstract class PortalOrgMapper implements GenericMapper { + + @Mapping(target = "id", ignore = true) + @Mapping(target = "createdBy", ignore = true) + @Mapping(target = "createdDate", ignore = true) + @Mapping(target = "lastModifiedBy", ignore = true) + @Mapping(target = "lastModifiedDate", ignore = true) + public abstract PortalOrg portalOrgRegistrationDTOToPortalOrg(PortalOrgRegistrationDTO dto); + +// @Mapping(target = "orgName", ignore = true) +// public abstract PortalOrg map(PortalOrgDTO portalOrg); +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/mapper/PortalUserMapper.java b/src/main/java/com/eactive/apim/portal/apps/user/mapper/PortalUserMapper.java new file mode 100644 index 0000000..18ef3bf --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/mapper/PortalUserMapper.java @@ -0,0 +1,30 @@ +package com.eactive.apim.portal.apps.user.mapper; + +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.invitation.entity.UserInvitation; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.eai.data.mapper.GenericMapper; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.springframework.stereotype.Component; + +@Mapper(componentModel = "spring", uses = {PortalOrgMapper.class}) +@Component +public abstract class PortalUserMapper implements GenericMapper { + + public abstract PortalAuthenticatedUser portalUserToAuthenticatedUser(PortalUser portalUser); + + @Mapping(target = "emailAddr", source = "invitationEmail") + public abstract PortalUserDTO pendingUserVO(UserInvitation invitation); + + public PortalUserDTO toDTO(PortalUser portalUser) { + if(portalUser == null) return null; + + PortalUserDTO dto = new PortalUserDTO(); + dto.setLoginId(portalUser.getLoginId()); + dto.setCreatedDate(portalUser.getCreatedDate()); + + return dto; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/repository/PortalOrgRepository.java b/src/main/java/com/eactive/apim/portal/apps/user/repository/PortalOrgRepository.java new file mode 100644 index 0000000..63fd9aa --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/repository/PortalOrgRepository.java @@ -0,0 +1,19 @@ +package com.eactive.apim.portal.apps.user.repository; + +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import com.eactive.apim.portal.portalorg.entity.PortalOrgEnums; +import com.eactive.eai.data.jpa.BaseRepository; +import com.eactive.eai.rms.data.EMSDataSource; + +import java.util.Optional; + +@EMSDataSource +public interface PortalOrgRepository extends BaseRepository { + + Optional findByCompRegNo(String compRegNo); + + long countByOrgStatusAndApprovalStatus(PortalOrgEnums.OrgStatus status, PortalOrgEnums.ApprovalStatus approvalStatus); + + Optional findById(String orgId); +} + diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/BasicValidationService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/BasicValidationService.java new file mode 100644 index 0000000..43f74a6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/BasicValidationService.java @@ -0,0 +1,87 @@ +package com.eactive.apim.portal.apps.user.service; + +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import java.util.List; +import java.util.regex.Pattern; + +@Service +public class BasicValidationService { + + private static final String EMAIL_PATTERN = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$"; + private static final Pattern EMAIL_REGEX = Pattern.compile(EMAIL_PATTERN); + + public boolean isValidBusinessNumber(String compRegNo) { + String businessNumberPattern = "\\d{10}"; + return compRegNo.matches(businessNumberPattern); + } + + public boolean isValidCorpRegNo(String corpRegNo) { + String corpRegNoPattern = "\\d{13}"; + return corpRegNo.matches(corpRegNoPattern); + } + + public boolean isValidPhoneNumber(String phoneNumber) { + if (phoneNumber == null || phoneNumber.trim().isEmpty()) { + return false; + } + String phoneNumberPattern = "^(국번없음|\\d{2,4})-\\d{3,4}-\\d{4}$"; + return phoneNumber.matches(phoneNumberPattern); + } + + public boolean isFileUploaded(List files) { + return files != null && !files.isEmpty(); + } + + public boolean isValidIpWhitelist(String ipWhitelist) { + String ipPattern = "^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$"; + String[] ips = ipWhitelist.split(","); + for (String ip : ips) { + if (!ip.trim().matches(ipPattern)) { + return false; + } + } + return true; + } + + public boolean isValidEmail(String email) { + if (email == null || email.trim().isEmpty()) { + return false; + } + + if (!EMAIL_REGEX.matcher(email).matches()) { + return false; + } + + String[] parts = email.split("@"); + if (parts.length != 2) { + return false; + } + + String localPart = parts[0]; + String domain = parts[1]; + + if (email.length() > 254 || localPart.length() > 64 || + localPart.length() < 1 || domain.length() < 1) { + return false; + } + + String[] domainParts = domain.split("\\."); + if (domainParts.length < 2) { + return false; + } + + for (String part : domainParts) { + if (part.isEmpty() || part.length() > 63 || + part.startsWith("-") || part.endsWith("-")) { + return false; + } + } + + return true; + } + + public boolean isNotEmpty(String value) { + return value != null && !value.trim().isEmpty(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/MessageRequestService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/MessageRequestService.java new file mode 100644 index 0000000..b174916 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/MessageRequestService.java @@ -0,0 +1,41 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.template.entity.MessageRequest; +import com.eactive.apim.portal.template.entity.MessageRequestEnums; +import com.eactive.apim.portal.template.repository.MessageRequestRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; + +@Service +@Transactional +@RequiredArgsConstructor +public class MessageRequestService { + + private final MessageRequestRepository messageRequestRepository; + + public MessageRequest createMessageRequest(String messageCodeStr, String username, String email, String phone) { + MessageRequest messageRequest = new MessageRequest(); + + // String을 MessageCode enum으로 변환 + MessageRequestEnums.MessageCode messageCode = MessageRequestEnums.MessageCode.valueOf(messageCodeStr); + + // MessageRequest 설정 + messageRequest.setMessageCode(messageCode); + messageRequest.setSubject(messageCode.getDescription()); + messageRequest.setUsername(username); + messageRequest.setEmail(email); + messageRequest.setPhone(phone); + messageRequest.setRequestDate(LocalDateTime.now()); + messageRequest.setRequestStatus("PENDING"); + + return messageRequestRepository.save(messageRequest); + } + + @Transactional(readOnly = true) + public void deleteMessageRequestsByUser(String username, String email) { + messageRequestRepository.deleteByUsernameAndEmail(username, email); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/PasswordService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/PasswordService.java new file mode 100644 index 0000000..7e86f6b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/PasswordService.java @@ -0,0 +1,124 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.common.dto.PasswordValidationDTO; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.UserPasswordHistory; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; +import com.eactive.apim.portal.portaluser.repository.UserPasswordHistoryRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; + +import javax.validation.ConstraintViolation; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +@Service +@RequiredArgsConstructor +public class PasswordService { + + private final PortalUserRepository portalUserRepository; + private final UserPasswordHistoryRepository passwordHistoryRepository; + private final PasswordEncoder passwordEncoder; + + private static final int PASSWORD_HISTORY_LIMIT = 5; + private final LocalValidatorFactoryBean validator; + + @Transactional + public PortalUser updatePassword(String loginId, String newPassword, String confirmPassword) { + PortalUser user = portalUserRepository.findByLoginId(loginId) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자를 찾을 수 없습니다.")); + + validatePasswordUpdate(user, newPassword, confirmPassword); + checkPasswordHistory(user.getLoginId(), newPassword); + + List histories = passwordHistoryRepository.findRecentPasswordsByUserId(user.getId()); + if(histories.isEmpty()) { + savePasswordHistory(user.getId(), user.getPasswordHash()); + } + + // 새 비밀번호 설정 + String newPasswordHash = passwordEncoder.encode(newPassword); + user.setPasswordHash(newPasswordHash); + portalUserRepository.save(user); + + savePasswordHistory(user.getId(), newPasswordHash); + + return user; + } + + private void validatePasswordUpdate(PortalUser user, String newPassword, String confirmPassword) { + if (passwordEncoder.matches(newPassword, user.getPasswordHash())) { + throw new IllegalArgumentException("현재 비밀번호와 일치합니다. 새 비밀번호를 입력해 주세요."); + } + + if (!newPassword.equals(confirmPassword)) { + throw new IllegalArgumentException("새 비밀번호와 확인 비밀번호가 일치하지 않습니다."); + } + PasswordValidationDTO validationDTO = new PasswordValidationDTO(); + validationDTO.setPassword(newPassword); + validationDTO.setLoginId(user.getLoginId()); + validationDTO.setMobile(user.getMobileNumber()); + + Set> violations = validator.validate(validationDTO); + if (!violations.isEmpty()) { + throw new IllegalArgumentException(violations.iterator().next().getMessage()); + } + } + + private void checkPasswordHistory(String userId, String newPassword) { + List passwordHistories = passwordHistoryRepository.findRecentPasswordsByUserId(userId); + + for (UserPasswordHistory history : passwordHistories) { + if (passwordEncoder.matches(newPassword, history.getPasswordHash())) { + throw new IllegalArgumentException("최근 5회 이내에 사용한 비밀번호는 사용할 수 없습니다."); + } + } + } + + private void savePasswordHistory(String userId, String passwordHash) { + UserPasswordHistory newHistory = new UserPasswordHistory(); + newHistory.setUserId(userId); + newHistory.setPasswordHash(passwordHash); + newHistory.setChangeDate(LocalDateTime.now()); + newHistory.setCreatedBy(userId); + newHistory.setCreatedDate(LocalDateTime.now()); + + List histories = passwordHistoryRepository.findRecentPasswordsByUserId(userId); + + // 히스토리가 5개 초과 시 가장 오래된 것 삭제 + if (histories.size() > PASSWORD_HISTORY_LIMIT) { + List historyToDelete = histories.subList(PASSWORD_HISTORY_LIMIT, histories.size()); + for (UserPasswordHistory history : historyToDelete) { + passwordHistoryRepository.delete(history); + } + } + + passwordHistoryRepository.save(newHistory); + } + + private boolean isValidPassword(String password) { + if (password.length() < 8) { + return false; + } + + boolean hasLetter = false; + boolean hasDigit = false; + boolean hasSpecial = false; + + for (char c : password.toCharArray()) { + if (Character.isLetter(c)) { + hasLetter = true; + } else if (Character.isDigit(c)) { + hasDigit = true; + } else if (!Character.isWhitespace(c)) { + hasSpecial = true; + } + } + + return hasLetter && hasDigit && hasSpecial; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/PortalOrgService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalOrgService.java new file mode 100644 index 0000000..ee2cae8 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalOrgService.java @@ -0,0 +1,61 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.apps.user.mapper.PortalOrgMapper; +import com.eactive.apim.portal.apps.user.repository.PortalOrgRepository; +import com.eactive.apim.portal.file.entity.FileInfo; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import com.eactive.apim.portal.portalorg.entity.PortalOrgEnums.ApprovalStatus; +import com.eactive.apim.portal.portalorg.entity.PortalOrgEnums.OrgStatus; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class PortalOrgService { + + private final PortalOrgRepository portalOrgRepository; + private final PortalOrgMapper portalOrgMapper; + + public PortalOrg updateOrg(PortalOrg org) { + return portalOrgRepository.save(org); + } + + public int getActiveApprovedOrgCount() { + return (int) portalOrgRepository.countByOrgStatusAndApprovalStatus(OrgStatus.ACTIVE, ApprovalStatus.COMPLETED); + } + + @Transactional + public PortalOrg registerOrgFromDTOWithFile(PortalOrgRegistrationDTO orgDTO, FileInfo file) { + // 매퍼를 사용하여 DTO를 엔티티로 변환 + PortalOrg newOrg = portalOrgMapper.portalOrgRegistrationDTOToPortalOrg(orgDTO); + + // ID 수동 할당 + newOrg.setId(java.util.UUID.randomUUID().toString()); + + // 파일 정보 설정 + if (file != null) { + newOrg.setCompRegFile(file.getFileId()); + } + + // 초기 상태 설정 + setInitialOrgStatus(newOrg); + + return portalOrgRepository.save(newOrg); + } + + // 기관 승인 처리 + public void registerActiveOrg(PortalOrg org) { + org.setOrgStatus(OrgStatus.ACTIVE); + org.setApprovalStatus(ApprovalStatus.COMPLETED); + portalOrgRepository.save(org); + } + + // 기관 초기 상태 설정 + private void setInitialOrgStatus(PortalOrg org) { + org.setOrgStatus(OrgStatus.READY); + org.setApprovalStatus(ApprovalStatus.PENDING); + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserAuthService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserAuthService.java new file mode 100644 index 0000000..ccf595b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserAuthService.java @@ -0,0 +1,174 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.apps.user.dto.PortalUserDTO; +import com.eactive.apim.portal.apps.user.mapper.PortalUserMapper; +import com.eactive.apim.portal.common.exception.SystemException; +import com.eactive.apim.portal.common.exception.UserNotFoundException; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.EncryptionUtil; +import com.eactive.apim.portal.common.util.StringMaskingUtil; +import com.eactive.apim.portal.config.PortalProperties; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.RoleCode; +import com.eactive.apim.portal.portaluser.event.UserEmailActivationEvent; +import com.eactive.apim.portal.portaluser.event.UserPasswordResetEvent; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; +import com.eactive.apim.portal.template.entity.MessageRequest; +import com.eactive.apim.portal.template.entity.MessageRequestEnums; +import com.eactive.apim.portal.template.repository.MessageRequestRepository; +import com.eactive.apim.portal.template.service.MessageHandlerService; +import com.eactive.apim.portal.template.service.MessageRecipient; + +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.List; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import lombok.RequiredArgsConstructor; +import org.apache.xerces.impl.dv.util.Base64; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class PortalUserAuthService implements UserDetailsService { + + private final PortalUserRepository portalUserRepository; + private final PortalUserMapper portalUserMapper; + private final PortalProperties portalProperties; + private final PasswordEncoder passwordEncoder; + private final MessageHandlerService messageHandlerService; + private final MessageRequestRepository messageRequestRepository; + private final EncryptionUtil encryptionUtil; + + @Override + @Transactional(noRollbackFor = UsernameNotFoundException.class) + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + try { + PortalUser portalUser = findByEmailAddr(username); + RoleCode userRole = portalUser.getRoleCode() == null ? RoleCode.ROLE_USER : portalUser.getRoleCode(); + List roles = portalProperties.getPortalSecurity().get(userRole); + PortalAuthenticatedUser authenticatedUser = portalUserMapper.portalUserToAuthenticatedUser(portalUser); + + authenticatedUser.getAuthorities().add(new SimpleGrantedAuthority(userRole.name())); + + roles.forEach(role -> authenticatedUser.getAuthorities().add(new SimpleGrantedAuthority(role))); + + return authenticatedUser; + + } catch (UserNotFoundException e) { + throw new UsernameNotFoundException("입력하신 사용자 정보가 올바르지 않습니다. 다시 확인해 주세요."); + } + } + + public PortalUserDTO findUsersByNameAndMobile(String userName, String mobileNumber) { + try { + PortalUser user = portalUserRepository.findByUserNameAndMobileNumber(userName, mobileNumber); + if (user == null) { + throw new UserNotFoundException("입력하신 사용자 정보가 올바르지 않습니다. 다시 확인해 주세요."); + } + PortalUserDTO dto = portalUserMapper.toDTO(user); + dto.setMaskedEmailAddr(StringMaskingUtil.maskEmail(dto.getLoginId())); + + dto.setLoginId(null); + return dto; + + } catch (UserNotFoundException e) { + throw e; + } catch (Exception e) { + throw new SystemException("사용자 정보 조회 중 오류가 발생했습니다."); + } + } + + public PortalUser findByEmailAddr(String emailAddr) { + return portalUserRepository.findPortalUserByEmailAddr(emailAddr).orElseThrow(() -> new UserNotFoundException("USER_NOT_FOUND_MESSAGE")); + } + + public void initializePassword(String loginId, String userName, String mobileNumber) { + + PortalUser portalUser = portalUserRepository.findByLoginIdAndUserNameAndMobileNumber(loginId, userName, mobileNumber).orElseThrow(() -> new UserNotFoundException("일치하는 사용자 정보를 찾을 수 없습니다.")); + + String tempPassword = EncryptionUtil.generateNewPassword(); + portalUser.setPasswordHash(passwordEncoder.encode(tempPassword)); + + portalUserRepository.save(portalUser); + HashMap params = new HashMap<>(); + params.put("tempPassword", tempPassword); + MessageRecipient recipient = createMessageRecipient(portalUser); + messageHandlerService.publishEvent(UserPasswordResetEvent.KEY, recipient, params); + } + + public void resendVerificationEmail(String loginId) { + + PortalUser user = portalUserRepository.findByLoginId(loginId) + .orElseThrow(() -> new IllegalArgumentException("입력하신 사용자 정보가 올바르지 않습니다. 다시 확인해 주세요.")); + + if (user.getUserStatus().equals(PortalUserEnums.UserStatus.ACTIVE)) { + throw new IllegalArgumentException("이미 인증이 완료된 계정입니다."); + } + + // Enum을 직접 전달 + List messageRequests = messageRequestRepository.findByEmailAndMessageCode( + user.getLoginId(), MessageRequestEnums.MessageCode.USER_ACTIVATION + ); + + if (!messageRequests.isEmpty()) { + messageRequestRepository.deleteAll(messageRequests); + } + + HashMap params = new HashMap<>(); + String tokenValue = user.getCreatedDate().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + ":" + user.getId(); + + try { + String encToken = encryptionUtil.encrypt(tokenValue); + params.put("token", Base64.encode(encToken.getBytes(StandardCharsets.UTF_8))); + MessageRecipient recipient = createMessageRecipient(user); + messageHandlerService.publishEvent(UserEmailActivationEvent.KEY, recipient, params); + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) { + throw new SystemException("암호화 모듈 오류"); + } + } + + private MessageRecipient createMessageRecipient(PortalUser user) { + MessageRecipient recipient = new MessageRecipient(); + recipient.setUsername(user.getUserName()); + recipient.setUserId(user.getEmailAddr()); + recipient.setPhone(user.getMobileNumber()); + return recipient; + } + + @Transactional + public void reactivateDormantAccount(String loginId, String password, String mobileNumber) { + try { + PortalUser portalUser = portalUserRepository.findByLoginIdAndMobileNumber(loginId, mobileNumber) + .orElseThrow(() -> new UserNotFoundException("입력하신 사용자 정보가 올바르지 않습니다. 다시 확인해 주세요.")); + + if (!passwordEncoder.matches(password, portalUser.getPasswordHash())) { + throw new UserNotFoundException("입력하신 사용자 정보가 올바르지 않습니다. 다시 확인해 주세요."); + } + + if (!PortalUserEnums.UserStatus.DORMANT.equals(portalUser.getUserStatus())) { + throw new IllegalStateException("장기 미사용 상태의 계정이 아닙니다."); + } + + portalUser.setUserStatus(PortalUserEnums.UserStatus.ACTIVE); + portalUserRepository.save(portalUser); + + } catch (UserNotFoundException e) { + throw e; + } catch (Exception e) { + throw new SystemException("계정 활성화 처리 중 오류가 발생 했습니다."); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserLogService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserLogService.java new file mode 100644 index 0000000..645b90d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserLogService.java @@ -0,0 +1,52 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.user.entity.UserLog; +import com.eactive.apim.portal.user.repository.UserLogRepository; +import java.time.LocalDateTime; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class PortalUserLogService { + + private final UserLogRepository userLogRepository; + + public PortalUserLogService(UserLogRepository userLogRepository) { + this.userLogRepository = userLogRepository; + } + + public void logSuccess(String userId, String ip, String sessionId) { + UserLog log = new UserLog(); + log.setLoginId(userId); + log.setLoginTime(LocalDateTime.now()); + log.setIp(ip); + log.setSessionId(sessionId); + log.setSuccess(true); + + userLogRepository.save(log); + } + + public void logFailure(String userId, String ip, String sessionId) { + UserLog log = new UserLog(); + log.setLoginId(userId); + log.setLoginTime(LocalDateTime.now()); + log.setIp(ip); + log.setSessionId(sessionId); + log.setSuccess(false); + + userLogRepository.save(log); + } + + @Transactional + public void logLogout(String userId, String ip, String sessionId) { + UserLog log = new UserLog(); + log.setLoginId(userId); + log.setLogoutTime(LocalDateTime.now()); + log.setIp(ip); + log.setSessionId(sessionId); + log.setSuccess(true); + + userLogRepository.save(log); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserPrivacyAgreementService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserPrivacyAgreementService.java new file mode 100644 index 0000000..a6282be --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserPrivacyAgreementService.java @@ -0,0 +1,70 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.portaluser.entity.PortalUserPrivacyAgreement; +import com.eactive.apim.portal.portaluser.repository.PortalUserPrivacyAgreementRepository; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; + +@Slf4j +@Service +@Transactional +@RequiredArgsConstructor +public class PortalUserPrivacyAgreementService { + + private final PortalUserPrivacyAgreementRepository userPrivacyAgreementRepository; + + // 약관 동의 정보를 저장하거나 업데이트 + @Transactional + public void saveOrUpdateAgreements(String userId, String termsType, int revision) { + Optional existingAgreement = + userPrivacyAgreementRepository.findByCreatedByAndTermsType(userId, termsType); + + PortalUserPrivacyAgreement agreement = existingAgreement + .map(existing -> updateAgreement(existing, userId, revision)) + .orElseGet(() -> createAgreement(userId, termsType, revision)); + + userPrivacyAgreementRepository.save(agreement); + + } + + // 신규 약관 동의 엔티티를 생성 + private PortalUserPrivacyAgreement createAgreement(String userId, String termsType, int revision) { + PortalUserPrivacyAgreement agreement = new PortalUserPrivacyAgreement(); + agreement.setTermsType(termsType); + agreement.setTermsVersion(revision); + agreement.setAgreementDate(LocalDateTime.now()); + agreement.setCreatedBy(userId); + agreement.setLastModifiedBy(userId); + return agreement; + } + + // 기존 약관 동의 엔티티를 업데이트 + private PortalUserPrivacyAgreement updateAgreement(PortalUserPrivacyAgreement agreement, + String userId, + int revision) { + agreement.setTermsVersion(revision); + agreement.setAgreementDate(LocalDateTime.now()); + agreement.setLastModifiedBy(userId); + return agreement; + } + + + @Transactional + public void deleteUserAgreements(String userId) { + // createdBy 대신 userId(PK)로 조회하도록 수정 + List agreements = + userPrivacyAgreementRepository.findAllByCreatedBy(userId); // 메소드명 변경 필요 + + if (!agreements.isEmpty()) { + userPrivacyAgreementRepository.deleteAll(agreements); + log.info("사용자 약관 동의 정보 삭제 완료. userId: {}, count: {}", + userId, agreements.size()); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserService.java new file mode 100644 index 0000000..85ba21f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserService.java @@ -0,0 +1,196 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.apps.user.dto.PortalUserRegistrationDTO; +import com.eactive.apim.portal.apps.user.repository.PortalOrgRepository; +import com.eactive.apim.portal.portalorg.entity.PortalOrg; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.ApprovalStatus; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.RoleCode; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.UserStatus; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class PortalUserService { + + private final PortalUserRepository portalUserRepository; + private final PortalOrgRepository portalOrgRepository; + private final PasswordEncoder passwordEncoder; + + public PortalUser findById(String userId) { + return portalUserRepository.findById(userId).orElse(null); + } + + public Optional findByLoginId(String loginId) { + return portalUserRepository.findByLoginId(loginId); + } + + public boolean existsByLoginId(String loginId) { + return portalUserRepository.existsByLoginId(loginId); + } + + public boolean checkOrgHasOtherUsers(PortalOrg portalOrg) { + return portalUserRepository.countByPortalOrg(portalOrg) > 1; + } + + public PortalUser registerInvitedUser(PortalUserRegistrationDTO userDTO, String orgId) { + PortalUser newUser = new PortalUser(); + mapDtoToEntity(newUser, userDTO); + + // PortalOrg 설정 + PortalOrg portalOrg = portalOrgRepository.findById(orgId) + .orElseThrow(() -> new IllegalArgumentException("유효하지 않은 법인 정보입니다.")); + newUser.setPortalOrg(portalOrg); + + // 상태 설정 + newUser.setUserStatus(PortalUserEnums.UserStatus.ACTIVE); + newUser.setApprovalStatus(PortalUserEnums.ApprovalStatus.COMPLETED); + + // 역할 설정 + newUser.setRoleCode(PortalUserEnums.RoleCode.ROLE_CORP_USER); + + // 기타 필요한 설정 + newUser.setLoginFailureCount(0); + newUser.setAccountLockYn("N"); + + return portalUserRepository.save(newUser); + } + + private void setUserRole(PortalUser user, String registrationType) { + if ("personal".equals(registrationType)) { + user.setRoleCode(PortalUserEnums.RoleCode.ROLE_USER); + } else if ("corporate".equals(registrationType)) { + user.setRoleCode(PortalUserEnums.RoleCode.ROLE_CORP_MANAGER); + } else { + throw new IllegalArgumentException("Invalid registration type: " + registrationType); + } + } + + // 승인 대기 상태. + public PortalUser registerActiveUser(PortalUserRegistrationDTO newUserDTO, String registrationType) { + PortalUser newUser = new PortalUser(); + mapDtoToEntity(newUser, newUserDTO); + setUserProperties(newUser); + newUser.setUserStatus(UserStatus.READY); + newUser.setApprovalStatus(ApprovalStatus.COMPLETED); + setUserRole(newUser, registrationType); + portalUserRepository.save(newUser); + return newUser; + } + + private void setUserProperties(PortalUser user) { + + user.setLoginFailureCount(0); + user.setAccountLockYn("N"); + } + + public PortalUser createUserWithOrg(PortalUserRegistrationDTO userDTO, PortalOrg org, String registrationType) { + PortalUser newUser = new PortalUser(); + mapDtoToEntity(newUser, userDTO); + newUser.setPortalOrg(org); + setUserProperties(newUser); + newUser.setUserStatus(UserStatus.READY); + newUser.setApprovalStatus(ApprovalStatus.COMPLETED); + setUserRole(newUser, registrationType); + return portalUserRepository.save(newUser); + } + + private void mapDtoToEntity(PortalUser user, PortalUserRegistrationDTO dto) { + user.setLoginId(dto.getLoginId()); + user.setUserName(dto.getUserName()); + user.setPasswordHash(passwordEncoder.encode(dto.getPassword())); + user.setMobileNumber(dto.getMobileNumber()); + user.setEmailAddr(dto.getLoginId()); + } + + /** + * @param userId + * @return 추가 승인 필요 여부 + */ + public boolean activateUser(String userId) { + PortalUser user = portalUserRepository.findById(userId) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자를 찾을 수 없습니다.")); + if(user.getUserStatus().equals(UserStatus.READY)) { + user.setUserStatus(UserStatus.ACTIVE); + portalUserRepository.save(user); + } + return user.getRoleCode().equals(RoleCode.ROLE_CORP_MANAGER); + } + + public PortalUser updateUserToCorpUser(PortalUser user, String orgId) { + PortalOrg portalOrg = portalOrgRepository.findById(orgId) + .orElseThrow(() -> new IllegalArgumentException("유효하지 않은 법인 정보입니다.")); + + user.setPortalOrg(portalOrg); + user.setRoleCode(PortalUserEnums.RoleCode.ROLE_CORP_USER); + return portalUserRepository.save(user); + } + + public boolean isValidPhoneNumber(String phoneNumber) { + if (phoneNumber.contains("-")) { + phoneNumber = phoneNumber.replaceAll("-", ""); + } + String phonePattern = "^\\d{8,11}$"; + return phoneNumber.matches(phonePattern); + } + + public boolean checkPassword(String loginId, String inputPassword) { + PortalUser user = portalUserRepository.findByLoginId(loginId) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자를 찾을 수 없습니다.")); + return passwordEncoder.matches(inputPassword, user.getPasswordHash()); + } + + public PortalUser updateUser(PortalUser user) { + if (user == null) { + throw new IllegalArgumentException("사용자 정보가 없습니다."); + } + + // 사용자 존재 여부 확인 + if (!portalUserRepository.existsById(user.getId())) { + throw new IllegalArgumentException("존재하지 않는 사용자입니다."); + } + + // 기존 사용자 정보 조회 + PortalUser existingUser = portalUserRepository.findById(user.getId()) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자를 찾을 수 없습니다.")); + + // 변경하면 안 되는 정보들은 기존 값 유지 + user.setLoginId(existingUser.getLoginId()); + user.setPasswordHash(existingUser.getPasswordHash()); + user.setEmailAddr(existingUser.getEmailAddr()); + user.setLoginFailureCount(existingUser.getLoginFailureCount()); + user.setAccountLockYn(existingUser.getAccountLockYn()); + user.setUserStatus(existingUser.getUserStatus()); + user.setApprovalStatus(existingUser.getApprovalStatus()); + user.setPasswordChangeDate(existingUser.getPasswordChangeDate()); + user.setCreatedDate(existingUser.getCreatedDate()); + + // 업데이트된 사용자 정보 저장 + return portalUserRepository.save(user); + } + + public void deleteUser(PortalUser user) { + LocalDateTime now = LocalDateTime.now(); + String withdrawalDate = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")); + + user.setLoginId(user.getId() + "-d" + withdrawalDate); + user.setEmailAddr(user.getId() + "-d" + withdrawalDate); + user.setUserName("삭제된사용자"); + user.setMobileNumber(""); + user.setPasswordHash(""); + + user.setUserStatus(PortalUserEnums.UserStatus.REMOVED); + + portalUserRepository.save(user); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/UserRegistrationValidationService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/UserRegistrationValidationService.java new file mode 100644 index 0000000..30fd379 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/UserRegistrationValidationService.java @@ -0,0 +1,109 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class UserRegistrationValidationService { + private final BasicValidationService basicValidationService; + + public UserRegistrationValidationService(BasicValidationService basicValidationService) { + this.basicValidationService = basicValidationService; + } + + public boolean isValidOrgRegistration(PortalOrgRegistrationDTO orgDTO) { + return isValidOrgInfo(orgDTO) && + isValidRequiredFields(orgDTO) && + isValidIpWhitelistIfExists(orgDTO) && + isValidUserInfo(orgDTO); + } + + private boolean isValidOrgInfo(PortalOrgRegistrationDTO orgDTO) { + return basicValidationService.isValidBusinessNumber(orgDTO.getCompRegNo()) && + basicValidationService.isValidCorpRegNo(orgDTO.getCorpRegNo()) && + basicValidationService.isValidPhoneNumber(orgDTO.getOrgPhoneNumber()) && + basicValidationService.isValidPhoneNumber(orgDTO.getScPhoneNumber()); + } + + private boolean isValidRequiredFields(PortalOrgRegistrationDTO orgDTO) { + return basicValidationService.isNotEmpty(orgDTO.getOrgName()) && + basicValidationService.isNotEmpty(orgDTO.getCeoName()) && + basicValidationService.isNotEmpty(orgDTO.getOrgAddr()) && + basicValidationService.isNotEmpty(orgDTO.getServiceName()); + } + + private boolean isValidIpWhitelistIfExists(PortalOrgRegistrationDTO orgDTO) { + if (orgDTO.getIpWhitelist() != null && !orgDTO.getIpWhitelist().trim().isEmpty()) { + return basicValidationService.isValidIpWhitelist(orgDTO.getIpWhitelist()); + } + return true; + } + + private boolean isValidUserInfo(PortalOrgRegistrationDTO orgDTO) { + return basicValidationService.isValidEmail(orgDTO.getLoginId()) && + basicValidationService.isNotEmpty(orgDTO.getUserName()) && + basicValidationService.isValidPhoneNumber(orgDTO.getMobileNumber()); + } + + public ValidationResponse validateEmail(String loginId, String registrationType, + PortalUserService portalUserService) { + ValidationResponse response = new ValidationResponse(); + + // 이메일 형식 검증 + if (!basicValidationService.isValidEmail(loginId)) { + response.setValid(false); + response.setMessage("올바른 이메일 형식이 아닙니다."); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + + // 신규 사용자 확인 + if (!portalUserService.existsByLoginId(loginId)) { + response.setValid(true); + response.setMessage("사용 가능한 이메일입니다."); + response.setShowPopup(true); + response.setPopupType("corporate".equals(registrationType) ? "newUser" : "validEmail"); + return response; + } + + // 기존 사용자 처리 + Optional userOpt = portalUserService.findByLoginId(loginId); + if (userOpt.isPresent()) { + PortalUser user = userOpt.get(); + boolean isPersonalAccount = user.getRoleCode() == PortalUserEnums.RoleCode.ROLE_USER; + boolean isCorporateAccount = user.getRoleCode() == PortalUserEnums.RoleCode.ROLE_CORP_USER; + + if ("corporate".equals(registrationType)) { + if (isPersonalAccount) { + response.setValid(false); + response.setMessage("이메일이 개인 회원으로 등록되어 있습니다. 법인 계정으로 전환하시겠습니까? " + + " *법인회원 전환은 반드시 법인이메일 주소로 해 주세요. 개인이메일로 전환 신청시, 법인 승인이 거절 될 수 있습니다."); + response.setPersonalAccount(true); + response.setShowPopup(true); + response.setPopupType("conversionOrChange"); + return response; + } else if (isCorporateAccount) { + response.setValid(false); + response.setMessage("이미 법인 사용자로 등록되어 있습니다."); + response.setCorporateAccount(true); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + } + } + + // 기본 에러 응답 + response.setValid(false); + response.setMessage("이미 사용 중인 이메일입니다."); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/ValidationService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/ValidationService.java new file mode 100644 index 0000000..d758eed --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/ValidationService.java @@ -0,0 +1,169 @@ +package com.eactive.apim.portal.apps.user.service; + +import com.eactive.apim.portal.apps.user.dto.PortalOrgRegistrationDTO; +import com.eactive.apim.portal.apps.user.dto.ValidationResponse; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Optional; + +@Service +public class ValidationService { + + // 사업자 등록번호 유효성 검사 + public boolean isValidBusinessNumber(String compRegNo) { + String businessNumberPattern = "\\d{10}"; // 10자리 숫자 + return compRegNo.matches(businessNumberPattern); + } + + // 법인 등록번호 유효성 검사 + public boolean isValidCorpRegNo(String corpRegNo) { + String corpRegNoPattern = "\\d{13}"; // 13자리 숫자 + return corpRegNo.matches(corpRegNoPattern); + } + + // 전화번호 유효성 검사 + public boolean isValidPhoneNumber(String phoneNumber) { + if (phoneNumber == null || phoneNumber.trim().isEmpty()) { + return false; + } + + // 하이픈이 포함된 형식 검사 ("없음" 또는 2~4자리)-3~4자리-4자리 + String phoneNumberPattern = "^(국번없음|\\d{2,4})-\\d{3,4}-\\d{4}$"; + return phoneNumber.matches(phoneNumberPattern); + } + + // 파일 업로드 검증 + public boolean isFileUploaded(List files) { + return files != null && !files.isEmpty(); + } + + // IP 화이트리스트 유효성 검사 + public boolean isValidIpWhitelist(String ipWhitelist) { + String ipPattern = "^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$"; + String[] ips = ipWhitelist.split(","); + for (String ip : ips) { + if (!ip.trim().matches(ipPattern)) { + return false; + } + } + return true; + } + + // 기관 및 사용자 입력 데이터 유효성 검증 + public boolean isValidOrgRegistration(PortalOrgRegistrationDTO orgDTO) { + return isValidOrgInfo(orgDTO) && + isValidRequiredFields(orgDTO) && + isValidIpWhitelistIfExists(orgDTO) && + isValidUserInfo(orgDTO); + } + + private boolean isValidOrgInfo(PortalOrgRegistrationDTO orgDTO) { + return isValidBusinessNumber(orgDTO.getCompRegNo()) && + isValidCorpRegNo(orgDTO.getCorpRegNo()) && + isValidPhoneNumber(orgDTO.getOrgPhoneNumber()) && + isValidPhoneNumber(orgDTO.getScPhoneNumber()); + } + + private boolean isValidRequiredFields(PortalOrgRegistrationDTO orgDTO) { + return isNotEmpty(orgDTO.getOrgName()) && + isNotEmpty(orgDTO.getCeoName()) && + isNotEmpty(orgDTO.getOrgAddr()) && + isNotEmpty(orgDTO.getServiceName()); + } + + private boolean isValidIpWhitelistIfExists(PortalOrgRegistrationDTO orgDTO) { + if (orgDTO.getIpWhitelist() != null && !orgDTO.getIpWhitelist().trim().isEmpty()) { + return isValidIpWhitelist(orgDTO.getIpWhitelist()); + } + return true; + } + + private boolean isValidUserInfo(PortalOrgRegistrationDTO orgDTO) { + return isValidEmail(orgDTO.getLoginId()) && + isNotEmpty(orgDTO.getUserName()) && + isValidPhoneNumber(orgDTO.getMobileNumber()); + } + + private boolean isNotEmpty(String value) { + return value != null && !value.trim().isEmpty(); + } + + // 사용자 등록 관련 유효성 검사 메서드 추가 + public ValidationResponse validateEmail(String loginId, String registrationType, PortalUserService portalUserService) { + ValidationResponse response = new ValidationResponse(); + + // 이메일 형식 검증 + if (!isValidEmail(loginId)) { + response.setValid(false); + response.setMessage("올바른 이메일 형식이 아닙니다."); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + + // 사용자 존재 여부 확인 + if (!portalUserService.existsByLoginId(loginId)) { + response.setValid(true); + response.setMessage("사용 가능한 이메일입니다."); + response.setShowPopup(true); + + if ("corporate".equals(registrationType)) { + response.setPopupType("newUser"); + } else { + response.setPopupType("validEmail"); + } + + return response; + } + + // 사용자 정보 가져오기 + Optional userOpt = portalUserService.findByLoginId(loginId); + if (userOpt.isPresent()) { + PortalUser user = userOpt.get(); + boolean isPersonalAccount = user.getRoleCode() == PortalUserEnums.RoleCode.ROLE_USER; + boolean isCorporateAccount = user.getRoleCode() == PortalUserEnums.RoleCode.ROLE_CORP_USER; + + if ("corporate".equals(registrationType)) { + if (isPersonalAccount) { + response.setValid(false); + response.setMessage("이메일이 개인 회원으로 등록되어 있습니다. 법인 계정으로 전환하시겠습니까? " + + " *법인회원 전환은 반드시 법인이메일 주소로 해 주세요. 개인이메일로 전환 신청시, 법인 승인이 거절 될 수 있습니다."); + response.setPersonalAccount(true); + response.setShowPopup(true); + response.setPopupType("conversionOrChange"); + return response; + } else if (isCorporateAccount) { + response.setValid(false); + response.setMessage("이미 법인 사용자로 등록되어 있습니다."); + response.setCorporateAccount(true); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + } else if ("personal".equals(registrationType)) { + response.setValid(false); + response.setMessage("이미 사용 중인 이메일입니다."); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + } + + // 기본 에러 메시지 + response.setValid(false); + response.setMessage("이미 사용 중인 이메일입니다."); + response.setShowPopup(true); + response.setPopupType("error"); + return response; + } + + // 이메일 형식 검증 메서드 추가 + public boolean isValidEmail(String email) { + String emailPattern = "^[A-Za-z0-9+_.-]+@(.+)$"; + return email != null && email.matches(emailPattern); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/validator/AgreementValidator.java b/src/main/java/com/eactive/apim/portal/apps/user/validator/AgreementValidator.java new file mode 100644 index 0000000..3c53cf6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/validator/AgreementValidator.java @@ -0,0 +1,40 @@ +package com.eactive.apim.portal.apps.user.validator; + +import com.eactive.apim.portal.apps.user.dto.UserAgreementDTO; +import org.springframework.stereotype.Component; +import org.springframework.validation.Errors; +import org.springframework.validation.Validator; + +@Component +public class AgreementValidator implements Validator { + + @Override + public boolean supports(Class clazz) { + return UserAgreementDTO.class.isAssignableFrom(clazz); + } + + @Override + public void validate(Object target, Errors errors) { + UserAgreementDTO userAgreementDTO = (UserAgreementDTO) target; + if(!userAgreementDTO.isAllRequiredTermsAgreed()){ + errors.rejectValue("allRequiredTermsAgreed", "AssertTrue", "모든 필수 약관에 동의해주세요."); + } + } + + public boolean isAgreementAccepted(UserAgreementDTO agreement) { + // 기본적으로 필요한 동의 검증 + boolean basicAgreements = agreement.isTermsOfUse(); + + // 개인정보수집동의서 검증 추가 + boolean privacyCollectAgreement = true; // 기본값 true로 설정 + + // 개인/법인 구분에 따른 개인정보수집동의서 검증 + if (agreement.isIndividualUser()) { + privacyCollectAgreement = agreement.isPrivacyCollectInd(); + } else if (agreement.isOrganizationUser()) { + privacyCollectAgreement = agreement.isPrivacyCollectOrg(); + } + + return basicAgreements && privacyCollectAgreement; + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/validator/EmailValidator.java b/src/main/java/com/eactive/apim/portal/apps/user/validator/EmailValidator.java new file mode 100644 index 0000000..9c6dc0b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/validator/EmailValidator.java @@ -0,0 +1,19 @@ +package com.eactive.apim.portal.apps.user.validator; + +import org.springframework.stereotype.Component; + +import java.util.regex.Pattern; + +@Component +public class EmailValidator { + private static final String EMAIL_REGEX = "^[A-Za-z0-9+_.-]+@(.+)$"; + private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX); + + //이메일 형식 유효성 검사 + public boolean isValidEmail(String email) { + if (email == null) { + return false; + } + return EMAIL_PATTERN.matcher(email).matches(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/validator/PasswordValidator.java b/src/main/java/com/eactive/apim/portal/apps/user/validator/PasswordValidator.java new file mode 100644 index 0000000..c670202 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/validator/PasswordValidator.java @@ -0,0 +1,53 @@ +package com.eactive.apim.portal.apps.user.validator; + +import com.eactive.apim.portal.common.validator.PasswordRuleForKbankValidator; +import org.springframework.stereotype.Component; + +@Component +public class PasswordValidator { + + public boolean isValidPassword(String password) { + if (password == null || password.isEmpty()) { + return false; + } + + String tmpPw = password.toUpperCase(); + return isValidLengthAndCharacters(tmpPw) && !containsInvalidPatterns(tmpPw); + } + + public boolean isValidPassword(String password, String loginId, String mobileNumber) { + PasswordRuleForKbankValidator validator = new PasswordRuleForKbankValidator(); + return validator.isValid(password, loginId, mobileNumber); + } + + private boolean isValidLengthAndCharacters(String password) { + final int MIN = 8; + final int MAX = 20; + final String REGEX = "^(?=.*\\d)(?=.*[a-zA-Z])(?=.*[\\W]).{" + MIN + "," + MAX + "}$"; + return password.matches(REGEX); + } + + private boolean containsInvalidPatterns(String password) { + final String SAMEPT = "(\\w)\\1\\1"; + final String BLANKPT = "(\\s)"; + + if (password.matches(BLANKPT) || password.matches(SAMEPT)) { + return true; + } + + return containsContinuousCharacters(password); + } + + private boolean containsContinuousCharacters(String password) { + for (int i = 0; i < password.length() - 2; i++) { + if (isContinuous(password.charAt(i), password.charAt(i + 1), password.charAt(i + 2))) { + return true; + } + } + return false; + } + + private boolean isContinuous(char a, char b, char c) { + return (b - a == 1) && (c - b == 1); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/validator/PhoneNumberValidator.java b/src/main/java/com/eactive/apim/portal/apps/user/validator/PhoneNumberValidator.java new file mode 100644 index 0000000..1858926 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/validator/PhoneNumberValidator.java @@ -0,0 +1,8 @@ +package com.eactive.apim.portal.apps.user.validator; + +public class PhoneNumberValidator { + // 휴대 전화번호 유효성 검사 + public static boolean isValidPhoneNumber(String phoneNumber) { + return phoneNumber.matches("^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$"); + } +} diff --git a/src/main/java/com/eactive/apim/portal/apps/user/validator/UserRegisterValidator.java b/src/main/java/com/eactive/apim/portal/apps/user/validator/UserRegisterValidator.java new file mode 100644 index 0000000..51dd320 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/apps/user/validator/UserRegisterValidator.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.apps.user.validator; + +import org.apache.commons.lang3.StringUtils; + +public class UserRegisterValidator { + // 수신자 정보 및 인증번호 유효성 검사 + public static void validateRequestAuth(String recipient) { + if (StringUtils.isEmpty(recipient)) { + throw new IllegalArgumentException("수신자 정보가 없습니다."); + } + if (!PhoneNumberValidator.isValidPhoneNumber(recipient)) { + throw new IllegalArgumentException("휴대 전화번호 형식이 올바르지 않습니다."); + } + } + + public static void validateVerificationRequest(String recipient, String authNumber) { + if (StringUtils.isEmpty(recipient) || StringUtils.isEmpty(authNumber)) { + throw new IllegalArgumentException("수신자 정보 또는 인증번호가 없습니다."); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/breadcrumb/GlobalControllerAdvice.java b/src/main/java/com/eactive/apim/portal/common/breadcrumb/GlobalControllerAdvice.java new file mode 100644 index 0000000..c6cf86d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/breadcrumb/GlobalControllerAdvice.java @@ -0,0 +1,27 @@ +package com.eactive.apim.portal.common.breadcrumb; + +import java.util.List; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ModelAttribute; + +@ControllerAdvice +public class GlobalControllerAdvice { + + @Autowired + private PageService pageService; + + @ModelAttribute("breadcrumb") + public List addBreadcrumbToModel(HttpServletRequest request) { + String currentPath = request.getRequestURI(); + return pageService.getBreadcrumb(currentPath); + } + + @ModelAttribute("pageName") + public String getPageName(HttpServletRequest request) { + String currentPath = request.getRequestURI(); + return pageService.getPageName(currentPath); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/breadcrumb/PageService.java b/src/main/java/com/eactive/apim/portal/common/breadcrumb/PageService.java new file mode 100644 index 0000000..1af25a7 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/breadcrumb/PageService.java @@ -0,0 +1,128 @@ +package com.eactive.apim.portal.common.breadcrumb; + +import java.util.HashMap; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.*; + +@Service +public class PageService { + + private final PageStructure pageStructure; + + public PageService(PageStructure pageStructure) { + this.pageStructure = pageStructure; + } + + public List getBreadcrumb(String currentPath) { + // URL에서 기본 경로와 쿼리 파라미터 분리 + String basePath = currentPath.contains("?") ? + currentPath.substring(0, currentPath.indexOf("?")) : currentPath; + Map queryParams = parseQueryParams(currentPath); + + List breadcrumb = new ArrayList<>(); + buildBreadcrumb(pageStructure.getHome(), basePath, queryParams, breadcrumb); + return breadcrumb; + } + + public String getPageName(String currentPath) { + String basePath = currentPath.contains("?") ? + currentPath.substring(0, currentPath.indexOf("?")) : currentPath; + Map queryParams = parseQueryParams(currentPath); + return findPageName(pageStructure.getHome(), basePath, queryParams); + } + + private Map parseQueryParams(String path) { + Map params = new HashMap<>(); + if (path.contains("?")) { + String queryString = path.substring(path.indexOf("?") + 1); + for (String param : queryString.split("&")) { + String[] pair = param.split("="); + if (pair.length == 2) { + params.put(pair[0], pair[1]); + } + } + } + return params; + } + + private String findPageName(Map currentNode, String basePath, Map queryParams) { + String path = (String) currentNode.get("path"); + + // 기본 경로가 일치하는지 확인 + if (path != null) { + String nodePath = path.contains("?") ? + path.substring(0, path.indexOf("?")) : path; + Map nodeParams = parseQueryParams(path); + + if (nodePath.equals(basePath) && matchesQueryParams(nodeParams, queryParams)) { + return (String) currentNode.get("name"); + } + } + + // 자식 노드들을 재귀적으로 검색 + if (currentNode.containsKey("children")) { + Map children = (Map) currentNode.get("children"); + for (Map.Entry entry : children.entrySet()) { + String name = findPageName((Map) entry.getValue(), basePath, queryParams); + if (name != null) { + return name; + } + } + } + + return null; + } + + private boolean buildBreadcrumb(Map currentNode, String basePath, + Map queryParams, List breadcrumb) { + String name = (String) currentNode.get("name"); + String path = (String) currentNode.get("path"); + + if (name != null && path != null) { + Map level = new HashMap<>(); + level.put("name", name); + level.put("path", path); + breadcrumb.add(level); + } + + if (path != null) { + String nodePath = path.contains("?") ? + path.substring(0, path.indexOf("?")) : path; + Map nodeParams = parseQueryParams(path); + + if (nodePath.equals(basePath) && matchesQueryParams(nodeParams, queryParams)) { + return true; + } + } + + if (currentNode.containsKey("children")) { + Map children = (Map) currentNode.get("children"); + for (Map.Entry entry : children.entrySet()) { + if (buildBreadcrumb((Map) entry.getValue(), basePath, queryParams, breadcrumb)) { + return true; + } + } + } + + if (name != null) { + breadcrumb.remove(breadcrumb.size() - 1); + } + + return false; + } + + private boolean matchesQueryParams(Map nodeParams, Map requestParams) { + // 특별히 tab 파라미터에 대해서만 체크 + String nodeTab = nodeParams.get("tab"); + String requestTab = requestParams.get("tab"); + + if (nodeTab == null && requestTab == null) { + return true; + } + return Objects.equals(nodeTab, requestTab); + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/common/breadcrumb/PageStructure.java b/src/main/java/com/eactive/apim/portal/common/breadcrumb/PageStructure.java new file mode 100644 index 0000000..32b103e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/breadcrumb/PageStructure.java @@ -0,0 +1,19 @@ +package com.eactive.apim.portal.common.breadcrumb; + +import java.util.Map; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "page") +public class PageStructure { + private Map home; + + public Map getHome() { + return home; + } + + public void setHome(Map home) { + this.home = home; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/dto/PasswordValidationDTO.java b/src/main/java/com/eactive/apim/portal/common/dto/PasswordValidationDTO.java new file mode 100644 index 0000000..8adf58a --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/dto/PasswordValidationDTO.java @@ -0,0 +1,14 @@ +package com.eactive.apim.portal.common.dto; + +import com.eactive.apim.portal.common.validator.PasswordRuleForKbank; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@PasswordRuleForKbank(password = "password", loginId = "loginId", mobile = "mobile") +public class PasswordValidationDTO { + private String password; + private String loginId; + private String mobile; +} diff --git a/src/main/java/com/eactive/apim/portal/common/dto/ResponseDTO.java b/src/main/java/com/eactive/apim/portal/common/dto/ResponseDTO.java new file mode 100644 index 0000000..f7453ae --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/dto/ResponseDTO.java @@ -0,0 +1,34 @@ +package com.eactive.apim.portal.common.dto; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public class ResponseDTO { + private int status; + private String code; + private String msg; + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/dto/SearchResultDTO.java b/src/main/java/com/eactive/apim/portal/common/dto/SearchResultDTO.java new file mode 100644 index 0000000..650b84e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/dto/SearchResultDTO.java @@ -0,0 +1,24 @@ +package com.eactive.apim.portal.common.dto; + + +public class SearchResultDTO { + + private boolean result; + private String value; + + public boolean isResult() { + return result; + } + + public void setResult(boolean result) { + this.result = result; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/dto/ValueModelDTO.java b/src/main/java/com/eactive/apim/portal/common/dto/ValueModelDTO.java new file mode 100644 index 0000000..b9640f6 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/dto/ValueModelDTO.java @@ -0,0 +1,13 @@ +package com.eactive.apim.portal.common.dto; + +public class ValueModelDTO { + private String value; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/entity/CustomPhysicalNamingStrategy.java b/src/main/java/com/eactive/apim/portal/common/entity/CustomPhysicalNamingStrategy.java new file mode 100644 index 0000000..b365c51 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/entity/CustomPhysicalNamingStrategy.java @@ -0,0 +1,109 @@ +/* + * Copyright 2012-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.eactive.apim.portal.common.entity; + +import org.hibernate.boot.model.naming.Identifier; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; + +import java.util.Locale; + +/** + * Hibernate {@link PhysicalNamingStrategy} that follows Spring recommended naming + * conventions. + * + * @author Sungpil Hyun + * @author Sungpil Hyun + * @since 1.4.0 + */ +public class CustomPhysicalNamingStrategy implements PhysicalNamingStrategy { + + @Override + public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + @Override + public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + @Override + public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + @Override + public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + @Override + public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + Identifier apply(Identifier name, JdbcEnvironment jdbcEnvironment) { + if (name == null) { + return null; + } + StringBuilder builder = new StringBuilder(name.getText().replace('.', '_')); + + int i = 1; + while (i < builder.length() - 1) { + if (isUnderscoreRequired(builder.charAt(i - 1), builder.charAt(i), builder.charAt(i + 1))) { + builder.insert(i, '_'); + i++; // increment i if an underscore is inserted + } + i++; // increment i for the next iteration + } + + return getIdentifier(builder.toString(), name.isQuoted(), jdbcEnvironment); + } + + /** + * Get an identifier for the specified details. By default this method will return an + * identifier with the name adapted based on the result of + * {@link #isCaseInsensitive(JdbcEnvironment)} + * + * @param name the name of the identifier + * @param quoted if the identifier is quoted + * @param jdbcEnvironment the JDBC environment + * @return an identifier instance + */ + protected Identifier getIdentifier(String name, boolean quoted, JdbcEnvironment jdbcEnvironment) { + if (isCaseInsensitive(jdbcEnvironment)) { + name = name.toLowerCase(Locale.ROOT); + } + return new Identifier(name, quoted); + } + + /** + * Specify whether the database is case sensitive. + * + * @param jdbcEnvironment the JDBC environment which can be used to determine case + * @return true if the database is case insensitive sensitivity + */ + protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) { + return true; + } + + private boolean isUnderscoreRequired(char before, char current, char after) { + return Character.isLowerCase(before) && Character.isUpperCase(current) && Character.isLowerCase(after); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/exception/PortalErrorController.java b/src/main/java/com/eactive/apim/portal/common/exception/PortalErrorController.java new file mode 100644 index 0000000..3bc19dc --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/exception/PortalErrorController.java @@ -0,0 +1,36 @@ +package com.eactive.apim.portal.common.exception; + +import org.springframework.boot.web.servlet.error.ErrorController; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.RequestDispatcher; +import javax.servlet.http.HttpServletRequest; + +/** + * Created by Sungpil Hyun + */ +@Controller +public class PortalErrorController implements ErrorController { + + + @RequestMapping(value = "/error", method = {RequestMethod.POST, RequestMethod.GET}) + public ModelAndView handleError(HttpServletRequest request) { + Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); + + if (status != null) { + if(status.equals(HttpStatus.METHOD_NOT_ALLOWED.value())){ + return new ModelAndView("redirect:/"); + } + ModelAndView modelAndView = new ModelAndView("error"); + modelAndView.addObject("status", status); + return modelAndView; + } + + return new ModelAndView("redirect:/"); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/exception/PortalGlobalExceptionHandler.java b/src/main/java/com/eactive/apim/portal/common/exception/PortalGlobalExceptionHandler.java new file mode 100644 index 0000000..0325693 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/exception/PortalGlobalExceptionHandler.java @@ -0,0 +1,114 @@ +package com.eactive.apim.portal.common.exception; + + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; +import javax.servlet.http.HttpServletRequest; + +import com.eactive.apim.portal.file.exception.InvalidFileException; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.annotation.Order; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.stereotype.Controller; +import org.springframework.web.HttpMediaTypeNotSupportedException; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + + +/** + * Created by Sungpil Hyun + */ +@Order(2) +@ControllerAdvice(annotations = Controller.class) +public class PortalGlobalExceptionHandler { + + private final Logger log = LoggerFactory.getLogger(getClass()); + + @ExceptionHandler(value = NotFoundException.class) + public ModelAndView handleINotFoundException(HttpServletRequest request, NotFoundException ex) { + return new ModelAndView("redirect:/"); + } + + @ExceptionHandler(value = MethodArgumentTypeMismatchException.class) + public ModelAndView handleMethodArgumentTypeMismatchException(HttpServletRequest request, MethodArgumentTypeMismatchException ex) { + return new ModelAndView("redirect:/"); + } + + @ExceptionHandler(value = UserNotLoginException.class) + public ModelAndView handleUserNotLoginException(HttpServletRequest request, UserNotLoginException ex) { + return new ModelAndView("redirect:/login"); + } + + @ExceptionHandler(value = AccessDeniedException.class) + public ModelAndView handleAccessDeniedException(HttpServletRequest request, AccessDeniedException ex) { + return new ModelAndView("redirect:/login"); + } + + @ExceptionHandler(value = PortalRedirectException.class) + public ModelAndView handlePortalRedirectException(HttpServletRequest request, PortalRedirectException ex) { + return new ModelAndView(ex.getMessage()); + } + + @ExceptionHandler(value = {IllegalArgumentException.class}) + public ModelAndView handleIllegalArgumentException(HttpServletRequest request, IllegalArgumentException ex) { + log.error(ex.getMessage()); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("errorMessage", ex.getMessage()); + modelAndView.setViewName("common/error/error"); + return modelAndView; + } + + @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class) + public ModelAndView handleHttpRequestMethodNotSupportedException(HttpServletRequest request, HttpRequestMethodNotSupportedException ex) { + log.error(ex.getMessage()); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("redirect:/"); + return modelAndView; + } + + @ExceptionHandler(value = HttpMediaTypeNotSupportedException.class) + public ModelAndView handleHttpMediaTypeNotSupportedException(HttpServletRequest request, HttpMediaTypeNotSupportedException ex) { + log.error(ex.getMessage()); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("errorMessage", ex.getMessage()); + modelAndView.setViewName("common/error/error"); + return modelAndView; + } + + @ExceptionHandler(value = Exception.class) + public ModelAndView handleException(HttpServletRequest request, Exception ex) { + Map params = new HashMap<>(2); + params.put("errorMessage", ex.getLocalizedMessage()); + params.put("stackTrace", ExceptionUtils.getStackTrace(ex)); // Apache Commons Lang + params.put("requestURL", request.getRequestURL().toString()); + + String mapAsString = request.getParameterMap().entrySet() + .stream() + .map(entry -> entry.getKey() + "=" + Arrays.toString(entry.getValue())) + .collect(Collectors.joining(", ")); + + params.put("requestParams", mapAsString); + + log.error("Exception occurred: ", ex); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("errorMessage", ex.getMessage()); + modelAndView.setViewName("common/error/error"); + return modelAndView; + } + + @ExceptionHandler(value = InvalidFileException.class) + public ModelAndView handleInvalidFileException(HttpServletRequest request, RedirectAttributes redirectAttributes, InvalidFileException ex) { + ModelAndView modelAndView = new ModelAndView(); + redirectAttributes.addFlashAttribute("error", ex.getMessage()); + modelAndView.setViewName("redirect:" + request.getRequestURI()); + return modelAndView; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/exception/PortalRedirectException.java b/src/main/java/com/eactive/apim/portal/common/exception/PortalRedirectException.java new file mode 100644 index 0000000..d015577 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/exception/PortalRedirectException.java @@ -0,0 +1,14 @@ +package com.eactive.apim.portal.common.exception; + +import lombok.Getter; + +@Getter +public class PortalRedirectException extends RuntimeException { + + private final String redirectPage; + + public PortalRedirectException(String redirectPage) { + this.redirectPage = redirectPage; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/exception/PortalRestExceptionHandler.java b/src/main/java/com/eactive/apim/portal/common/exception/PortalRestExceptionHandler.java new file mode 100644 index 0000000..c527a60 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/exception/PortalRestExceptionHandler.java @@ -0,0 +1,54 @@ +package com.eactive.apim.portal.common.exception; + + +import com.eactive.apim.portal.common.dto.ResponseDTO; +import com.eactive.apim.portal.portaluser.service.AuthNumberException; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.servlet.http.HttpServletRequest; + +@Order(1) +@RestControllerAdvice(annotations = RestController.class) +public class PortalRestExceptionHandler { + + @ExceptionHandler(value = IntegrationException.class) + public ResponseEntity handleHttpRequestMethodNotSupportedException(HttpServletRequest request, IntegrationException ex) { + + ResponseDTO response = new ResponseDTO(500, "500", ex.getMessage()); + return new ResponseEntity<>(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + @ExceptionHandler(value = AuthNumberException.class) + public ResponseEntity handleAuthNumberException(HttpServletRequest request, AuthNumberException ex) { + + ResponseDTO response = new ResponseDTO(400, "400", ex.getMessage()); + + return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(value = IllegalArgumentException.class) + public ResponseEntity handleIllegalArgumentException(HttpServletRequest request, IllegalArgumentException ex) { + ResponseDTO response = new ResponseDTO(400, "400", ex.getMessage()); + + return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(value = NotFoundException.class) + public ResponseEntity handleNotFoundException(HttpServletRequest request, NotFoundException ex) { + ResponseDTO response = new ResponseDTO(404, "404", ex.getMessage()); + + return new ResponseEntity<>(response, HttpStatus.NOT_FOUND); + } + + @ExceptionHandler(value = Exception.class) + public ResponseEntity handleUnknownxception(HttpServletRequest request, Exception ex) { + ex.printStackTrace(); + ResponseDTO response = new ResponseDTO(500, "500", ex.getMessage()); + return new ResponseEntity<>(response, HttpStatus.INTERNAL_SERVER_ERROR); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/exception/SystemException.java b/src/main/java/com/eactive/apim/portal/common/exception/SystemException.java new file mode 100644 index 0000000..c057108 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/exception/SystemException.java @@ -0,0 +1,11 @@ +package com.eactive.apim.portal.common.exception; + +public class SystemException extends RuntimeException { + public SystemException(String message) { + super(message); + } + + public SystemException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/exception/UserNotLoginException.java b/src/main/java/com/eactive/apim/portal/common/exception/UserNotLoginException.java new file mode 100644 index 0000000..c04affb --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/exception/UserNotLoginException.java @@ -0,0 +1,8 @@ +package com.eactive.apim.portal.common.exception; + +public class UserNotLoginException extends RuntimeException { + + public UserNotLoginException() { + super("User not login"); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/mapper/CommonMapper.java b/src/main/java/com/eactive/apim/portal/common/mapper/CommonMapper.java new file mode 100644 index 0000000..fb3a297 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/mapper/CommonMapper.java @@ -0,0 +1,44 @@ +package com.eactive.apim.portal.common.mapper; + +import org.mapstruct.Mapper; +import org.mapstruct.Named; +import org.mapstruct.ReportingPolicy; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +@Mapper(componentModel = "spring", + unmappedTargetPolicy = ReportingPolicy.IGNORE) +public class CommonMapper { + + public String map(boolean value) { + return value ? "Y" : "N"; + } + + public boolean map(String value) { + if (value == null) return false; + return value.equals("Y"); + } + + public String map(List values) { + if (values == null) return ""; + return String.join(",", values); + } + + public List toList(String value) { + if (StringUtils.hasLength(value)) return new ArrayList<>(); + + return Arrays.asList(value.split(",")); + } + + @Named("authorities") + public List authorities(Collection grantedAuthorities) { + + return grantedAuthorities.stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/message/PortalReloadableResourceBundleMessageSource.java b/src/main/java/com/eactive/apim/portal/common/message/PortalReloadableResourceBundleMessageSource.java new file mode 100644 index 0000000..94efb8f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/message/PortalReloadableResourceBundleMessageSource.java @@ -0,0 +1,55 @@ +package com.eactive.apim.portal.common.message; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.lang3.StringUtils; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; + +public class PortalReloadableResourceBundleMessageSource extends org.springframework.context.support.ReloadableResourceBundleMessageSource { + private static final String CLASSPATH_PREFIX = "classpath:"; + private static final String PROPERTIES_EXTENSION = ".properties"; + + private final ResourcePatternResolver resourcePatternResolver; + + public PortalReloadableResourceBundleMessageSource() { + this.resourcePatternResolver = new PathMatchingResourcePatternResolver(); + } + + public void setEgovBaseNames(List basenames) { + List resolvedBasenames = new ArrayList<>(); + for (String basename : basenames) { + String trimmedBasename = StringUtils.trimToEmpty(basename); + if (trimmedBasename.startsWith(CLASSPATH_PREFIX)) { + resolvedBasenames.add(trimmedBasename); + } else if (StringUtils.isNotBlank(trimmedBasename)) { + try { + Resource[] resources = resourcePatternResolver.getResources(trimmedBasename); + for (Resource resource : resources) { + String uri = resource.getURI().toString(); + if (!uri.contains(PROPERTIES_EXTENSION)) { + continue; + } + String baseName = processBasename(uri); + resolvedBasenames.add(baseName); + } + } catch (IOException e) { + logger.debug("No message source files found for basename " + trimmedBasename + "."); + } + } + } + setBasenames(resolvedBasenames.toArray(new String[0])); + } + + private String processBasename(String uri) { + String baseName = StringUtils.substringBeforeLast(uri, PROPERTIES_EXTENSION); + String prefix = StringUtils.substringBeforeLast(baseName, "/"); + String name = StringUtils.substringAfterLast(baseName, "/"); + while (name.contains("_")) { + name = StringUtils.substringBeforeLast(name, "_"); + } + return prefix + "/" + name; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/pagerouter/PageController.java b/src/main/java/com/eactive/apim/portal/common/pagerouter/PageController.java new file mode 100644 index 0000000..43f65be --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/pagerouter/PageController.java @@ -0,0 +1,163 @@ +package com.eactive.apim.portal.common.pagerouter; + +import com.eactive.apim.portal.apps.apis.filter.ApiTesterFilter; +import com.eactive.apim.portal.common.exception.PortalRedirectException; +import com.eactive.apim.portal.common.pagerouter.property.PageRoute; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.config.PortalProperties; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.PostConstruct; +import javax.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.thymeleaf.util.StringUtils; + +/** + * 페이지 라우팅을 처리하는 중앙 컨트롤러 클래스 설정된 페이지 라우트에 따라 요청을 적절한 핸들러에 위임합니다. + * + * @author Sungpil Hyun + * @version 1.0 + */ +@Controller +public class PageController { + + private static final Logger logger = LoggerFactory.getLogger(PageController.class); + /** + * 스프링 애플리케이션 컨텍스트 빈(Bean) 검색에 사용됩니다. + */ + @Autowired + private ApplicationContext context; + + /** + * 설정 파일에서 로드한 페이지 라우트 목록 + */ + @Autowired + private PortalProperties portalProperties; + + /** + * 경로 패턴을 키로, PageRoute 객체를 값으로 하는 맵 빠른 라우트 검색을 위해 사용됩니다. + */ + private Map routeMap; + + /** + * 컨트롤러 초기화 메서드 페이지 라우트 맵을 구성합니다. + */ + @PostConstruct + public void initialize() { + routeMap = new HashMap<>(); + if (portalProperties.getPages() != null) { + for (PageRoute route : portalProperties.getPages()) { + routeMap.put(route.getPathPattern(), route); + } + } + } + + /** + * 모든 페이지 요청을 처리하는 중앙 메서드 요청된 경로에 맞는 라우트를 찾아 적절한 핸들러에 위임합니다. + * + * @param httpRequest HTTP 요청 객체 + * @param model 뷰에 전달할 모델 객체 + * @return 뷰 이름 또는 리다이렉트 URL + */ + public String handleRequest(HttpServletRequest httpRequest, Model model) { + String path = httpRequest.getRequestURI(); + PageRoute route = findMatchingRoute(path); + if (route == null) { + return "redirect:/"; // 매칭되는 라우트가 없으면 홈으로 리다이렉트 + } else { + // 역할(권한) 체크 + if (!StringUtils.isEmpty(route.getRole())) { + if (!SecurityUtil.hasRole(route.getRole())) { + return "redirect:/"; // 권한이 없으면 홈으로 리다이렉트 + } + } + + // 핸들러 빈 실행 + if (!StringUtils.isEmpty(route.getBean())) { + try { + Object bean = context.getBean(route.getBean()); + if (bean instanceof PageHandler) { + PageHandler pageHandler = (PageHandler) bean; + pageHandler.handleRequest(httpRequest, model); + } else { + return "redirect:/"; + } + } catch (PortalRedirectException e) { + return e.getRedirectPage(); + } catch (Exception e) { + return "redirect:/"; + } + } + + return route.getViewName(); + } + } + + /** + * 주어진 경로에 맞는 PageRoute 객체를 찾습니다. 정확한 매칭이 없으면 경로 변수를 포함한 패턴 매칭을 시도합니다. + * + * @param path 요청 경로 + * @return 매칭되는 PageRoute 객체, 없으면 null + */ + private PageRoute findMatchingRoute(String path) { + // 정확한 매칭 시도 + PageRoute route = routeMap.get(path); + if (route != null) { + return route; + } + + // 경로 변수를 포함한 패턴 매칭 시도 + for (Map.Entry entry : routeMap.entrySet()) { + Map pathVariables = extractPathVariables(entry.getKey(), path); + if (pathVariables != null) { + PageRoute matchedRoute = null; + try { + matchedRoute = entry.getValue().clone(); + matchedRoute.setPathVariables(pathVariables); + } catch (CloneNotSupportedException e) { + logger.error(e.getMessage(), e); + } + + return matchedRoute; + } + } + + return null; + } + + /** + * 라우트 패턴에서 경로 변수를 추출합니다. + * + * @param routePath 라우트 패턴 + * @param actualPath 실제 요청 경로 + * @return 경로 변수 맵, 매칭되지 않으면 null + */ + private Map extractPathVariables(String routePath, String actualPath) { + String[] routeParts = routePath.split("/"); + String[] actualParts = actualPath.split("/"); + + if (routeParts.length != actualParts.length) { + return null; + } + + Map pathVariables = new HashMap<>(); + + for (int i = 0; i < routeParts.length; i++) { + if (routeParts[i].startsWith("{") && routeParts[i].endsWith("}")) { + String variableName = routeParts[i].substring(1, routeParts[i].length() - 1); + pathVariables.put(variableName, actualParts[i]); + } else if (!routeParts[i].equals(actualParts[i])) { + return null; + } + } + + return pathVariables.isEmpty() ? null : pathVariables; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/pagerouter/PageHandler.java b/src/main/java/com/eactive/apim/portal/common/pagerouter/PageHandler.java new file mode 100644 index 0000000..71acb34 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/pagerouter/PageHandler.java @@ -0,0 +1,17 @@ +package com.eactive.apim.portal.common.pagerouter; + +import javax.servlet.http.HttpServletRequest; +import org.springframework.ui.Model; + +/** + * 페이지 요청을 처리하는 핸들러 인터페이스 + */ +public interface PageHandler { + + /** + * HTTP 요청을 처리하는 메서드 + * @param httpRequest HTTP 요청 객체 + * @param model 뷰에 전달할 모델 객체 + */ + void handleRequest(HttpServletRequest httpRequest, Model model); +} diff --git a/src/main/java/com/eactive/apim/portal/common/pagerouter/property/PageRoute.java b/src/main/java/com/eactive/apim/portal/common/pagerouter/property/PageRoute.java new file mode 100644 index 0000000..4e8d5d7 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/pagerouter/property/PageRoute.java @@ -0,0 +1,51 @@ +package com.eactive.apim.portal.common.pagerouter.property; + +import java.util.Map; +import lombok.Data; + +/** + * 페이지 라우팅 정보를 담는 클래스 + */ +@Data +public class PageRoute implements Cloneable { + + /** + * URL 경로 패턴 + */ + private String pathPattern; + + /** + * HTTP 메서드 (GET, POST 등) + */ + private String method; + + /** + * 뷰 이름 + */ + private String viewName; + + /** + * 접근에 필요한 역할(권한) + */ + private String role; + + /** + * 처리할 빈(Bean)의 이름 + */ + private String bean; + + /** + * 경로 변수를 저장하는 맵 + */ + private Map pathVariables; + + /** + * PageRoute 객체를 복제하는 메서드 + * + * @return 복제된 PageRoute 객체 + */ + @Override + public PageRoute clone() throws CloneNotSupportedException { + return (PageRoute) super.clone(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/search/BaseSearch.java b/src/main/java/com/eactive/apim/portal/common/search/BaseSearch.java new file mode 100644 index 0000000..045532d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/search/BaseSearch.java @@ -0,0 +1,90 @@ +package com.eactive.apim.portal.common.search; + +import org.springframework.data.jpa.domain.Specification; + +import java.util.List; + +/** + * Overview: + * + * BaseSearch 클래스는 Spring Data JPA 프레임워크를 사용하여 복잡한 검색 쿼리를 편리하게 작성할 수 있는 방법을 제공하는 추상 클래스입니다. + * 이 클래스를 사용하면 SearchModel 객체 목록을 사용하여 검색 쿼리를 생성할 수 있으며, 이를 결합하여 보다 복잡하고 구체적인 검색 조건을 만들 수 있습니다. + * + * How to Use: + * + * BaseSearch 클래스를 사용하려면 검색하려는 엔티티에 특정한 BaseSearch의 하위 클래스를 만들어야 합니다. + * 예를 들어 User 개체를 검색하려는 경우 BaseSearch를 확장하는 UserSearch라는 클래스를 만들 수 있습니다. + * + * 하위 클래스에서 buildSearchCondition() 메서드를 구현해야 합니다. + * 이 메서드는 사용하려는 검색 조건을 나타내는 SearchModel 객체 목록을 반환해야 합니다. + * + * 예를 들어, 다음은 이름에 특정 문자열이 포함된 사용자를 검색하기 위해 buildSearchCondition() 메서드를 구현하는 방법입니다: + * + * public List buildSearchCondition() { + * List models = new ArrayList<>(); + * models.add(new ColumnSearchModel("firstName", SearchCondition.LIKE, "John")); + * models.add(new ColumnSearchModel("lastName", SearchCondition.LIKE, "Doe")); + * return models; + * } + * + * 이 예제에서는 이름과 성에 각각 문자열 "John"과 "Doe"가 포함된 사용자를 검색하는 두 개의 ColumnSearchModel 객체를 만들고 있습니다. + * + * 검색 쿼리를 빌드하려면 UserSearch 클래스의 인스턴스를 생성하고 그 인스턴스에서 buildSpecification() 메서드를 호출하면 됩니다. + * 이 메서드는 Spring 데이터 JPA를 사용하여 데이터베이스를 쿼리하는 데 사용할 수 있는 Specification 객체를 반환합니다. + * + * UserSearch search = new UserSearch(); + * Specification spec = search.buildSpecification(); + * List users = userRepository.findAll(spec); + * + * 이 예제에서는 UserSearch 인스턴스를 만들고 buildSpecification() 메서드를 호출하여 사양 객체를 빌드한 다음 이 사양 객체를 사용하여 데이터베이스에서 검색 조건과 일치하는 모든 사용자 객체를 쿼리합니다. + * 결과는 User 객체 목록으로 반환됩니다. + * + * 추가 활용 방법 + * + * BaseSearch 클래스는 유연하고 확장 가능하도록 설계되어 필요에 따라 더 복잡한 검색 쿼리를 사용할 수 있습니다. + * getSpecification() 메서드를 구현하는 SearchModel의 새로운 서브클래스를 생성하여 검색 조건을 추가할 수 있습니다. + * 필요에 따라 추가 검색 조건을 포함하도록 SpecificationUtil 클래스를 수정할 수도 있습니다. + * + * 또한 BaseSearch 클래스를 확장하여 정렬 및 페이징과 같은 추가 기능을 제공할 수 있습니다. + * 하위 클래스에 메서드와 속성을 추가하여 애플리케이션의 특정 요구 사항을 충족하는 검색 쿼리를 만들 수 있습니다. + * + * ColumnSearchModel은 검색조건이 컬럼명과 비교 연산자, 값으로 구성된다. SearchCondition 참조 + * SpecificationSearchModel은 검색조건이 Specification을 리턴하는 형태로 구성된다. 검색조건을 복잡하게 구성해야 할 때 사용한다. + * + * public static Specification current(String user, ApproverStatus approverStatus) { + * return (root, criteriaQuery, criteriaBuilder) -> { + * ListJoin join = root.joinList("approvers"); + * return criteriaBuilder.and( + * criteriaBuilder.equal(join.get("user"), user), + * criteriaBuilder.equal(join.get("status"), approverStatus)); + * }; + * } + */ +public interface BaseSearch { + + List buildSearchCondition(); + + default Specification buildSpecification() { + + List models = buildSearchCondition(); + Specification specifications = null; + + for (SearchModel model : models) { + Specification spec = getSpecification(model); + + if (spec != null) { + if (specifications == null) { + specifications = Specification.where(spec); + } else { + specifications = specifications.and(spec); + } + } + } + + return specifications; + } + + default Specification getSpecification(SearchModel model) { + return model.getSpecification(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/search/ColumnSearchModel.java b/src/main/java/com/eactive/apim/portal/common/search/ColumnSearchModel.java new file mode 100644 index 0000000..7a621ba --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/search/ColumnSearchModel.java @@ -0,0 +1,65 @@ +package com.eactive.apim.portal.common.search; + +import com.eactive.apim.portal.common.util.SpecificationUtil; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.util.ObjectUtils; + +import java.util.Collection; + +public class ColumnSearchModel implements SearchModel { + + private String column; + + private Object value; //값의 형태는 String, Collection, Object 등이 될 수 있다. + + private SearchCondition condition; + + public ColumnSearchModel(String column, SearchCondition condition, Object value) { + this.column = column; + this.condition = condition; + this.value = value; + } + + public String getColumn() { + return column; + } + + public void setColumn(String column) { + this.column = column; + } + + public SearchCondition getCondition() { + return condition; + } + + public void setCondition(SearchCondition condition) { + this.condition = condition; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) { + this.value = value; + } + + public Specification getSpecification() { + + if (condition == null) return null; + if (column == null) return null; + if (ObjectUtils.isEmpty(value)) return null; + + if (condition.equals(SearchCondition.EQUAL)) { + return SpecificationUtil.equalTo(column, value); + } else if (condition.equals(SearchCondition.LIKE)) { + return SpecificationUtil.like(column, value.toString()); + } else if (condition.equals(SearchCondition.IN)) { + return SpecificationUtil.in(column, (Collection) value); + } else if (condition.equals(SearchCondition.NOT_EQUAL)) { + return SpecificationUtil.notEqualTo(column, value); + } + + return null; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/search/SearchCondition.java b/src/main/java/com/eactive/apim/portal/common/search/SearchCondition.java new file mode 100644 index 0000000..16b3001 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/search/SearchCondition.java @@ -0,0 +1,8 @@ +package com.eactive.apim.portal.common.search; + +public enum SearchCondition { + EQUAL, + LIKE, + IN, + NOT_EQUAL +} diff --git a/src/main/java/com/eactive/apim/portal/common/search/SearchModel.java b/src/main/java/com/eactive/apim/portal/common/search/SearchModel.java new file mode 100644 index 0000000..6c2234e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/search/SearchModel.java @@ -0,0 +1,10 @@ +package com.eactive.apim.portal.common.search; + +import org.springframework.data.jpa.domain.Specification; + +import java.io.Serializable; + +public interface SearchModel extends Serializable { + + Specification getSpecification(); +} diff --git a/src/main/java/com/eactive/apim/portal/common/search/SpecificationSearchModel.java b/src/main/java/com/eactive/apim/portal/common/search/SpecificationSearchModel.java new file mode 100644 index 0000000..ee349c9 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/search/SpecificationSearchModel.java @@ -0,0 +1,16 @@ +package com.eactive.apim.portal.common.search; + +import org.springframework.data.jpa.domain.Specification; + +public class SpecificationSearchModel implements SearchModel { + + private final Specification specification; + + public SpecificationSearchModel(Specification specification) { + this.specification = specification; + } + + public Specification getSpecification() { + return specification; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/service/BasicCrudService.java b/src/main/java/com/eactive/apim/portal/common/service/BasicCrudService.java new file mode 100644 index 0000000..87ad9d3 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/service/BasicCrudService.java @@ -0,0 +1,25 @@ +package com.eactive.apim.portal.common.service; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; + +import java.util.List; + +public interface BasicCrudService { + T findById(ID id); + + List findAll(); + + Page findAll(Specification spec, Pageable pageable); + + List findAll(Specification spec); + + T save(T entity); + + T update(ID id, T source); + + void deleteById(ID id); + + void deleteByIds(List ids); +} diff --git a/src/main/java/com/eactive/apim/portal/common/user/AnonymousUser.java b/src/main/java/com/eactive/apim/portal/common/user/AnonymousUser.java new file mode 100644 index 0000000..f5d8915 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/user/AnonymousUser.java @@ -0,0 +1,57 @@ +package com.eactive.apim.portal.common.user; + +import lombok.Data; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +@Data +public class AnonymousUser implements Serializable, UserDetails { +// private String userId; + + public AnonymousUser() { +// this.userId = "ANONYMOUS"; + } + + @Override + public Collection getAuthorities() { + List authorities = new ArrayList<>(); + authorities.add(new SimpleGrantedAuthority("ROLE_ANONYMOUS")); + return authorities; + } + + @Override + public String getPassword() { + return ""; + } + + @Override + public String getUsername() { + return "anonymous"; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/user/PortalAuthenticatedUser.java b/src/main/java/com/eactive/apim/portal/common/user/PortalAuthenticatedUser.java new file mode 100644 index 0000000..251d1d2 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/user/PortalAuthenticatedUser.java @@ -0,0 +1,55 @@ +package com.eactive.apim.portal.common.user; + +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import lombok.Data; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +@Data +public class PortalAuthenticatedUser extends PortalUser implements UserDetails { + + private List authorities = new ArrayList<>(); + + public PortalAuthenticatedUser() { + } + + @Override + public Collection getAuthorities() { + return authorities; + } + + @Override + public String getPassword() { + return getPasswordHash(); + } + + @Override + public String getUsername() { + return getLoginId(); + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return getUserStatus().equals(PortalUserEnums.UserStatus.ACTIVE) && getApprovalStatus().equals(PortalUserEnums.ApprovalStatus.COMPLETED); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/ApiServiceHelper.java b/src/main/java/com/eactive/apim/portal/common/util/ApiServiceHelper.java new file mode 100644 index 0000000..5285279 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/ApiServiceHelper.java @@ -0,0 +1,28 @@ +package com.eactive.apim.portal.common.util; + +import com.eactive.apim.portal.apps.apiservice.dto.ApiServiceDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@RequiredArgsConstructor +public class ApiServiceHelper { + + public Map getMainIconsFromServiceDtos(List apiServices) { + Map mainIconsMap = new HashMap<>(); + + apiServices.forEach(service -> { + service.getApiGroupApiList().forEach(api -> { + String apiId = api.getApiId(); + mainIconsMap.put(apiId, service); + }); + }); + + return mainIconsMap; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/ApplicationContextUtil.java b/src/main/java/com/eactive/apim/portal/common/util/ApplicationContextUtil.java new file mode 100644 index 0000000..2490f78 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/ApplicationContextUtil.java @@ -0,0 +1,36 @@ +package com.eactive.apim.portal.common.util; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + + +/** + * ApplicationContextUtil 클래스 + * + * @author Sungpil Hyun + * @version 1.0 + */ +@Component("ApplicationContextUtil") +public class ApplicationContextUtil implements ApplicationContextAware { + + public static ApplicationContext getContext() { + return context; + } + + public static void setContext(ApplicationContext context) { + ApplicationContextUtil.context = context; + } + + private static ApplicationContext context; + + + + @SuppressWarnings("static-access") + public void setApplicationContext(ApplicationContext context) + throws BeansException { + this.context = context; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/DateUtil.java b/src/main/java/com/eactive/apim/portal/common/util/DateUtil.java new file mode 100644 index 0000000..ef0df83 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/DateUtil.java @@ -0,0 +1,62 @@ +package com.eactive.apim.portal.common.util; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * Utility class for date operations + */ +public class DateUtil { + + private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd"); + + /** + * Returns the first date of the current month as a formatted string + * @return String formatted as 'yyyyMMdd' + */ + public static String getFirstDateOfCurrentMonth() { + LocalDate firstDayOfMonth = LocalDate.now().withDayOfMonth(1); + return firstDayOfMonth.format(DEFAULT_FORMATTER); + } + + /** + * Returns the first date of the current week (Monday) as a formatted string + * @return String formatted as 'yyyyMMdd' + */ + public static String getFirstDateOfCurrentWeek() { + LocalDate now = LocalDate.now(); + LocalDate monday = now.with(DayOfWeek.MONDAY); + return monday.format(DEFAULT_FORMATTER); + } + + /** + * Returns the first date of the current month as LocalDate + * @return LocalDate object representing first day of current month + */ + public static LocalDate getFirstDateOfCurrentMonthAsDate() { + return LocalDate.now().withDayOfMonth(1); + } + + public static LocalDate getLastDateOfCurrentMonthAsDate() { + return LocalDate.now().withDayOfMonth(1).plusMonths(1).minusDays(1); + } + + /** + * Returns the first date of the current week as LocalDate + * @return LocalDate object representing Monday of current week + */ + public static LocalDate getFirstDateOfCurrentWeekAsDate() { + return LocalDate.now().with(DayOfWeek.MONDAY); + } + + /** + * Formats a LocalDate to string using the default format (yyyyMMdd) + * @param date LocalDate to format + * @return String formatted date + */ + public static String formatDate(LocalDate date) { + return date.format(DEFAULT_FORMATTER); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/EncryptionUtil.java b/src/main/java/com/eactive/apim/portal/common/util/EncryptionUtil.java new file mode 100644 index 0000000..365514c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/EncryptionUtil.java @@ -0,0 +1,69 @@ +package com.eactive.apim.portal.common.util; + +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.Base64; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.SecretKeySpec; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component("encryptionUtil") +public class EncryptionUtil { + + public static String generateNewPassword() { + // 2. 임시 비밀번호를 생성한다.(영+영+숫+영+영+숫+영+영=8자리) + StringBuilder newpassword = new StringBuilder(); + for (int i = 1; i <= 8; i++) { + // 영자 + if (i % 3 != 0) { + newpassword.append(RandomUtil.getRandomStr('a', 'z')); + // 숫자 + } else { + newpassword.append(RandomUtil.getRandomNum(0, 9)); + } + } + return newpassword.toString(); + } + + @Value("${encryption.key:kbank_portal_application_1357902}") + private String secretKey; // Should be 16, 24, or 32 bytes long for AES-128, AES-192, or AES-256 + + private static final String ALGORITHM = "AES"; + + private SecretKeySpec createSecretKey() { + byte[] key = secretKey.getBytes(StandardCharsets.UTF_8); + return new SecretKeySpec(key, ALGORITHM); + } + + public String encrypt(String value) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { + if (value == null || value.isEmpty()) { + return value; + } + + SecretKeySpec key = createSecretKey(); + Cipher cipher = Cipher.getInstance(ALGORITHM); + cipher.init(Cipher.ENCRYPT_MODE, key); + + byte[] encryptedBytes = cipher.doFinal(value.getBytes()); + return Base64.getEncoder().encodeToString(encryptedBytes); + } + + public String decrypt(String encrypted) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { + if (encrypted == null || encrypted.isEmpty()) { + return encrypted; + } + + SecretKeySpec key = createSecretKey(); + Cipher cipher = Cipher.getInstance(ALGORITHM); + cipher.init(Cipher.DECRYPT_MODE, key); + + byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encrypted)); + return new String(decryptedBytes); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/RandomUtil.java b/src/main/java/com/eactive/apim/portal/common/util/RandomUtil.java new file mode 100644 index 0000000..bc6f02c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/RandomUtil.java @@ -0,0 +1,58 @@ +package com.eactive.apim.portal.common.util; + +import java.security.SecureRandom; + +public final class RandomUtil { + + private RandomUtil() { + throw new IllegalStateException("Utility class"); + } + + public static int getRandomNum(int startNum, int endNum) { + int randomNum = 0; + + // 랜덤 객체 생성 + SecureRandom rnd = new SecureRandom(); + + do { + // 종료숫자내에서 랜덤 숫자를 발생시킨다. + randomNum = rnd.nextInt(endNum + 1); + } while (randomNum < startNum); // 랜덤 숫자가 시작숫자보다 작을경우 다시 랜덤숫자를 발생시킨다. + + return randomNum; + } + + /** + * 문자열 A에서 Z사이의 랜덤 문자열을 구하는 기능을 제공 시작문자열과 종료문자열 사이의 랜덤 문자열을 구하는 기능 + * + * @param startChr - 첫 문자 + * @param endChr - 마지막문자 + * @return 랜덤문자 + * @see + */ + public static String getRandomStr(char startChr, char endChr) { + + int randomInt; + String randomStr = null; + + // 시작문자열이 종료문자열보가 클경우 + if (startChr > endChr) { + throw new IllegalArgumentException("Start String: " + startChr + " End String: " + endChr); + } + + // 랜덤 객체 생성 + SecureRandom rnd = new SecureRandom(); + + do { + // 시작문자 및 종료문자 중에서 랜덤 숫자를 발생시킨다. + randomInt = rnd.nextInt(endChr + 1); + } while (randomInt < startChr); // 입력받은 문자 'A'(65)보다 작으면 다시 랜덤 숫자 발생. + + // 랜덤 숫자를 문자로 변환 후 스트링으로 다시 변환 + randomStr = (char) randomInt + ""; + + // 랜덤문자열를 리턴 + return randomStr; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/SecurityUtil.java b/src/main/java/com/eactive/apim/portal/common/util/SecurityUtil.java new file mode 100644 index 0000000..f94d127 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/SecurityUtil.java @@ -0,0 +1,59 @@ +package com.eactive.apim.portal.common.util; + + +import com.eactive.apim.portal.apps.user.dto.PortalOrgDTO; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import java.util.Objects; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +public final class SecurityUtil { + + private SecurityUtil() { + // Utility class + throw new IllegalStateException("Utility class"); + } + + public static final String ANONYMOUS_USER = "anonymousUser"; + + public static boolean isAuthenticated() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + return authentication != null && authentication.getPrincipal() instanceof PortalAuthenticatedUser; + } + + public static String getCurrentLoginId() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && authentication.getPrincipal() instanceof PortalAuthenticatedUser) { + PortalAuthenticatedUser user = (PortalAuthenticatedUser) authentication.getPrincipal(); + return user.getLoginId(); + } + return "ANONYMOUS"; + } + + public static PortalAuthenticatedUser getPortalAuthenticatedUser() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && authentication.getPrincipal() instanceof PortalAuthenticatedUser) { + return (PortalAuthenticatedUser) authentication.getPrincipal(); + } + return null; + } + + public static boolean hasRole(String role) { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && authentication.getPrincipal() instanceof PortalAuthenticatedUser) { + PortalAuthenticatedUser user = (PortalAuthenticatedUser) authentication.getPrincipal(); + return user.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals(role)); + } + return false; + } + + public static PortalOrgDTO getUserOrg() { + PortalOrgDTO portalOrgDTO = new PortalOrgDTO(); + if (Objects.requireNonNull(getPortalAuthenticatedUser()).getPortalOrg() != null) { + portalOrgDTO.setOrgName(getPortalAuthenticatedUser().getPortalOrg().getOrgName()); + portalOrgDTO.setId(getPortalAuthenticatedUser().getPortalOrg().getId()); + } + + return portalOrgDTO; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/SpecificationUtil.java b/src/main/java/com/eactive/apim/portal/common/util/SpecificationUtil.java new file mode 100644 index 0000000..53cd2db --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/SpecificationUtil.java @@ -0,0 +1,102 @@ +package com.eactive.apim.portal.common.util; + +import org.hibernate.query.criteria.internal.path.PluralAttributePath; +import org.springframework.data.jpa.domain.Specification; + +import javax.persistence.criteria.*; +import java.util.Collection; + +@SuppressWarnings("all") +public final class SpecificationUtil { + + + private SpecificationUtil() { + throw new IllegalStateException("Utility class"); + } + + public static Path getPath(Root root, String column) { + + Path p = root; + + if (column.contains(".")) { + String[] columns = column.split("\\."); + + for (String s : columns) { + Path c = p.get(s); + + if (c instanceof PluralAttributePath) { + p = root.joinList(s); + } else { + p = p.get(s); + } + } + return p; + } else { + return root.get(column); + } + + } + + public static Specification notNull(String column) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.isNotNull(root.get(column)); + } + + public static Specification isNull(String column) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.isNull(root.get(column)); + } + + + public static Specification equalTo(String column, Object value) { + + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.equal(getPath(root, column), value); + } + + public static Specification equalToJoin(String table, String column, Object value) { + + return (root, criteriaQuery, criteriaBuilder) -> { + Join join = root.join(table, JoinType.INNER); + return criteriaBuilder.equal(join.get(column), value); + }; + } + + public static Specification equalToLeftJoin(String table, String column, Object value) { + + return (root, criteriaQuery, criteriaBuilder) -> { + Join join = root.join(table, JoinType.LEFT); + return criteriaBuilder.equal(join.get(column), value); + }; + } + + public static Specification notEqualTo(String column, Object value) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.notEqual(getPath(root, column), value); + } + + public static Specification like(String column, String value) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.like(criteriaBuilder.lower(getPath(root, column)), "%" + value.toLowerCase() + "%"); + } + + public static Specification in(String column, Collection value) { + return (root, criteriaQuery, criteriaBuilder) -> { + CriteriaBuilder.In in = criteriaBuilder.in(root.get(column)); + value.forEach(in::value); + return in; + }; + } + + public static Specification greater(String column, Object value) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.greaterThan(getPath(root, column), (Comparable) value); + } + + public static Specification greaterAndEqual(String column, Object value) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.greaterThanOrEqualTo(getPath(root, column), (Comparable) value); + } + + public static Specification less(String column, Object value) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.lessThan(getPath(root, column), (Comparable) value); + } + + public static Specification lessAndEqual(String column, Object value) { + return (root, criteriaQuery, criteriaBuilder) -> criteriaBuilder.lessThanOrEqualTo(getPath(root, column), (Comparable) value); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/util/StringMaskingUtil.java b/src/main/java/com/eactive/apim/portal/common/util/StringMaskingUtil.java new file mode 100644 index 0000000..c25609b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/util/StringMaskingUtil.java @@ -0,0 +1,74 @@ +package com.eactive.apim.portal.common.util; + +/** + * 문자열 마스킹 처리를 위한 유틸리티 클래스 + */ +public class StringMaskingUtil { + + // ID 비교 + private static boolean isOwner(String ownerId, String currentUserId) { + return currentUserId != null && ownerId != null && currentUserId.equals(ownerId); + } + + // null, empty 체크 + private static boolean isValidString(String str) { + return str != null && !str.isEmpty(); + } + + // 이름 마스킹 처리 + public static String maskName(String name, String ownerId, String currentUserId) { + if (!isValidString(name) || isOwner(ownerId, currentUserId)) { + return name; + } + + return name.length() > 1 ? + name.substring(0, name.length() - 1) + "*" : name; + } + + // 이메일 마스킹 처리 + public static String maskEmail(String email, String ownerId, String currentUserId) { + if (!isValidString(email) || isOwner(ownerId, currentUserId) || !email.contains("@")) { + return email; + } + + String[] parts = email.split("@", 2); + if (parts.length != 2) { + return email; + } + + String localPart = parts[0]; + String maskedLocal; + + if (localPart.length() <= 2) { + maskedLocal = "***"; + } else { + maskedLocal = localPart.substring(0, localPart.length() - 3) + "***"; + } + + return maskedLocal + "@" + parts[1]; + } + + // 휴대폰 번호 마스킹 처리 + public static String maskMobileNumber(String number, String ownerId, String currentUserId) { + if (!isValidString(number) || isOwner(ownerId, currentUserId)) { + return number; + } + + String[] parts = number.split("-", 3); + return parts.length == 3 ? + parts[0] + "-***-" + parts[2] : number; + } + + // 기존 메서드 오버로딩 (하위 호환성) + public static String maskName(String name) { + return maskName(name, null, null); + } + + public static String maskEmail(String email) { + return maskEmail(email, null, null); + } + + public static String maskMobileNumber(String number) { + return maskMobileNumber(number, null, null); + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/apim/portal/common/validator/AuthNumberMatch.java b/src/main/java/com/eactive/apim/portal/common/validator/AuthNumberMatch.java new file mode 100644 index 0000000..8b14bce --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/AuthNumberMatch.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = AuthNumberValidator.class) +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface AuthNumberMatch { + String message() default "인증 번호가 일치하지 않습니다."; + + Class[] groups() default {}; + + Class[] payload() default {}; + + String recipient(); + + String authField(); +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/AuthNumberValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/AuthNumberValidator.java new file mode 100644 index 0000000..deb1fb2 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/AuthNumberValidator.java @@ -0,0 +1,73 @@ +package com.eactive.apim.portal.common.validator; + +import com.eactive.apim.portal.apps.auth.service.AuthNumberService; +import com.eactive.apim.portal.common.util.ApplicationContextUtil; +import com.eactive.apim.portal.portaluser.service.AuthNumberException; +import org.apache.commons.beanutils.PropertyUtils; +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.Objects; + +public class AuthNumberValidator implements ConstraintValidator { + + private String recipientField; + private String authField; + + @Override + public void initialize(AuthNumberMatch constraintAnnotation) { + this.recipientField = constraintAnnotation.recipient(); + this.authField = constraintAnnotation.authField(); + } + + public boolean isValid(Object value, ConstraintValidatorContext context) { + String email = null; + String cellPhone = null; + String authValue = null; + + try { + email = (String) PropertyUtils.getProperty(value, this.recipientField); + cellPhone = (String) PropertyUtils.getProperty(value, "mobileNumber"); + authValue = (String) PropertyUtils.getProperty(value, this.authField); + } catch (Exception e) { + return false; + } + + if (Objects.isNull(email) && Objects.isNull(cellPhone)) { + return false; + } + if (Objects.isNull(authValue)) { + return false; + } + + AuthNumberService authNumberService = ApplicationContextUtil.getContext().getBean(AuthNumberService.class); + MessageSource messageSource = (MessageSource) ApplicationContextUtil.getContext().getBean("messageSource"); + + try { + boolean cellPhoneResult = authNumberService.verifyAuthNumber(cellPhone.replace("-", ""), authValue); + if (!cellPhoneResult) { + context.disableDefaultConstraintViolation(); + context.buildConstraintViolationWithTemplate(messageSource.getMessage("authnumber.not.match", null, "올바른 인증번호를 입력해주세요.", LocaleContextHolder.getLocale())) + .addPropertyNode(this.authField) + .addConstraintViolation(); + return false; + } + } catch (AuthNumberException e) { + context.disableDefaultConstraintViolation(); + if (e.getMessage().contains("만료")) { + context.buildConstraintViolationWithTemplate(messageSource.getMessage("authnumber.expired", null, "입력 시간이 초과되었습니다. 인증번호를 다시 발송해주세요.", LocaleContextHolder.getLocale())) + .addPropertyNode(this.authField) + .addConstraintViolation(); + } else { + context.buildConstraintViolationWithTemplate(e.getLocalizedMessage()) + .addPropertyNode(this.authField) + .addConstraintViolation(); + } + return false; + } + + return true; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/CellPhone.java b/src/main/java/com/eactive/apim/portal/common/validator/CellPhone.java new file mode 100644 index 0000000..4545f8e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/CellPhone.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = CellPhoneValidator.class) +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface CellPhone { + String message() default "휴대 전화 번호 형식이 올바르지 않습니다."; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/CellPhoneValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/CellPhoneValidator.java new file mode 100644 index 0000000..86cc89c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/CellPhoneValidator.java @@ -0,0 +1,66 @@ +package com.eactive.apim.portal.common.validator; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +@Component +public class CellPhoneValidator implements ConstraintValidator { + @Override + public void initialize(CellPhone constraintAnnotation) { + } + + @Override + public boolean isValid(String cellPhone, ConstraintValidatorContext constraintValidatorContext) { + if (StringUtils.isEmpty(cellPhone)) { + return false; + } + + // 하이픈이 포함된 경우의 처리 + if (cellPhone.contains("-")) { + String[] parts = cellPhone.split("-"); + if (parts.length != 3) { + return false; + } + + // 각 부분의 길이 체크 + if (!isValidPartLength(parts[0], parts[1], parts[2])) { + return false; + } + + cellPhone = parts[0]; // prefix만 체크하기 위해 + } else { + // 최소 길이 체크 (하이픈이 없는 경우) + if (cellPhone.length() <10){ + return false; + } + } + + // 기존의 prefix 체크 로직 유지 + return StringUtils.startsWith(cellPhone, "+821") || + StringUtils.startsWith(cellPhone, "821") || + StringUtils.startsWith(cellPhone, "010") || + StringUtils.startsWith(cellPhone, "011") || + StringUtils.startsWith(cellPhone, "016") || + StringUtils.startsWith(cellPhone, "017") || + StringUtils.startsWith(cellPhone, "018") || + StringUtils.startsWith(cellPhone, "019"); + } + + private boolean isValidPartLength(String prefix, String middle, String last) { + // prefix는 3자리 (010, 011 등) + // middle은 3-4자리 + // last는 4자리 + return prefix.length() == 3 && + (middle.length() == 3 || middle.length() == 4) && + last.length() == 4 && + isNumeric(middle) && + isNumeric(last); + } + + private boolean isNumeric(String str) { + return str.matches("\\d+"); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/CompRegNo.java b/src/main/java/com/eactive/apim/portal/common/validator/CompRegNo.java new file mode 100644 index 0000000..d28155c --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/CompRegNo.java @@ -0,0 +1,17 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = CompRegNoValidator.class) +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface CompRegNo { + String message() default "사업자 등록번호 형식이 올바르지 않습니다."; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/CompRegNoValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/CompRegNoValidator.java new file mode 100644 index 0000000..a933d8b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/CompRegNoValidator.java @@ -0,0 +1,50 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class CompRegNoValidator implements ConstraintValidator { + + @Override + public void initialize(CompRegNo constraintAnnotation) { + } + + @Override + public boolean isValid(String compRegNo, ConstraintValidatorContext context) { + if (isCompRegNoNullOrEmpty(compRegNo)) { + setValidationMessage(context, "사업자 등록번호를 입력해주세요."); + return false; + } + + if (!isCompRegNoFormatValid(compRegNo)) { + setValidationMessage(context, "사업자 등록번호는 3자리-2자리-5자리 형식이어야 합니다."); + return false; + } + + if (!isCompRegNoAllDigits(compRegNo)) { + setValidationMessage(context, "사업자 등록번호는 숫자만 입력해주세요."); + return false; + } + + return true; + } + + + private boolean isCompRegNoNullOrEmpty(String compRegNo) { + return compRegNo == null || compRegNo.isEmpty(); + } + + private boolean isCompRegNoFormatValid(String compRegNo) { + String[] parts = compRegNo.split("-"); + return parts.length == 3 && parts[0].length() == 3 && parts[1].length() == 2 && parts[2].length() == 5; + } + + private boolean isCompRegNoAllDigits(String compRegNo) { + return compRegNo.replaceAll("-", "").matches("\\d+"); + } + + private void setValidationMessage(ConstraintValidatorContext context, String message) { + context.disableDefaultConstraintViolation(); + context.buildConstraintViolationWithTemplate(message).addConstraintViolation(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/CorpRegNo.java b/src/main/java/com/eactive/apim/portal/common/validator/CorpRegNo.java new file mode 100644 index 0000000..6261b36 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/CorpRegNo.java @@ -0,0 +1,17 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = CorpRegNoValidator.class) +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface CorpRegNo { + String message() default "법인 등록번호 형식이 올바르지 않습니다."; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/CorpRegNoValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/CorpRegNoValidator.java new file mode 100644 index 0000000..258f488 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/CorpRegNoValidator.java @@ -0,0 +1,49 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class CorpRegNoValidator implements ConstraintValidator { + + @Override + public void initialize(CorpRegNo constraintAnnotation) { + } + + @Override + public boolean isValid(String CorpRegNo, ConstraintValidatorContext context) { + if (isCorpRegNoNullOrEmpty(CorpRegNo)) { + setMessage(context, "법인 등록번호를 입력해주세요."); + return false; + } + + if (!isCorpRegNoFormatValid(CorpRegNo)) { + setMessage(context, "법인 등록번호는 6자리-7자리 형식이어야 합니다."); + return false; + } + + if (!isCorpRegNoAllDigits(CorpRegNo)) { + setMessage(context, "법인 등록번호는 숫자만 입력해주세요."); + return false; + } + return true; + } + + private boolean isCorpRegNoNullOrEmpty(String CorpRegNo) { + return CorpRegNo == null || CorpRegNo.isEmpty(); + } + + private boolean isCorpRegNoFormatValid(String CorpRegNo) { + String[] parts = CorpRegNo.split("-"); + return parts.length != 2 || parts[0].length() != 6 || parts[1].length() != 7; + } + + private boolean isCorpRegNoAllDigits(String CorpRegNo) { + return CorpRegNo.replaceAll("-", "").matches("\\d+"); + } + + private void setMessage(ConstraintValidatorContext context, String message) { + context.disableDefaultConstraintViolation(); + context.buildConstraintViolationWithTemplate(message).addConstraintViolation(); + } +} + diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PasswordMatch.java b/src/main/java/com/eactive/apim/portal/common/validator/PasswordMatch.java new file mode 100644 index 0000000..a60588f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PasswordMatch.java @@ -0,0 +1,21 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = PasswordMatchValidator.class) +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface PasswordMatch { + String message() default "{password.not.match}"; + + Class[] groups() default {}; + + Class[] payload() default {}; + + String input(); + + String confirm(); +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PasswordMatchValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/PasswordMatchValidator.java new file mode 100644 index 0000000..e53908e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PasswordMatchValidator.java @@ -0,0 +1,51 @@ +package com.eactive.apim.portal.common.validator; + +import com.eactive.apim.portal.common.util.ApplicationContextUtil; +import org.apache.commons.beanutils.PropertyUtils; +import org.springframework.context.MessageSource; +import org.springframework.context.i18n.LocaleContextHolder; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.Objects; + +public class PasswordMatchValidator implements ConstraintValidator { + + private String field1; + private String field2; + + @Override + public void initialize(PasswordMatch constraintAnnotation) { +// ConstraintValidator.super.initialize(constraintAnnotation); + this.field1 = constraintAnnotation.input(); + this.field2 = constraintAnnotation.confirm(); + } + + @Override + public boolean isValid(Object value, ConstraintValidatorContext context) { + Object passwordValue = null; + Object password2Value = null; + + try { + passwordValue = PropertyUtils.getProperty(value, field1); + password2Value = PropertyUtils.getProperty(value, field2); + } catch (Exception e) { + return false; + } + if (Objects.isNull(passwordValue) || Objects.isNull(password2Value)) { + return false; + } + + MessageSource messageSource = (MessageSource) ApplicationContextUtil.getContext().getBean("messageSource"); + String message = messageSource.getMessage("password.not.match", null, LocaleContextHolder.getLocale()); + + if (!passwordValue.equals(password2Value)) { + context.disableDefaultConstraintViolation(); + context.buildConstraintViolationWithTemplate(message) + .addPropertyNode(field2) + .addConstraintViolation(); + return false; + } + return true; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PasswordRule.java b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRule.java new file mode 100644 index 0000000..8ac06b2 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRule.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = PasswordRuleValidator.class) +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface PasswordRule { + String message() default "비밀 번호 규칙에 부합하지 않습니다.(영문/숫자/특수문자 포함 8~20자, 3자리 이상 연속,반복 문자 불가)"; + + Class[] groups() default {}; + + Class[] payload() default {}; + +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleForKbank.java b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleForKbank.java new file mode 100644 index 0000000..9e2af6f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleForKbank.java @@ -0,0 +1,28 @@ +package com.eactive.apim.portal.common.validator; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.validation.Constraint; +import javax.validation.Payload; + +@Constraint(validatedBy = PasswordRuleForKbankValidator.class) +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface PasswordRuleForKbank { + String message() default "비밀 번호 규칙에 부합하지 않습니다.(영문/숫자/특수문자 포함 8~20자, 아이디, 휴대전화, 3자리 이상 연속,반복 문자 불가)"; + + Class[] groups() default {}; + + Class[] payload() default {}; + + String password(); + + String loginId(); + + String mobile(); + +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleForKbankValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleForKbankValidator.java new file mode 100644 index 0000000..81d3cff --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleForKbankValidator.java @@ -0,0 +1,144 @@ +package com.eactive.apim.portal.common.validator; + +import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import org.apache.commons.beanutils.PropertyUtils; + +/** + * Created by Sungpil Hyun + */ +public class PasswordRuleForKbankValidator implements ConstraintValidator { + + // 최소 8자, 최대 20자 상수 선언 + private static final int MIN = 8; + private static final int MAX = 20; + + private String password; + private String loginId; + private String mobileNumber; + + // 3자리 연속 문자 정규식 + private static final String SAMEPT = "(\\w)\\1\\1"; + // 공백 문자 정규식 + private static final String BLANKPT = "(\\s)"; + + @Override + public void initialize(PasswordRuleForKbank constraintAnnotation) { + this.password = constraintAnnotation.password(); + this.loginId = constraintAnnotation.loginId(); + this.mobileNumber = constraintAnnotation.mobile(); + } + + @Override + public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) { + + String passwordValue = null; + String loginIdValue = null; + String mobileNumberValue = null; + + try { + passwordValue = (String) PropertyUtils.getProperty(value, this.password); + loginIdValue = (String) PropertyUtils.getProperty(value, this.loginId); + mobileNumberValue = (String) PropertyUtils.getProperty(value, this.mobileNumber); + } catch (Exception e) { + return false; + } + + return isValid(passwordValue, loginIdValue, mobileNumberValue); + } + + public boolean isValid(String password, String loginId, String mobileNumber) { + // 영어, 숫자, 특수문자 포함한 MIN to MAX 글자 정규식 + String REGEX = "^((?=.*\\d)(?=.*[a-zA-Z])(?=.*[\\W]).{" + MIN + "," + MAX + "})$"; + + // 정규식 검사객체 + Matcher matcher; + + // 공백 체크 + if (password == null || "".equals(password)) { + return false; + } + + // ASCII 문자 비교를 위한 UpperCase + String tmpPw = password.toUpperCase(); + // 문자열 길이 + int strLen = tmpPw.length(); + + // 글자 길이 체크 + if (strLen > 20 || strLen < 8) { + return false; + } + + if (loginId != null && !loginId.isEmpty()) { + String[] loginParts = loginId.split("@"); + if (loginParts.length > 0) { + String username = loginParts[0].toUpperCase(); + if (tmpPw.contains(username)) { + return false; + } + } + } + + // Mobile number validation + if (mobileNumber != null && !mobileNumber.isEmpty()) { + String[] mobileParts = mobileNumber.split("-"); + for (String part : mobileParts) { + if (!part.isEmpty() && tmpPw.contains(part)) { + return false; + } + } + } + + // 공백 체크 + matcher = Pattern.compile(BLANKPT).matcher(tmpPw); + if (matcher.find()) { + return false; + } + + // 비밀번호 정규식 체크 + matcher = Pattern.compile(REGEX).matcher(tmpPw); + if (!matcher.find()) { + return false; + } + + // 동일한 문자 3개 이상 체크 + matcher = Pattern.compile(SAMEPT).matcher(tmpPw); + if (matcher.find()) { + return false; + } + + // 연속된 문자 / 숫자 3개 이상 체크 + // ASCII Char를 담을 배열 선언 + int[] tmpArray = new int[strLen]; + + // Make Array + for (int i = 0; i < strLen; i++) { + tmpArray[i] = tmpPw.charAt(i); + } + + // Validation Array + for (int i = 0; i < strLen - 2; i++) { + if (isContinuous(tmpArray[i], tmpArray[i + 2]) && isContinuous(tmpArray[i], tmpArray[i + 1], tmpArray[i + 2])) { + return false; + } + } + // Validation Complete + return true; + } + + + + static boolean isContinuous(int first, int third) { + // 첫 글자 A-Z / 0-9 + return (first > 47 && third < 58) || (first > 64 && third < 91); + } + + static boolean isContinuous(int first, int second, int third) { + // 배열의 연속된 수 검사 + // 3번째 글자 - 2번째 글자 = 1, 3번째 글자 - 1번째 글자 = 2 + return Math.abs(third - second) == 1 && Math.abs(third - first) == 2; + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleValidator.java new file mode 100644 index 0000000..0dc962b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PasswordRuleValidator.java @@ -0,0 +1,98 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created by Sungpil Hyun + */ +public class PasswordRuleValidator implements ConstraintValidator { + + // 최소 8자, 최대 20자 상수 선언 + private static final int MIN = 8; + private static final int MAX = 20; + + // 3자리 연속 문자 정규식 + private static final String SAMEPT = "(\\w)\\1\\1"; + // 공백 문자 정규식 + private static final String BLANKPT = "(\\s)"; + + @Override + public void initialize(PasswordRule constraintAnnotation) { + } + + @Override + public boolean isValid(String password, ConstraintValidatorContext constraintValidatorContext) { + + // 영어, 숫자, 특수문자 포함한 MIN to MAX 글자 정규식 + String REGEX = "^((?=.*\\d)(?=.*[a-zA-Z])(?=.*[\\W]).{" + MIN + "," + MAX + "})$"; + + // 정규식 검사객체 + Matcher matcher; + + // 공백 체크 + if (password == null || "".equals(password)) { + return false; + } + + // ASCII 문자 비교를 위한 UpperCase + String tmpPw = password.toUpperCase(); + // 문자열 길이 + int strLen = tmpPw.length(); + + // 글자 길이 체크 + if (strLen > 20 || strLen < 8) { + return false; + } + + // 공백 체크 + matcher = Pattern.compile(BLANKPT).matcher(tmpPw); + if (matcher.find()) { + return false; + } + + // 비밀번호 정규식 체크 + matcher = Pattern.compile(REGEX).matcher(tmpPw); + if (!matcher.find()) { + return false; + } + + // 동일한 문자 3개 이상 체크 + matcher = Pattern.compile(SAMEPT).matcher(tmpPw); + if (matcher.find()) { + return false; + } + + // 연속된 문자 / 숫자 3개 이상 체크 + // ASCII Char를 담을 배열 선언 + int[] tmpArray = new int[strLen]; + + // Make Array + for (int i = 0; i < strLen; i++) { + tmpArray[i] = tmpPw.charAt(i); + } + + // Validation Array + for (int i = 0; i < strLen - 2; i++) { + if (isContinuous(tmpArray[i], tmpArray[i + 2]) && isContinuous(tmpArray[i], tmpArray[i + 1], tmpArray[i + 2])) { + return false; + } + } + // Validation Complete + return true; + } + + static boolean isContinuous(int first, int third) { + // 첫 글자 A-Z / 0-9 + return (first > 47 && third < 58) || (first > 64 && third < 91); + } + + static boolean isContinuous(int first, int second, int third) { + // 배열의 연속된 수 검사 + // 3번째 글자 - 2번째 글자 = 1, 3번째 글자 - 1번째 글자 = 2 + return Math.abs(third - second) == 1 && Math.abs(third - first) == 2; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PhoneNumber.java b/src/main/java/com/eactive/apim/portal/common/validator/PhoneNumber.java new file mode 100644 index 0000000..10f17f0 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PhoneNumber.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = PhoneNumberValidator.class) +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented + +public @interface PhoneNumber { + String message() default "전화번호의 형식이 올바르지 않습니다."; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/PhoneNumberValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/PhoneNumberValidator.java new file mode 100644 index 0000000..5d0e10e --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/PhoneNumberValidator.java @@ -0,0 +1,34 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class PhoneNumberValidator implements ConstraintValidator { + + @Override + public void initialize(PhoneNumber constraintAnnotation) { + } + + @Override + public boolean isValid(String phoneNumber, ConstraintValidatorContext context) { + if (phoneNumber == null || phoneNumber.trim().isEmpty()) { + setErrorMessage(context, "전화번호를 입력해주세요."); + return false; + } + + // 하이픈이 포함된 전화번호 형식 검증 + // 패턴: (없음 or 2~4자리)-3~4자리-4자리 + if (!phoneNumber.matches("^(국번없음|\\d{2,4})-\\d{3,4}-\\d{4}$")) { + setErrorMessage(context, "전화번호 형식이 올바르지 않습니다."); + return false; + } + + return true; + } + + private void setErrorMessage(ConstraintValidatorContext context, String message) { + context.disableDefaultConstraintViolation(); + context.buildConstraintViolationWithTemplate(message) + .addConstraintViolation(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/UniqueId.java b/src/main/java/com/eactive/apim/portal/common/validator/UniqueId.java new file mode 100644 index 0000000..ca01466 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/UniqueId.java @@ -0,0 +1,17 @@ +package com.eactive.apim.portal.common.validator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.*; + +@Constraint(validatedBy = UniqueLoginIdValidator.class) +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface UniqueId { + String message() default "아이디가 사용중입니다."; + + Class[] groups() default {}; + + Class[] payload() default {}; +} diff --git a/src/main/java/com/eactive/apim/portal/common/validator/UniqueLoginIdValidator.java b/src/main/java/com/eactive/apim/portal/common/validator/UniqueLoginIdValidator.java new file mode 100644 index 0000000..a343d34 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/validator/UniqueLoginIdValidator.java @@ -0,0 +1,25 @@ +package com.eactive.apim.portal.common.validator; + +import com.eactive.apim.portal.apps.user.service.PortalUserService; +import com.eactive.apim.portal.common.util.ApplicationContextUtil; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class UniqueLoginIdValidator implements ConstraintValidator { + + @Override + public void initialize(UniqueId uniqueId) { + // 초기화가 필요한 경우 여기에 처리 + } + + @Override + public boolean isValid(String id, ConstraintValidatorContext constraintValidatorContext) { + // ApplicationContextUtil을 통해 PortalUserService를 가져옴 + PortalUserService userService = ApplicationContextUtil.getContext().getBean(PortalUserService.class); + + // existsByLoginId() 메서드를 사용하여 사용자 중복 여부 확인 + return !userService.existsByLoginId(id); // 사용자 ID가 존재하지 않으면 유효함 + } +} + diff --git a/src/main/java/com/eactive/apim/portal/config/AuditorAwareImpl.java b/src/main/java/com/eactive/apim/portal/config/AuditorAwareImpl.java new file mode 100644 index 0000000..548bc35 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/AuditorAwareImpl.java @@ -0,0 +1,16 @@ +package com.eactive.apim.portal.config; + +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import java.util.Optional; +import org.springframework.data.domain.AuditorAware; + +public class AuditorAwareImpl implements AuditorAware { + + @Override + public Optional getCurrentAuditor() { + return Optional.ofNullable(SecurityUtil.getPortalAuthenticatedUser()) + .map(PortalUser::getId); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/config/EmsDatasourceProperties.java b/src/main/java/com/eactive/apim/portal/config/EmsDatasourceProperties.java new file mode 100644 index 0000000..511a5fb --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/EmsDatasourceProperties.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "ems.datasource") +@Data +public class EmsDatasourceProperties { + + private String url; + private String username; + private String password; + private String databaseName; + private String serverName; + private int portNumber; +} diff --git a/src/main/java/com/eactive/apim/portal/config/GatewayDataSourceProperties.java b/src/main/java/com/eactive/apim/portal/config/GatewayDataSourceProperties.java new file mode 100644 index 0000000..8204387 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/GatewayDataSourceProperties.java @@ -0,0 +1,18 @@ +package com.eactive.apim.portal.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "gateway.datasource") +public class GatewayDataSourceProperties { + + private String url; + private String username; + private String password; + private String databaseName; + private String serverName; + private int portNumber; +} diff --git a/src/main/java/com/eactive/apim/portal/config/PasswordEncoderConfig.java b/src/main/java/com/eactive/apim/portal/config/PasswordEncoderConfig.java new file mode 100644 index 0000000..fc96d69 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PasswordEncoderConfig.java @@ -0,0 +1,15 @@ +package com.eactive.apim.portal.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.crypto.password.StandardPasswordEncoder; + +@Configuration +public class PasswordEncoderConfig { + + @Bean + public PasswordEncoder passwordEncoder() { + return new StandardPasswordEncoder(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationFailureHandler.java b/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationFailureHandler.java new file mode 100644 index 0000000..e2bb337 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationFailureHandler.java @@ -0,0 +1,71 @@ +package com.eactive.apim.portal.config; + +import com.eactive.apim.portal.apps.login.constants.LoginConstants; +import com.eactive.apim.portal.apps.user.service.PortalUserLogService; +import com.eactive.apim.portal.common.exception.UserNotFoundException; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; +import java.io.IOException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.web.authentication.AuthenticationFailureHandler; +import org.springframework.security.web.authentication.session.SessionAuthenticationException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * Created by Sungpil Hyun + */ +@Service +@Transactional +public class PortalAuthenticationFailureHandler implements AuthenticationFailureHandler { + + private static final Logger logger = LoggerFactory.getLogger(PortalAuthenticationFailureHandler.class); + private final PortalUserRepository portalUserRepository; + private final PortalUserLogService userLogService; + + public PortalAuthenticationFailureHandler(PortalUserRepository portalUserRepository, PortalUserLogService userLogService) { + this.portalUserRepository = portalUserRepository; + this.userLogService = userLogService; + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW, noRollbackFor = {AuthenticationException.class, UserNotFoundException.class}) + public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException { + String username = request.getParameter("id"); + String ip = request.getRemoteAddr(); + String sessionId = request.getSession().getId(); + + if (exception instanceof SessionAuthenticationException) { + logger.error(exception.getLocalizedMessage()); + } else if (!(exception instanceof UsernameNotFoundException)) { + try { + PortalUser user = portalUserRepository.findPortalUserByEmailAddr(username) + .orElseThrow(() -> new UserNotFoundException(username)); + + user.setLoginFailureCount(user.getLoginFailureCount() + 1); + if (user.getLoginFailureCount() >= 5) { + user.setAccountLockYn("Y"); + } + portalUserRepository.save(user); + } catch (UserNotFoundException e) { + logger.error("{} login try {}", username, e.getMessage()); + } + } + + userLogService.logFailure(username, ip, sessionId); + + HttpSession session = request.getSession(); + session.setAttribute(LoginConstants.LOGIN_MESSAGE, exception.getLocalizedMessage()); + session.setAttribute("loginId", username); + String contextPath = request.getContextPath(); + response.sendRedirect(contextPath + "/login"); + } +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationManager.java b/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationManager.java new file mode 100644 index 0000000..e089e85 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationManager.java @@ -0,0 +1,91 @@ +package com.eactive.apim.portal.config; + + +import com.eactive.apim.portal.apps.user.service.PortalUserAuthService; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.portalorg.entity.PortalOrgEnums; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; + +import java.util.Base64; + +import lombok.RequiredArgsConstructor; +import org.springframework.security.authentication.*; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class PortalAuthenticationManager implements AuthenticationManager { + + private final PortalUserAuthService portalUserAuthService; + private final PasswordEncoder passwordEncoder; + + private String decodePassword(String encodedPassword) { + try { + // Reverse the string and decode from Base64 + String reversed = new StringBuilder(encodedPassword).reverse().toString(); + return new String(Base64.getDecoder().decode(reversed)); + } catch (Exception e) { + throw new BadCredentialsException("Password decoding failed", e); + } + } + + @Override + @Transactional(noRollbackFor = {AuthenticationException.class}) + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication; + String username = token.getName(); + String encodedPassword = token.getCredentials().toString(); + String decodedPassword = decodePassword(encodedPassword); + + PortalAuthenticatedUser user = (PortalAuthenticatedUser) portalUserAuthService.loadUserByUsername(username); + + // 비밀번호 검증 + if (!passwordEncoder.matches(decodedPassword, user.getPassword())) { + throw new BadCredentialsException("아이디 또는 비밀번호가 일치하지 않습니다."); + } + + // DORMANT 상태 체크 + if (user.getUserStatus().equals(PortalUserEnums.UserStatus.DORMANT)) { + UsernamePasswordAuthenticationToken authorityToken = + new UsernamePasswordAuthenticationToken(user, decodedPassword, user.getAuthorities()); + authorityToken.setDetails(user); + SecurityContextHolder.getContext().setAuthentication(authorityToken); + return authorityToken; + } + + if (user.getApprovalStatus().equals(PortalUserEnums.ApprovalStatus.PENDING)) { + throw new DisabledException("사용자 승인 대기중입니다. "); + } + + if (user.getUserStatus().equals(PortalUserEnums.UserStatus.READY)) { + throw new DisabledException("이메일 인증이 완료되지 않았습니다. 인증 메일을 확인해주세요."); + } + + if (user.getUserStatus().equals(PortalUserEnums.UserStatus.ADMINBLOCK)) { + throw new DisabledException("법인 관리자에 의해 비활성화된 계정입니다. 법인 관리자에게 문의하시기 바랍니다."); + } + + if (user.getPortalOrg() != null) { + if (!user.getPortalOrg().getApprovalStatus().equals(PortalOrgEnums.ApprovalStatus.COMPLETED)) { + throw new DisabledException("로그인할 수 없습니다. 관리자에게 문의하세요."); + } + } + + if (!user.isAccountNonLocked()) { + throw new LockedException("로그인할 수 없습니다. 관리자에게 문의하세요."); + } + + UsernamePasswordAuthenticationToken authorityToken = + new UsernamePasswordAuthenticationToken(user, decodedPassword, user.getAuthorities()); + authorityToken.setDetails(user); + SecurityContextHolder.getContext().setAuthentication(authorityToken); + return authorityToken; + + } +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationSuccessHandler.java b/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationSuccessHandler.java new file mode 100644 index 0000000..77f90ad --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalAuthenticationSuccessHandler.java @@ -0,0 +1,113 @@ +package com.eactive.apim.portal.config; + +import com.eactive.apim.portal.apps.user.service.PortalUserLogService; +import com.eactive.apim.portal.portaluser.entity.PortalUser; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums; +import com.eactive.apim.portal.portaluser.entity.UserPasswordHistory; +import com.eactive.apim.portal.portaluser.repository.PortalUserRepository; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.Optional; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.eactive.apim.portal.portaluser.repository.UserPasswordHistoryRepository; +import com.eactive.apim.portal.template.entity.MessageRequest; +import com.eactive.apim.portal.template.entity.MessageRequestEnums; +import com.eactive.apim.portal.template.repository.MessageRequestRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.AuthenticationSuccessHandler; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +@Service +@Transactional +@RequiredArgsConstructor +public class PortalAuthenticationSuccessHandler implements AuthenticationSuccessHandler { + + private final PortalUserRepository portalUserRepository; + private final PortalProperties portalProperties; + private final PortalUserLogService userLogService; + private final UserPasswordHistoryRepository passwordHistoryRepository; + private final MessageRequestRepository messageRequestRepository; + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, + Authentication authentication) throws IOException, ServletException { + String username = request.getParameter("id"); + PortalUser user = portalUserRepository.findPortalUserByEmailAddr(username).get(); + user.setLoginFailureCount(0); + portalUserRepository.save(user); + + String ip = request.getRemoteAddr(); + String sessionId = request.getSession().getId(); + userLogService.logSuccess(username, ip, sessionId); + + String contextPath = request.getContextPath(); + HttpSession session = request.getSession(); + + // 세션에 상태 저장 + if (isDormantAccount(user)) { + session.setAttribute("success", "90일 이상 미접속하여 계정이 잠금 처리되었습니다. 본인인증 후 이용해주세요."); + session.setAttribute("dormantAccount", true); + session.setAttribute("dormantLoginId", username); + session.setAttribute("redirectUrl", contextPath + "/dormant_account"); + } else if (isTemporaryPasswordLogin(user)) { + session.setAttribute("success", "임시 비밀번호로 로그인하셨습니다.
계정 보안을 위해 비밀번호를 변경해 주세요."); + session.setAttribute("passwordExpired", true); + session.setAttribute("redirectUrl", contextPath + "/new_password"); + } else if (isPasswordChangeRequired(user)) { + session.setAttribute("success", "비밀번호를 변경한 지 90일이 경과하였습니다.
계정 보안을 위해 비밀번호를 변경해 주세요."); + session.setAttribute("passwordExpired", true); + session.setAttribute("redirectUrl", contextPath + "/new_password"); + } + + String decisionToken = (String) request.getSession().getAttribute("decisionToken"); + if (decisionToken != null) { + response.sendRedirect(contextPath + "/signup/decision_process"); + } else { + response.sendRedirect(contextPath + "/"); + } + } + + private boolean isPasswordChangeRequired(PortalUser user) { + // 가장 최근 비밀번호 변경 이력 조회 + Optional latestHistory = passwordHistoryRepository + .findTopByUserIdOrderByChangeDateDesc(user.getId()); + + // 비밀번호 변경 이력이 있는 경우 + if (latestHistory.isPresent()) { + LocalDateTime lastChangeDate = latestHistory.get().getChangeDate(); + return LocalDateTime.now() + .minusDays(portalProperties.getPasswordExpirationDays()) + .isAfter(lastChangeDate); + } + + return LocalDateTime.now() + .minusDays(portalProperties.getPasswordExpirationDays()) + .isAfter(user.getCreatedDate()); + } + + private boolean isTemporaryPasswordLogin(PortalUser user) { + Optional latestResetRequest = messageRequestRepository.findFirstByEmailAndMessageCodeOrderByRequestDateDesc(user.getLoginId(), MessageRequestEnums.MessageCode.USER_PASSWORD_RESET); + + if (latestResetRequest.isPresent()) { + + // 가장 최근 비밀번호 변경 이력 조회 + Optional latestHistory = passwordHistoryRepository + .findTopByUserIdOrderByChangeDateDesc(user.getId()); + return !latestHistory.isPresent() || latestHistory.get().getChangeDate().isBefore(latestResetRequest.get().getRequestDate()); + } + return false; + } + + private boolean isDormantAccount(PortalUser user) { + return PortalUserEnums.UserStatus.DORMANT.equals(user.getUserStatus()); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java new file mode 100644 index 0000000..cb33855 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigGatewayDatasource.java @@ -0,0 +1,75 @@ +package com.eactive.apim.portal.config; + +import com.eactive.eai.data.jpa.BaseRepositoryImpl; +import java.util.HashMap; +import java.util.Properties; +import javax.sql.DataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; + +@Configuration +@EnableJpaRepositories(basePackages = {"com.eactive.apim.gateway"}, + repositoryBaseClass = BaseRepositoryImpl.class, + entityManagerFactoryRef = "gatewayEntityManagerFactory") +@EnableJpaAuditing(auditorAwareRef = "auditorProvider") +public class PortalConfigGatewayDatasource { + + @Autowired + private GatewayDataSourceProperties gatewayDataSourceProperties; + + @Bean + public DataSource gatewayDataSource() { + AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean(); + dataSource.setBeanName("gatewayDataSource"); + dataSource.setUniqueResourceName("gatewayDataSource"); + dataSource.setMinPoolSize(5); + dataSource.setMaxPoolSize(10); + dataSource.setMaxIdleTime(60); // seconds + dataSource.setBorrowConnectionTimeout(30); // seconds + dataSource.setTestQuery("SELECT 1"); + dataSource.setMaintenanceInterval(60); + dataSource.setXaDataSourceClassName("com.mysql.cj.jdbc.MysqlXADataSource"); + + Properties xaProperties = new Properties(); + xaProperties.setProperty("serverName", gatewayDataSourceProperties.getServerName()); + xaProperties.setProperty("portNumber", String.valueOf(gatewayDataSourceProperties.getPortNumber())); + xaProperties.setProperty("databaseName", gatewayDataSourceProperties.getDatabaseName()); + xaProperties.setProperty("user", gatewayDataSourceProperties.getUsername()); + xaProperties.setProperty("password", gatewayDataSourceProperties.getPassword()); + xaProperties.setProperty("useSSL", "false"); + xaProperties.setProperty("autoReconnect", "true"); + xaProperties.setProperty("failOverReadOnly", "false"); + xaProperties.setProperty("maxReconnects", "3"); + xaProperties.setProperty("allowPublicKeyRetrieval", "true"); + dataSource.setXaProperties(xaProperties); + return dataSource; + } + + @Bean(name = "gatewayEntityManagerFactory") + public LocalContainerEntityManagerFactoryBean gatewayEntityManagerFactory( + EntityManagerFactoryBuilder builder, + @Qualifier("gatewayDataSource") DataSource dataSource) { + HashMap properties = new HashMap<>(); + //public interface AvailableSettings extends org.hibernate.jpa.AvailableSettings 참고 + properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect"); + properties.put("hibernate.connection.handling_mode", "DELAYED_ACQUISITION_AND_RELEASE_AFTER_TRANSACTION"); + properties.put("hibernate.transaction.jta.platform", "org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform"); + properties.put("hibernate.physical_naming_strategy", "com.eactive.apim.portal.common.entity.CustomPhysicalNamingStrategy"); + properties.put("javax.persistence.validation.mode", "none"); + properties.put("javax.persistence.transactionType", "JTA"); + + return builder + .dataSource(dataSource) + .packages("com.eactive.eai.data.entity.onl") + .persistenceUnit("gateway") + .properties(properties) + .build(); + } +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigLog.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigLog.java new file mode 100644 index 0000000..dc3b892 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigLog.java @@ -0,0 +1,41 @@ +package com.eactive.apim.portal.config; + +import com.eactive.apim.portal.common.util.SecurityUtil; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +@Aspect +@Configuration +public class PortalConfigLog { + + @Pointcut("@annotation(org.springframework.web.bind.annotation.GetMapping) || " + + "@annotation(org.springframework.web.bind.annotation.PostMapping)") + private void requestMappingMethods() { + } + + @Before("requestMappingMethods()") + public void logRequest(JoinPoint joinPoint) { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()) + .getRequest(); + String method = request.getMethod(); + String path = request.getRequestURI(); + String query = request.getQueryString(); + String ip = request.getRemoteAddr(); + + String user = SecurityUtil.getCurrentLoginId(); + + String message = String.format("Request: %s %s?%s from %s by %s", method, path, query, ip, user); + Logger logger = LoggerFactory.getLogger(joinPoint.getTarget().getClass()); + logger.info(message); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigMessageSource.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigMessageSource.java new file mode 100644 index 0000000..0e2bf58 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigMessageSource.java @@ -0,0 +1,38 @@ +package com.eactive.apim.portal.config; + +import com.eactive.apim.portal.common.message.PortalReloadableResourceBundleMessageSource; +import java.util.Arrays; +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ReloadableResourceBundleMessageSource; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; + +/** + * @author Sungpil Hyun + * @version : 1.0 + * @ClassName : PortalConfigMessageSource.java + * @Description : Validator 설정 + * @since : 2021. 7. 20 + */ +@Configuration +public class PortalConfigMessageSource { + + /** + * @return [Resource 설정] 메세지 Properties 경로 설정 + */ + @Bean + public ReloadableResourceBundleMessageSource messageSource() { + PortalReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new PortalReloadableResourceBundleMessageSource(); + reloadableResourceBundleMessageSource.setEgovBaseNames(Arrays.asList("classpath*:message/**/*")); + return reloadableResourceBundleMessageSource; + } + + @Bean + public LocalValidatorFactoryBean validator(MessageSource messageSource) { + LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean(); + factoryBean.setValidationMessageSource(messageSource); + return factoryBean; + } + +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java new file mode 100644 index 0000000..b4c76a5 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigPortalDatasource.java @@ -0,0 +1,123 @@ +package com.eactive.apim.portal.config; + +import com.eactive.eai.data.jpa.BaseRepositoryImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.domain.AuditorAware; +import org.springframework.data.envers.repository.support.EnversRevisionRepositoryFactoryBean; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; + +import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Properties; + +/** + * @author Sungpil Hyun + * @version : 1.0 + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일              수정자               수정내용
+ *  -------------  ------------   ---------------------
+ *
+ * 
+ * @ClassName : PortalConfigAppDatasource.java + * @Description : DataSource 설정 + * @since : + */ +@Configuration +@EnableJpaRepositories(basePackages = "com.eactive.apim.portal", + repositoryBaseClass = BaseRepositoryImpl.class, + repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBean.class) +@EntityScan(basePackages = "com.eactive.apim.portal") +@EnableJpaAuditing(auditorAwareRef = "auditorProvider") +public class PortalConfigPortalDatasource { + + @Autowired + private EmsDatasourceProperties emsDatasourceProperties; + + @Primary + @Bean + public DataSource portalDataSource() { + AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean(); + dataSource.setBeanName("portalDataSource"); + dataSource.setUniqueResourceName("portalDataSource"); + dataSource.setMinPoolSize(5); + dataSource.setMaxPoolSize(10); + dataSource.setMaxIdleTime(60); // seconds + dataSource.setBorrowConnectionTimeout(30); // seconds + dataSource.setTestQuery("SELECT 1"); + dataSource.setMaintenanceInterval(60); + dataSource.setXaDataSourceClassName("com.mysql.cj.jdbc.MysqlXADataSource"); + Properties xaProperties = new Properties(); + xaProperties.setProperty("serverName", emsDatasourceProperties.getServerName()); + xaProperties.setProperty("portNumber", String.valueOf(emsDatasourceProperties.getPortNumber())); + xaProperties.setProperty("databaseName", emsDatasourceProperties.getDatabaseName()); + xaProperties.setProperty("user", emsDatasourceProperties.getUsername()); + xaProperties.setProperty("password", emsDatasourceProperties.getPassword()); + xaProperties.setProperty("useSSL", "false"); + xaProperties.setProperty("autoReconnect", "true"); + xaProperties.setProperty("failOverReadOnly", "false"); + xaProperties.setProperty("maxReconnects", "3"); + xaProperties.setProperty("allowPublicKeyRetrieval", "true"); + + dataSource.setXaProperties(xaProperties); + return dataSource; + } + + @Primary + @Bean(name = "entityManagerFactory") + public LocalContainerEntityManagerFactoryBean entityManagerFactory( + EntityManagerFactoryBuilder builder, + @Qualifier("portalDataSource") DataSource dataSource) { + HashMap properties = new HashMap<>(); + //public interface AvailableSettings extends org.hibernate.jpa.AvailableSettings 참고 + properties.put("hibernate.cache.use_second_level_cache", "false"); + properties.put("hibernate.cache.use_query_cache", "false"); + properties.put("hibernate.connection.autocommit", "false"); + properties.put("hibernate.connection.handling_mode", "DELAYED_ACQUISITION_AND_RELEASE_AFTER_TRANSACTION"); + properties.put("hibernate.connection.provider_disables_autocommit", "true"); + properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect"); + properties.put("hibernate.format_sql", "true"); + properties.put("hibernate.physical_naming_strategy", "com.eactive.apim.portal.common.entity.CustomPhysicalNamingStrategy"); + properties.put("hibernate.show_sql", "true"); + properties.put("hibernate.transaction.jta.platform", "org.hibernate.engine.transaction.jta.platform.internal.AtomikosJtaPlatform"); + properties.put("hibernate.use_sql_comments", "true"); + properties.put("javax.persistence.validation.mode", "none"); + properties.put("javax.persistence.transactionType", "JTA"); + + + // Envers properties org.hibernate.envers.configuration.EnversSettings 참고 + properties.put("org.hibernate.envers.audit_strategy", "org.hibernate.envers.strategy.internal.ValidityAuditStrategy"); + properties.put("org.hibernate.envers.audit_table_suffix", "_AUD"); + properties.put("org.hibernate.envers.default_catalog", "audit"); + properties.put("org.hibernate.envers.global_with_modified_flag", "true"); + properties.put("org.hibernate.envers.revision_field_name", "REVISION"); + properties.put("org.hibernate.envers.revision_type_field_name", "REVISION_TYPE"); + properties.put("org.hibernate.envers.revision_number_field_name", "id"); + properties.put("org.hibernate.envers.store_data_at_delete", "true"); + + + return builder + .dataSource(dataSource) + .packages("com.eactive.apim.portal") + .persistenceUnit("portal") + .properties(properties) + .build(); + } + + @Bean + public AuditorAware auditorProvider() { + return new AuditorAwareImpl(); + } + +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigSecurity.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigSecurity.java new file mode 100644 index 0000000..0191d6f --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigSecurity.java @@ -0,0 +1,107 @@ +package com.eactive.apim.portal.config; + + +import com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.core.session.SessionRegistryImpl; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.csrf.CookieCsrfTokenRepository; +import org.springframework.security.web.session.HttpSessionEventPublisher; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +/** + * Created by Sungpil Hyun + */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(securedEnabled = true) +public class PortalConfigSecurity { + + private final PortalAuthenticationFailureHandler authenticationFailureHandler; + + private final PortalAuthenticationSuccessHandler authenticationSuccessHandler; + + private final PortalAuthenticationManager portalAuthenticationManager; + + @Autowired + public PortalConfigSecurity(PortalAuthenticationFailureHandler authenticationFailureHandler, + PortalAuthenticationSuccessHandler authenticationSuccessHandler, + PortalAuthenticationManager portalAuthenticationManager) { + this.authenticationFailureHandler = authenticationFailureHandler; + this.authenticationSuccessHandler = authenticationSuccessHandler; + this.portalAuthenticationManager = portalAuthenticationManager; + } + + @Bean + public FilterRegistrationBean xssFilterRegistrationBean() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + XssEscapeServletFilter xssEscapeServletFilter = new XssEscapeServletFilter(); + registrationBean.setFilter(xssEscapeServletFilter); + registrationBean.setOrder(Integer.MIN_VALUE + 1); + registrationBean.addUrlPatterns("/*"); + return registrationBean; + } + + /** + * https://www.javadevjournal.com/spring-security/spring-security-session-fixation/ 참고 + * + * @param http + * @return + * @throws Exception + */ + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) { + try { + http + .authenticationManager(portalAuthenticationManager) + .formLogin(form -> form + .loginPage("/login") + .usernameParameter("id") + .passwordParameter("password") + .loginProcessingUrl("/actionLogin.do") + .failureHandler(authenticationFailureHandler) + .successHandler(authenticationSuccessHandler)) + .logout(logout -> logout + .logoutRequestMatcher(new AntPathRequestMatcher("/actionLogout.do", "GET")) + .logoutSuccessUrl("/")) + .csrf(csrf -> csrf + .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) + .ignoringRequestMatchers(new AntPathRequestMatcher("/_proxy/**/*")) + ) + .sessionManagement(session -> session + .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) + .maximumSessions(1) // Allow only one session per user + .maxSessionsPreventsLogin(false) // Prevent new login when session limit is reached + .expiredUrl("/login?expired") // Redirect when session expires + .sessionRegistry(sessionRegistry()) // Session registry bean to track sessions + .and() + .sessionFixation() + .changeSessionId() + ); + + return http.build(); + } catch (Exception e) { + throw new IllegalStateException("Failed to configure security", e); + } + } + + @Bean + public SessionRegistry sessionRegistry() { + return new SessionRegistryImpl(); + } + + @Bean + public HttpSessionEventPublisher httpSessionEventPublisher() { + return new HttpSessionEventPublisher(); + } + + +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigTransaction.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigTransaction.java new file mode 100644 index 0000000..0e73ab4 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigTransaction.java @@ -0,0 +1,39 @@ +package com.eactive.apim.portal.config; + +import com.atomikos.icatch.jta.UserTransactionImp; +import com.atomikos.icatch.jta.UserTransactionManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.transaction.jta.JtaTransactionManager; + +import javax.transaction.SystemException; +import javax.transaction.UserTransaction; + +@Configuration +@EnableTransactionManagement +public class PortalConfigTransaction { + + @Bean(name = "userTransaction") + public UserTransaction userTransaction() throws SystemException { + UserTransactionImp userTransactionImp = new UserTransactionImp(); + userTransactionImp.setTransactionTimeout(30000); + return userTransactionImp; + } + + @Bean(name = "atomikosTransactionManager", initMethod = "init", destroyMethod = "close") + public UserTransactionManager atomikosTransactionManager() { + UserTransactionManager userTransactionManager = new UserTransactionManager(); + userTransactionManager.setForceShutdown(false); + return userTransactionManager; + } + + @Bean(name = "transactionManager") + @DependsOn({"userTransaction", "atomikosTransactionManager"}) + public PlatformTransactionManager transactionManager(UserTransactionManager atomikosTransactionManager) throws SystemException { + UserTransaction userTransaction = userTransaction(); + return new JtaTransactionManager(userTransaction, atomikosTransactionManager); + } +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalConfigWebDispatcherServlet.java b/src/main/java/com/eactive/apim/portal/config/PortalConfigWebDispatcherServlet.java new file mode 100644 index 0000000..620a514 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalConfigWebDispatcherServlet.java @@ -0,0 +1,125 @@ +package com.eactive.apim.portal.config; + + +import com.eactive.apim.portal.common.converter.EnabledStatusConverter; +import java.util.List; +import java.util.concurrent.TimeUnit; +import nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.web.PageableHandlerMethodArgumentResolver; +import org.springframework.format.FormatterRegistry; +import org.springframework.http.CacheControl; +import org.springframework.web.filter.CharacterEncodingFilter; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.multipart.support.MultipartFilter; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.resource.PathResourceResolver; +import org.springframework.web.servlet.view.json.MappingJackson2JsonView; + + +@Configuration +@EnableWebMvc +@ServletComponentScan("com.eactive.apim.portal") +public class PortalConfigWebDispatcherServlet implements WebMvcConfigurer { + + public static final String ERROR = "error"; + + + + @Bean + public LayoutDialect layoutDialect() { + return new LayoutDialect(); + } + + // ------------------------------------------------------------- + // RequestMappingHandlerMapping 설정 View Controller 추가 + // ------------------------------------------------------------- + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/403").setViewName(ERROR); + registry.addViewController("/404").setViewName(ERROR); + + } + + @Override + public void addFormatters(FormatterRegistry registry) { + registry.addConverter(enabledStatusConverter()); + } + + @Bean + public EnabledStatusConverter enabledStatusConverter() { + return new EnabledStatusConverter(); + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + + registry.addResourceHandler("/css/**").addResourceLocations("/css/", "classpath:/static/css/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + registry.addResourceHandler("/font/**").addResourceLocations("/font/", "classpath:/static/font/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + registry.addResourceHandler("/html/**").addResourceLocations("/html/", "classpath:/static/html/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + registry.addResourceHandler("/images/**").addResourceLocations("/images/", "classpath:/static/images/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + registry.addResourceHandler("/img/**").addResourceLocations("/img/", "classpath:/static/img/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + registry.addResourceHandler("/js/**").addResourceLocations("/js/", "classpath:/static/js/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/", "classpath:/static/plugins/").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + registry.addResourceHandler("/favicon_16px.png").addResourceLocations("/favicon_16px.png", "classpath:/static/favicon_16px.png").setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS)).resourceChain(true).addResolver(new PathResourceResolver()); + } + + + @Bean + public MappingJackson2JsonView jsonView() { + MappingJackson2JsonView jsonView = new MappingJackson2JsonView(); + jsonView.setContentType("application/json; charset=UTF-8"); + jsonView.setPrettyPrint(true); + return jsonView; + } + + @Override + public void addArgumentResolvers(List resolvers) { + resolvers.add(pageableHandlerMethodArgumentResolver()); + } + + @Bean + public PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver() { + PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver = new PageableHandlerMethodArgumentResolver(); + pageableHandlerMethodArgumentResolver.setOneIndexedParameters(true); //1부터 시작 + pageableHandlerMethodArgumentResolver.setFallbackPageable(PageRequest.of(0, 10)); //파라미터 없을 때 기본 페이지 + return pageableHandlerMethodArgumentResolver; + } + + /** + * csrf 토큰을 + *

+ * * @return + */ + @Bean + @Profile("!unittest") + public FilterRegistrationBean multipartFilterRegistrationBean() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + MultipartFilter multipartFilter = new MultipartFilter(); + multipartFilter.setMultipartResolverBeanName("filterMultipartResolver"); + registrationBean.setFilter(multipartFilter); + registrationBean.setOrder(Integer.MIN_VALUE+1); + registrationBean.addUrlPatterns("/*"); + return registrationBean; + } + + @Bean + public FilterRegistrationBean characterEncodingFilterFilterRegistrationBean() { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); + characterEncodingFilter.setEncoding("UTF-8"); + characterEncodingFilter.setForceEncoding(true); + registrationBean.setFilter(characterEncodingFilter); + registrationBean.setOrder(Integer.MIN_VALUE); + registrationBean.addUrlPatterns("/*"); + return registrationBean; + } +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalPageHandlerMapper.java b/src/main/java/com/eactive/apim/portal/config/PortalPageHandlerMapper.java new file mode 100644 index 0000000..64931dd --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalPageHandlerMapper.java @@ -0,0 +1,64 @@ +package com.eactive.apim.portal.config; + +import com.eactive.apim.portal.common.pagerouter.PageController; +import com.eactive.apim.portal.common.pagerouter.property.PageRoute; +import java.util.List; +import javax.annotation.PostConstruct; +import javax.servlet.http.HttpServletRequest; +import lombok.Data; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.mvc.method.RequestMappingInfo; +import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; + +/** + * 포털 페이지 핸들러를 매핑하는 클래스 + */ +@Component +@Data +public class PortalPageHandlerMapper { + + private static final Logger logger = LoggerFactory.getLogger(PortalPageHandlerMapper.class); + + @Autowired + private RequestMappingHandlerMapping requestMappingHandlerMapping; + + @Autowired + private PortalProperties portalProperties; + + @Autowired + PageController pageController; + + /** + * 초기화 메서드: 모든 페이지 라우트를 등록합니다. + */ + @PostConstruct + public void initialize() { + for (PageRoute route : portalProperties.getPages()) { + registerMapping(route); + } + } + + /** + * 개별 페이지 라우트를 등록하는 메서드 + * + * @param pageRoute 등록할 페이지 라우트 정보 + */ + public void registerMapping(PageRoute pageRoute) { + RequestMappingInfo mappingInfo = RequestMappingInfo + .paths(pageRoute.getPathPattern()) + .methods(RequestMethod.valueOf(pageRoute.getMethod())) + .build(); + + try { + requestMappingHandlerMapping.registerMapping(mappingInfo, pageController, PageController.class.getDeclaredMethod("handleRequest", HttpServletRequest.class, Model.class)); + } catch (NoSuchMethodException e) { + logger.error("매핑 등록 중 오류 발생", e); + } + } +} diff --git a/src/main/java/com/eactive/apim/portal/config/PortalProperties.java b/src/main/java/com/eactive/apim/portal/config/PortalProperties.java new file mode 100644 index 0000000..dc99536 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/config/PortalProperties.java @@ -0,0 +1,27 @@ +package com.eactive.apim.portal.config; + +import com.eactive.apim.portal.common.pagerouter.property.PageRoute; +import com.eactive.apim.portal.portaluser.entity.PortalUserEnums.RoleCode; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +@Data +@Component +@ConfigurationProperties(prefix = "portal") +public class PortalProperties { + + private List pages; + + private int passwordExpirationDays = 90; + private int dormantAccountDays = 90; + + private boolean userApproval; + + private int authTtl = 300; // 인증번호 만료시간, 초단위 + + private Map> portalSecurity; +} diff --git a/src/main/resources/ContributorValidationMessages.properties b/src/main/resources/ContributorValidationMessages.properties new file mode 100644 index 0000000..dbc354d --- /dev/null +++ b/src/main/resources/ContributorValidationMessages.properties @@ -0,0 +1,54 @@ +javax.validation.constraints.AssertFalse.message = must be false +javax.validation.constraints.AssertTrue.message = must be true +javax.validation.constraints.DecimalMax.message = must be less than ${inclusive == true ? 'or equal to ' : ''}{value} +javax.validation.constraints.DecimalMin.message = must be greater than ${inclusive == true ? 'or equal to ' : ''}{value} +javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected) +javax.validation.constraints.Email.message = must be a well-formed email address +javax.validation.constraints.Future.message = must be a future date +javax.validation.constraints.FutureOrPresent.message = must be a date in the present or in the future +javax.validation.constraints.Max.message = must be less than or equal to {value} +javax.validation.constraints.Min.message = must be greater than or equal to {value} +javax.validation.constraints.Negative.message = must be less than 0 +javax.validation.constraints.NegativeOrZero.message = must be less than or equal to 0 +javax.validation.constraints.NotBlank.message = must not be blank +javax.validation.constraints.NotEmpty.message = must not be empty +javax.validation.constraints.NotNull.message = must not be null +javax.validation.constraints.Null.message = must be null +javax.validation.constraints.Past.message = must be a past date +javax.validation.constraints.PastOrPresent.message = must be a date in the past or in the present +javax.validation.constraints.Pattern.message = must match "{regexp}" +javax.validation.constraints.Positive.message = must be greater than 0 +javax.validation.constraints.PositiveOrZero.message = must be greater than or equal to 0 +javax.validation.constraints.Size.message = size must be between {min} and {max} + +org.hibernate.validator.constraints.CreditCardNumber.message = invalid credit card number +org.hibernate.validator.constraints.Currency.message = invalid currency (must be one of {value}) +org.hibernate.validator.constraints.EAN.message = invalid {type} barcode +org.hibernate.validator.constraints.Email.message = not a well-formed email address +org.hibernate.validator.constraints.ISBN.message = invalid ISBN +org.hibernate.validator.constraints.Length.message = length must be between {min} and {max} +org.hibernate.validator.constraints.CodePointLength.message = length must be between {min} and {max} +org.hibernate.validator.constraints.LuhnCheck.message = the check digit for ${validatedValue} is invalid, Luhn Modulo 10 checksum failed +org.hibernate.validator.constraints.Mod10Check.message = the check digit for ${validatedValue} is invalid, Modulo 10 checksum failed +org.hibernate.validator.constraints.Mod11Check.message = the check digit for ${validatedValue} is invalid, Modulo 11 checksum failed +org.hibernate.validator.constraints.ModCheck.message = the check digit for ${validatedValue} is invalid, {modType} checksum failed +org.hibernate.validator.constraints.Normalized.message = must be normalized +org.hibernate.validator.constraints.NotBlank.message = may not be empty +org.hibernate.validator.constraints.NotEmpty.message = may not be empty +org.hibernate.validator.constraints.ParametersScriptAssert.message = script expression "{script}" didn't evaluate to true +org.hibernate.validator.constraints.Range.message = must be between {min} and {max} +org.hibernate.validator.constraints.SafeHtml.message = may have unsafe html content +org.hibernate.validator.constraints.ScriptAssert.message = script expression "{script}" didn't evaluate to true +org.hibernate.validator.constraints.UniqueElements.message = must only contain unique elements +org.hibernate.validator.constraints.URL.message = must be a valid URL + +org.hibernate.validator.constraints.br.CNPJ.message = invalid Brazilian corporate taxpayer registry number (CNPJ) +org.hibernate.validator.constraints.br.CPF.message = invalid Brazilian individual taxpayer registry number (CPF) +org.hibernate.validator.constraints.br.TituloEleitoral.message = invalid Brazilian Voter ID card number + +org.hibernate.validator.constraints.pl.REGON.message = invalid Polish Taxpayer Identification Number (REGON) +org.hibernate.validator.constraints.pl.NIP.message = invalid VAT Identification Number (NIP) +org.hibernate.validator.constraints.pl.PESEL.message = invalid Polish National Identification Number (PESEL) + +org.hibernate.validator.constraints.time.DurationMax.message = must be shorter than${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} +org.hibernate.validator.constraints.time.DurationMin.message = must be longer than${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} diff --git a/src/main/resources/ContributorValidationMessages_ko-KR.properties b/src/main/resources/ContributorValidationMessages_ko-KR.properties new file mode 100644 index 0000000..25971cf --- /dev/null +++ b/src/main/resources/ContributorValidationMessages_ko-KR.properties @@ -0,0 +1,53 @@ +javax.validation.constraints.AssertFalse.message = false\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.AssertTrue.message = true\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.DecimalMax.message = \ub2e4\uc74c \uac12 \uc774\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}{value} +javax.validation.constraints.DecimalMin.message = \ub2e4\uc74c \uac12 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}{value} +javax.validation.constraints.Digits.message = \uc22b\uc790 \uac12\uc774 \ud55c\uacc4\ub97c \ucd08\uacfc\ud569\ub2c8\ub2e4(<{integer} \uc790\ub9ac>.<{fraction} \uc790\ub9ac> \uc608\uc0c1) +javax.validation.constraints.Email.message = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 \uc774\uba54\uc77c \uc8fc\uc18c\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Future.message = \ubbf8\ub798 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.FutureOrPresent.message = \ud604\uc7ac \ub610\ub294 \ubbf8\ub798\uc758 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Max.message = {value} \uc774\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Min.message = {value} \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Negative.message = 0 \ubbf8\ub9cc\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.NegativeOrZero.message = 0 \uc774\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.NotBlank.message = \uacf5\ubc31\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +javax.validation.constraints.NotEmpty.message = \ube44\uc5b4 \uc788\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +javax.validation.constraints.NotNull.message = \ub110\uc774\uc5b4\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4 +javax.validation.constraints.Null.message = \ub110\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Past.message = \uacfc\uac70 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.PastOrPresent.message = \uacfc\uac70 \ub610\ub294 \ud604\uc7ac\uc758 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Pattern.message = "{regexp}"\uc640 \uc77c\uce58\ud574\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Positive.message = 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.PositiveOrZero.message = 0 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Size.message = \ud06c\uae30\uac00 {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 + +org.hibernate.validator.constraints.CreditCardNumber.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.Currency.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ud1b5\ud654\uc785\ub2c8\ub2e4({value} \uc911 \ud558\ub098\uc5ec\uc57c \ud568) +org.hibernate.validator.constraints.EAN.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 {type} \ubc14\ucf54\ub4dc\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.Email.message = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 \uc774\uba54\uc77c \uc8fc\uc18c\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.ISBN.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 ISBN\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.Length.message = \uae38\uc774\uac00 {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.CodePointLength.message = \uae38\uc774\uac00 {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.LuhnCheck.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Luhn Modulo 10 \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.Mod10Check.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Modulo 10 \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.Mod11Check.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Modulo 11 \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.ModCheck.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. {modType} \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.NotBlank.message = \uacf5\ubc31\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.NotEmpty.message = \ube44\uc5b4 \uc788\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.ParametersScriptAssert.message = \uc2a4\ud06c\ub9bd\ud2b8 \ud45c\ud604\uc2dd "{script}"\uac00 true\ub85c \ud3c9\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.Range.message = {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.SafeHtml.message = \uc548\uc804\ud558\uc9c0 \uc54a\uc740 html \ucee8\ud150\uce20\uac00 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.ScriptAssert.message = \uc2a4\ud06c\ub9bd\ud2b8 \ud45c\ud604\uc2dd "{script}"\uac00 true\ub85c \ud3c9\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.UniqueElements.message = \uace0\uc720 \uc694\uc18c\ub9cc \ud3ec\ud568\ud574\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.URL.message = \uc62c\ubc14\ub978 URL\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 + +org.hibernate.validator.constraints.br.CNPJ.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ube0c\ub77c\uc9c8 \ubc95\uc778 \ub0a9\uc138\uc790 \ub4f1\ub85d \ubc88\ud638(CNPJ)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.br.CPF.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ube0c\ub77c\uc9c8 \uac1c\uc778 \ub0a9\uc138\uc790 \ub4f1\ub85d \ubc88\ud638(CPF)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.br.TituloEleitoral.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ube0c\ub77c\uc9c8 \uc720\uad8c\uc790 ID \uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4 + +org.hibernate.validator.constraints.pl.REGON.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ud3f4\ub780\ub4dc \ub0a9\uc138\uc790 \uc2dd\ubcc4 \ubc88\ud638(REGON)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.pl.NIP.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 VAT \uc2dd\ubcc4 \ubc88\ud638(NIP)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.pl.PESEL.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ud3f4\ub780\ub4dc \uad6d\ubbfc \uc2dd\ubcc4 \ubc88\ud638(PESEL)\uc785\ub2c8\ub2e4 + +org.hibernate.validator.constraints.time.DurationMax.message = \ub2e4\uc74c \uac12\ubcf4\ub2e4 \uc9e7\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}${days == 0 ? '' : days == 1 ? ' 1\uc77c' : ' ' += days += '\uc77c'}${hours == 0 ? '' : hours == 1 ? ' 1\uc2dc\uac04' : ' ' += hours += '\uc2dc\uac04'}${minutes == 0 ? '' : minutes == 1 ? ' 1\ubd84' : ' ' += minutes += '\ubd84'}${seconds == 0 ? '' : seconds == 1 ? ' 1\ucd08' : ' ' += seconds += '\ucd08'}${millis == 0 ? '' : millis == 1 ? ' 1\ubc00\ub9ac' : ' ' += millis += '\ubc00\ub9ac'}${nanos == 0 ? '' : nanos == 1 ? ' 1\ub098\ub178' : ' ' += nanos += '\ub098\ub178'} +org.hibernate.validator.constraints.time.DurationMin.message = \ub2e4\uc74c \uac12\ubcf4\ub2e4 \uae38\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}${days == 0 ? '' : days == 1 ? ' 1\uc77c' : ' ' += days += '\uc77c'}${hours == 0 ? '' : hours == 1 ? ' 1\uc2dc\uac04' : ' ' += hours += '\uc2dc\uac04'}${minutes == 0 ? '' : minutes == 1 ? ' 1\ubd84' : ' ' += minutes += '\ubd84'}${seconds == 0 ? '' : seconds == 1 ? ' 1\ucd08' : ' ' += seconds += '\ucd08'}${millis == 0 ? '' : millis == 1 ? ' 1\ubc00\ub9ac' : ' ' += millis += '\ubc00\ub9ac'}${nanos == 0 ? '' : nanos == 1 ? ' 1\ub098\ub178' : ' ' += nanos += '\ub098\ub178'} diff --git a/src/main/resources/ValidationMessages.properties b/src/main/resources/ValidationMessages.properties new file mode 100644 index 0000000..c94d103 --- /dev/null +++ b/src/main/resources/ValidationMessages.properties @@ -0,0 +1,54 @@ +javax.validation.constraints.AssertFalse.message = must be false +javax.validation.constraints.AssertTrue.message = must be true +javax.validation.constraints.DecimalMax.message = must be less than ${inclusive == true ? 'or equal to ' : ''}{value} +javax.validation.constraints.DecimalMin.message = must be greater than ${inclusive == true ? 'or equal to ' : ''}{value} +javax.validation.constraints.Digits.message = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected) +javax.validation.constraints.Email.message = must be a well-formed email address +javax.validation.constraints.Future.message = must be a future date +javax.validation.constraints.FutureOrPresent.message = must be a date in the present or in the future +javax.validation.constraints.Max.message = must be less than or equal to {value} +javax.validation.constraints.Min.message = must be greater than or equal to {value} +javax.validation.constraints.Negative.message = must be less than 0 +javax.validation.constraints.NegativeOrZero.message = must be less than or equal to 0 +javax.validation.constraints.NotBlank.message = must not be blank +javax.validation.constraints.NotEmpty.message = must not be empty2 +javax.validation.constraints.NotNull.message = must not be null +javax.validation.constraints.Null.message = must be null +javax.validation.constraints.Past.message = must be a past date +javax.validation.constraints.PastOrPresent.message = must be a date in the past or in the present +javax.validation.constraints.Pattern.message = must match "{regexp}" +javax.validation.constraints.Positive.message = must be greater than 0 +javax.validation.constraints.PositiveOrZero.message = must be greater than or equal to 0 +javax.validation.constraints.Size.message = size must be between {min} and {max} + +org.hibernate.validator.constraints.CreditCardNumber.message = invalid credit card number +org.hibernate.validator.constraints.Currency.message = invalid currency (must be one of {value}) +org.hibernate.validator.constraints.EAN.message = invalid {type} barcode +org.hibernate.validator.constraints.Email.message = not a well-formed email address +org.hibernate.validator.constraints.ISBN.message = invalid ISBN +org.hibernate.validator.constraints.Length.message = length must be between {min} and {max} +org.hibernate.validator.constraints.CodePointLength.message = length must be between {min} and {max} +org.hibernate.validator.constraints.LuhnCheck.message = the check digit for ${validatedValue} is invalid, Luhn Modulo 10 checksum failed +org.hibernate.validator.constraints.Mod10Check.message = the check digit for ${validatedValue} is invalid, Modulo 10 checksum failed +org.hibernate.validator.constraints.Mod11Check.message = the check digit for ${validatedValue} is invalid, Modulo 11 checksum failed +org.hibernate.validator.constraints.ModCheck.message = the check digit for ${validatedValue} is invalid, {modType} checksum failed +org.hibernate.validator.constraints.Normalized.message = must be normalized +org.hibernate.validator.constraints.NotBlank.message = may not be empty +org.hibernate.validator.constraints.NotEmpty.message = may not be empty +org.hibernate.validator.constraints.ParametersScriptAssert.message = script expression "{script}" didn't evaluate to true +org.hibernate.validator.constraints.Range.message = must be between {min} and {max} +org.hibernate.validator.constraints.SafeHtml.message = may have unsafe html content +org.hibernate.validator.constraints.ScriptAssert.message = script expression "{script}" didn't evaluate to true +org.hibernate.validator.constraints.UniqueElements.message = must only contain unique elements +org.hibernate.validator.constraints.URL.message = must be a valid URL + +org.hibernate.validator.constraints.br.CNPJ.message = invalid Brazilian corporate taxpayer registry number (CNPJ) +org.hibernate.validator.constraints.br.CPF.message = invalid Brazilian individual taxpayer registry number (CPF) +org.hibernate.validator.constraints.br.TituloEleitoral.message = invalid Brazilian Voter ID card number + +org.hibernate.validator.constraints.pl.REGON.message = invalid Polish Taxpayer Identification Number (REGON) +org.hibernate.validator.constraints.pl.NIP.message = invalid VAT Identification Number (NIP) +org.hibernate.validator.constraints.pl.PESEL.message = invalid Polish National Identification Number (PESEL) + +org.hibernate.validator.constraints.time.DurationMax.message = must be shorter than${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} +org.hibernate.validator.constraints.time.DurationMin.message = must be longer than${inclusive == true ? ' or equal to' : ''}${days == 0 ? '' : days == 1 ? ' 1 day' : ' ' += days += ' days'}${hours == 0 ? '' : hours == 1 ? ' 1 hour' : ' ' += hours += ' hours'}${minutes == 0 ? '' : minutes == 1 ? ' 1 minute' : ' ' += minutes += ' minutes'}${seconds == 0 ? '' : seconds == 1 ? ' 1 second' : ' ' += seconds += ' seconds'}${millis == 0 ? '' : millis == 1 ? ' 1 milli' : ' ' += millis += ' millis'}${nanos == 0 ? '' : nanos == 1 ? ' 1 nano' : ' ' += nanos += ' nanos'} diff --git a/src/main/resources/ValidationMessages_ko-KR.properties b/src/main/resources/ValidationMessages_ko-KR.properties new file mode 100644 index 0000000..25971cf --- /dev/null +++ b/src/main/resources/ValidationMessages_ko-KR.properties @@ -0,0 +1,53 @@ +javax.validation.constraints.AssertFalse.message = false\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.AssertTrue.message = true\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.DecimalMax.message = \ub2e4\uc74c \uac12 \uc774\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}{value} +javax.validation.constraints.DecimalMin.message = \ub2e4\uc74c \uac12 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}{value} +javax.validation.constraints.Digits.message = \uc22b\uc790 \uac12\uc774 \ud55c\uacc4\ub97c \ucd08\uacfc\ud569\ub2c8\ub2e4(<{integer} \uc790\ub9ac>.<{fraction} \uc790\ub9ac> \uc608\uc0c1) +javax.validation.constraints.Email.message = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 \uc774\uba54\uc77c \uc8fc\uc18c\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Future.message = \ubbf8\ub798 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.FutureOrPresent.message = \ud604\uc7ac \ub610\ub294 \ubbf8\ub798\uc758 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Max.message = {value} \uc774\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Min.message = {value} \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Negative.message = 0 \ubbf8\ub9cc\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.NegativeOrZero.message = 0 \uc774\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.NotBlank.message = \uacf5\ubc31\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +javax.validation.constraints.NotEmpty.message = \ube44\uc5b4 \uc788\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +javax.validation.constraints.NotNull.message = \ub110\uc774\uc5b4\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4 +javax.validation.constraints.Null.message = \ub110\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Past.message = \uacfc\uac70 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.PastOrPresent.message = \uacfc\uac70 \ub610\ub294 \ud604\uc7ac\uc758 \ub0a0\uc9dc\uc5ec\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Pattern.message = "{regexp}"\uc640 \uc77c\uce58\ud574\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Positive.message = 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.PositiveOrZero.message = 0 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 +javax.validation.constraints.Size.message = \ud06c\uae30\uac00 {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 + +org.hibernate.validator.constraints.CreditCardNumber.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \uc2e0\uc6a9\uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.Currency.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ud1b5\ud654\uc785\ub2c8\ub2e4({value} \uc911 \ud558\ub098\uc5ec\uc57c \ud568) +org.hibernate.validator.constraints.EAN.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 {type} \ubc14\ucf54\ub4dc\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.Email.message = \uc62c\ubc14\ub978 \ud615\uc2dd\uc758 \uc774\uba54\uc77c \uc8fc\uc18c\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.ISBN.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 ISBN\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.Length.message = \uae38\uc774\uac00 {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.CodePointLength.message = \uae38\uc774\uac00 {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.LuhnCheck.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Luhn Modulo 10 \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.Mod10Check.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Modulo 10 \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.Mod11Check.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Modulo 11 \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.ModCheck.message = ${validatedValue}\uc758 \uccb4\ud06c \ub514\uc9c0\ud2b8\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. {modType} \uccb4\ud06c\uc12c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.NotBlank.message = \uacf5\ubc31\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.NotEmpty.message = \ube44\uc5b4 \uc788\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.ParametersScriptAssert.message = \uc2a4\ud06c\ub9bd\ud2b8 \ud45c\ud604\uc2dd "{script}"\uac00 true\ub85c \ud3c9\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.Range.message = {min}\uc5d0\uc11c {max} \uc0ac\uc774\uc5ec\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.SafeHtml.message = \uc548\uc804\ud558\uc9c0 \uc54a\uc740 html \ucee8\ud150\uce20\uac00 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.ScriptAssert.message = \uc2a4\ud06c\ub9bd\ud2b8 \ud45c\ud604\uc2dd "{script}"\uac00 true\ub85c \ud3c9\uac00\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4 +org.hibernate.validator.constraints.UniqueElements.message = \uace0\uc720 \uc694\uc18c\ub9cc \ud3ec\ud568\ud574\uc57c \ud569\ub2c8\ub2e4 +org.hibernate.validator.constraints.URL.message = \uc62c\ubc14\ub978 URL\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4 + +org.hibernate.validator.constraints.br.CNPJ.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ube0c\ub77c\uc9c8 \ubc95\uc778 \ub0a9\uc138\uc790 \ub4f1\ub85d \ubc88\ud638(CNPJ)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.br.CPF.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ube0c\ub77c\uc9c8 \uac1c\uc778 \ub0a9\uc138\uc790 \ub4f1\ub85d \ubc88\ud638(CPF)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.br.TituloEleitoral.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ube0c\ub77c\uc9c8 \uc720\uad8c\uc790 ID \uce74\ub4dc \ubc88\ud638\uc785\ub2c8\ub2e4 + +org.hibernate.validator.constraints.pl.REGON.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ud3f4\ub780\ub4dc \ub0a9\uc138\uc790 \uc2dd\ubcc4 \ubc88\ud638(REGON)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.pl.NIP.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 VAT \uc2dd\ubcc4 \ubc88\ud638(NIP)\uc785\ub2c8\ub2e4 +org.hibernate.validator.constraints.pl.PESEL.message = \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \ud3f4\ub780\ub4dc \uad6d\ubbfc \uc2dd\ubcc4 \ubc88\ud638(PESEL)\uc785\ub2c8\ub2e4 + +org.hibernate.validator.constraints.time.DurationMax.message = \ub2e4\uc74c \uac12\ubcf4\ub2e4 \uc9e7\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}${days == 0 ? '' : days == 1 ? ' 1\uc77c' : ' ' += days += '\uc77c'}${hours == 0 ? '' : hours == 1 ? ' 1\uc2dc\uac04' : ' ' += hours += '\uc2dc\uac04'}${minutes == 0 ? '' : minutes == 1 ? ' 1\ubd84' : ' ' += minutes += '\ubd84'}${seconds == 0 ? '' : seconds == 1 ? ' 1\ucd08' : ' ' += seconds += '\ucd08'}${millis == 0 ? '' : millis == 1 ? ' 1\ubc00\ub9ac' : ' ' += millis += '\ubc00\ub9ac'}${nanos == 0 ? '' : nanos == 1 ? ' 1\ub098\ub178' : ' ' += nanos += '\ub098\ub178'} +org.hibernate.validator.constraints.time.DurationMin.message = \ub2e4\uc74c \uac12\ubcf4\ub2e4 \uae38\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4${inclusive == true ? ' ' : ''}${days == 0 ? '' : days == 1 ? ' 1\uc77c' : ' ' += days += '\uc77c'}${hours == 0 ? '' : hours == 1 ? ' 1\uc2dc\uac04' : ' ' += hours += '\uc2dc\uac04'}${minutes == 0 ? '' : minutes == 1 ? ' 1\ubd84' : ' ' += minutes += '\ubd84'}${seconds == 0 ? '' : seconds == 1 ? ' 1\ucd08' : ' ' += seconds += '\ucd08'}${millis == 0 ? '' : millis == 1 ? ' 1\ubc00\ub9ac' : ' ' += millis += '\ubc00\ub9ac'}${nanos == 0 ? '' : nanos == 1 ? ' 1\ub098\ub178' : ' ' += nanos += '\ub098\ub178'} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..4a0fb94 --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,66 @@ +logging: + level: + web: debug + file: + name: ./logs/portal.log + +# name: /kbklog/standalone/adp/portal.log +spring: + jta: + enabled: true + config: + activate: + on-profile: dev + jpa: + properties: + hibernate: + show_sql: true + format_sql: true + use_sql_comments: true + devtools: + restart: + enabled: false + livereload: + enabled: true + thymeleaf: + cache: false + +ems: + datasource: + serverName: localhost + portNumber: 3306 + databaseName: ndapims + username: api_app + password: from2408!@ + +# serverName: 172.20.160.59 +# portNumber: 3317 +# databaseName: ndapims +# username: api_app +# password: Tapiapp*17 + +gateway: + datasource: + serverName: localhost + portNumber: 3306 + databaseName: ndapigw + username: api_app + password: from2408!@ + +# serverName: 172.20.160.59 +# portNumber: 3317 +# databaseName: ndapigw +# username: api_app +# password: Tapiapp*17 + + +proxy: + targets: + stg: http://localhost:10000/monitoring + prod: http://localhost:10000/monitoring + +# stg: http://inter-ndapiap01.k-bank.com:7090/monitoring +# prod: http://inter-ndapiap01.k-bank.com:7090/monitoring + timeout: + connect: 5000 + read: 5000 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..168d0b3 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,48 @@ +logging: + level: + web: info + file: + name: /kbklog/standalone/adp/portal.log +spring: + jta: + enabled: true + config: + activate: + on-profile: prod + jpa: + properties: + hibernate: + show_sql: false + format_sql: false + use_sql_comments: true + devtools: + restart: + enabled: false + livereload: + enabled: true + thymeleaf: + cache: false + +ems: + datasource: + serverName: 172.24.80.145 + portNumber: 3319 + databaseName: apims + username: api_app + password: Papiapp*17 + +gateway: + datasource: + serverName: 172.24.80.145 + portNumber: 3319 + databaseName: apigw + username: api_app + password: Papiapp*17 + +proxy: + targets: + stg: http://inter-dapiwas01.k-bank.com:7090/monitoring + prod: http://inter-apiwas00.k-bank.com:7090/monitoring + timeout: + connect: 5000 + read: 5000 \ No newline at end of file diff --git a/src/main/resources/application-stage.yml b/src/main/resources/application-stage.yml new file mode 100644 index 0000000..59aaba0 --- /dev/null +++ b/src/main/resources/application-stage.yml @@ -0,0 +1,48 @@ +logging: + level: + web: debug + file: + name: /kbklog/standalone/adp/portal.log +spring: + jta: + enabled: true + config: + activate: + on-profile: stage + jpa: + properties: + hibernate: + show_sql: true + format_sql: true + use_sql_comments: true + devtools: + restart: + enabled: false + livereload: + enabled: true + thymeleaf: + cache: false + +ems: + datasource: + serverName: 172.20.80.143 + portNumber: 3318 + databaseName: dapims + username: api_app + password: Tapiapp*17 + +gateway: + datasource: + serverName: 172.20.80.143 + portNumber: 3318 + databaseName: dapigw + username: api_app + password: Tapiapp*17 + +proxy: + targets: + stg: http://inter-dapiwas01.k-bank.com:7090/monitoring + prod: http://inter-dapiwas01.k-bank.com:7090/monitoring + timeout: + connect: 5000 + read: 5000 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..85cf148 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,318 @@ +logging: + level: + root: warn + +server: + servlet: + context-path: / + session: + timeout: 15m + encoding: + charset: UTF-8 + port: '8080' + error: + include-message: never + include-stacktrace: never + include-binding-errors: never + include-exception: false + whitelabel: + enabled: false + path: /error + + +spring: + data: + web: + pageable: + default-page-size: '10' + jpa: + open-in-view: false + + jta: + enabled: true + + thymeleaf: + prefix: 'classpath:/templates/views/' + suffix: .html + mode: HTML + encoding: UTF-8 + cache: false + main: + allow-bean-definition-overriding: true + servlet: + multipart: + max-file-size: 8MB + max-request-size: 8MB + +security: + basic: + enabled: false + +sample-code-path: classpath:/templates/sample_code + +portal: + auth-ttl: 300 + user-approval: true + password-expiration-days: 90 + + pages: + - path-pattern: /dashboard/daily_usage + method: GET + view-name: "apps/mypage/dailyApiUsage :: matrix" + bean: dailyApiUsageHandler + role: ROLE_DASHBOARD + + - path-pattern: /apis/apikey/new + method: GET + view-name: apps/apis/mainApiKeyNew + role: ROLE_API_KEY_REQUEST + + - path-pattern: /apis/apikey/prod + method: GET + view-name: apps/apis/mainApiKeyProd + role: ROLE_API_KEY_REQUEST + + - path-pattern: /apis/common + method: GET + view-name: apps/apis/mainApiCommon + bean: apiHandler + + - path-pattern: /apis/KAPAP004U3 + method: GET + view-name: apps/apis/KAPAP004U3 + bean: apiHandler + + - path-pattern: /apis/KAPAP004U4 + method: GET + view-name: apps/apis/KAPAP004U4 + bean: apiHandler + + - path-pattern: /apis/KAPAP004U5 + method: GET + view-name: apps/apis/KAPAP004U5 + bean: apiHandler + + - path-pattern: /apis/KAPAP004U6 + method: GET + view-name: apps/apis/KAPAP004U6 + bean: apiHandler + + - path-pattern: /apis/KAPAP004U7 + method: GET + view-name: apps/apis/KAPAP004U7 + bean: apiHandler + + - path-pattern: /apis/KAPAP004U8 + method: GET + view-name: apps/apis/KAPAP004U8 + bean: apiHandler + + - path-pattern: /apis/KAPAP004U9 + method: GET + view-name: apps/apis/KAPAP004U9 + bean: apiHandler + + - path-pattern: /apis/KAPAP004U10 + method: GET + view-name: apps/apis/KAPAP004U10 + bean: apiHandler + + - path-pattern: /login + method: GET + view-name: apps/login/login + bean: LoginHandler + + - path-pattern: /guide + method: GET + view-name: apps/main/guide + + - path-pattern: /intro + method: GET + view-name: apps/main/intro + + - path-pattern: /dashboard + method: GET + view-name: apps/mypage/dashboard + bean: dashboardHandler + role: ROLE_DASHBOARD + + - path-pattern: /apis/token-spec + method: GET + view-name: apps/apis/static/tokenApiSpec + bean: apiHandler + + portal_security: + ROLE_USER: + - ROLE_INQUIRY + - ROLE_ACCOUNT + ROLE_CORP_USER: + - ROLE_INQUIRY + - ROLE_APP + - ROLE_ACCOUNT + ROLE_CORP_MANAGER: + - ROLE_API_KEY_REQUEST + - ROLE_API_KEY_REQUEST_VIEW + - ROLE_INQUIRY + - ROLE_APP + - ROLE_ACCOUNT + - ROLE_CORP_API + - ROLE_DASHBOARD + - ROLE_USER_MANAGER +page: + home: + name: "Home" + path: "/" + children: + login: + name: 로그인 + path: "/login" + children: + dormant_account: + name: "장기미사용 제한 해제" + path: "/dormant_account" + find_id: + name: 아이디 찾기 + path: "/account_recovery?tab=findId" + reset_password: + name: 비밀번호 초기화 + path: "/account_recovery?tab=resetPassword" + signup: + name: 회원가입 + path: "/signup" + children: + user: + name: "개인회원가입" + path: "/signup/portalUser" + corp: + name: "법인회원가입" + path: "/signup/portalOrg" + about: + name: 안내 + path: "#" + children: + intro: + name: "API Portal 소개" + path: "/intro" + guide: + name: "이용안내" + path: "/guide" + apis: + name: "API" + path: "#" + children: + apis: + name: "API 목록" + path: "/apis" + api_common: + name: "API 상세보기" + path: "/apis/common" + api_KAPAP004U3: + name: "API 상세보기" + path: "/apis/KAPAP004U3" + api_KAPAP004U4: + name: "API 상세보기" + path: "/apis/KAPAP004U4" + api_KAPAP004U5: + name: "API 상세보기" + path: "/apis/KAPAP004U5" + api_KAPAP004U6: + name: "API 상세보기" + path: "/apis/KAPAP004U6" + api_KAPAP004U7: + name: "API 상세보기" + path: "/apis/KAPAP004U7" + api_KAPAP004U8: + name: "API 상세보기" + path: "/apis/KAPAP004U8" + api_KAPAP004U9: + name: "API 상세보기" + path: "/apis/KAPAP004U9" + api_KAPAP004U10: + name: "API 상세보기" + path: "/apis/KAPAP004U10" + api_token_spec: + name: "API 상세보기" + path: "/apis/token-spec" + api_detail: + name: "API 상세보기" + path: "/apis/detail" + api_key_new: + name: "API 키 신청" + path: "/apis/apikey/new" + api_key_prod: + name: "운영 API 키 신청" + path: "/apis/apikey/prod" + testbed: + name: 테스트 베드 + path: "/apis/testbed" + community: + name: 고객지원 + path: "#" + children: + notice: + name: 공지사항 + path: "/portalnotice" + notice_detail: + name: 공지사항 + path: "/portalnotice/detail" + faq_list: + name: FAQ + path: "/faq_list" + inquiry: + name: "Q&A" + path: "/inquiry" + inquiry_detail: + name: "Q&A" + path: "/inquiry/detail" + inquiry_new: + name: "Q&A" + path: "/inquiry/new" + inquiry_edit: + name: "Q&A" + path: "/inquiry/edit" + partnership: + name: "사업 제휴 신청" + path: "/partnership" + mypage: + name: 마이페이지 + path: "#" + children: + mypage: + name: "내 정보 관리" + path: "/mypage" + dashboard: + name: 대시보드 + path: "/dashboard" + user_list: + name: "이용자 관리" + path: "/users" + user_detail: + name: "이용자 관리" + path: "/users/detail" + app_request: + name: "인증키 관리" + path: "/myapikey/api_key_request/history" + app_request_prod: + name: "인증키 관리" + path: "/myapikey/api_key_request/prod_history" + app_request_detail: + name: "인증키 관리" + path: "/myapikey/api_key_request/detail" + app_request_prod_detail: + name: "인증키 관리" + path: "/myapikey/api_key_request/prod_detail" + apikey: + name: "인증키 관리" + path: "/myapikey" + apikey_prod: + name: "인증키 관리" + path: "/myapikey/api_key_prod_page" + apikey_detail: + name: "인증키 관리" + path: "/myapikey/api_key_detail" + apikey_prod_detail: + name: "인증키 관리" + path: "/myapikey/api_key_prod_detail" + change_password: + name: "비밀번호 변경" + path: "/change_password" diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt new file mode 100644 index 0000000..b8ffec0 --- /dev/null +++ b/src/main/resources/banner.txt @@ -0,0 +1,4 @@ + ____ __ ___ ____ __ _ _ ____ ____ __ ____ ____ __ __ +( __) / _\ / __)(_ _)( )/ )( \( __)( _ \ / \( _ \(_ _)/ _\ ( ) + ) _) / \( (__ )( )( \ \/ / ) _) ) __/( O )) / )( / \/ (_/\ +(____)\_/\_/ \___) (__) (__) \__/ (____)(__) \__/(__\_) (__)\_/\_/\____/ \ No newline at end of file diff --git a/src/main/resources/globals.properties b/src/main/resources/globals.properties new file mode 100644 index 0000000..71f7e66 --- /dev/null +++ b/src/main/resources/globals.properties @@ -0,0 +1,5 @@ +# \uD30C\uC77C \uD655\uC7A5\uC790 \uD654\uC774\uD2B8\uB9AC\uC2A4\uD2B8(\uD5C8\uC6A9\uBAA9\uB85D) : \uD30C\uC77C \uD655\uC7A5\uC790\uB97C (.)\uACFC \uD568\uAED8 \uC5F0\uC774\uC5B4\uC11C \uC0AC\uC6A9\uD558\uBA70 (.)\uB85C \uC2DC\uC791\uD55C\uB2E4. +Globals.fileUpload.Extensions.Images = .gif.jpg.jpeg.png +Globals.fileUpload.Extensions = .gif.jpg.jpeg.png.xls.xlsx.pdf +Globals.fileUpload.maxSize = 1048576 +Globals.fileDownload.Extensions = .gif.jpg.jpeg.png diff --git a/src/main/resources/jeus-web-dd.xml b/src/main/resources/jeus-web-dd.xml new file mode 100644 index 0000000..5c35f54 --- /dev/null +++ b/src/main/resources/jeus-web-dd.xml @@ -0,0 +1,7 @@ + + + / + + true + + \ No newline at end of file diff --git a/src/main/resources/jta.properties b/src/main/resources/jta.properties new file mode 100644 index 0000000..d94608f --- /dev/null +++ b/src/main/resources/jta.properties @@ -0,0 +1,2 @@ +com.atomikos.icatch.log_base_dir=/kbklog/standalone/adp/ +com.atomikos.icatch.log_base_name=adp_tx diff --git a/src/main/resources/lucy-xss-servlet-filter-rule.xml b/src/main/resources/lucy-xss-servlet-filter-rule.xml new file mode 100644 index 0000000..61a0078 --- /dev/null +++ b/src/main/resources/lucy-xss-servlet-filter-rule.xml @@ -0,0 +1,54 @@ + + + + + + + xssPreventerDefender + com.navercorp.lucy.security.xss.servletfilter.defender.XssPreventerDefender + + + + + xssSaxFilterDefender + com.navercorp.lucy.security.xss.servletfilter.defender.XssSaxFilterDefender + + lucy-xss-sax.xml + false + + + + + + xssFilterDefender + com.navercorp.lucy.security.xss.servletfilter.defender.XssFilterDefender + + lucy-xss.xml + true + + + + + + + xssFilterDefender + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/lucy-xss.xml b/src/main/resources/lucy-xss.xml new file mode 100644 index 0000000..aade0a3 --- /dev/null +++ b/src/main/resources/lucy-xss.xml @@ -0,0 +1,1909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/message/apim/message_en.properties b/src/main/resources/message/apim/message_en.properties new file mode 100644 index 0000000..c979e33 --- /dev/null +++ b/src/main/resources/message/apim/message_en.properties @@ -0,0 +1,87 @@ +title.html=Developer Portal +password.not.match=Password is not matched +authnumber.not.match=Auth number is not matched. +apim.route.register.file=File +field.required=The field is required. +companyName=Company name +ceoName=CEO name +adres=Address +officePhone=Office phone +agreements.contents=Agreements contents +login=Log in +username=Name +password=Password +bbsName=Name +bbsDescription=Board description +nttSj=Subject +nttCn=Content +createdBy=Created by +createdAt=Created at +button.approve=Approve +button.create=Create +button.list=List +button.no=No +button.reject=Reject +button.yes=Yes +articleVO.detail.nttId=Article ID +articleVO.Register.register=Register Article +boardMaster.Register.atchPosblFileNumber=Number of Attachable Files +boardMaster.Register.fileAtchPosblAt=File Attachment Possible +boardMaster.Register.replyPosblAt=Reply Possible +boardMaster.Register.useAt=Use Status +ncrdRegister.validate.authNumber=Authentication Number +ncrdRegister.validate.cellPhone=Cell Phone +idPw.email=Email +idPw.name=Name +idPw.requestResetPassword=Request Password Reset +idPw.resetPassword=Reset Password +deptUserManageRegister.id=Department User ID +deptUserManageRegister.name=Department User Name +portalUser.confirm.password=Please enter your existing password +portalUser.Register.userName=Name +portalUser.Register.pass=Password (Combination of uppercase letters, lowercase letters, numbers, special characters, 8-20 characters) +portalUser.Register.passConfirm=Confirm Password +portalUser.Register.email=Email ID +portalUser.Register.domain=Domain +portal.Register.phone1=First Part of Phone Number +portal.Register.phone2=Second Part of Phone Number +portalOrg.Register.compRegNo1=First 3 Digits of Business Registration Number +portalOrg.Register.compRegNo2=Second 2 Digits of Business Registration Number +portalOrg.Register.compRegNo3=Last 6 Digits of Business Registration Number +portalOrg.Register.corpRegNo1=First 6 Digits of Corporate Registration Number +portalOrg.Register.corpRegNo2=Last 7 Digits of Corporate Registration Number +portalOrg.Register.orgName=Organization Name +portalOrg.Register.ceoName=CEO Name +portalOrg.Register.orgAddr=Business Address +portalOrg.Register.orgSectors=Business Sectors on Business Registration Certificate +portalOrg.Register.orgIndustryType=Industry Type on Business Registration Certificate +portalOrg.Register.serviceName=Service Name +portalOrg.Register.compRegFile=Upload Business Registration Certificate +entrprsUserManageList.regName=Enterprise User Registration Name +entrprsUserManageRegister.pass=Enterprise User Password +entrprsUserManageRegister.passConfirm=Confirm Enterprise User Password +entrprsUserManageRegisterBtn.idSearch=Search Enterprise User ID +userManagePasswordUpdate.oldPass=Old Password +userManagePasswordUpdate.pass=New Password +userManagePasswordUpdate.passConfirm=Confirm New Password +common.nodata.msg=No data available +detailAdres=Detailed Address +email=Email +esntlId=Essential ID +input.select=Select +lastLockDate=Last Lock Date +lastPasswordChangeDate=Last Password Change Date +lockAt=Lock Status +lockCnt=Lock Count +mobilePhone=Mobile Phone +qestnCn=Question Content +qestnSj=Question Subject +answerCn=Answer Content +sbscrbDe=Subscription Date +status=Status +table.reger=Registrar +zip=Zip Code +ROLE_CORP_MANAGER=Manager +ROLE_CORP_USER=User +ROLE_USER=Individual +login.passLengthShort=Password must be over 8 characters. diff --git a/src/main/resources/message/apim/message_ko.properties b/src/main/resources/message/apim/message_ko.properties new file mode 100644 index 0000000..fe38a41 --- /dev/null +++ b/src/main/resources/message/apim/message_ko.properties @@ -0,0 +1,87 @@ +title.html=Kbank API Portal +apim.route.register.file=\uCCA8\uBD80\uD30C\uC77C +field.required=\uD544\uC218 \uC785\uB825\uD56D\uBAA9\uC785\uB2C8\uB2E4. +companyName=\uD68C\uC0AC\uBA85 +ceoName=\uB300\uD45C\uC790\uBA85 +adres=\uC8FC\uC18C +officePhone=\uC0AC\uBB34\uC2E4 \uC804\uD654\uBC88\uD638 +agreements.contents=\uC774\uC6A9\uC57D\uAD00 \uB0B4\uC6A9 +login=\uB85C\uADF8\uC778 +username=\uC774\uB984 +password=\uBE44\uBC00\uBC88\uD638 +bbsName=\uAC8C\uC2DC\uD310 \uC774\uB984 +bbsDescription=\uAC8C\uC2DC\uD310 \uC18C\uAC1C +nttSj=\uC81C\uBAA9 +password.not.match=\uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +nttCn=\uB0B4\uC6A9 +createdBy=\uC791\uC131\uC790 +createdAt=\uC791\uC131\uC77C +button.approve=\uC2B9\uC778 +button.create=\uC0DD\uC131 +button.list=\uBAA9\uB85D +button.no=\uC544\uB2C8\uC624 +button.reject=\uAC70\uC808 +button.yes=\uC608 +articleVO.detail.nttId=\uAC8C\uC2DC\uBB3C ID +articleVO.Register.register=\uAC8C\uC2DC\uBB3C \uB4F1\uB85D +boardMaster.Register.atchPosblFileNumber=\uCCA8\uBD80 \uAC00\uB2A5 \uD30C\uC77C \uC218 +boardMaster.Register.fileAtchPosblAt=\uD30C\uC77C \uCCA8\uBD80 \uAC00\uB2A5 \uC5EC\uBD80 +boardMaster.Register.replyPosblAt=\uB2F5\uAE00 \uAC00\uB2A5 \uC5EC\uBD80 +boardMaster.Register.useAt=\uC0AC\uC6A9 \uC5EC\uBD80 +authnumber.not.match=\uC778\uC99D \uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +ncrdRegister.validate.authNumber=SMS \uC778\uC99D\uBC88\uD638 +ncrdRegister.validate.cellPhone=\uD734\uB300\uD3F0 \uBC88\uD638 +idPw.name=\uC774\uB984 +idPw.requestResetPassword=\uBE44\uBC00\uBC88\uD638 \uC7AC\uC124\uC815 \uC694\uCCAD +idPw.resetPassword=\uBE44\uBC00\uBC88\uD638 \uC7AC\uC124\uC815 +deptUserManageRegister.id=\uBD80\uC11C \uC0AC\uC6A9\uC790 ID +deptUserManageRegister.name=\uBD80\uC11C \uC0AC\uC6A9\uC790 \uC774\uB984 +entrprsUserManageList.regName=\uBC95\uC778 \uC0AC\uC6A9\uC790 \uB4F1\uB85D \uC774\uB984 +portalUser.confirm.password=\uAE30\uC874 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694 +portalUser.Register.userName=\uC774\uB984 +portalUser.Register.pass=\uC601\uBB38 \uB300\uBB38\uC790,\uC601\uBB38 \uC18C\uBB38\uC790,\uC22B\uC790,\uD2B9\uC218\uBB38\uC790 \uC870\uD569 8-20\uC790 +portalUser.Register.passConfirm=\uBE44\uBC00\uBC88\uD638 \uD655\uC778 +portalUser.Register.email=\uC774\uBA54\uC77C \uC544\uC774\uB514 +portalUser.Register.domain=\uB3C4\uBA54\uC778 +portal.Register.phone1=\uC55E\uC790\uB9AC +portal.Register.phone2=\uB4B7\uC790\uB9AC +portalOrg.Register.compRegNo1=3\uC790\uB9AC \uC22B\uC790 +portalOrg.Register.compRegNo2=2\uC790\uB9AC \uC22B\uC790 +portalOrg.Register.compRegNo3=5\uC790\uB9AC \uC22B\uC790 +portalOrg.Register.corpRegNo1=6\uC790\uB9AC \uC22B\uC790 +portalOrg.Register.corpRegNo2=7\uC790\uB9AC \uC22B\uC790 +portalOrg.Register.orgName=\uBC95\uC778\uBA85 +portalOrg.Register.ceoName=\uB300\uD45C\uC790 \uC131\uBA85 +portalOrg.Register.orgAddr=\uC0AC\uC5C5\uC7A5 \uC18C\uC7AC \uC8FC\uC18C +portalOrg.Register.orgSectors=\uC0AC\uC5C5\uC790\uB4F1\uB85D\uC99D \uC0C1 \uC5C5\uD0DC +portalOrg.Register.orgIndustryType=\uC0AC\uC5C5\uC790\uB4F1\uB85D\uC99D \uC0C1 \uC5C5\uC885 +portalOrg.Register.serviceName=\uC11C\uBE44\uC2A4\uBA85 +portalOrg.Register.compRegFile=\uC0AC\uC5C5\uC790\uB4F1\uB85D\uC99D \uC5C5\uB85C\uB4DC +entrprsUserManageRegister.pass=\uBC95\uC778 \uC0AC\uC6A9\uC790 \uBE44\uBC00\uBC88\uD638 +entrprsUserManageRegister.passConfirm=\uBC95\uC778 \uC0AC\uC6A9\uC790 \uBE44\uBC00\uBC88\uD638 \uD655\uC778 +entrprsUserManageRegisterBtn.idSearch=\uBC95\uC778 \uC0AC\uC6A9\uC790 ID \uAC80\uC0C9 +userManagePasswordUpdate.oldPass=\uC774\uC804 \uBE44\uBC00\uBC88\uD638 +userManagePasswordUpdate.pass=\uC0C8 \uBE44\uBC00\uBC88\uD638 +userManagePasswordUpdate.passConfirm=\uC0C8 \uBE44\uBC00\uBC88\uD638 \uD655\uC778 +login.passLengthShort=\uBE44\uBC00\uBC88\uD638\uB97C \uD655\uC778\uD574 \uC8FC\uC138\uC694. +common.nodata.msg=\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4 +detailAdres=\uC0C1\uC138 \uC8FC\uC18C +email=\uC774\uBA54\uC77C +esntlId=\uD544\uC218 ID +input.select=\uC120\uD0DD +lastLockDate=\uB9C8\uC9C0\uB9C9 \uC7A0\uAE08 \uC77C\uC790 +lastPasswordChangeDate=\uB9C8\uC9C0\uB9C9 \uBE44\uBC00\uBC88\uD638 \uBCC0\uACBD\uC77C +lockAt=\uC7A0\uAE08 \uC5EC\uBD80 +lockCnt=\uC7A0\uAE08 \uD69F\uC218 +mobilePhone=\uD734\uB300\uD3F0 \uBC88\uD638 +qestnCn=\uC9C8\uBB38 \uB0B4\uC6A9 +qestnSj=FAQ \uC81C\uBAA9 +answerCn=\uB2F5\uBCC0 \uB0B4\uC6A9 +sbscrbDe=\uAC00\uC785\uC77C +status=\uC0C1\uD0DC +table.reger=\uB4F1\uB85D\uC790 +zip=\uC6B0\uD3B8\uBC88\uD638 +ROLE_CORP_MANAGER=\uAD00\uB9AC\uC790 +ROLE_CORP_USER=\uC774\uC6A9\uC790 +ROLE_USER=\uAC1C\uC778\uC0AC\uC6A9\uC790 +ConcurrentSessionControlAuthenticationStrategy.exceededAllowed=\uCD5C\uB300 \uB85C\uADF8\uC778 \uD5C8\uC6A9 \uC5F0\uACB0\uC744 \uCD08\uACFC\uD558\uC600\uC2B5\uB2C8\uB2E4. diff --git a/src/main/resources/static/css/all.min.css b/src/main/resources/static/css/all.min.css new file mode 100644 index 0000000..ac76ff1 --- /dev/null +++ b/src/main/resources/static/css/all.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/src/main/resources/static/css/common2.css b/src/main/resources/static/css/common2.css new file mode 100644 index 0000000..96b0b05 --- /dev/null +++ b/src/main/resources/static/css/common2.css @@ -0,0 +1,330 @@ +@charset "utf-8"; + +/*text-align*/ +.txtl { + text-align: left !important; +} + +.txtc { + text-align: center !important; +} + +/*padding*/ +.pt0 { + padding-top: 0 !important; +} + +.pt12 { + padding-top: 12px !important; +} + +.pt16 { + padding-top: 16px; +} + +.pt28 { + padding-top: 28px !important; +} + +/* margin */ +.mt0 { + margin-top: 0 !important; +} + +.mt8 { + margin-top: 8px !important; +} + +.mt16 { + margin-top: 16px !important; +} + +.mt32 { + margin-top: 32px !important; +} + +.ml0 { + margin-left: 0 !important; +} + +/* margin-bottom */ +.mtb12 { + margin: 12px 0 !important; +} + +/*border*/ +.bdt2 { + border-top: 2px solid #4D596F; +} + +/*gap*/ +.btn_gap { + margin: 0 4px; +} + +/* input:disabled */ +input:disabled { + background: #F7F9FD !important; +} + +/* HTML input type="number" 기본 속성 화살표 제거 Chrome, Safari, Edge, Opera */ +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +/* HTML input type="number" 기본 속성 화살표 제거 Firefox */ +input[type='number'] { + -moz-appearance: textfield; +} + +.h_input { + height: 48px; +} + + +.btn_trash { + height: 40px; + padding: 0 9px 0 30px; + font-size: 14px; + line-height: 22px; + color: #0114A7; + background-color: #EDF1F7; + background-image: url(/img/icon/icon_trash2.png); + background-size: 20px; + background-position: 12px center; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; +} + + +.btn_memberbt { + height: 40px; + padding: 0 9px 0 30px; + font-size: 14px; + line-height: 22px; + color: #0114A7; + background-color: #EDF1F7; + background-image: url(/img/icon/icon_join.png); + background-size: 20px; + background-position: 12px center; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; +} + + +/*버튼 flex 일때*/ +.btn_type { + display: flex; + margin-top: 32px; + justify-content: center; + align-items: baseline; +} + +.btn_type .common_btn_type_1 { + margin-left: 8px; + width: 50%; +} + +.btn_type .common_btn_type_1:first-child { + margin-left: 0; +} + + +/*select*/ +.common_selecttype1 { + width: 100%; + padding: 0 45px 0 10px; + border: 1px solid #252B37; + border-radius: 8px; + outline: 0; + font-size: 14px; + background: #fff url(/img/icon/icon_select_arrow_down2.png) no-repeat 96% 50%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + border: 1px solid #C8D2E4; + height: 48px; +} + +.common_selecttype1_1 { + width: 100%; + padding: 0 45px 0 10px; + border: 1px solid #252B37; + border-radius: 8px; + outline: 0; + font-size: 14px; + background: #fff url(/img/icon/icon_select_arrow_down2.png) no-repeat 96% 50%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + border: 1px solid #C8D2E4; + height: 40px; +} + +.common_selecttype.select_items::-webkit-scrollbar { + padding: 10px; +} + +/*답변완료*/ +.complete { + font-family: 'Pretendard'; + background: #F2EBFF; + font-size: 12px; + color: #8941F6; + letter-spacing: 0; + border: 1px solid #F2EBFF; + text-align: center; + padding: 3px 8px; + border-radius: 16px; + display: inline-block; + font-weight: 400; + height: 24px; + line-height: 24px; + line-height: 18px; +} + +/*문의중*/ +.question { + font-family: 'Pretendard'; + background: #CDFCBF; + font-size: 12px; + color: #039115; + letter-spacing: 0; + border: 1px solid #CDFCBF; + text-align: center; + padding: 3px 13px; + border-radius: 16px; + display: inline-block; + font-weight: 400; + height: 24px; + line-height: 18px; +} + +/*Dot list*/ +.list-dot > p { + position: relative; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: left; + padding-left: 10px; +} + +.list-dot > p::before { + content: ''; + width: 3px; + height: 3px; + background: #888; + border-radius: 50%; + position: absolute; + left: 0; + top: 10px; +} + + +/*Tab Keyword btn*/ +.tab_list button { + height: 34px; + min-width: 65px; + background: #fff; + color: #020616; + border: 1px solid #C8D2E4; + padding: 0 12px; + transition: background-color 0.3s, color 0.3s; + display: flex; + justify-content: center; + align-items: center; + display: inline-flex; + white-space: nowrap; + font-family: 'Pretendard'; +} + +/*Title*/ +.sub_title2 h2 { + font-family: 'Pretendard'; + font-size: 48px; + font-weight: 700; + line-height: 56px; + letter-spacing: -0.2px; + text-align: center; + color: #000; +} + +.sub_title3 h2 { + font-family: 'Pretendard'; + font-size: 40px; + font-weight: 700; + line-height: 46px; + letter-spacing: -0.2px; + text-align: left; + color: #000; +} + +/*table*/ +.table_col { + border-top: 1px solid #4D596F; +} + +/*API 리스트 dot*/ +.api_dot ul li p { + position: relative; +} + +.api_dot ul li p:after { + content: ''; + width: 4px; + height: 4px; + background: #4D596F; + border-radius: 50%; + position: absolute; + left: -10px; + top: 8px; +} + +.h_inner { + padding-bottom: 78px; +} + +.h_inner2 { + padding-bottom: 56px; +} + +.h_inner3 { + padding-bottom: 59px; +} + +.h_inner4 { + padding-bottom: 53px; +} + +.h_inner5 { + padding-bottom: 74px; +} + +.h_inner6 { + padding-bottom: 48px; +} + +.h_inner7 { + margin-top: 16px; +} + +.h_inner8 { + padding-bottom: 56px; +} + + + + diff --git a/src/main/resources/static/css/daterangepicker.css b/src/main/resources/static/css/daterangepicker.css new file mode 100644 index 0000000..5874c04 --- /dev/null +++ b/src/main/resources/static/css/daterangepicker.css @@ -0,0 +1,488 @@ +.daterangepicker { + position: absolute; + color: inherit; + background-color: #fff; + border-radius: 4px; + border: 1px solid #ddd; + width: 278px; + max-width: none; + padding: 0; + margin-top: 7px; + top: 100px; + left: 20px; + /* z-index: 3001; */ + z-index: 0; + display: none; + font-family: arial; + font-size: 15px; + line-height: 1em; +} + +.daterangepicker:before, .daterangepicker:after { + position: absolute; + display: inline-block; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker:before { + top: -7px; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #ccc; +} + +.daterangepicker:after { + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; +} + +.daterangepicker.opensleft:before { + right: 9px; +} + +.daterangepicker.opensleft:after { + right: 10px; +} + +.daterangepicker.openscenter:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.openscenter:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.opensright:before { + left: 9px; +} + +.daterangepicker.opensright:after { + left: 10px; +} + +.daterangepicker.drop-up { + margin-top: -7px; +} + +.daterangepicker.drop-up:before { + top: initial; + bottom: -7px; + border-bottom: initial; + border-top: 7px solid #ccc; +} + +.daterangepicker.drop-up:after { + top: initial; + bottom: -6px; + border-bottom: initial; + border-top: 6px solid #fff; +} + +.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar { + float: none; +} + +.daterangepicker.single .drp-selected { + display: none; +} + +.daterangepicker.show-calendar .drp-calendar { + display: block; +} + +.daterangepicker.show-calendar .drp-buttons { + display: block; +} + +.daterangepicker.auto-apply .drp-buttons { + display: none; +} + +.daterangepicker .drp-calendar { + display: none; + max-width: 270px; +} + +.daterangepicker .drp-calendar.left { + padding: 8px 0 8px 8px; +} + +.daterangepicker .drp-calendar.right { + padding: 8px; +} + +.daterangepicker .drp-calendar.single .calendar-table { + border: none; +} + +.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { + color: #fff; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + padding: 3px; +} + +.daterangepicker .calendar-table .next span { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + display: none; +} +/* 20240919 추가 */ +.daterangepicker .calendar-table .next{ + background: url("../img/icon/icon_dp_arrow_next.png") no-repeat center; + background-size: 28px; + width: 28px; + height: 28px; +} +.daterangepicker .calendar-table .next.available{ + width: 28px; + height: 28px; +} + +.daterangepicker .calendar-table .prev span { + transform: rotate(135deg); + -webkit-transform: rotate(135deg); + display: none; +} + +/* 20240919 추가 */ +.daterangepicker .calendar-table .prev{ + background: url("../img/icon/icon_dp_arrow_prev.png") no-repeat center; + background-size: 28px; + width: 28px; + height: 28px; +} +.daterangepicker .calendar-table .prev.available{ + width: 28px; + height: 28px; +} + +.daterangepicker .calendar-table th, .daterangepicker .calendar-table td { + white-space: nowrap; + text-align: center; + vertical-align: middle; + /* min-width: 32px; + width: 32px; + height: 24px; + line-height: 24px; + font-size: 12px; */ + width: 38px; + height: 38px; + line-height: 38px; + font-size: 14px; + border-radius: 4px; + border: 1px solid transparent; + white-space: nowrap; + cursor: pointer; +} + +/*20240908 추가*/ +.daterangepicker .calendar-table th{ + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: center; + color: #252B37; +} + +/*20240908 추가*/ +.daterangepicker .calendar-table td{ + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; +} + +.daterangepicker .calendar-table { + border: 1px solid #fff; + border-radius: 4px; + background-color: #fff; +} + +.daterangepicker .calendar-table table { + width: 100%; + margin: 0; + border-spacing: 0; + border-collapse: collapse; +} + + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background-color: #ccc; + /* background-color: #eee; */ + border-color: transparent; + color: inherit; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: #fff; + border-color: transparent; + color: #999; +} + +.daterangepicker td.in-range { + /* background-color: #ebf4f8; */ + background-color: #E6EBFF; + border-color: transparent; + color: #000; + border-radius: 0; +} + +.daterangepicker td.start-date { + /* border-radius: 4px 0 0 4px; */ + border-radius: 50%; + -webkit-border-radius: 50%; + display: block; + width: 38px; + height: 38px; + line-height: 38px; +} + +.daterangepicker td.end-date { + /* border-radius: 4px 0 0 4px; */ + border-radius: 50%; + -webkit-border-radius: 50%; + display: block; + width: 38px; + height: 38px; + line-height: 38px; +} + +.daterangepicker td.start-date.end-date { + /* border-radius: 4px; */ + border-radius: 50%; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + /* background-color: #357ebd; */ + background-color: #0114A7; + border-color: transparent; + color: #fff; +} + +.daterangepicker th.month { + width: auto; + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; +} + +.daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin: 0 auto; + background: #eee; + border: 1px solid #eee; + padding: 2px; + outline: 0; + font-size: 12px; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 4px auto 0 auto; + line-height: 30px; + position: relative; +} + +.daterangepicker .calendar-time select.disabled { + color: #ccc; + cursor: not-allowed; +} + +.daterangepicker .drp-buttons { + clear: both; + text-align: right; + /* padding: 8px; */ + padding: 16px 24px 0 24px; + border-top: 1px solid #ddd; + display: none; + line-height: 12px; + vertical-align: middle; +} + +.daterangepicker .drp-selected { + /* display: inline-block; */ + display: none; + font-size: 12px; + padding-right: 8px; +} + +.daterangepicker .drp-buttons .btn { + margin-left: 8px; + font-size: 12px; + font-weight: bold; + padding: 4px 8px; +} + +.daterangepicker.show-ranges.single.rtl .drp-calendar.left { + border-right: 1px solid #ddd; +} + +.daterangepicker.show-ranges.single.ltr .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker.show-ranges.rtl .drp-calendar.right { + border-right: 1px solid #ddd; +} + +.daterangepicker.show-ranges.ltr .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker .ranges { + float: none; + text-align: left; + margin: 0; +} + +.daterangepicker.show-calendar .ranges { + margin-top: 8px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; +} + +.daterangepicker .ranges li { + font-size: 12px; + padding: 8px 12px; + cursor: pointer; +} + +.daterangepicker .ranges li:hover { + background-color: #eee; +} + +.daterangepicker .ranges li.active { + background-color: #08c; + color: #fff; +} + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .daterangepicker { + width: auto; + } + + .daterangepicker .ranges ul { + width: 140px; + } + + .daterangepicker.single .ranges ul { + width: 100%; + } + + .daterangepicker.single .drp-calendar.left { + clear: none; + } + + .daterangepicker.single .ranges, .daterangepicker.single .drp-calendar { + float: left; + } + + .daterangepicker { + direction: ltr; + text-align: left; + } + + .daterangepicker .drp-calendar.left { + clear: left; + margin-right: 0; + } + + .daterangepicker .drp-calendar.left .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .daterangepicker .drp-calendar.right { + margin-left: 0; + } + + .daterangepicker .drp-calendar.right .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .daterangepicker .drp-calendar.left .calendar-table { + padding-right: 8px; + } + + .daterangepicker .ranges, .daterangepicker .drp-calendar { + float: left; + } +} + +@media (min-width: 730px) { + .daterangepicker .ranges { + width: auto; + } + + .daterangepicker .ranges { + float: left; + } + + .daterangepicker.rtl .ranges { + float: right; + } + + .daterangepicker .drp-calendar.left { + clear: none !important; + } +} + diff --git a/src/main/resources/static/css/slick-theme.css b/src/main/resources/static/css/slick-theme.css new file mode 100644 index 0000000..1232fca --- /dev/null +++ b/src/main/resources/static/css/slick-theme.css @@ -0,0 +1,204 @@ +@charset 'UTF-8'; +/* Slider */ +.slick-loading .slick-list +{ + background: #fff url('./ajax-loader.gif') center center no-repeat; +} + +/* Icons */ +@font-face +{ + font-family: 'slick'; + font-weight: normal; + font-style: normal; + + src: url('./fonts/slick.eot'); + src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg'); +} +/* Arrows */ +.slick-prev, +.slick-next +{ + font-size: 0; + line-height: 0; + + position: absolute; + top: 50%; + + display: block; + + width: 20px; + height: 20px; + padding: 0; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + + cursor: pointer; + + color: transparent; + border: none; + outline: none; + background: transparent; +} +.slick-prev:hover, +.slick-prev:focus, +.slick-next:hover, +.slick-next:focus +{ + color: transparent; + outline: none; + background: transparent; +} +.slick-prev:hover:before, +.slick-prev:focus:before, +.slick-next:hover:before, +.slick-next:focus:before +{ + opacity: 1; +} +.slick-prev.slick-disabled:before, +.slick-next.slick-disabled:before +{ + opacity: .25; +} + +.slick-prev:before, +.slick-next:before +{ + font-family: 'slick'; + font-size: 20px; + line-height: 1; + + opacity: .75; + color: white; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.slick-prev +{ + left: -25px; +} +[dir='rtl'] .slick-prev +{ + right: -25px; + left: auto; +} +.slick-prev:before +{ + content: '←'; +} +[dir='rtl'] .slick-prev:before +{ + content: '→'; +} + +.slick-next +{ + right: -25px; +} +[dir='rtl'] .slick-next +{ + right: auto; + left: -25px; +} +.slick-next:before +{ + content: '→'; +} +[dir='rtl'] .slick-next:before +{ + content: '←'; +} + +/* Dots */ +.slick-dotted.slick-slider +{ + margin-bottom: 30px; +} + +.slick-dots +{ + position: absolute; + bottom: -25px; + + display: block; + + width: 100%; + padding: 0; + margin: 0; + + list-style: none; + + text-align: center; +} +.slick-dots li +{ + position: relative; + + display: inline-block; + + width: 20px; + height: 20px; + margin: 0 5px; + padding: 0; + + cursor: pointer; +} +.slick-dots li button +{ + font-size: 0; + line-height: 0; + + display: block; + + width: 20px; + height: 20px; + padding: 5px; + + cursor: pointer; + + color: transparent; + border: 0; + outline: none; + background: transparent; +} +.slick-dots li button:hover, +.slick-dots li button:focus +{ + outline: none; +} +.slick-dots li button:hover:before, +.slick-dots li button:focus:before +{ + opacity: 1; +} +.slick-dots li button:before +{ + font-family: 'slick'; + font-size: 6px; + line-height: 20px; + + position: absolute; + top: 0; + left: 0; + + width: 20px; + height: 20px; + + content: '•'; + text-align: center; + + opacity: .25; + color: black; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.slick-dots li.slick-active button:before +{ + opacity: .75; + color: black; +} diff --git a/src/main/resources/static/css/slick.css b/src/main/resources/static/css/slick.css new file mode 100644 index 0000000..57477e8 --- /dev/null +++ b/src/main/resources/static/css/slick.css @@ -0,0 +1,119 @@ +/* Slider */ +.slick-slider +{ + position: relative; + + display: block; + box-sizing: border-box; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + -webkit-touch-callout: none; + -khtml-user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} + +.slick-list +{ + position: relative; + + display: block; + overflow: hidden; + + margin: 0; + padding: 0; +} +.slick-list:focus +{ + outline: none; +} +.slick-list.dragging +{ + cursor: pointer; + cursor: hand; +} + +.slick-slider .slick-track, +.slick-slider .slick-list +{ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track +{ + position: relative; + top: 0; + left: 0; + + display: block; + margin-left: auto; + margin-right: auto; +} +.slick-track:before, +.slick-track:after +{ + display: table; + + content: ''; +} +.slick-track:after +{ + clear: both; +} +.slick-loading .slick-track +{ + visibility: hidden; +} + +.slick-slide +{ + display: none; + float: left; + + height: 100%; + min-height: 1px; +} +[dir='rtl'] .slick-slide +{ + float: right; +} +.slick-slide img +{ + display: block; +} +.slick-slide.slick-loading img +{ + display: none; +} +.slick-slide.dragging img +{ + pointer-events: none; +} +.slick-initialized .slick-slide +{ + display: block; +} +.slick-loading .slick-slide +{ + visibility: hidden; +} +.slick-vertical .slick-slide +{ + display: block; + + height: auto; + + border: 1px solid transparent; +} +.slick-arrow.slick-hidden { + display: none; +} diff --git a/src/main/resources/static/css/style2.css b/src/main/resources/static/css/style2.css new file mode 100644 index 0000000..9b0081c --- /dev/null +++ b/src/main/resources/static/css/style2.css @@ -0,0 +1,13344 @@ +@charset "utf-8"; + +@font-face { + font-family: 'Pretendard'; + src: url('/font/Pretendard-Regular.woff2') format('woff2'); + src: url('/font/Pretendard-Regular.woff') format('woff'); + src: url('/font/Pretendard-Regular.ttf') format('ttf'); + font-weight: 100; +} + +@font-face { + font-family: 'Pretendard'; + src: url('/font/Pretendard-Regular.woff2') format('woff2'); + src: url('/font/Pretendard-Regular.woff') format('woff'); + src: url('/font/Pretendard-Regular.ttf') format('ttf'); + font-weight: 400; +} + +@font-face { + font-family: 'Pretendard'; + src: url('/font/Pretendard-Bold.woff2') format('woff2'); + src: url('/font/Pretendard-Bold.woff') format('woff'); + src: url('/font/Pretendard-Bold.ttf') format('ttf'); + font-weight: 700; +} + + +/* css_reset */ +html { + -webkit-text-size-adjust: antialiased; + -webkit-text-size-adjust: 100%; + -moz-osx-font-smoothing: grayscale; + height: 100%; +} + +html, body { + width: 100%; + height: 100%; +} + +html body { + overflow-x: hidden; +} + +body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, form, fieldset, p, button, input { + margin: 0; + padding: 0; + -webkit-text-size-adjust: none; + word-break: keep-all; +} + +input, textarea { + border-radius: 0; + resize: none; + background: transparent; + border: 0; + outline: none; +} + +/* textarea{padding: 16px;} */ +textarea:focus { + outline: none; + border: 0 none; + color: #252B37; +} + +textarea::placeholder { + font-size: 14px; +} + +body, h1, h2, h3, h4, h5, h6, input, button { + font-family: 'Pretendard', Dotum, '돋움', Helvetica, AppleSDGothicNeo, sans-serif; +} + +body { + color: #666; + word-wrap: break-word; + word-break: break-all; + background: #E0E6F1; + margin: 0; + height: 100%; +} + +caption, legend { + font-size: 0; + line-height: 0; + text-indent: -5000px; +} + +img, fieldset, iframe { + border: 0 none; + vertical-align: top; + cursor: default; +} + +fieldset { + font-size: 0; +} + +ul, ol { + list-style: none; +} + +a { + color: #000; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +i, em, address { + font-style: normal; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +hr { + display: none; +} + +input { + background-color: #fff !important; +} + +input:focus { + background: #fff; +} + +input[type="submit"] { + cursor: pointer; +} + +.hidden { + clear: both; + height: 0; + line-height: 0; + width: 0; + position: absolute; + top: -9999px; + left: -9999px; +} + +body.fx { + overflow: hidden; +} + +ul, ol { + list-style: none; +} + +* { + box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +.gap { + margin-bottom: 30px; +} + +button { + padding: 0; + margin: 0; + border: 0; + cursor: pointer; + vertical-align: middle; + background: transparent; +} + +button, select { + text-transform: none; +} + +input, select { + background-color: #fff; + border: 1px solid #ccc; + border-radius: 0; + resize: none; +} + + +.loading-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.7); + z-index: 2000; + display: flex; + justify-content: center; + align-items: center; +} + +.loading-spinner { + width: 50px; + height: 50px; + border: 5px solid #f3f3f3; + border-top: 5px solid #3498db; + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + + +/* common */ +.btn_logout { + width: 72px; + height: 40px; + /* padding: 0 20px; */ + font-size: 14px; + line-height: 40px; + color: #0114A7; + background-color: #EDF1F7; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + margin-top: 0; + border-radius: 6px; +} + +/*btn*/ +.common_btn_type_1 { + font-weight: 400; + height: 56px; + line-height: 56px; + display: block; + cursor: pointer; + position: relative; + font-family: 'Pretendard'; + font-size: 16px; + color: #FFFFFF; + letter-spacing: -0.2px; + text-align: center; + background: #0114A7; + border: 1px solid #0114A7; + border-radius: 8px; + z-index: 0; +} + +.common_btn_type_1:after { + content: ''; + display: block; + cursor: pointer; + clear: both; + opacity: 0; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + background: transparent; + z-index: 10; + transition: all 0.5s; +} + +.common_btn_type_1.gray { + height: 56px; + line-height: 56px; + cursor: pointer; + display: block; + position: relative; + font-family: 'Pretendard'; + font-size: 16px; + color: #0114A7; + letter-spacing: -0.2px; + text-align: center; + background: #EDF1F7; + border-radius: 8px; + border: 1px solid #EDF1F7; +} + +.common_btn_type_1.blue { + height: 56px; + line-height: 56px; + display: block; + position: relative; + cursor: pointer; + font-family: 'Pretendard'; + font-size: 16px; + color: #fff; + letter-spacing: -0.2px; + text-align: center; + background: #0114A7; + border-radius: 8px; + border: 1px solid #0114A7; +} + +.common_btn_type_1.h_btn { + height: 56px; + line-height: 56px; + cursor: pointer; +} + +/*모바일에 버튼 높이가 56px 일때*/ +.common_btn_type_1.h_btn2 { + height: 40px !important; + cursor: pointer; + line-height: 40px !important; +} + +.common_btn_type_1.w_btn { + width: 160px; + margin: 0 auto; + cursor: pointer; +} + +.common_btn_type_2 { + height: 40px; + cursor: pointer; + line-height: 40px; + display: block; + position: relative; + font-family: 'Pretendard'; + cursor: pointer; + font-size: 16px; + color: #0114A7; + letter-spacing: -0.2px; + text-align: center; + background: #fff; + border-radius: 8px; + border: 1px solid #E0E6F1; +} + +.common_btn_type_2:after { + content: ''; + display: block; + cursor: pointer; + cursor: pointer; + clear: both; + opacity: 0; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + background: transparent; + z-index: 10; + transition: all 0.5s; +} + +.common_btn_type_2.hidden { + opacity: 0; + pointer-events: none; + visibility: hidden; + position: absolute; +} + +.common_btn_type_3 { + height: 56px; + cursor: pointer; + line-height: 56px; + display: block; + position: relative; + font-family: 'Pretendard'; + font-size: 16px; + color: #FFFFFF; + letter-spacing: -0.2px; + text-align: center; + background: #0114A7; + border-radius: 8px; +} + +.common_btn_type_3:after { + content: ''; + display: block; + clear: both; + cursor: pointer; + opacity: 0; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + background: transparent; + z-index: 10; + transition: all 0.5s; +} + +.common_btn_type_4 { + font-weight: 400; + height: 32px; + line-height: 32px; + cursor: pointer; + display: block; + position: relative; + font-family: 'Pretendard'; + font-size: 14px; + color: #0114A7; + letter-spacing: -0.2px; + text-align: center; + background: #fff; + border-radius: 4px; + border: 1px solid #E0E6F1; +} + +.common_btn_type_4:after { + content: ''; + cursor: pointer; + display: block; + clear: both; + opacity: 0; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + background: transparent; + z-index: 10; + transition: all 0.5s; +} + +.common_btn_type_5 { + font-weight: 700; + cursor: pointer; + height: 56px; + line-height: 56px; + display: block; + position: relative; + font-family: 'Pretendard'; + font-size: 16px; + color: #FFFFFF; + letter-spacing: -0.2px; + text-align: center; + background: #0114A7; + border-radius: 8px; +} + +/* common-inputType */ +.common_input_type_1 { + border-radius: 8px; + background: #fff; + height: 40px; + line-height: 40px; + border: 1px solid #E0E6F1; + font-size: 14px; + color: #8694B1; + letter-spacing: -0.02em; + text-indent: 16px; + width: 100%; + transition: all 0.3s; +} + +.common_input_type_1.w_inp { + width: 70%; +} + +.common_input_type_1.w_inp2 { + width: 60%; +} + +.common_input_type_1.w_inp5 { + width: 100%; +} + +.common_input_type_1.w_inp6 { + width: 78%; +} + +.common_input_type_1.w_inp7 { + width: 100%; +} + +.common_input_type_1.w_inp8 { + width: 78%; +} + +.common_input_type_1.w_inp9 { + width: 80%; +} + +.common_input_type_1.h_inp { + height: 48px; +} + +/*line-height: 48px;*/ +.form_type .info_box1.c_inp .common_input_type_1 { + color: #252B37; +} + +.common_input_type_1:focus, +.common-select-type:focus { + background: #E0E6F1; + border: 1px solid #E0E6F1; + font-size: 14px; + letter-spacing: -0.02em; + outline: none; + color: #252B37; +} + +.common_input_type_1.type-1:focus, +.common-select-type.type-1:focus { + background: #fff; +} + +.common_input_type_1[data-input="disabled"], +.common_selectType:disabled { + border: 1px solid #E0E6F1; + background: #F7F9FD !important; + color: #67748E; + font-size: 14px; +} + +.common_input_type_1[data-input="readonly"], +.common_selectType[data-input="readonly"] { + border: 1px solid #E0E6F1; + background: #fff; + color: #222; + font-size: 14px; +} + +.common_input_type_1::placeholder, +.common_selectType::placeholder { + border: 0; + font-size: 14px; + color: #8694B1; + height: 48px; + line-height: 48px; + position: relative; + top: 1px; +} + +/* common_textarea */ +.common_textareaType_1 { + background: #fff !important; + height: 122px; + font-size: 14px; + color: #8694B1; + letter-spacing: -0.2px; + line-height: 20px; + border: 0; + width: 100%; + padding: 4%; + border-radius: 6px; + border: 1px solid #E0E6F1; + font-family: 'Pretendard'; + font-weight: 400; +} + +.common_textareaType_1:focus { + color: #252B37; + border: 1px solid #E0E6F1; + font-size: 14px; + font-weight: 400; +} + +.common_textareaType_1::placeholder { + color: #8694B1; + font-size: 14px; +} + +/* common_checkbox */ +.inp_check, .inp_radio { + display: block; + position: relative; + min-height: 22px; + text-align: right; +} + +.inp_check input[type="checkbox"], +.inp_radio input[type="radio"], +.agree_radio input[type="radio"] { + position: absolute; + overflow: hidden; + clip: rect(0 0 0 0); + width: 1px; + height: 1px; + margin: -1px; +} + +.inp_check label, +.inp_radio label { + position: relative; + display: inline-block; + padding-left: 30px; + vertical-align: middle; + font-size: 16px; + font-family: 'Pretendard'; + font-weight: 400; + line-height: 22px; +} + +.inp_check label:before { + background: url(/img/icon/icon_checkbox_off.png) 0 0 no-repeat; + background-size: 24px; +} + +.inp_check input:checked + label:before { + content: ''; + background: url(/img/icon/icon_checkbox_on.png) 0 0 no-repeat; + background-size: 24px; +} + +.inp_check label:before, +.inp_radio label:before { + content: ''; + display: block; + cursor: pointer; + position: absolute; + left: 0; + top: -2px; + margin-top: 0; + width: 24px; + height: 24px; +} + +.inp_radio input:checked + label:before { + content: ''; + background: url(/img/icon/icon_radio_on.png) 0 0 no-repeat; + background-size: 24px; +} + +.inp_radio label:before { + background: url(/img/icon/icon_radio_off.png) 0 0 no-repeat; + background-size: 24px; + cursor: pointer; +} + +.count { + margin: 0 0 16px; + font-size: 16px; + color: #999; + font-weight: 400; + line-height: 1; + text-align: left; +} + +.count span, .count b { + margin-left: 4px; + font-size: inherit; + color: #000; + font-weight: inherit; + line-height: 1; +} + +/* Btn */ +.btn_search { + height: 40px; + padding: 0 12px 0 30px; + font-size: 14px; + line-height: 22px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_search.png) no-repeat 12px center / 16px 16px; + background-size: 16px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border: 1px solid #EDF1F7; + border-radius: 6px; +} + +.btn_add { + height: 40px; + padding: 0 12px 0 30px; + font-size: 14px; + line-height: 24px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_plus.png) no-repeat 10px center / 16px 16px; + background-size: 16px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border: 1px solid #EDF1F7; + border-radius: 6px; +} + +.btn_add.h_btn { + height: 28px; + padding: 0 7px 0 26px; + line-height: 26px; + font-size: 12px; +} + +.btn_key { + height: 40px; + padding: 0 9px 0 30px; + font-size: 14px; + line-height: 22px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_key.png) no-repeat 10px center / 16px 16px; + background-size: 16px; + background-position: 12px center; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 6px; +} + +.btn_keydel { + height: 40px; + padding: 0 12px 0 30px; + font-size: 14px; + line-height: 22px; + color: #E23A32; + background: #FFE5E0 url(/img/icon/icon_trash4.png) no-repeat 10px center / 16px 16px; + background-size: 16px; + background-position: 12px center; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 6px; +} + +.btn_del { + height: 32px; + padding: 0 12px; + font-size: 14px; + line-height: 22px; + color: #E23A32; + background: #FFE5E0; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 4px; +} + +.btn_refresh { + height: 40px; + padding: 0 12px 0 30px; + font-size: 14px; + line-height: 24px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_refresh.png) no-repeat 10px center / 16px 16px; + background-size: 16px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border: 1px solid #EDF1F7; + border-radius: 6px; +} + +.btn_business { + height: 48px; + padding: 0 20px 0 42px; + font-size: 14px; + line-height: 24px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_business.png) no-repeat 17px center / 20px 20px; + background-size: 20px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border: 1px solid #EDF1F7; + border-radius: 6px; +} + +.btn_business.business { + width: 100%; + height: 40px; + background: #EDF1F7 none; + padding: 0; +} + +/* PAGINATION */ +.pagination { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-top: 32px; +} + +.pagination a { + display: block; + width: 24px; + height: 24px; + font-size: 14px; + line-height: 24px; + margin: 0 3px; + font-family: 'Pretendard'; + font-weight: 400; + font-size: 14px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; +} + +.pagination a.page-current { + width: 24px; + color: #0114A7; + border: 1px solid #E0E6F1; + font-weight: 700; + border-radius: 4px; + font-size: 14px; + line-height: 24px; + cursor: pointer; +} + + +.pagination a.page-prev, .pagination a.page-next { + background: url("/img/icon/icon_page_arrow_l.png") no-repeat center; + background-size: 24px; + margin: 0 12px; +} + +.pagination a.page-next { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.pagination a.page-current.pc_current { + width: 24px; + color: #0114A7; + border: 1px solid #E0E6F1; + font-weight: 700; + border-radius: 4px; + font-size: 16px; +} + +.form_type .info_box1 .input .common_input_type_1.trash { + border: 1px solid #252B37; + background: url('/img/icon/icon_trash.png') no-repeat center right 16px; +} + +.form_type .info_box1 .input .common_input_type_1.trash::placeholder { + color: #252B37; +} + +/********* // common*********/ + + +/* SKIP TO CONTENT */ +.skip a { + position: absolute; + left: -3222%; +} + +.skip a:focus { + display: inline-block; + top: 0; + left: 0; + z-index: 9999; + width: 50%; + height: 30px; + background: #222; + line-height: 30px; + color: #fff; + text-align: center; +} + +#skipCt { + position: static; + min-height: 400px; +} + +/* IR */ +.blind { + position: absolute; + clip: rect(0 0 0 0); + width: 1px; + height: 1px; + margin: -1px; + overflow: hidden; +} + +.hidden { + clear: both; + height: 0; + line-height: 0; + width: 0; + position: absolute; + top: -9999px; + left: -9999px; +} + +.m-only { + display: block !important; +} + +.pc-only { + display: none !important; +} + +/*header*/ +.header { + width: 100%; + height: 56px; + border-bottom: 1px solid #e6e6e6; + position: fixed; + top: 0; + left: 0; + background-color: #fff; + z-index: 1000; +} + +.header .logo { + position: absolute; + width: 146px; + height: 18px; + left: 16px; + top: 19px; + background: url(/img/logo/img_logo.png) no-repeat center / contain; + z-index: 1200; +} + +.header .logo2 { + position: absolute; + width: 146px; + height: 18px; + left: 16px; + top: 19px; + background: url(/img/logo/img_mlogo.png) no-repeat center / contain; + z-index: 1200; +} + +.header .home { + position: absolute; + width: 24px; + height: 24px; + right: 52px; + top: 16px; + background: url(/img/icon/icon_home.png) no-repeat center / contain; + z-index: 1200; + display: none; +} + +.header .home.on { + display: block; +} + +.header .home2 { + position: absolute; + width: 24px; + height: 24px; + right: 45px; + top: 16px; + background: url(/img/icon/icon_home2.png) no-repeat center / contain; + z-index: 1200; +} + +/*right: 52px;*/ +.header .btn-mobilemenu { + width: 24px; + height: 24px; + position: absolute; + right: 16px; + top: 16px; + display: block; + color: transparent; + z-index: 10000; +} + +.header .btn-mobilemenu span { + font-size: 0; + text-indent: -9999px; + width: 18px; + height: 2px; + background: #505050; + display: block; + position: absolute; + top: 11px; + left: 3px; + -webkit-transition: width 0.3s; + transition: width 0.3s; + -webkit-transition-delay: 0.2s; + transition-delay: 0.2s; + color: transparent; + border-radius: 1.5px; +} + +.header .btn-mobilemenu span::before { + top: -7px; +} + +.header .btn-mobilemenu span::after, +.header .btn-mobilemenu span::before { + left: 0; + -webkit-transition: 0.3s; + transition: 0.3s; + content: ''; + width: 18px; + height: 2px; + background: #000; + position: absolute; + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + -webkit-transform-origin: center; + transform-origin: center; + border-radius: 1.5px; +} + +.header .btn-mobilemenu span::after { + bottom: -6px; +} + +.header .btn-mobilemenu span::before { + top: -6px; +} + +.header .btn-mobilemenu.on { + top: 17px; + right: 17px; +} + +.header .btn-mobilemenu.on span { + width: 0; +} + +.header .btn-mobilemenu.on span::before { + -webkit-transform: rotate(225deg); + transform: rotate(225deg); + top: 0; + background: #fff; +} + +.header .btn-mobilemenu.on span::after { + -webkit-transform: rotate(-225deg); + transform: rotate(-225deg); + bottom: 0; + background: #fff; +} + +.header .m-nav { + position: fixed; + top: 0; + right: -100%; + width: 100%; + height: 100%; + background: #140064; + display: block; + padding-top: 1px; + overflow: auto; + z-index: 1500; +} + +.header .m-nav nav { + text-align: left; + margin: 0 24px; +} + +.header .m-nav nav .m-nav-global > li { + margin-top: 0; +} + +.header .m-nav nav .m-nav-global > li > a { + font-size: 18px; + font-weight: 500; + color: #fff; + display: block; + line-height: 1; + padding: 20px 0; +} + +.header .m-nav nav .m-nav-global > li > a span { + display: inline-block; + position: relative; +} + +.header .m-nav nav .m-nav-global > li > a span::after { + content: ''; + width: 24px; + height: 24px; + position: absolute; + left: calc(100% + 4px); + top: -2px; + background: url(/images/icon/m_navitem_on.svg) no-repeat center; +} + +.header .m-nav nav .m-nav-cs { + margin-top: 132px; + margin-left: 0; + margin-right: 0; + padding: 0; +} + +/* .header .m-nav nav .m-nav-cs{margin-top: 132px;margin-left: -16px;margin-right: -16px;padding: 24px 24px 0 24px;} */ +.header .m-nav nav .m-nav-cs > li { + border-bottom: 1px solid rgba(255, 255, 255, 0.2); +} + +.header .m-nav nav .m-nav-cs > li > a { + position: relative; + color: #fff; + display: block; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + padding: 20px 0; +} + +.header .m-nav nav .m-nav-cs > li > a img { + margin-right: 8px; + margin-left: 3px; +} + +.header .m-nav nav .m-nav-cs > li > a::after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_arrow_down3.png); + background-size: 24px 24px; + background-repeat: no-repeat; + width: 24px; + height: 24px; + position: absolute; + top: 21px; + right: 0; +} + +.header .m-nav nav .m-nav-cs > li.on > a::after { + background-image: url(/img/icon/icon_arrow_down3_sel.png); +} + +.header .m-nav nav .m-nav-cs > li .mc-sub-nav { + margin-top: 0; + padding: 8px 0; + border-top: 1px solid rgba(255, 255, 255, 0.2); +} + +.header .m-nav nav .m-nav-cs > li .mc-sub-nav li { + padding: 8px 0; +} + +.header .m-nav nav .mg-sub-nav, .header .m-nav nav .mc-sub-nav { + display: none; +} + +.header .m-nav nav .mg-sub-nav li a, .header .m-nav nav .mc-sub-nav li a { + display: block; + color: #fff; + padding-left: 36px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; +} + +.header .m-nav nav .mc-sub-nav li a { + position: relative; +} + +.header .m-nav nav .mc-sub-nav li a::before { + content: ''; + width: 3px; + height: 3px; + background: #fff; + border-radius: 50%; + position: absolute; + left: 20px; + top: 10px; +} + +.header .login_btn_group { + display: block; + position: absolute; + top: 80px; + width: 100%; + left: 0; + padding: 0 24px; + z-index: 111; +} + +.header .header_btn_group { +} + +.header .header_btn_group .login_wrap { + display: flex; + justify-content: space-between; +} + +.header .header_btn_group .login_wrap.flex_no { + display: inline; +} + +.header .header_btn_group .login_wrap .login_prev { + display: flex; +} + +.header .header_btn_group .login_wrap .btn_loginbt, +.header .header_btn_group .login_wrap .btn_memberbt { + height: 56px; + /* width: calc(50% - .3rem); */ + border-radius: 8px; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + background: #fff; + color: #0114A7; +} + +.header .header_btn_group .login_wrap .btn_loginbt { + position: relative; + width: 50%; + margin-right: 6px; + padding: 0 9px 0 30px; +} + +.header .header_btn_group .login_wrap .btn_loginbt:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_login.png); + background-size: 24px 24px; + background-repeat: no-repeat; + width: 24px; + height: 24px; + position: absolute; + top: 14px; + left: 30px; +} + +.header .header_btn_group .login_wrap .btn_memberbt { + position: relative; + width: 50%; + margin-left: 6px; +} + +.header .header_btn_group .login_wrap .btn_memberbt:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_join.png); + background-size: 24px 24px; + background-repeat: no-repeat; + width: 24px; + height: 24px; + position: absolute; + top: 14px; + left: 30px; +} + +.header .header_btn_group .login_wrap .profile_type a { + position: relative; +} + +.header .header_btn_group .login_wrap .profile_type a:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_profile.png); + background-size: 48px 48px; + background-repeat: no-repeat; + width: 48px; + height: 48px; + position: absolute; + top: -1px; + left: -1px; +} + +.header .header_btn_group .login_wrap .profile_type p { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; + margin-left: 60px; +} + +.header .header_btn_group .login_wrap .profile_type span { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; + margin-left: 60px; +} + +.info_wrap { + padding: 16px 24px 16px 24px; + border-radius: 16px; + opacity: 0px; + background: #00000033; + margin-top: 40px; + margin-left: 16px; + margin-right: 16px; +} + +.header .info_wrap .tit1 a { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; +} + +.header .info_wrap .tit1 span { + padding: 0 20px; +} + +.header .info_wrap .tit2 { + font-family: 'Pretendard'; + cursor: default; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; + padding-top: 8px; +} + +.header .gnb-pc { + display: none; +} + +#nav { + display: none; +} + +.navigation { + display: none; +} + +#wrap { + display: flex; + flex-direction: column; + background: #fff; + min-height: 100vh; +} + +.wrap { + background: #E0E6F1 !important; +} + +.wrap_top { + min-height: 100%; +} + +/*contents*/ +.content { + flex: 1 0 auto; + width: 100%; + box-sizing: border-box; + display: flex; + flex-direction: column; +} + +.content.main { + margin-top: 56px; +} + +.content_wrap { + margin-top: 56px; +} + +.content_wrap.cp_box { + margin-top: 0; +} + +.top_wrap { + padding-top: 95px; +} + +#wrap .inner { + padding: 24px 16px 24px 16px; +} + +#wrap .inner2 { + padding: 24px 16px 24px 16px; +} + +#wrap .api_inner { + padding: 32px 16px 56px 16px; +} + +#wrap .inner.member { + margin: 35px 0; +} + +#wrap .inner.h_inner { + padding-bottom: 78px; +} + +#wrap .inner.h_inner2 { + padding-bottom: 56px; +} + +#wrap .inner.h_inner3 { + padding-bottom: 59px; +} + +#wrap .inner.h_inner4 { + padding-bottom: 53px; +} + +#wrap .inner.h_inner5 { + padding-bottom: 74px; +} + +#wrap .inner.h_inner6 { + padding-bottom: 48px; +} + +#wrap .inner.h_inner7 { + margin-top: 16px; +} + +#wrap .inner.h_inner8 { + padding-bottom: 56px; +} + +#wrap .inner.h_inner9 { + padding-bottom: 102px; +} + +#wrap .inner.h_inner10 { + padding-bottom: 56px; +} + +#wrap .inner.h_inner11 { + padding-bottom: 40px; +} + +/* footer */ +#footer { + background-color: #252B37; + padding: 32px 16px 50px 16px; + position: relative; +} + +#footer .family-sites { + width: 100%; + position: relative; + border-radius: 5px; + overflow: visible; + border: 1px solid rgba(255, 255, 255, 0.2); + margin-top: 16px; +} + +#footer .family-sites h3 { + margin: 0; + padding: 12px 16px 12px 16px; + cursor: pointer; + user-select: none; + background-color: #252B37; + position: relative; + border-radius: 6px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 21px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; + height: 40px; +} + +#footer .family-sites h3::after { + content: ''; + position: absolute; + right: 10px; + top: 50%; + width: 20px; + height: 20px; + background-image: url('/img/icon/icon_arrow_down3_sel.png'); + background-size: contain; + background-repeat: no-repeat; + transform: translateY(-50%); + transition: transform 0.3s; +} + +#footer .family-sites ul.expanded + h3::after { + transform: translateY(-50%) rotate(180deg); +} + +#footer .family-sites ul { + padding: 0; + max-height: 0; + overflow: hidden; + position: absolute; + bottom: 100%; + left: 0; + right: 0; + background-color: #252B37; + border-radius: 6px; + margin-bottom: 5px; + z-index: 1; +} + +#footer .family-sites.expanded ul { + max-height: 200px; + border: 1px solid rgba(255, 255, 255, 0.2); +} + +#footer .family-sites li:last-child { + border-bottom: none; +} + +#footer .family-sites a { + display: block; + padding: 10px 16px 10px 16px; + color: #fff; + text-decoration: none; + transition: background-color 0.3s; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; +} + +#footer .f-info { + color: #fff; + padding-top: 24px; +} + +#footer .f-info .bold-link { + font-weight: 400; + color: #a5ff00; + font-size: 14px; + line-height: 22px; + letter-spacing: -0.2px; + padding-top: 24px; +} + +#footer .f-info a { + font-family: 'Pretendard'; + font-weight: 400; + color: #fff; + font-size: 14px; + line-height: 22px; + letter-spacing: -0.2px; + padding-top: 24px; +} + +#footer .f-info span { + padding: 0 20px; +} + +#footer .f-info2 { + font-family: 'Pretendard'; + font-weight: 400; + color: #FFFFFFA6; + cursor: default; + font-size: 14px; + line-height: 22px; + letter-spacing: -0.2px; + padding-top: 26px; +} + + +/* 로그인 / 회원가입 */ + +.validation-message { + display: none; + font-size: 0.875rem; + margin-top: 0.9rem; + padding: 0.4rem 0; + text-indent: 200px; +} + +.validation-message.error { + display: block; + color: #dc2626; /* 빨간색 텍스트 */ +} + +.validation-message.success { + display: block; + color: #059669; /* 초록색 텍스트 */ +} + +.con_title { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + cursor: default; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; +} + +.con_title .tit_txt { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; +} + +.con_title p span { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + color: #020616; +} + +.con_title .tit_txt span { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; +} + +.inp_check label:before { + top: -1px !important; +} + +.sub_title2 { + display: none; +} + +.header .sub_title { + text-align: center; + margin: 0 auto; + width: 100%; + left: 0; +} + +.header .sub_title p { + font-size: 20px; + font-family: 'Pretendard'; + font-weight: 700; + position: relative; + padding-top: 16px; + color: #000; + line-height: 26px; + letter-spacing: -0.2px; +} + +/*.header .sub_title p:after {*/ +/* content: '';*/ +/* display: block;*/ +/* clear: both;*/ +/* background-image: url(/img/icon/icon_arrow_left.png);*/ +/* background-position: 0;*/ +/* background-repeat: no-repeat;*/ +/* background-size: 24px;*/ +/* width: 24px;*/ +/* height: 24px;*/ +/* position: absolute;*/ +/* top: 16px;*/ +/* left: 16px;*/ +/*}*/ + +#wrap .inner .login_box { + padding-top: 0; +} + +#wrap .login_box .group { + display: block; +} + +#wrap .login_box .group label { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 48px; + color: #3B4659; +} + +#wrap .login_box .group .common_input_type_1 { + height: 48px; + margin-top: 0; +} + +#wrap .box_inp { + margin-top: 16px; +} + +.inp_check.f_size label { + font-size: 14px; +} + +#wrap .btn_login { + padding-top: 24px; +} + +#wrap .btn_login .common_btn_type_1 span { + z-index: 20; + position: relative; +} + +.login_list { + margin: 24px auto 0 auto; + text-align: center; +} + +.login_list li { + display: inline-block; +} + +.login_list li a { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; +} + +.login_list li.line { + padding: 0 12px; + color: #C8D2E4; +} + +.login_list li span { + padding: 0 5px; + color: #C8D2E4; +} + +#wrap .member_tit { + padding-top: 95px; +} + +#wrap .member_tit p { + color: #020616; + margin: 0 auto; + text-align: center; + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: center; +} + +#wrap .member_tit p span { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.2px; + text-align: center; +} + +.member_list { + margin-top: 32px; +} + +.member_list a { + text-decoration: none; +} + +.member_list .mb_group1 { + position: relative; + background: #0114A7; + padding: 38px 92px 38px 140px; + border-radius: 9px; + box-shadow: 0px 2px 2px 0px #414E651A; + text-align: center; + cursor: pointer; +} + +.member_list .mb_group1 a { + position: relative; +} + +.member_list .mb_group1 a:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_member01_m.png); + background-position: 0; + background-repeat: no-repeat; + background-size: 32px; + width: 32px; + height: 32px; + position: absolute; + top: -8px; + left: -45px; +} + +.member_list .mb_group1 span { + position: relative; + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + margin: 0 auto; +} + + +.member_list .mb_group2 { + margin-top: 16px; + background: #EDF1F7; + padding: 38px 92px 38px 140px; + border-radius: 9px; + box-shadow: 0px 2px 2px 0px #414E651A; + text-align: center; + cursor: pointer; +} + +.member_list .mb_group2 a { + position: relative; +} + +.member_list .mb_group2 a:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_member02_m.png); + background-position: 0; + background-repeat: no-repeat; + background-size: 32px; + width: 32px; + height: 32px; + position: absolute; + top: -8px; + left: -45px; +} + +.member_list .mb_group2 span { + position: relative; + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #0114A7; + margin: 0 auto; +} + +.list { +} + +.list ul li { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.2px; +} + +.list ul li a { + text-decoration: none; +} + +.list ul li a img { + width: 20px; + height: 20px; +} + +.list ul li.line { + padding: 0 12px; + color: #C8D2E4; +} + + +.tit_logo { + padding-top: 138px; + text-align: center; +} + +.tit_logo2 { + padding-top: 138px; + text-align: center; +} + +#wrap .member_tit { + padding-top: 40px; +} + +#wrap .member_tit.complete { +} + +#wrap .member_tit.complete p { + padding-top: 94px; + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.2px; + text-align: center; + color: #000; +} + +#wrap .inner .i_complete { + margin: 0 auto; + text-align: center; +} + +#wrap .inner .complete_txt { + padding-top: 12px; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.2px; + text-align: center; + color: #4D596F; +} + +.btn_home { + width: 100%; + margin: 32px auto 0 auto; +} + +#wrap .inner .cs_info { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #8694B1; + margin-top: 40px; +} + +.email_tit { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + margin-top: 40px; +} + +/*****고객지원*****/ +.sub_title3 h2 { + display: none; +} + +.board_search .count { + display: none; +} + +.board_search { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} + +.board_search .search_txt { + position: relative; + width: 100%; + height: 40px; + line-height: 40px; + border-radius: 6px; +} + +.board_search .search_txt .common_input_type_1 { + width: 100%; +} + +.board_search .search_txt.result .common_input_type_1::placeholder { + color: #252B37; +} + +/* .board_search .search_txt input {border: none;width: 100%;height: 38px;line-height: 38px;vertical-align: top;padding-left: 15px;} */ +.board_search .search_txt input::placeholder { + color: #8694B1; +} + +.board_search .btn_wrap { + margin-left: 8px; +} + +.total-post-wrap { + margin-top: 16px; + display: flex; + justify-content: start; +} + +.total-post-wrap .total-post { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #000; + cursor: default; +} + +.total-post-wrap .total-post strong { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #020616; +} + +.board-list-wrap { + margin-top: 8px; +} + +.board-list { + border-top: 2px solid #4D596F; +} + +.board-list li { + padding: 16px 0 16px 8px; + border-bottom: 1px solid #E0E6F1; +} + +/*공지사항 - 검색결과없음*/ +.board-list .no-result-wrap { + border-bottom: 1px solid #E0E6F1; + padding: 0; +} + +.no-result-wrap .no_data { + padding-top: 96px; +} + +.no-result-wrap .no_data .no_result_text { + margin: 0 auto; + text-align: center; +} + +.no-result-wrap .no_data .no_result_text p { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #8694B1; + padding-bottom: 96px; +} + + +.board-list li.th-head { + display: none; +} + +.board-list li div { + position: relative; + display: block; + align-items: center; + justify-content: space-between; + flex-wrap: nowrap; +} + +.board-list li div .col-num { + display: none; + cursor: default; +} + +.board-list li div .col-title { + padding-left: 0; + width: 100%; + margin-bottom: 0; + font-size: 16px; + font-weight: 400; + font-family: 'Pretendard'; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; +} + +.board-list li div .col-date { + width: auto; + color: #252B37; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; +} + +.board-list li div .col-date em { + color: #C8D2E4; + padding: 0 8px; +} + +.board-list li div .col-title.icon_file a { + position: relative; +} + +.board-list li div .col-title em a { + position: relative; + display: block; + width: 100%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #000; + font-weight: 500; +} + +.board-view { + border-top: 2px solid #4D596F; + border-bottom: 1px solid #E0E6F1; +} + +.board-view .board-view-head { + padding: 16px; + border-bottom: 1px solid #E0E6F1; +} + +.board-view .board-view-head .title { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #000; + cursor: default; +} + +.board-view .board-view-head .write-info { + display: block; + margin-top: 8px; +} + +.board-view .board-view-head .write-info .date-info { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #67748E; + cursor: default; +} + +.board-view .board_file .file_group { + padding: 10px 16px 10px 0; + border-bottom: 1px solid #E0E6F1; +} + +.board-view .board_file .file_group span a { + position: relative; + display: block; + width: 100%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #000; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + padding-left: 40px; + text-decoration: underline; +} + +.board-view .board_file .file_group span a:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_file.png); + background-position: 0; + background-repeat: no-repeat; + background-size: 20px; + width: 20px; + height: 20px; + position: absolute; + top: 0; + left: 16px; +} + +.board-view .board-view-body { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + padding: 24px 16px; + cursor: default; +} + +.board-view .board-view-body p { + margin-top: 22px; +} + +.board-view .board-view-body .list_type li { + position: relative; + padding-left: 20px; +} + +.board-view .board-view-body .list_type li::after { + content: ''; + width: 3px; + height: 3px; + background: #888; + border-radius: 50%; + position: absolute; + left: 12px; + top: 10px; +} + +/* Q&A */ +.board-list.qna_list { + position: relative; +} + +.board-list.qna_list li { + padding: 47px 0 15px 0; + +} + +.board-list.qna_list .col-name { + padding-left: 8px; +} + +.board-list.qna_list .col-name em { + padding-left: 6px; + color: #C8D2E4; +} + +.board-list li div .col-title em.qna-type { + position: relative; +} + +.board-list li div .col-title em.qna-type a { + padding-left: 8px; +} + +.board-list li div .col-title em.qna-type a.qna_l { + padding-left: 0; +} + +.board-list.qna-type li div .col-title em.qna-type a .icon-secret { + position: relative; + vertical-align: middle; + margin-bottom: -.2rem; +} + +.board-list.qna-type li div .col-title em.qna-type a .icon-file { + position: relative; + vertical-align: middle; + margin-bottom: -.2rem; +} + +.board-list li div .col-title em.qna-type a .icon-secret { + position: absolute; + left: 0; + top: 50%; + margin-top: -1rem; +} + +.icon-secret { + display: inline-flex; + width: 20px; + height: 20px; + font-size: 0; + background: url(/img/icon/icon_lock.png) no-repeat 50% 50% / 20px 20px; +} + +.board-list li div .col-title .icon_file { + width: 20px; + height: 20px; + display: inline-block; + margin-left: 0; +} + +.board-list li div .col-name { + width: auto; + margin-right: 0; + font-size: 14px; + font-weight: 400; + line-height: 22px; + font-family: 'Pretendard'; +} + +.board-list li div .col-comp { + display: inline-block; + line-height: 24px; + border-radius: 16px; + font-family: 'Pretendard'; + font-size: 12px; + letter-spacing: 0; + font-weight: 400; + cursor: default; +} + +.board-list li div .col-comp .complete { + position: absolute; + top: -32px; + left: 8px; +} + +.board-list li div .col-comp .question { + position: absolute; + top: -32px; + left: 8px; +} + +.btn_board2 { + margin-top: 32px; +} + +.btn_board.btn_top { + margin-top: 32px; +} + +.board-view-head.qna .detail_title { + margin-top: 8px; +} + +.board-view-head.qna .complete_box .complete { + padding: 0 7px; + line-height: 24px; + cursor: default; +} + +.board-view-head.qna .write-info .date-info .date_stxt { + padding-right: 18px; + cursor: default; +} + +.comment_wrap { + position: relative; + border-bottom: 1px solid #E0E6F1; +} + +.comment_wrap .comment_wrap_head { + padding: 10px 0; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + position: relative; + padding-left: 54px; + padding-right: 16px; +} + +.comment_wrap .comment_wrap_head:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_kbank.png); + background-size: 32px 32px; + background-repeat: no-repeat; + width: 32px; + height: 32px; + position: absolute; + top: 10px; + left: 16px; +} + +.comment_wrap .comment_wrap_head .title { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #252B37; +} + +.comment_wrap .comment_wrap_head .title em { + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 400; + line-height: 18px; + text-align: left; + color: #67748E; + cursor: default; +} + +.comment_wrap .comment_wrap_head p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + word-break: break-all; + padding-top: 4px; + color: #252B37; + cursor: default; +} + +.common_textarea { + width: 100%; + height: 140px; + padding: 8px; + box-sizing: border-box; + resize: vertical; + border-radius: 6px; +} + + +/* 회원가입 */ +.info_txt { + color: #4D596F; + background: #F7F9FD; + border-radius: 8px; + padding: 12px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.2px; + text-align: left; +} + +.terms_box { + margin-top: 48px; + position: relative; + border-bottom: 2px solid #4D596F; +} + +.terms_box.t_top { + margin-top: 0; +} + +.terms_box p { + font-family: 'Pretendard'; + font-size: 18px; + cursor: default; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #140064; + padding-bottom: 8px; +} + +.terms_box.title { + border-bottom: 0 none; +} + +.terms_box.title p { + border-bottom: 0 none; + padding-bottom: 8px; +} + +.terms_box span { + position: absolute; + top: 0; + cursor: default; + right: 0; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.2px; + color: #3B4659; + margin-right: 7px; +} + +.top_info { + background: #F7F9FD; + padding: 12px 12px 12px 28px; + border-radius: 8px; + margin-bottom: 16px; +} + +.top_info.m_tbom { + margin: 12px 0; +} + +.top_info li { + position: relative; + font-family: 'Pretendard'; + cursor: default; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; +} + +.top_info .top { + padding-top: 8px; +} + +.top_info .top::before { + top: 12px; +} + +.top_info li::before { + content: ''; + width: 10px; + cursor: default; + height: 10px; + background: url(/img/icon/icon_notice_star.png) no-repeat 0 0; + background-size: 10px; + position: absolute; + left: -15px; + top: 5px; +} + +.total_wrap { + border: 1px solid #C8D2E4; + padding: 20px 16px 20px 16px; + border-radius: 8px; + margin-top: 16px; +} + +.total_wrap > .inp_check { + text-align: left; + border-bottom: 1px solid #C8D2E4; + padding-bottom: 16px; +} + +.total_wrap .total_type .inp_check { + text-align: left; +} + +.total_wrap .inp_check.b_tit label { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #252B37; +} + +.total_wrap .inp_check.s_tit label { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; +} + +.total_wrap .inp_check span { + color: #0114A7; +} + +.total_wrap .total_type .suv_ck { + padding-top: 16px; +} + +.suv_ck > ul > li > .txt_wrap { + background: #F7F9FD; + display: none; + padding: 16px 16px 16px 16px; + /* overflow-y: auto; */ + min-height: 314px; + /* 스크롤바 막대 */ +} + +/**/ +.txt_wrap { + padding: 10px; + display: none; + max-height: 200px; + overflow-y: auto; +} + +.txt_wrap.active { + display: block; +} + +.scrollbar { + scrollbar-width: thin; + scrollbar-color: #888 #f1f1f1; +} + +.scrollbar::-webkit-scrollbar { + width: 5px; +} + +.scrollbar::-webkit-scrollbar-track { + background: #f1f1f1; +} + +.scrollbar::-webkit-scrollbar-thumb { + background: #888; +} + +/* // */ + + +.scrollbar { + height: 100px; + overflow-y: scroll; +} + +/* 스크롤바의 폭 너비 */ +.scrollbar::-webkit-scrollbar { + width: 8px; +} + +.scrollbar::-webkit-scrollbar-thumb { + /* 스크롤바 색상 */ + background: rgba(0, 0, 0, 0.1); + border-radius: 10px; /* 스크롤바 둥근 테두리 */ +} + +.scrollbar::-webkit-scrollbar-track { + background: rgba(247, 249, 253, 1); /*스크롤바 뒷 배경 색상*/ +} + +.suv_ck ul li.sel .txt_wrap { + display: block; + width: 100%; + margin-top: 12px; + border-radius: 8px; +} + +.suv_ck ul li.sel .txt_wrap h3 { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #252B37; +} + +.suv_ck ul li.sel .txt_wrap article h4 { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #252B37; + margin-top: 20px; +} + +.suv_ck ul li.sel .txt_wrap article p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; +} + +.suv_ck ul li.sel a:after { + background-image: url(/img/icon/icon_arrow_down2_sel.png); +} + +.suv_ck ul li a { + position: relative; + display: block; +} + +.suv_ck ul li a:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_arrow_down2.png); + background-size: 20px 20px; + background-repeat: no-repeat; + width: 20px; + height: 20px; + position: absolute; + top: -23px; + right: 4px; +} + + +.join_info .info1 label { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #3B4659; +} + +.join_info .info1 .info_line span { + padding: 0 2px; + line-height: 40px; +} + +.join_info .info1 .certify_box { + position: relative; +} + +.join_info .info1 .certify_box .certify_time { + display: inline-block; + position: absolute; + right: 15px; + top: 11px; + z-index: 0; + font-size: 16px; + color: #E23A32; + font-family: 'Pretendard'; + font-weight: 700; + font-size: 14px; + line-height: 22px; +} + +.join_info .btn_application { + display: flex; + margin-top: 32px; + justify-content: center; + align-items: baseline; +} + +.join_info .btn_application .common_btn_type_1 { + margin-left: 8px; + width: 50%; + cursor: pointer; +} + +.join_info .btn_application .common_btn_type_1:first-child { + margin-left: 0; +} + +.join_info .info1 .info_line { +} + +.join_info .info1 .info_line .special_t { + width: 5%; + display: inline-block; + text-align: center; +} + +.join_info .info1 .info_line .inp_wd1 { + width: 50%; +} + +.join_info .info1 .info_line .inp_wd2 { + width: 43%; +} + +.join_info .info1 .info_line .input.w_hp1 select { + width: 25%; +} + +.join_info .info1 .info_line .input.w_hp2 input { + width: 31%; +} + +.agency_info .info1 label { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #3B4659; +} + +.agency_info .info1 .info_line { + display: flex; + justify-content: center; +} + +.agency_info .info1 .info_line .inp_wd3 { + width: 37%; +} + +.agency_info .info1 .info_line .inp_wd4 { + width: 23%; +} + +.agency_info .info1 .info_line .inp_wd5 { + width: 37%; +} + +.agency_info .info1 .info_line .dash { + padding: 0 3px; + line-height: 40px; +} + +.agency_info .info1 .info_line .input.w_hp3 { + width: 80%; +} + +.agency_info .info1 .info_line .input.w_hp4 { + width: 100%; +} + +.agency_info .info1 .certify_box { + position: relative; + width: 100%; +} + +.agency_info .info1 .certify_box .certify_time { + display: inline-block; + position: absolute; + right: 15px; + top: 11px; + z-index: 0; + font-size: 16px; + color: #E23A32; + font-family: 'Pretendard'; + font-weight: 700; + font-size: 14px; + line-height: 22px; +} + +.agency_info .info1 .info_line.info_add { + display: block; +} + +.agency_info .info1 .info_line .filebox .upload_name { + display: inline-block; + height: 40px; + padding: 0 10px; + vertical-align: middle; + border: 1px solid #dddddd; + width: 100%; + color: #C8D2E4; + border-radius: 8px; + border: 1px solid #C8D2E4; +} + +.agency_info .info1 .info_line .filebox label { + font-size: 16px; + display: inline-block; + padding: 10px 20px; + color: #0114A7; + vertical-align: middle; + background: #fff; + cursor: pointer; + height: 40px; + font-family: 'Pretendard'; + text-align: center; + border-radius: 8px; + border: 1px solid #0114A7; + width: 100%; +} + +.agency_info .info1 .info_line .filebox input[type="file"] { + position: absolute; + width: 0; + height: 0; + padding: 0; + overflow: hidden; + border: 0; +} + +.list-dot { + margin-top: 8px; +} + +.list-dot > p { + position: relative; + font-family: 'Pretendard'; + cursor: default; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + padding-left: 10px; +} + +.list-dot > p::before { + content: ''; + width: 3px; + height: 3px; + background: #888; + cursor: default; + border-radius: 50%; + position: absolute; + left: 0; + top: 10px; +} + +/*비밀번호 찾기, 비밀번호 초기화*/ +.tab-wrap { + /* margin-top: 25px; */ +} + +/* 전체 탭 컨테이너 */ +.tabs { + width: 100%; + max-width: 100%; +} + +/* 메인 탭과 서브 탭 내비게이션 바 */ +.tab_nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + margin-bottom: 24px; +} + +.tab_nav.tabm { + margin-bottom: 0; +} + +.tab_nav li { + width: 50%; + border-bottom: 2px solid #C8D2E4; +} + +.tab_nav li.active { + border-bottom: 2px solid #0114A7; +} + +.sub_tab_nav { + display: flex; + align-items: center; + position: relative; + padding: 32px 0 0 0; +} + +/* .sub_tab_nav { margin-top: 20px; } */ +.tab_nav::after, +.sub_tab_nav::after { +} + +/* 메인 및 서브 탭 */ +.tab_nav li a { + display: block; + position: relative; + padding: 12px 0; + color: #4D596F; + cursor: pointer; + z-index: 0; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 16px; + letter-spacing: -0.02em; + text-align: center; + text-decoration: none; +} + +.sub_tab_nav li a { + display: block; + position: relative; + padding: 10px 15px 10px 0; + font-size: 18px; + font-weight: 700; + color: #000; + z-index: 0; +} + +/* 활성화된 탭 */ +.tab_nav li.active a { + background: #fff; + z-index: 2; + color: #0114A7; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 16px; + cursor: pointer; + text-align: center; +} + +/* 탭 컨텐츠 영역 */ +.tab, .sub_tab { + display: none; + border-top: none; + border-radius: 0 0 6px 6px; +} + +/* 활성화된 탭 컨텐츠 영역을 표시 */ +.tab.active, .sub_tab.active { + display: block; +} + +.result_view { + padding-top: 56px; +} + +.form_type .result_view .title { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + display: block; +} + +.result_view ul { + margin-top: 27px; +} + +.result_view li { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; +} + +.result_view li span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: center; + color: #066AE5; +} + +.result_view .result_info_box { + background: #F7F9FD; + border-radius: 8px; + margin-top: 24px; +} + +.result_view .result_info_box .infor { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + padding: 16px; + +} + +.result_view .result_info_box .infor span { + color: #196af3; +} + +.result_view .result_info_box .infor span a { + color: #196af3; + text-decoration: underline; +} + +.top_info2 { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + margin-bottom: 8px; +} + +.top_info2.m_btm { + margin-bottom: 0; +} + +.top_info2 span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: normal; + line-height: 24px; + text-align: left; + color: #020616; +} + +.top_info3 { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + margin-bottom: 8px; +} + +.top_info3 span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #020616; +} + +.radio_tab_nav { + display: flex; + justify-content: start; + align-items: start; +} + +.radio_tab_nav li:nth-child(2) { + padding-left: 17px; +} + +.radio_tab_nav.tabm { + padding: 36px 0; +} + + +/* faq */ +.box-brandInfo { +} + +.box-brandInfo > ul { + border-top: 2px solid #999; +} + +.box-brandInfo > ul > li { + border-bottom: 1px solid #E0E6F1; +} + +.box-brandInfo ul li a { + position: relative; + font-family: 'Pretendard'; + color: #000; + display: block; + padding: 16px 45px 16px 64px; + font-size: 16px; + font-weight: 400; + line-height: 24px; + text-align: left; +} + +.box-brandInfo ul li a:before { + content: ''; + display: block; + clear: both; + background-image: url('/img/icon/Icon_q.png'); + background-size: 32px 32px; + background-repeat: no-repeat; + width: 32px; + height: 32px; + position: absolute; + top: 50%; + left: 24px; + transform: translate(-50%, -50%); +} + +.box-brandInfo ul li a:after { + content: ''; + display: block; + clear: both; + background-image: url('/img/icon/icon_arrow_down2.png'); + background-size: 24px 24px; + background-repeat: no-repeat; + width: 24px; + height: 24px; + position: absolute; + top: 50%; + right: 0; + transform: translate(-50%, -50%); +} + +.box-brandInfo ul li.sel a:after { + background-image: url('/img/icon/icon_arrow_down2_sel.png'); +} + +.box-brandInfo ul li .box-ct { + background: #F7F9FD; + display: none; + position: relative; +} + +.box-brandInfo ul li .box-ct .list_txt { + padding: 36px 16px 36px 0; + padding-left: 35px; +} + +.box-brandInfo ul li .box-ct p { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + margin-bottom: 20px; + cursor: default; +} + +.box-brandInfo ul li .box-ct p:last-child { + margin-bottom: 0; +} + +.box-brandInfo ul li .box-ct:after { + content: ''; + display: block; + clear: both; +} + +.box-brandInfo ul li .box-ct .inner-ct ul { + margin: 0 0 20px 0; +} + +.box-brandInfo ul li .box-ct .inner-ct:last-child ul { + margin-bottom: 0; +} + +.box-brandInfo ul li .box-ct .inner-ct ul li { + font-family: 'Pretendard'; + font-size: 14px; + color: #666; + letter-spacing: -0.2px; + line-height: 22px; +} + +.box-brandInfo ul li .box-ct .inner-ct ul li span { + padding-right: 4px; +} + +.box-brandInfo ul li .box-ct .inner-ct { + position: relative; +} + +.box-brandInfo ul li .box-ct:before { + content: ''; + display: block; + clear: both; + background-image: url('/img/icon/Icon_a.png'); + background-size: 32px 32px; + background-repeat: no-repeat; + width: 32px; + height: 32px; + position: absolute; + top: 50%; + left: 24px; + transform: translate(-50%, -50%); +} + +.box-brandInfo ul li.sel .box-ct { + display: block; + padding-left: 64px; +} + +.box-brandInfo.faq { + padding-top: 0; +} + +.box-brandInfo.faq > ul > li > a { + padding-left: 80px; +} + +.box-brandInfo.faq .inner-ct p { + color: #020616; + margin-left: 63px; + margin-bottom: 22px; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; +} + +.box-brandInfo.faq .inner-ct p span { + display: inline-block; + width: 15px; + text-indent: 0; +} + +.box-brandInfo.faq .inner-ct p:last-child { + margin-bottom: 0; +} + +.box-brandInfo li { + position: relative; + cursor: default; +} + +.box-brandInfo ul li .box-ct .list_txt .text1 { + border-bottom: 0 none; +} + + +/*************popup**************/ +.popup_wrap { + display: none; + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + text-align: center; + background-color: rgba(0, 0, 0, 0.6); + z-index: 9999; + overflow: auto; +} + +.popup_wrap.pop01 { + display: block; +} + +.popup_wrap .pop_dim { + position: absolute; + left: 50%; + top: 50%; + padding: 0; + border-radius: 12px; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.popup_wrap .pop_dim .inner { + width: 328px; + background: #fff; + margin: 0 auto; + background: #FFF; + border-radius: 12px; + -webkit-box-shadow: 0px 2px 2px 0px #414E651A; + box-shadow: 0px 2px 2px 0px #414E651A; +} + +.popup_wrap .pop_body { + position: relative; + padding: 18px 16px 24px 16px; +} + +.popup_wrap .pop_body .box-txt { + font-size: 16px; + color: #222; + text-align: center; + line-height: 28px; + letter-spacing: -0.4px; + display: block; + min-height: 93px; + display: table; + width: 100%; +} + +.popup_wrap .pop_body .inner_txt { + border-bottom: 1px solid #C8D2E4; +} + +.popup_wrap .pop_body .inner_txt .title h4 { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + margin-bottom: 14px; + color: #020616; + cursor: default; +} + +.popup_wrap .pop_body .contents p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + margin-top: 24px; + color: #252B37; +} + +.popup_wrap .pop_body .contents p span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: center; + color: #252B37; +} + +.popup_wrap .pop_body .contents .con_txt { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + cursor: default; +} + +.popup_wrap .pop_body .contents .con_txt span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: center; + color: #252B37; + cursor: default; +} + +.popup_wrap .pop_body .contents .con_info_box { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + background: #F7F9FD; + padding: 12px 12px 12px 22px; + margin-top: 20px; +} + +.popup_wrap .pop_body .contents .con_info_box p { + position: relative; + margin-top: 0; + color: #4D596F; + cursor: default; +} + +.popup_wrap .pop_body .contents .con_info_box p:before { + content: ''; + width: 3px; + height: 3px; + background: #888; + border-radius: 50%; + position: absolute; + left: -12px; + top: 7px; +} + +.popup_wrap .pop_body .pop_btn { + display: flex; + justify-content: center; + align-items: baseline; + margin-top: 24px; +} + +.popup_wrap .pop_body .pop_btn a { + width: 100px; + height: 40px; + line-height: 40px; + margin-right: 8px; +} + +.popup_wrap .pop_body .pop_btn a:nth-child(2) { + margin-right: 0; +} + +.popup_wrap .contents .inp_box { + margin-top: 15px; +} + +.popup_wrap .contents .inp_box input::placeholder { + font-size: 16px; +} + +.popup_wrap .contents .inp_box .common_input_type_1 { + height: 48px; +} + +.popup_wrap .pop_body .btn_close { + position: absolute; + top: 20px; + right: 16px; +} + +.popup_wrap .pop_body .btn_close img { + width: 20px; + height: 20px; + cursor: pointer; +} + +.popup_wrap .pop_body .contents .con_txt.l_text { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + cursor: default; +} + +.popup_wrap .pop_body .contents .con_textarea { + margin-top: 8px; +} + + +/*Error*/ +.wp_pt { + min-height: 100%; + padding-top: 250px; +} + +.error_wrap { + padding: 0 0; +} + +.error_wrap .error_logo { + margin: 0 auto; + text-align: center; +} + +.error_wrap .error_logo img { + width: 177px; + height: 26px; +} + +.error_wrap .error_con { + margin-top: 40px; +} + +.error_wrap .error_con .e_txt { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; +} + +.error_wrap .error_con .e_icon { + margin: 24px auto 0 auto; + text-align: center; +} + +.error_wrap .error_con .e_txt2 { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #4D596F; + margin-top: 23px; +} + +.error_wrap .error_con .e_txt3 { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #8694B1; + margin-top: 40px; +} + +/* 마이페이지 */ +.board_search .search_txt.ser_mypage .common_input_type_1 { + height: 40px; +} + +.table_type2 { + overflow-y: auto; + height: 190px; + border-bottom: 1px solid #E0E6F1; +} + +.table_type2.top_type { + margin-top: 8px; +} + +.table_type2 .table_col thead th { + border: 1px solid #E0E6F1; + background: #EDF1F7; + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + color: #252B37; +} + +.table_type2 .table_col thead th:first-child { + border-left: 0 none; +} + +.table_type2 .table_col tbody td { + border: 1px solid #E0E6F1; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + cursor: default; +} + +.table_type2 .table_col tbody td:first-child, +.table_type2 .table_col tbody td:last-child { + border-left: 0 none; + border-right: 0 none; + cursor: default; +} + +.table_type2 .table_col thead th .total_wrap { + padding: 0 16px; + border-radius: 8px; + border: 0 none; + margin-top: 0; +} + +.table_type2 .table_col thead th .total_wrap > .inp_check { + text-align: center; + border-bottom: 0 none; +} + +.table_type2 .table_col tbody .suv_ck li .inp_check { + text-align: center; +} + +.table_type2 .table_col thead th .total_wrap .total_wrap .inp_check.b_tit label { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: center; + color: #252B37; +} + +.table_type2 .table_col thead th .total_wrap .inp_check label:before { + top: -3px !important; +} + +.table_type2 .table_col tbody .suv_ck li .inp_check label:before { + top: -12px !important; +} + +.table_type2 .table_col thead th { + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + color: #252B37; + border-top: 1px solid #4D596F; + height: 48px; +} + +.table_type2 .table_col tbody td { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + height: 48px; + word-break: break-all; + cursor: default; +} + +.pop_arrow { + margin: 16px; +} + +#wrap .dash_bg { + background: #E0E6F1; +} + +.con_title.mypage p { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; +} + +.con_title.mypage p span { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; +} + +.list-dot.info_text { + background: #F7F9FD; + border-radius: 8px; + margin-top: 12px; +} + +.list-dot.info_text p { + padding: 12px 12px 12px 22px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; +} + +.list-dot.info_text p:before { + top: 20px; + left: 12px; +} + +.tb_board_list .table_box { + overflow-x: auto; +} + +.tb_board_list .table_box .table { + table-layout: fixed; + width: 100%; + text-align: center; +} + +.tb_board_list .table_box .table thead { + border-top: 1px solid #4D596F; +} + +.tb_board_list .table_box .table th { + background: #EDF1F7; + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + color: #252B37; +} + +.tb_board_list .table_box .table thead th { + padding: 15px 0; + cursor: default; +} + +.tb_board_list .table_box .table tbody td { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + text-align: center; + cursor: default; +} + +.tb_board_list .table_box .table tbody td, +.tb_board_list .table_box .table thead th { + padding: 16px 0; + border: 1px solid #E0E6F1; + word-break: break-all; + cursor: default; +} + +.tb_board_list .table_box .table th:first-child { + border-left: 0 none; +} + +.tb_board_list .table_box .table td:first-child { + border-left: 0 none; + cursor: default; +} + +.tb_board_list .table_box .table th:last-child { + border-right: 0 none; + cursor: default; +} + +.tb_board_list .table_box .table td:last-child { + border-right: 0 none; + cursor: default; +} + +.tb_board_list .table_box .table_min { + min-width: 700px; +} + +.tb_board_list.tb_type .table_box .table thead { + border-top: 0 none; +} + +.tb_board_list.tb_type .table_box { + overflow: hidden; +} + +.btn_wrap.bt_location { + text-align: right; + margin-top: 12px; +} + +.btn_wrap.btn_set { + display: flex; + justify-content: center; + align-items: center; +} + +.btn_wrap.btn_set a { + /* width: 72px; */ + text-decoration: none; + margin-right: 4px; + padding: 0 12px; +} + +.btn_wrap.btn_set a.rt_none { + margin-right: 0; +} + +.user_top { + margin-top: 0; +} + +.btn_board3.btn_top { + margin-top: 40px; +} + +.terms_box.user_top2 { + margin-top: 56px; +} + +.terms_box.user_top3 { + margin-top: 40px; +} + +.terms_box2 { + border-radius: 8px; + border-color: #C8D2E4; + margin-top: 16px; + padding: 16px; + border: 1px dotted #C8D2E4; +} + +.terms_box2 .info1 { + padding-top: 0; +} + +.terms_box2 .title.title2 { + +} + +.btn_wrap.bt_location2 { + display: flex; + justify-content: space-between; + align-items: center; +} + +.form_type .info1.info2:nth-child(1) { + padding-top: 0; +} + +.form_type .info_box1.info_box2 input { + height: 48px; + text-indent: unset; + padding: 0 16px; +} + +.terms_box2 .title .btn_plus { + margin-left: auto; +} + +.form_type .btn_application.application { + display: flex; + margin-top: 32px; + justify-content: center; + align-items: baseline; +} + +.withdrawal { + text-align: center; + margin-top: 40px; + text-decoration: underline; +} + +.withdrawal a { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + cursor: pointer; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #8694B1; +} + +.table_box { + overflow-x: auto; +} + +.table_box .table { + table-layout: fixed; + width: 100%; + text-align: center; +} + +.table.tb_key { + margin-top: 48px; +} + +.table.tb_key thead th, +.table.tb_key tbody td { + border: 1px solid #E0E6F1; +} + +.table.tb_key thead th:first-child, +.table.tb_key tbody td:first-child { + border-left: 0 none; +} + +.table.tb_key thead th:last-child, +.table.tb_key tbody td:last-child { + border-right: 0 none; +} + +.table.tb_key thead th { + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + color: #252B37; + background: #EDF1F7; + padding: 15px 0; + border-top: 2px solid #4D596F; +} + +.table.tb_key tbody td { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + padding: 13px 0; +} + +html body .table_box .pc-only .table.tb_key.m_top tbody tr.highlight_new td, +html body .table_box .m-only .table.tb_key.m_top tbody tr.highlight_new td { + background-color: #E6F3FF !important; +} + +html body .table_box .pc-only .table.tb_key.m_top tbody tr.highlight_delete td, +html body .table_box .m-only .table.tb_key.m_top tbody tr.highlight_delete td { + background-color: #ffe6e6 !important; +} + +html body .table_box .pc-only .table.tb_key.m_top tbody tr.highlight_new td.status, +html body .table_box .m-only .table.tb_key.m_top tbody tr.highlight_new td.status { + color: #4a90e2 !important; + font-weight: normal !important; +} + +html body .table_box .pc-only .table.tb_key.m_top tbody tr.highlight_delete td.status, +html body .table_box .m-only .table.tb_key.m_top tbody tr.highlight_delete td.status { + color: #e74c3c !important; + font-weight: normal !important; +} + +.table.tb_key.m_top { + margin-top: 0; +} + +.btn_inventory.btn_top { + margin-top: 32px; +} + +.btn_inventory.btn_mtop { + margin-top: 32px; +} + +.custom_select .select_selected.select_w { + height: 40px; + line-height: 40px; +} + +#gap_line .gap_line { + width: 100%; + border-top: 8px solid #EDF1F7; +} + +.ip_server { + padding: 0 16px 56px 16px; +} + +/* 달력 */ +.datepicker_wrapper { + position: relative; + margin-bottom: 0; + margin-top: 6px; +} + +.datepicker_input { + width: 200px; + font-size: 16px; + border: 1px solid #E0E6F1; + border-radius: 6px; + cursor: pointer; + width: 100%; + height: 40px; + padding: 10px 10px 10px 16px; + box-sizing: border-box; + font-size: 14px; + line-height: 40px; + color: #67748E; + background: #F7F9FD !important; +} + +.datepicker_input:focus { + color: #67748E; +} + +.datepicker_wrapper img { + position: absolute; + top: 11px; + right: 12px; +} + + +/*******************formtype********************/ +/* 디자인 select box */ +.custom_select { + position: relative; + width: 100%; + height: 40px; +} + +.custom_select .select_selected { + background-color: #fff; + padding: 8px 16px; + border: 1px solid #E0E6F1; + cursor: pointer; + width: 100%; + padding: 0 45px 0 16px; + border-radius: 6px; + outline: 0; + background: #fff url(/img/icon/icon_select_arrow_down2.png) no-repeat 96% 50%; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + height: 40px; + color: #252B37; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 40px; + letter-spacing: -0.02em; + text-align: left; +} + +.custom_select .select_selected.h_inp { + height: 40px; + line-height: 40px; +} + +.custom_select .select_selected.active { + border: 1px solid #252B37; +} + +.custom_select .select_items { + position: absolute; + background-color: #fff; + top: 52px; + left: 0; + right: 0; + z-index: 1; + list-style-type: none; + padding: 0; + margin: 0; + border: 1px solid #252B37; + border-radius: 6px; + height: 200px; + overflow-y: auto; + box-sizing: border-box; + max-height: 200px; +} + +.custom_select .select_items::-webkit-scrollbar { + width: 8px; +} + +.custom_select .select_items::-webkit-scrollbar-track { + background: transparent; + border-radius: 4px; + margin: 4px; +} + +.custom_select .select_items::-webkit-scrollbar-thumb { + background: rgba(37, 43, 55, 0.2); + border-radius: 4px; + border: 2px solid transparent; + background-clip: padding-box; +} + +.custom_select .select_items::-webkit-scrollbar-thumb:hover { + background: rgba(37, 43, 55, 0.4); + border: 2px solid transparent; + background-clip: padding-box; +} + +.custom_select .select_items::-webkit-scrollbar-thumb:active { + background: rgba(37, 43, 55, 0.6); + border: 2px solid transparent; + background-clip: padding-box; +} + +.custom_select .select_hide { + display: none; +} + +.custom_select .select_items ul { + margin: 10px; + padding: 0; +} + +.custom_select .select_items li { + padding: 9px 16px; + cursor: pointer; + color: #252B37; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; +} + +.custom_select .select_items li:hover { + background-color: #F7F9FD; +} + +.dot { + position: relative; +} + +.dot:after { + content: ''; + display: block; + clear: both; + background: #E23A32; + width: 4px; + height: 4px; + position: absolute; + top: 1px; + right: -6px; + border-radius: 3px; +} + +.form_type { + display: flow; +} + +.form_type.top_m { + margin-top: 24px; +} + +.form_type .info1 { + padding-top: 16px; +} + +.form_type .info1.p_top { + padding-top: 32px; +} + +.form_type .info1.p_top0 { + padding-top: 0; +} + +.form_type .info1.p_top2 { + padding-top: 28px; +} + +.form_type .info1.p_top3 { + padding-top: 40px; +} + +.form_type .info1.p_top4 { + padding-top: 28px; +} + +.form_type .info1.p_top5 { + padding-top: 8px; +} + +.form_type .info1.p_top7 { + padding-top: 32px; +} + +.form_type .info1.p_top8 { + padding-top: 40px; +} + +.form_type .info_box1.m_top0 { + margin-top: 0; +} + +.form_type .info1.form_top { + padding-top: 0; +} + +.form_type .title { + display: table-cell; + font-family: 'Pretendard'; + cursor: default; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #252B37; +} + +.form_type .info_line { + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; + width: 100%; +} + +.form_type .info_line .btn_check { + width: 100%; + margin-top: 8px; + z-index: 0; +} + +.form_type .info_line .btn_check .common_btn_type_2.cbt { + font-size: 14px; +} + +.form_type .info_box1 { + display: flex; + width: 100%; + align-items: center; + margin-top: 8px; +} + +.form_type .info_box1.info_top { + margin-top: 0; +} + +.form_type .info_box1.info_add2 { + display: block; +} + +.form_type .info_box1.info_add2.info_add3 { + display: flex; +} + +.form_type .info_box1 .input { + width: 100%; +} + +/* .form_type .info_box1 input{color: #8694B1;font-size: 16px;} */ +.form_type .info_box1 .certify_box { + position: relative; + width: 100%; +} + +.form_type .info_box1 .certify_box .certify_time { + display: inline-block; + position: absolute; + right: 15px; + top: 11px; + z-index: 0; + color: #E23A32; + font-family: 'Pretendard'; + font-weight: 700; + font-size: 14px; + line-height: 22px; +} + +.form_type .info_box1 .special_t { + padding: 0 4px; + font-size: 16px; + color: #000; +} + +.form_type .btn_application { + display: flex; + margin-top: 40px; + justify-content: center; + align-items: baseline; +} + +.form_type .btn_application .common_btn_type_1 { + width: 50%; + height: 56px; + cursor: pointer; + line-height: 56px; +} + +.form_type .btn_application .common_btn_type_1.gray { + margin-left: 0; + cursor: pointer; +} + +.form_type .info_box1 .dash { + padding: 0 4px; +} + +.form_type .info1 .info_line .info_box1 .upload_name { + display: inline-block; + height: 40px; + padding: 0 10px; + vertical-align: middle; + border: 1px solid #dddddd; + width: 100%; + color: #C8D2E4; + border-radius: 8px; + border: 1px solid #C8D2E4; +} + +.form_type .info1 .info_line .file_btn { + width: 100%; +} + +.form_type .info1 .info_line label { + font-size: 14px; + display: inline-block; + padding: 10px 20px; + color: #0114A7; + vertical-align: middle; + background: #fff; + cursor: pointer; + height: 40px; + font-family: 'Pretendard'; + text-align: center; + border-radius: 8px; + border: 1px solid #E0E6F1; + width: 100%; +} + +.form_type .info1 .info_line input[type="file"] { + position: absolute; + width: 0; + height: 0; + padding: 0; + overflow: hidden; + border: 0; +} + +.form_type .info1 .info_line.info_add { + display: block; +} + +.form_type .info_box1 .w_ip { + width: 50%; +} + +.form_type .info_box1 .custom_select.ct_sc .select_selected { + height: 40px; + line-height: 40px; + border: 1px solid #E0E6F1; +} + +/* .form_type .info_box1 .custom_select.ct_sc .select_selected.disabled{background: #F7F9FD url(/img/icon/icon_select_arrow_down2.png) no-repeat 96% 50%;} */ +.form_type .info_box1 .custom_select.ct_sc .select_selected.disabled { + background: #F7F9FD; + color: #8694B1; +} + +.form_type .info_box1 .custom_select.disabled { + pointer-events: none; +} + +.custom_select .select_items.ct_sc2 { + top: 44px; + border: 1px solid #C8D2E4; +} + +.form_type .info_box1.qna_text span { + position: absolute; + top: 88px; + right: 16px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: right; + color: #C8D2E4; +} + +.form_type .info_box1.qna_text textarea { + width: 100%; + height: 122px; + border: 1px solid #E0E6F1; + padding: 12px 0; + text-indent: 16px; + font-size: 14px; +} + +.form_type .btn_application.m_top { + margin-top: 32px; +} + +.form_type .info_box1.qna_text { + position: relative; + border-radius: 6px; +} + +.form_type .info_box1.qna_text .byte { + position: absolute; + top: 88px; + right: 16px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: right; + color: #C8D2E4; +} + +.filebox input[type="file"] { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.filebox label { + display: inline-block; + padding: 9px 14px; + color: #8694B1; + font-size: inherit; + line-height: normal; + vertical-align: middle; + background-color: #ffffff; + cursor: pointer; + border: 1px solid #E0E6F1; + border-bottom-color: #E0E6F1; + border-radius: .25em; +} + +/* named upload */ +.filebox .upload-name { + display: inline-block; + padding: 9px 14px; + font-size: inherit; + font-family: inherit; + line-height: normal; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #E0E6F1; + border-bottom-color: #E0E6F1; + border-radius: 8px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 100%; + font-size: 14px; + height: 40px; +} + +.filebox .upload-name.before { + border: 1px solid #E0E6F1; + background: none; + cursor: default; + border-bottom-color: #E0E6F1; + color: #8694B1 !important; +} + +.filebox .upload-name.i_trash.after { + border: 1px solid #E0E6F1; +} + +.filebox .upload-name.i_trash { + border: 1px solid #252B37; + border-bottom-color: #252B37; + background: url('/img/icon/icon_trash.png') no-repeat center right 16px; +} + +.form_type .info_box1 .key_box { + padding: 9px 14px; + border: 1px solid #E0E6F1; + width: 100%; + background: #F7F9FD; + border-radius: 6px; +} + +.form_type .info_box1 .key_box p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #67748E; + word-break: break-all; +} + +.form_type .info_line .btn_keydeltype { + margin-right: auto; +} + +.form_type .info1.info_mypage { + padding-top: 28px; +} + +.form_type .info1.info_mypage2 { + padding-top: 12px; +} + +/*이용약관, 개인정보처리방침*/ +.form_type .info1.ts_top { + padding-top: 0; +} + +.terms_contents { + display: block; + color: #252B37; + border: 1px solid #E0E6F1; + padding: 12px 16px; + border-radius: 6px; + margin-top: 12px; +} + +.terms_contents h3 { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; +} + +.terms_contents .ts_tit { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + text-align: left; + margin-top: 20px; +} + +.terms_contents p { + font-family: 'Pretendard'; + font-weight: 400; + font-size: 14px; + line-height: 22px; + text-align: left; +} + +/* 팝업 */ +.popup_total { + display: none; + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + text-align: center; + background-color: rgba(0, 0, 0, 0.6); + z-index: 1000; + overflow: auto; + display: block; + overflow-y: scroll; + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE and Edge */ + max-height: 100vh; +} + +.popup_total::-webkit-scrollbar { + display: none; /* Chrome, Safari, Opera */ +} + +.popup_total .pop_dim { + position: absolute; + left: 50%; + top: 50%; + padding: 0; + border-radius: 2px; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.popup_total .inner { + max-height: 100vh; +} + +.popup_total .popup { + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background: rgb(0, 0, 0, 0.4); +} + +.popup_total .popup-content { + background: #fff; + width: 328px; + padding: 18px 16px 24px 16px; + border-radius: 8px; + position: relative; + margin: 20px 0; +} + +.popup_total .popup-content h2 { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + padding-bottom: 14px; + color: #252B37; + cursor: default; +} + +.popup_total .popup-content .pop_text { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + cursor: default; +} + +#wrap .pop_text { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + cursor: default; +} + +.popup_total .popup-content .pop_text.l_text { + text-align: left; + padding-top: 25px; + padding-bottom: 4px; + font-weight: 700; + cursor: default; +} + +#wrap .pop_text.l_text { + text-align: left; + padding-top: 25px; + padding-bottom: 4px; + font-weight: 700; + cursor: default; +} + +.popup_total .popup-content .pop_text.l_text2 { + text-align: left; + padding-top: 16px; + font-weight: 700; + cursor: default; +} + +#wrap .pop_text.l_text2 { + text-align: left; + padding-top: 16px; + font-weight: 700; + cursor: default; +} + +.popup_total .popup-content .pop_text.l_text2.pt_top { + padding-top: 0; + cursor: default; +} + +.popup_total .popup-content .pop_textbox { + position: relative; + padding-top: 8px; +} + +.popup_total .popup-content .pop_textbox span { + position: absolute; + top: 97px; + right: 16px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: right; + color: #C8D2E4; +} + +.popup_total .popup-content .pop_btnbox { + margin-top: 24px; +} + +.popup_total .popup-content .btn_close { + position: absolute; + top: 20px; + right: 16px; +} + +.popup_total .popup-content .btn_close img { + width: 20px; + height: 20px; + cursor: pointer; +} + +.popup_total .pop_btnbox button { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + border-radius: 6px; +} + +.popup_total .popup_button_gray { + width: 100px; + height: 40px; + background: #EDF1F7; + color: #0114A7; + border: none; + cursor: pointer; + margin-right: 2px; +} + +.popup_total .popup_button_blue { + width: 100px; + height: 40px; + background: #0114A7; + color: #fff; + border: none; + cursor: pointer; + margin-left: 2px; +} + +.popup_total .popup-content .inner_txt { + border-bottom: 1px solid #C8D2E4; +} + +.popup_total .popup-content .pop_grid { + padding: 0 4px; +} + +.popup_total .popup-content .pop_grid .list-dot.list { + padding-top: 30px; + margin-top: 0; +} + +.popup_total .inner_button { + margin-left: 0; +} + +.popup-content .infor { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + padding: 8px 0 0 10px; + color: #4D596F; +} + +.popup-content .application_box { + display: table; + padding-top: 24px; +} + +.popup-content .application_box .title { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + display: table-cell; + cursor: default; +} + +.popup-content .application_box .title_box { + display: table-cell; + padding-left: 8px; + width: 100%; +} + +.popup_total .popup-content .pop_text.mo_text { + padding: 24px 0 0 0; + font-weight: 400; +} + +/*main slick*/ +.slider-container { + max-width: 100%; + /* width: 100vw; */ + margin: 0 auto; +} + +/* .slider-container {width: 100%;max-width: 360px;margin: 0 auto;} */ +.slider-container .slick_txt { + transform: translate(0px, -16%); + margin: 0 24px; + z-index: 20; + position: absolute; + top: 60px; + left: 0; +} + +.slider-container .slick_txt p { + font-family: 'Pretendard'; + font-size: 28px; + font-weight: 300; + line-height: 36px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; +} + +.slider-container .slick_txt p span { + font-family: 'Pretendard'; + font-size: 28px; + font-weight: 700; + line-height: 36px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; +} + +.slider-container .slider { + position: relative; +} + +.slider-container .slider .slider_box { + position: relative; + background-color: #1728C4; + text-align: right; +} + +.slider-container .slider img { + /* width: 100%; + max-height: 480px; + object-fit: cover; */ + height: 260px; + + margin: 0; + /* width: 360px; */ + display: inline-block; + +} + +.slider-container .slick-prev, +.slider-container .slick-next { + display: none !important; +} + +.slider-container .slick-dots { + position: absolute; + top: 248px; + left: 24px; + display: flex !important; + list-style: none; + padding: 0; +} + +.slider-container .slick-dots li { + margin: 0 13px 0 0; +} + +.slider-container .slick-dots button { + font-size: 0; + line-height: 0; + display: block; + width: 10px; + height: 10px; + padding: 5px; + cursor: pointer; + color: transparent; + border: 0; + outline: none; + background: #E0E6F1; + border-radius: 50%; +} + +.slider-container .slick-dots li.slick-active button { + opacity: 1; + width: 48px; + height: 10px; + background: #B6F23D; + border-radius: 5px; +} + +.search_type { +} + +.search_type .search-container { + display: flex; + margin: -25px 16px; + position: relative; +} + +.search_type .search-box { + width: 100%; + padding: 14px 32px; + font-size: 16px; + border: 2px solid #B6F23D; + border-radius: 40px; + outline: none; + box-shadow: 0px 2px 2px 0px #414E651A; +} + +.search_type .search-button { + width: 24px; + height: 24px; + background: url('/img/icon/icon_main_search.png') no-repeat center center; + background-size: 24px 24px; + border: none; + border-radius: 0 20px 20px 0; + cursor: pointer; + position: absolute; + top: 14px; + right: 32px; +} + +.slider-container .search-box { + width: 100%; + font-size: 16px; + height: 52px; +} + +.search-box::placeholder { + color: #8694B1; + font-size: 16px; +} + +.search-box::-webkit-input-placeholder { + color: #8694B1; +} + +/* Chrome/Opera/Safari */ +.search_type .search-box:focus { + border-color: #B6F23D; + outline: none; +} + +.main-container { +} + +.main-container .hashtag ul { + display: flex; + justify-content: center; + align-items: center; + list-style-type: none; + padding: 40px 36px 0 36px; + margin: 0 auto; + flex-wrap: wrap; + gap: 12px; +} + +.main-container .hashtag ul li { + white-space: nowrap; + display: inline-block; + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; +} + +.main-container .main_con .con_tit { + margin: 0 auto; + text-align: center; +} + +.main-container .main_con .con_img { + margin: 16px auto 0 auto; + text-align: center; +} + +.main-container .main_con .con_img img { + width: auto; + height: 215px; +} + +.main-container .main_con .con_txt { + text-align: center; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + cursor: default; + color: #252B37; + width: 308px; + margin: 32px auto 0 auto; +} + +.main-container .main_con .con_txt span { + font-family: 'Pretendard'; + cursor: default; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: center; + color: #0114A7; +} + +.main_con .main_btn { + border-radius: 8px; + position: relative; + padding: 0 16px; + margin-top: 20px; + margin-bottom: 32px; +} + +.main_con .main_btn a span { + position: relative; +} + +.main_con .main_btn a span:after { + content: ''; + display: block; + clear: both; + background-image: url('/img/icon/icon_arrow_right.png'); + background-size: 20px 20px; + background-repeat: no-repeat; + width: 20px; + height: 20px; + position: absolute; + top: 0; + right: -24px; +} + +.main_con .main_btn a.m_btn { + margin-top: 8px; +} + +.main_keyword { + background: #fff; + padding: 64px 16px 56px 16px; +} + +.main_keyword .no_date { + margin: 0 auto; + text-align: center; + padding-top: 120px; +} + +.main_keyword .no_date img { + width: 96px; + height: 97px; +} + +.main_keyword .no_date .text { + padding-bottom: 120px; + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #8694B1; +} + +.main_keyword .api_tit { + overflow: hidden; +} + +.main_keyword .api_tit h2 { + float: left; + font-family: 'Pretendard'; + font-size: 20px; + cursor: default; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; +} + +.main_keyword .api_tit .total_view { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: right; + color: #252B37; + text-decoration: underline; +} + +.main_keyword .api_keyword { + position: relative; + padding-top: 16px; +} + +.main_keyword .api_keyword .keyword_list li a { + position: relative; + background: #fff; + border: 1px solid #C8D2E4; + display: inline-block; + padding: 0 17px; + border-radius: 17px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + height: 32px; + margin-top: 6px; +} + +.main_keyword .api_keyword +.keyword_list li a.active, +.main_keyword .api_keyword +.keyword_list lia.active:hover, +.main_keyword .api_keyword +.keyword_list li +a.active:focus { + color: #fff; + background: #0114A7; + text-decoration: none; + display: inline-block; + /*border-radius: 17px;*/ +} + +.main_keyword .api_keyword .keyword_list li a:hover, +.main_keyword .api_keyword .keyword_list li a:focus { + color: #fff; + background: #0114A7; + text-decoration: none; + display: inline-block; + border-radius: 17px; +} + +.api_keyword { + position: relative; + width: 100%; +} + +.keyword_list { + display: flex; + flex-wrap: nowrap; /* 기본적으로 한 줄로 표시 */ + overflow: hidden; /* 가로 스크롤 없애기 */ + padding: 0; + margin: 0; + list-style-type: none; /* 기본 목록 스타일 제거 */ + transition: height 0.3s ease; /* 높이 전환 효과 */ + position: relative; +} + +.keyword_list.expanded { + flex-wrap: wrap; /* '더보기' 클릭 시 여러 줄로 펼치기 */ +} + +.keyword_list li { + margin-right: 4px; /* 항목 간 간격 설정 */ + white-space: nowrap; /* 항목이 줄 바꿈 없이 한 줄로 표시되도록 설정 */ +} + +.keyword_list::after { + content: ''; /* 비어 있는 컨텐츠 생성 */ + position: absolute; + top: 6px; + right: 0; + width: 73px; /* 그라디언트 너비 */ + height: 32px; /* 전체 높이 */ + background: linear-gradient(90deg, rgba(237, 241, 247, 0) 0%, #EDF1F7 36.76%); + pointer-events: none; /* 그라디언트에 클릭이 전달되지 않도록 설정 */ + display: none; /* 기본적으로 숨김 상태 */ +} + +.keyword_list.scrolled::after { + display: block; /* 스크롤이 있을 때 그라디언트 표시 */ +} + +.more_type { + position: absolute; + top: 21px; + right: 0; +} + +.showmore img { + transition: transform 0.3s ease; /* 회전 애니메이션 효과 */ +} + +.showmore.rotated img { + transform: rotate(180deg); /* 이미지 회전 */ +} + + +.api_info_box { + background: #fff; + /* box-shadow: 0px 4px 6px -4px #414E651A; */ + box-shadow: 0px 10px 15px -3px #414E651A; + border-radius: 20px; + margin-top: 16px; + cursor: pointer; + padding: 28px 20px; + border: 4px solid transparent; +} + +.api_info_box:hover { + border: 4px solid #1728C4; + padding: 28px 20px; +} + +.api_info_container { + margin-top: 28px; +} + +.api_info_container .ser_result { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + color: #000; +} + +.api_info_container .ser_result span { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 700; + line-height: 22px; + color: #140064; +} + +.api_info_container.card_top { + margin-top: 20px; +} + +.api_info_box .api_list .txt1 { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + width: 150px; +} + +.api_info_box:hover .txt1 { + color: #0114A7; +} + +.api_info_box .api_list .txt1:hover { + color: #0051A4; +} + +.api_info_box .api_list .txt2 { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #67748E; + margin-top: 8px; +} + +.api_info_box .api_img { + text-align: right; +} + +.tiding_box { + padding: 56px 24px 56px 24px; +} + +.api_tiding .api_tit h2 { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + cursor: default; + line-height: 30px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; +} + +.api_tiding .api_tit .total_view { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + text-decoration: underline; + padding-top: 12px; + padding-bottom: 12px; +} + +.api_tiding .api_tiding_list li { + display: table; + padding: 20px 0; + border-bottom: 1px solid #E0E6F1; + width: 100%; +} + +.api_tiding .api_tiding_list li p { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #252B37; + width: 85%; + display: table-cell; +} + +.api_tiding .api_tiding_list li span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + cursor: default; + text-align: left; + color: #00000066; + display: table-cell; + vertical-align: middle; + width: 15%; +} + +.api_info li { + background: #EDF1F7; + border-radius: 16px; + padding: 10px; + margin-top: 16px; + position: relative; + cursor: pointer; +} + +.api_info li a { + display: block; + text-decoration: none; + margin-left: 10px; +} + +.api_info li:first-child { + margin-top: 24px; +} + +.api_info li p { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; +} + +.api_info li span { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; +} + +.api_info .img1 img { + position: absolute; + top: -15px; + right: 24px; + width: 80px; + height: 66px; +} + +.api_info .img2 img { + position: absolute; + top: 8px; + right: -8px; + width: 80px; + height: 78px; +} + +.api_info .img3 img { + position: absolute; + top: 45px; + right: 24px; + width: 80px; + height: 65px; +} + +.api_count { + padding: 0 16px; +} + +.api_total_box { + background: url(/img/bg_api.png) no-repeat 0 0; + background-size: 100% 344px; + padding: 48px 24px; + border-radius: 24px; + margin: 0 auto -85px auto; + position: relative; + z-index: 1; +} + +.api_total_box .txt { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + cursor: default; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + margin-bottom: 24px; +} + +.api_total_box .txt em { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + cursor: default; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; +} + +.api_total { + background: rgba(255, 255, 255, 0.2); + padding: 26px 11px; + border-radius: 16px; +} + +.api_total ul { + display: table; + margin: 0 auto; +} + +.api_total li { + display: table-cell; + text-align: center; + padding-right: 12px; + width: 78px; +} + +.api_total li:last-child { + padding-right: 0; +} + +.api_total li p { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + + color: #fff; +} + +.api_total li span { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + + color: #fff; +} + +.api_total li img { + width: 48px; + height: 48px; +} + +#main_bg { + background: #252B37; + height: 110px; +} + +.keyword_list .number { + position: absolute; + top: -7px; + right: -7px; + background: #E23A32; + color: #fff; + border-radius: 16px; + width: 23px; + height: 20px; + display: none; + justify-content: center; + align-items: center; + font-size: 12px; + font-weight: 400; + padding: 1px 4px; + line-height: 21px; +} + +.keyword_list a:hover .number { + display: flex; +} + +.keyword_list a.active +.number { + display: flex; +} + +.keyword_list a:hover { + display: flex; +} + +.keyword_list a.active:hover +.number { + display: flex; +} + +/*API*/ +.api_service_type { + position: relative; + background-color: #1728C4; + text-align: right; +} + +.api_service_type img { + width: 100%; + max-width: 360px; + height: 176px; + margin: 0 auto; + display: inline-block; +} + +.api_service_type .service_txt { + position: absolute; + top: 32px; + left: 24px; +} + +.api_service_type .service_txt p { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + cursor: default; + line-height: 30px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; +} + +.api_service_type .service_txt span { + font-family: 'Pretendard'; + cursor: default; + font-size: 14px; + font-weight: 100; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; + padding-top: 16px; + display: inline-block; +} + +.search_type2 .search-container2 { + display: flex; + /* margin: -25px 16px; */ + position: relative; + margin: 0 auto; + justify-content: center; +} + +.search_type2 .search-box2 { + width: 100%; + padding: 14px 32px; + font-size: 16px; + border: 2px solid #0114A7; + border-radius: 40px; + outline: none; + box-shadow: 0px 2px 2px 0px #414E651A; + line-height: 20px; +} + +.search_type2 .search-box2::placeholder { + font-size: 16px; + color: #252B37; +} + +.search_type2 .search-button2 { + width: 24px; + height: 24px; + background: url('/img/icon/icon_main_search.png') no-repeat center center; + background-size: 24px 24px; + border: none; + border-radius: 0 20px 20px 0; + cursor: pointer; + position: absolute; + top: 14px; + right: 32px; +} + +.slider-container2 .search-box2 { + width: 100%; + font-size: 16px; + height: 52px; +} + +.search-box2::placeholder { + color: #8694B1; + font-size: 16px; +} + +.search-box2::-webkit-input-placeholder { + color: #8694B1; +} + +/* Chrome/Opera/Safari */ +.search_type2 .search-box2:focus { + border-color: #0114A7; + outline: none; +} + +.api_inner .main_keyword { + background: #fff; + padding: 0; +} + +.api_inner .api_box { + border: 1px solid #E0E6F1; + border-radius: 20px; + margin-top: 16px; +} + +.api_inner .api_info_box { + /* border: 1px solid #E0E6F1; */ + box-shadow: 0px 4px 6px -4px #414E651A; + border-radius: 20px; + margin-top: 16px; + background: #fff; + border: 4px solid transparent; +} + +.api_inner .api_info_box:hover { + border: 4px solid #1728C4; +} + +.api_inner .api_info_box:nth-child(1) { + margin-top: 0; +} + +.api_inner .api_keyword { + position: relative; + padding-top: 40px; +} + +.api_inner .api_keyword .keyword_list li { + margin-right: 6px; + white-space: nowrap; +} + +.api_inner .api_keyword .more_type { + position: absolute; + top: 45px; + right: 0; +} + +.api_inner .api_keyword .keyword_list::after { + content: ''; + position: absolute; + top: 6px; + right: 11px; + width: 42px; + height: 32px; + background: linear-gradient(90deg, rgba(237, 241, 247, 0) 0%, #EDF1F7 36.76%); + pointer-events: none; +} + +.api_inner .api_keyword .keyword_list.grt::after { + right: -1px; + width: 81px; + height: 32px; + background: linear-gradient(90deg, rgba(255, 255, 255, 0) 14.71%, rgba(255, 255, 255, 0.8) 44.12%, #FFFFFF 73.53%); +} + +.lnb { + display: none; +} + +.sub_title4 { + padding: 24px 16px 0 16px; +} + +.sub_title4 h2 { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: left; + color: #000; +} + +.sub_title4 .infotxt { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #222222; + margin-top: 4px; + cursor: default; +} + +.api_stit.stit { + margin-top: 32px; +} + +.api_stit h3 { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + cursor: default; +} + +.api_stit .infor { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + padding-top: 4px; +} + +.api_stit ul { + background: #F7F9FD; + padding: 12px 12px 12px 22px; + margin-top: 8px; + border-radius: 8px; +} + +.api_stit ul .tit.m_top { + margin-top: 24px; +} + +.api_stit ul li { + margin-top: 8px; +} + +.api_stit .tb_top { + margin-top: 32px; +} + +.api_stit .tb_top2 { + margin-top: 0; +} + +.api_stit.api_dot ul li p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + cursor: default; +} + +.api_stit.stit ul { + padding: 12px 12px 12px 28px; +} + +.api_stit.stit ul li { + margin-top: 16px; +} + +.api_stit.stit ul li .dash { + padding: 0; +} + +.api_stit.stit ul li .dash li { + margin-top: 0; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; +} + +.api_stit.api_star ul li p { + position: relative; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; +} + +.api_stit.api_star ul li p:after { + content: '*'; + width: 12px; + height: 12px; + font-size: 24px; + position: absolute; + left: -17px; + top: 3px; +} + +.api_stit.api_star ul li span { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; +} + +.api_data { + background: #F7F9FD; + margin-top: 12px; + padding: 12px; +} + +.api_data dl { + position: relative; + padding-top: 16px; +} + +.api_data dl dt { + position: absolute; + top: 16px; + left: 0; +} + +.api_data dl dd { + padding-left: 18px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; +} + +.api_stit ul li:first-child { + margin-top: 0; + cursor: default; +} + +.api_stit.stit .api_data li { + position: relative; +} + +.api_stit.stit .api_data li p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + color: #4D596F; +} + +.api_stit.stit .api_data li img { + position: absolute; + top: 3px; + left: -18px; +} + +.api_stit .api_sauce { + background: #252B37; + padding: 16px 24px; + margin-top: 8px; + border-radius: 12px; + min-height: 100%; +} + +.api_stit .api_sauce p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; +} + +.api_stit.api_sc { + margin-top: 32px; +} + +.api_stit.api_sc2 { + margin-top: 56px; +} + +.api_stit.api_sc2_1 { + margin-top: 0; +} + +.api_stit.api_sc3 { + margin-top: 0; +} + +.api_stit.api_sc4 { + margin-top: 32px; +} + +.api_stit.api_sc5 { + margin-top: 12px; +} + +.api_stit.api_sc4_1 { + margin-top: 24px; +} + +.api_stit.api_sc ul { + background: 0 none; + padding: 0; +} + +.api_stit.api_sc ul li .tit { + position: relative; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #140064; + padding-left: 8px; +} + +.api_stit.api_sc ul li .tit:after { + content: ''; + width: 4px; + height: 4px; + background: #140064; + border-radius: 50%; + position: absolute; + left: 0; + top: 8px; +} + +.api_btn { + margin-top: 32px; + display: flex; + justify-content: center; + align-items: center; +} + +.api_btn a { + width: 100%; +} + +.api_btn a.gray { + margin-left: 0; +} + +.api_table { + border-top: 2px solid #252B37; + margin-top: 8px; + table-layout: fixed; + width: 100%; + text-align: center; +} + +.api_table tbody tr th, +.api_table tbody tr td { + border-bottom: 1px solid #E0E6F1; + cursor: default; +} + +.api_table tbody tr th { + background: #EDF1F7; + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + color: #252B37; + padding: 15px 0; + cursor: default; +} + +.api_table tbody tr td { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + padding: 13px 12px; + cursor: default; +} + +.api_stit.api_tb_type { + overflow-x: auto; +} + +.api_stit .api_table.tb_col thead th { + background: #EDF1F7; + text-align: center; + padding: 15px 0; + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + color: #252B37; + border-right: 1px solid #E0E6F1; + cursor: default; +} + +.api_stit .api_table.tb_col tbody td { + text-align: center; + padding: 13px 0; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + border-right: 1px solid #E0E6F1; +} + +.api_stit .api_table.tb_col tbody td.txtl { + padding-left: 12px; +} + +.api_stit .api_table.tb_col thead th:last-child, +.api_stit .api_table.tb_col tbody td:last-child { + border-right: 0 none; + cursor: default; +} + +.api_stit h4.api_dot { + position: relative; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #140064; + padding: 8px 0 0 8px; +} + +.api_stit h4.api_dot:after { + content: ''; + width: 4px; + height: 4px; + background: #140064; + border-radius: 50%; + position: absolute; + left: 0; + top: 16px; +} + +.api_tabs { + width: 100%; + max-width: 100%; +} + +.api_tabs.m_tabs { + margin-top: 32px; +} + +.api_tabs .api_nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + margin-bottom: 14px; +} + +.api_tabs .api_nav li { + width: 50%; +} + +.api_tabs .api_nav li a { + display: block; + position: relative; + padding: 12px 0; + color: #4D596F; + z-index: 0; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 19px; + letter-spacing: -0.02em; + text-align: center; + text-decoration: none; + border-bottom: 2px solid #C8D2E4; +} + +.api_tabs .api_nav li a span { + display: block; +} + +.api_tabs .api_nav li a span.text { + padding-left: 2px; +} + +.api_tabs .api_nav li.active a { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 19px; + text-align: center; + color: #0114A7; + border-bottom: 2px solid #0114A7; + background: #fff; + +} + +.api_tabs .api_tab .tab.active { + display: block; +} + +.api_stit.structure_box img { + width: 100%; +} + +.api_stit.structure_box .structure_img { + margin-top: 16px; +} + +/* 마이페이지 */ +.box.pop_arrow a:nth-child(1) { + margin-right: 8px; +} + +.dashboard_content { + padding: 24px 16px 0 16px; +} + +.dashboard_content .month_date { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: right; + color: #252B37; + margin-bottom: 8px; + cursor: default; +} + +.dashboard_box { + width: 100%; + display: table; + background: #fff; + padding: 20px; + border-radius: 16px; + margin-bottom: 16px; + box-shadow: 0px 4px 6px -1px #414E651A; +} + +.dashboard_box .icon1 { + display: table; +} + +.dashboard_box .icon1 img { + margin-right: 10px; +} + +.dashboard_box .icon1 .tit { + display: table-cell; + vertical-align: middle; + margin: 0; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + cursor: default; +} + +.dashboard_box .num { + display: table-cell; + vertical-align: middle; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + color: #020616; + text-align: right; + cursor: default; +} + +.dashboard_box .num span { + margin: 0; + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + color: #020616; +} + +.dashboard_box .api_use { + display: table; + width: 100%; +} + +.dashboard_box .api_use li { + margin-top: 13px; + cursor: default; +} + +.dashboard_box .api_use li:first-child { + margin-top: 17px; + cursor: default; +} + +.dashboard_box .api_use .use_box { + display: table; +} + +.dashboard_box .api_use .use_box .tit_m { + display: table-cell; + width: 100%; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #3B4659; + vertical-align: middle; + padding-left: 4px; + cursor: default; +} + +.dashboard_box .api_use .use_box .num_m { + display: table-cell; + text-align: right; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + color: #3B4659; + vertical-align: middle; + cursor: default; +} + +.dashboard_box .api_use .use_box img { + width: 24px; + height: 24px; + vertical-align: top; +} + +.dashboard_box .api_use .use_box .num_m span { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: right; + color: #020616; + cursor: default; +} + +.dashboard_box .api_use_num { + margin-top: 16px; +} + +.dashboard_box .api_use_num li { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 20px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + border-bottom: 1px solid #E0E6F1; + padding: 8px 0; + cursor: default; +} + +.dashboard_box .api_use_num li:first-child { + padding-top: 0; + cursor: default; +} + +.dashboard_box .api_use_num li:last-child { + border-bottom: none; + padding-bottom: 0; + cursor: default; +} + +.dashboard_box .api_use_num li img { + width: 20px; + height: 20px; +} + +.dashboard_box .api_use_num li span { + margin-left: 6px; +} + +.dashboard_box2 { + width: 100%; + background: #ffffff; + padding: 24px 20px; + box-shadow: 0px 4px 6px -1px #414E651A; + border-radius: 16px; + margin-bottom: 16px; + display: inline-block; + position: relative; +} + +.dashboard_box2 .form_type .info1.w130 { + width: 130px; +} + +.dashboard_box2 h3 { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #140064; + cursor: default; +} + +.dashboard_box2 .table_type { + overflow-x: auto; + margin-top: 16px; +} + +.dashboard_box2 .table_type.api_tb .table_col { + border-top: 2px solid #4D596F; +} + +.dashboard_box2 .table_type .table_col { + table-layout: fixed; + width: 100%; + text-align: center +} + +.dashboard_box2 .table_type .table_col.table_min { + min-width: 700px; +} + +.dashboard_box2 .table_type .table_col thead th { + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + color: #252B37; + background: #EDF1F7; + height: 48px; + border-bottom: 1px solid #E0E6F1; + border-right: 1px solid #E0E6F1; + cursor: default; +} + +.dashboard_box2 .table_type .table_col tbody td { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + height: 48px; + border-bottom: 1px solid #E0E6F1; + border-right: 1px solid #E0E6F1; + cursor: default; +} + +.dashboard_box2 .table_type .table_col thead th:last-child, +.dashboard_box2 .table_type .table_col tbody td:last-child { + border-right: 0 none; + cursor: default; +} + +.tab_type { + width: 100%; + margin: 0 auto; +} + +.tab_type .tab_link { + overflow: hidden; + position: absolute; + top: 74px; + right: 20px; +} + +.tab_type .tab_link li { + float: left; + margin: 0; + cursor: pointer; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + color: #4D596F; +} + +.tab_type .tab_link li span { + padding: 0 12px; + height: 12px; + color: #C8D2E4; + font-weight: normal; +} + +.tab_type .tab_link li:last-child { + border-right: 0 none; +} + +.tab_type .tab_link li.active { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + color: #252B37; +} + +.tab_type .tab_content { + border-top: none; +} + +.tab_type .tab_pane { + display: none; +} + +.tab_type .tab_pane.active { + display: block; +} + +/* 달력 */ +.daterangepicker .drp-buttons { + padding: 16px 24px 24px 24px !important; +} + +.daterangepicker .drp-buttons .btn.btn-default { + background: #EDF1F7; + color: #0114A7; +} + +.daterangepicker .drp-buttons .btn { + margin-left: 4px !important; + font-weight: bold; + padding: 5px 21px; + background: #0114A7; + width: 64px !important; + height: 28px !important; + line-height: 24px; + font-family: 'Pretendard'; + font-size: 12px; + font-weight: 400; + line-height: 18px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + border-radius: 6px; +} + +.daterangepicker .calendar-table td { + font-size: 14px !important; +} + +.daterangepicker td.start-date { + border-radius: 50% !important; + width: 32px !important; + height: 32px !important; + line-height: 32px !important; +} + +.daterangepicker td.end-date { + border-radius: 50% !important; + width: 32px !important; + height: 32px !important; + line-height: 32px !important; +} + +/*API 포탈안내*/ +.api_content { + margin-top: 56px; +} + +.api_portal_info1 { + background: url(/img/bg_portal_info02.png) no-repeat 0 0; + background-size: 100% 308px; + height: 308px; + padding: 64px 0; +} + +.api_portal_info1 .title { + font-family: 'Pretendard'; + font-size: 32px; + font-weight: 700; + line-height: 40px; + letter-spacing: -0.02em; + text-align: left; + color: #140064; + width: 287px; + margin: 0 auto; +} + +.api_portal_info1 .title span { + display: inline-block; + cursor: default; +} + +.api_portal_info1 .title span:nth-child(2) { + padding-left: 89px; + cursor: default; +} + +.api_portal_info1 .detail { + font-family: 'Pretendard'; + font-size: 14px; + cursor: default; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #140064; + margin: 0 auto; + padding-top: 12px; +} + +.api_portal_info2 { + background: url(/img/bg_portal_info03.png) no-repeat 0 0; + background-size: 100% 339px; + height: 339px; + margin: 0 auto; + text-align: center; + padding: 64px 0; +} + +.api_portal_info2 img { + width: 47px; + height: 75px; +} + +.api_portal_info2 .detail { + font-family: 'Pretendard'; + font-size: 24px; + cursor: default; + font-weight: 100; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; +} + +.api_portal_info2 .detail span { + font-family: 'Pretendard'; + cursor: default; + font-size: 24px; + font-weight: 700; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #B6F23D; +} + +.api_portal_info3 { + background: url(/img/bg_portal_info05.png) no-repeat 0 0; + background-size: 100% 489px; + height: 489px; + padding: 64px 32px 72px 32px; +} + +.api_portal_info3 .title { + font-family: 'Pretendard'; + font-size: 28px; + font-weight: 700; + line-height: 32px; + cursor: default; + letter-spacing: -0.02em; + text-align: center; + color: #000; + width: 214px; + margin: 0 auto; +} + +.api_portal_info4 { + background: #D1ECFF; + padding: 7px 0 64px 0; + margin: 0 auto; + text-align: center; +} + +.api_portal_info4 img { + width: 230px; + height: 287px; +} + +.api_portal_info4 .title { + font-family: 'Pretendard'; + font-size: 28px; + font-weight: 700; + cursor: default; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #000; + padding-top: 28px; +} + +.api_portal_info4 .detail { + font-family: 'Pretendard'; + font-size: 16px; + cursor: default; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #000; + padding-top: 16px; +} + +.detail_box { + position: relative; + width: 296px; + margin: 0 auto; +} + +.detail_box .detail01 { + position: relative; +} + +.detail_box .detail01 img:first-child { + position: absolute; + top: -46px; + left: -18px; + width: 87px; + height: 85px; +} + +.detail_box .detail01 img:last-child { + position: absolute; + top: 90px; + right: -30px; + z-index: 1; + width: 122px; + height: 112px; +} + +.detail_box .detail02 { + position: relative; +} + +.detail_box .detail02 img { + position: absolute; + top: 96px; + left: 96px; + width: 65px; + height: 65px; +} + +.api_portal_info3 .detail01 { + background: url(/img/bg_portal_sinfo01.png) no-repeat 0 0; + background-size: 100% 128px; + height: 128px; + font-family: 'Pretendard'; + font-size: 16px; + cursor: default; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + padding: 40px 0; + margin-top: 46px; +} + +.api_portal_info3 .detail02 { + background: url(/img/bg_portal_sinfo02.png) no-repeat 0 0; + background-size: 100% 128px; + height: 128px; + font-family: 'Pretendard'; + cursor: default; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + padding: 40px 0; + margin-top: 19px; +} + +.api_guide_count { + padding: 56px 16px; +} + +.api_guide_count .api_guide .title { + font-family: 'Pretendard'; + font-size: 28px; + font-weight: 700; + cursor: default; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #000; +} + +.api_guide_count .api_guide .detail { + font-family: 'Pretendard'; + cursor: default; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #000; + padding-top: 8px; +} + +.api_guide_count li { + padding: 24px 0; + border: 1px solid #C8D2E4; + margin: 16px auto 0 auto; + text-align: center; + border-radius: 16px; + background: #fff; +} + +.api_guide_count li:nth-child(1) { + margin-top: 32px; +} + +.api_guide_count li .step { + background: #140064; + font-family: 'Pretendard'; + font-size: 14px; + cursor: default; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + padding: 5px 16px; + width: 80px; + height: 32px; + border-radius: 16px; + margin: 12px auto 0 auto; +} + +.api_guide_count li .title { + font-family: 'Pretendard'; + cursor: default; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + padding-top: 8px; +} + +.api_guide_count li .list_check { + margin: 0 auto; + padding-top: 12px; + display: inline-block; +} + +.api_guide_count li .list_check p { + position: relative; + font-family: 'Pretendard'; + cursor: default; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #3B4659; + padding-left: 20px; +} + +.api_guide_count li .list_check p:after { + content: ''; + display: block; + cursor: default; + clear: both; + background-image: url(/img/icon/icon_check.png); + background-size: 16px 16px; + background-repeat: no-repeat; + width: 16px; + height: 16px; + position: absolute; + top: 2px; + left: 0; +} + +/* swagger */ +.swagger_title { +} + +.swagger_title .title { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: left; + color: #000; + cursor: default; +} + +.swagger_title .text { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #222; + padding: 4px 0 21px 0; +} + +.swagger_infor { + background: none; + margin-top: 15px; +} + +.swagger_infor .text { + position: relative; + padding: 0 0 0 16px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + cursor: default; +} + +.swagger_infor .text::after { + content: '*'; + width: 12px; + height: 12px; + font-size: 24px; + position: absolute; + left: 0; + top: 3px; + cursor: default; +} + +/* 새로운 버튼 그룹 스타일 */ +.qna_btn_group { + width: 100%; + display: flex; + gap: 8px; + justify-content: flex-end; + align-items: center; + margin-top: 20px; + border: none !important; + border-bottom: none !important; + border-top: none !important; + position: relative; +} + +.qna_btn_group::before, +.qna_btn_group::after { + display: none !important; + content: none !important; +} + +/* PC 버전 버튼 스타일 */ +@media (min-width: 1280px) { + .qna_btn_group .btn_edit { + width: 72px; + height: 32px; + padding: 0 12px; + font-size: 14px; + line-height: 27px; + color: #0114A7; + border-color: #EDF1F7; + background: #EDF1F7; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 3px; + display: inline-block; + } + + .qna_btn_group .btn_delete { + width: 72px; + height: 32px; + padding: 0 12px; + font-size: 14px; + line-height: 27px; + color: #E23A32; + border-color: #FFE5E0; + background: #FFE5E0; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 3px; + display: inline-block; + } +} + +/* 기본 버튼 스타일 */ +.qna_btn_group .btn_edit, +.qna_btn_group .btn_delete { + height: 32px; + padding: 0 12px; + font-size: 14px; + line-height: 27px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 1px; + display: inline-block; +} + +.qna_btn_group .btn_edit { + color: #0114A7; + background: #EDF1F7; + border-color: #EDF1F7; +} + +.qna_btn_group .btn_delete { + color: #E23A32; + background: #FFE5E0; + border-color: #FFE5E0; +} + +@media all and (min-width: 768px) { + .slider-container .slider img { + height: 260px; + max-width: 1344px; + margin: 0 auto; + } + + .slider-container .slider .slider_box { + position: relative; + background-color: #1728C4; + text-align: right; + } + +} + + +@media all and (min-width: 1280px) { + /* common_checkbox */ + .inp_radio label { + padding-left: 40px; + } + + .inp_radio label:before { + content: ''; + display: block; + position: absolute; + left: 0; + top: -6px; + margin-top: 0; + width: 32px; + height: 32px; + background: url(/img/icon/icon_radio_off2.png) 0 0 no-repeat; + background-size: 32px; + } + + .inp_radio input:checked + label:before { + content: ''; + background: url(/img/icon/icon_radio_on2.png) 0 0 no-repeat; + background-size: 32px; + } + + .radio_tab_nav .inp_radio input:checked + label:before { + content: ''; + background: url(/img/icon/icon_radio_on2.png) 0 0 no-repeat; + background-size: 32px; + } + + .radio_tab_nav .inp_radio label:before { + background: url(/img/icon/icon_radio_off2.png) 0 0 no-repeat; + background-size: 32px; + } + + /* common */ + .common_textareaType_1 { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + height: 160px; + padding: 2% 16px; + } + + .common_textareaType_1.h_textarea { + height: 128px; + } + + .common_textareaType_1:focus { + font-size: 18px; + font-weight: 400; + line-height: 24px; + color: #252B37; + } + + .common_textareaType_1::placeholder { + font-size: 18px; + } + + .common_textareaType_1.f_inp { + font-size: 16px; + } + + .common_textareaType_1.f_inp::placeholder { + font-size: 16px; + } + + .common_input_type_1 { + height: 64px; + font-size: 16px; + line-height: 64px; + } + + .common_input_type_1.w_inp { + width: 52%; + } + + .common_input_type_1.w_inp2 { + width: 51%; + } + + .common_input_type_1.w_inp3 { + width: 197px; + } + + .common_input_type_1.w_inp4 { + width: 100%; + } + + .common_input_type_1.w_inp5 { + width: 184px; + } + + .common_input_type_1.w_inp5.inp { + width: 234px; + } + + .common_input_type_1.w_inp6 { + width: 160px; + } + + .common_input_type_1.w_inp6.inp { + width: 210px; + } + + .common_input_type_1.w_inp7 { + width: 210px; + } + + .common_input_type_1.w_inp7.inp { + width: 258px; + } + + .common_input_type_1.w_inp8 { + width: 280px; + } + + .common_input_type_1.w_inp9 { + width: 291px; + } + + .common_input_type_1.w_inp10 { + width: 140px; + } + + .common_input_type_1.w_inp11 { + width: 137px; + } + + .form_type .info_box1.w_inp4 { + width: 100%; + } + + .form_type .info_box1.w_inp5 { + width: 448px; + } + + .form_type .info_box1.w_inp6 { + width: 736px; + } + + .form_type .info_box1.c_inp .common_input_type_1 { + color: #252B37; + } + + .common_input_type_1.h_inp { + height: 64px; + } + + .common_input_type_1.h_inp::placeholder { + font-size: 16px; + } + + .common_input_type_1.h_inp2 { + height: 48px; + } + + .common_input_type_1.h_inp2:focus { + height: 48px; + } + + .common_input_type_1.h_inp2::placeholder { + font-size: 48px; + } + + .common_input_type_1::placeholder, + .common_selectType::placeholder { + border: 0; + font-size: 16px !important; + color: #8694B1; + height: 64px; + line-height: 64px; + position: relative; + top: 1px; + } + + .common_input_type_1:focus, + .common-select-type:focus { + background: #E0E6F1; + border: 1px solid #E0E6F1; + font-size: 16px; + letter-spacing: -0.02em; + outline: none; + height: 64px; + line-height: 64px; + color: #252B37; + } + + .common_input_type_1.type-1:focus, + .common-select-type.type-1:focus { + background: #fff; + } + + .input-readonly { + background-color: #f8f9fa !important; + cursor: default; + pointer-events: none !important; + } + + /* 디자인 셀렉트박스 */ + .custom_select.h_inp { + height: 48px; + } + + .custom_select.h_inp2 { + height: 64px; + } + + + /* btn */ + .common_btn_type_1 { + border-radius: 12px; + font-size: 20px; + cursor: pointer; + z-index: 0; + } + + .btn_keydel { + width: 134px; + height: 48px; + padding: 0 12px 0 30px; + font-size: 16px; + line-height: 52px; + color: #E23A32; + background: #FFE5E0 url(/img/icon/icon_trash4.png) no-repeat 10px center / 20px 20px; + background-size: 20px; + background-position: 12px center; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 6px; + } + + + /* formtype */ + .form_type .btn_application { + margin-top: 32px; + } + + .form_type .info1 .info_line.info_add { + display: block; + } + + .top_info.m_tbom { + margin: 16px 0; + } + + .top_info li::before { + top: 2px; + cursor: default; + } + + .dot:after { + content: ''; + display: block; + clear: both; + background: #E23A32; + width: 6px; + height: 6px; + position: absolute; + top: -1px; + right: -10px; + border-radius: 3px; + } + + .form_type { + display: contents; + } + + .form_type .info1 { + display: flex; + align-items: center; + justify-content: center; + padding-top: 24px; + } + + .form_type .info1.p_top { + padding-top: 24px; + } + + .form_type .info1.p_top0 { + padding-top: 0; + } + + .form_type .info1.p_top2 { + padding-top: 0; + } + + .form_type .info1.p_top3 { + padding-top: 40px; + } + + .form_type .info1.p_top4 { + padding-top: 32px; + } + + .form_type .info1.p_top5 { + padding-top: 8px; + } + + .form_type .info1.p_top6 { + padding-top: 16px; + } + + .form_type .info1.p_top7 { + padding-top: 0; + } + + .form_type .info1.p_top8 { + padding-top: 64px; + } + + /* .form_type .info1:nth-child(1){padding-top: 0;} */ + .form_type .title { + display: table-cell; + width: 32%; + cursor: default; + font-size: 16px; + line-height: 24px; + font-weight: 700; + color: #252B37; + } + + .form_type .title.w_tit { + width: 231px; + } + + .form_type .title.w_tit2 { + width: 174px; + } + + .form_type .title.tit_add { + margin-top: -55px; + } + + .form_type .title.tit_add2 { + margin-top: -29px; + } + + .form_type .title.tit_add3 { + margin-top: 0; + } + + .form_type .info_line { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + flex-wrap: inherit; + margin-top: 0; + } + + .form_type .info_line.line_add { + justify-content: start; + } + + .form_type .info_line.flex_w { + flex-wrap: wrap; + } + + .form_type .info_box1 { + display: flex; + /* width: 100%; */ + width: 584px; + margin-top: 0; + } + + .form_type .info_box1.qna_text span { + top: 184px; + display: none; + } + + .form_type .info_box1.qna_text textarea::placeholder { + font-size: 16px; + } + + .form_type .info_box1.qna_text textarea { + height: 224px; + border: 1px solid #E0E6F1; + border-radius: 8px; + padding: 12px 0; + text-indent: 16px; + font-size: 16px; + } + + .form_type .info_line .btn_check { + /* width: 174px; */ + width: 140px; + margin-left: 8px; + margin-top: 0; + z-index: 0; + } + + .form_type .info_line .btn_check a { + height: 64px; + line-height: 64px; + } + + .form_type .info_line .btn_check .common_btn_type_2.cbt { + font-size: 18px; + } + + .form_type .info_box1 .custom_select.ct_sc .select_selected { + height: 64px; + line-height: 64px; + border: 1px solid #E0E6F1; + font-size: 16px; + } + + /* .form_type .info_box1 .custom_select.ct_sc .select_selected.disabled{background: #F7F9FD url(/img/icon/icon_select_arrow_down2.png) no-repeat 96% 50%;} */ + .form_type .info_box1 .custom_select.ct_sc .select_selected.disabled { + background: #F7F9FD; + color: #8694B1; + } + + .form_type .info_box1 .custom_select.disabled { + pointer-events: none; + } + + .custom_select .select_items.ct_sc2 { + top: 70px; + border: 1px solid #C8D2E4; + } + + .form_type .info_box1 .input { + width: 100%; + } + + .form_type .info_box1.info_add2 .input .upload_name { + height: 64px; + } + + .form_type .info_box1.qna_text input { + height: 224px; + } + + .form_type .info_box1.qna_text input::placeholder { + margin-top: -50px; + } + + .form_type .info_box1 input::placeholder { + font-size: 18px; + } + + .form_type .info_box1 .w_ip { + width: 50%; + } + + .form_type .btn_application .common_btn_type_1 { + width: 180px; + height: 72px; + cursor: pointer; + line-height: 72px; + font-size: 20px; + border-radius: 12px; + } + + .form_type .info_box1 .dash { + padding: 0 4px; + font-size: 20px; + } + + .form_type .info_box1 .certify_box.w_inp { + width: 448px; + } + + .form_type .info_box1 .certify_box .certify_time { + top: 20px; + font-size: 20px; + font-weight: 400; + } + + .form_type .info_box1.info_add2 { + display: inline-flex; + width: 100%; + } + + .form_type .info1 .info_line label { + height: 64px; + line-height: 40px; + } + + .form_type .info_box1 .special_t { + font-size: 20px; + color: #000; + } + + .form_type .info1 .info_line label { + font-size: 18px; + } + + .form_type .btn_application.btn_top2 { + margin-top: 103px; + } + + .form_type .btn_application.btn_top3 { + margin-top: 64px; + } + + .form_type .btn_application.m_top { + margin-top: 64px; + } + + .form_type .info_box1.qna_text { + position: relative; + border-radius: 8px; + } + + .form_type .info_box1.qna_text .byte { + display: none; + position: absolute; + top: 88px; + right: 16px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: right; + color: #C8D2E4; + } + + .filebox { + width: 100%; + max-width: 584px; + } + + .filebox input[type="file"] { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + } + + .filebox label { + display: inline-block; + padding: 20px 16px; + color: #8694B1; + font-size: inherit; + line-height: normal; + vertical-align: middle; + background-color: #ffffff; + cursor: pointer; + border: 1px solid #E0E6F1; + border-bottom-color: #E0E6F1; + border-radius: .25em; + } + + /* named upload */ + .filebox .upload-name { + display: inline-block; + padding: 20px 16px; + font-size: inherit; + font-family: 'Pretendard'; + line-height: normal; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #E0E6F1; + border-bottom-color: #E0E6F1; + border-radius: 8px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 100%; + font-size: 16px; + height: 64px; + + } + + .filebox .upload-name.i_trash { + border: 1px solid #252B37; + border-bottom-color: #252B37; + background: url(/img/icon/icon_trash.png) no-repeat center right 16px; + padding-right: 12px; + cursor: pointer; + } + + .dot_box { + background: #F7F9FD; + border-radius: 8px; + margin-top: 16px; + } + + .dot_box .list-dot { + padding: 24px 16px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + + .slider-container .slider img { + height: 435px; + max-width: 1344px; + margin: 0 auto; + } + + .slider-container .slider .slider_box { + position: relative; + background-color: #1728C4; + } + + .m-only { + display: none !important; + } + + .pc-only { + display: block !important; + } + + .header .home.on { + display: none; + } + + /* navigation */ + #navigation { + background: #17008C; + width: 100%; + height: 66px; + justify-content: center; + align-items: center; + display: flex; + } + + .navigation { + display: block; + position: relative; + z-index: 100; + background: #64738b; + border: solid rgba(255, 255, 255, 0.2); + border-width: 1px 0; + justify-content: center; + align-items: center; + } + + .navigation.fixed { + position: fixed; + top: 0; + width: 100%; + border-top: 0; + } + + .navigation-area { + display: flex; + max-width: 100%; + margin: 0 150px; + width: 980px; + } + + .navigation-area.api_navi { + display: flex; + max-width: 100%; + margin: 0 276px; + width: 1920px; + } + + .navigation-area > li { + overflow: hidden; + position: relative; + height: 65px; + font-size: 16px; + font-weight: 400; + color: #fff; + line-height: 24px; + } + + .navigation-area > li > a { + display: block; + height: 100%; + font-size: 16px; + font-weight: 400; + color: #fff; + line-height: 65px; + cursor: pointer; + } + + .navigation-area > li { + border-left: 1px solid rgba(255, 255, 255, 0.2); + } + + .navigation-area > li:not(:first-child) > a { + padding-left: 28px; + padding-right: 28px; + text-decoration: none; + cursor: default; + } + + .navigation-area > li:before { + content: ''; + display: inline-block; + position: absolute; + left: 0; + top: 7px; + z-index: 0; + width: 4px; + height: 4px; + background: #ccc; + border-radius: 50%; + display: none; + } + + .navigation-area > li:first-child { + width: 84px; + } + + .navigation-area > li:first-child:before { + display: none; + } + + .navigation-area > li:first-child a { + text-decoration: none; + position: relative; + background: url(/img/icon/icon_sub_home.png) no-repeat center; + width: 100%; + height: 100%; + font-size: 0; + cursor: pointer; + } + + .navigation-menu.active > a:after { + content: ''; + transform: translate3d(-50%, -50%, 0) rotate(180deg); + text-indent: 0; + background: url(/images/com/navigation_open.png) no-repeat center; + } + + .navigation-area > li:last-child a:after { + opacity: 1; + } + + .navigation-menu .navigation-layer { + overflow: hidden; + display: inline-block; + position: relative; + top: 0px; + z-index: -1; + width: calc(100% + 2px); + height: 0; + background: #fff; + vertical-align: top; + -webkit-box-sizing: border-box; + box-sizing: border-box; + opacity: 0; + transition: all .3s 0s ease; + margin: 0px -1px 0; + border-top: 1px solid #4f607e; + } + + .navigation-menu .navigation-layer a { + display: block; + padding: 14px 44px 14px 16px; + font-size: 16px; + color: #666; + font-weight: 400; + line-height: 1; + text-indent: 0; + width: 100% !important; + box-sizing: border-box; + -webkit-box-sizing: border-box; + position: relative; + } + + .navigation-menu .navigation-layer a:focus { + color: #196af3; + background: #ebf2fe; + } + + .navigation-menu .navigation-layer a:first-child { + margin-top: 0; + } + + .navigation-menu:hover { + overflow: inherit; + } + + .navigation-menu:hover .navigation-layer { + z-index: 10; + opacity: 1; + overflow: inherit; + } + + .navigation.fixed + section, + .navigation.fixed ~ .container section, + .navigation.fixed + .sub-visual, + .navigation.fixed + .container .sub-visual { + margin-top: 50px; + } + + .navigation-menu .navigation-layer ul { + height: 0; + overflow: hidden; + display: flex; + } + + .navigation-layer a.more:after { + content: ''; + display: inline-block; + position: absolute; + right: 10px; + top: 50%; + width: 12px; + height: 12px; + transition: transform .3s 0s ease; + transform: translate3d(-50%, -50%, 0); + text-align: center; + background: url(/images/com/navigation_close.png) no-repeat center; + opacity: .3; + } + + .navigation-layer li:hover > a { + color: #196af3; + background: #ebf2fe; + } + + .navigation-layer ul ul { + position: absolute; + top: 0; + left: 0; + border: 1px solid #ddd; + opacity: 0; + transition: opacity 0.3s ease-out; + top: 0; + left: 216px; + } + + .navigation-area ul ul ul { + top: -1px; + left: 215px; + } + + .navigation-menu:hover .navigation-layer > ul { + height: auto; + z-index: 10; + } + + .navigation-menu .navigation-layer > ul > li:hover > ul, + .navigation-menu .navigation-layer > ul > li > ul > li:hover > ul { + overflow: inherit; + height: auto; + opacity: 1; + z-index: 9; + } + + .navigation-layer > a { + display: none !important; + } + + /* #wrap{background:#E0E6F1;height: 100%;min-height: 100vh;} */ + /*header*/ + .header { + width: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 1000; + min-width: 100%; /*min-width:1280px;*/ + height: 80px; + border-bottom: 1px solid #e6e6e6; + background-color: #fff; + -webkit-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.05); + } + + .header .logo { + position: absolute; + width: 206px; + height: 26px; + left: 40px; + top: 27px; + background: url("/img/logo/img_logo2.png") no-repeat center; + background-size: 206px; + z-index: 1200; + } + + .header .home, .header .home2 { + display: none; + } + + .header .logo a, .header .logo2 a { + display: block; + height: 100%; + } + + .header .btn-mobilemenu { + display: none; + } + + /*login*/ + .inp_check label:before { + top: -1px !important; + } + + #login_group { + position: absolute; + top: 28px; + right: 40px; + } + + #login_group li a { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + } + + #login_group .mp_arrow { + position: relative; + } + + #login_group .mp_arrow:after { + content: ''; + display: block; + clear: both; + background-image: url('/img/icon/icon_mp_arrow.png'); + background-size: 12px 12px; + background-repeat: no-repeat; + width: 12px; + height: 12px; + position: absolute; + top: 5px; + right: -17px; + } + + #login_group .mp_type { + display: none; + position: absolute; + background-color: #fff; + border: 1px solid #ccc; + padding: 10px; + padding: 11px 12px; + } + + #login_group .mp_type.show { + display: block; + z-index: 1000; + width: 140px; + position: absolute; + top: 30px; + right: -16px; + border-radius: 8px; + border: 1px solid #C8D2E4; + box-shadow: 0px 2px 2px 0px #414E651A; + } + + #login_group .mp_type .mp_list li { + display: block; + padding: 5px 0; + } + + #login_group .mp_type .mp_list li a { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + } + + #login_group .login_type li a { + position: relative; + } + + #login_group .login_type li a:after { + content: ''; + display: inline-block; + position: absolute; + right: 30px; + top: 7px; + width: 20px; + height: 20px; + transition: transform .3s 0s ease; + transform: translate3d(-50%, -50%, 0); + text-align: center; + background: url(/img/icon/icon_login2.png) no-repeat center; + } + + #login_group .logout_type li { + display: inline-block; + } + + #login_group .logout_type .icon a { + position: relative; + display: inline-block; + padding-right: 25px; + } + + #login_group .logout_type .icon a:after { + content: ''; + position: absolute; + right: 0px; + top: 50%; + margin-top: -10px; + width: 20px; + height: 20px; + background: url(/img/icon/icon_user.png) no-repeat center; + background-size: contain; + } + + #login_group .logout_type .icon.line { + position: relative; + display: inline-block; + } + + #login_group .logout_type .icon.line:before { + content: ''; + background: #B6F23D; + width: 100%; + min-width: 48px; + height: 2px; + position: absolute; + bottom: -2px; + border-radius: 6px; + } + + #login_group .logout_type li span { + width: 1px; + color: #C8D2E4; + padding: 0 6px; + } + + /*GNB*/ + #nav { + width: 752px; + display: block; + margin: 0 auto; + } + + #main_nav { + background: #fff; + height: 80px; + line-height: 80px; + border-bottom: 1px solid #E0E6F1; + } + + #main_nav ul { + overflow: hidden; + width: 590px; + margin: 0 auto; + display: flex; + justify-content: center; + align-items: center; + } + + #main_nav ul li { + float: left; + text-align: center; + width: 22%; + } + + #main_nav ul li a { + color: #000; + text-decoration: none; + display: inline-block; + position: relative; + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + } + + #main_nav ul li a::after { + content: ''; + position: absolute; + width: 100%; + height: 3px; + bottom: -29px; + left: 0; + background-color: #140064; + transform: scaleX(0); + transition: transform 0.3s ease-in-out; + } + + #main_nav ul li a:hover::after { + transform: scaleX(1); + } + + #sub { + width: 100%; + position: absolute; + top: 80px; + left: 0; + right: 0; + background: #fff; + border-bottom: 1px solid #E0E6F1; + z-index: 1000; + } + + #sub_menu { + overflow: hidden; + width: 590px; + margin: 0 auto; + padding-top: 15px; + padding-bottom: 15px; + display: flex; + justify-content: center; + text-align: center; + } + + #sub_menu .menu { + float: left; + text-align: center; + width: 22%; + } + + #sub_menu .menu li { + padding-bottom: 8px; + } + + #sub_menu .menu li a { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + color: #67748E; + text-decoration: none; + } + + #sub_menu .menu li a:hover { + color: #020616; + } + + + /*contents*/ + .content { + margin: 146px 0 0; + background: #EDF1F7; + } + + .content.main { + margin: 80px 0 0; + } + + .content-inner { + flex-grow: 1; + } + + .content_wrap { + border-radius: 16px; + width: 980px; + margin: 0 auto 0 auto; + } + + #wrap .pop_text{ + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + cursor: default; + } + + #wrap .l_text { + text-align: left; + padding-top: 25px; + padding-bottom: 4px; + font-weight: 700; + cursor: default; + } + + #wrap .inner.h_inner8 { + margin-top: 32px; + } + + #wrap .inner.h_inner9 { + margin-bottom: 166px; + } + + #wrap .inner.h_inner10 { + margin-bottom: 64px; + } + + #wrap .inner.h_inner11 { + margin-top: 32px; + } + + #wrap .inner.h_inner12 { + margin-bottom: 56px; + } + + .inner_interval { + padding: 166px 240px !important; + } + + .sub_title2 { + display: block; + padding-top: 56px; + } + + + .sub_title2 .title { + /* padding-top: 57px; */ + position: relative; + z-index: 1; + } + + .sub_title2 .title:after { + content: ''; + display: block; + clear: both; + background: #B6F23D; + width: 143px; + height: 12px; + position: absolute; + top: 82%; + left: 50%; + border-radius: 6px; + z-index: -1; + transform: translate(-50%, -50%); + } + + .sub_title2 .title.add:after { + width: 275px; + } + + .sub_title2 .title.add2:after { + width: 275px; + } + + .sub_title2 .title.add3:after { + width: 184px; + } + + .sub_title2 .title.add4:after { + width: 346px; + } + + .sub_title2 .title.add5:after { + width: 234px; + } + + .sub_title2 .title.add6:after { + width: 406px; + } + + .sub_title2 .title.add7:after { + width: 143px; + } + + .sub_title2 .title.add8:after { + width: 315px; + } + + + /*footer*/ + #footer .family-sites h3 { + height: 48px; + line-height: 26px; + } + + #footer { + background-color: #252B37; + padding: 32px 40px 64px 40px; + height: 175px; + position: relative; + } + + #footer .family-sites { + position: absolute; + top: 22px; + right: 0; + width: 214px; + } + + #footer .f-info2 { + font-family: 'Pretendard'; + font-weight: 400; + color: #FFFFFFA6; + font-size: 14px; + line-height: 22px; + cursor: default; + padding-top: 26px; + } + + #footer .policy-site { + position: relative; + } + + #footer .policy-site .ft_logo { + position: absolute; + top: 0; + right: 0; + } + + #footer .policy-site .family-site { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + width: 100%; + padding-top: 0; + position: absolute; + top: 40px; + right: 0; + width: 215px; + } + + #footer .policy-site .family-site .label { + display: block; + font-size: 16px; + height: 48px; + line-height: 48px; + position: relative; + padding-left: 16px; + border-radius: 6px; + color: #fff; + border: 1px solid #FFFFFF33; + letter-spacing: -0.2px; + } + + #footer .policy-site .family-site .label::after { + content: ''; + background: url(/img/icon/icon_select_arrow_down.png) no-repeat center / contain; + -webkit-transform: rotate(180deg); + transform: rotate(360deg); + position: absolute; + right: 12px; + top: 15px; + width: 16px; + height: 16px; + -webkit-transition: 0.5s; + transition: all 0.5s; + -webkit-transform-origin: center; + transform-origin: center; + } + + #footer .policy-site .family-site .label.on::after { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + + #footer .policy-site .family-site .site-list-wrap { + bottom: 0; + left: 0; + background: transparent; + width: calc(100% + 2px); + display: none; + width: 100%; + margin-left: -1px; + height: auto; + } + + #footer .policy-site .family-site .site-list { + padding-bottom: 4px; + margin-bottom: 3px; + border-bottom: 1px solid #e6e6e6; + background: #252B37; + border-radius: 3px 3px 0 0; + position: absolute; + top: -246px; + left: 0; + width: 215px; + } + + #footer .policy-site .family-site .site-list li a { + font-size: 12px; + padding-left: 16px; + padding: 6px 15px 5px; + color: #fff; + background: #252B37; + display: block; + letter-spacing: -0.35px; + } + + #footer .f-info { + color: #fff; + padding-top: 0; + } + + #footer .f-info .bold-link { + font-weight: bold; + color: #a5ff00; + font-size: 16px; + line-height: 24px; + letter-spacing: -0.2px; + padding-top: 24px; + } + + #footer .f-info a { + font-family: 'Pretendard'; + font-weight: 400; + color: #fff; + font-size: 16px; + line-height: 24px; + letter-spacing: -0.2px; + padding-top: 0; + } + + #footer .f-info span { + padding: 0 20px; + } + + #footer .copyright { + font-family: 'Pretendard'; + font-weight: 400; + color: #FFFFFFA6; + font-size: 14px; + line-height: 22px; + letter-spacing: -0.2px; + } + + /* 로그인 / 회원가입 */ + .top_info li { + cursor: default; + font-size: 16px; + line-height: 24px; + } + + .top_info li::before { + content: ''; + width: 12px; + height: 12px; + cursor: default; + background: url(/img/icon/icon_notice_star.png) no-repeat 0 0; + background-size: 12px; + position: absolute; + left: -16px; + top: 5px; + } + + .terms_box span { + font-size: 16px; + cursor: default; + } + + .total_wrap { + padding: 20px 16px 12px 16px; + } + + .total_wrap .total_type .suv_ck { + padding-top: 28px; + } + + .con_title.m_btm0 { + margin-bottom: 0; + } + + .con_title.f_tit { + font-family: 'Pretendard'; + font-size: 28px; + font-weight: 400; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + } + + .con_title.f_tit span { + font-family: 'Pretendard'; + font-size: 28px; + font-weight: 700; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + } + + .con_title { + font-family: 'Pretendard'; + font-size: 32px; + cursor: default; + font-weight: 400; + line-height: 46px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + margin-bottom: 32px; + } + + .con_title .bold { + font-family: 'Pretendard'; + font-size: 32px; + font-weight: 700; + line-height: 46px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + } + + .con_title.m_btm { + margin-bottom: 40px; + } + + .con_title .tit_txt { + font-size: 24px; + line-height: 46px; + } + + .con_title .tit_txt span { + font-size: 24px; + line-height: 46px; + } + + .header .sub_title { + text-align: center; + margin: 0 auto; + width: 100%; + left: 0; + } + + .header .sub_title p { + font-size: 20px; + font-family: 'Pretendard'; + font-weight: 700; + position: relative; + padding-top: 16px; + color: #000; + line-height: 26px; + letter-spacing: -0.2px; + } + + .header .sub_title p:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_arrow_left.png); + background-position: 0; + background-repeat: no-repeat; + background-size: 24px; + width: 24px; + height: 24px; + position: absolute; + top: 16px; + left: 16px; + } + + #wrap .inner { + padding: 166px 32px 166px 32px; + background: #fff; + border-radius: 16px; + margin-top: 40px; + margin-bottom: 48px; + } + + #wrap .inner2 { + padding: 24px 16px 24px 16px; + background: #fff; + border-radius: 16px; + margin-top: 16px; + } + + #wrap .inner.cs { + padding: 40px 32px 166px 32px; + background: #fff; + border-radius: 16px; + margin-top: 40px; + margin-bottom: 48px; + } + + #wrap .inner.i_cs { + padding: 40px 32px 64px 32px; + } + + #wrap .inner.i_cs1 { + padding: 72px 0; + } + + #wrap .inner.i_cs2 { + padding: 80px 219px; + } + + #wrap .inner.i_cs3 { + padding: 40px 79px 64px 79px; + } + + #wrap .inner.i_cs4 { + padding: 40px 32px; + } + + #wrap .inner2.i_cs4 { + padding: 40px 32px; + } + + #wrap .inner.i_cs5 { + padding: 40px 32px 352px 32px; + } + + #wrap .inner.i_cs6 { + padding: 40px 32px 276px 32px; + } + + #wrap .inner.i_cs7 { + padding: 32px 24px 64px 24px; + } + + #wrap .inner.i_cs8 { + padding: 24px 16px 56px 16px; + } + + #wrap .inner.i_cs9 { + padding: 80px 232px; + } + + #wrap .inner.i_cs10 { + padding: 80px 102px; + } + + #wrap .inner.i_cs11 { + padding: 80px 32px; + } + + #wrap .inner.i_cs12 { + padding: 40px 32px 73px 32px; + } + + #wrap .inner.member { + padding: 80px 0; + background: #fff; + border-radius: 16px; + margin-top: 40px; + margin-bottom: 48px; + } + + #wrap .inner2.i_cs { + padding: 40px 32px 64px 32px; + } + + #wrap .login_box .group.g_mt { + margin-top: 32px; + } + + #wrap .login_box .group { + display: flex; + } + + #wrap .login_box .group label { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 64px; + text-align: left; + color: #3B4659; + width: 180px; + } + + #wrap .box_inp { + margin: 24px auto 0 auto; + width: 500px; + } + + .inp_check.f_size label { + font-size: 16px; + } + + #wrap .btn_login { + margin: 0 auto; + width: 500px; + padding-top: 40px; + } + + #wrap .btn_login .common_btn_type_1 span { + z-index: 20; + position: relative; + + } + + .login_list { + margin: 48px auto 0 auto; + text-align: center; + } + + .login_list li { + display: inline-block; + } + + .login_list li span { + padding: 0 12px; + } + + .login_list li a { + font-size: 16px; + font-weight: 400; + line-height: 25px; + } + + #wrap .list li a { + font-size: 16px; + line-height: 22px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + } + + #wrap .list li span { + padding: 0 28px 0 7px; + color: #C8D2E4; + } + + #wrap.wrap_type { + padding: 107px 219px; + } + + #wrap .member_tit { + padding-top: 0; + } + + #wrap .member_tit p { + color: #020616; + margin: 0 auto; + text-align: center; + font-family: 'Pretendard'; + font-size: 40px; + font-weight: 400; + line-height: 46px; + } + + #wrap .member_tit p span { + font-family: 'Pretendard'; + font-size: 40px; + font-weight: 700; + line-height: 46px; + letter-spacing: -0.2px; + text-align: center; + } + + #wrap .inner.inner_type { + margin: 0 auto; + } + + .member_list { + width: 340px; + margin: 0 auto; + margin-top: 48px; + } + + .member_list a { + text-decoration: none; + } + + .member_list .mb_group1 { + position: relative; + background: #0114A7; + padding: 38px 92px 38px 140px; + border-radius: 9px; + box-shadow: 0px 2px 2px 0px #414E651A; + text-align: center; + cursor: pointer; + } + + .member_list .mb_group1 a { + position: relative; + } + + .member_list .mb_group1 a:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_member01.png); + background-position: 0; + background-repeat: no-repeat; + background-size: 40px; + width: 40px; + height: 40px; + position: absolute; + top: -12px; + left: -52px; + } + + .member_list .mb_group1 span { + font-size: 20px; + } + + .member_list .mb_group2 { + margin-top: 16px; + background: #EDF1F7; + padding: 38px 92px 38px 140px; + border-radius: 9px; + box-shadow: 0px 2px 2px 0px #414E651A; + text-align: center; + cursor: pointer; + } + + .member_list .mb_group2 a { + position: relative; + } + + .member_list .mb_group2 a:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_member02.png); + background-position: 0; + background-repeat: no-repeat; + background-size: 40px; + width: 40px; + height: 40px; + position: absolute; + top: -12px; + left: -52px; + } + + .member_list .mb_group2 span { + font-size: 20px; + } + + .tit_logo { + padding-top: 0; + text-align: center; + padding-top: 32px; + } + + .tit_logo2 { + padding-top: 0; + text-align: center; + } + + #wrap .member_tit.complete { + } + + #wrap .member_tit.complete p { + padding-top: 0; + font-family: 'Pretendard'; + font-size: 40px; + font-weight: 700; + line-height: 46px; + letter-spacing: -0.2px; + text-align: center; + color: #000; + } + + #wrap .inner .i_complete { + margin: 0 auto 0 auto; + padding-top: 56px; + text-align: center; + } + + #wrap .inner .i_complete.i_cp { + padding-top: 10px; + } + + #wrap .inner .i_complete img { + width: 136px; + height: 136px; + } + + #wrap .inner .complete_txt { + padding-top: 24px; + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.2px; + text-align: center; + color: #4D596F; + } + + .btn_home { + margin: 56px auto 0 auto; + } + + .btn_home .common_btn_type_1 { + width: 180px; + height: 72px; + line-height: 72px; + cursor: pointer; + margin: 0 auto; + } + + .btn_home.btn_home2 .common_btn_type_1 { + width: 180px; + line-height: 72px; + cursor: pointer; + margin: 0 auto; + } + + #wrap .inner .cs_info { + margin-top: 56px; + } + + #wrap .email_tit { + font-size: 32px; + line-height: 40px; + margin-top: 32px; + } + + /*****고객지원*****/ + .sub_title3 { + padding-top: 56px; + + } + + .sub_title3 h2 { + display: block; + } + + .sub_title3 .title { + position: relative; + z-index: 1; + padding-left: 20px; + cursor: default; + } + + .sub_title3 .title:after { + content: ''; + display: block; + clear: both; + background: #B6F23D; + width: 40px; + height: 40px; + position: absolute; + top: -8px; + left: 4px; + border-radius: 50%; + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + z-index: -1; + cursor: default; + } + + .board_search .count { + display: none; + } + + .board_search { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkt-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + } + + .board_search .search_txt { + position: relative; + height: 48px; + line-height: 48px; + border-radius: 6px; + text-align: right; + width: auto; + } + + .board_search .search_txt .common_input_type_1 { + width: 220px; + } + + .board_search .search_txt.result .common_input_type_1::placeholder { + color: #252B37; + } + + .board_search .search_txt2 .common_input_type_1 { + width: 100%; + } + + .board_search .search_txt.h_inp_box .common_input_type_1 { + height: 48px; + } + + .board_search .search_txt input::placeholder { + font-size: 16px; + } + + .board_search .search_txt input:focus { + font-size: 16px; + } + + .board_search .search_txt.search_inputbox { + width: 220px; + height: 48px; + } + + .board_search .search_txt.search_inputbox input { + line-height: 48px; + vertical-align: middle; + width: 218px; + } + + .board_search .btn_wrap { + margin-left: 10px; + } + + .total-post-wrap { + margin-top: 0; + width: 100%; + position: relative; + } + + .total-post-wrap .total-post { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #000; + position: absolute; + top: 24px; + left: 0; + cursor: default; + } + + .total-post-wrap .total-post strong { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 22px; + text-align: left; + color: #020616; + } + + /*공지사항 - 검색결과없음*/ + #wrap .inner.cs.i_cs3 { + padding-bottom: 40px; + } + + /* .no-result-wrap .no_data{padding-top: 214px;} */ + .no-result-wrap .no_data .no_result_text p { + font-size: 18px; + color: #8694B1; + } + + .board-list-wrap { + margin-top: 16px; + } + + .board-list li { + padding: 23px 0; + } + + .board-list li.th-head { + display: block; + border-bottom: 1px solid #E0E6F1; + background: #EDF1F7; + } + + .board-list li.th-head span { + font-size: 14px; + font-weight: 700; + text-align: center !important; + color: #252B37; + line-height: 22px; + font-family: 'Pretendard'; + } + + .board-list li.th-head .col-num { + width: 100px; + font-weight: 700; + font-size: 14px; + cursor: default; + } + + .board-list li.th-head .col-date { + width: 246px; + font-size: 14px; + cursor: default; + } + + .board-list li div { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: nowrap; + } + + .board-list li div .col-num { + width: 100px; + display: block; + flex-shrink: 0; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + padding-left: 40px; + padding-right: 40px; + cursor: default; + } + + .board-list li div .col-title { + flex: 1; + text-align: center; + overflow: hidden; + cursor: default; + } + + .board-list li div .col-date { + width: 246px; + display: block; + flex-shrink: 0; + font-size: 16px; + text-align: center; + cursor: default; + } + + .board-list li div .col-comp { + width: 110px; + cursor: default; + } + + .board-list .th-head div .col-name { + width: 120px; + font-size: 14px; + } + + .board-list li div .col-date, + .board-list li div .col-name { + flex-shrink: 0; + cursor: default; + } + + .board-list li > div > span { + text-align: center; + font-size: 1.4rem; + color: #000; + } + + .board-list li div .col-title em a { + position: relative; + display: block; + width: 100%; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #000; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + } + + .no-result-wrap .no_data .no-result-text { + padding-top: 144px; + font-size: 18px; + font-weight: 400; + line-height: 24px; + color: #4D596F; + } + + .no-result-wrap .no_data span { + display: flex; + justify-content: center; + align-items: center; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #8694B1; + padding-top: 8px; + padding-bottom: 96px; + } + + .board-view { + border-top: 2px solid #4D596F; + border-bottom: 2px solid #E0E6F1; + /* margin-bottom: 32px; */ + } + + .board-view .board-view-head { + padding: 32px 0 32px 16px; + border-bottom: 1px solid #E0E6F1; + } + + .board-view .board-view-head .title { + font-family: 'Pretendard'; + color: #000; + font-size: 28px; + font-weight: 400; + line-height: 32px; + letter-spacing: -0.02em; + text-align: left; + cursor: default; + } + + .board-view .board-view-head .write-info { + display: block; + margin-top: 8px; + } + + .board-view .board-view-head .write-info .date-info { + font-size: 16px; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + font-weight: 400; + padding-top: 16px; + cursor: default; + } + + .board-view .board_file .file_group { + padding: 20px 0; + } + + .board-view .board_file .file_group span a { + position: relative; + display: block; + width: 100%; + font-weight: 400; + font-size: 16px; + line-height: 24px; + letter-spacing: -0.02em; + color: #252B37; + padding-left: 44px; + } + + .btn_board { + display: flex; + } + + .btn_board a { + margin-left: auto; + width: 180px; + height: 72px; + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 72px; + letter-spacing: -0.02em; + text-align: center; + border-radius: 12px; + } + + .btn_board a.btn_qna { + width: 120px; + height: 56px; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + padding: 16px 0; + } + + .board-view .board-view-body { + font-size: 16px; + line-height: 24px; + padding: 24px 16px; + cursor: default; + } + + /*Q&A*/ + .board-view-head.qna .detail_title { + margin-top: 16px; + } + + #wrap .inner.cs3 { + padding: 40px 32px 143px 32px; + } + + .board-list.qna_list .col-name em { + display: none; + } + + .board-list.qna_list .th-head .col-date { + width: 120px; + } + + .board-list.qna_list .col-date { + width: 120px; + } + + .board-list.qna_list .col-name { + width: 120px; + } + + .board-list.qna_list li { + padding: 23px 0; + } + + .board-list.qna_list li .td-body span { + font-size: 16px; + } + + .board-list.qna_list li .td-body span.col-name { + width: 120px; + } + + .board-list li > div .col-title em.qna-type a { + padding-left: 26px; + } + + .board-list li div .col-title em.qna-type a .icon-secret { + position: absolute; + left: 0; + top: 50%; + margin-top: -1rem; + } + + .icon-secret { + display: inline-flex; + width: 20px; + height: 20px; + font-size: 0; + background: url(/img/icon/icon_password.png) no-repeat 50% 50% / 20px 20px; + } + + .board-list li div .col-comp .question { + position: static; + font-size: 14px; + letter-spacing: -0.02em; + display: inline-block; + width: 72px; + height: 32px; + padding: 5px 0; + line-height: 22px; + } + + .board-list li div .col-comp .complete { + position: static; + font-size: 14px; + letter-spacing: -0.02em; + display: inline-block; + width: 72px; + height: 32px; + padding: 5px 0; + line-height: 22px; + } + + .board-list li div .col-title .icon_file { + width: 20px; + height: 20px; + display: inline-block; + margin-left: 0; + } + + .btn_board2 { + display: flex; + margin-top: 0; + position: absolute; + top: -14px; + right: 0; + } + + .btn_board2 > a { + margin-left: auto; + width: 130px; + } + + .page_group { + position: relative; + } + + .btn_board.btn_top { + margin-top: 32px; + } + + + .pg_btn { + position: relative; + } + + .pg_btn .btn_board { + position: absolute; + top: -12px; + right: 0; + } + + .pg_btn .btn_board.btn_top { + margin-top: 0; + } + + .board-view-head.qna .complete_box .complete { + height: 32px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + cursor: default; + } + + .comment_wrap .comment_wrap_head { + position: relative; + padding: 24px 16px 24px 66px; + } + + .comment_wrap .comment_wrap_head:after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_kbank.png); + background-size: 40px 40px; + background-repeat: no-repeat; + width: 40px; + height: 40px; + position: absolute; + top: 24px; + left: 16px; + } + + .comment_wrap .comment_wrap_head .title { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + color: #252B37; + } + + .comment_wrap .comment_wrap_head .title em { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + text-align: left; + color: #67748E; + cursor: default; + } + + .comment_wrap .comment_wrap_head p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + word-break: break-all; + padding-top: 6px; + color: #252B37; + cursor: default; + } + + + /*회원가입*/ + .terms_box { + margin-top: 64px; + } + + .info_txt { + color: #4D596F; + background: #F7F9FD; + border-radius: 8px; + padding: 12px; + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.2px; + text-align: left; + } + + .terms_box p { + font-size: 24px; + cursor: default; + } + + .join_info .info1 label { + width: 20%; + text-align: left; + } + + .join_info .info1 { + display: flex; + margin-top: 32px; + justify-content: start; + } + + .join_info .btn_application .common_btn_type_1 { + width: 220px; + cursor: pointer; + } + + .join_info .info1 .info_line { + display: flex; + width: 736px; + position: relative; + } + + .join_info .info1 .info_line .info_select { + width: 180px; + margin-left: 8px; + } + + .join_info .info1 .info_line .dash { + width: 17px; + display: inline-block; + text-align: center; + } + + .join_info .info1 .info_line .special_t { + width: 26px; + display: inline-block; + text-align: center; + } + + .join_info .info1 .info_line .common_input_type_1.w_input { + width: 588px; + } + + .join_info .info1 .info_line .input.w_hp1 select { + width: 149px; + } + + .join_info .info1 .info_line .input.w_hp2 input { + width: 197px; + } + + .join_info .info1 .btn_check { + position: absolute; + top: 0; + right: 0; + width: 140px; + } + + .join_info .info1 .certify_box .certify_time { + display: inline-block; + position: absolute; + right: 15px; + top: 11px; + z-index: 0; + font-size: 16px; + color: #E23A32; + font-family: 'Pretendard'; + font-weight: 700; + font-size: 14px; + line-height: 22px; + } + + /*회원가입 - 약관동의*/ + .total_wrap { + padding: 28px 28px 40px 28px; + margin-top: 24px; + } + + .top_info { + padding: 24px 32px 24px 32px; + margin-bottom: 32px; + } + + .top_info span { + font-size: 16px; + line-height: 24px; + } + + .total_wrap .inp_check.s_tit label { + font-size: 16px; + } + + .total_wrap .inp_check.b_tit label { + font-size: 18px; + } + + /*기관회원가입*/ + .agency_info .info1 { + display: flex; + margin-top: 32px; + justify-content: start; + position: relative; + } + + .agency_info .info1 label { + font-size: 16px; + font-weight: 700; + line-height: 24px; + width: 180px; + } + + .agency_info .info1 .info_line { + display: flex; + width: 588px; + justify-content: start; + } + + .agency_info .info1 .btn_check { + position: absolute; + top: 0; + right: 0; + width: 140px; + } + + .agency_info .info1 .info_line .inp_wd3 { + width: 184px; + } + + .agency_info .info1 .info_line .inp_wd4 { + width: 160px; + } + + .agency_info .info1 .info_line .inp_wd5 { + width: 210px; + } + + .agency_info .info1 .info_line .dash { + padding: 0 4px; + line-height: 40px; + width: 17px; + text-align: center; + } + + .agency_info .info1 .info_line .filebox .file_btn { + position: absolute; + top: 0; + right: 0; + width: 140px; + } + + .agency_info .info1 .info_line .filebox label { + padding: 0 20px; + line-height: 40px; + font-size: 18px; + font-weight: 400; + letter-spacing: -0.02em; + text-align: center; + } + + .agency_info .info1 .certify_box { + display: flex; + width: 100%; + } + + .list-dot { + margin-top: 8px; + width: 100%; + } + + .list-dot.list { + margin-top: 16px; + } + + .list-dot.list > p { + line-height: 30px; + } + + .list-dot.list > p::before { + top: 12px; + } + + /*아이디 찾기, 비밀번호 초기화*/ + .inp_radio label:before { + top: -6px; + } + + #wrap .inner.cs2 { + /* padding: 96px 120px; */ + padding: 40px 32px 64px 32px; + } + + #wrap .inner.inner_wh { + padding: 96px 120px; + } + + .tab_nav { + border-bottom: none; + margin-bottom: 103px; + + } + + .tab_nav.tab_bt { + margin-bottom: 0; + } + + .tab_nav.tabm { + margin-bottom: 64px; + } + + .tab_nav li { + position: relative; + border-top: 1px solid #e6e6e6; + border-left: 1px solid #e6e6e6; + border-right: 1px solid #e6e6e6; + border-bottom: 0 none; + background: #EDF1F7; + } + + .tab_nav li a { + border-bottom: 1px solid #140064; + font-weight: 400; + font-size: 20px; + padding: 18px 15px; + font-family: 'Pretendard'; + font-size: 20px; + cursor: pointer; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #3B4659; + } + + .sub_tab_nav { + padding-top: 0; + } + + .sub_tab_nav li:nth-child(2) { + margin-left: 42px; + } + + .tab_nav li.active a { + border-bottom: none; + background: #fff; + border-top: 1px solid #222; + border-right: 1px solid #222; + border-left: 1px solid #222; + font-family: 'Pretendard'; + cursor: pointer; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #140064; + } + + .tab_nav li.active { + border-bottom: 0 none; + } + + .inp_radio.radio_txt label { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 700; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + } + + .result_view { + padding-top: 0; + } + + .form_type .result_view .title { + font-family: 'Pretendard'; + font-size: 20px; + line-height: 26px; + text-align: center; + padding-top: 17px; + margin: 0 auto; + display: table-cell; + } + + .result_view li { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + } + + .result_view li span { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + text-align: center; + color: #066AE5; + } + + .result_view .result_info_box { + margin: 48px auto 0 auto; + width: 454px; + + } + + .result_view .result_info_box .infor { + font-size: 16px; + line-height: 24px; + text-align: center; + } + + .top_info2 { + font-family: 'Pretendard'; + font-size: 20px; + line-height: 30px; + text-align: center; + margin-bottom: 64px; + } + + .top_info2.m_btm { + margin-bottom: 64px; + } + + .top_info2 span { + font-family: 'Pretendard'; + font-size: 20px; + line-height: 30px; + text-align: center; + font-weight: normal; + } + + .top_info3 { + font-family: 'Pretendard'; + font-size: 24px; + line-height: 30px; + text-align: center; + margin-bottom: 40px; + } + + .top_info3 span { + font-family: 'Pretendard'; + font-size: 24px; + line-height: 30px; + text-align: center; + } + + .radio_tab_nav.tabm { + padding: 0 0 32px 0; + } + + .radio_tab_nav li:nth-child(2) { + padding-left: 56px; + } + + + .custom_select { + height: 48px; + } + + .custom_select .select_items li { + font-size: 16px; + } + + + /* faq */ + .box-brandInfo ul li .box-ct:before { + left: 32px; + } + + .box-brandInfo > ul > li > a { + padding: 24px 45px 24px 15px; + } + + .box-brandInfo > ul > li > a:after { + top: 24px; + right: 24px; + } + + .box-brandInfo li a:before { + top: 16px; + left: 20px; + } + + .box-brandInfo.faq .inner-ct p { + margin-left: 80px; + } + + .box-brandInfo > ul > li > .box-ct .inner-ct:before { + top: 52px; + left: 20px; + } + + /* .box-brandInfo > ul > li > .box-ct:before{top: 42%;} */ + .box-brandInfo li:before { + top: 17px; + } + + .box-brandInfo ul li a { + padding: 24px 45px 24px 110px; + height: 72px; + } + + .box-brandInfo ul li a:before { + left: 32px; + } + + .box-brandInfo ul li a:after { + top: 50%; + right: 10px; + transform: translate(-50%, -50%); + } + + .box-brandInfo ul li.sel .box-ct { + padding-left: 80px; + } + + .box-brandInfo ul li .box-ct .list_txt .text1 { + border-bottom: 0 none; + } + + + /* popup */ + .content.pop { + margin-top: 0; + } + + .popup_wrap { + background-color: rgba(0, 0, 0, 0.6); + } + + .popup_wrap .pop_body { + padding: 24px 32px 32px 32px; + } + + .popup_wrap .pop_body .inner_txt .title h4 { + font-size: 24px; + line-height: 30px; + text-align: left; + color: #020616; + margin-bottom: 32px; + cursor: default; + } + + .popup_wrap .pop_body .contents > p { + font-size: 18px; + line-height: 24px; + text-align: center; + } + + /* .popup_wrap .pop_body .contents .con_txt span{ + font-size: 20px; + line-height: 26px; + } */ + .popup_wrap .pop_dim .inner { + width: 640px; + } + + .popup_wrap .pop_dim .inner.inner2 { + width: 640px; + } + + .popup_wrap .contents .inp_box { + margin: 15px 45px 0 45px; + } + + .popup_wrap .pop_body .pop_btn a { + width: 120px; + height: 56px; + line-height: 56px; + margin-right: 8px; + } + + .popup_wrap .pop_body .pop_btn.p_btn { + margin-top: 32px; + } + + .popup_wrap .contents .inp_box input::placeholder { + font-size: 18px; + } + + .popup_wrap .contents .inp_box .common_input_type_1 { + width: 500px; + height: 64px; + } + + .popup_wrap .pop_body .btn_close { + top: 27px; + right: 32px; + } + + .popup_wrap .pop_body .btn_close img { + width: 24px; + height: 24px; + cursor: pointer; + } + + .popup_wrap .pop_body .contents > .con_txt { + font-weight: 400; + font-size: 20px; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + margin-top: 32px; + } + + .popup_wrap .pop_body .contents > .con_txt2 { + font-weight: 400; + font-size: 18px; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + margin-top: 32px; + cursor: default; + } + + .popup_wrap .pop_body .contents > .con_txt .txt_bold { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + } + + .popup_wrap .pop_body .contents > .con_txt.txt_mail { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + } + + .popup_wrap .pop_body .contents > p span { + font-size: 20px; + line-height: 26px; + } + + .popup_wrap .pop_body .pop_btn { + width: 248px; + margin: 24px auto 0 auto; + } + + .popup_wrap .pop_body .contents .con_txt.l_text { + font-size: 18px; + line-height: 24px; + cursor: default; + } + + .popup_wrap .pop_body .contents .con_info_box p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + cursor: default; + } + + /*Error*/ + .wp_pt { + padding-top: 236px; + } + + .content.ct_pd { + padding-top: 0; + padding-bottom: 0; + } + + .error_wrap { + padding: 0; + } + + .content.con_wrap { + padding-top: 236px; + padding-bottom: 0; + } + + .error_wrap .error_logo img { + width: 206px; + height: 26px; + } + + .error_wrap .error_con .e_txt { + font-size: 32px; + font-weight: 700; + line-height: 40px; + letter-spacing: -0.02em; + } + + .error_wrap .error_con .e_icon { + margin: 24px auto 0 auto; + text-align: center; + } + + .error_wrap .error_con .e_txt2 { + font-size: 20px; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + } + + /*마이페이지*/ + .terms_box.title p { + padding-bottom: 16px; + } + + .sub_tab_nav li a { + padding: 0 15px 0 0; + } + + .board_search .search_txt.ser_api.w_inp { + width: 233px; + } + + .tb_conbox.top2 { + margin-top: 10px; + } + + .popup_total .popup-content .pop_text.pop_text2 { + margin-left: 76px; + cursor: default; + } + + .table_type2 .table_col.tb_bdtop thead th { + border-top: 2px solid #4D596F; + cursor: default; + } + + .board_search.sh_box { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkt-box-pack: justify; + -ms-flex-pack: justify; + justify-content: flex-start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + } + + .board_search .search_txt.ser_mypage { + position: relative; + height: 48px; + line-height: 48px; + border-radius: 6px; + text-align: left; + width: 100%; + max-width: 330px; + } + + .board_search .search_txt.ser_mypage .common_input_type_1 { + width: 330px; + height: 48px; + max-width: 100%; + } + + .con_title.mypage p { + font-size: 32px; + line-height: 46px; + } + + .con_title.mypage p span { + font-size: 40px; + line-height: 46px; + } + + .sub_title2 .title.icon_no:after { + display: none; + } + + #wrap .dash_bg { + background: 0 none; + } + + .form_type_box { + width: 500px; + margin: 0 auto; + } + + .form_type .info_box1.add { + justify-content: end; + } + + .form_type .info_box1.add2 { + justify-content: end; + width: 100%; + } + + .form_type .info_box1.add input { + width: 320px; + } + + .list-dot.info_text { + height: 70px; + margin: 20px auto 0 auto; + } + + .list-dot.info_text p { + padding: 24px 16px 24px 26px; + } + + .list-dot.info_text p:before { + top: 33px; + left: 16px; + } + + .tb_board_list .table_box .table th:nth-child(1) { + width: 80px; + cursor: default; + } + + .tb_board_list .table_box .table th:nth-child(2) { + width: 546px; + cursor: default; + } + + .tb_board_list .table_box .table th:nth-child(3) { + width: 290px; + cursor: default; + } + + .tb_board_list .table_box .table td, .table th { + padding: 15px 0; + } + + .tb_board_list .table_box .table tbody td { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + text-align: center; + cursor: default; + } + + .btn_wrap.bt_location { + /* margin-top: 8px; */ + margin-top: 20px; + } + + .btn_wrap.btn_set { + display: flex; + justify-content: center; + align-items: center; + } + + .btn_wrap.btn_set a { + margin-right: 4px; + } + + .btn_wrap.btn_set a.rt_none { + margin-right: 0; + } + + .user_top { + margin-top: 0; + } + + .terms_box.user_top2 { + margin-top: 64px; + } + + .terms_box.user_top3 { + margin-top: 64px; + } + + .btn_board3 > a { + width: 130px; + margin: 0 auto; + } + + .form_type .info1.info2 .api_box .btn_plus { + width: 135px; + height: 48px; + margin-left: 10px; + } + + .form_type .info1.info2 .api_box { + margin-left: 8px; + } + + .form_type .btn_application.application { + display: flex; + margin-top: 32px; + justify-content: center; + align-items: baseline; + } + + .withdrawal a { + font-size: 16px; + line-height: 24px; + cursor: pointer; + } + + .pagination.page_top { + margin-top: 32px; + } + + .form_type .info_line.info_w { + width: 554px; + } + + .custom_select.select_w { + width: 220px; + } + + .custom_select .select_selected.select_w { + width: 220px; + height: 48px; + } + + .custom_select .select_selected.h_inp { + height: 48px; + line-height: 48px; + } + + /* 달력 */ + .datepicker_wrapper { + position: absolute; + top: 82px; + right: 32px; + width: 240px; + margin-bottom: 0; + margin-top: 0; + } + + .datepicker_wrapper img { + position: absolute; + right: 10px; + top: 50%; + transform: translateY(-50%); + cursor: pointer; + } + + .datepicker_input { + height: 48px; + } + + .dashboard_box .api_use .use_box .tit_m { + padding-left: 0; + cursor: default; + } + + .daterangepicker { + padding: 64px 24px 24px 24px !important; + } + + .daterangepicker .drp-buttons { + padding: 16px 0 24px 0 !important; + } + + .daterangepicker .drp-buttons .btn { + margin-left: 8px; + font-weight: bold; + padding: 9px 16px; + background: #0114A7; + width: 120px !important; + height: 40px !important; + line-height: 24px; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + border-radius: 6px; + } + + .daterangepicker .drp-buttons .btn.btn-default { + background: #EDF1F7; + color: #0114A7; + } + + .daterangepicker .drp-calendar.right { + padding: 0 0 16px 0 !important; + } + + .daterangepicker .drp-calendar.left { + padding: 0 0 16px 0 !important; + } + + .daterangepicker .drp-calendar.right { + margin-left: 10px !important; + } + + .daterangepicker .drp-calendar.left { + margin-right: 10px !important; + } + + + /*API 포탈안내*/ + .api_content { + margin-top: 0; + } + + .api_portal_info1 { + background: url(/img/bg_portal_info01.png) no-repeat 0 0; + background-size: 100% 520px; + height: 520px; + padding: 148px 0 0 0; + } + + .api_portal_info1 .title { + font-size: 56px; + line-height: 56px; + width: 656px; + margin: 0 auto; + } + + .api_portal_info1 .title span { + display: inline-block; + cursor: default; + } + + .api_portal_info1 .title span:nth-child(2) { + padding-left: 156px; + cursor: default; + } + + .api_portal_info1 .detail { + font-family: 'Pretendard'; + cursor: default; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #140064; + margin: 0 auto; + padding-top: 24px; + } + + .api_portal_info2 { + background: url(/img/bg_portal_info04.png) no-repeat 0 0; + background-size: 100% 520px; + height: 520px; + margin: 0 auto; + text-align: center; + padding: 214px 0; + display: flex; + align-items: center; + justify-content: center; + } + + .api_portal_info2 .title_group { + display: contents; + } + + .api_portal_info2 img { + width: 97px; + height: 156px; + } + + .api_portal_info2 .detail { + font-size: 40px; + cursor: default; + font-weight: 100; + line-height: 46px; + text-align: left; + padding-left: 33px; + } + + .api_portal_info2 .detail span { + font-size: 40px; + cursor: default; + line-height: 46px; + } + + .api_portal_info3 { + background: url(/img/bg_portal_info06.png) no-repeat 0 0; + background-size: 100% 489px; + height: 489px; + } + + .api_portal_info3 .title { + font-size: 48px; + line-height: 56px; + cursor: default; + width: 100%; + } + + .api_portal_info4 { + margin: 0 auto; + text-align: center; + padding: 34px 0 120px 0; + cursor: default; + display: flex; + align-items: center; + justify-content: center; + } + + .api_portal_info4 .title_group { + display: contents; + } + + .api_portal_info4 img { + width: 280px; + height: 366px; + } + + .api_portal_info4 .text_group { + padding-left: 32px; + } + + .api_portal_info4 .text_group .title { + font-family: 'Pretendard'; + font-size: 48px; + font-weight: 700; + line-height: 56px; + letter-spacing: -0.02em; + padding-top: 74px; + } + + .api_portal_info4 .text_group .detail { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: left; + } + + .detail_box { + display: flex; + clear: both; + margin: 0 auto; + text-align: center; + width: 779px; + position: relative; + justify-content: center; + } + + .detail_box .detail01 img:first-child { + position: absolute; + top: -46px; + left: -18px; + width: 118px; + height: 115px; + } + + .detail_box .detail01 img:last-child { + position: absolute; + top: 120px; + right: -104px; + z-index: 1; + width: 203px; + height: 186px; + } + + .detail_box .detail02 { + position: relative; + } + + .detail_box .detail02 img:first-child { + position: absolute; + top: -56px; + left: 257px; + width: 141px; + height: 141px; + } + + .api_guide_count { + padding: 56px 0; + } + + .api_portal_info3 .detail01 { + background: url(/img/bg_portal_sinfo03.png) no-repeat 0 0; + background-size: 100% 200px; + height: 200px; + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + cursor: default; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + padding: 74px 0; + margin-top: 46px; + width: 324px; + float: left; + } + + .api_portal_info3 .detail02 { + background: url(/img/bg_portal_sinfo04.png) no-repeat 0 0; + background-size: 100% 200px; + height: 200px; + font-family: 'Pretendard'; + cursor: default; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + padding: 74px 0; + width: 324px; + float: left; + margin-top: 93px; + margin-left: 26px; + } + + .api_guide_count .api_guide .title { + font-size: 40px; + line-height: 46px; + cursor: default; + text-align: left; + } + + .api_guide_count .api_guide .detail { + font-size: 18px; + cursor: default; + line-height: 24px; + text-align: left; + } + + .api_guide_count ul { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + margin-top: 32px; + } + + .api_guide_count li { + width: calc(50% - 16px); + margin: 0 0 16px 0; + padding: 32px 0; + border: 1px solid #C8D2E4; + text-align: center; + border-radius: 16px; + background: #fff; + box-sizing: border-box; + width: 482px; + } + + .api_guide_count li:nth-child(1) { + margin-top: 0; + } + + .api_guide_count li:nth-child(2) { + margin-right: 0; + } + + .api_guide_count li:nth-child(3) { + margin-bottom: 0; + } + + .api_guide_count li:nth-child(4) { + margin-right: 0; + margin-bottom: 0; + } + + .api_guide_count li .list_check p { + display: inline-block; + margin-left: 12px; + cursor: default; + } + + .api_guide_count li .list_check.check_no p { + margin-left: 0; + } + + .api_guide_count li .list_check p:after { + top: 2px; + cursor: default; + } + + .form_type .info1.info_mypage { + padding-top: 32px; + } + + .form_type .info1.info_mypage2 { + padding-top: 4px; + } + + .api_guide_count li .step { + width: 80px; + height: 32px; + cursor: default; + } + + /*이용약관, 개인정보처리방침*/ + .custom_select .select_selected { + font-size: 16px; + height: 48px; + line-height: 48px; + } + + .form_type .info1.ts_top { + padding-top: 32px; + } + + .form_type .info_line.ts_left { + justify-content: start; + } + + .form_type .info_line.ts_left .info_box1 { + width: 328px; + } + + .terms_contents { + display: block; + color: #252B37; + } + + .terms_contents.m_termst { + margin-top: 16px; + } + + .terms_contents h3 { + font-size: 18px; + } + + .terms_contents .ts_tit { + font-size: 16px; + line-height: 24px; + } + + .terms_contents .ts_tit2 { + font-size: 16px; + line-height: 24px; + margin-top: 20px; + } + + .terms_contents p { + font-size: 16px; + line-height: 24px; + } + + /* 팝업 */ + .popup_total .popup-content { + width: 640px; + padding: 24px 32px 32px 32px; + } + + .popup_total .popup-content.popup400 { + width: 400px; + padding: 24px 32px 32px 32px; + } + + .popup_total .popup-content h2 { + font-size: 24px; + line-height: 28px; + padding-bottom: 32px; + cursor: default; + } + + .popup_total .popup-content .pop_text { + font-size: 18px; + line-height: 24px; + padding: 24px 0 16px 0; + font-weight: 700; + cursor: default; + } + + #wrap .pop_text { + font-size: 18px; + line-height: 24px; + padding: 24px 0 16px 0; + font-weight: 700; + cursor: default; + } + + .popup_total .popup-content .btn_close { + position: absolute; + top: 27px; + right: 32px; + } + + .popup_total .popup-content .btn_close img { + width: 24px; + height: 24px; + cursor: pointer; + } + + .popup_total .pop_btnbox button { + font-size: 16px; + line-height: 24px; + } + + .popup_total .popup_button_gray { + width: 120px; + height: 56px; + background: #EDF1F7; + color: #0114A7; + border: none; + cursor: pointer; + margin-right: 2px; + } + + .popup_total .popup_button_blue { + width: 120px; + height: 56px; + background: #0114A7; + color: #fff; + border: none; + cursor: pointer; + margin-left: 2px; + } + + .popup_total .inner_button { + margin-left: 0; + } + + .popup_total .popup-content .pop_btnbox { + margin-top: 24px; + } + + .popup-content .application_box .title { + font-size: 18px; + font-weight: 700; + line-height: 24px; + cursor: default; + } + + .popup-content .application_box .title_box { + width: 384px; + } + + /*main slick*/ + .slider-container { + max-width: 100%; + overflow: hidden; + margin: 0 auto; + } + + .slider-container .slick_txt { + margin: 0 150px; + top: 100px; + } + + /*transform: translate(0px, 19%);*/ + .slider-container .slick_txt p { + font-size: 56px; + font-weight: 100; + line-height: 64px; + } + + .slider-container .slick_txt p span { + font-size: 56px; + line-height: 64px; + } + + .slider-container .slick-prev, + .slider-container .slick-next { + display: block !important; + position: absolute; + top: 198px; + transform: translateY(-50%); + z-index: 1; + font-size: 0; + background: transparent; + cursor: pointer; + width: 56px; + height: 56px; + } + + .slider-container .slick-dots { + position: absolute; + top: 414px; + left: 150px; + display: flex !important; + list-style: none; + padding: 0; + width: 10px; + height: 10px; + } + + .slick-dots li button { + font-size: 0; + line-height: 0; + display: block; + width: 6px; + height: 6px; + padding: 5px; + cursor: pointer; + color: transparent; + border: 0; + outline: none; + background: transparent; + } + + .slider-container .slick-dots button:before { + content: none; + } + + .slider-container .slick-prev { + top: 290px; + left: 10px; + background: url('/img/icon/icon_slick_prev.png') no-repeat center center; + background-size: contain; + width: 56px; + height: 56px; + } + + .slider-container .slick-next { + top: 290px; + right: 10px; + background: url('/img/icon/icon_slick_next.png') no-repeat center center; + background-size: contain; + width: 56px; + height: 56px; + } + + .search_type { + width: 720px; + margin: 0 auto; + } + + .search_type .search-container { + display: flex; + position: relative; + width: 100%; + margin: -40px 0; + } + + .search_type .search-box { + border: 4px solid #B6F23D; + border-radius: 40px; + outline: none; + padding: 10px 72px 10px 32px; + height: 80px; + font-size: 20px; + } + + .search_type .search-button { + width: 32px; + height: 32px; + background: url('/img/icon/icon_main_search2.png') no-repeat center center; + background-size: 32px 32px; + border: none; + border-radius: 0 20px 20px 0; + cursor: pointer; + position: absolute; + top: 24px; + right: 40px; + } + + /* input[type="text"].search-box{padding-left: 32px;padding-right:72px;font-size: 20px;height: 80px;} */ + .search-box::placeholder { + color: #8694B1; + font-size: 20px; + } + + .search-box::-webkit-input-placeholder { + color: #8694B1; + } + + /* Chrome/Opera/Safari */ + .main-container { + background: #fff; + margin-top: 0; + z-index: 1; + border-radius: 32px 32px 0 0; + } + + .main-container .hashtag ul { + padding: 0 16px; + margin: 72px auto 0 auto; + flex-wrap: wrap; + gap: 32px; + } + + .main-container .hashtag ul li { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 400; + line-height: 30px; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + } + + .main-container .main_con { + margin-top: 120px; + } + + .main-container .main_con .con_img { + margin: 16px auto 0 auto; + text-align: center; + } + + .main-container .main_con .con_img img { + width: 1280px; + height: 574px; + } + + .main-container .main_con .con_txt { + font-size: 20px; + line-height: 26px; + cursor: default; + text-align: center; + width: 896px; + margin: 72px auto 0 auto; + } + + .main-container .main_con .con_txt span { + font-size: 20px; + line-height: 26px; + cursor: default; + letter-spacing: -0.02em; + } + + .main_con .main_btn { + display: flex; + margin-top: 40px; + justify-content: center; + align-items: baseline; + } + + .main_con .main_btn a { + width: 300px; + height: 100px; + line-height: 100px; + text-decoration: none; + } + + .main_con .main_btn a span { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + margin-left: -20px; + } + + .main_con .main_btn a span:after { + top: 2px; + } + + .main_con .main_btn a.m_btn { + margin-left: 16px; + } + + #main_kw { + background: #EDF1F7; + } + + .main_keyword { + padding: 100px 150px 0 150px; + background: #fff; + } + + .main_keyword .no_date { + margin: 0 auto; + text-align: center; + padding-top: 241px; + } + + .main_keyword .no_date img { + width: 136px; + height: 136px; + } + + .main_keyword .no_date .text { + padding-bottom: 246px; + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: center; + color: #8694B1; + } + + .tiding_box { + padding: 49px 182px 64px 182px; + background: #fff; + clear: both; + } + + .tiding_box .api_type { + clear: both; + width: 916px; + margin: 0 auto; + } + + .api_tiding { + float: left; + padding-top: 15px; + } + + .api_tiding .api_tit h2 { + font-family: 'Pretendard'; + font-size: 32px; + font-weight: 700; + line-height: 40px; + cursor: default; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + } + + .api_tiding .api_tit .total_view { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + padding-top: 12px; + padding-bottom: 12px; + } + + .api_tiding .api_tiding_list { + width: 508px; + } + + .api_tiding .api_tiding_list li { + display: table; + padding: 32px 0; + border-bottom: 1px solid #E0E6F1; + } + + .api_tiding .api_tiding_list li p { + width: 508px; + font-size: 20px; + } + + .api_info { + float: right; + width: 360px; + padding-top: 15px; + } + + .api_info li { + margin-top: 14px; + padding: 10px; + height: 122px; + cursor: pointer; + position: relative; + } + + .api_info li p { + font-size: 24px; + line-height: 30px; + cursor: pointer; + } + + .api_info li span { + font-size: 16px; + padding-top: 4px; + display: inline-block; + } + + .api_info li:first-child { + margin-top: 0; + } + + .api_info_container { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + margin-top: 40px; + width: 980px; + margin: 40px auto 0 auto; + } + + .api_info_container.box_list { + justify-content: start; + } + + .api_info_container.box_list .api_box { + margin-left: 12px; + } + + .api_info_container.box_list .api_box:nth-child(4n+1) { + margin-left: 0; + } + + .api_info_container.box_list .api_box:nth-child(1) { + margin-left: 0; + } + + .api_info_container.mt_0 { + margin-top: 0; + } + + .ser_result { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + color: #000; + padding: 32px 32px 0 32px; + } + + .ser_result span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #020616; + } + + .main_keyword .api_tit { + width: 980px; + margin: 0 auto; + } + + .main_keyword .api_keyword { + margin: 0 auto; + padding-top: 48px; + } + + .main_keyword .api_tit h2 { + font-size: 32px; + line-height: 40px; + cursor: default; + } + + .main_keyword .api_keyword .keyword_list li a { + position: relative; + background: #fff; + border: 1px solid #C8D2E4; + display: inline-block; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 32px; + letter-spacing: -0.02em; + text-align: center; + color: #020616; + margin-top: 12px; + font-size: 20px; + line-height: 48px; + height: 48px; + border-radius: 24px; + padding: 0 24px; + } + + .main_keyword .api_tit .total_view { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #252B37; + text-decoration: underline; + padding-left: 24px; + display: inline-block; + padding-top: 11px; + } + + .api_keyword { + position: relative; + width: 980px; + } + + .keyword_list { + display: flex; + flex-wrap: wrap; /* 기본적으로 한 줄로 표시 */ + overflow: hidden; /* 가로 스크롤 없애기 */ + width: 898px; + padding: 0; + margin: 0; + height: 60px; + list-style-type: none; /* 기본 목록 스타일 제거 */ + transition: height 0.3s ease; /* 높이 전환 효과 */ + gap: 8px; + } + + .keyword_list.expanded { + + height: 100%; + } + + .main_keyword .api_keyword .keyword_list li a:hover { + background: #fff; + color: #020616; + border-radius: 24px; + border: 1px solid #C8D2E4; + } + + .main_keyword .api_keyword .keyword_list li a:focus { + color: #fff; + background: #0114A7; + text-decoration: none; + display: inline-block; + border-radius: 24px; + } + + .more_type { + position: absolute; + top: 59px; + right: 0; + } + + .more_type .showmore img { + width: 48px; + height: 48px; + } + + .api_info_box { + flex-basis: calc(25% - 16px); + margin-top: 0; + cursor: pointer; + box-shadow: 0px 10px 15px -3px #414E651A; + margin-left: 12px; + } + + .api_info_box { + flex-basis: calc(25% - 16px); + margin-top: 0; + cursor: pointer; + box-shadow: 0px 10px 15px -3px #414E651A; + margin-left: 12px; + } + + .api_info_container.box_list .api_info_box:nth-child(4n+1) { + margin-left: 0; + } + + .api_info_container.box_list .api_info_box:nth-child(n+5) { + margin-top: 10px; + } + + .api_info_box .api_list .txt1 { + font-size: 24px; + line-height: 30px; + width: 150px; + } + + .api_info_box .api_list .txt2 { + font-size: 16px; + line-height: 24px; + } + + .api_info_box .api_list { + height: 196px; + width: 150px; + } + + .api_info .img1 img { + position: absolute; + top: -15px; + right: 24px; + width: 110px; + height: 91px; + cursor: pointer; + z-index: 1; + } + + .api_info .img2 img { + position: absolute; + top: 8px; + right: -24px; + width: 110px; + height: 107px; + z-index: 1; + cursor: pointer; + } + + .api_info .img3 img { + position: absolute; + top: 38px; + right: 24px; + width: 110px; + height: 89px; + cursor: pointer; + } + + .api_count { + background: #fff; + height: 300px; + } + + .api_total_box { + background: url(/img/bg_api.png) no-repeat 0 0; + padding: 72px 60px; + border-radius: 40px; + margin: 0 auto 0 auto; + position: relative; + z-index: 1; + width: 980px; + overflow: hidden; + } + + .api_total_box .txt { + font-family: 'Pretendard'; + font-size: 32px; + font-weight: 400; + line-height: 40px; + cursor: default; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + margin-bottom: 24px; + } + + .api_total_box .txt em { + font-family: 'Pretendard'; + font-size: 32px; + font-weight: 700; + cursor: default; + line-height: 40px; + letter-spacing: -0.02em; + text-align: center; + color: #fff; + } + + .api_total li { + width: 252px; + padding-right: 0; + } + + .api_total li p { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + cursor: default; + line-height: 30px; + letter-spacing: -0.02em; + color: #fff; + } + + .api_total li span { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 400; + line-height: 24px; + cursor: default; + letter-spacing: -0.02em; + color: #fff; + } + + .api_total li img { + width: 72px; + height: 72px; + } + + .api_total .api_num { + display: inline-block; + text-align: left; + padding: 7px 16px; + } + + #main_bg { + height: 94px; + } + + .keyword_list .number { + position: absolute; + top: -10px; /* 항목 위쪽에 위치 */ + right: -5px; /* 항목 오른쪽에 위치 */ + background: #E23A32; + color: #fff; /* 텍스트 색상 (흰색) */ + border-radius: 16px; /* 원형 배경 */ + width: 34px; /* 숫자 배경 크기 */ + height: 26px; /* 숫자 배경 크기 */ + display: none; + justify-content: center; /* 숫자 중앙 정렬 */ + align-items: center; /* 숫자 중앙 정렬 */ + font-size: 14px; /* 숫자 크기 */ + font-weight: bold; /* 숫자 두껍게 표시 */ + } + + .keyword_list a:hover .number { + display: none; /* 마우스를 올렸을 때 숫자 표시 */ + } + + .keyword_list a:focus .number { + display: flex; /* 마우스를 올렸을 때 숫자 표시 */ + } + + /* common */ + /* .common_input_type_1:focus{font-size:16px;} */ + /* btn */ + .btn_search { + height: 48px; + padding: 0 20px 0 42px; + font-size: 16px; + line-height: 48px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_search2.png) no-repeat 20px center / 20px 20px; + background-size: 20px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border: 1px solid #EDF1F7; + border-radius: 6px; + } + + .btn_add { + height: 48px; + padding: 0 16px 0 32px; + font-size: 14px; + line-height: 24px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_plus.png) no-repeat 10px center / 16px 16px; + background-size: 16px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border: 1px solid #EDF1F7; + border-radius: 6px; + } + + .btn_add2 { + width: 133px; + height: 48px; + padding: 12px 0 12px 24px; + font-size: 16px; + line-height: 24px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_plus.png) no-repeat 20px center / 16px 16px; + background-size: 16px; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border: 1px solid #EDF1F7; + border-radius: 6px; + } + + .btn_key { + height: 48px; + padding: 0 16px 0 34px; + font-size: 14px; + line-height: 22px; + color: #0114A7; + background: #EDF1F7 url(/img/icon/icon_key.png) no-repeat 10px center / 16px 16px; + background-size: 16px; + background-position: 12px center; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 6px; + } + + .btn_del { + width: 72px; + height: 32px; + padding: 0 12px; + font-size: 14px; + line-height: 22px; + color: #E23A32; + background: #FFE5E0; + letter-spacing: -0.2px; + font-family: 'Pretendard'; + font-weight: 400; + border-radius: 4px; + } + + .btn_refresh { + height: 48px; + } + + /* PAGINATION */ + .pagination { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-top: 41px; + } + + .pagination a { + display: block; + width: 32px; + height: 32px; + font-size: 16px; + line-height: 32px; + margin: 0 3px; + font-family: 'Pretendard'; + font-weight: 400; + letter-spacing: -0.02em; + text-align: center; + color: #252B37; + } + + .pagination a.page-current { + width: 32px; + color: #0114A7; + border: 1px solid #E0E6F1; + font-weight: 700; + border-radius: 8px; + font-size: 16px; + line-height: 32px; + cursor: pointer; + } + + .pagination a.page-prev, .pagination a.page-next { + background: url("/img/icon/icon_page_arrow_l.png") no-repeat center; + background-size: 24px; + margin: 0 12px; + } + + .pagination a.page-next { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + } + + .pagination a.page-current.pc_current { + width: 24px; + color: #0114A7; + border: 1px solid #E0E6F1; + font-weight: 700; + border-radius: 4px; + font-size: 16px; + } + + .form_type .info_box1 .input .common_input_type_1.trash { + background: none; + border: 1px solid #E0E6F1; + } + + .form_type .info_box1 .input .common_input_type_1.trash::placeholder { + color: #8694B1; + } + + /* API */ + + .api_stit2 ul { + padding: 0 0 0 0; + } + + .api_stit2.api_dot ul li { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: left; + color: #140064; + position: relative; + padding-left: 12px; + } + + .api_stit2.api_dot ul li:after { + content: ''; + width: 6px; + height: 6px; + background: #140064; + border-radius: 50%; + position: absolute; + left: 0; + top: 8px; + } + + .box.pop_arrow p:nth-child(1) { + margin-bottom: 16px; + } + + .api_inner .api_box { + border: 1px solid #E0E6F1; + border-radius: 20px; + width: 220px; + } + + .api_inner .api_info_box { + margin-top: 20px; + } + + .api_inner .api_info_box:hover { + border: 4px solid #1728C4; + } + + .api_inner .api_info_box:nth-child(1) { + margin-top: 0; + } + + .api_inner .api_info_box:nth-child(2) { + margin-top: 0; + } + + .api_inner .api_info_box:nth-child(3) { + margin-top: 0; + } + + .api_inner .api_info_box:nth-child(4) { + margin-top: 0; + } + + .api_inner .api_keyword .keyword_list::after { + background: 0 none; + } + + .api_inner .api_keyword .keyword_list.grt::after { + background: 0 none; + } + + .board_search .search_txt.ser_api.w_inp2 { + width: 304px; + } + + .popup-content .application_box { + padding-top: 34px; + } + + .board_search.sh_box.top { + padding-top: 30px; + } + + .tb_conbox.top { + margin-top: 11px; + } + + .popup_total .popup-content .pop_text.l_text { + padding: 14px 0; + cursor: default; + } + + #wrap .pop_text.l_text { + padding: 14px 0; + cursor: default; + } + + .popup_total .popup-content .pop_text.l_text.p_pop { + padding: 32px 0 16px 0; + cursor: default; + } + + .popup_total .popup-content .pop_textbox.p_pop2 { + padding-top: 0; + cursor: default; + } + + .board_search .search_txt.ser_api { + position: relative; + height: 48px; + line-height: 48px; + border-radius: 6px; + text-align: left; + width: 220px; + max-width: 330px; + padding-left: 12px; + } + + .board_search .search_txt.ser_api2 { + padding-left: 28px; + } + + .board_search .search_txt.ser_api .common_input_type_1 { + width: 100%; + } + + .popup_total .popup-content .pop_text.pop_text3 { + margin-left: 76px; + margin-top: -10px; + cursor: default; + } + + #wrap .api_inner { + padding: 24px 0 56px 0; + } + + /* .sub_title4{padding-top: 56px;} */ + .sub_title4 { + padding: 56px 0 0 0; + } + + .sub_title4 h2 { + font-family: 'Pretendard'; + font-size: 32px; + font-weight: 700; + line-height: 40px; + letter-spacing: -0.02em; + text-align: left; + color: #000; + } + + .sub_title4 .infotxt { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + margin-top: 4px; + cursor: default; + } + + .sub_title4 .title { + position: relative; + z-index: 1; + cursor: default; + } + + .sub_title4 .title:after { + content: ''; + display: block; + clear: both; + background: #B6F23D; + width: 28px; + height: 28px; + position: absolute; + top: 0; + left: -11px; + border-radius: 50%; + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + z-index: -1; + cursor: default; + } + + .content_wrap.w_api { + /* width: 1564px; */ + width: 100%; + max-width: 1644px; + padding: 0 40px; + } + + .api_service_type .service_txt { + position: absolute; + top: 57px; + left: 50px; + } + + .api_service_type .service_txt p { + font-family: 'Pretendard'; + cursor: default; + font-size: 32px; + font-weight: 700; + line-height: 40px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; + } + + .api_service_type .service_txt span { + font-family: 'Pretendard'; + cursor: default; + font-size: 16px; + font-weight: 100; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #FFFFFFB2; + } + + .api_service_type { + position: relative; + margin-top: 56px; + background-color: #1728C4; + border-radius: 24px; + } + + .api_service_type img { + width: 100%; + height: 240px; + border-radius: 24px; + max-width: 980px; + } + + .api_inner .main_keyword { + border-radius: 16px; + } + + /* .api_inner .api_info_box{ + margin-top: 0; + } */ + .search_type2 { + padding-top: 48px; + } + + .search_type2 .search-box2 { + padding: 10px; + font-size: 20px; + border: 2px solid #0114A7; + border-radius: 40px; + outline: none; + width: 660px; + height: 80px; + text-indent: 40px; + } + + .search_type2 .search-button2 { + width: 32px; + height: 32px; + background: url('/img/icon/icon_main_search2.png') no-repeat center center; + background-size: 32px 32px; + border: none; + border-radius: 0 20px 20px 0; + cursor: pointer; + position: absolute; + top: 24px; + right: 200px; + } + + .api_inner .main_keyword .api_keyword { + padding: 56px 32px 0 32px; + width: 980px; + } + + .api_inner .api_keyword .keyword_list { + width: 834px; + display: flex; + flex-wrap: wrap; + overflow: hidden; + padding: 0; + margin: 0; + height: 60px; + list-style-type: none; + transition: height 0.3s ease; + gap: 1px; + } + + .api_inner .api_keyword .keyword_list.expanded { + + height: 100%; + } + + .api_inner .api_keyword .more_type { + position: absolute; + top: 66px; + right: 32px; + } + + .api_inner .api_keyword { + height: 100%; + } + + .api_inner .main_keyword .api_info_container { + padding: 0 32px 64px 32px; + } + + .popup-content .infor { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + padding: 32px 0 0 10px; + } + + .popup-content .infor.top { + padding-top: 12px; + } + + + .lnb { + display: block; /* PC에서는 LNB 표시 */ + width: 276px; + background-color: #fff; + padding: 20px; + position: fixed; + left: 0; + top: 60px; /* 헤더 높이에 따라 조정 */ + bottom: 0; + overflow-y: auto; /* 콘텐츠가 많을 경우 스크롤 추가 */ + } + + .lnb ul { + margin-top: 105px; + } + + .lnb .lnb_list_nav { + display: none; + } + + .lnb .lnb_list_nav li { + padding: 4px 0; + } + + .lnb ul li a { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #020616; + } + + .lnb > nav > ul > li.on .lnb_list_nav { + display: block; + margin-top: 4px; + } + + .lnb > nav > ul > li.on .lnb_list_nav a { + position: relative; + padding-left: 20px; + } + + .lnb > nav > ul > li.on .lnb_list_nav a:before { + content: ''; + width: 4px; + height: 4px; + background: #4D596F; + border-radius: 50%; + position: absolute; + left: 8px; + top: 5px; + } + + .lnb .lnb_list_nav a { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .content.api_con { + padding-left: 276px; /* LNB 너비 + 여백 */ + } + + .lnb nav .lnb_list_type > li > a { + position: relative; + display: block; + border-bottom: 1px solid #E0E6F1; + padding: 16px 0; + } + + .lnb nav .lnb_list_type > li > a::after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_api_arrow.png); + background-size: 24px 24px; + background-repeat: no-repeat; + width: 24px; + height: 24px; + position: absolute; + top: 16px; + right: 0; + } + + .lnb nav .lnb_list_type > li.on > a::after { + background-image: url(/img/icon/icon_api_arrow_sel.png); + } + + .api_stit h3 { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + cursor: default; + } + + .api_stit ul { + background: #F7F9FD; + padding: 24px 26px 24px 26px; + margin-top: 16px; + border-radius: 8px; + } + + .api_stit ul .tit.m_top { + margin-top: 0; + } + + .api_stit.stit ul { + padding: 24px 32px 24px 32px; + } + + .api_stit .tb_top { + margin-top: 48px; + } + + .api_stit.api_dot ul li p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + cursor: default; + } + + .api_stit.api_star ul li p { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .api_stit.api_star ul li span { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .api_stit.stit ul li .dash li { + margin-top: 0; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .api_stit.stit { + margin-top: 80px; + overflow: hidden; + } + + .api_table.api_tb { + border-top: 2px solid #252B37; + margin-top: 10px; + width: 50%; + float: left; + } + + .api_stit.stit .api_data { + display: flex; + float: right; + width: 47%; + padding: 0; + height: 392px; + } + + .api_stit .api_data .data_lt { + margin: auto 0; + padding: 0 40px; + } + + .api_data dl { + position: relative; + padding: 8px 0; + } + + .api_data dl dt { + padding: 8px 0; + top: 0; + } + + .api_stit.api_sc { + margin-top: 48px; + } + + .api_stit.api_sc2 { + margin-top: 0; + } + + .api_stit.api_sc3 { + /* margin-top: 40px; */ + margin-top: 24px; + } + + .api_stit.api_sc4 { + margin-top: 48px; + } + + .api_stit.api_sc4_1 { + margin-top: 24px; + } + + .api_stit.api_sc5 { + margin-top: 0; + } + + .api_stit.api_sc ul li .tit { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: left; + color: #140064; + position: relative; + } + + .api_stit.api_sc ul li .tit:after { + content: ''; + width: 6px; + height: 6px; + background: #140064; + border-radius: 50%; + position: absolute; + left: 0; + top: 8px; + } + + .api_stit.api_sc ul li .tit span { + padding-left: 4px; + } + + .api_stit .api_sauce { + background: #252B37; + padding: 32px 40px; + margin-top: 8px; + border-radius: 12px; + /* height: 658px; */ + min-height: 100%; + } + + .api_stit .api_table.tb_col tbody td { + padding: 21px 0; + } + + .api_btn { + margin-top: 60px; + display: flex; + justify-content: center; + align-items: center; + } + + .api_btn a { + width: 180px; + height: 72px; + line-height: 72px; + border-radius: 12px; + } + + .api_btn a.gray { + height: 72px; + line-height: 72px; + border-radius: 12px; + font-size: 20px; + } + + .api_line { + border-top: 1px solid #67748E; + margin: 64px 0; + } + + .api_table { + margin-top: 8px; + width: 100%; + text-align: center; + table-layout: auto; + } + + .api_table.m_top { + margin-top: 0; + } + + .api_tabs.m_tabs { + margin-top: 48px; + } + + .api_tabs .api_nav { + margin-bottom: 24px; + } + + .api_tabs .api_nav li { + position: relative; + border-top: 1px solid #C8D2E4; + /* border-left: 1px solid #C8D2E4; */ + border-right: 1px solid #C8D2E4; + background: #EDF1F7; + } + + .api_tabs .api_nav li a { + border-bottom: 1px solid #140064; + border-left: 1px solid #C8D2E4; + font-weight: 400; + font-size: 20px; + padding: 18px 15px; + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #3B4659; + } + + .api_tabs .api_nav li a span { + display: inline-block; + } + + .api_tabs .api_nav li.active a { + border-bottom: none; + background: #fff; + border-top: 1px solid #140064; + border-right: 1px solid #140064; + border-left: 1px solid #140064; + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 26px; + letter-spacing: -0.02em; + text-align: center; + color: #140064; + } + + .api_stit.structure_box img { + width: 100%; + } + + .api_stit.structure_box .structure_img { + margin-top: 80px; + } + + /* 마이페이지 */ + .withdrawal { + margin-top: 56px; + } + + .suv_ck ul li a:after { + width: 24px; + height: 24px; + background-size: 24px 24px; + } + + .form_type .info_box1 .key_box { + padding: 20px 16px; + height: 88px; + } + + .dashboard_box { + box-shadow: none; + } + + .popup_total .popup-content .pop_text.l_text2 { + padding: 26px 0 0 0; + cursor: default; + } + + #wrap .pop_text.l_text2 { + padding: 26px 0 0 0; + cursor: default; + } + + .board_search.sh_box.top2 { + padding-top: 24px; + } + + .popup_total .popup-content.pop_w { + width: 1000px; + } + + .popup_total .popup-content.pop_w2 { + width: 1000px; + } + + .tb_conbox { + display: flex; + justify-content: center; + align-items: flex-start; + } + + .box.table_type2 { + width: 430px; + align-self: flex-start; + } + + .box.pop_arrow { + width: 76px; + display: flex; + justify-content: center; + align-items: center; + margin: auto; + } + + .box { + height: 100%; + } + + .table_type2.top_type { + margin-top: 0; + overflow-y: auto; + height: 384px; + } + + .dashboard_content .month_date { + margin-bottom: 4px; + cursor: default; + } + + .dashboard_box2 .table_type { + overflow-x: auto; + margin-top: 12px; + } + + .dashboard_box2 .table_type.api_tb .table_col { + border-top: 2px solid #4D596F; + } + + .dashboard_box2.i_cs { + padding: 40px 32px 64px 32px; + position: relative; + } + + .dashboard_content { + overflow: hidden; + position: relative; + padding: 0; + width: 980px; + margin-top: 56px; + } + + .dashboard_box { + height: 200px; + padding: 28px 32px; + display: inline-block; + } + + .dashboard_box.bd_box { + width: 978px; + float: left; + } + + .dashboard_box.bd_box1 { + width: 190px; + float: left; + } + + .dashboard_box.bd_box2 { + width: 558px; + float: left; + margin-left: 16px; + margin-right: 16px; + } + + .dashboard_box.bd_box3 { + width: 200px; + float: left; + } + + .dashboard_box .icon1 .tit { + font-family: 'Pretendard'; + font-size: 18px; + cursor: default; + } + + .dashboard_box .num { + display: inline-block; + padding-top: 50px; + text-align: center; + margin: 0 auto; + width: 100%; + font-size: 18px; + line-height: 24px; + cursor: default; + + } + + .dashboard_box .num span { + font-size: 40px; + font-weight: 700; + line-height: 46px; + padding-left: 15px; + } + + .dashboard_box .api_use { + display: inline-block; + padding-top: 32px; + } + + .dashboard_box .api_use ul { + display: flex; + } + + .dashboard_box .api_use ul li{ + flex: 1; + } + + .dashboard_box .api_use li { + display: inline-block; + border-right: 1px solid #E0E6F1; + padding: 0 18px; + width: 161px; + margin-top: 0; + cursor: default; + } + + .dashboard_box .api_use li:first-child { + padding-left: 0; + cursor: default; + } + + .dashboard_box .api_use li:last-child { + border-right: none; + padding-right: 0; + cursor: default; + } + + .dashboard_box .api_use li:first-child { + margin-top: 0; + cursor: default; + } + + .dashboard_box .api_use .use_box { + display: inline; + } + + .dashboard_box .api_use .use_box .tit_m { + line-height: 30px; + cursor: default; + } + + .dashboard_box .api_use .use_box .num_m { + display: table; + cursor: default; + } + + .dashboard_box2 .form_type .info1.w220 { + width: 220px; + } + + .dashboard_box2 h3 { + font-size: 24px; + line-height: 30px; + text-align: left; + cursor: default; + } + + /*margin-bottom: 16px;*/ + .tab_type .tab_link { + top: 106px; + right: 34px; + } + + .tab_type .tab_link li { + font-size: 18px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + } + + .tab_type .tab_link li.active { + font-size: 18px; + } + + .api_line { + border-top: 1px solid #67748E; + margin: 64px 0; + } + + .btn_inventory.btn_top { + margin-top: 32px; + } + + .btn_inventory.btn_mtop { + margin-top: 64px; + } + + .btn_inventory a { + margin: 0 auto; + width: 180px; + height: 72px; + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 400; + line-height: 72px; + letter-spacing: -0.02em; + text-align: center; + border-radius: 12px; + } + + .dashboard_box .api_use_num li { + padding: 6px 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + cursor: default; + } + + .tb_board_list.ip_list .table_box .table thead th { + height: 48px; + padding: 0 16px; + } + + .tb_board_list.ip_list .table_box .table tbody td { + height: 64px; + } + + /* swagger */ + .swagger_infor { + background: #F7F9FD; + } + + .swagger_infor .text { + padding: 24px 16px 24px 32px; + cursor: default; + } + + .swagger_infor .text::after { + top: 27px; + left: 16px; + cursor: default; + } + + + + /* 2024-11-25 수정 */ + .api_info_box:hover { + padding: 28px 8px; + background-color: #1728C4; + color: #fff; + } + + .api_info_box:hover .txt1, + .api_info_box:hover .txt2 { + color: #fff; + } + + .api_info_box .txt1:hover { + color: #fff !important; + } + + .api_info_box .api_list { + max-width: calc(100% - 60px); + margin-left: 12px; + width: 150px; + } + + .api_info_box .api_img img { + width: 40px; + height: 40px; + transition: content 0.3s; + } + + .api_info_box { + padding: 28px 8px; + } + + .api_info_box .txt1:hover { + color: #fff !important; + } + +} + + +@media all and (min-width: 1920px) { + /* navigation */ + #navigation { + background: #17008C; + width: 100%; + height: 66px; + justify-content: center; + align-items: center; + display: flex; + } + + .navigation { + display: block; + position: relative; + z-index: 100; + background: #64738b; + border: solid rgba(255, 255, 255, 0.2); + border-width: 1px 0; + justify-content: center; + align-items: center; + } + + .navigation.fixed { + position: fixed; + top: 0; + width: 100%; + border-top: 0; + } + + .navigation-area { + margin: 0 276px !important; + width: 980px; + display: flex; + max-width: 100%; + } + + .navigation-area.api_navi { + margin: 0 276px; + width: 1920px; + } + + /* common */ + /* readonly 스타일 */ + .common_input_type_1.input-readonly { + background-color: #f8f9fa !important; + cursor: default; + pointer-events: none !important; + } + + /* w_inp 클래스를 가진 요소에 대한 readonly 스타일 */ + .common_input_type_1.w_inp.input-readonly { + background-color: #f8f9fa !important; + cursor: default; + pointer-events: none !important; + } + + /* w_inp2 클래스를 가진 요소에 대한 readonly 스타일 */ + .common_input_type_1.w_inp2.input-readonly { + background-color: #f8f9fa !important; + cursor: default; + pointer-events: none !important; + } + + .common_input_type_1 { + height: 64px; + font-size: 16px; + line-height: 64px; + } + + .common_input_type_1.w_inp { + width: 52%; + } + + .common_input_type_1.w_inp2 { + width: 51%; + } + + .common_input_type_1.w_inp3 { + width: 197px; + } + + .common_input_type_1.w_inp4 { + width: 100%; + } + + .common_input_type_1.w_inp5 { + width: 184px; + } + + .common_input_type_1.w_inp6 { + width: 160px; + } + + .common_input_type_1.w_inp7 { + width: 210px; + } + + .common_input_type_1.h_inp { + height: 64px; + } + + .common_input_type_1.h_inp::placeholder { + font-size: 16px; + } + + .common_input_type_1::placeholder, + .common_selectType::placeholder { + border: 0; + font-size: 16px !important; + color: #8694B1; + height: 64px; + line-height: 64px; + position: relative; + top: 0; + } + + .common_input_type_1:focus, + .common-select-type:focus { + background: #E0E6F1; + border: 1px solid #E0E6F1; + font-size: 16px; + letter-spacing: -0.02em; + outline: none; + height: 64px; + line-height: 64px; + color: #252B37; + } + + .common_input_type_1.type-1:focus, + .common-select-type.type-1:focus { + background: #fff; + } + + /*btn*/ + .common_btn_type_1 { + border-radius: 12px; + font-size: 20px; + cursor: pointer; + } + + /* formtype */ + .form_type .info1 .info_line.info_add { + display: block; + } + + .form_type .info_line .btn_check { + width: 140px; + margin-left: 8px; + margin-top: 0; + z-index: 0; + } + + .form_type .info_box1.info_add2 { + display: inline-flex; + width: 100%; + } + + .filebox { + width: 100%; + max-width: 584px; + } + + .m-only { + display: none !important; + } + + .pc-only { + display: block !important; + } + + #lnb_type { + position: relative; + height: 100%; + display: flex; + flex-wrap: wrap; + } + + /* API */ + .api_tabs .api_nav { + margin-bottom: 24px; + } + + .box.pop_arrow p:nth-child(1) { + margin-bottom: 16px; + } + + .api_inner .api_info_box { + margin-top: 20px; + } + + .api_inner .api_info_box:nth-child(1) { + margin-top: 0; + } + + .api_inner .api_info_box:nth-child(2) { + margin-top: 0; + } + + .api_inner .api_info_box:nth-child(3) { + margin-top: 0; + } + + .api_inner .api_info_box:nth-child(4) { + margin-top: 0; + } + + .api_inner .api_keyword .keyword_list::after { + background: 0 none; + } + + .api_inner .api_keyword .keyword_list.grt::after { + background: 0 none; + } + + .tb_conbox.top { + margin-top: 11px; + } + + .board_search .search_txt.ser_api.w_inp2 { + width: 304px; + } + + .board_search.sh_box.top { + padding-top: 30px; + } + + .popup-content .application_box { + padding-top: 34px; + } + + #wrap .inner2.i_cs { + padding: 40px 32px 64px 32px; + } + + #wrap .api_inner { + padding: 24px 0 56px 0; + } + + #wrap .inner2 { + padding: 166px 32px 166px 32px; + background: #fff; + border-radius: 16px; + margin-top: 16px; + } + + .sub_title4 { + padding-top: 56px; + } + + .sub_title4 h2 { + font-family: 'Pretendard'; + font-size: 32px; + font-weight: 700; + line-height: 40px; + letter-spacing: -0.02em; + text-align: left; + color: #000; + } + + .sub_title4 .infotxt { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + margin-top: 4px; + cursor: default; + } + + .sub_title4 .title { + position: relative; + z-index: 1; + cursor: default; + } + + .sub_title4 .title:after { + content: ''; + display: block; + clear: both; + background: #B6F23D; + width: 28px; + height: 28px; + position: absolute; + top: 0; + left: -11px; + border-radius: 50%; + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + z-index: -1; + cursor: default; + } + + .content_wrap.w_api { + /* width: 1564px; */ + width: 100%; + max-width: 1644px; + padding: 0 40px; + } + + .api_service_type .service_txt { + position: absolute; + top: 57px; + left: 50px; + } + + .api_service_type .service_txt p { + font-family: 'Pretendard'; + font-size: 32px; + cursor: default; + font-weight: 700; + line-height: 40px; + letter-spacing: -0.02em; + text-align: left; + color: #fff; + } + + .api_service_type .service_txt span { + font-family: 'Pretendard'; + font-size: 16px; + cursor: default; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #FFFFFFB2; + } + + .api_service_type { + position: relative; + margin-top: 56px; + background-color: #1728C4; + border-radius: 24px; + } + + .api_service_type img { + width: 100%; + max-width: 980px; + height: 240px; + border-radius: 24px; + } + + .api_inner .main_keyword { + border-radius: 16px; + } + + .api_inner .api_info_box { + margin-top: 0; + } + + .search_type2 { + padding-top: 48px; + } + + .search_type2 .search-box2 { + padding: 10px; + font-size: 20px; + border: 2px solid #0114A7; + border-radius: 40px; + outline: none; + width: 660px; + height: 80px; + text-indent: 40px; + } + + .search_type2 .search-box2::placeholder { + font-size: 20px; + color: #8694B1; + } + + .search_type2 .search-button2 { + width: 32px; + height: 32px; + background: url('/img/icon/icon_main_search2.png') no-repeat center center; + background-size: 32px 32px; + border: none; + border-radius: 0 20px 20px 0; + cursor: pointer; + position: absolute; + top: 24px; + right: 200px; + } + + .api_inner .api_info_box { + margin-top: 20px; + } + + .api_inner .main_keyword .api_keyword { + padding: 56px 32px 0 32px; + width: 980px; + } + + .api_inner .api_keyword .keyword_list { + width: 834px; + display: flex; + flex-wrap: wrap; + overflow: hidden; + padding: 0; + margin: 0; + height: 60px; + list-style-type: none; + transition: height 0.3s ease; + gap: 1px; + } + + .api_inner .api_keyword .keyword_list.expanded { + + height: 100%; + } + + .api_inner .api_keyword .more_type { + position: absolute; + top: 66px; + right: 32px; + } + + .api_inner .api_keyword { + height: 100%; + } + + .api_inner .main_keyword .api_info_container { + padding: 0 32px 64px 32px; + margin: 0 auto; + } + + .api_info_container.mt_0 { + margin-top: 0; + } + + .ser_result { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + color: #000; + } + + .ser_result span { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #020616; + } + + .lnb { + display: block; /* PC에서는 LNB 표시 */ + width: 276px; + background-color: #fff; + padding: 20px; + position: fixed; + left: 0; + top: 60px; /* 헤더 높이에 따라 조정 */ + bottom: 0; + overflow-y: auto; /* 콘텐츠가 많을 경우 스크롤 추가 */ + } + + .lnb ul { + margin-top: 105px; + } + + .lnb .lnb_list_nav { + display: none; + } + + .lnb .lnb_list_nav li { + padding: 4px 0; + } + + .lnb .lnb_list_nav a { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .lnb ul li a { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 700; + line-height: 24px; + text-align: left; + color: #020616; + } + + .lnb > nav > ul > li.on .lnb_list_nav { + display: block; + margin-top: 4px; + } + + .lnb > nav > ul > li.on .lnb_list_nav a { + position: relative; + padding-left: 20px; + } + + .lnb > nav > ul > li.on .lnb_list_nav a:before { + content: ''; + width: 4px; + height: 4px; + background: #4D596F; + border-radius: 50%; + position: absolute; + left: 8px; + top: 5px; + } + + .content.api_con { + padding-left: 276px; /* LNB 너비 + 여백 */ + } + + .lnb nav .lnb_list_type > li > a { + position: relative; + display: block; + border-bottom: 1px solid #E0E6F1; + padding: 16px 0; + } + + .lnb nav .lnb_list_type > li > a::after { + content: ''; + display: block; + clear: both; + background-image: url(/img/icon/icon_api_arrow.png); + background-size: 24px 24px; + background-repeat: no-repeat; + width: 24px; + height: 24px; + position: absolute; + top: 16px; + right: 0; + } + + .lnb nav .lnb_list_type > li.on > a::after { + background-image: url(/img/icon/icon_api_arrow_sel.png); + } + + .api_stit h3 { + font-family: 'Pretendard'; + font-size: 24px; + font-weight: 700; + line-height: 30px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + cursor: default; + } + + .api_stit .infor { + font-family: 'Pretendard'; + font-size: 18px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #020616; + padding-top: 12px; + } + + .api_stit ul { + background: #F7F9FD; + padding: 24px 26px 24px 26px; + margin-top: 16px; + border-radius: 8px; + } + + .api_stit.stit ul { + padding: 24px 32px 24px 32px; + } + + .api_stit .tb_top { + margin-top: 48px; + } + + .api_stit.api_dot ul li p { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + cursor: default; + } + + .api_stit.api_star ul li p { + font-family: 'Pretendard'; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .api_stit.api_star ul li span { + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .api_stit.stit ul li .dash li { + margin-top: 0; + font-family: 'Pretendard'; + font-size: 14px; + font-weight: 400; + line-height: 22px; + letter-spacing: -0.02em; + text-align: left; + color: #4D596F; + } + + .api_stit.stit { + margin-top: 80px; + } + + .api_table.m_top { + margin-top: 0; + } + + .api_table.api_tb { + border-top: 2px solid #252B37; + margin-top: 10px; + width: 50%; + float: left; + } + + .api_stit.stit .api_data { + float: right; + width: 47%; + } + + .api_stit .api_data .data_lt { + margin: 100px 0; + height: 194px; + padding: 0 40px; + } + + .api_stit.api_sc { + /* margin-top: 80px; */ + margin-top: 48px; + } + + .api_stit.api_sc2 { + margin-top: 0; + } + + .api_stit.api_sc3 { + /* margin-top: 40px; */ + margin-top: 24px; + } + + .api_stit.api_sc4 { + margin-top: 48px; + } + + .api_stit.api_sc4_1 { + margin-top: 24px; + } + + .api_stit.api_sc5 { + margin-top: 0; + } + + .api_stit.api_sc ul li .tit { + font-family: 'Pretendard'; + font-size: 20px; + font-weight: 700; + line-height: 26px; + letter-spacing: -0.02em; + text-align: left; + color: #140064; + position: relative; + } + + .api_stit.api_sc ul li .tit:after { + content: ''; + width: 6px; + height: 6px; + background: #140064; + border-radius: 50%; + position: absolute; + left: 0; + top: 8px; + } + + .api_stit.api_sc ul li .tit span { + padding-left: 4px; + } + + .api_stit .api_sauce { + background: #252B37; + padding: 32px 40px; + margin-top: 8px; + border-radius: 12px; + /* height: 658px; */ + min-height: 100%; + } + + .api_btn { + margin-top: 60px; + display: flex; + justify-content: center; + align-items: center; + } + + .api_btn a { + width: 180px; + height: 72px; + line-height: 72px; + border-radius: 12px; + } + + .api_btn a.gray { + height: 72px; + line-height: 72px; + border-radius: 12px; + font-size: 20px; + } + + .api_table { + margin-top: 8px; + width: 100%; + text-align: center; + table-layout: auto; + } + + .api_tabs.m_tabs { + margin-top: 48px; + } + + .api_stit.structure_box img { + width: 100%; + } + + .api_stit.structure_box .structure_img { + margin-top: 80px; + } + + .api_stit .api_table.tb_col tbody td { + padding: 21px 0; + } + + .api_stit.stit .api_data { + display: flex; + float: right; + width: 47%; + padding: 0; + height: 392px; + } + + .api_stit .api_data .data_lt { + margin: auto 0; + padding: 0 40px; + } + + .api_data dl { + position: relative; + padding: 8px 0; + } + + .api_data dl dt { + padding: 8px 0; + top: 0; + } + +} diff --git a/src/main/resources/static/favicon_16px.png b/src/main/resources/static/favicon_16px.png new file mode 100644 index 0000000..1ef8c0d Binary files /dev/null and b/src/main/resources/static/favicon_16px.png differ diff --git a/src/main/resources/static/font/Pretendard-Bold.ttf b/src/main/resources/static/font/Pretendard-Bold.ttf new file mode 100644 index 0000000..7837ae5 Binary files /dev/null and b/src/main/resources/static/font/Pretendard-Bold.ttf differ diff --git a/src/main/resources/static/font/Pretendard-Bold.woff b/src/main/resources/static/font/Pretendard-Bold.woff new file mode 100644 index 0000000..7837ae5 Binary files /dev/null and b/src/main/resources/static/font/Pretendard-Bold.woff differ diff --git a/src/main/resources/static/font/Pretendard-Regular.ttf b/src/main/resources/static/font/Pretendard-Regular.ttf new file mode 100644 index 0000000..e3b3a35 Binary files /dev/null and b/src/main/resources/static/font/Pretendard-Regular.ttf differ diff --git a/src/main/resources/static/font/Pretendard-Regular.woff b/src/main/resources/static/font/Pretendard-Regular.woff new file mode 100644 index 0000000..e3b3a35 Binary files /dev/null and b/src/main/resources/static/font/Pretendard-Regular.woff differ diff --git a/src/main/resources/static/font/glyphicons-halflings-regular.svg b/src/main/resources/static/font/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..e3e2dc7 --- /dev/null +++ b/src/main/resources/static/font/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/font/glyphicons-halflings-regular.woff b/src/main/resources/static/font/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..8c54182 Binary files /dev/null and b/src/main/resources/static/font/glyphicons-halflings-regular.woff differ diff --git a/src/main/resources/static/font/summernote.eot b/src/main/resources/static/font/summernote.eot new file mode 100644 index 0000000..bd5e561 Binary files /dev/null and b/src/main/resources/static/font/summernote.eot differ diff --git a/src/main/resources/static/font/summernote.ttf b/src/main/resources/static/font/summernote.ttf new file mode 100644 index 0000000..4fc4e91 Binary files /dev/null and b/src/main/resources/static/font/summernote.ttf differ diff --git a/src/main/resources/static/font/summernote.woff b/src/main/resources/static/font/summernote.woff new file mode 100644 index 0000000..69cda61 Binary files /dev/null and b/src/main/resources/static/font/summernote.woff differ diff --git a/src/main/resources/static/font/summernote.woff2 b/src/main/resources/static/font/summernote.woff2 new file mode 100644 index 0000000..6758053 Binary files /dev/null and b/src/main/resources/static/font/summernote.woff2 differ diff --git a/src/main/resources/static/html/guide/.nojekyll b/src/main/resources/static/html/guide/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/static/html/guide/LICENSE b/src/main/resources/static/html/guide/LICENSE new file mode 100644 index 0000000..bec4d76 --- /dev/null +++ b/src/main/resources/static/html/guide/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 docsifyjs + +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. diff --git a/src/main/resources/static/html/guide/README.md b/src/main/resources/static/html/guide/README.md new file mode 100644 index 0000000..36077fa --- /dev/null +++ b/src/main/resources/static/html/guide/README.md @@ -0,0 +1,31 @@ +# 📚 APIM 개발자포탈 운영자 매뉴얼 + +## 🎯 목적 + +APIM 개발자포탈에 대한 사용자 매뉴얼입니다. 이 문서는 이용기관 사용자가 고객사가 제공하는 API 정보를 확인하고, APP을 등록하는 방법을 안내합니다. + +## 🌟 제품 특징 + +APIM은 외부 시스템 연계 API 정보 제공을 위한 플랫폼입니다. 다양한 API를 쉽게 관리하고 활용할 수 있습니다. + +## 🛠️ 제품 설치 + +APIM 제품 설치를 전문적으로 지원해 드립니다. 설치 과정에서 어려움이 없도록 도와드리겠습니다. + +## 📦 제공 항목 + +- 📘 사용자 매뉴얼 1부 +- 🧪 테스트 매뉴얼 1부 + +## 🛡️ 유지보수 정책 + +- ✅ 제품 설치 후 검수 완료일로부터 1년간 무상 유지보수 서비스 제공 +- 📅 무상 제공 기간 이후 별도 유지보수 계약에 따른 서비스 제공 +- 💻 사용자 매뉴얼 전자문서 제공 (요청 시 인쇄본 추가 제공 가능) + +## 📞 문의처 + +궁금한 점이 있으시면 언제든 연락 주세요! + +- **📱 전화:** 02-711-1545 +- **📧 이메일:** sales@eactive.co.krd \ No newline at end of file diff --git a/src/main/resources/static/html/guide/_sidebar.md b/src/main/resources/static/html/guide/_sidebar.md new file mode 100644 index 0000000..8c0719c --- /dev/null +++ b/src/main/resources/static/html/guide/_sidebar.md @@ -0,0 +1,4 @@ +- [Read Me](README) +- [시작하기](시작하기) +- [회원가입](회원가입) +- [개발자포탈](개발자포탈) \ No newline at end of file diff --git a/src/main/resources/static/html/guide/assets/admin_register_view.png b/src/main/resources/static/html/guide/assets/admin_register_view.png new file mode 100644 index 0000000..a19ee5c Binary files /dev/null and b/src/main/resources/static/html/guide/assets/admin_register_view.png differ diff --git a/src/main/resources/static/html/guide/docs/images/admin_register_view.png b/src/main/resources/static/html/guide/docs/images/admin_register_view.png new file mode 100644 index 0000000..a19ee5c Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/admin_register_view.png differ diff --git a/src/main/resources/static/html/guide/docs/images/agreements.png b/src/main/resources/static/html/guide/docs/images/agreements.png new file mode 100644 index 0000000..89a6dbc Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/agreements.png differ diff --git a/src/main/resources/static/html/guide/docs/images/api_detail_1.png b/src/main/resources/static/html/guide/docs/images/api_detail_1.png new file mode 100644 index 0000000..2eb33a2 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/api_detail_1.png differ diff --git a/src/main/resources/static/html/guide/docs/images/api_detail_2.png b/src/main/resources/static/html/guide/docs/images/api_detail_2.png new file mode 100644 index 0000000..532b069 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/api_detail_2.png differ diff --git a/src/main/resources/static/html/guide/docs/images/api_list.png b/src/main/resources/static/html/guide/docs/images/api_list.png new file mode 100644 index 0000000..6f31c12 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/api_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/api_mgmt_edit.png b/src/main/resources/static/html/guide/docs/images/api_mgmt_edit.png new file mode 100644 index 0000000..6093edf Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/api_mgmt_edit.png differ diff --git a/src/main/resources/static/html/guide/docs/images/api_mgmt_list.png b/src/main/resources/static/html/guide/docs/images/api_mgmt_list.png new file mode 100644 index 0000000..a8771ff Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/api_mgmt_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/api_mgmt_register.png b/src/main/resources/static/html/guide/docs/images/api_mgmt_register.png new file mode 100644 index 0000000..dc1fc37 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/api_mgmt_register.png differ diff --git a/src/main/resources/static/html/guide/docs/images/apikey_mgmt_edit.png b/src/main/resources/static/html/guide/docs/images/apikey_mgmt_edit.png new file mode 100644 index 0000000..ddb8d75 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/apikey_mgmt_edit.png differ diff --git a/src/main/resources/static/html/guide/docs/images/apikey_mgmt_list.png b/src/main/resources/static/html/guide/docs/images/apikey_mgmt_list.png new file mode 100644 index 0000000..eb3c730 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/apikey_mgmt_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/apikey_mgmt_register.png b/src/main/resources/static/html/guide/docs/images/apikey_mgmt_register.png new file mode 100644 index 0000000..806c7a2 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/apikey_mgmt_register.png differ diff --git a/src/main/resources/static/html/guide/docs/images/approval_detail.png b/src/main/resources/static/html/guide/docs/images/approval_detail.png new file mode 100644 index 0000000..d016139 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/approval_detail.png differ diff --git a/src/main/resources/static/html/guide/docs/images/approval_detail_user.png b/src/main/resources/static/html/guide/docs/images/approval_detail_user.png new file mode 100644 index 0000000..fdc25ba Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/approval_detail_user.png differ diff --git a/src/main/resources/static/html/guide/docs/images/approval_waiting.png b/src/main/resources/static/html/guide/docs/images/approval_waiting.png new file mode 100644 index 0000000..65d1b63 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/approval_waiting.png differ diff --git a/src/main/resources/static/html/guide/docs/images/article_mgmt_edit.png b/src/main/resources/static/html/guide/docs/images/article_mgmt_edit.png new file mode 100644 index 0000000..ddcd02d Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/article_mgmt_edit.png differ diff --git a/src/main/resources/static/html/guide/docs/images/article_mgmt_list.png b/src/main/resources/static/html/guide/docs/images/article_mgmt_list.png new file mode 100644 index 0000000..c44ee68 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/article_mgmt_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/article_mgmt_register.png b/src/main/resources/static/html/guide/docs/images/article_mgmt_register.png new file mode 100644 index 0000000..bc89754 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/article_mgmt_register.png differ diff --git a/src/main/resources/static/html/guide/docs/images/article_mgmt_view.png b/src/main/resources/static/html/guide/docs/images/article_mgmt_view.png new file mode 100644 index 0000000..b6b47cb Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/article_mgmt_view.png differ diff --git a/src/main/resources/static/html/guide/docs/images/board_mgmt_edit.png b/src/main/resources/static/html/guide/docs/images/board_mgmt_edit.png new file mode 100644 index 0000000..69b1a1c Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/board_mgmt_edit.png differ diff --git a/src/main/resources/static/html/guide/docs/images/board_mgmt_list.png b/src/main/resources/static/html/guide/docs/images/board_mgmt_list.png new file mode 100644 index 0000000..4b327a0 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/board_mgmt_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/board_mgmt_register.png b/src/main/resources/static/html/guide/docs/images/board_mgmt_register.png new file mode 100644 index 0000000..4f5773c Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/board_mgmt_register.png differ diff --git a/src/main/resources/static/html/guide/docs/images/email_template.png b/src/main/resources/static/html/guide/docs/images/email_template.png new file mode 100644 index 0000000..b475a5a Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/email_template.png differ diff --git a/src/main/resources/static/html/guide/docs/images/ent_user_edit.png b/src/main/resources/static/html/guide/docs/images/ent_user_edit.png new file mode 100644 index 0000000..a56fc77 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/ent_user_edit.png differ diff --git a/src/main/resources/static/html/guide/docs/images/ent_user_list.png b/src/main/resources/static/html/guide/docs/images/ent_user_list.png new file mode 100644 index 0000000..da3b7a8 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/ent_user_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/ent_user_register.png b/src/main/resources/static/html/guide/docs/images/ent_user_register.png new file mode 100644 index 0000000..2be857c Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/ent_user_register.png differ diff --git a/src/main/resources/static/html/guide/docs/images/faq_mgmt_edit.png b/src/main/resources/static/html/guide/docs/images/faq_mgmt_edit.png new file mode 100644 index 0000000..35bf26f Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/faq_mgmt_edit.png differ diff --git a/src/main/resources/static/html/guide/docs/images/faq_mgmt_list.png b/src/main/resources/static/html/guide/docs/images/faq_mgmt_list.png new file mode 100644 index 0000000..cccdae2 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/faq_mgmt_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/staff_list.png b/src/main/resources/static/html/guide/docs/images/staff_list.png new file mode 100644 index 0000000..4550d84 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/staff_list.png differ diff --git a/src/main/resources/static/html/guide/docs/images/staff_user_edit.png b/src/main/resources/static/html/guide/docs/images/staff_user_edit.png new file mode 100644 index 0000000..43f845f Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/staff_user_edit.png differ diff --git a/src/main/resources/static/html/guide/docs/images/staff_user_register.png b/src/main/resources/static/html/guide/docs/images/staff_user_register.png new file mode 100644 index 0000000..4550d84 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/staff_user_register.png differ diff --git a/src/main/resources/static/html/guide/docs/images/user_agreement.png b/src/main/resources/static/html/guide/docs/images/user_agreement.png new file mode 100644 index 0000000..d9faf96 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/user_agreement.png differ diff --git a/src/main/resources/static/html/guide/docs/images/user_register.png b/src/main/resources/static/html/guide/docs/images/user_register.png new file mode 100644 index 0000000..5f107e5 Binary files /dev/null and b/src/main/resources/static/html/guide/docs/images/user_register.png differ diff --git a/src/main/resources/static/html/guide/img.png b/src/main/resources/static/html/guide/img.png new file mode 100644 index 0000000..035d184 Binary files /dev/null and b/src/main/resources/static/html/guide/img.png differ diff --git a/src/main/resources/static/html/guide/img_1.png b/src/main/resources/static/html/guide/img_1.png new file mode 100644 index 0000000..d9cea0b Binary files /dev/null and b/src/main/resources/static/html/guide/img_1.png differ diff --git a/src/main/resources/static/html/guide/index.html b/src/main/resources/static/html/guide/index.html new file mode 100644 index 0000000..48e0e3a --- /dev/null +++ b/src/main/resources/static/html/guide/index.html @@ -0,0 +1,51 @@ + + + + + + + + + eAPIM Dev Portal Guide + + + + + + + + +

+ + + + + + + + + + + + diff --git a/src/main/resources/static/html/guide/개발자포탈.md b/src/main/resources/static/html/guide/개발자포탈.md new file mode 100644 index 0000000..12fd4ad --- /dev/null +++ b/src/main/resources/static/html/guide/개발자포탈.md @@ -0,0 +1,1174 @@ +# 개발자 포탈 사용 가이드 + +## 사용자 관리 + +1. 개요 + +- 내부 사용자 정보와 기업 사용자 정보를 관리한다. +- 기업 사용자 회원 가입을 위한 약관을 관리한다. +- 기업 사용자 회원 가입 기능을 제공한다. + +2. 구성 요소 + +- 내부 사용자 관리 +- 기업 사용자 관리 +- 기업 사용자 회원 가입 +- 약관 관리 + +### 내부 사용자 관리 + +1. 개요 + 포탈 운영을 위한 내부 사용자 정보를 관리한다. + +2. 구성 요소 + +- 내부 사용자 목록 +- 내부 사용자 등록 +- 내부 사용자 수정 + +#### 내부 사용자 목록 + +1. 개요 + +포탈에 등록된 내부 사용자 목록을 조회한다. + +2. 화면 캡쳐 + +![내부사용자 목록](docs/images/staff_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 내부 사용자 목록을 조회한다. +- 내부 사용자 목록은 페이징 처리되어 있다. +- 내부 사용자 정보 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 내부 사용자 목록을 조회한다. + - 삭제 버튼 : 선택된 사용자를 삭제한다. + - 등록 버튼 : 새로운 내부 사용자 등록화면으로 이동한다. +- 사용자 목록 + - ID + - 이름 + - 상태 + - 수정 버튼 : 선택된 사용자 수정화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : 사용자 관리 > 내부 사용자 관리를 클릭한다. +- 등록된 사용자 조회: 검색 조건 입력 후 조회 버튼을 클릭하여 사용자 목록을 조회한다. +- 신규 사용자 등록 : 등록 버튼을 클릭하여 신규 사용자를 등록한다. +- 기존 사용자 정보 수정 : 사용자 목록에서 수정 버튼을 클릭하여 기존 사용자 정보를 수정한다. +- 사용자 삭제 : 삭제할 사용자의 체크박스를 선택하고 삭제 버튼을 클릭하여 사용자를 삭제한다. + +#### 내부 사용자 등록 + +1. 개요 + +포탈에 새로운 내부 사용자를 등록한다. + +2. 화면 캡쳐 + ![내부 사용자 등록](docs/images/staff_user_register.png) + +3. 화면 소개 + +- 사용자의 기본 정보 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이메일 주소 : 로그인 시 사용 + - 비밀번호 + - 비밀번호 확인 : 입력한 비밀번호와 동일 + - 이름 + - 휴대폰 번호 +- 저장 버튼 : 입력한 사용자 정보를 저장한다. +- 목록 버튼 : 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 내부 사용자 목록 화면에서 등록 버튼을 클릭한다. +- 사용자 등록: 정보 입력 후 저장 버튼을 클릭하여 사용자를 등록한다. +- 등록 취소: 목록 버튼을 클릭하여 사용자 목록 화면으로 이동한다. + +#### 내부 사용자 수정 + +1. 개요 + +포탈에 등록된 내부 사용자 정보를 수정한다. + +2. 화면 캡쳐 + +![내부 사용자 수정](docs/images/staff_user_edit.png) + +3. 화면 소개 + +- 선택한 내부 사용자의 입력 정보 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 고유ID: 수정 불가 + - 이메일 주소 : 수정 불가 + - 이름 + - 휴대폰 번호 + - 사용자 상태 : 가입승인대기, 활성화, 비활성화, 잠김 + - 비밀번호 잠김: 잠금/해제 + - 잠금 횟수 : 로그인 시 비밀번호 오류 횟수 + - 가입일자 + - 잠금최종시점 : 잠금횟수 초과로 로그인이 잠긴 일자 + - 비밀번호변경일자 +- 저장 버튼 : 변경된 사용자 정보를 저장한다. +- 목록 버튼 : 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 내부 사용자 목록에서 원하는 사용자의 수정버튼을 클릭한다. +- 사용자 정보 변경 : 이름, 휴대폰 번호를 변경 후 저장한다. +- 사용자 상태 변경: 사용자 상태를 변경후 저장한다. +- 비밀번호 잠금 해제 : 비밀번호 잠금을 해제로 변경 후 저장한다. + +### 기업 사용자 관리 + +1. 개요 + +포탈 서비스를 사용하기 위한 외부 기업 고객의 사용자 정보를 관리한다. + +2. 구성 요소 + +- 기업 사용자 목록 +- 기업 사용자 등록 +- 기업 사용자 수정 + +#### 기업 사용자 목록 + +1. 개요 + +포탈에 등록된 기업 사용자 목록을 조회한다. + +2. 화면 캡쳐 + +![기업 사용자 목록](docs/images/ent_user_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 기업 사용자 목록을 조회한다. +- 기업 사용자 목록은 페이징 처리되어 있다. +- 기업 사용자 정보 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 내부 사용자 목록을 조회한다. + - 삭제 버튼 : 선택된 사용자를 삭제한다. + - 등록 버튼 : 새로운 내부 사용자를 등록한다. +- 사용자 목록 + - ID + - 회사명 + - 이름 + - 상태 + - 수정 버튼 : 선택된 사용자 수정화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 사용자 관리 > 기업 사용자 관리를 클릭한다. +- 등록된 사용자 조회: 검색 조건 입력 후 조회 버튼을 클릭하여 기업 사용자 목록을 조회한다. +- 신규 사용자 등록 : 등록 버튼을 클릭하여 신규 기업 사용자를 등록한다. +- 기존 사용자 정보 수정 : 기업 사용자 목록에서 수정 버튼을 클릭하여 기존 사용자 정보를 수정한다. +- 사용자 삭제 : 삭제할 기업 사용자의 체크박스를 선택하고 삭제 버튼을 클릭하여 기업 사용자를 삭제한다. + +#### 기업 사용자 등록 + +1. 개요 + +포탈에 새로운 기업 사용자를 등록한다. + +2. 화면 캡쳐 + ![기업 사용자 등록](docs/images/ent_user_register.png) + +3. 화면 소개 + +- 기업 사용자의 기본 정보 등록 폼과 기업 정보 등록폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 (개인정보) + - 이메일 주소 : 로그인 시 사용 + - 비밀번호 + - 비밀번호 확인 : 입력한 비밀번호와 동일 + - 이름 + - 휴대폰 번호 +- 입력 항목 (기업정보) + - 회사명 + - 대표자명 + - 사업자 등록번호 + - 법인등록번호 + - 업종코드 + - 우편번호 + - 주소 + - 상세주소 + - 사무실 전화번호 + - 팩스번호 +- 저장 버튼 : 입력한 정보를 저장한다. +- 목록 버튼 : 기업 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 기업 사용자 목록 화면에서 등록 버튼을 클릭한다. +- 기업 사용자 등록: 정보 입력 후 저장 버튼을 클릭하여 기업 사용자를 등록한다. +- 등록 취소: 목록 버튼을 클릭하여 기업 사용자 등록을 취소한다. + +#### 기업 사용자 수정 + +1. 개요 + +포탈에 등록된 기업 사용자 정보를 수정한다. + +2. 화면 캡쳐 + +![기업 사용자 수정](docs/images/ent_user_edit.png) + +3. 화면 소개 + +- 기업 사용자의 기본 정보 수정 폼과 기업 정보 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 (개인정보) + - 고유ID: 수정 불가 + - 이메일 주소 : 수정 불가 + - 이름 + - 휴대폰 번호 + - 사용자 상태 : 가입승인대기, 활성화, 비활성화, 잠김 + - 비밀번호 잠김: 잠금/해제 + - 잠금 횟수 : 로그인 시 비밀번호 오류 횟수 + - 가입일자 + - 잠금최종시점 : 잠금횟수 초과로 로그인이 잠긴 일자 + - 비밀번호변경일자 +- 입력항목 (기업정보) + - 회사명 + - 대표자명 + - 사업자 등록번호 + - 법인등록번호 + - 업종코드 + - 우편번호 + - 주소 + - 상세주소 + - 사무실 전화번호 + - 팩스번호 +- 저장 버튼 : 변경된 기업 사용자 정보를 저장한다. +- 목록 버튼 : 기업 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 기업 사용자 목록 화면에서 원하는 사용자의 수정 버튼을 클릭한다. +- 기업 사용자 정보 변경: 입력항목을 변경 후 저장한다. +- 기업 사용자 상태 변경: 기업 사용자 상태를 변경후 저장한다. +- 비밀번호 잠금 해제 : 비밀번호 잠금을 해제로 변경 후 저장한다. +- 등록 취소 : 목록 버튼을 클릭하여 기업 사용자 수정을 취소한다. + +### 기업 사용자 회원 가입 + +1. 개요 + +기업 사용자가 회원 가입 후 관리자 승인을 받아 포탈을 사용한다. + +2. 화면 캡쳐 + +![약관동의](docs/images/user_agreement.png) + +![회원가입](docs/images/user_register.png) + +3. 화면 소개 + +- 약관 동의 : 회원 가입을 위한 약관과 동의 체크 박스를 표시한다. +- 회원 가입 : 기업 사용자 입력 폼을 표시한다. + +4. 화면 요소 + +- 이용약관 + - 입력 항목 + - 이용약관 동의 + - 개인 정보 수집 및 이용 동의 + - 전체 동의: 표시된 모등 약관에 동의한다. + - 등록 버튼: 회원 가입 화면으로 이동한다. + +- 회원 가입 + - 입력 항목 + - 이메일 주소 + - 인증 번호 + - 신청자 명 + - 비밀 번호 + - 비밀 번호 확인 + - 인증번호 발송 버튼: 입력한 이메일 주소로 인증 번호를 발송한다. + - 등록 버튼: 입력한 사용자 정보를 등록한다. + +5. 작업 가이드 + +- 메뉴 접근: 로그인 화면에서 회원 가입을 클릭한다. +- 약관 동의: 약관을 읽고 동의에 체크 후 등록 버튼을 클릭하여 회원 가입 화면으로 이동한다. +- 회원 등록: 기업 사용자 정보 및 전송된 인증번호를 입력 후 등록 버튼을 클릭한다. 정상적으로 등록 시 완료화면이 표시된다. + +6. 문제 해결 + +- 회원 가입 시 약관을 표시하기 위해서는 [약관관리](#약관-관리)에 필요한 약관을 등록해야 한다. +- 약관 동의: 회원 가입을 위한 약관에 동의하지 않으면 회원 가입 등록화면으로 이동하지 않는다. +- 인증 번호 오류: 발송된 인증번호와 일치하지 않으면 정상적으로 등록이 불가능하다. +- 인증번호 발송 오류 : 메일 발송 시스템과 연계 오류시 사용이 불가능하다. +- 사용자 상태 오류 : 사용자 승인 전까지는 로그인이 불가능하다. + +### 약관 관리 + +1. 개요 + +- 포탈 운영을 위한 약관을 관리한다. +- 관리 약관의 종류는 서비스 이용약관, 개인정보 처리방침, 정보 제공 동의 , 마케팅 정보 수신동의 등이 있다. +- 등록된 약관은 상태로 관리되며, 발행 상태의 약관이 회원 가입시 표시된다. 최초 등록시 신규(TEMP)상태로 저장되며, 변경시 임시저장(DRAFT)로 관리된다. +- 임시저장 상태에서 발행을 하면 발행 (PUBLISHED)상태로 변경되며, 기존 발행(PUBLISHED) 상태의 약관은 보관 (ARCHIVED) 상태로 변경된다. + +2. 화면 캡쳐 + +![약관관리](docs/images/agreements.png) + +3. 화면 소개 + +- 좌측에 사용가능한 약관 목록이 표시한다. +- 약관을 선택하면 해당 약관의 정보가 표시한다. + +4. 화면 요소 + +- 약관 목록: 선택 하면 우측에 약관 정보를 표시한다. +- 입력 항목 + - 제목 + - 버전: 자동 생성 + - 약관 내용: 에디터를 사용하여 약관 작성 + - 발행 일자: 자동 생성 (발행 시) + - 상태: TEMP, DRAFT, PUBLISHED, ARCHIVED 자동 생성 +- 신규 버튼: 새로운 버전의 약관을 생성한다. +- 저장 버튼: 편집한 약관을 저장한다. +- 삭제 버튼: 현재 표시되는 약관을 삭제한다. +- 발행 버튼: 현재 표시되는 약관을 발행한다. +- 버전 목록: 선택하면 해당 버전의 약관 내용이 표시된다. + +5. 작업 가이드 + +- 메뉴 접근: 시스템 관리 > 약관 관리를 클릭한다. +- 약관 신규 등록: 신규 버튼을 클릭하여 약관을 등록 후 저장한다. +- 약관 내용 수정: 원하는 버전의 약관을 클릭 후 내용 수정 후 저장한다. +- 약관 발행: 원하는 버전의 약관을 클릭후 발행 버튼을 클릭한다. +- 약관 삭제: 원하는 버전의 약관을 클릭 후 삭제 버튼을 클릭한다. + +6. 문제 해결 + +- 발행된 약관은 수정 삭제가 불가능 하므로, 수정이 필요하면 새로운 약관 발행해야 한다. + +## API 관리 + +1. 개요 + OPEN API 서비스를 위한 API 정보를 관리한다. + +2. 구성 요소 + +- API 관리 목록 +- API 등록 +- API 수정 + +### API 관리 목록 + +1. 개요 + +포탈에 등록된 API 목록을 조회한다. + +2. 화면 캡쳐 + +![API 목록](docs/images/api_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 API 목록을 조회한다. +- API 목록은 페이징 처리되어 있다. +- API 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 검색항목 : 이름, URL 중 선택 + - 검색어 : 검색 항목에 따라 입력 + - 조회 버튼 : 검색 조건에 따라 내부 API 목록을 조회한다. + - 삭제 버튼 : 선택된 API를 삭제한다. + - 등록 버튼 : 새로운 API 등록화면으로 이동한다. +- API 목록 + - ID : API ID + - 이름 : API 이름 + - URL : API URL + - 수정 버튼 : 선택된 API 수정화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: API관리 > API 관리를 클릭한다. +- 등록된 API 조회: 검색 조건 입력 후 조회 버튼을 클릭하여 API 목록을 조회한다. +- 신규 API 등록 : 등록 버튼을 클릭하여 신규 API를 등록한다. +- 기존 API 정보 수정 : API 목록에서 수정 버튼을 클릭하여 기존 API 정보를 수정한다. +- API 삭제 : 삭제할 API의 체크박스를 선택하고 삭제 버튼을 클릭하여 API를 삭제한다. + +### API 등록 + +1. 개요 + +포탈에 새로운 API를 등록한다. + +2. 화면 캡쳐 + +![API 등록](docs/images/api_mgmt_register.png) + +3. 화면 소개 + +- 신규 API 정보를 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름: 표시될 API 이름 + - method: POST, GET, PUT, DELETE 등 + - 도메인: 게이트웨이 호출 도메인 정보 (ex: http://localhost:8080) + - Path: 게이트웨이 호출 URL 정보 (ex: /api/v1/users) + - 설명: API에 대한 설명 (WYSIWYG 에디터 제공) + - API 스펙: swagger 형식의 json, editor로 작성 + - 첨부파일: 선택한 파일 첨부 + - 응답: json 응답 예제 +- 저장 버튼 : 입력한 API 정보를 저장한다. +- 목록 버튼 : API 목록 화면으로 이동한다. + + +5. 작업 가이드 + +- 메뉴 접근: API관리 화면에서 등록 버튼을 클릭한다. +- API 정보 등록 : API 정보를 입력 후 저장한다. +- API Swagger 작성: 표시된 샘플을 활용하여 API 스펙을 작성한다. +- 첨부 파일 등록: 첨부 파일 파일선택을 클릭하여 첨부할 파일을 선택 후 저장한다. +- 등록 취소: 목록 버튼을 클릭하여 API 목록 화면으로 이동한다. + +### API 수정 + +1. 개요 + +포탈에 등록된 API 정보를 수정한다. + +2. 화면 캡쳐 + +![API 수정](docs/images/api_mgmt_edit.png) + +3. 화면 소개 + +- 등록된 API 정보를 수정 폼을 제공한다. +- 등록된 첨부파일 목록을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름: 표시될 API 이름 + - method: POST, GET, PUT, DELETE 등 + - 도메인: 게이트웨이 호출 도메인 정보 (ex: http://localhost:8080) + - Path: 게이트웨이 호출 URL 정보 (ex: /api/v1/users) + - 설명: API에 대한 설명 (WYSIWYG 에디터 제공) + - API 스펙: swagger 형식의 json, editor로 작성 + - 첨부파일: 등록된 첨부 파일 목록 + - 응답: json 응답 예제 +- 저장 버튼 : 변경한 API 정보를 저장한다. +- 목록 버튼 : API 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: API관리 화면에서 원하는 API의 수정 버튼을 클릭한다. +- API 정보 변경: API 정보를 변경 후 저장한다. +- 첨부 파일 변경: 기존에 등록된 파일의 휴지통 버튼을 클릭하여 삭제 후, 새로운 첨부 파일을 선택 후 저장한다. +- 변경 취소 : 목록 버튼을 클릭하여 API 목록 화면으로 이동한다. + +## API 문서 + +1. 개요 + API 관리에서 등록한 API의 정보 및 Swagger UI를 제공한다. + +2. 구성 요소 + +- API 목록 +- API 상세 + +### API 목록 + +1. 개요 + API관리에서 등록한 API 를 목록 형태로 제공한다. + +2. 화면 캡쳐 + +![API 목록](docs/images/api_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 API 목록을 조회한다. +- API 목록은 페이징 처리되어 있다. + +4. 화면 요소 + +- 검색 조건 + - API이름 + - URL + - 검색 버튼 +- API 목록 + - API이름 + - URL + +5. 작업 가이드 + +- 메뉴 접근: 상단 API를 클릭한다. +- API 검색: API이름 또는 URL 을 입력 후 검색 버튼을 클릭한다. +- API 보기: API 목록에서 원하는 API 를 선택한다. + +### API 상세 + +1. 개요 + +OPEN API 서비스를 제공하기 위한 API 정보를 Swagger UI를 통해 제공한다. + +2. 화면 캡쳐 + +![API 기본 정보](docs/images/api_detail_1.png) +![Swagger UI](docs/images/api_detail_2.png) + +3. 화면 소개 + +- API 정보 탭과 DOCUMENT 탭으로 구성되어 있다. +- API 정보 탭을 선택하면 기본 정보 및 설명, 첨부파일 다운로드를 제공한다. +- DOCUMENT 탭을 선택하면 Swagger UI를 제공한다. + +4. 화면 요소 + +- API 기본 정보 탭 + - 기본 정보 + - 첨부 파일 목록 +- DOCUMENT 탭 + - Swagger UI +- 목록 버튼 + +5. 작업 가이드 + +- 메뉴 접근: API 목록에서 원하는 API 를 선택한다. +- 첨부 파일 다운로드 : 첨부 파일 목록에서 파일 이름을 클릭한다. +- API 테스트: Swagger UI에서 필요한 변수 입력 후 Try it out을 클릭한다. +- 목록 이동: 목록 버튼을 클릭하여 API 목록 화면으로 이동한다. + +## 커뮤니티 + +1. 개요 + +사용자 커뮤니케이션을 위한 게시판 및 FAQ 기능을 제공한다. + +2. 구성 요소 + +- 게시판 관리 +- FAQ 관리 + +### 게시판 관리 + +1. 개요 + +사용자 커뮤니케이션을 위한 게시판 관리 기능을 제공한다. + +2. 구성 요소 + +- 게시판 목록 +- 게시판 등록 +- 게시판 수정 +- 게시글 목록 +- 게시글 등록 +- 게시글 조회 +- 게시글 수정 + +#### 게시판 목록 + +1. 개요 + +포탈에 등록된 게시판 목록을 조회한다. + +2. 화면 캡쳐 + ![게시판 관리 목록](docs/images/board_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 내부 게시판 목록을 조회한다. +- 게시판 목록은 페이징 처리되어 있다. +- 게시판 정보 등록, 수정 및 삭제 기능을 제공한다. +- 게시판에 등록된 게시글 조회 화면으로 이동 가능하다. + +4. 화면 요소 + +- 검색 조건 + - 게시판 이름 + - 조회 버튼 : 검색 조건에 따라 게시판 목록을 조회한다. + - 삭제 버튼 : 선택한 게시판을 삭제한다. + - 등록 버튼 : 게시판 등록 화면으로 이동한다. +- 게시판 목록 + - ID + - 이름 + - 사용 여부 + - 수정 버튼 : 게시판 수정 화면으로 이동한다. + - 게시물 보기 버튼 : 게시글 목록 화면으로 이동한다. + + +5. 작업 가이드 + +- 메뉴 접근: 커뮤니티 관리 > 게시판 관리를 클릭한다. +- 등록된 게시판 조회 : 게시판 이름을 입력 후 조회 버튼을 클릭한다. +- 게시판 삭제 : 삭제할 게시판을 선택 후 삭제 버튼을 클릭한다. +- 신규 게시판 등록 : 등록 버튼을 클릭한다. +- 기존 게시판 수정 : 수정 버튼을 클릭한다. +- 등록된 게시물 보기 : 게시물 보기 버튼을 클릭한다. + +#### 게시판 등록 + +1. 개요 + +포탈에 게시판을 등록한다. + +2. 화면 캡쳐 + ![게시판 등록](docs/images/board_mgmt_register.png) + +3. 화면 소개 + +- 게시판 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 게시판 소개 + - 답장 가능 여부 + - 파일 첨부 가능 여부 + - 첨부 가능 파일 숫자 + - 사용 여부 + - 권한 설정 + +- 저장 버튼 : 입력한 게시판 정보를 저장한다. +- 목록 버튼 : 게시판 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 게시판 목록에서 등록 버튼을 클릭한다. +- 게시판 등록: 정보 입력 후 저장 버튼을 클릭한다. +- 게시판 권한 부여: 권한 별로 읽기, 쓰기, 수정, 삭제, Admin 권한의 체크박스를 선택 후 저장 버튼을 클릭한다. +- 등록 취소: 목록 버튼을 클릭한다. + +#### 게시판 수정 + +1. 개요 + +포탈에 등록된 게시판의 정보를 수정한다. + +2. 화면 캡쳐 + ![게시판 수정](docs/images/board_mgmt_edit.png) + +3. 화면 소개 + +- 게시판 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 게시판 소개 + - 답장 가능 여부 + - 파일 첨부 가능 여부 + - 첨부 가능 파일 숫자 + - 사용 여부 + - 권한 설정 + +- 저장 버튼 : 입력한 게시판 정보를 저장한다. +- 목록 버튼 : 게시판 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 게시판 목록에서 원하는 게시판의 수정 버튼을 클릭한다. +- 게시판 정보 수정: 정보 입력 후 저장 버튼을 클릭한다. +- 게시판 권한 부여: 권한 별로 읽기, 쓰기, 수정, 삭제, Admin 권한의 체크박스를 선택 후 저장 버튼을 클릭한다. +- 수정 취소: 목록 버튼을 클릭한다. + +#### 게시글 목록 + +1. 개요 + +게시판에 등록된 게시글을 관리한다. + +2. 화면 캡쳐 + ![게시글 목록](docs/images/article_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 게시글 목록을 조회한다. +- 게시글 목록은 페이징 처리되어 있다. +- 게시글 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 검색항목 : 제목, 내용 중 선택 + - 검색어 : 검색할 단어 입력 + - 검색 버튼: 검색 조건에 따라 게시글 목록을 조회한다. + - 삭제 버튼: 선택한 게시글을 삭제한다. + - 등록 버튼: 게시글 등록 화면으로 이동한다. +- 게시글 목록 + - 글 번호 + - 제목 + - 등록자 + - 등록일 + - 조회수 + +5. 작업 가이드 + +- 메뉴 접근 : 게시판 목록에서 원하는 게시판의 게시물 보기 버튼을 클릭한다. +- 게시글 검색 : 검색 조건을 선택 후 검색어를 입력하고 검색 버튼을 클릭한다. +- 게시글 등록 : 등록 버튼을 클릭한다. +- 게시물 삭제 : 삭제할 게시물을 선택 후 삭제 버튼을 클릭한다. + +#### 게시글 등록 + +1. 개요 + +게시판에 새로운 게시글을 등록한다. + +2. 화면 캡쳐 + ![게시글 등록](docs/images/article_mgmt_register.png) + +3. 화면 소개 + +- 게시글 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력항목 + - 작성자 (읽기 전용) + - 제목 + - 내용 + - 첨부 파일 +- 저장 버튼 : 입력한 게시글 정보를 저장한다. +- 목록 버튼 : 게시글 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : 게시글 목록에서 등록 버튼을 클릭한다. +- 새로운 게시글 등록 : 제목, 내용을 입력 후 저장 버튼을 클릭한다. +- 첨부 파일 등록 : 파일 선택을 클릭하여 파일을 선택 후 저장 버튼을 클릭한다. +- 등록 취소 : 목록 버튼을 클릭한다. + +#### 게시글 조회 + +1. 개요 + +게시글의 내용을 조회한다. + +2. 화면 캡쳐 + +![게시글 조회](docs/images/article_mgmt_view.png) + +3. 화면 소개 + +- 게시글의 내용을 조회한다. + +4. 화면 요소 + +- 조회 항목 + - 번호 + - 제목 + - 작성자 + - 작성일 + - 내용 +- 목록 버튼 : 게시글 목록 화면으로 이동한다. +- 답글 작성 : 답글 작성 화면으로 이동한다. +- 수정 버튼 : 게시글 수정 화면으로 이동한다. + +#### 게시글 수정 + +1. 개요 + +게시판에 등록된 게시글을 수정한다. + +2. 화면 캡쳐 + ![게시글 등록](docs/images/article_mgmt_edit.png) + +3. 화면 소개 + +- 게시글 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 작성자 (읽기 전용) + - 제목 + - 내용 (WYSIWYG 에디터) + - 첨부 파일 +- 저장 버튼 : 입력한 게시글 정보를 저장한다. +- 목록 버튼 : 게시글 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : 게시글 목록에서 원하는 게시글의 수정 버튼을 클릭한다. +- 게시글 수정 : 제목, 내용을 변경 후 저장 버튼을 클릭한다. +- 첨부 파일 변경: 기존에 등록된 파일의 휴지통 버튼을 클릭하여 삭제 후, 새로운 첨부 파일을 선택 후 저장한다. +- 수정 취소 : 목록 버튼을 클릭한다. + +### FAQ 관리 + +1. 개요 + +사용자 커뮤니케이션을 위한 FAQ 관리 기능을 제공한다. + +2. 구성 요소 + +- FAQ 목록 +- FAQ 등록 +- FAQ 수정 + +#### FAQ 목록 + +1. 개요 + +포탈에 등록된 FAQ 관리한다. + +2. 화면 캡쳐 + ![게시글 목록](docs/images/faq_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 FAQ 목록을 조회한다. +- FAQ 목록은 페이징 처리되어 있다. +- FAQ 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 검색 항목 : 제목, 내용 중 선택 + - 검색어 : 검색할 단어 입력 + - 조회 버튼: 검색 조건에 따라 FAQ 목록을 조회한다. + - 삭제 버튼: 선택한 FAQ를 삭제한다. + - 등록 버튼: FAQ 등록 화면으로 이동한다. +- FAQ 목록 + - 번호 + - 제목 + - 수정 + +5. 작업 가이드 + +- 메뉴 접근 : 커뮤니티 관리 > FAQ관리를 클릭한다. +- FAQ 검색 : 검색 조건을 선택 후 검색어를 입력하고 조회 버튼을 클릭한다. +- FAQ 등록 : 등록 버튼을 클릭한다. +- FAQ 삭제 : 삭제할 FAQ를 선택 후 삭제 버튼을 클릭한다. + +#### FAQ 등록 + +1. 개요 + +포탈에 새로운 FAQ를 등록한다. + +2. 화면 캡쳐 + ![FAQ 등록](docs/images/faq_mgmt_register.png) +3. 화면 소개 + +- FAQ 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - FAQ 제목 + - 질문 내용 + - 답변 내용 (WYSIWYG 에디터 제공) +- 저장 버튼 : 입력한 FAQ 정보를 저장한다. +- 목록 버튼 : FAQ 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : FAQ 목록에서 등록 버튼을 클릭한다. +- FAQ 등록 : 제목, 질문 내용, 답변 내용을 입력 후 저장 버튼을 클릭한다. +- 등록 취소 : 목록 버튼을 클릭한다. + +#### FAQ 수정 + +1. 개요 + +포탈에 등록된 FAQ 내용을 수정한다. + +2. 화면 캡쳐 + ![FAQ 수정](docs/images/faq_mgmt_edit.png) +3. 화면 소개 + +- FAQ 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - FAQ 제목 + - 질문 내용 + - 답변 내용 (WYSIWYG 에디터 제공) +- 저장 버튼 : 수정된 FAQ 정보를 저장한다. +- 목록 버튼 : FAQ 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : FAQ 목록에서 선택할 FAQ의 수정 버튼을 클릭한다. +- FAQ 변경 : 제목, 질문 내용, 답변 내용을 변경 후 저장 버튼을 클릭한다. +- 변경 취소 : 목록 버튼을 클릭한다. + +## 메시지 템플릿 관리 + +1. 개요 + +포탈에서 발송하는 이메일 및 SMS 포맷을 관리할 수 있는 기능을 제공한다. +포탈에 등록된 이벤트 발생 시 해당 템플릿을 사용하여 이메일 및 SMS를 발송한다. + +2. 구성 요소 + +- 이메일 템플릿 관리 +- SMS 템플릿 관리 + +### 이메일 템플릿 관리 + +1. 개요 + +포탈에서 발송하는 이메일 포맷을 관리할 수 있는 기능을 제공한다. + +2. 화면 캡쳐 + ![이메일 템플릿 관리](docs/images/email_template.png) + +3. 화면 소개 + +- 템플릿 목록 을 제공한다. +- 템플릿 상세 정보를 제공한다. + +4. 화면 요소 + +- 템플릿 목록 : 템플릿을 선택하면 선택한 템플릿의 정보가 우측에 표시된다. +- 템플릿 입력 항목: + - 제목 + - 활성화 체크박스 + - 내용 (WYSIWYG 에디터 제공) +- 저장 버튼 : 선택된 템플릿 정보를 저장한다. + +5. 작업 가이드 +- 메뉴 접근 : 시스템 관리 > 이메일 템플릿 관리를 클릭한다. +- 템플릿 등록 : 템플릿 목록에서 항목 선택 후 해당 템플릿의 내용을 입력 후 저장버튼을 클릭한다. 제목은 이메일 제목, 내용은 이메일로 발송된다. 제목, 내용에서 사용할 변수는 %변수명% 형태로 입력한다. +- 템플릿 미사용 : 템플릿 활성화 체크 박스를 해제 저장한다. +- 템플릿 사용 : 템플릿 활성화 체크 박스를 선택 후 저장한다. + + +### SMS 템플릿 관리 + +1. 개요 + 포탈에서 발송하는 SMS 포맷을 관리할 수 있는 기능을 제공한다. + +2. 화면 캡쳐 + ![이메일 템플릿 관리](docs/images/email_template.png) + +3. 화면 소개 + +- 템플릿 목록을 제공한다. +- 템플릿 상세 정보를 제공한다. + +4. 화면 요소 + +- 템플릿 목록 : 템플릿을 선택하면 선택한 템플릿의 정보가 우측에 표시된다. +- 템플릿 입력 항목: + - 제목 + - 활성화 체크박스 + - 내용 (텍스트 형태로 입력) +- 저장 버튼 : 선택된 템플릿 정보를 저장한다. + +5. 작업 가이드 +- 메뉴 접근 : 시스템 관리 > SMS 템플릿 관리를 클릭한다. +- 템플릿 등록 : 템플릿 목록에서 항목 선택 후 해당 템플릿의 내용을 입력 후 저장버튼을 클릭한다. 내용만 SMS로 발송된다. +- 템플릿 미사용 : 템플릿 활성화 체크 박스를 해제 저장한다. +- 템플릿 사용 : 템플릿 활성화 체크 박스를 선택 후 저장한다. + + +## API 키 관리 + +1. 개요 + +OPEN API 서비스 사용을 위한 API 키를 관리한다. + +2. 구성 요소 + +- API 키 목록 +- API 키 등록 +- API 키 수정 + +### API 키 목록 + +1. 개요 + +기업사용자에게 발급된 API 키 목록을 조회할 수 있다. + +2. 화면 캡쳐 +![API 키 목록](docs/images/apikey_mgmt_list.png) + +3. 화면 소개 +4. +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 API키 목록을 조회한다. +- API키 목록은 페이징 처리되어 있다. +- API키 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 API키 목록을 조회한다. + - 삭제 버튼 : 선택된 API키를 삭제한다. + - 등록 버튼 : 새로운 API키를 등록한다. +- API 키 목록 + - 기관 + - 환경 + - 이름 + - 상태 + - 수정 버튼 : 선택된 API키 수정화면으로 이동한다. + +5. 작업 가이드 +- 메뉴 접근 : API관리 > API 키 관리를 클릭한다. +- 등록된 API키 조회 : 검색 조건 입력 후 API키 목록에서 조회 버튼을 클릭한다. +- 신규 API키 등록 : 등록 버튼을 클릭한다. +- API키 수정 : 수정 버튼을 클릭한다. +- API키 삭제 : 삭제할 API키의 체크박스를 선택하고 삭제 버튼을 클릭한다. + +### API 키 등록 + +1. 개요 + +포탈에 등록된 기업사용자에게 새로운 API 키를 발급한다. + +2. 화면 캡쳐 +![API 키 등록](docs/images/apikey_mgmt_register.png) + +3. 화면 소개 +- API 키 등록폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 설명 + - 환경 (개발/운영) + - 소유자 + - Client ID (elink에서 발급된 Client ID) + - Client Secret (elink에서 발급된 Client Secret) +- 저장 버튼 : 입력한 정보를 저장한다. +- 목록 버튼 : API키 목록 화면으로 이동한다. + +5. 작업 가이드 +- 메뉴 접근 : API키 목록에서 등록 버튼을 클릭한다. +- 신규 API키 발급: eLink에서 API키 발급 후, 발급받은 정보를 API키 등록 화면에서 입력 후 저장한다. +- 등록 취소: 목록 버튼을 클릭하여 API키 등록을 취소한다. + +### API 키 수정 + +1. 개요 +포탈에 등록된 기업사용자에게 발급된 API 키 정보를 수정한다. + +2. 화면 캡쳐 +![API 키 수정](docs/images/apikey_mgmt_edit.png) +3. 화면 소개 +- API 키 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 설명 + - 환경 (개발/운영) + - 소유자 (읽기 전용) + - Client ID (elink에서 발급된 Client ID) + - Client Secret (elink에서 발급된 Client Secret) +- 저장 버튼 : 입력한 정보를 저장한다. +- 목록 버튼 : API키 목록 화면으로 이동한다. + +5. 작업 가이드 +- 메뉴 접근 : API키 목록에서 원하는 API키의 수정 버튼을 클릭한다. +- API키 정보 변경: API키 정보를 수정 후 저장한다. +- 변경 취소: 목록 버튼을 클릭하여 API키 변경을 취소한다. + +## 승인 관리 + +1. 개요 + +- 외부 사용자 가입 승인 및 API키 사용을 위한 승인 기능을 제공한다. +- 기업 사용자가 회원 가입을 하면 승인 요청이 생성된다. +- 기업 사용자가 API 키 사용 요청을 하면 승인 요청이 생성된다. + +2. 구성 요소 + +- 승인 대기 +- 승인 이력 +- 승인 상세 + +### 승인 대기 + +1. 개요 + +사용자가 승인해야할 목록을 조회한다. + +2. 화면 캡쳐 +![승인 대기 목록](docs/images/approval_waiting.png) + +3. 화면 소개 +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 승인 대기 목록을 조회한다. +- 승인 대기 목록은 페이징 처리되어 있다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 승인 대기 목록을 조회한다. + +- 승인 대기 목록 + - 번호 + - 유형 (회원가입/사용자 API키) + - 제목 + - 요청 사용자 + - 요청 일자 + +5. 작업 가이드 + +- 메뉴 접근 : 승인 관리 > 승인 대기를 클릭한다. +- 승인 대기 조회 : 검색 조건을 입력 후 조회 버튼을 클릭한다. +- 승인 상세 조회 : 승인 대기 목록에서 원하는 승인 대기 항목을 클릭한다. + +### 승인 상세 + +1. 개요 + +사용자의 승인을 기다리는 내용을 조회한다. + +2. 화면 캡쳐 +![API키 승인상세](docs/images/approval_detail.png) +![사용자 승인상세](docs/images/approval_detail_user.png) + +3. 화면 소개 + +- 승인 내용 을 표시한다. +- 승인 /반려 버튼을 제공한다. + +4. 화면 요소 +- 승인 상세 내용 +- 목록 버튼 : 승인 대기 목록 화면으로 이동한다. +- 승인 버튼 : 승인한다. +- 반려 버튼 : 반려한다. + +5. 작업 가이드 +- 메뉴 접근: 승인 대기 목록에서 원하는 승인 대기 항목을 클릭한다. +- 승인: 승인 버튼을 클릭한다. +- 반려: 반려 버튼을 클릭한다. +- 취소: 목록 버튼을 클릭하여 승인 대기 화면으로 이동한다. + +## 준비사항 + +- 포탈 구축 시 의사 결정 및 준비 항목 + +1. 시스템 알림 및 인증 번호 발송을 위해 이메일 연동 필요 +2. 이메일, 발송 시스템 연계 방법 +3. 사용자 등록 후 사용자 승인 사용 여부 +4. API키 등록 / 변경시 승인 사용 여부 +5. 사용자 등록시 약관 및 개인정보 처리 방침 동의 여부 제공 diff --git a/src/main/resources/static/html/guide/시작하기.md b/src/main/resources/static/html/guide/시작하기.md new file mode 100644 index 0000000..c73202a --- /dev/null +++ b/src/main/resources/static/html/guide/시작하기.md @@ -0,0 +1,26 @@ +# 최초 관리자 등록 가이드 + +## 1. 개요 +개발자 포탈 최초 설치 후, 시스템의 첫 관리자를 등록합니다. + +## 2. 관리자 등록 화면 +![최초 ADMIN 등록](assets/admin_register_view.png) + +## 3. 등록 절차 +1. 아래 정보를 입력합니다: + - 이메일 주소 (로그인 ID로 사용) + - 비밀번호 + - 비밀번호 확인 + - 이름 + - 휴대폰 번호 + +2. 모든 정보를 정확히 입력했는지 확인합니다. + +3. '저장' 버튼을 클릭하여 관리자 정보를 등록합니다. + +## 4. 주의사항 +- 관리자 등록은 최초 1회만 가능합니다. +- 등록 주소: `http://{서버}/admin_register_view.do` + +## 5. 문제 해결 +만약 `admin_register_view.do` 페이지에 접속할 수 없다면, 이미 관리자가 등록되어 있는지 확인하세요. \ No newline at end of file diff --git a/src/main/resources/static/html/guide/회원가입.md b/src/main/resources/static/html/guide/회원가입.md new file mode 100644 index 0000000..cfd6511 --- /dev/null +++ b/src/main/resources/static/html/guide/회원가입.md @@ -0,0 +1,42 @@ +# 🚀 회원가입 가이드 + +APIM 개발자포탈의 회원가입 과정을 안내해 드립니다. 아래 단계를 따라 쉽게 가입하실 수 있습니다. + +## 📜약관 동의 + +회원가입의 첫 단계는 약관 동의입니다. + +1. 마이데이터 종합포털 서비스 이용 약관(기관)을 확인합니다. +2. 제 1 조부터 시작하는 약관 내용을 꼼꼼히 읽어보세요. +3. 개인정보 수집 및 이용에 대한 동의 사항도 확인합니다. +4. 모든 내용을 확인하셨다면, 동의 버튼을 클릭하여 다음 단계로 진행합니다. + +## 🏢 회원 유형 선택 + +회원 유형을 선택하는 단계입니다. + +![img_1.png](img_1.png) + +1. **기관회원가입**: 기업 및 단체를 위한 회원가입입니다. 기관의 대표로 가입하실 경우 선택해 주세요. +2. **개인회원가입**: 개인 사용자를 위한 회원가입입니다. 개인 자격으로 서비스를 이용하실 경우 선택해 주세요. + +원하시는 유형을 클릭하여 선택해 주세요. + +## 📱 휴대전화 인증 / 이메일 인증 + +본인 확인을 위한 인증 단계입니다. + +![img.png](img.png) + +1. **휴대전화 인증**: 휴대전화 번호를 입력하고 인증번호를 받아 입력합니다. +2. **이메일 인증**: 이메일 주소를 입력하고 인증 링크를 통해 인증을 완료합니다. + +보안을 위해 반드시 본인의 정보로 인증해 주세요. + +## 🏛️ 기관 선택 + +기관회원으로 가입하시는 경우, 소속 기관을 선택하는 단계입니다. + +1. 검색 기능을 이용하여 소속 기관을 찾습니다. +2. 목록에서 해당 기관을 선택합니다. +3. 기관이 목록에 없는 경우, 관리자에게 문의하여 기관 등록을 요청할 수 있습니다. \ No newline at end of file diff --git a/src/main/resources/static/img/bg_api.png b/src/main/resources/static/img/bg_api.png new file mode 100644 index 0000000..0a0d033 Binary files /dev/null and b/src/main/resources/static/img/bg_api.png differ diff --git a/src/main/resources/static/img/bg_api_visual.png b/src/main/resources/static/img/bg_api_visual.png new file mode 100644 index 0000000..977b21a Binary files /dev/null and b/src/main/resources/static/img/bg_api_visual.png differ diff --git a/src/main/resources/static/img/bg_api_visual02.png b/src/main/resources/static/img/bg_api_visual02.png new file mode 100644 index 0000000..b86071a Binary files /dev/null and b/src/main/resources/static/img/bg_api_visual02.png differ diff --git a/src/main/resources/static/img/bg_api_visual03.png b/src/main/resources/static/img/bg_api_visual03.png new file mode 100644 index 0000000..c741645 Binary files /dev/null and b/src/main/resources/static/img/bg_api_visual03.png differ diff --git a/src/main/resources/static/img/bg_email_line.png b/src/main/resources/static/img/bg_email_line.png new file mode 100644 index 0000000..bd1f324 Binary files /dev/null and b/src/main/resources/static/img/bg_email_line.png differ diff --git a/src/main/resources/static/img/bg_portal_info01.png b/src/main/resources/static/img/bg_portal_info01.png new file mode 100644 index 0000000..6558029 Binary files /dev/null and b/src/main/resources/static/img/bg_portal_info01.png differ diff --git a/src/main/resources/static/img/bg_portal_info02.png b/src/main/resources/static/img/bg_portal_info02.png new file mode 100644 index 0000000..e0e8f68 Binary files /dev/null and b/src/main/resources/static/img/bg_portal_info02.png differ diff --git a/src/main/resources/static/img/bg_portal_info03.png b/src/main/resources/static/img/bg_portal_info03.png new file mode 100644 index 0000000..e994230 Binary files /dev/null and b/src/main/resources/static/img/bg_portal_info03.png differ diff --git a/src/main/resources/static/img/bg_portal_info04.png b/src/main/resources/static/img/bg_portal_info04.png new file mode 100644 index 0000000..74d0eec Binary files /dev/null and b/src/main/resources/static/img/bg_portal_info04.png differ diff --git a/src/main/resources/static/img/bg_portal_info05.png b/src/main/resources/static/img/bg_portal_info05.png new file mode 100644 index 0000000..f79eee7 Binary files /dev/null and b/src/main/resources/static/img/bg_portal_info05.png differ diff --git a/src/main/resources/static/img/bg_portal_info06.png b/src/main/resources/static/img/bg_portal_info06.png new file mode 100644 index 0000000..d41a21f Binary files /dev/null and b/src/main/resources/static/img/bg_portal_info06.png differ diff --git a/src/main/resources/static/img/bg_portal_sinfo01.png b/src/main/resources/static/img/bg_portal_sinfo01.png new file mode 100644 index 0000000..c09eedc Binary files /dev/null and b/src/main/resources/static/img/bg_portal_sinfo01.png differ diff --git a/src/main/resources/static/img/bg_portal_sinfo02.png b/src/main/resources/static/img/bg_portal_sinfo02.png new file mode 100644 index 0000000..4141dbf Binary files /dev/null and b/src/main/resources/static/img/bg_portal_sinfo02.png differ diff --git a/src/main/resources/static/img/bg_portal_sinfo03.png b/src/main/resources/static/img/bg_portal_sinfo03.png new file mode 100644 index 0000000..da830fa Binary files /dev/null and b/src/main/resources/static/img/bg_portal_sinfo03.png differ diff --git a/src/main/resources/static/img/bg_portal_sinfo04.png b/src/main/resources/static/img/bg_portal_sinfo04.png new file mode 100644 index 0000000..9c4f4b9 Binary files /dev/null and b/src/main/resources/static/img/bg_portal_sinfo04.png differ diff --git a/src/main/resources/static/img/bg_right.png b/src/main/resources/static/img/bg_right.png new file mode 100644 index 0000000..e1c7ef6 Binary files /dev/null and b/src/main/resources/static/img/bg_right.png differ diff --git a/src/main/resources/static/img/icon/Icon_a.png b/src/main/resources/static/img/icon/Icon_a.png new file mode 100644 index 0000000..33b2a52 Binary files /dev/null and b/src/main/resources/static/img/icon/Icon_a.png differ diff --git a/src/main/resources/static/img/icon/Icon_arrow_btn_down.png b/src/main/resources/static/img/icon/Icon_arrow_btn_down.png new file mode 100644 index 0000000..90fff8e Binary files /dev/null and b/src/main/resources/static/img/icon/Icon_arrow_btn_down.png differ diff --git a/src/main/resources/static/img/icon/Icon_arrow_btn_up.png b/src/main/resources/static/img/icon/Icon_arrow_btn_up.png new file mode 100644 index 0000000..1857cc5 Binary files /dev/null and b/src/main/resources/static/img/icon/Icon_arrow_btn_up.png differ diff --git a/src/main/resources/static/img/icon/Icon_q.png b/src/main/resources/static/img/icon/Icon_q.png new file mode 100644 index 0000000..d0975ff Binary files /dev/null and b/src/main/resources/static/img/icon/Icon_q.png differ diff --git a/src/main/resources/static/img/icon/arrow_down.png b/src/main/resources/static/img/icon/arrow_down.png new file mode 100644 index 0000000..9b6beaf Binary files /dev/null and b/src/main/resources/static/img/icon/arrow_down.png differ diff --git a/src/main/resources/static/img/icon/icon_api01.png b/src/main/resources/static/img/icon/icon_api01.png new file mode 100644 index 0000000..60c14b2 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api01.png differ diff --git a/src/main/resources/static/img/icon/icon_api02.png b/src/main/resources/static/img/icon/icon_api02.png new file mode 100644 index 0000000..b877e83 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api02.png differ diff --git a/src/main/resources/static/img/icon/icon_api03.png b/src/main/resources/static/img/icon/icon_api03.png new file mode 100644 index 0000000..f0a32bd Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api03.png differ diff --git a/src/main/resources/static/img/icon/icon_api_arrow.png b/src/main/resources/static/img/icon/icon_api_arrow.png new file mode 100644 index 0000000..f156df2 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_arrow.png differ diff --git a/src/main/resources/static/img/icon/icon_api_arrow_sel.png b/src/main/resources/static/img/icon/icon_api_arrow_sel.png new file mode 100644 index 0000000..a2c3652 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_arrow_sel.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info01.png b/src/main/resources/static/img/icon/icon_api_info01.png new file mode 100644 index 0000000..c60ced6 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info01.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info01_hover.png b/src/main/resources/static/img/icon/icon_api_info01_hover.png new file mode 100644 index 0000000..e988419 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info01_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info02.png b/src/main/resources/static/img/icon/icon_api_info02.png new file mode 100644 index 0000000..1c70a58 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info02.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info02_hover.png b/src/main/resources/static/img/icon/icon_api_info02_hover.png new file mode 100644 index 0000000..1673183 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info02_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info03.png b/src/main/resources/static/img/icon/icon_api_info03.png new file mode 100644 index 0000000..16a7a5a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info03.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info03_hover.png b/src/main/resources/static/img/icon/icon_api_info03_hover.png new file mode 100644 index 0000000..d66f92c Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info03_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info04.png b/src/main/resources/static/img/icon/icon_api_info04.png new file mode 100644 index 0000000..9e96af4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info04.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info04_hover.png b/src/main/resources/static/img/icon/icon_api_info04_hover.png new file mode 100644 index 0000000..1b6235e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info04_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info05.png b/src/main/resources/static/img/icon/icon_api_info05.png new file mode 100644 index 0000000..a3ea4b0 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info05.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info05_hover.png b/src/main/resources/static/img/icon/icon_api_info05_hover.png new file mode 100644 index 0000000..c799c3e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info05_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info06.png b/src/main/resources/static/img/icon/icon_api_info06.png new file mode 100644 index 0000000..938031e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info06.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info06_hover.png b/src/main/resources/static/img/icon/icon_api_info06_hover.png new file mode 100644 index 0000000..d9a3229 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info06_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info07.png b/src/main/resources/static/img/icon/icon_api_info07.png new file mode 100644 index 0000000..624fa78 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info07.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info07_hover.png b/src/main/resources/static/img/icon/icon_api_info07_hover.png new file mode 100644 index 0000000..209b235 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info07_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info08.png b/src/main/resources/static/img/icon/icon_api_info08.png new file mode 100644 index 0000000..187a263 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info08.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info08_hover.png b/src/main/resources/static/img/icon/icon_api_info08_hover.png new file mode 100644 index 0000000..eca41cd Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info08_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info09.png b/src/main/resources/static/img/icon/icon_api_info09.png new file mode 100644 index 0000000..be29fe4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info09.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info09_hover.png b/src/main/resources/static/img/icon/icon_api_info09_hover.png new file mode 100644 index 0000000..bccbc71 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info09_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info10.png b/src/main/resources/static/img/icon/icon_api_info10.png new file mode 100644 index 0000000..7ec850a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info10.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info10_hover.png b/src/main/resources/static/img/icon/icon_api_info10_hover.png new file mode 100644 index 0000000..dca6918 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info10_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info11.png b/src/main/resources/static/img/icon/icon_api_info11.png new file mode 100644 index 0000000..fee170d Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info11.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info11_hover.png b/src/main/resources/static/img/icon/icon_api_info11_hover.png new file mode 100644 index 0000000..5d5af46 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info11_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info12.png b/src/main/resources/static/img/icon/icon_api_info12.png new file mode 100644 index 0000000..5fe7911 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info12.png differ diff --git a/src/main/resources/static/img/icon/icon_api_info12_hover.png b/src/main/resources/static/img/icon/icon_api_info12_hover.png new file mode 100644 index 0000000..1c514ad Binary files /dev/null and b/src/main/resources/static/img/icon/icon_api_info12_hover.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_btn_l.png b/src/main/resources/static/img/icon/icon_arrow_btn_l.png new file mode 100644 index 0000000..d5eecb4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_btn_l.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_btn_r.png b/src/main/resources/static/img/icon/icon_arrow_btn_r.png new file mode 100644 index 0000000..8b3aa5a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_btn_r.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_down2.png b/src/main/resources/static/img/icon/icon_arrow_down2.png new file mode 100644 index 0000000..f79a373 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_down2.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_down2_sel.png b/src/main/resources/static/img/icon/icon_arrow_down2_sel.png new file mode 100644 index 0000000..4cb43b4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_down2_sel.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_down3.png b/src/main/resources/static/img/icon/icon_arrow_down3.png new file mode 100644 index 0000000..9b6beaf Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_down3.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_down3_sel.png b/src/main/resources/static/img/icon/icon_arrow_down3_sel.png new file mode 100644 index 0000000..8dca135 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_down3_sel.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_left.png b/src/main/resources/static/img/icon/icon_arrow_left.png new file mode 100644 index 0000000..e2e95c4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_left.png differ diff --git a/src/main/resources/static/img/icon/icon_arrow_right.png b/src/main/resources/static/img/icon/icon_arrow_right.png new file mode 100644 index 0000000..0faf83c Binary files /dev/null and b/src/main/resources/static/img/icon/icon_arrow_right.png differ diff --git a/src/main/resources/static/img/icon/icon_board01.png b/src/main/resources/static/img/icon/icon_board01.png new file mode 100644 index 0000000..0d5f611 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_board01.png differ diff --git a/src/main/resources/static/img/icon/icon_board02.png b/src/main/resources/static/img/icon/icon_board02.png new file mode 100644 index 0000000..80c05f2 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_board02.png differ diff --git a/src/main/resources/static/img/icon/icon_board03.png b/src/main/resources/static/img/icon/icon_board03.png new file mode 100644 index 0000000..6520633 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_board03.png differ diff --git a/src/main/resources/static/img/icon/icon_board04.png b/src/main/resources/static/img/icon/icon_board04.png new file mode 100644 index 0000000..2ded032 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_board04.png differ diff --git a/src/main/resources/static/img/icon/icon_business.png b/src/main/resources/static/img/icon/icon_business.png new file mode 100644 index 0000000..c106eca Binary files /dev/null and b/src/main/resources/static/img/icon/icon_business.png differ diff --git a/src/main/resources/static/img/icon/icon_calendar_day.png b/src/main/resources/static/img/icon/icon_calendar_day.png new file mode 100644 index 0000000..29a25a9 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_calendar_day.png differ diff --git a/src/main/resources/static/img/icon/icon_calendar_month.png b/src/main/resources/static/img/icon/icon_calendar_month.png new file mode 100644 index 0000000..b273f43 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_calendar_month.png differ diff --git a/src/main/resources/static/img/icon/icon_calendar_week.png b/src/main/resources/static/img/icon/icon_calendar_week.png new file mode 100644 index 0000000..fad199a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_calendar_week.png differ diff --git a/src/main/resources/static/img/icon/icon_card.png b/src/main/resources/static/img/icon/icon_card.png new file mode 100644 index 0000000..479b171 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_card.png differ diff --git a/src/main/resources/static/img/icon/icon_check.png b/src/main/resources/static/img/icon/icon_check.png new file mode 100644 index 0000000..2176c05 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_check.png differ diff --git a/src/main/resources/static/img/icon/icon_checkbox_off.png b/src/main/resources/static/img/icon/icon_checkbox_off.png new file mode 100644 index 0000000..eecae0a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_checkbox_off.png differ diff --git a/src/main/resources/static/img/icon/icon_checkbox_on.png b/src/main/resources/static/img/icon/icon_checkbox_on.png new file mode 100644 index 0000000..e72bc20 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_checkbox_on.png differ diff --git a/src/main/resources/static/img/icon/icon_circle_num01.png b/src/main/resources/static/img/icon/icon_circle_num01.png new file mode 100644 index 0000000..1388db8 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_circle_num01.png differ diff --git a/src/main/resources/static/img/icon/icon_circle_num01_1.png b/src/main/resources/static/img/icon/icon_circle_num01_1.png new file mode 100644 index 0000000..1ba4702 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_circle_num01_1.png differ diff --git a/src/main/resources/static/img/icon/icon_circle_num02.png b/src/main/resources/static/img/icon/icon_circle_num02.png new file mode 100644 index 0000000..bf38309 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_circle_num02.png differ diff --git a/src/main/resources/static/img/icon/icon_circle_num02_2.png b/src/main/resources/static/img/icon/icon_circle_num02_2.png new file mode 100644 index 0000000..77e72de Binary files /dev/null and b/src/main/resources/static/img/icon/icon_circle_num02_2.png differ diff --git a/src/main/resources/static/img/icon/icon_circle_num03.png b/src/main/resources/static/img/icon/icon_circle_num03.png new file mode 100644 index 0000000..7ffbabb Binary files /dev/null and b/src/main/resources/static/img/icon/icon_circle_num03.png differ diff --git a/src/main/resources/static/img/icon/icon_circle_num03_3.png b/src/main/resources/static/img/icon/icon_circle_num03_3.png new file mode 100644 index 0000000..f85d51a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_circle_num03_3.png differ diff --git a/src/main/resources/static/img/icon/icon_circle_num04.png b/src/main/resources/static/img/icon/icon_circle_num04.png new file mode 100644 index 0000000..d3a2242 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_circle_num04.png differ diff --git a/src/main/resources/static/img/icon/icon_close.png b/src/main/resources/static/img/icon/icon_close.png new file mode 100644 index 0000000..741bbd9 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_close.png differ diff --git a/src/main/resources/static/img/icon/icon_close2.png b/src/main/resources/static/img/icon/icon_close2.png new file mode 100644 index 0000000..14e7b5d Binary files /dev/null and b/src/main/resources/static/img/icon/icon_close2.png differ diff --git a/src/main/resources/static/img/icon/icon_complete.png b/src/main/resources/static/img/icon/icon_complete.png new file mode 100644 index 0000000..0e92102 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_complete.png differ diff --git a/src/main/resources/static/img/icon/icon_complete2.png b/src/main/resources/static/img/icon/icon_complete2.png new file mode 100644 index 0000000..72cb2b8 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_complete2.png differ diff --git a/src/main/resources/static/img/icon/icon_datepicker.png b/src/main/resources/static/img/icon/icon_datepicker.png new file mode 100644 index 0000000..9816b00 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_datepicker.png differ diff --git a/src/main/resources/static/img/icon/icon_dp_arrow_next.png b/src/main/resources/static/img/icon/icon_dp_arrow_next.png new file mode 100644 index 0000000..ff398d0 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_dp_arrow_next.png differ diff --git a/src/main/resources/static/img/icon/icon_dp_arrow_prev.png b/src/main/resources/static/img/icon/icon_dp_arrow_prev.png new file mode 100644 index 0000000..31adcc4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_dp_arrow_prev.png differ diff --git a/src/main/resources/static/img/icon/icon_email_complete.png b/src/main/resources/static/img/icon/icon_email_complete.png new file mode 100644 index 0000000..037de93 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_email_complete.png differ diff --git a/src/main/resources/static/img/icon/icon_email_complete02.png b/src/main/resources/static/img/icon/icon_email_complete02.png new file mode 100644 index 0000000..acc37e1 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_email_complete02.png differ diff --git a/src/main/resources/static/img/icon/icon_email_complete2.png b/src/main/resources/static/img/icon/icon_email_complete2.png new file mode 100644 index 0000000..e3b6985 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_email_complete2.png differ diff --git a/src/main/resources/static/img/icon/icon_email_error.png b/src/main/resources/static/img/icon/icon_email_error.png new file mode 100644 index 0000000..f25ce9f Binary files /dev/null and b/src/main/resources/static/img/icon/icon_email_error.png differ diff --git a/src/main/resources/static/img/icon/icon_error.png b/src/main/resources/static/img/icon/icon_error.png new file mode 100644 index 0000000..e434d5b Binary files /dev/null and b/src/main/resources/static/img/icon/icon_error.png differ diff --git a/src/main/resources/static/img/icon/icon_error2.png b/src/main/resources/static/img/icon/icon_error2.png new file mode 100644 index 0000000..f25ce9f Binary files /dev/null and b/src/main/resources/static/img/icon/icon_error2.png differ diff --git a/src/main/resources/static/img/icon/icon_file.png b/src/main/resources/static/img/icon/icon_file.png new file mode 100644 index 0000000..ec4e0d3 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_file.png differ diff --git a/src/main/resources/static/img/icon/icon_gnb_Info.png b/src/main/resources/static/img/icon/icon_gnb_Info.png new file mode 100644 index 0000000..05422b3 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_gnb_Info.png differ diff --git a/src/main/resources/static/img/icon/icon_gnb_api.png b/src/main/resources/static/img/icon/icon_gnb_api.png new file mode 100644 index 0000000..33d0876 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_gnb_api.png differ diff --git a/src/main/resources/static/img/icon/icon_gnb_code.png b/src/main/resources/static/img/icon/icon_gnb_code.png new file mode 100644 index 0000000..b6b421b Binary files /dev/null and b/src/main/resources/static/img/icon/icon_gnb_code.png differ diff --git a/src/main/resources/static/img/icon/icon_gnb_customer.png b/src/main/resources/static/img/icon/icon_gnb_customer.png new file mode 100644 index 0000000..e2c420f Binary files /dev/null and b/src/main/resources/static/img/icon/icon_gnb_customer.png differ diff --git a/src/main/resources/static/img/icon/icon_gnb_mypage.png b/src/main/resources/static/img/icon/icon_gnb_mypage.png new file mode 100644 index 0000000..278df88 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_gnb_mypage.png differ diff --git a/src/main/resources/static/img/icon/icon_guide_01.png b/src/main/resources/static/img/icon/icon_guide_01.png new file mode 100644 index 0000000..81ad323 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_guide_01.png differ diff --git a/src/main/resources/static/img/icon/icon_guide_02.png b/src/main/resources/static/img/icon/icon_guide_02.png new file mode 100644 index 0000000..4081354 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_guide_02.png differ diff --git a/src/main/resources/static/img/icon/icon_guide_03.png b/src/main/resources/static/img/icon/icon_guide_03.png new file mode 100644 index 0000000..b14cacd Binary files /dev/null and b/src/main/resources/static/img/icon/icon_guide_03.png differ diff --git a/src/main/resources/static/img/icon/icon_guide_04.png b/src/main/resources/static/img/icon/icon_guide_04.png new file mode 100644 index 0000000..1a72e31 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_guide_04.png differ diff --git a/src/main/resources/static/img/icon/icon_home.png b/src/main/resources/static/img/icon/icon_home.png new file mode 100644 index 0000000..1ca0c5e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_home.png differ diff --git a/src/main/resources/static/img/icon/icon_home2.png b/src/main/resources/static/img/icon/icon_home2.png new file mode 100644 index 0000000..38295e6 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_home2.png differ diff --git a/src/main/resources/static/img/icon/icon_home3.png b/src/main/resources/static/img/icon/icon_home3.png new file mode 100644 index 0000000..6709a14 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_home3.png differ diff --git a/src/main/resources/static/img/icon/icon_join.png b/src/main/resources/static/img/icon/icon_join.png new file mode 100644 index 0000000..6a6eb96 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_join.png differ diff --git a/src/main/resources/static/img/icon/icon_kbank.png b/src/main/resources/static/img/icon/icon_kbank.png new file mode 100644 index 0000000..a5fa04c Binary files /dev/null and b/src/main/resources/static/img/icon/icon_kbank.png differ diff --git a/src/main/resources/static/img/icon/icon_key.png b/src/main/resources/static/img/icon/icon_key.png new file mode 100644 index 0000000..086691a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_key.png differ diff --git a/src/main/resources/static/img/icon/icon_light_bulb.png b/src/main/resources/static/img/icon/icon_light_bulb.png new file mode 100644 index 0000000..8f38244 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_light_bulb.png differ diff --git a/src/main/resources/static/img/icon/icon_lock.png b/src/main/resources/static/img/icon/icon_lock.png new file mode 100644 index 0000000..02cbd39 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_lock.png differ diff --git a/src/main/resources/static/img/icon/icon_login.png b/src/main/resources/static/img/icon/icon_login.png new file mode 100644 index 0000000..a11de35 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_login.png differ diff --git a/src/main/resources/static/img/icon/icon_login2.png b/src/main/resources/static/img/icon/icon_login2.png new file mode 100644 index 0000000..1152df7 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_login2.png differ diff --git a/src/main/resources/static/img/icon/icon_login_join.png b/src/main/resources/static/img/icon/icon_login_join.png new file mode 100644 index 0000000..15dcdcc Binary files /dev/null and b/src/main/resources/static/img/icon/icon_login_join.png differ diff --git a/src/main/resources/static/img/icon/icon_login_lock.png b/src/main/resources/static/img/icon/icon_login_lock.png new file mode 100644 index 0000000..6bf4ca1 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_login_lock.png differ diff --git a/src/main/resources/static/img/icon/icon_login_search.png b/src/main/resources/static/img/icon/icon_login_search.png new file mode 100644 index 0000000..7820dc6 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_login_search.png differ diff --git a/src/main/resources/static/img/icon/icon_main_search.png b/src/main/resources/static/img/icon/icon_main_search.png new file mode 100644 index 0000000..1580e8d Binary files /dev/null and b/src/main/resources/static/img/icon/icon_main_search.png differ diff --git a/src/main/resources/static/img/icon/icon_main_search2.png b/src/main/resources/static/img/icon/icon_main_search2.png new file mode 100644 index 0000000..b3a77bc Binary files /dev/null and b/src/main/resources/static/img/icon/icon_main_search2.png differ diff --git a/src/main/resources/static/img/icon/icon_member01.png b/src/main/resources/static/img/icon/icon_member01.png new file mode 100644 index 0000000..1448908 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_member01.png differ diff --git a/src/main/resources/static/img/icon/icon_member01_m.png b/src/main/resources/static/img/icon/icon_member01_m.png new file mode 100644 index 0000000..28962ea Binary files /dev/null and b/src/main/resources/static/img/icon/icon_member01_m.png differ diff --git a/src/main/resources/static/img/icon/icon_member02.png b/src/main/resources/static/img/icon/icon_member02.png new file mode 100644 index 0000000..d688534 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_member02.png differ diff --git a/src/main/resources/static/img/icon/icon_member02_m.png b/src/main/resources/static/img/icon/icon_member02_m.png new file mode 100644 index 0000000..4bb64d8 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_member02_m.png differ diff --git a/src/main/resources/static/img/icon/icon_more.png b/src/main/resources/static/img/icon/icon_more.png new file mode 100644 index 0000000..a41dc0e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_more.png differ diff --git a/src/main/resources/static/img/icon/icon_more_btn.png b/src/main/resources/static/img/icon/icon_more_btn.png new file mode 100644 index 0000000..a41dc0e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_more_btn.png differ diff --git a/src/main/resources/static/img/icon/icon_more_btn2.png b/src/main/resources/static/img/icon/icon_more_btn2.png new file mode 100644 index 0000000..2759722 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_more_btn2.png differ diff --git a/src/main/resources/static/img/icon/icon_mp_arrow.png b/src/main/resources/static/img/icon/icon_mp_arrow.png new file mode 100644 index 0000000..867108c Binary files /dev/null and b/src/main/resources/static/img/icon/icon_mp_arrow.png differ diff --git a/src/main/resources/static/img/icon/icon_new.png b/src/main/resources/static/img/icon/icon_new.png new file mode 100644 index 0000000..519aa38 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_new.png differ diff --git a/src/main/resources/static/img/icon/icon_notice_star.png b/src/main/resources/static/img/icon/icon_notice_star.png new file mode 100644 index 0000000..597f730 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_notice_star.png differ diff --git a/src/main/resources/static/img/icon/icon_page_arrow_l.png b/src/main/resources/static/img/icon/icon_page_arrow_l.png new file mode 100644 index 0000000..869d931 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_page_arrow_l.png differ diff --git a/src/main/resources/static/img/icon/icon_password.png b/src/main/resources/static/img/icon/icon_password.png new file mode 100644 index 0000000..2b98bd4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_password.png differ diff --git a/src/main/resources/static/img/icon/icon_petals01.png b/src/main/resources/static/img/icon/icon_petals01.png new file mode 100644 index 0000000..a596d35 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_petals01.png differ diff --git a/src/main/resources/static/img/icon/icon_petals02.png b/src/main/resources/static/img/icon/icon_petals02.png new file mode 100644 index 0000000..bb4fbf1 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_petals02.png differ diff --git a/src/main/resources/static/img/icon/icon_petals03.png b/src/main/resources/static/img/icon/icon_petals03.png new file mode 100644 index 0000000..b50d883 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_petals03.png differ diff --git a/src/main/resources/static/img/icon/icon_plus.png b/src/main/resources/static/img/icon/icon_plus.png new file mode 100644 index 0000000..b9d069e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_plus.png differ diff --git a/src/main/resources/static/img/icon/icon_portal_circle01.png b/src/main/resources/static/img/icon/icon_portal_circle01.png new file mode 100644 index 0000000..45a2ba7 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_portal_circle01.png differ diff --git a/src/main/resources/static/img/icon/icon_portal_circle02.png b/src/main/resources/static/img/icon/icon_portal_circle02.png new file mode 100644 index 0000000..47e0580 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_portal_circle02.png differ diff --git a/src/main/resources/static/img/icon/icon_portal_circle03.png b/src/main/resources/static/img/icon/icon_portal_circle03.png new file mode 100644 index 0000000..4036f9e Binary files /dev/null and b/src/main/resources/static/img/icon/icon_portal_circle03.png differ diff --git a/src/main/resources/static/img/icon/icon_profile.png b/src/main/resources/static/img/icon/icon_profile.png new file mode 100644 index 0000000..5b77f5f Binary files /dev/null and b/src/main/resources/static/img/icon/icon_profile.png differ diff --git a/src/main/resources/static/img/icon/icon_radio_off.png b/src/main/resources/static/img/icon/icon_radio_off.png new file mode 100644 index 0000000..dfd3f32 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_radio_off.png differ diff --git a/src/main/resources/static/img/icon/icon_radio_off2.png b/src/main/resources/static/img/icon/icon_radio_off2.png new file mode 100644 index 0000000..2ede14d Binary files /dev/null and b/src/main/resources/static/img/icon/icon_radio_off2.png differ diff --git a/src/main/resources/static/img/icon/icon_radio_on.png b/src/main/resources/static/img/icon/icon_radio_on.png new file mode 100644 index 0000000..be8dbd9 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_radio_on.png differ diff --git a/src/main/resources/static/img/icon/icon_radio_on2.png b/src/main/resources/static/img/icon/icon_radio_on2.png new file mode 100644 index 0000000..6ea192a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_radio_on2.png differ diff --git a/src/main/resources/static/img/icon/icon_refresh.png b/src/main/resources/static/img/icon/icon_refresh.png new file mode 100644 index 0000000..8b9655f Binary files /dev/null and b/src/main/resources/static/img/icon/icon_refresh.png differ diff --git a/src/main/resources/static/img/icon/icon_search.png b/src/main/resources/static/img/icon/icon_search.png new file mode 100644 index 0000000..6d21ecb Binary files /dev/null and b/src/main/resources/static/img/icon/icon_search.png differ diff --git a/src/main/resources/static/img/icon/icon_search2.png b/src/main/resources/static/img/icon/icon_search2.png new file mode 100644 index 0000000..0ed1dab Binary files /dev/null and b/src/main/resources/static/img/icon/icon_search2.png differ diff --git a/src/main/resources/static/img/icon/icon_select_arrow_down.png b/src/main/resources/static/img/icon/icon_select_arrow_down.png new file mode 100644 index 0000000..6bbaf2a Binary files /dev/null and b/src/main/resources/static/img/icon/icon_select_arrow_down.png differ diff --git a/src/main/resources/static/img/icon/icon_select_arrow_down2.png b/src/main/resources/static/img/icon/icon_select_arrow_down2.png new file mode 100644 index 0000000..ac427eb Binary files /dev/null and b/src/main/resources/static/img/icon/icon_select_arrow_down2.png differ diff --git a/src/main/resources/static/img/icon/icon_slick_dot.png b/src/main/resources/static/img/icon/icon_slick_dot.png new file mode 100644 index 0000000..df0a71b Binary files /dev/null and b/src/main/resources/static/img/icon/icon_slick_dot.png differ diff --git a/src/main/resources/static/img/icon/icon_slick_dot_active.png b/src/main/resources/static/img/icon/icon_slick_dot_active.png new file mode 100644 index 0000000..85dcb89 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_slick_dot_active.png differ diff --git a/src/main/resources/static/img/icon/icon_slick_next.png b/src/main/resources/static/img/icon/icon_slick_next.png new file mode 100644 index 0000000..52c2348 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_slick_next.png differ diff --git a/src/main/resources/static/img/icon/icon_slick_prev.png b/src/main/resources/static/img/icon/icon_slick_prev.png new file mode 100644 index 0000000..d8886df Binary files /dev/null and b/src/main/resources/static/img/icon/icon_slick_prev.png differ diff --git a/src/main/resources/static/img/icon/icon_sub_home.png b/src/main/resources/static/img/icon/icon_sub_home.png new file mode 100644 index 0000000..cae8f71 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_sub_home.png differ diff --git a/src/main/resources/static/img/icon/icon_trash.png b/src/main/resources/static/img/icon/icon_trash.png new file mode 100644 index 0000000..f2733b7 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_trash.png differ diff --git a/src/main/resources/static/img/icon/icon_trash2.png b/src/main/resources/static/img/icon/icon_trash2.png new file mode 100644 index 0000000..e278e16 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_trash2.png differ diff --git a/src/main/resources/static/img/icon/icon_trash3.png b/src/main/resources/static/img/icon/icon_trash3.png new file mode 100644 index 0000000..3e52eb9 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_trash3.png differ diff --git a/src/main/resources/static/img/icon/icon_trash4.png b/src/main/resources/static/img/icon/icon_trash4.png new file mode 100644 index 0000000..0e332f4 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_trash4.png differ diff --git a/src/main/resources/static/img/icon/icon_user.png b/src/main/resources/static/img/icon/icon_user.png new file mode 100644 index 0000000..47933c0 Binary files /dev/null and b/src/main/resources/static/img/icon/icon_user.png differ diff --git a/src/main/resources/static/img/img_api_structure01.png b/src/main/resources/static/img/img_api_structure01.png new file mode 100644 index 0000000..2f596e7 Binary files /dev/null and b/src/main/resources/static/img/img_api_structure01.png differ diff --git a/src/main/resources/static/img/img_api_structure02.png b/src/main/resources/static/img/img_api_structure02.png new file mode 100644 index 0000000..15cbfc6 Binary files /dev/null and b/src/main/resources/static/img/img_api_structure02.png differ diff --git a/src/main/resources/static/img/img_api_structure03.png b/src/main/resources/static/img/img_api_structure03.png new file mode 100644 index 0000000..fc93d9d Binary files /dev/null and b/src/main/resources/static/img/img_api_structure03.png differ diff --git a/src/main/resources/static/img/img_api_structure04.png b/src/main/resources/static/img/img_api_structure04.png new file mode 100644 index 0000000..8d512d1 Binary files /dev/null and b/src/main/resources/static/img/img_api_structure04.png differ diff --git a/src/main/resources/static/img/img_api_structure05.png b/src/main/resources/static/img/img_api_structure05.png new file mode 100644 index 0000000..549ba68 Binary files /dev/null and b/src/main/resources/static/img/img_api_structure05.png differ diff --git a/src/main/resources/static/img/img_con_tit.png b/src/main/resources/static/img/img_con_tit.png new file mode 100644 index 0000000..0079bed Binary files /dev/null and b/src/main/resources/static/img/img_con_tit.png differ diff --git a/src/main/resources/static/img/img_con_tit2.png b/src/main/resources/static/img/img_con_tit2.png new file mode 100644 index 0000000..80d4fa1 Binary files /dev/null and b/src/main/resources/static/img/img_con_tit2.png differ diff --git a/src/main/resources/static/img/img_mainslick2_m.png b/src/main/resources/static/img/img_mainslick2_m.png new file mode 100644 index 0000000..0e5b291 Binary files /dev/null and b/src/main/resources/static/img/img_mainslick2_m.png differ diff --git a/src/main/resources/static/img/img_mainslick2_pc.png b/src/main/resources/static/img/img_mainslick2_pc.png new file mode 100644 index 0000000..38fa528 Binary files /dev/null and b/src/main/resources/static/img/img_mainslick2_pc.png differ diff --git a/src/main/resources/static/img/img_mainslick3_m.png b/src/main/resources/static/img/img_mainslick3_m.png new file mode 100644 index 0000000..ac7980b Binary files /dev/null and b/src/main/resources/static/img/img_mainslick3_m.png differ diff --git a/src/main/resources/static/img/img_mainslick3_pc.png b/src/main/resources/static/img/img_mainslick3_pc.png new file mode 100644 index 0000000..c0e3f0a Binary files /dev/null and b/src/main/resources/static/img/img_mainslick3_pc.png differ diff --git a/src/main/resources/static/img/img_mainslick_m.png b/src/main/resources/static/img/img_mainslick_m.png new file mode 100644 index 0000000..c16e3eb Binary files /dev/null and b/src/main/resources/static/img/img_mainslick_m.png differ diff --git a/src/main/resources/static/img/img_mainslick_pc.png b/src/main/resources/static/img/img_mainslick_pc.png new file mode 100644 index 0000000..5f85a35 Binary files /dev/null and b/src/main/resources/static/img/img_mainslick_pc.png differ diff --git a/src/main/resources/static/img/img_mask_group.png b/src/main/resources/static/img/img_mask_group.png new file mode 100644 index 0000000..6827368 Binary files /dev/null and b/src/main/resources/static/img/img_mask_group.png differ diff --git a/src/main/resources/static/img/img_mask_group2.png b/src/main/resources/static/img/img_mask_group2.png new file mode 100644 index 0000000..1bd5477 Binary files /dev/null and b/src/main/resources/static/img/img_mask_group2.png differ diff --git a/src/main/resources/static/img/img_nodata.png b/src/main/resources/static/img/img_nodata.png new file mode 100644 index 0000000..8ca6040 Binary files /dev/null and b/src/main/resources/static/img/img_nodata.png differ diff --git a/src/main/resources/static/img/img_nodata2.png b/src/main/resources/static/img/img_nodata2.png new file mode 100644 index 0000000..38052ba Binary files /dev/null and b/src/main/resources/static/img/img_nodata2.png differ diff --git a/src/main/resources/static/img/logo/img_email_logo.png b/src/main/resources/static/img/logo/img_email_logo.png new file mode 100644 index 0000000..87d27d4 Binary files /dev/null and b/src/main/resources/static/img/logo/img_email_logo.png differ diff --git a/src/main/resources/static/img/logo/img_email_logo2.png b/src/main/resources/static/img/logo/img_email_logo2.png new file mode 100644 index 0000000..61664ef Binary files /dev/null and b/src/main/resources/static/img/logo/img_email_logo2.png differ diff --git a/src/main/resources/static/img/logo/img_logo.png b/src/main/resources/static/img/logo/img_logo.png new file mode 100644 index 0000000..ff3ff5d Binary files /dev/null and b/src/main/resources/static/img/logo/img_logo.png differ diff --git a/src/main/resources/static/img/logo/img_logo2.png b/src/main/resources/static/img/logo/img_logo2.png new file mode 100644 index 0000000..87d27d4 Binary files /dev/null and b/src/main/resources/static/img/logo/img_logo2.png differ diff --git a/src/main/resources/static/img/logo/img_logo3.png b/src/main/resources/static/img/logo/img_logo3.png new file mode 100644 index 0000000..812bfd0 Binary files /dev/null and b/src/main/resources/static/img/logo/img_logo3.png differ diff --git a/src/main/resources/static/img/logo/img_logo4.png b/src/main/resources/static/img/logo/img_logo4.png new file mode 100644 index 0000000..ff3ff5d Binary files /dev/null and b/src/main/resources/static/img/logo/img_logo4.png differ diff --git a/src/main/resources/static/img/logo/img_logo5.png b/src/main/resources/static/img/logo/img_logo5.png new file mode 100644 index 0000000..e10e5c7 Binary files /dev/null and b/src/main/resources/static/img/logo/img_logo5.png differ diff --git a/src/main/resources/static/img/logo/img_mlogo.png b/src/main/resources/static/img/logo/img_mlogo.png new file mode 100644 index 0000000..f7888e8 Binary files /dev/null and b/src/main/resources/static/img/logo/img_mlogo.png differ diff --git a/src/main/resources/static/img/logo/img_mlogo2.png b/src/main/resources/static/img/logo/img_mlogo2.png new file mode 100644 index 0000000..647d99b Binary files /dev/null and b/src/main/resources/static/img/logo/img_mlogo2.png differ diff --git a/src/main/resources/static/img/m_keyvisual_img.png b/src/main/resources/static/img/m_keyvisual_img.png new file mode 100644 index 0000000..932bc15 Binary files /dev/null and b/src/main/resources/static/img/m_keyvisual_img.png differ diff --git a/src/main/resources/static/img/menu.png b/src/main/resources/static/img/menu.png new file mode 100644 index 0000000..f54f035 Binary files /dev/null and b/src/main/resources/static/img/menu.png differ diff --git a/src/main/resources/static/img/pc_keyvisual_img.png b/src/main/resources/static/img/pc_keyvisual_img.png new file mode 100644 index 0000000..490fe09 Binary files /dev/null and b/src/main/resources/static/img/pc_keyvisual_img.png differ diff --git a/src/main/resources/static/js/ChartEditor.js b/src/main/resources/static/js/ChartEditor.js new file mode 100644 index 0000000..26d0f20 --- /dev/null +++ b/src/main/resources/static/js/ChartEditor.js @@ -0,0 +1,491 @@ +class ChartEditor { + constructor(container, layoutManager, dashboard) { + this.rootContainer = container; + this.layoutManager = layoutManager; + this.dashboard = dashboard; + this.targetContainerIndex = -1; + this.targetColumnIndex = -1; + this.tempChart = null; + this.chartPreview = null; + this.containerHeight = 0; + + this.chartEditorModel = [ + { + 'groupName': 'default', + 'groupTitle': '기본 정보', + 'fields': [ + { + 'path': 'contentId', + 'type': 'text', + 'label': 'Chart ID', + 'placeholder': 'chartId를 입력하세요' + }, + { + 'path': 'styles.width', + 'type': 'text', + 'label': '길이(px, %)', + 'placeholder': 'px, % 등 단위를 포함한 길이를 입력하세요' + }, + { + 'path': 'styles.height', + 'type': 'text', + 'label': '높이(px, %)', + 'placeholder': 'px, % 등 단위를 포함한 높이를 입력하세요' + }, + { + 'path': 'config.animation', + 'type': 'boolean', + 'label': 'Animation 사용' + } + ] + }, + { + 'groupName': 'title', + 'groupTitle': '제목', + 'fields': [ + { + 'path': 'config.title.text', + 'type': 'text', + 'label': '차트 제목', + 'placeholder': '차트 제목을 입력하세요' + } + ] + }, + { + 'groupName': 'tooltip', + 'groupTitle': 'Tooltip', + 'fields': [ + { + 'path': 'config.tooltip.show', + 'type': 'boolean', + 'label': 'Tooltip 표시' + }, + { + 'path': 'config.tooltip.trigger', + 'type': 'select', + 'label': 'Tooltip Trigger', + 'placeholder': 'Enter the trigger type', + 'options': ['item', 'axis', 'none'] + } + ] + }, + { + 'groupName': 'legend', + 'groupTitle': 'Legend', + 'fields': [ + { + 'path': 'config.legend.show', + 'type': 'boolean', + 'label': 'Legend 표시' + } + ] + }, + { + 'groupName': 'grid', + 'groupTitle': 'Grid', + 'fields': [ + { + 'path': 'config.grid.show', + 'type': 'boolean', + 'label': 'Grid 표시' + }, + { + 'path': 'config.grid.left', + 'type': 'text', + 'label': 'Grid Left', + 'placeholder': '좌측 여백' + }, + { + 'path': 'config.grid.right', + 'type': 'text', + 'label': 'Grid Right', + 'placeholder': '우측 여백' + }, + { + 'path': 'config.grid.top', + 'type': 'text', + 'label': 'Grid Top', + 'placeholder': '위쪽 여백' + }, + { + 'path': 'config.grid.bottom', + 'type': 'text', + 'label': 'Grid Bottom', + 'placeholder': '아래쪽 여백' + }, + { + 'path': 'config.grid.containLabel', + 'type': 'boolean', + 'label': 'Contain Label' + } + ] + }, + { + 'groupName': 'xAxis', + 'groupTitle': 'X축', + 'fields': [ + { + 'path': 'config.xAxis.show', + 'type': 'boolean', + 'label': 'X축 표시' + }, + { + 'path': 'config.xAxis.type', + 'type': 'select', + 'label': 'X축 유형', + 'placeholder': 'X축 유형을 선택하세요', + 'options': ['category', 'value', 'time'] + } + ] + }, + { + 'groupName': 'yAxis', + 'groupTitle': 'Y축', + 'fields': [ + { + 'path': 'config.yAxis[0].show', + 'type': 'boolean', + 'label': 'Y축 표시' + }, + { + 'path': 'config.yAxis[0].name', + 'type': 'text', + 'label': 'Y축 이름' + }, + { + 'path': 'config.yAxis[0].type', + 'type': 'select', + 'label': 'Y축 유형', + 'placeholder': 'Y축 유형을 선택하세요', + 'options': ['category', 'value', 'time'] + }, + { + 'path': 'config.yAxis[0].position', + 'type': 'select', + 'label': 'Y축 위치', + 'placeholder': 'Y축 위치를 선택하세요', + 'options': ['left', 'right'] + } + ] + }, + { + 'groupName': 'toolbox', + 'groupTitle': 'Toolbox', + 'fields': [ + { + 'path': 'config.toolbox.show', + 'type': 'boolean', + 'label': 'Toolbox 표시', + 'placeholder': 'Check to show toolbox' + }, + { + 'path': 'config.toolbox.feature.saveAsImage.show', + 'type': 'boolean', + 'label': 'Save as Image 사용' + } + ] + } + ]; + this.seriesConfigModel = [ + { + 'groupName': 'default', + 'groupTitle': '시리즈 정보', + 'fields': [ + { + 'path': 'seriesConfig[0].queryType', + 'type': 'select', + 'label': 'Query Type', + 'options': ['elasticsearch'] + }, + // { + // 'path': 'seriesConfig[0].type', + // 'type': 'select', + // 'label': '차트 유형', + // 'placeholder': '차트 유형을 선택하세요', + // 'options': ['bar', 'line', 'pie'] + // }, + { + 'path': 'seriesConfig[0].index', + 'type': 'text', + 'label': 'Elasticsearch Index', + 'placeholder': 'Elasticsearch Index를 입력하세요' + }, + { + 'path': 'seriesConfig[0].query', + 'type': 'textarea', + 'label': 'Elasticsearch Query' + }, + { + 'path': 'seriesConfig[0].queryResult', + 'type': 'textarea', + 'label': 'Elasticsearch Query Result' + }, + { + 'path': 'seriesConfig[0].dataPath', + 'type': 'text', + 'label': '데이터 경로', + 'placeholder': '데이터 경로를 입력하세요' + } + ] + } + ]; + } + + initChartEditor() { + + const chartEditorPopup = ` + `; + + $(this.rootContainer).parent().append(chartEditorPopup); + + //add event to modal show + $('#chart_editor_modal').on('shown.bs.modal', (event) => { + let chartContainer = document.getElementById('chart-preview'); + let rect = chartContainer.getBoundingClientRect(); + let width = rect.width; // Precise width + let height = rect.height; // Precise height + this.chartPreview = echarts.init(document.getElementById('chart-preview'), 'dark', { + width: width, height: height + }); + this.drawCharts(); + }); + } + + showChartEditor(isNew, tempChart, containerIndex, columnIndex) { + this.targetContainerIndex = containerIndex; + this.targetColumnIndex = columnIndex; + this.tempChart = tempChart; + if (isNew) { + $('.add-chart').show(); + $('.save-chart').hide(); + } else { + $('.add-chart').hide(); + $('.save-chart').show(); + } + + let flatModel = LayoutUtil.flattenObject(tempChart); + + $('#chart_editor_modal').find('input, select, textarea').each((index, element) => { + if ($(element).attr('type') === 'checkbox') { + $(element).prop('checked', false); + } + $(element).val(''); + }); + + _.forEach(flatModel, (value, key) => { + + const inputSelector = `input[name="${key}"]`; + const selectSelector = `select[name="${key}"]`; + const textareaSelector = `textarea[name="${key}"]`; + + const $input = $('#chart_editor_modal').find(inputSelector); + const $select = $('#chart_editor_modal').find(selectSelector); + const $textarea = $('#chart_editor_modal').find(textareaSelector); + + if ($input.length > 0 && $input.attr('type') === 'checkbox') { + // If it's a checkbox, update its 'checked' property + $input.prop('checked', value); + } else if ($input.length > 0 || $select.length > 0 || $textarea.length > 0) { + // If any input, select, or textarea is found, update its value + $($input.add($select).add($textarea)).val(value); + } else { + // If no elements are found, log to the console + console.log(`Element not found for name: ${key}`); + } + }); + + $('#chart_editor_modal').modal('show'); + console.log('chart_editor_modal show'); + + this.bindEvents(); + } + + addChart() { + $('#chart_editor_modal').find('input, select, textarea').each((index, element) => { + const fieldName = $(element).attr('name'); + const newValue = LayoutUtil.getFieldValue(element); + if (fieldName !== '') { + _.set(this.tempChart, fieldName, newValue); + } + }); + this.layoutManager.layoutData.children[this.targetContainerIndex].children.push(JSON.parse(JSON.stringify(this.tempChart))); + this.tempChart = null; + this.targetContainerIndex = -1; + this.targetColumnIndex = -1; + + this.layoutManager.resetLayout(); + $('#chart_editor_modal').modal('hide'); + } + + cleanUpEvents() { + console.log('cleanUpEvents'); + $('.add-chart').off('click'); + $('.save-chart').off('click'); + } + + saveChart() { + console.log('saveChart'); + + $('#chart_editor_modal').find('input, select, textarea').each((index, element) => { + const fieldName = $(element).attr('name'); + const newValue = LayoutUtil.getFieldValue(element); + if (fieldName !== undefined && fieldName !== '') { + _.set(this.tempChart, fieldName, newValue); + } + }); + const json = JSON.stringify(this.tempChart, LayoutUtil.echartReplacer, 2); + console.log(json); + this.layoutManager.layoutData.children[this.targetContainerIndex].children[this.targetColumnIndex] = JSON.parse(json); + this.targetContainerIndex = -1; + this.targetColumnIndex = -1; + this.layoutManager.resetLayout(); + $('#chart_editor_modal').modal('hide'); + } + + refreshChart(chartInfo) { + console.log('refreshChart'); + + return new Promise((resolve, reject) => { + let option = JSON.parse(JSON.stringify(chartInfo.config)); + option.series = []; + + let self = this; + Promise.all(this.tempChart.seriesConfig.map(config => this.dashboard.requestQuery(config))).then(async (results) => { + await self.dashboard.updateChartSeries(option, results, chartInfo, (index, result) => { + $('#chart_editor_modal').find(`textarea[name='seriesConfig[${index}].queryResult']`).val('result = ' + JSON.stringify(result, null, 2)); + }); + + document.getElementById('echartOption').value = JSON.stringify(option, null, 2); + self.chartPreview.setOption(option); + resolve(); + }).catch((error) => { + console.error('Error fetching data for preview: ', error); + reject(error); + }); + + }); + } + + drawCharts() { + console.log('drawCharts'); + + const promises = [this.refreshChart(this.tempChart)]; + + Promise.all(promises).then(() => console.log('Chart Preview is completed')).catch(error => console.error('An error occurred:', error)); + } + + bindEvents() { + $('.add-chart').off('click').on('click', (event) => { + this.addChart(); + }); + + $('.save-chart').off('click').on('click', (event) => { + this.saveChart(); + }); + + $('#chart_editor_modal').find('input, select, textarea').each((index, element) => { + $(element).off('change').on('change', (event) => { + console.log('change event'); + const fieldName = $(event.currentTarget).attr('name'); + const newValue = LayoutUtil.getFieldValue(event.currentTarget); + if (fieldName !== '') { + _.set(this.tempChart, fieldName, newValue); + } + this.refreshChart(this.tempChart); + }); + }); + + $('#chart_editor_modal').on('hidden.bs.modal', (event) => { + if (this.chartPreview != null && this.chartPreview.dispose) { + this.chartPreview.dispose(); + this.chartPreview = null; + } + + this.cleanUpEvents(); + }); + } +} diff --git a/src/main/resources/static/js/Dashboard.js b/src/main/resources/static/js/Dashboard.js new file mode 100644 index 0000000..43f6235 --- /dev/null +++ b/src/main/resources/static/js/Dashboard.js @@ -0,0 +1,344 @@ +class Dashboard { + + constructor(layoutData) { + this.layoutData = layoutData || {}; + this.fromDateTarget = 'fromDate'; + this.toDateTarget = 'toDate'; + this.charts = []; + this.theme = 'dark'; + this.requestUrl = '/mgmt/dashboard/search.do'; + + } + + bindEvents() { + const events = [{selector: '.refresh', action: this.refresh.bind(this)}]; + + for (let event of events) { + $(document).off('click', event.selector).on('click', event.selector, event.action); + } + } + + getDateTemplate(id, label) { + return ` +
+
+ + +
+ + + +
+ `; + } + + init(chartAreaId) { + console.log('Dashboard init'); + this.chartAreaId = chartAreaId; + this.initDate(); + this.initCharts(); + this.drawCharts(); + + window.addEventListener('resize', this.resizeAllCharts.bind(this)); + } + + initCharts() { + console.log('initCharts'); + this.charts = []; + if (this.layoutData.children) { + this.layoutData.children.forEach((row) => { + row.children.forEach((chartInfo) => { + this.charts.push(chartInfo); + }); + }); + } + } + + formatDate(isoString) { + const date = new Date(isoString); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); // +1 because getMonth() returns 0-11 + const day = String(date.getDate()).padStart(2, '0'); + + return `${year}-${month}-${day}`; + } + + formatTime(isoString) { + const date = new Date(isoString); + const hour = String(date.getHours()).padStart(2, '0'); + const minute = String(date.getMinutes()).padStart(2, '0'); + return `${hour}:${minute}:00`; + } + + formatDateTime(isoString) { + return this.formatDate(isoString) + 'T' + this.formatTime(isoString); + } + + startOfDay(isoString) { + return this.formatDate(isoString) + 'T00:00:00'; + } + + initDate() { + const ko = tempusDominus.locales.ko.localization; + const fromDateElement = document.getElementById(this.fromDateTarget); + $(fromDateElement).data('td-target-input', 'nearest'); + $(fromDateElement).data('td-target-toggle', 'nearest'); + + const toDateElement = document.getElementById(this.toDateTarget); + $(toDateElement).data('td-target-input', 'nearest'); + $(toDateElement).data('td-target-toggle', 'nearest'); + + $(fromDateElement).append(this.getDateTemplate(this.fromDateTarget, 'From')); + $(toDateElement).append(this.getDateTemplate(this.toDateTarget, 'To')); + + this.fromDate = new tempusDominus.TempusDominus(fromDateElement, { + localization: ko, defaultDate: this.startOfDay(new Date()) + }); + this.toDate = new tempusDominus.TempusDominus(toDateElement, { + useCurrent: false, localization: ko, defaultDate: new Date() + }); + + fromDateElement.addEventListener(tempusDominus.Namespace.events.change, (e) => { + this.toDate.updateOptions({ + restrictions: { + minDate: e.detail.date + } + }); + }); + + const subscription = this.toDate.subscribe(tempusDominus.Namespace.events.change, (e) => { + this.fromDate.updateOptions({ + restrictions: { + maxDate: e.date + } + }); + }); + } + + requestPost(url, data, hds) { + var deferred = $.Deferred(); + + var headers = $.extend({ + 'Content-Type': 'application/json; charset=utf-8' + }, hds); + + if (headers['Content-Type'].startsWith('application/json')) { + data = JSON.stringify(data); + } + + $.ajax({ + url: url, async: true, method: 'POST', data: data, headers: headers + }).done((response) => { + deferred.resolve(response); + }).fail((response, textStatus, errorThrown) => { + deferred.reject(response, textStatus, errorThrown); + }); + return deferred.promise(); + }; + + requestQuery(seriesConfig) { + let request = null; + try { + if (seriesConfig.queryType === 'elasticsearch') { + if (seriesConfig.query && seriesConfig.index !== '') { + let requestQuery = JSON.parse(seriesConfig.query); + requestQuery.query = requestQuery.query || {}; + requestQuery.query.bool = requestQuery.query.bool || {}; + requestQuery.query.bool.filter = requestQuery.query.bool.filter || []; + requestQuery.query.bool.filter.push({ + 'range': { + '@timestamp': { + 'gte': this.formatDateTime(this.fromDate.dates.picked[0]), + 'lte': this.formatDateTime(this.toDate.dates.picked[0]), + 'time_zone': 'Asia/Seoul' + } + } + }); + + request = { + query: JSON.stringify(requestQuery), index: seriesConfig.index + }; + return this.requestPost(this.requestUrl, request, {}); + } else { + console.log('query is empty'); + return Promise.resolve(); + } + } + } catch (error) { + console.error('Error fetching data for ' + seriesConfig.contentId + ': ', error); + return Promise.reject(error); + } + } + + resizeAllCharts() { + this.charts.forEach(chartInfo => { + let chartContainer = document.getElementById('chart_' + chartInfo.contentId); + let rect = chartContainer.getBoundingClientRect(); + let width = rect.width; // Precise width + let height = rect.height; // Precise height + if (chartInfo.echart) { + chartInfo.echart.resize({width: width, height: height}); + } + }); + } + + initializeChart(chartInfo) { + console.log('initializeChart: ' + chartInfo.contentId); + let chartContainer = document.getElementById('chart_' + chartInfo.contentId); + let rect = chartContainer.getBoundingClientRect(); + let width = rect.width; // Precise width + let height = rect.height; // Precise height + + chartInfo.echart = echarts.init(document.getElementById('chart_' + chartInfo.contentId), this.theme, { + width: width, height: height + }); + } + + executeScript(result, script) { + console.log('executeScript'); + if (script) { + return new Promise((resolve, reject) => { + let resultFrame = document.getElementById('mapperScript'); + window.preRequestComplete = (result, error) => { + if (error) { + console.log('Error executing script: ', error); + reject(error); + } else { + resolve(result); + } + }; + window.result = result; + resultFrame.srcdoc = ``; + }); + } else { + console.log('No script to execute'); + return Promise.resolve(); + } + + } + + async refresh(event) { + console.log('refresh'); + + for (let i = 0; i < this.charts.length; i++) { + const chartInfo = this.charts[i]; + try { + await this.refreshChart(chartInfo); + } catch (error) { + console.error(`Error refreshing chart ${chartInfo.contentId}:`, error); + } + } + console.log('All Charts requests are complete'); + // const promises = this.charts.map(info => this.refreshChart(info)); + // Promise.all(promises).then(() => console.log('All Charts requests are complete')).catch(error => console.error('An error occurred:', error)); + } + + drawCharts() { + console.log('drawCharts'); + this.charts.forEach(info => this.initializeChart(info)); + + this.refresh(); + this.bindEvents(); + } + + async updateChartSeries(option, results, chartInfo, callback) { + console.log('updateChartSeries'); + for (let i = 0; i < results.length; i++) { + const result = results[i]; + if (result){ + let config = chartInfo.seriesConfig[i]; + let parsedResult = JSON.parse(result); + + if (callback) { + callback(i, parsedResult); + } + try { + console.log('start executeScript'); + const dataY = await this.executeScript(parsedResult, config.mapperY); + + if (Array.isArray(dataY)) { + dataY.forEach(item => { + option.series.push(item); + }); + } else { + option.series.push(dataY); + } + const dataX = await this.executeScript(parsedResult, config.mapperX); + option.xAxis.data = dataX; + + console.log('stop executeScript'); + } catch (error) { + console.error(`Error updating series for chart ${chartInfo.contentId}:`, error); + } + } + } + } + + async refreshChart(chartInfo) { + + try { + console.log('refreshChart'); + + let option = JSON.parse(JSON.stringify(chartInfo.config)); + option.series = []; + + const results = await Promise.all(chartInfo.seriesConfig.map(config => this.requestQuery(config))); + await this.updateChartSeries(option, results, chartInfo); + + // Clear the chart and set the new option + chartInfo.echart.clear(); + chartInfo.echart.setOption(option); + + console.log('Chart refreshed successfully'); + + } catch (error) { + console.error('Error fetching data for ' + chartInfo.contentId + ': ', error); + throw error; // Rethrow the error if you need to catch it higher up in the call stack + } + } + +} diff --git a/src/main/resources/static/js/LayoutData.js b/src/main/resources/static/js/LayoutData.js new file mode 100644 index 0000000..0ce5bd3 --- /dev/null +++ b/src/main/resources/static/js/LayoutData.js @@ -0,0 +1,208 @@ +class LayoutData { + + constructor() { + + this.data = { + "type": "root", + "styles": { + "display": "flex", + "flex-direction": "column", + "justify-content": "start", + "align-items": "flex-start", + "gap": "10px", + "width": "100%", + "height": "1000px", + "position": "relative", + "overflow": "auto", + "background-color": "#100C2A" + }, + "children": [ + { + "type": "container", + "styles": { + "display": "flex", + "flex-direction": "row", + "width": "100%", + "height": "100%" + }, + "contentId": "row1", + "children": [ + { + "type": "chart", + "contentId": "chart1", + "styles": { + "width": "100%", + "height": "100%" + }, + "config": { + "tooltip": { + "show": true, + "trigger": "item" + }, + "title": { + "text": "알림 건수" + }, + "animation": false, + "xAxis": { + "type": "category", + "show": true + }, + "yAxis": [ + { + "show": true, + "type": "value", + "position": "left", + "name": "" + } + ], + "legend": { + "show": false + }, + "grid": { + "show": false, + "left": "40", + "right": "40", + "top": "40", + "bottom": "40", + "containLabel": false + }, + "toolbox": { + "show": false, + "feature": { + "saveAsImage": { + "show": false + } + } + } + }, + "seriesConfig": [ + { + "index": ".ds-logs-generic-default*", + "queryType": "elasticsearch", + "query": "\n {\n \"size\": 0,\n \"query\": {\n \"bool\": {\n \"filter\": [\n {\n \"term\": {\n \"service.name\": \"elink1\"\n }\n }\n ]\n }\n },\n \"aggs\": {\n \"time_buckets\": {\n \"date_histogram\": {\n \"field\": \"@timestamp\",\n \"fixed_interval\": \"1h\"\n },\n \"aggs\": {\n \"breakdown\": {\n \"terms\": {\n \"field\": \"eaiSvcCd\",\n \"size\": 99\n }\n }\n }\n }\n }\n }", + "mapperX": "\n function(result) {\n let data = [];\n let buckets = get(result, \"aggregations.time_buckets.buckets\", []);\n buckets.forEach(bucket => {\n data.push(formatTime(bucket.key_as_string));\n });\n return data;\n }\n ", + "mapperY": "\n function(result){\n let data = [];\n\n let buckets = get(result, \"aggregations.time_buckets.buckets\", []);\n let items = {};\n const dates = buckets.map(bucket => formatTime(bucket.key_as_string));\n buckets.forEach(bucket => {\n bucket.breakdown.buckets.forEach(path => {\n items[path.key] = true;\n });\n });\n const itemKeys = Object.keys(items);\n data = itemKeys.map(path => {\n return {\n name: path,\n type: 'line',\n stack: 'value',\n data: dates.map(date => {\n const dateBucket = buckets.find(bucket => formatTime(bucket.key_as_string) === date);\n const pathBucket = dateBucket ? dateBucket.breakdown.buckets.find(pb => pb.key === path) : null;\n return pathBucket ? pathBucket.doc_count : 0;\n })\n };\n });\n return data; \n }\n ", + "queryResult": "result = {\n \"took\": 5,\n \"timed_out\": false,\n \"_shards\": {\n \"total\": 5,\n \"successful\": 5,\n \"skipped\": 0,\n \"failed\": 0\n },\n \"hits\": {\n \"total\": {\n \"value\": 8835,\n \"relation\": \"eq\"\n },\n \"max_score\": null,\n \"hits\": []\n },\n \"aggregations\": {\n \"time_buckets\": {\n \"buckets\": [\n {\n \"key_as_string\": \"2024-01-30T08:00:00.000Z\",\n \"key\": 1706601600000,\n \"doc_count\": 12,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 12\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-01-30T09:00:00.000Z\",\n \"key\": 1706605200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T10:00:00.000Z\",\n \"key\": 1706608800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T11:00:00.000Z\",\n \"key\": 1706612400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T12:00:00.000Z\",\n \"key\": 1706616000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T13:00:00.000Z\",\n \"key\": 1706619600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T14:00:00.000Z\",\n \"key\": 1706623200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T15:00:00.000Z\",\n \"key\": 1706626800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T16:00:00.000Z\",\n \"key\": 1706630400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T17:00:00.000Z\",\n \"key\": 1706634000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T18:00:00.000Z\",\n \"key\": 1706637600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T19:00:00.000Z\",\n \"key\": 1706641200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T20:00:00.000Z\",\n \"key\": 1706644800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T21:00:00.000Z\",\n \"key\": 1706648400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T22:00:00.000Z\",\n \"key\": 1706652000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-30T23:00:00.000Z\",\n \"key\": 1706655600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T00:00:00.000Z\",\n \"key\": 1706659200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T01:00:00.000Z\",\n \"key\": 1706662800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T02:00:00.000Z\",\n \"key\": 1706666400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T03:00:00.000Z\",\n \"key\": 1706670000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T04:00:00.000Z\",\n \"key\": 1706673600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T05:00:00.000Z\",\n \"key\": 1706677200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T06:00:00.000Z\",\n \"key\": 1706680800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T07:00:00.000Z\",\n \"key\": 1706684400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T08:00:00.000Z\",\n \"key\": 1706688000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T09:00:00.000Z\",\n \"key\": 1706691600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T10:00:00.000Z\",\n \"key\": 1706695200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T11:00:00.000Z\",\n \"key\": 1706698800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T12:00:00.000Z\",\n \"key\": 1706702400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T13:00:00.000Z\",\n \"key\": 1706706000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T14:00:00.000Z\",\n \"key\": 1706709600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T15:00:00.000Z\",\n \"key\": 1706713200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T16:00:00.000Z\",\n \"key\": 1706716800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T17:00:00.000Z\",\n \"key\": 1706720400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T18:00:00.000Z\",\n \"key\": 1706724000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T19:00:00.000Z\",\n \"key\": 1706727600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T20:00:00.000Z\",\n \"key\": 1706731200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T21:00:00.000Z\",\n \"key\": 1706734800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T22:00:00.000Z\",\n \"key\": 1706738400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-01-31T23:00:00.000Z\",\n \"key\": 1706742000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T00:00:00.000Z\",\n \"key\": 1706745600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T01:00:00.000Z\",\n \"key\": 1706749200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T02:00:00.000Z\",\n \"key\": 1706752800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T03:00:00.000Z\",\n \"key\": 1706756400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T04:00:00.000Z\",\n \"key\": 1706760000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T05:00:00.000Z\",\n \"key\": 1706763600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T06:00:00.000Z\",\n \"key\": 1706767200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T07:00:00.000Z\",\n \"key\": 1706770800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T08:00:00.000Z\",\n \"key\": 1706774400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T09:00:00.000Z\",\n \"key\": 1706778000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T10:00:00.000Z\",\n \"key\": 1706781600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T11:00:00.000Z\",\n \"key\": 1706785200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T12:00:00.000Z\",\n \"key\": 1706788800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T13:00:00.000Z\",\n \"key\": 1706792400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T14:00:00.000Z\",\n \"key\": 1706796000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T15:00:00.000Z\",\n \"key\": 1706799600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T16:00:00.000Z\",\n \"key\": 1706803200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T17:00:00.000Z\",\n \"key\": 1706806800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T18:00:00.000Z\",\n \"key\": 1706810400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T19:00:00.000Z\",\n \"key\": 1706814000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T20:00:00.000Z\",\n \"key\": 1706817600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T21:00:00.000Z\",\n \"key\": 1706821200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T22:00:00.000Z\",\n \"key\": 1706824800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-01T23:00:00.000Z\",\n \"key\": 1706828400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T00:00:00.000Z\",\n \"key\": 1706832000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T01:00:00.000Z\",\n \"key\": 1706835600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T02:00:00.000Z\",\n \"key\": 1706839200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T03:00:00.000Z\",\n \"key\": 1706842800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T04:00:00.000Z\",\n \"key\": 1706846400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T05:00:00.000Z\",\n \"key\": 1706850000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T06:00:00.000Z\",\n \"key\": 1706853600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T07:00:00.000Z\",\n \"key\": 1706857200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T08:00:00.000Z\",\n \"key\": 1706860800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T09:00:00.000Z\",\n \"key\": 1706864400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T10:00:00.000Z\",\n \"key\": 1706868000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T11:00:00.000Z\",\n \"key\": 1706871600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T12:00:00.000Z\",\n \"key\": 1706875200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T13:00:00.000Z\",\n \"key\": 1706878800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T14:00:00.000Z\",\n \"key\": 1706882400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T15:00:00.000Z\",\n \"key\": 1706886000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T16:00:00.000Z\",\n \"key\": 1706889600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T17:00:00.000Z\",\n \"key\": 1706893200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T18:00:00.000Z\",\n \"key\": 1706896800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T19:00:00.000Z\",\n \"key\": 1706900400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T20:00:00.000Z\",\n \"key\": 1706904000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T21:00:00.000Z\",\n \"key\": 1706907600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T22:00:00.000Z\",\n \"key\": 1706911200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-02T23:00:00.000Z\",\n \"key\": 1706914800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T00:00:00.000Z\",\n \"key\": 1706918400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T01:00:00.000Z\",\n \"key\": 1706922000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T02:00:00.000Z\",\n \"key\": 1706925600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T03:00:00.000Z\",\n \"key\": 1706929200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T04:00:00.000Z\",\n \"key\": 1706932800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T05:00:00.000Z\",\n \"key\": 1706936400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T06:00:00.000Z\",\n \"key\": 1706940000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T07:00:00.000Z\",\n \"key\": 1706943600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T08:00:00.000Z\",\n \"key\": 1706947200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T09:00:00.000Z\",\n \"key\": 1706950800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T10:00:00.000Z\",\n \"key\": 1706954400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T11:00:00.000Z\",\n \"key\": 1706958000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T12:00:00.000Z\",\n \"key\": 1706961600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T13:00:00.000Z\",\n \"key\": 1706965200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T14:00:00.000Z\",\n \"key\": 1706968800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T15:00:00.000Z\",\n \"key\": 1706972400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T16:00:00.000Z\",\n \"key\": 1706976000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T17:00:00.000Z\",\n \"key\": 1706979600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T18:00:00.000Z\",\n \"key\": 1706983200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T19:00:00.000Z\",\n \"key\": 1706986800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T20:00:00.000Z\",\n \"key\": 1706990400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T21:00:00.000Z\",\n \"key\": 1706994000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T22:00:00.000Z\",\n \"key\": 1706997600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-03T23:00:00.000Z\",\n \"key\": 1707001200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T00:00:00.000Z\",\n \"key\": 1707004800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T01:00:00.000Z\",\n \"key\": 1707008400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T02:00:00.000Z\",\n \"key\": 1707012000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T03:00:00.000Z\",\n \"key\": 1707015600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T04:00:00.000Z\",\n \"key\": 1707019200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T05:00:00.000Z\",\n \"key\": 1707022800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T06:00:00.000Z\",\n \"key\": 1707026400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T07:00:00.000Z\",\n \"key\": 1707030000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T08:00:00.000Z\",\n \"key\": 1707033600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T09:00:00.000Z\",\n \"key\": 1707037200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T10:00:00.000Z\",\n \"key\": 1707040800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T11:00:00.000Z\",\n \"key\": 1707044400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T12:00:00.000Z\",\n \"key\": 1707048000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T13:00:00.000Z\",\n \"key\": 1707051600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T14:00:00.000Z\",\n \"key\": 1707055200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T15:00:00.000Z\",\n \"key\": 1707058800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T16:00:00.000Z\",\n \"key\": 1707062400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T17:00:00.000Z\",\n \"key\": 1707066000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T18:00:00.000Z\",\n \"key\": 1707069600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T19:00:00.000Z\",\n \"key\": 1707073200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T20:00:00.000Z\",\n \"key\": 1707076800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T21:00:00.000Z\",\n \"key\": 1707080400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T22:00:00.000Z\",\n \"key\": 1707084000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-04T23:00:00.000Z\",\n \"key\": 1707087600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T00:00:00.000Z\",\n \"key\": 1707091200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T01:00:00.000Z\",\n \"key\": 1707094800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T02:00:00.000Z\",\n \"key\": 1707098400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T03:00:00.000Z\",\n \"key\": 1707102000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T04:00:00.000Z\",\n \"key\": 1707105600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T05:00:00.000Z\",\n \"key\": 1707109200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T06:00:00.000Z\",\n \"key\": 1707112800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T07:00:00.000Z\",\n \"key\": 1707116400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T08:00:00.000Z\",\n \"key\": 1707120000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T09:00:00.000Z\",\n \"key\": 1707123600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T10:00:00.000Z\",\n \"key\": 1707127200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T11:00:00.000Z\",\n \"key\": 1707130800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T12:00:00.000Z\",\n \"key\": 1707134400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T13:00:00.000Z\",\n \"key\": 1707138000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T14:00:00.000Z\",\n \"key\": 1707141600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T15:00:00.000Z\",\n \"key\": 1707145200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T16:00:00.000Z\",\n \"key\": 1707148800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T17:00:00.000Z\",\n \"key\": 1707152400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T18:00:00.000Z\",\n \"key\": 1707156000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T19:00:00.000Z\",\n \"key\": 1707159600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T20:00:00.000Z\",\n \"key\": 1707163200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T21:00:00.000Z\",\n \"key\": 1707166800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T22:00:00.000Z\",\n \"key\": 1707170400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-05T23:00:00.000Z\",\n \"key\": 1707174000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T00:00:00.000Z\",\n \"key\": 1707177600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T01:00:00.000Z\",\n \"key\": 1707181200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T02:00:00.000Z\",\n \"key\": 1707184800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T03:00:00.000Z\",\n \"key\": 1707188400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T04:00:00.000Z\",\n \"key\": 1707192000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T05:00:00.000Z\",\n \"key\": 1707195600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T06:00:00.000Z\",\n \"key\": 1707199200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T07:00:00.000Z\",\n \"key\": 1707202800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T08:00:00.000Z\",\n \"key\": 1707206400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T09:00:00.000Z\",\n \"key\": 1707210000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T10:00:00.000Z\",\n \"key\": 1707213600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T11:00:00.000Z\",\n \"key\": 1707217200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T12:00:00.000Z\",\n \"key\": 1707220800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T13:00:00.000Z\",\n \"key\": 1707224400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T14:00:00.000Z\",\n \"key\": 1707228000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T15:00:00.000Z\",\n \"key\": 1707231600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T16:00:00.000Z\",\n \"key\": 1707235200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T17:00:00.000Z\",\n \"key\": 1707238800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T18:00:00.000Z\",\n \"key\": 1707242400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T19:00:00.000Z\",\n \"key\": 1707246000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T20:00:00.000Z\",\n \"key\": 1707249600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T21:00:00.000Z\",\n \"key\": 1707253200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T22:00:00.000Z\",\n \"key\": 1707256800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-06T23:00:00.000Z\",\n \"key\": 1707260400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T00:00:00.000Z\",\n \"key\": 1707264000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T01:00:00.000Z\",\n \"key\": 1707267600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T02:00:00.000Z\",\n \"key\": 1707271200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T03:00:00.000Z\",\n \"key\": 1707274800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T04:00:00.000Z\",\n \"key\": 1707278400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T05:00:00.000Z\",\n \"key\": 1707282000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T06:00:00.000Z\",\n \"key\": 1707285600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T07:00:00.000Z\",\n \"key\": 1707289200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T08:00:00.000Z\",\n \"key\": 1707292800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T09:00:00.000Z\",\n \"key\": 1707296400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T10:00:00.000Z\",\n \"key\": 1707300000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T11:00:00.000Z\",\n \"key\": 1707303600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T12:00:00.000Z\",\n \"key\": 1707307200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T13:00:00.000Z\",\n \"key\": 1707310800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T14:00:00.000Z\",\n \"key\": 1707314400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T15:00:00.000Z\",\n \"key\": 1707318000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T16:00:00.000Z\",\n \"key\": 1707321600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T17:00:00.000Z\",\n \"key\": 1707325200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T18:00:00.000Z\",\n \"key\": 1707328800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T19:00:00.000Z\",\n \"key\": 1707332400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T20:00:00.000Z\",\n \"key\": 1707336000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T21:00:00.000Z\",\n \"key\": 1707339600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T22:00:00.000Z\",\n \"key\": 1707343200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-07T23:00:00.000Z\",\n \"key\": 1707346800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T00:00:00.000Z\",\n \"key\": 1707350400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T01:00:00.000Z\",\n \"key\": 1707354000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T02:00:00.000Z\",\n \"key\": 1707357600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T03:00:00.000Z\",\n \"key\": 1707361200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T04:00:00.000Z\",\n \"key\": 1707364800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T05:00:00.000Z\",\n \"key\": 1707368400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T06:00:00.000Z\",\n \"key\": 1707372000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T07:00:00.000Z\",\n \"key\": 1707375600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T08:00:00.000Z\",\n \"key\": 1707379200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T09:00:00.000Z\",\n \"key\": 1707382800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T10:00:00.000Z\",\n \"key\": 1707386400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T11:00:00.000Z\",\n \"key\": 1707390000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T12:00:00.000Z\",\n \"key\": 1707393600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T13:00:00.000Z\",\n \"key\": 1707397200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T14:00:00.000Z\",\n \"key\": 1707400800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T15:00:00.000Z\",\n \"key\": 1707404400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T16:00:00.000Z\",\n \"key\": 1707408000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T17:00:00.000Z\",\n \"key\": 1707411600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T18:00:00.000Z\",\n \"key\": 1707415200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T19:00:00.000Z\",\n \"key\": 1707418800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T20:00:00.000Z\",\n \"key\": 1707422400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T21:00:00.000Z\",\n \"key\": 1707426000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T22:00:00.000Z\",\n \"key\": 1707429600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-08T23:00:00.000Z\",\n \"key\": 1707433200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T00:00:00.000Z\",\n \"key\": 1707436800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T01:00:00.000Z\",\n \"key\": 1707440400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T02:00:00.000Z\",\n \"key\": 1707444000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T03:00:00.000Z\",\n \"key\": 1707447600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T04:00:00.000Z\",\n \"key\": 1707451200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T05:00:00.000Z\",\n \"key\": 1707454800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T06:00:00.000Z\",\n \"key\": 1707458400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T07:00:00.000Z\",\n \"key\": 1707462000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T08:00:00.000Z\",\n \"key\": 1707465600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T09:00:00.000Z\",\n \"key\": 1707469200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T10:00:00.000Z\",\n \"key\": 1707472800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T11:00:00.000Z\",\n \"key\": 1707476400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T12:00:00.000Z\",\n \"key\": 1707480000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T13:00:00.000Z\",\n \"key\": 1707483600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T14:00:00.000Z\",\n \"key\": 1707487200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T15:00:00.000Z\",\n \"key\": 1707490800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T16:00:00.000Z\",\n \"key\": 1707494400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T17:00:00.000Z\",\n \"key\": 1707498000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T18:00:00.000Z\",\n \"key\": 1707501600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T19:00:00.000Z\",\n \"key\": 1707505200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T20:00:00.000Z\",\n \"key\": 1707508800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T21:00:00.000Z\",\n \"key\": 1707512400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T22:00:00.000Z\",\n \"key\": 1707516000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-09T23:00:00.000Z\",\n \"key\": 1707519600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T00:00:00.000Z\",\n \"key\": 1707523200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T01:00:00.000Z\",\n \"key\": 1707526800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T02:00:00.000Z\",\n \"key\": 1707530400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T03:00:00.000Z\",\n \"key\": 1707534000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T04:00:00.000Z\",\n \"key\": 1707537600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T05:00:00.000Z\",\n \"key\": 1707541200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T06:00:00.000Z\",\n \"key\": 1707544800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T07:00:00.000Z\",\n \"key\": 1707548400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T08:00:00.000Z\",\n \"key\": 1707552000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T09:00:00.000Z\",\n \"key\": 1707555600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T10:00:00.000Z\",\n \"key\": 1707559200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T11:00:00.000Z\",\n \"key\": 1707562800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T12:00:00.000Z\",\n \"key\": 1707566400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T13:00:00.000Z\",\n \"key\": 1707570000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T14:00:00.000Z\",\n \"key\": 1707573600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T15:00:00.000Z\",\n \"key\": 1707577200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T16:00:00.000Z\",\n \"key\": 1707580800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T17:00:00.000Z\",\n \"key\": 1707584400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T18:00:00.000Z\",\n \"key\": 1707588000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T19:00:00.000Z\",\n \"key\": 1707591600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T20:00:00.000Z\",\n \"key\": 1707595200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T21:00:00.000Z\",\n \"key\": 1707598800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T22:00:00.000Z\",\n \"key\": 1707602400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-10T23:00:00.000Z\",\n \"key\": 1707606000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T00:00:00.000Z\",\n \"key\": 1707609600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T01:00:00.000Z\",\n \"key\": 1707613200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T02:00:00.000Z\",\n \"key\": 1707616800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T03:00:00.000Z\",\n \"key\": 1707620400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T04:00:00.000Z\",\n \"key\": 1707624000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T05:00:00.000Z\",\n \"key\": 1707627600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T06:00:00.000Z\",\n \"key\": 1707631200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T07:00:00.000Z\",\n \"key\": 1707634800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T08:00:00.000Z\",\n \"key\": 1707638400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T09:00:00.000Z\",\n \"key\": 1707642000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T10:00:00.000Z\",\n \"key\": 1707645600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T11:00:00.000Z\",\n \"key\": 1707649200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T12:00:00.000Z\",\n \"key\": 1707652800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T13:00:00.000Z\",\n \"key\": 1707656400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T14:00:00.000Z\",\n \"key\": 1707660000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T15:00:00.000Z\",\n \"key\": 1707663600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T16:00:00.000Z\",\n \"key\": 1707667200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T17:00:00.000Z\",\n \"key\": 1707670800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T18:00:00.000Z\",\n \"key\": 1707674400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T19:00:00.000Z\",\n \"key\": 1707678000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T20:00:00.000Z\",\n \"key\": 1707681600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T21:00:00.000Z\",\n \"key\": 1707685200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T22:00:00.000Z\",\n \"key\": 1707688800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-11T23:00:00.000Z\",\n \"key\": 1707692400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T00:00:00.000Z\",\n \"key\": 1707696000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T01:00:00.000Z\",\n \"key\": 1707699600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T02:00:00.000Z\",\n \"key\": 1707703200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T03:00:00.000Z\",\n \"key\": 1707706800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T04:00:00.000Z\",\n \"key\": 1707710400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T05:00:00.000Z\",\n \"key\": 1707714000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T06:00:00.000Z\",\n \"key\": 1707717600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T07:00:00.000Z\",\n \"key\": 1707721200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T08:00:00.000Z\",\n \"key\": 1707724800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T09:00:00.000Z\",\n \"key\": 1707728400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T10:00:00.000Z\",\n \"key\": 1707732000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T11:00:00.000Z\",\n \"key\": 1707735600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T12:00:00.000Z\",\n \"key\": 1707739200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T13:00:00.000Z\",\n \"key\": 1707742800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T14:00:00.000Z\",\n \"key\": 1707746400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T15:00:00.000Z\",\n \"key\": 1707750000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T16:00:00.000Z\",\n \"key\": 1707753600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T17:00:00.000Z\",\n \"key\": 1707757200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T18:00:00.000Z\",\n \"key\": 1707760800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T19:00:00.000Z\",\n \"key\": 1707764400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T20:00:00.000Z\",\n \"key\": 1707768000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T21:00:00.000Z\",\n \"key\": 1707771600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T22:00:00.000Z\",\n \"key\": 1707775200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-12T23:00:00.000Z\",\n \"key\": 1707778800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T00:00:00.000Z\",\n \"key\": 1707782400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T01:00:00.000Z\",\n \"key\": 1707786000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T02:00:00.000Z\",\n \"key\": 1707789600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T03:00:00.000Z\",\n \"key\": 1707793200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T04:00:00.000Z\",\n \"key\": 1707796800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T05:00:00.000Z\",\n \"key\": 1707800400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T06:00:00.000Z\",\n \"key\": 1707804000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T07:00:00.000Z\",\n \"key\": 1707807600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T08:00:00.000Z\",\n \"key\": 1707811200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T09:00:00.000Z\",\n \"key\": 1707814800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T10:00:00.000Z\",\n \"key\": 1707818400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T11:00:00.000Z\",\n \"key\": 1707822000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T12:00:00.000Z\",\n \"key\": 1707825600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T13:00:00.000Z\",\n \"key\": 1707829200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T14:00:00.000Z\",\n \"key\": 1707832800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T15:00:00.000Z\",\n \"key\": 1707836400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T16:00:00.000Z\",\n \"key\": 1707840000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T17:00:00.000Z\",\n \"key\": 1707843600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T18:00:00.000Z\",\n \"key\": 1707847200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T19:00:00.000Z\",\n \"key\": 1707850800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T20:00:00.000Z\",\n \"key\": 1707854400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T21:00:00.000Z\",\n \"key\": 1707858000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T22:00:00.000Z\",\n \"key\": 1707861600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-13T23:00:00.000Z\",\n \"key\": 1707865200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T00:00:00.000Z\",\n \"key\": 1707868800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T01:00:00.000Z\",\n \"key\": 1707872400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T02:00:00.000Z\",\n \"key\": 1707876000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T03:00:00.000Z\",\n \"key\": 1707879600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T04:00:00.000Z\",\n \"key\": 1707883200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T05:00:00.000Z\",\n \"key\": 1707886800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T06:00:00.000Z\",\n \"key\": 1707890400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T07:00:00.000Z\",\n \"key\": 1707894000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T08:00:00.000Z\",\n \"key\": 1707897600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T09:00:00.000Z\",\n \"key\": 1707901200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T10:00:00.000Z\",\n \"key\": 1707904800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T11:00:00.000Z\",\n \"key\": 1707908400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T12:00:00.000Z\",\n \"key\": 1707912000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T13:00:00.000Z\",\n \"key\": 1707915600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T14:00:00.000Z\",\n \"key\": 1707919200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T15:00:00.000Z\",\n \"key\": 1707922800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T16:00:00.000Z\",\n \"key\": 1707926400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T17:00:00.000Z\",\n \"key\": 1707930000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T18:00:00.000Z\",\n \"key\": 1707933600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T19:00:00.000Z\",\n \"key\": 1707937200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T20:00:00.000Z\",\n \"key\": 1707940800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T21:00:00.000Z\",\n \"key\": 1707944400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T22:00:00.000Z\",\n \"key\": 1707948000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-14T23:00:00.000Z\",\n \"key\": 1707951600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T00:00:00.000Z\",\n \"key\": 1707955200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T01:00:00.000Z\",\n \"key\": 1707958800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T02:00:00.000Z\",\n \"key\": 1707962400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T03:00:00.000Z\",\n \"key\": 1707966000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T04:00:00.000Z\",\n \"key\": 1707969600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T05:00:00.000Z\",\n \"key\": 1707973200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T06:00:00.000Z\",\n \"key\": 1707976800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T07:00:00.000Z\",\n \"key\": 1707980400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T08:00:00.000Z\",\n \"key\": 1707984000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T09:00:00.000Z\",\n \"key\": 1707987600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T10:00:00.000Z\",\n \"key\": 1707991200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T11:00:00.000Z\",\n \"key\": 1707994800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T12:00:00.000Z\",\n \"key\": 1707998400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T13:00:00.000Z\",\n \"key\": 1708002000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T14:00:00.000Z\",\n \"key\": 1708005600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T15:00:00.000Z\",\n \"key\": 1708009200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T16:00:00.000Z\",\n \"key\": 1708012800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T17:00:00.000Z\",\n \"key\": 1708016400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T18:00:00.000Z\",\n \"key\": 1708020000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T19:00:00.000Z\",\n \"key\": 1708023600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T20:00:00.000Z\",\n \"key\": 1708027200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T21:00:00.000Z\",\n \"key\": 1708030800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T22:00:00.000Z\",\n \"key\": 1708034400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-15T23:00:00.000Z\",\n \"key\": 1708038000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T00:00:00.000Z\",\n \"key\": 1708041600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T01:00:00.000Z\",\n \"key\": 1708045200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T02:00:00.000Z\",\n \"key\": 1708048800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T03:00:00.000Z\",\n \"key\": 1708052400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T04:00:00.000Z\",\n \"key\": 1708056000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T05:00:00.000Z\",\n \"key\": 1708059600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T06:00:00.000Z\",\n \"key\": 1708063200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T07:00:00.000Z\",\n \"key\": 1708066800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T08:00:00.000Z\",\n \"key\": 1708070400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T09:00:00.000Z\",\n \"key\": 1708074000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T10:00:00.000Z\",\n \"key\": 1708077600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T11:00:00.000Z\",\n \"key\": 1708081200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T12:00:00.000Z\",\n \"key\": 1708084800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T13:00:00.000Z\",\n \"key\": 1708088400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T14:00:00.000Z\",\n \"key\": 1708092000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T15:00:00.000Z\",\n \"key\": 1708095600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T16:00:00.000Z\",\n \"key\": 1708099200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T17:00:00.000Z\",\n \"key\": 1708102800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T18:00:00.000Z\",\n \"key\": 1708106400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T19:00:00.000Z\",\n \"key\": 1708110000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T20:00:00.000Z\",\n \"key\": 1708113600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T21:00:00.000Z\",\n \"key\": 1708117200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T22:00:00.000Z\",\n \"key\": 1708120800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-16T23:00:00.000Z\",\n \"key\": 1708124400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T00:00:00.000Z\",\n \"key\": 1708128000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T01:00:00.000Z\",\n \"key\": 1708131600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T02:00:00.000Z\",\n \"key\": 1708135200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T03:00:00.000Z\",\n \"key\": 1708138800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T04:00:00.000Z\",\n \"key\": 1708142400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T05:00:00.000Z\",\n \"key\": 1708146000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T06:00:00.000Z\",\n \"key\": 1708149600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T07:00:00.000Z\",\n \"key\": 1708153200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T08:00:00.000Z\",\n \"key\": 1708156800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T09:00:00.000Z\",\n \"key\": 1708160400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T10:00:00.000Z\",\n \"key\": 1708164000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T11:00:00.000Z\",\n \"key\": 1708167600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T12:00:00.000Z\",\n \"key\": 1708171200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T13:00:00.000Z\",\n \"key\": 1708174800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T14:00:00.000Z\",\n \"key\": 1708178400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T15:00:00.000Z\",\n \"key\": 1708182000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T16:00:00.000Z\",\n \"key\": 1708185600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T17:00:00.000Z\",\n \"key\": 1708189200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T18:00:00.000Z\",\n \"key\": 1708192800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T19:00:00.000Z\",\n \"key\": 1708196400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T20:00:00.000Z\",\n \"key\": 1708200000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T21:00:00.000Z\",\n \"key\": 1708203600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T22:00:00.000Z\",\n \"key\": 1708207200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-17T23:00:00.000Z\",\n \"key\": 1708210800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T00:00:00.000Z\",\n \"key\": 1708214400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T01:00:00.000Z\",\n \"key\": 1708218000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T02:00:00.000Z\",\n \"key\": 1708221600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T03:00:00.000Z\",\n \"key\": 1708225200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T04:00:00.000Z\",\n \"key\": 1708228800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T05:00:00.000Z\",\n \"key\": 1708232400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T06:00:00.000Z\",\n \"key\": 1708236000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T07:00:00.000Z\",\n \"key\": 1708239600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T08:00:00.000Z\",\n \"key\": 1708243200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T09:00:00.000Z\",\n \"key\": 1708246800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T10:00:00.000Z\",\n \"key\": 1708250400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T11:00:00.000Z\",\n \"key\": 1708254000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T12:00:00.000Z\",\n \"key\": 1708257600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T13:00:00.000Z\",\n \"key\": 1708261200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T14:00:00.000Z\",\n \"key\": 1708264800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T15:00:00.000Z\",\n \"key\": 1708268400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T16:00:00.000Z\",\n \"key\": 1708272000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T17:00:00.000Z\",\n \"key\": 1708275600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T18:00:00.000Z\",\n \"key\": 1708279200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T19:00:00.000Z\",\n \"key\": 1708282800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T20:00:00.000Z\",\n \"key\": 1708286400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T21:00:00.000Z\",\n \"key\": 1708290000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T22:00:00.000Z\",\n \"key\": 1708293600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-18T23:00:00.000Z\",\n \"key\": 1708297200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T00:00:00.000Z\",\n \"key\": 1708300800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T01:00:00.000Z\",\n \"key\": 1708304400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T02:00:00.000Z\",\n \"key\": 1708308000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T03:00:00.000Z\",\n \"key\": 1708311600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T04:00:00.000Z\",\n \"key\": 1708315200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T05:00:00.000Z\",\n \"key\": 1708318800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T06:00:00.000Z\",\n \"key\": 1708322400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T07:00:00.000Z\",\n \"key\": 1708326000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T08:00:00.000Z\",\n \"key\": 1708329600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T09:00:00.000Z\",\n \"key\": 1708333200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T10:00:00.000Z\",\n \"key\": 1708336800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T11:00:00.000Z\",\n \"key\": 1708340400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T12:00:00.000Z\",\n \"key\": 1708344000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T13:00:00.000Z\",\n \"key\": 1708347600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T14:00:00.000Z\",\n \"key\": 1708351200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T15:00:00.000Z\",\n \"key\": 1708354800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T16:00:00.000Z\",\n \"key\": 1708358400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T17:00:00.000Z\",\n \"key\": 1708362000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T18:00:00.000Z\",\n \"key\": 1708365600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T19:00:00.000Z\",\n \"key\": 1708369200000,\n \"doc_count\": 3192,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 3192\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-19T20:00:00.000Z\",\n \"key\": 1708372800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T21:00:00.000Z\",\n \"key\": 1708376400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T22:00:00.000Z\",\n \"key\": 1708380000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-19T23:00:00.000Z\",\n \"key\": 1708383600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T00:00:00.000Z\",\n \"key\": 1708387200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T01:00:00.000Z\",\n \"key\": 1708390800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T02:00:00.000Z\",\n \"key\": 1708394400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T03:00:00.000Z\",\n \"key\": 1708398000000,\n \"doc_count\": 2104,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 2104\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-20T04:00:00.000Z\",\n \"key\": 1708401600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T05:00:00.000Z\",\n \"key\": 1708405200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T06:00:00.000Z\",\n \"key\": 1708408800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T07:00:00.000Z\",\n \"key\": 1708412400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T08:00:00.000Z\",\n \"key\": 1708416000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T09:00:00.000Z\",\n \"key\": 1708419600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T10:00:00.000Z\",\n \"key\": 1708423200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T11:00:00.000Z\",\n \"key\": 1708426800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T12:00:00.000Z\",\n \"key\": 1708430400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T13:00:00.000Z\",\n \"key\": 1708434000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T14:00:00.000Z\",\n \"key\": 1708437600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T15:00:00.000Z\",\n \"key\": 1708441200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T16:00:00.000Z\",\n \"key\": 1708444800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T17:00:00.000Z\",\n \"key\": 1708448400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T18:00:00.000Z\",\n \"key\": 1708452000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T19:00:00.000Z\",\n \"key\": 1708455600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T20:00:00.000Z\",\n \"key\": 1708459200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T21:00:00.000Z\",\n \"key\": 1708462800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T22:00:00.000Z\",\n \"key\": 1708466400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-20T23:00:00.000Z\",\n \"key\": 1708470000000,\n \"doc_count\": 960,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 960\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-21T00:00:00.000Z\",\n \"key\": 1708473600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T01:00:00.000Z\",\n \"key\": 1708477200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T02:00:00.000Z\",\n \"key\": 1708480800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T03:00:00.000Z\",\n \"key\": 1708484400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T04:00:00.000Z\",\n \"key\": 1708488000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T05:00:00.000Z\",\n \"key\": 1708491600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T06:00:00.000Z\",\n \"key\": 1708495200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T07:00:00.000Z\",\n \"key\": 1708498800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T08:00:00.000Z\",\n \"key\": 1708502400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T09:00:00.000Z\",\n \"key\": 1708506000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T10:00:00.000Z\",\n \"key\": 1708509600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T11:00:00.000Z\",\n \"key\": 1708513200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T12:00:00.000Z\",\n \"key\": 1708516800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T13:00:00.000Z\",\n \"key\": 1708520400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T14:00:00.000Z\",\n \"key\": 1708524000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T15:00:00.000Z\",\n \"key\": 1708527600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T16:00:00.000Z\",\n \"key\": 1708531200000,\n \"doc_count\": 626,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 626\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-21T17:00:00.000Z\",\n \"key\": 1708534800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T18:00:00.000Z\",\n \"key\": 1708538400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T19:00:00.000Z\",\n \"key\": 1708542000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T20:00:00.000Z\",\n \"key\": 1708545600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T21:00:00.000Z\",\n \"key\": 1708549200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T22:00:00.000Z\",\n \"key\": 1708552800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-21T23:00:00.000Z\",\n \"key\": 1708556400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T00:00:00.000Z\",\n \"key\": 1708560000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T01:00:00.000Z\",\n \"key\": 1708563600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T02:00:00.000Z\",\n \"key\": 1708567200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T03:00:00.000Z\",\n \"key\": 1708570800000,\n \"doc_count\": 304,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 304\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-22T04:00:00.000Z\",\n \"key\": 1708574400000,\n \"doc_count\": 280,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 280\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-22T05:00:00.000Z\",\n \"key\": 1708578000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T06:00:00.000Z\",\n \"key\": 1708581600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T07:00:00.000Z\",\n \"key\": 1708585200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T08:00:00.000Z\",\n \"key\": 1708588800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T09:00:00.000Z\",\n \"key\": 1708592400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T10:00:00.000Z\",\n \"key\": 1708596000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T11:00:00.000Z\",\n \"key\": 1708599600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T12:00:00.000Z\",\n \"key\": 1708603200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T13:00:00.000Z\",\n \"key\": 1708606800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T14:00:00.000Z\",\n \"key\": 1708610400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T15:00:00.000Z\",\n \"key\": 1708614000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T16:00:00.000Z\",\n \"key\": 1708617600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T17:00:00.000Z\",\n \"key\": 1708621200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T18:00:00.000Z\",\n \"key\": 1708624800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T19:00:00.000Z\",\n \"key\": 1708628400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T20:00:00.000Z\",\n \"key\": 1708632000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T21:00:00.000Z\",\n \"key\": 1708635600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T22:00:00.000Z\",\n \"key\": 1708639200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-22T23:00:00.000Z\",\n \"key\": 1708642800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T00:00:00.000Z\",\n \"key\": 1708646400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T01:00:00.000Z\",\n \"key\": 1708650000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T02:00:00.000Z\",\n \"key\": 1708653600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T03:00:00.000Z\",\n \"key\": 1708657200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T04:00:00.000Z\",\n \"key\": 1708660800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T05:00:00.000Z\",\n \"key\": 1708664400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T06:00:00.000Z\",\n \"key\": 1708668000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T07:00:00.000Z\",\n \"key\": 1708671600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T08:00:00.000Z\",\n \"key\": 1708675200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T09:00:00.000Z\",\n \"key\": 1708678800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T10:00:00.000Z\",\n \"key\": 1708682400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T11:00:00.000Z\",\n \"key\": 1708686000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T12:00:00.000Z\",\n \"key\": 1708689600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T13:00:00.000Z\",\n \"key\": 1708693200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T14:00:00.000Z\",\n \"key\": 1708696800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T15:00:00.000Z\",\n \"key\": 1708700400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T16:00:00.000Z\",\n \"key\": 1708704000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T17:00:00.000Z\",\n \"key\": 1708707600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T18:00:00.000Z\",\n \"key\": 1708711200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T19:00:00.000Z\",\n \"key\": 1708714800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T20:00:00.000Z\",\n \"key\": 1708718400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T21:00:00.000Z\",\n \"key\": 1708722000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T22:00:00.000Z\",\n \"key\": 1708725600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-23T23:00:00.000Z\",\n \"key\": 1708729200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T00:00:00.000Z\",\n \"key\": 1708732800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T01:00:00.000Z\",\n \"key\": 1708736400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T02:00:00.000Z\",\n \"key\": 1708740000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T03:00:00.000Z\",\n \"key\": 1708743600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T04:00:00.000Z\",\n \"key\": 1708747200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T05:00:00.000Z\",\n \"key\": 1708750800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T06:00:00.000Z\",\n \"key\": 1708754400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T07:00:00.000Z\",\n \"key\": 1708758000000,\n \"doc_count\": 220,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 220\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-24T08:00:00.000Z\",\n \"key\": 1708761600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T09:00:00.000Z\",\n \"key\": 1708765200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T10:00:00.000Z\",\n \"key\": 1708768800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T11:00:00.000Z\",\n \"key\": 1708772400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T12:00:00.000Z\",\n \"key\": 1708776000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T13:00:00.000Z\",\n \"key\": 1708779600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T14:00:00.000Z\",\n \"key\": 1708783200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T15:00:00.000Z\",\n \"key\": 1708786800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T16:00:00.000Z\",\n \"key\": 1708790400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T17:00:00.000Z\",\n \"key\": 1708794000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T18:00:00.000Z\",\n \"key\": 1708797600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T19:00:00.000Z\",\n \"key\": 1708801200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T20:00:00.000Z\",\n \"key\": 1708804800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T21:00:00.000Z\",\n \"key\": 1708808400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T22:00:00.000Z\",\n \"key\": 1708812000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-24T23:00:00.000Z\",\n \"key\": 1708815600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T00:00:00.000Z\",\n \"key\": 1708819200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T01:00:00.000Z\",\n \"key\": 1708822800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T02:00:00.000Z\",\n \"key\": 1708826400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T03:00:00.000Z\",\n \"key\": 1708830000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T04:00:00.000Z\",\n \"key\": 1708833600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T05:00:00.000Z\",\n \"key\": 1708837200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T06:00:00.000Z\",\n \"key\": 1708840800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T07:00:00.000Z\",\n \"key\": 1708844400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T08:00:00.000Z\",\n \"key\": 1708848000000,\n \"doc_count\": 212,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 212\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-25T09:00:00.000Z\",\n \"key\": 1708851600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T10:00:00.000Z\",\n \"key\": 1708855200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T11:00:00.000Z\",\n \"key\": 1708858800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T12:00:00.000Z\",\n \"key\": 1708862400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T13:00:00.000Z\",\n \"key\": 1708866000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T14:00:00.000Z\",\n \"key\": 1708869600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T15:00:00.000Z\",\n \"key\": 1708873200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T16:00:00.000Z\",\n \"key\": 1708876800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T17:00:00.000Z\",\n \"key\": 1708880400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T18:00:00.000Z\",\n \"key\": 1708884000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T19:00:00.000Z\",\n \"key\": 1708887600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T20:00:00.000Z\",\n \"key\": 1708891200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T21:00:00.000Z\",\n \"key\": 1708894800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T22:00:00.000Z\",\n \"key\": 1708898400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-25T23:00:00.000Z\",\n \"key\": 1708902000000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-26T00:00:00.000Z\",\n \"key\": 1708905600000,\n \"doc_count\": 67,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": [\n {\n \"key\": \"BASICTEST301S1\",\n \"doc_count\": 67\n }\n ]\n }\n },\n {\n \"key_as_string\": \"2024-02-26T01:00:00.000Z\",\n \"key\": 1708909200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-26T02:00:00.000Z\",\n \"key\": 1708912800000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-26T03:00:00.000Z\",\n \"key\": 1708916400000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-26T04:00:00.000Z\",\n \"key\": 1708920000000,\n \"doc_count\": 754,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-26T05:00:00.000Z\",\n \"key\": 1708923600000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-26T06:00:00.000Z\",\n \"key\": 1708927200000,\n \"doc_count\": 0,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n },\n {\n \"key_as_string\": \"2024-02-26T07:00:00.000Z\",\n \"key\": 1708930800000,\n \"doc_count\": 104,\n \"breakdown\": {\n \"doc_count_error_upper_bound\": 0,\n \"sum_other_doc_count\": 0,\n \"buckets\": []\n }\n }\n ]\n }\n }\n}" + } + ] + }, + { + "contentId": "", + "type": "chart", + "styles": { + "width": "100%", + "height": "100%" + }, + "config": { + "tooltip": { + "trigger": "axis", + "show": true + }, + "legend": { + "show": true + }, + "grid": { + "show": true, + "top": "50", + "bottom": "20", + "left": "20", + "right": "20", + "containLabel": true + }, + "title": { + "text": "요청 건수" + }, + "xAxis": { + "show": true, + "type": "category" + }, + "yAxis": [ + { + "show": true, + "name": "", + "type": "value", + "position": "left" + } + ], + "toolbox": { + "show": true, + "feature": { + "saveAsImage": { + "show": false + } + } + }, + "animation": false + }, + "seriesConfig": [ + { + "type": "line", + "index": ".logs-*", + "queryType": "elasticsearch", + "query": "{\n}", + "mapperX": "\nfunction(result) {\n let data = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n return data;\n}\n ", + "mapperY": "\nfunction(result) {\n return [\n {\n name: '거래내역조회',\n type: 'line',\n stack: 'Total',\n data: [120, 132, 101, 134, 90, 230, 210]\n },\n {\n name: '잔액조회',\n type: 'line',\n stack: 'Total',\n data: [220, 182, 191, 234, 290, 330, 310]\n },\n {\n name: '개별인증',\n type: 'line',\n stack: 'Total',\n data: [820, 932, 901, 934, 1290, 1330, 1320]\n }\n]\n}\n ", + "queryResult": "result = {\n \"took\": 0,\n \"timed_out\": false,\n \"_shards\": {\n \"total\": 2,\n \"successful\": 2,\n \"skipped\": 0,\n \"failed\": 0\n },\n \"hits\": {\n \"total\": {\n \"value\": 4,\n \"relation\": \"eq\"\n },\n \"max_score\": 0,\n \"hits\": [\n {\n \"_index\": \".ds-.logs-deprecation.elasticsearch-default-2024.02.21-000007\",\n \"_id\": \"to8S6I0BQ-TmzBFRKAcY\",\n \"_score\": 0,\n \"_source\": {\n \"@timestamp\": \"2024-02-27T00:58:35.525Z\",\n \"log.level\": \"WARN\",\n \"data_stream.dataset\": \"deprecation.elasticsearch\",\n \"data_stream.namespace\": \"default\",\n \"data_stream.type\": \"logs\",\n \"elasticsearch.elastic_product_origin\": \"kibana\",\n \"elasticsearch.event.category\": \"api\",\n \"elasticsearch.http.request.x_opaque_id\": \"unknownId;kibana:task%20manager:run%20security%3Atelemetry-prebuilt-rule-alerts:security%3Atelemetry-prebuilt-rule-alerts%3A1.0.0\",\n \"event.code\": \"deprecated_field_exclude\",\n \"message\": \"Deprecated field [exclude] used, expected [excludes] instead\",\n \"ecs.version\": \"1.2.0\",\n \"service.name\": \"ES_ECS\",\n \"event.dataset\": \"deprecation.elasticsearch\",\n \"process.thread.name\": \"elasticsearch[elasticsearch][transport_worker][T#6]\",\n \"log.logger\": \"org.elasticsearch.deprecation.xcontent.ParseField\",\n \"trace.id\": \"a5cf686a71ac3ebce3f5d804b94efc0e\",\n \"elasticsearch.cluster.uuid\": \"nsiRR8F4QxeHDejJHO_YHg\",\n \"elasticsearch.node.id\": \"jv9DwCIHQfi1F6679Vj5oQ\",\n \"elasticsearch.node.name\": \"elasticsearch\",\n \"elasticsearch.cluster.name\": \"docker-cluster\"\n }\n },\n {\n \"_index\": \".ds-.logs-deprecation.elasticsearch-default-2024.02.21-000007\",\n \"_id\": \"d2pC5I0BJMpx2wqvJPuk\",\n \"_score\": 0,\n \"_source\": {\n \"@timestamp\": \"2024-02-26T07:12:31.507Z\",\n \"log.level\": \"WARN\",\n \"data_stream.dataset\": \"deprecation.elasticsearch\",\n \"data_stream.namespace\": \"default\",\n \"data_stream.type\": \"logs\",\n \"elasticsearch.elastic_product_origin\": \"kibana\",\n \"elasticsearch.event.category\": \"api\",\n \"elasticsearch.http.request.x_opaque_id\": \"unknownId;kibana:task%20manager:run%20security%3Atelemetry-prebuilt-rule-alerts:security%3Atelemetry-prebuilt-rule-alerts%3A1.0.0\",\n \"event.code\": \"deprecated_field_exclude\",\n \"message\": \"Deprecated field [exclude] used, expected [excludes] instead\",\n \"ecs.version\": \"1.2.0\",\n \"service.name\": \"ES_ECS\",\n \"event.dataset\": \"deprecation.elasticsearch\",\n \"process.thread.name\": \"elasticsearch[elasticsearch][transport_worker][T#6]\",\n \"log.logger\": \"org.elasticsearch.deprecation.xcontent.ParseField\",\n \"trace.id\": \"a5cf686a71ac3ebce3f5d804b94efc0e\",\n \"elasticsearch.cluster.uuid\": \"nsiRR8F4QxeHDejJHO_YHg\",\n \"elasticsearch.node.id\": \"jv9DwCIHQfi1F6679Vj5oQ\",\n \"elasticsearch.node.name\": \"elasticsearch\",\n \"elasticsearch.cluster.name\": \"docker-cluster\"\n }\n },\n {\n \"_index\": \".ds-.logs-deprecation.elasticsearch-default-2024.02.21-000007\",\n \"_id\": \"CzmR440BxJ9Ne36-53Jj\",\n \"_score\": 0,\n \"_source\": {\n \"@timestamp\": \"2024-02-26T04:00:01.494Z\",\n \"log.level\": \"WARN\",\n \"data_stream.dataset\": \"deprecation.elasticsearch\",\n \"data_stream.namespace\": \"default\",\n \"data_stream.type\": \"logs\",\n \"elasticsearch.elastic_product_origin\": \"kibana\",\n \"elasticsearch.event.category\": \"api\",\n \"elasticsearch.http.request.x_opaque_id\": \"unknownId;kibana:task%20manager:run%20security%3Atelemetry-prebuilt-rule-alerts:security%3Atelemetry-prebuilt-rule-alerts%3A1.0.0\",\n \"event.code\": \"deprecated_field_exclude\",\n \"message\": \"Deprecated field [exclude] used, expected [excludes] instead\",\n \"ecs.version\": \"1.2.0\",\n \"service.name\": \"ES_ECS\",\n \"event.dataset\": \"deprecation.elasticsearch\",\n \"process.thread.name\": \"elasticsearch[elasticsearch][transport_worker][T#4]\",\n \"log.logger\": \"org.elasticsearch.deprecation.xcontent.ParseField\",\n \"trace.id\": \"a5cf686a71ac3ebce3f5d804b94efc0e\",\n \"elasticsearch.cluster.uuid\": \"nsiRR8F4QxeHDejJHO_YHg\",\n \"elasticsearch.node.id\": \"jv9DwCIHQfi1F6679Vj5oQ\",\n \"elasticsearch.node.name\": \"elasticsearch\",\n \"elasticsearch.cluster.name\": \"docker-cluster\"\n }\n },\n {\n \"_index\": \".ds-.logs-deprecation.elasticsearch-default-2024.02.21-000007\",\n \"_id\": \"lYFY340BmslKO27ylT7Y\",\n \"_score\": 0,\n \"_source\": {\n \"@timestamp\": \"2024-02-25T08:18:56.202Z\",\n \"log.level\": \"WARN\",\n \"data_stream.dataset\": \"deprecation.elasticsearch\",\n \"data_stream.namespace\": \"default\",\n \"data_stream.type\": \"logs\",\n \"elasticsearch.elastic_product_origin\": \"kibana\",\n \"elasticsearch.event.category\": \"api\",\n \"elasticsearch.http.request.x_opaque_id\": \"unknownId;kibana:task%20manager:run%20security%3Atelemetry-prebuilt-rule-alerts:security%3Atelemetry-prebuilt-rule-alerts%3A1.0.0\",\n \"event.code\": \"deprecated_field_exclude\",\n \"message\": \"Deprecated field [exclude] used, expected [excludes] instead\",\n \"ecs.version\": \"1.2.0\",\n \"service.name\": \"ES_ECS\",\n \"event.dataset\": \"deprecation.elasticsearch\",\n \"process.thread.name\": \"elasticsearch[elasticsearch][transport_worker][T#3]\",\n \"log.logger\": \"org.elasticsearch.deprecation.xcontent.ParseField\",\n \"trace.id\": \"a5cf686a71ac3ebce3f5d804b94efc0e\",\n \"elasticsearch.cluster.uuid\": \"nsiRR8F4QxeHDejJHO_YHg\",\n \"elasticsearch.node.id\": \"jv9DwCIHQfi1F6679Vj5oQ\",\n \"elasticsearch.node.name\": \"elasticsearch\",\n \"elasticsearch.cluster.name\": \"docker-cluster\"\n }\n }\n ]\n }\n}" + } + ], + "undefined": "{\n \"tooltip\": {\n \"trigger\": \"axis\",\n \"show\": true\n },\n \"legend\": {\n \"show\": true\n },\n \"grid\": {\n \"show\": true,\n \"top\": 0,\n \"bottom\": 0,\n \"left\": 0,\n \"right\": 0,\n \"containLabel\": true\n },\n \"title\": {},\n \"xAxis\": {\n \"show\": true,\n \"type\": \"category\",\n \"data\": [\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n \"Sun\"\n ]\n },\n \"yAxis\": [\n {\n \"show\": true,\n \"name\": \"\",\n \"type\": \"value\",\n \"position\": \"left\"\n }\n ],\n \"toolbox\": {\n \"show\": true\n },\n \"series\": [\n {\n \"name\": \"거래내역조회\",\n \"type\": \"line\",\n \"stack\": \"Total\",\n \"data\": [\n 120,\n 132,\n 101,\n 134,\n 90,\n 230,\n 210\n ]\n },\n {\n \"name\": \"잔액조회\",\n \"type\": \"line\",\n \"stack\": \"Total\",\n \"data\": [\n 220,\n 182,\n 191,\n 234,\n 290,\n 330,\n 310\n ]\n },\n {\n \"name\": \"개별인증\",\n \"type\": \"line\",\n \"stack\": \"Total\",\n \"data\": [\n 820,\n 932,\n 901,\n 934,\n 1290,\n 1330,\n 1320\n ]\n }\n ]\n}" + } + ] + }, + { + "type": "container", + "styles": { + "display": "flex", + "flex-direction": "row", + "width": "100%", + "height": "100%" + }, + "contentId": "row2", + "children": [ + { + "contentId": "chart2", + "type": "chart", + "styles": { + "width": "100%", + "height": "100%" + }, + "config": { + "tooltip": { + "show": true, + "trigger": "item" + }, + "title": { + "text": "시간별 API 요청 건수" + }, + "animation": false, + "xAxis": { + "type": "category" + }, + "yAxis": [ + { + "show": true, + "type": "value", + "position": "left" + } + ] + }, + "seriesConfig": [ + { + "index": ".ds-logs-generic-default*", + "queryType": "elasticsearch", + "query": "\n {\n \"size\": 0,\n \"query\": {\n \"bool\": {\n \"filter\": [\n {\n \"term\": {\n \"service.name\": \"elink1\"\n }\n }\n ]\n }\n },\n \"aggs\": {\n \"time_buckets\": {\n \"date_histogram\": {\n \"field\": \"@timestamp\",\n \"fixed_interval\": \"1h\"\n },\n \"aggs\": {\n \"breakdown\": {\n \"terms\": {\n \"field\": \"eaiSvcCd\",\n \"size\": 99\n }\n }\n }\n }\n }\n }", + "mapperX": "\n function(result) {\n let data = [];\n let buckets = get(result, \"aggregations.time_buckets.buckets\", []);\n buckets.forEach(bucket => {\n data.push(formatTime(bucket.key_as_string));\n });\n return data;\n }\n ", + "mapperY": "\n function(result){\n let data = [];\n\n let buckets = get(result, \"aggregations.time_buckets.buckets\", []);\n let items = {};\n const dates = buckets.map(bucket => formatTime(bucket.key_as_string));\n buckets.forEach(bucket => {\n bucket.breakdown.buckets.forEach(path => {\n items[path.key] = true;\n });\n });\n const itemKeys = Object.keys(items);\n data = itemKeys.map(path => {\n return {\n name: path,\n type: 'bar',\n stack: 'value',\n data: dates.map(date => {\n const dateBucket = buckets.find(bucket => formatTime(bucket.key_as_string) === date);\n const pathBucket = dateBucket ? dateBucket.breakdown.buckets.find(pb => pb.key === path) : null;\n return pathBucket ? pathBucket.doc_count : 0;\n })\n };\n });\n return data; \n }\n " + } + ] + } + ] + } + ] + }; + } + + get() { + return this.data; + } +} diff --git a/src/main/resources/static/js/LayoutManager.js b/src/main/resources/static/js/LayoutManager.js new file mode 100644 index 0000000..0634f88 --- /dev/null +++ b/src/main/resources/static/js/LayoutManager.js @@ -0,0 +1,643 @@ +class LayoutManager { + constructor(container, layoutData) { + this.rootContainer = container; + this.tempContainer = null; + this.editContainerIndex = -1; + this.layoutData = layoutData || { + type: 'root', + styles: { + 'display': 'flex', + 'flex-direction': 'column', + 'justify-content': 'start', + 'align-items': 'flex-start', + 'gap': '10px', + 'width': '100%', + 'height': '100vh', + 'position': 'relative', + 'overflow': 'auto', + 'background-color': '#100C2A' + }, + children: [] + }; + + this.containerEditorModel = [ + { + 'groupName': 'default', + 'groupTitle': '기본', + 'fields': [ + { + 'path': 'styles.display', + 'type': 'select', + 'label': 'Display', + 'options': ['flex'] + }, + { + 'path': 'styles.flex-direction', + 'type': 'select', + 'label': 'Flex 방향', + 'options': ['row', 'column', 'row-reverse', 'column-reverse'] + }, + { + 'path': 'styles.width', + 'type': 'text', + 'label': '길이(px, %)', + 'placeholder': 'px, % 등 단위를 포함한 길이를 입력하세요' + }, + { + 'path': 'styles.height', + 'type': 'text', + 'label': '높이(px, %)', + 'placeholder': 'px, % 등 단위를 포함한 높이를 입력하세요' + } + ] + } + ]; + + this.dashboardEditorModel = [ + { + 'groupName': 'default', + 'groupTitle': '기본', + 'fields': [ + { + 'path': 'styles.background-color', + 'type': 'text', + 'label': '색상', + 'placeholder': '#로 시작하는 값을 입력하세요' + }, + { + 'path': 'styles.width', + 'type': 'text', + 'label': '길이(px)', + 'placeholder': 'px 단위를 포함한 길이를 입력하세요' + }, + { + 'path': 'styles.height', + 'type': 'text', + 'label': '높이(px)', + 'placeholder': 'px 단위를 포함한 높이를 입력하세요' + } + ] + } + ] + + } + + // traverse(obj) { + // if (obj.type === 'chart') { + // $(`#chart_${obj.contentId}`).closest('.dashboard-chart').resizable({ + // grid: 10, + // ghost: true, + // stop: (event, ui) => { + // const {width, height} = ui.size; + // obj.styles.width = `${width}px`; + // obj.styles.height = `${height}px`; + // this.resetLayout(); + // } + // }); + // } + // + // if (obj.children) { + // obj.children.forEach(child => { + // this.traverse(child); + // }); + // } + // } + + init(Dashboard, viewerMode) { + this.viewMode = viewerMode || false; + this.renderRoot(this.layoutData, this.rootContainer); + + if (Dashboard) { + this.dashboard = new Dashboard(this.layoutData); + this.dashboard.init('chart_area'); + } + + if (!this.viewMode) { + this.initContainerEditor(); + this.initDashboardEditor(); + this.chartEditor = new ChartEditor(this.rootContainer, this, this.dashboard); + this.chartEditor.initChartEditor(); + this.bindEvents(); + } + } + + initContainerEditor() { + const containerEditorPopup = ` + ").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
    ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
    ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
    ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});V.ui.autocomplete;var tt=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.2",defaultElement:"
    ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};if(t)return"controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(a=a.concat(e.get()))):void(V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(tt,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.2",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("
    ").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var et;V.ui.checkboxradio;V.widget("ui.button",{version:"1.13.2",defaultElement:"
    "+(0
    ":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
    ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.2";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
    ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
    ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("
    ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("
    "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
    "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
    ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
    ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("
    ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
    ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
    "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return ll||i.righth||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
      ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("
      ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("
    • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("
    • "),s=V("
      ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("
      ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e=this._valueMax())return this._valueMax();var e=0=e&&(t+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V(" ",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.2",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
      ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.2",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
      ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("
      ").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
      ").attr("role","tooltip"),i=V("
      ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file diff --git a/src/main/resources/static/plugins/jquery-ui/jquery-ui.structure.min.css b/src/main/resources/static/plugins/jquery-ui/jquery-ui.structure.min.css new file mode 100644 index 0000000..99cbf93 --- /dev/null +++ b/src/main/resources/static/plugins/jquery-ui/jquery-ui.structure.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.13.2 - 2022-07-14 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;-ms-filter:"alpha(opacity=25)";opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px} \ No newline at end of file diff --git a/src/main/resources/static/plugins/jquery-ui/jquery-ui.theme.css b/src/main/resources/static/plugins/jquery-ui/jquery-ui.theme.css new file mode 100644 index 0000000..c7411e4 --- /dev/null +++ b/src/main/resources/static/plugins/jquery-ui/jquery-ui.theme.css @@ -0,0 +1,446 @@ +/*! + * jQuery UI CSS Framework 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/category/theming/ + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6 + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget.ui-widget-content { + border: 1px solid #c5c5c5; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #dddddd; + background: #e9e9e9; + color: #333333; + font-weight: bold; +} +.ui-widget-header a { + color: #333333; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default, +.ui-button, + +/* We use html here because we need a greater specificity to make sure disabled +works properly when clicked or hovered */ +html .ui-button.ui-state-disabled:hover, +html .ui-button.ui-state-disabled:active { + border: 1px solid #c5c5c5; + background: #f6f6f6; + font-weight: normal; + color: #454545; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited, +a.ui-button, +a:link.ui-button, +a:visited.ui-button, +.ui-button { + color: #454545; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus, +.ui-button:hover, +.ui-button:focus { + border: 1px solid #cccccc; + background: #ededed; + font-weight: normal; + color: #2b2b2b; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited, +a.ui-button:hover, +a.ui-button:focus { + color: #2b2b2b; + text-decoration: none; +} + +.ui-visual-focus { + box-shadow: 0 0 3px 1px rgb(94, 158, 214); +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + border: 1px solid #003eff; + background: #007fff; + font-weight: normal; + color: #ffffff; +} +.ui-icon-background, +.ui-state-active .ui-icon-background { + border: #003eff; + background-color: #ffffff; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #ffffff; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #dad55e; + background: #fffa90; + color: #777620; +} +.ui-state-checked { + border: 1px solid #dad55e; + background: #fffa90; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #777620; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #f1a899; + background: #fddfdf; + color: #5f3f3f; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #5f3f3f; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #5f3f3f; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + -ms-filter: "alpha(opacity=70)"; /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + -ms-filter: "alpha(opacity=35)"; /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + -ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("images/ui-icons_555555_256x240.png"); +} +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("images/ui-icons_777620_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_cc0000_256x240.png"); +} +.ui-button .ui-icon { + background-image: url("images/ui-icons_777777_256x240.png"); +} + +/* positioning */ +/* Three classes needed to override `.ui-button:hover .ui-icon` */ +.ui-icon-blank.ui-icon-blank.ui-icon-blank { + background-image: none; +} +.ui-icon-caret-1-n { background-position: 0 0; } +.ui-icon-caret-1-ne { background-position: -16px 0; } +.ui-icon-caret-1-e { background-position: -32px 0; } +.ui-icon-caret-1-se { background-position: -48px 0; } +.ui-icon-caret-1-s { background-position: -65px 0; } +.ui-icon-caret-1-sw { background-position: -80px 0; } +.ui-icon-caret-1-w { background-position: -96px 0; } +.ui-icon-caret-1-nw { background-position: -112px 0; } +.ui-icon-caret-2-n-s { background-position: -128px 0; } +.ui-icon-caret-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -65px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -65px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 1px -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 3px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa; + opacity: .003; + -ms-filter: Alpha(Opacity=.3); /* support: IE8 */ +} +.ui-widget-shadow { + -webkit-box-shadow: 0px 0px 5px #666666; + box-shadow: 0px 0px 5px #666666; +} diff --git a/src/main/resources/static/plugins/jquery-ui/jquery-ui.theme.min.css b/src/main/resources/static/plugins/jquery-ui/jquery-ui.theme.min.css new file mode 100644 index 0000000..dab1c8c --- /dev/null +++ b/src/main/resources/static/plugins/jquery-ui/jquery-ui.theme.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.13.2 - 2022-07-14 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;-ms-filter:"alpha(opacity=70)";font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;-ms-filter:"alpha(opacity=35)";background-image:none}.ui-state-disabled .ui-icon{-ms-filter:"alpha(opacity=35)"}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;-ms-filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666} \ No newline at end of file diff --git a/src/main/resources/static/plugins/jquery/jquery-3.7.1.min.js b/src/main/resources/static/plugins/jquery/jquery-3.7.1.min.js new file mode 100644 index 0000000..7f37b5d --- /dev/null +++ b/src/main/resources/static/plugins/jquery/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===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]||I.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]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(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(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0 { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'ar-AR': { + font: { + bold: 'عريض', + italic: 'مائل', + underline: 'تحته خط', + clear: 'مسح التنسيق', + height: 'إرتفاع السطر', + name: 'الخط', + strikethrough: 'فى وسطه خط', + subscript: 'مخطوطة', + superscript: 'حرف فوقي', + size: 'الحجم' + }, + image: { + image: 'صورة', + insert: 'إضافة صورة', + resizeFull: 'الحجم بالكامل', + resizeHalf: 'تصغير للنصف', + resizeQuarter: 'تصغير للربع', + floatLeft: 'تطيير لليسار', + floatRight: 'تطيير لليمين', + floatNone: 'ثابته', + shapeRounded: 'الشكل: تقريب', + shapeCircle: 'الشكل: دائرة', + shapeThumbnail: 'الشكل: صورة مصغرة', + shapeNone: 'الشكل: لا شيء', + dragImageHere: 'إدرج الصورة هنا', + dropImage: 'إسقاط صورة أو نص', + selectFromFiles: 'حدد ملف', + maximumFileSize: 'الحد الأقصى لحجم الملف', + maximumFileSizeError: 'تم تجاوز الحد الأقصى لحجم الملف', + url: 'رابط الصورة', + remove: 'حذف الصورة', + original: 'Original' + }, + video: { + video: 'فيديو', + videoLink: 'رابط الفيديو', + insert: 'إدراج الفيديو', + url: 'رابط الفيديو', + providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'رابط', + insert: 'إدراج', + unlink: 'حذف الرابط', + edit: 'تعديل', + textToDisplay: 'النص', + url: 'مسار الرابط', + openInNewWindow: 'فتح في نافذة جديدة' + }, + table: { + table: 'جدول', + addRowAbove: 'إضافة سطر أعلاه', + addRowBelow: 'إضافة سطر أدناه', + addColLeft: 'إضافة عمود قبله', + addColRight: 'إضافة عمود بعده', + delRow: 'حذف سطر', + delCol: 'حذف عمود', + delTable: 'حذف الجدول' + }, + hr: { + insert: 'إدراج خط أفقي' + }, + style: { + style: 'تنسيق', + p: 'عادي', + blockquote: 'إقتباس', + pre: 'شفيرة', + h1: 'عنوان رئيسي 1', + h2: 'عنوان رئيسي 2', + h3: 'عنوان رئيسي 3', + h4: 'عنوان رئيسي 4', + h5: 'عنوان رئيسي 5', + h6: 'عنوان رئيسي 6' + }, + lists: { + unordered: 'قائمة مُنقطة', + ordered: 'قائمة مُرقمة' + }, + options: { + help: 'مساعدة', + fullscreen: 'حجم الشاشة بالكامل', + codeview: 'شفيرة المصدر' + }, + paragraph: { + paragraph: 'فقرة', + outdent: 'محاذاة للخارج', + indent: 'محاذاة للداخل', + left: 'محاذاة لليسار', + center: 'توسيط', + right: 'محاذاة لليمين', + justify: 'ملئ السطر' + }, + color: { + recent: 'تم إستخدامه', + more: 'المزيد', + background: 'لون الخلفية', + foreground: 'لون النص', + transparent: 'شفاف', + setTransparent: 'بدون خلفية', + reset: 'إعادة الضبط', + resetToDefault: 'إعادة الضبط', + cpSelect: 'اختار' + }, + shortcut: { + shortcuts: 'إختصارات', + close: 'غلق', + textFormatting: 'تنسيق النص', + action: 'Action', + paragraphFormatting: 'تنسيق الفقرة', + documentStyle: 'تنسيق المستند', + extraKeys: 'أزرار إضافية' + }, + help: { + 'insertParagraph': 'إدراج فقرة', + 'undo': 'تراجع عن آخر أمر', + 'redo': 'إعادة تنفيذ آخر أمر', + 'tab': 'إزاحة (تاب)', + 'untab': 'سحب النص باتجاه البداية', + 'bold': 'تنسيق عريض', + 'italic': 'تنسيق مائل', + 'underline': 'تنسيق خط سفلي', + 'strikethrough': 'تنسيق خط متوسط للنص', + 'removeFormat': 'إزالة التنسيقات', + 'justifyLeft': 'محاذاة لليسار', + 'justifyCenter': 'محاذاة توسيط', + 'justifyRight': 'محاذاة لليمين', + 'justifyFull': 'محاذاة كاملة', + 'insertUnorderedList': 'قائمة منقّطة', + 'insertOrderedList': 'قائمة مرقّمة', + 'outdent': 'إزاحة للأمام على الفقرة الحالية', + 'indent': 'إزاحة للخلف على الفقرة الحالية', + 'formatPara': 'تغيير التنسيق للكتلة الحالية إلى فقرة', + 'formatH1': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 1', + 'formatH2': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 2', + 'formatH3': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 3', + 'formatH4': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 4', + 'formatH5': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 5', + 'formatH6': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 6', + 'insertHorizontalRule': 'إدراج خط أفقي', + 'linkDialog.show': 'إظهار خصائص الرابط' + }, + history: { + undo: 'تراجع', + redo: 'إعادة' + }, + specialChar: { + specialChar: 'محارف خاصة', + select: 'اختر المحرف الخاص' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-ar-AR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.js.map new file mode 100644 index 0000000..05b7e82 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ar-AR.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ar-AR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ar-AR': {\n font: {\n bold: 'عريض',\n italic: 'مائل',\n underline: 'تحته خط',\n clear: 'مسح التنسيق',\n height: 'إرتفاع السطر',\n name: 'الخط',\n strikethrough: 'فى وسطه خط',\n subscript: 'مخطوطة',\n superscript: 'حرف فوقي',\n size: 'الحجم',\n },\n image: {\n image: 'صورة',\n insert: 'إضافة صورة',\n resizeFull: 'الحجم بالكامل',\n resizeHalf: 'تصغير للنصف',\n resizeQuarter: 'تصغير للربع',\n floatLeft: 'تطيير لليسار',\n floatRight: 'تطيير لليمين',\n floatNone: 'ثابته',\n shapeRounded: 'الشكل: تقريب',\n shapeCircle: 'الشكل: دائرة',\n shapeThumbnail: 'الشكل: صورة مصغرة',\n shapeNone: 'الشكل: لا شيء',\n dragImageHere: 'إدرج الصورة هنا',\n dropImage: 'إسقاط صورة أو نص',\n selectFromFiles: 'حدد ملف',\n maximumFileSize: 'الحد الأقصى لحجم الملف',\n maximumFileSizeError: 'تم تجاوز الحد الأقصى لحجم الملف',\n url: 'رابط الصورة',\n remove: 'حذف الصورة',\n original: 'Original',\n },\n video: {\n video: 'فيديو',\n videoLink: 'رابط الفيديو',\n insert: 'إدراج الفيديو',\n url: 'رابط الفيديو',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'رابط',\n insert: 'إدراج',\n unlink: 'حذف الرابط',\n edit: 'تعديل',\n textToDisplay: 'النص',\n url: 'مسار الرابط',\n openInNewWindow: 'فتح في نافذة جديدة',\n },\n table: {\n table: 'جدول',\n addRowAbove: 'إضافة سطر أعلاه',\n addRowBelow: 'إضافة سطر أدناه',\n addColLeft: 'إضافة عمود قبله',\n addColRight: 'إضافة عمود بعده',\n delRow: 'حذف سطر',\n delCol: 'حذف عمود',\n delTable: 'حذف الجدول',\n },\n hr: {\n insert: 'إدراج خط أفقي',\n },\n style: {\n style: 'تنسيق',\n p: 'عادي',\n blockquote: 'إقتباس',\n pre: 'شفيرة',\n h1: 'عنوان رئيسي 1',\n h2: 'عنوان رئيسي 2',\n h3: 'عنوان رئيسي 3',\n h4: 'عنوان رئيسي 4',\n h5: 'عنوان رئيسي 5',\n h6: 'عنوان رئيسي 6',\n },\n lists: {\n unordered: 'قائمة مُنقطة',\n ordered: 'قائمة مُرقمة',\n },\n options: {\n help: 'مساعدة',\n fullscreen: 'حجم الشاشة بالكامل',\n codeview: 'شفيرة المصدر',\n },\n paragraph: {\n paragraph: 'فقرة',\n outdent: 'محاذاة للخارج',\n indent: 'محاذاة للداخل',\n left: 'محاذاة لليسار',\n center: 'توسيط',\n right: 'محاذاة لليمين',\n justify: 'ملئ السطر',\n },\n color: {\n recent: 'تم إستخدامه',\n more: 'المزيد',\n background: 'لون الخلفية',\n foreground: 'لون النص',\n transparent: 'شفاف',\n setTransparent: 'بدون خلفية',\n reset: 'إعادة الضبط',\n resetToDefault: 'إعادة الضبط',\n cpSelect: 'اختار',\n },\n shortcut: {\n shortcuts: 'إختصارات',\n close: 'غلق',\n textFormatting: 'تنسيق النص',\n action: 'Action',\n paragraphFormatting: 'تنسيق الفقرة',\n documentStyle: 'تنسيق المستند',\n extraKeys: 'أزرار إضافية',\n },\n help: {\n 'insertParagraph': 'إدراج فقرة',\n 'undo': 'تراجع عن آخر أمر',\n 'redo': 'إعادة تنفيذ آخر أمر',\n 'tab': 'إزاحة (تاب)',\n 'untab': 'سحب النص باتجاه البداية',\n 'bold': 'تنسيق عريض',\n 'italic': 'تنسيق مائل',\n 'underline': 'تنسيق خط سفلي',\n 'strikethrough': 'تنسيق خط متوسط للنص',\n 'removeFormat': 'إزالة التنسيقات',\n 'justifyLeft': 'محاذاة لليسار',\n 'justifyCenter': 'محاذاة توسيط',\n 'justifyRight': 'محاذاة لليمين',\n 'justifyFull': 'محاذاة كاملة',\n 'insertUnorderedList': 'قائمة منقّطة',\n 'insertOrderedList': 'قائمة مرقّمة',\n 'outdent': 'إزاحة للأمام على الفقرة الحالية',\n 'indent': 'إزاحة للخلف على الفقرة الحالية',\n 'formatPara': 'تغيير التنسيق للكتلة الحالية إلى فقرة',\n 'formatH1': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 1',\n 'formatH2': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 2',\n 'formatH3': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 3',\n 'formatH4': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 4',\n 'formatH5': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 5',\n 'formatH6': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 6',\n 'insertHorizontalRule': 'إدراج خط أفقي',\n 'linkDialog.show': 'إظهار خصائص الرابط',\n },\n history: {\n undo: 'تراجع',\n redo: 'إعادة',\n },\n specialChar: {\n specialChar: 'محارف خاصة',\n select: 'اختر المحرف الخاص',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.min.js new file mode 100644 index 0000000..b312f40 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"ar-AR":{font:{bold:"عريض",italic:"مائل",underline:"تحته خط",clear:"مسح التنسيق",height:"إرتفاع السطر",name:"الخط",strikethrough:"فى وسطه خط",subscript:"مخطوطة",superscript:"حرف فوقي",size:"الحجم"},image:{image:"صورة",insert:"إضافة صورة",resizeFull:"الحجم بالكامل",resizeHalf:"تصغير للنصف",resizeQuarter:"تصغير للربع",floatLeft:"تطيير لليسار",floatRight:"تطيير لليمين",floatNone:"ثابته",shapeRounded:"الشكل: تقريب",shapeCircle:"الشكل: دائرة",shapeThumbnail:"الشكل: صورة مصغرة",shapeNone:"الشكل: لا شيء",dragImageHere:"إدرج الصورة هنا",dropImage:"إسقاط صورة أو نص",selectFromFiles:"حدد ملف",maximumFileSize:"الحد الأقصى لحجم الملف",maximumFileSizeError:"تم تجاوز الحد الأقصى لحجم الملف",url:"رابط الصورة",remove:"حذف الصورة",original:"Original"},video:{video:"فيديو",videoLink:"رابط الفيديو",insert:"إدراج الفيديو",url:"رابط الفيديو",providers:"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"رابط",insert:"إدراج",unlink:"حذف الرابط",edit:"تعديل",textToDisplay:"النص",url:"مسار الرابط",openInNewWindow:"فتح في نافذة جديدة"},table:{table:"جدول",addRowAbove:"إضافة سطر أعلاه",addRowBelow:"إضافة سطر أدناه",addColLeft:"إضافة عمود قبله",addColRight:"إضافة عمود بعده",delRow:"حذف سطر",delCol:"حذف عمود",delTable:"حذف الجدول"},hr:{insert:"إدراج خط أفقي"},style:{style:"تنسيق",p:"عادي",blockquote:"إقتباس",pre:"شفيرة",h1:"عنوان رئيسي 1",h2:"عنوان رئيسي 2",h3:"عنوان رئيسي 3",h4:"عنوان رئيسي 4",h5:"عنوان رئيسي 5",h6:"عنوان رئيسي 6"},lists:{unordered:"قائمة مُنقطة",ordered:"قائمة مُرقمة"},options:{help:"مساعدة",fullscreen:"حجم الشاشة بالكامل",codeview:"شفيرة المصدر"},paragraph:{paragraph:"فقرة",outdent:"محاذاة للخارج",indent:"محاذاة للداخل",left:"محاذاة لليسار",center:"توسيط",right:"محاذاة لليمين",justify:"ملئ السطر"},color:{recent:"تم إستخدامه",more:"المزيد",background:"لون الخلفية",foreground:"لون النص",transparent:"شفاف",setTransparent:"بدون خلفية",reset:"إعادة الضبط",resetToDefault:"إعادة الضبط",cpSelect:"اختار"},shortcut:{shortcuts:"إختصارات",close:"غلق",textFormatting:"تنسيق النص",action:"Action",paragraphFormatting:"تنسيق الفقرة",documentStyle:"تنسيق المستند",extraKeys:"أزرار إضافية"},help:{insertParagraph:"إدراج فقرة",undo:"تراجع عن آخر أمر",redo:"إعادة تنفيذ آخر أمر",tab:"إزاحة (تاب)",untab:"سحب النص باتجاه البداية",bold:"تنسيق عريض",italic:"تنسيق مائل",underline:"تنسيق خط سفلي",strikethrough:"تنسيق خط متوسط للنص",removeFormat:"إزالة التنسيقات",justifyLeft:"محاذاة لليسار",justifyCenter:"محاذاة توسيط",justifyRight:"محاذاة لليمين",justifyFull:"محاذاة كاملة",insertUnorderedList:"قائمة منقّطة",insertOrderedList:"قائمة مرقّمة",outdent:"إزاحة للأمام على الفقرة الحالية",indent:"إزاحة للخلف على الفقرة الحالية",formatPara:"تغيير التنسيق للكتلة الحالية إلى فقرة",formatH1:"تغيير التنسيق للكتلة الحالية إلى ترويسة 1",formatH2:"تغيير التنسيق للكتلة الحالية إلى ترويسة 2",formatH3:"تغيير التنسيق للكتلة الحالية إلى ترويسة 3",formatH4:"تغيير التنسيق للكتلة الحالية إلى ترويسة 4",formatH5:"تغيير التنسيق للكتلة الحالية إلى ترويسة 5",formatH6:"تغيير التنسيق للكتلة الحالية إلى ترويسة 6",insertHorizontalRule:"إدراج خط أفقي","linkDialog.show":"إظهار خصائص الرابط"},history:{undo:"تراجع",redo:"إعادة"},specialChar:{specialChar:"محارف خاصة",select:"اختر المحرف الخاص"}}}),{};var e})); +//# sourceMappingURL=summernote-ar-AR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.min.js.map new file mode 100644 index 0000000..e34953f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ar-AR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ar-AR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,OACNC,OAAQ,OACRC,UAAW,UACXC,MAAO,cACPC,OAAQ,eACRC,KAAM,OACNC,cAAe,aACfC,UAAW,SACXC,YAAa,WACbC,KAAM,SAERC,MAAO,CACLA,MAAO,OACPC,OAAQ,aACRC,WAAY,gBACZC,WAAY,cACZC,cAAe,cACfC,UAAW,eACXC,WAAY,eACZC,UAAW,QACXC,aAAc,eACdC,YAAa,eACbC,eAAgB,oBAChBC,UAAW,gBACXC,cAAe,kBACfC,UAAW,mBACXC,gBAAiB,UACjBC,gBAAiB,yBACjBC,qBAAsB,kCACtBC,IAAK,cACLC,OAAQ,aACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,eACXpB,OAAQ,gBACRgB,IAAK,eACLK,UAAW,yEAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,QACRuB,OAAQ,aACRC,KAAM,QACNC,cAAe,OACfT,IAAK,cACLU,gBAAiB,sBAEnBC,MAAO,CACLA,MAAO,OACPC,YAAa,kBACbC,YAAa,kBACbC,WAAY,kBACZC,YAAa,kBACbC,OAAQ,UACRC,OAAQ,WACRC,SAAU,cAEZC,GAAI,CACFnC,OAAQ,iBAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,OACHC,WAAY,SACZC,IAAK,QACLC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,iBAENC,MAAO,CACLC,UAAW,eACXC,QAAS,gBAEXC,QAAS,CACPC,KAAM,SACNC,WAAY,qBACZC,SAAU,gBAEZC,UAAW,CACTA,UAAW,OACXC,QAAS,gBACTC,OAAQ,gBACRC,KAAM,gBACNC,OAAQ,QACRC,MAAO,gBACPC,QAAS,aAEXC,MAAO,CACLC,OAAQ,cACRC,KAAM,SACNC,WAAY,cACZC,WAAY,WACZC,YAAa,OACbC,eAAgB,aAChBC,MAAO,cACPC,eAAgB,cAChBC,SAAU,SAEZC,SAAU,CACRC,UAAW,WACXC,MAAO,MACPC,eAAgB,aAChBC,OAAQ,SACRC,oBAAqB,eACrBC,cAAe,gBACfC,UAAW,gBAEb3B,KAAM,CACJ,gBAAmB,aACnB,KAAQ,mBACR,KAAQ,sBACR,IAAO,cACP,MAAS,0BACT,KAAQ,aACR,OAAU,aACV,UAAa,gBACb,cAAiB,sBACjB,aAAgB,kBAChB,YAAe,gBACf,cAAiB,eACjB,aAAgB,gBAChB,YAAe,eACf,oBAAuB,eACvB,kBAAqB,eACrB,QAAW,kCACX,OAAU,iCACV,WAAc,wCACd,SAAY,4CACZ,SAAY,4CACZ,SAAY,4CACZ,SAAY,4CACZ,SAAY,4CACZ,SAAY,4CACZ,qBAAwB,gBACxB,kBAAmB,sBAErB4B,QAAS,CACPC,KAAM,QACNC,KAAM,SAERC,YAAa,CACXA,YAAa,aACbC,OAAQ,wB,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ar-AR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ar-AR': {\n font: {\n bold: 'عريض',\n italic: 'مائل',\n underline: 'تحته خط',\n clear: 'مسح التنسيق',\n height: 'إرتفاع السطر',\n name: 'الخط',\n strikethrough: 'فى وسطه خط',\n subscript: 'مخطوطة',\n superscript: 'حرف فوقي',\n size: 'الحجم',\n },\n image: {\n image: 'صورة',\n insert: 'إضافة صورة',\n resizeFull: 'الحجم بالكامل',\n resizeHalf: 'تصغير للنصف',\n resizeQuarter: 'تصغير للربع',\n floatLeft: 'تطيير لليسار',\n floatRight: 'تطيير لليمين',\n floatNone: 'ثابته',\n shapeRounded: 'الشكل: تقريب',\n shapeCircle: 'الشكل: دائرة',\n shapeThumbnail: 'الشكل: صورة مصغرة',\n shapeNone: 'الشكل: لا شيء',\n dragImageHere: 'إدرج الصورة هنا',\n dropImage: 'إسقاط صورة أو نص',\n selectFromFiles: 'حدد ملف',\n maximumFileSize: 'الحد الأقصى لحجم الملف',\n maximumFileSizeError: 'تم تجاوز الحد الأقصى لحجم الملف',\n url: 'رابط الصورة',\n remove: 'حذف الصورة',\n original: 'Original',\n },\n video: {\n video: 'فيديو',\n videoLink: 'رابط الفيديو',\n insert: 'إدراج الفيديو',\n url: 'رابط الفيديو',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'رابط',\n insert: 'إدراج',\n unlink: 'حذف الرابط',\n edit: 'تعديل',\n textToDisplay: 'النص',\n url: 'مسار الرابط',\n openInNewWindow: 'فتح في نافذة جديدة',\n },\n table: {\n table: 'جدول',\n addRowAbove: 'إضافة سطر أعلاه',\n addRowBelow: 'إضافة سطر أدناه',\n addColLeft: 'إضافة عمود قبله',\n addColRight: 'إضافة عمود بعده',\n delRow: 'حذف سطر',\n delCol: 'حذف عمود',\n delTable: 'حذف الجدول',\n },\n hr: {\n insert: 'إدراج خط أفقي',\n },\n style: {\n style: 'تنسيق',\n p: 'عادي',\n blockquote: 'إقتباس',\n pre: 'شفيرة',\n h1: 'عنوان رئيسي 1',\n h2: 'عنوان رئيسي 2',\n h3: 'عنوان رئيسي 3',\n h4: 'عنوان رئيسي 4',\n h5: 'عنوان رئيسي 5',\n h6: 'عنوان رئيسي 6',\n },\n lists: {\n unordered: 'قائمة مُنقطة',\n ordered: 'قائمة مُرقمة',\n },\n options: {\n help: 'مساعدة',\n fullscreen: 'حجم الشاشة بالكامل',\n codeview: 'شفيرة المصدر',\n },\n paragraph: {\n paragraph: 'فقرة',\n outdent: 'محاذاة للخارج',\n indent: 'محاذاة للداخل',\n left: 'محاذاة لليسار',\n center: 'توسيط',\n right: 'محاذاة لليمين',\n justify: 'ملئ السطر',\n },\n color: {\n recent: 'تم إستخدامه',\n more: 'المزيد',\n background: 'لون الخلفية',\n foreground: 'لون النص',\n transparent: 'شفاف',\n setTransparent: 'بدون خلفية',\n reset: 'إعادة الضبط',\n resetToDefault: 'إعادة الضبط',\n cpSelect: 'اختار',\n },\n shortcut: {\n shortcuts: 'إختصارات',\n close: 'غلق',\n textFormatting: 'تنسيق النص',\n action: 'Action',\n paragraphFormatting: 'تنسيق الفقرة',\n documentStyle: 'تنسيق المستند',\n extraKeys: 'أزرار إضافية',\n },\n help: {\n 'insertParagraph': 'إدراج فقرة',\n 'undo': 'تراجع عن آخر أمر',\n 'redo': 'إعادة تنفيذ آخر أمر',\n 'tab': 'إزاحة (تاب)',\n 'untab': 'سحب النص باتجاه البداية',\n 'bold': 'تنسيق عريض',\n 'italic': 'تنسيق مائل',\n 'underline': 'تنسيق خط سفلي',\n 'strikethrough': 'تنسيق خط متوسط للنص',\n 'removeFormat': 'إزالة التنسيقات',\n 'justifyLeft': 'محاذاة لليسار',\n 'justifyCenter': 'محاذاة توسيط',\n 'justifyRight': 'محاذاة لليمين',\n 'justifyFull': 'محاذاة كاملة',\n 'insertUnorderedList': 'قائمة منقّطة',\n 'insertOrderedList': 'قائمة مرقّمة',\n 'outdent': 'إزاحة للأمام على الفقرة الحالية',\n 'indent': 'إزاحة للخلف على الفقرة الحالية',\n 'formatPara': 'تغيير التنسيق للكتلة الحالية إلى فقرة',\n 'formatH1': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 1',\n 'formatH2': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 2',\n 'formatH3': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 3',\n 'formatH4': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 4',\n 'formatH5': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 5',\n 'formatH6': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 6',\n 'insertHorizontalRule': 'إدراج خط أفقي',\n 'linkDialog.show': 'إظهار خصائص الرابط',\n },\n history: {\n undo: 'تراجع',\n redo: 'إعادة',\n },\n specialChar: {\n specialChar: 'محارف خاصة',\n select: 'اختر المحرف الخاص',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.js b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.js new file mode 100644 index 0000000..a63feae --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.js @@ -0,0 +1,194 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +//Summernote WYSIWYG editor ucun Azerbaycan dili fayli +//Tercume etdi: RAMIL ALIYEV +//Tarix: 20.07.2019 +//Baki Azerbaycan +//Website: https://ramilaliyev.com +//Azerbaijan language for Summernote WYSIWYG +//Translated by: RAMIL ALIYEV +//Date: 20.07.2019 +//Baku Azerbaijan +//Website: https://ramilaliyev.com +(function ($) { + $.extend($.summernote.lang, { + 'az-AZ': { + font: { + bold: 'Qalın', + italic: 'Əyri', + underline: 'Altı xətli', + clear: 'Təmizlə', + height: 'Sətir hündürlüyü', + name: 'Yazı Tipi', + strikethrough: 'Üstü xətli', + subscript: 'Alt simvol', + superscript: 'Üst simvol', + size: 'Yazı ölçüsü' + }, + image: { + image: 'Şəkil', + insert: 'Şəkil əlavə et', + resizeFull: 'Original ölçü', + resizeHalf: '1/2 ölçü', + resizeQuarter: '1/4 ölçü', + floatLeft: 'Sola çək', + floatRight: 'Sağa çək', + floatNone: 'Sola-sağa çəkilməni ləğv et', + shapeRounded: 'Şəkil: yuvarlaq künç', + shapeCircle: 'Şəkil: Dairə', + shapeThumbnail: 'Şəkil: Thumbnail', + shapeNone: 'Şəkil: Yox', + dragImageHere: 'Bura sürüşdür', + dropImage: 'Şəkil və ya mətni buraxın', + selectFromFiles: 'Sənəd seçin', + maximumFileSize: 'Maksimum sənəd ölçüsü', + maximumFileSizeError: 'Maksimum sənəd ölçüsünü keçdiniz.', + url: 'Şəkil linki', + remove: 'Şəkli sil', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video linki', + insert: 'Video əlavə et', + url: 'Video linki?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion və ya Youku)' + }, + link: { + link: 'Link', + insert: 'Link əlavə et', + unlink: 'Linki sil', + edit: 'Linkə düzəliş et', + textToDisplay: 'Ekranda göstəriləcək link adı', + url: 'Link ünvanı?', + openInNewWindow: 'Yeni pəncərədə aç' + }, + table: { + table: 'Cədvəl', + addRowAbove: 'Yuxarı sətir əlavə et', + addRowBelow: 'Aşağı sətir əlavə et', + addColLeft: 'Sola sütun əlavə et', + addColRight: 'Sağa sütun əlavə et', + delRow: 'Sətiri sil', + delCol: 'Sütunu sil', + delTable: 'Cədvəli sil' + }, + hr: { + insert: 'Üfuqi xətt əlavə et' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'İstinad', + pre: 'Ön baxış', + h1: 'Başlıq 1', + h2: 'Başlıq 2', + h3: 'Başlıq 3', + h4: 'Başlıq 4', + h5: 'Başlıq 5', + h6: 'Başlıq 6' + }, + lists: { + unordered: 'Nizamsız sıra', + ordered: 'Nizamlı sıra' + }, + options: { + help: 'Kömək', + fullscreen: 'Tam ekran', + codeview: 'HTML Kodu' + }, + paragraph: { + paragraph: 'Paraqraf', + outdent: 'Girintini artır', + indent: 'Girintini azalt', + left: 'Sola çək', + center: 'Ortaya çək', + right: 'Sağa çək', + justify: 'Sola və sağa çək' + }, + color: { + recent: 'Son rənk', + more: 'Daha çox rənk', + background: 'Arxa fon rəngi', + foreground: 'Yazı rıngi', + transparent: 'Şəffaflıq', + setTransparent: 'Şəffaflığı nizamla', + reset: 'Sıfırla', + resetToDefault: 'Susyama görə sıfırla' + }, + shortcut: { + shortcuts: 'Qısayollar', + close: 'Bağla', + textFormatting: 'Yazı formatlandırmaq', + action: 'Hadisə', + paragraphFormatting: 'Paraqraf formatlandırmaq', + documentStyle: 'Sənəd stili', + extraKeys: 'Əlavə' + }, + help: { + 'insertParagraph': 'Paraqraf əlavə etmək', + 'undo': 'Son əmri geri alır', + 'redo': 'Son əmri irəli alır', + 'tab': 'Girintini artırır', + 'untab': 'Girintini azaltır', + 'bold': 'Qalın yazma stilini nizamlayır', + 'italic': 'İtalik yazma stilini nizamlayır', + 'underline': 'Altı xətli yazma stilini nizamlayır', + 'strikethrough': 'Üstü xətli yazma stilini nizamlayır', + 'removeFormat': 'Formatlandırmanı ləğv edir', + 'justifyLeft': 'Yazını sola çəkir', + 'justifyCenter': 'Yazını ortaya çəkir', + 'justifyRight': 'Yazını sağa çəkir', + 'justifyFull': 'Yazını hər iki tərəfə yazır', + 'insertUnorderedList': 'Nizamsız sıra əlavə edir', + 'insertOrderedList': 'Nizamlı sıra əlavə edir', + 'outdent': 'Aktiv paraqrafın girintisini azaltır', + 'indent': 'Aktiv paragrafın girintisini artırır', + 'formatPara': 'Aktiv bloqun formatını paraqraf (p) olaraq dəyişdirir', + 'formatH1': 'Aktiv bloqun formatını başlıq 1 (h1) olaraq dəyişdirir', + 'formatH2': 'Aktiv bloqun formatını başlıq 2 (h2) olaraq dəyişdirir', + 'formatH3': 'Aktiv bloqun formatını başlıq 3 (h3) olaraq dəyişdirir', + 'formatH4': 'Aktiv bloqun formatını başlıq 4 (h4) olaraq dəyişdirir', + 'formatH5': 'Aktiv bloqun formatını başlıq 5 (h5) olaraq dəyişdirir', + 'formatH6': 'Aktiv bloqun formatını başlıq 6 (h6) olaraq dəyişdirir', + 'insertHorizontalRule': 'Üfuqi xətt əlavə edir', + 'linkDialog.show': 'Link parametrləri qutusunu göstərir' + }, + history: { + undo: 'Əvvəlki vəziyyət', + redo: 'Sonrakı vəziyyət' + }, + specialChar: { + specialChar: 'Xüsusi simvollar', + select: 'Xüsusi simvolları seçin' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-az-AZ.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.js.map new file mode 100644 index 0000000..26ef200 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-az-AZ.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-az-AZ.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","//Summernote WYSIWYG editor ucun Azerbaycan dili fayli\n//Tercume etdi: RAMIL ALIYEV\n//Tarix: 20.07.2019\n//Baki Azerbaycan\n//Website: https://ramilaliyev.com\n\n//Azerbaijan language for Summernote WYSIWYG \n//Translated by: RAMIL ALIYEV\n//Date: 20.07.2019\n//Baku Azerbaijan\n//Website: https://ramilaliyev.com\n\n(function($) {\n $.extend($.summernote.lang, {\n 'az-AZ': {\n font: {\n bold: 'Qalın',\n italic: 'Əyri',\n underline: 'Altı xətli',\n clear: 'Təmizlə',\n height: 'Sətir hündürlüyü',\n name: 'Yazı Tipi',\n strikethrough: 'Üstü xətli',\n subscript: 'Alt simvol',\n superscript: 'Üst simvol',\n size: 'Yazı ölçüsü',\n },\n image: {\n image: 'Şəkil',\n insert: 'Şəkil əlavə et',\n resizeFull: 'Original ölçü',\n resizeHalf: '1/2 ölçü',\n resizeQuarter: '1/4 ölçü',\n floatLeft: 'Sola çək',\n floatRight: 'Sağa çək',\n floatNone: 'Sola-sağa çəkilməni ləğv et',\n shapeRounded: 'Şəkil: yuvarlaq künç',\n shapeCircle: 'Şəkil: Dairə',\n shapeThumbnail: 'Şəkil: Thumbnail',\n shapeNone: 'Şəkil: Yox',\n dragImageHere: 'Bura sürüşdür',\n dropImage: 'Şəkil və ya mətni buraxın',\n selectFromFiles: 'Sənəd seçin',\n maximumFileSize: 'Maksimum sənəd ölçüsü',\n maximumFileSizeError: 'Maksimum sənəd ölçüsünü keçdiniz.',\n url: 'Şəkil linki',\n remove: 'Şəkli sil',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video linki',\n insert: 'Video əlavə et',\n url: 'Video linki?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion və ya Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link əlavə et',\n unlink: 'Linki sil',\n edit: 'Linkə düzəliş et',\n textToDisplay: 'Ekranda göstəriləcək link adı',\n url: 'Link ünvanı?',\n openInNewWindow: 'Yeni pəncərədə aç',\n },\n table: {\n table: 'Cədvəl',\n addRowAbove: 'Yuxarı sətir əlavə et',\n addRowBelow: 'Aşağı sətir əlavə et',\n addColLeft: 'Sola sütun əlavə et',\n addColRight: 'Sağa sütun əlavə et',\n delRow: 'Sətiri sil',\n delCol: 'Sütunu sil',\n delTable: 'Cədvəli sil',\n },\n hr: {\n insert: 'Üfuqi xətt əlavə et',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'İstinad',\n pre: 'Ön baxış',\n h1: 'Başlıq 1',\n h2: 'Başlıq 2',\n h3: 'Başlıq 3',\n h4: 'Başlıq 4',\n h5: 'Başlıq 5',\n h6: 'Başlıq 6',\n },\n lists: {\n unordered: 'Nizamsız sıra',\n ordered: 'Nizamlı sıra',\n },\n options: {\n help: 'Kömək',\n fullscreen: 'Tam ekran',\n codeview: 'HTML Kodu',\n },\n paragraph: {\n paragraph: 'Paraqraf',\n outdent: 'Girintini artır',\n indent: 'Girintini azalt',\n left: 'Sola çək',\n center: 'Ortaya çək',\n right: 'Sağa çək',\n justify: 'Sola və sağa çək',\n },\n color: {\n recent: 'Son rənk',\n more: 'Daha çox rənk',\n background: 'Arxa fon rəngi',\n foreground: 'Yazı rıngi',\n transparent: 'Şəffaflıq',\n setTransparent: 'Şəffaflığı nizamla',\n reset: 'Sıfırla',\n resetToDefault: 'Susyama görə sıfırla',\n },\n shortcut: {\n shortcuts: 'Qısayollar',\n close: 'Bağla',\n textFormatting: 'Yazı formatlandırmaq',\n action: 'Hadisə',\n paragraphFormatting: 'Paraqraf formatlandırmaq',\n documentStyle: 'Sənəd stili',\n extraKeys: 'Əlavə',\n },\n help: {\n 'insertParagraph': 'Paraqraf əlavə etmək',\n 'undo': 'Son əmri geri alır',\n 'redo': 'Son əmri irəli alır',\n 'tab': 'Girintini artırır',\n 'untab': 'Girintini azaltır',\n 'bold': 'Qalın yazma stilini nizamlayır',\n 'italic': 'İtalik yazma stilini nizamlayır',\n 'underline': 'Altı xətli yazma stilini nizamlayır',\n 'strikethrough': 'Üstü xətli yazma stilini nizamlayır',\n 'removeFormat': 'Formatlandırmanı ləğv edir',\n 'justifyLeft': 'Yazını sola çəkir',\n 'justifyCenter': 'Yazını ortaya çəkir',\n 'justifyRight': 'Yazını sağa çəkir',\n 'justifyFull': 'Yazını hər iki tərəfə yazır',\n 'insertUnorderedList': 'Nizamsız sıra əlavə edir',\n 'insertOrderedList': 'Nizamlı sıra əlavə edir',\n 'outdent': 'Aktiv paraqrafın girintisini azaltır',\n 'indent': 'Aktiv paragrafın girintisini artırır',\n 'formatPara': 'Aktiv bloqun formatını paraqraf (p) olaraq dəyişdirir',\n 'formatH1': 'Aktiv bloqun formatını başlıq 1 (h1) olaraq dəyişdirir',\n 'formatH2': 'Aktiv bloqun formatını başlıq 2 (h2) olaraq dəyişdirir',\n 'formatH3': 'Aktiv bloqun formatını başlıq 3 (h3) olaraq dəyişdirir',\n 'formatH4': 'Aktiv bloqun formatını başlıq 4 (h4) olaraq dəyişdirir',\n 'formatH5': 'Aktiv bloqun formatını başlıq 5 (h5) olaraq dəyişdirir',\n 'formatH6': 'Aktiv bloqun formatını başlıq 6 (h6) olaraq dəyişdirir',\n 'insertHorizontalRule': 'Üfuqi xətt əlavə edir',\n 'linkDialog.show': 'Link parametrləri qutusunu göstərir',\n },\n history: {\n undo: 'Əvvəlki vəziyyət',\n redo: 'Sonrakı vəziyyət',\n },\n specialChar: {\n specialChar: 'Xüsusi simvollar',\n select: 'Xüsusi simvolları seçin',\n },\n },\n });\n})(jQuery);"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.min.js new file mode 100644 index 0000000..a895fd5 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(a,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var r=i();for(var l in r)("object"==typeof exports?exports:a)[l]=r[l]}}(self,(function(){return(a=jQuery).extend(a.summernote.lang,{"az-AZ":{font:{bold:"Qalın",italic:"Əyri",underline:"Altı xətli",clear:"Təmizlə",height:"Sətir hündürlüyü",name:"Yazı Tipi",strikethrough:"Üstü xətli",subscript:"Alt simvol",superscript:"Üst simvol",size:"Yazı ölçüsü"},image:{image:"Şəkil",insert:"Şəkil əlavə et",resizeFull:"Original ölçü",resizeHalf:"1/2 ölçü",resizeQuarter:"1/4 ölçü",floatLeft:"Sola çək",floatRight:"Sağa çək",floatNone:"Sola-sağa çəkilməni ləğv et",shapeRounded:"Şəkil: yuvarlaq künç",shapeCircle:"Şəkil: Dairə",shapeThumbnail:"Şəkil: Thumbnail",shapeNone:"Şəkil: Yox",dragImageHere:"Bura sürüşdür",dropImage:"Şəkil və ya mətni buraxın",selectFromFiles:"Sənəd seçin",maximumFileSize:"Maksimum sənəd ölçüsü",maximumFileSizeError:"Maksimum sənəd ölçüsünü keçdiniz.",url:"Şəkil linki",remove:"Şəkli sil",original:"Original"},video:{video:"Video",videoLink:"Video linki",insert:"Video əlavə et",url:"Video linki?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion və ya Youku)"},link:{link:"Link",insert:"Link əlavə et",unlink:"Linki sil",edit:"Linkə düzəliş et",textToDisplay:"Ekranda göstəriləcək link adı",url:"Link ünvanı?",openInNewWindow:"Yeni pəncərədə aç"},table:{table:"Cədvəl",addRowAbove:"Yuxarı sətir əlavə et",addRowBelow:"Aşağı sətir əlavə et",addColLeft:"Sola sütun əlavə et",addColRight:"Sağa sütun əlavə et",delRow:"Sətiri sil",delCol:"Sütunu sil",delTable:"Cədvəli sil"},hr:{insert:"Üfuqi xətt əlavə et"},style:{style:"Stil",p:"p",blockquote:"İstinad",pre:"Ön baxış",h1:"Başlıq 1",h2:"Başlıq 2",h3:"Başlıq 3",h4:"Başlıq 4",h5:"Başlıq 5",h6:"Başlıq 6"},lists:{unordered:"Nizamsız sıra",ordered:"Nizamlı sıra"},options:{help:"Kömək",fullscreen:"Tam ekran",codeview:"HTML Kodu"},paragraph:{paragraph:"Paraqraf",outdent:"Girintini artır",indent:"Girintini azalt",left:"Sola çək",center:"Ortaya çək",right:"Sağa çək",justify:"Sola və sağa çək"},color:{recent:"Son rənk",more:"Daha çox rənk",background:"Arxa fon rəngi",foreground:"Yazı rıngi",transparent:"Şəffaflıq",setTransparent:"Şəffaflığı nizamla",reset:"Sıfırla",resetToDefault:"Susyama görə sıfırla"},shortcut:{shortcuts:"Qısayollar",close:"Bağla",textFormatting:"Yazı formatlandırmaq",action:"Hadisə",paragraphFormatting:"Paraqraf formatlandırmaq",documentStyle:"Sənəd stili",extraKeys:"Əlavə"},help:{insertParagraph:"Paraqraf əlavə etmək",undo:"Son əmri geri alır",redo:"Son əmri irəli alır",tab:"Girintini artırır",untab:"Girintini azaltır",bold:"Qalın yazma stilini nizamlayır",italic:"İtalik yazma stilini nizamlayır",underline:"Altı xətli yazma stilini nizamlayır",strikethrough:"Üstü xətli yazma stilini nizamlayır",removeFormat:"Formatlandırmanı ləğv edir",justifyLeft:"Yazını sola çəkir",justifyCenter:"Yazını ortaya çəkir",justifyRight:"Yazını sağa çəkir",justifyFull:"Yazını hər iki tərəfə yazır",insertUnorderedList:"Nizamsız sıra əlavə edir",insertOrderedList:"Nizamlı sıra əlavə edir",outdent:"Aktiv paraqrafın girintisini azaltır",indent:"Aktiv paragrafın girintisini artırır",formatPara:"Aktiv bloqun formatını paraqraf (p) olaraq dəyişdirir",formatH1:"Aktiv bloqun formatını başlıq 1 (h1) olaraq dəyişdirir",formatH2:"Aktiv bloqun formatını başlıq 2 (h2) olaraq dəyişdirir",formatH3:"Aktiv bloqun formatını başlıq 3 (h3) olaraq dəyişdirir",formatH4:"Aktiv bloqun formatını başlıq 4 (h4) olaraq dəyişdirir",formatH5:"Aktiv bloqun formatını başlıq 5 (h5) olaraq dəyişdirir",formatH6:"Aktiv bloqun formatını başlıq 6 (h6) olaraq dəyişdirir",insertHorizontalRule:"Üfuqi xətt əlavə edir","linkDialog.show":"Link parametrləri qutusunu göstərir"},history:{undo:"Əvvəlki vəziyyət",redo:"Sonrakı vəziyyət"},specialChar:{specialChar:"Xüsusi simvollar",select:"Xüsusi simvolları seçin"}}}),{};var a})); +//# sourceMappingURL=summernote-az-AZ.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.min.js.map new file mode 100644 index 0000000..c4746fb --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-az-AZ.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-az-AZ.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCEUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,OACRC,UAAW,aACXC,MAAO,UACPC,OAAQ,mBACRC,KAAM,YACNC,cAAe,aACfC,UAAW,aACXC,YAAa,aACbC,KAAM,eAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,iBACRC,WAAY,gBACZC,WAAY,WACZC,cAAe,WACfC,UAAW,WACXC,WAAY,WACZC,UAAW,8BACXC,aAAc,uBACdC,YAAa,eACbC,eAAgB,mBAChBC,UAAW,aACXC,cAAe,gBACfC,UAAW,4BACXC,gBAAiB,cACjBC,gBAAiB,wBACjBC,qBAAsB,oCACtBC,IAAK,cACLC,OAAQ,YACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,cACXpB,OAAQ,iBACRgB,IAAK,eACLK,UAAW,8DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,gBACRuB,OAAQ,YACRC,KAAM,mBACNC,cAAe,gCACfT,IAAK,eACLU,gBAAiB,qBAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,wBACbC,YAAa,uBACbC,WAAY,sBACZC,YAAa,sBACbC,OAAQ,aACRC,OAAQ,aACRC,SAAU,eAEZC,GAAI,CACFnC,OAAQ,uBAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,IACHC,WAAY,UACZC,IAAK,WACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,gBACXC,QAAS,gBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,YACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,kBACTC,OAAQ,kBACRC,KAAM,WACNC,OAAQ,aACRC,MAAO,WACPC,QAAS,oBAEXC,MAAO,CACLC,OAAQ,WACRC,KAAM,gBACNC,WAAY,iBACZC,WAAY,aACZC,YAAa,YACbC,eAAgB,qBAChBC,MAAO,UACPC,eAAgB,wBAElBC,SAAU,CACRC,UAAW,aACXC,MAAO,QACPC,eAAgB,uBAChBC,OAAQ,SACRC,oBAAqB,2BACrBC,cAAe,cACfC,UAAW,SAEb1B,KAAM,CACJ,gBAAmB,uBACnB,KAAQ,qBACR,KAAQ,sBACR,IAAO,oBACP,MAAS,oBACT,KAAQ,iCACR,OAAU,kCACV,UAAa,sCACb,cAAiB,sCACjB,aAAgB,6BAChB,YAAe,oBACf,cAAiB,sBACjB,aAAgB,oBAChB,YAAe,8BACf,oBAAuB,2BACvB,kBAAqB,0BACrB,QAAW,uCACX,OAAU,uCACV,WAAc,wDACd,SAAY,yDACZ,SAAY,yDACZ,SAAY,yDACZ,SAAY,yDACZ,SAAY,yDACZ,SAAY,yDACZ,qBAAwB,wBACxB,kBAAmB,uCAErB2B,QAAS,CACPC,KAAM,mBACNC,KAAM,oBAERC,YAAa,CACXA,YAAa,mBACbC,OAAQ,8B,GDxJhB,ICEUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-az-AZ.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","//Summernote WYSIWYG editor ucun Azerbaycan dili fayli\n//Tercume etdi: RAMIL ALIYEV\n//Tarix: 20.07.2019\n//Baki Azerbaycan\n//Website: https://ramilaliyev.com\n\n//Azerbaijan language for Summernote WYSIWYG \n//Translated by: RAMIL ALIYEV\n//Date: 20.07.2019\n//Baku Azerbaijan\n//Website: https://ramilaliyev.com\n\n(function($) {\n $.extend($.summernote.lang, {\n 'az-AZ': {\n font: {\n bold: 'Qalın',\n italic: 'Əyri',\n underline: 'Altı xətli',\n clear: 'Təmizlə',\n height: 'Sətir hündürlüyü',\n name: 'Yazı Tipi',\n strikethrough: 'Üstü xətli',\n subscript: 'Alt simvol',\n superscript: 'Üst simvol',\n size: 'Yazı ölçüsü',\n },\n image: {\n image: 'Şəkil',\n insert: 'Şəkil əlavə et',\n resizeFull: 'Original ölçü',\n resizeHalf: '1/2 ölçü',\n resizeQuarter: '1/4 ölçü',\n floatLeft: 'Sola çək',\n floatRight: 'Sağa çək',\n floatNone: 'Sola-sağa çəkilməni ləğv et',\n shapeRounded: 'Şəkil: yuvarlaq künç',\n shapeCircle: 'Şəkil: Dairə',\n shapeThumbnail: 'Şəkil: Thumbnail',\n shapeNone: 'Şəkil: Yox',\n dragImageHere: 'Bura sürüşdür',\n dropImage: 'Şəkil və ya mətni buraxın',\n selectFromFiles: 'Sənəd seçin',\n maximumFileSize: 'Maksimum sənəd ölçüsü',\n maximumFileSizeError: 'Maksimum sənəd ölçüsünü keçdiniz.',\n url: 'Şəkil linki',\n remove: 'Şəkli sil',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video linki',\n insert: 'Video əlavə et',\n url: 'Video linki?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion və ya Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link əlavə et',\n unlink: 'Linki sil',\n edit: 'Linkə düzəliş et',\n textToDisplay: 'Ekranda göstəriləcək link adı',\n url: 'Link ünvanı?',\n openInNewWindow: 'Yeni pəncərədə aç',\n },\n table: {\n table: 'Cədvəl',\n addRowAbove: 'Yuxarı sətir əlavə et',\n addRowBelow: 'Aşağı sətir əlavə et',\n addColLeft: 'Sola sütun əlavə et',\n addColRight: 'Sağa sütun əlavə et',\n delRow: 'Sətiri sil',\n delCol: 'Sütunu sil',\n delTable: 'Cədvəli sil',\n },\n hr: {\n insert: 'Üfuqi xətt əlavə et',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'İstinad',\n pre: 'Ön baxış',\n h1: 'Başlıq 1',\n h2: 'Başlıq 2',\n h3: 'Başlıq 3',\n h4: 'Başlıq 4',\n h5: 'Başlıq 5',\n h6: 'Başlıq 6',\n },\n lists: {\n unordered: 'Nizamsız sıra',\n ordered: 'Nizamlı sıra',\n },\n options: {\n help: 'Kömək',\n fullscreen: 'Tam ekran',\n codeview: 'HTML Kodu',\n },\n paragraph: {\n paragraph: 'Paraqraf',\n outdent: 'Girintini artır',\n indent: 'Girintini azalt',\n left: 'Sola çək',\n center: 'Ortaya çək',\n right: 'Sağa çək',\n justify: 'Sola və sağa çək',\n },\n color: {\n recent: 'Son rənk',\n more: 'Daha çox rənk',\n background: 'Arxa fon rəngi',\n foreground: 'Yazı rıngi',\n transparent: 'Şəffaflıq',\n setTransparent: 'Şəffaflığı nizamla',\n reset: 'Sıfırla',\n resetToDefault: 'Susyama görə sıfırla',\n },\n shortcut: {\n shortcuts: 'Qısayollar',\n close: 'Bağla',\n textFormatting: 'Yazı formatlandırmaq',\n action: 'Hadisə',\n paragraphFormatting: 'Paraqraf formatlandırmaq',\n documentStyle: 'Sənəd stili',\n extraKeys: 'Əlavə',\n },\n help: {\n 'insertParagraph': 'Paraqraf əlavə etmək',\n 'undo': 'Son əmri geri alır',\n 'redo': 'Son əmri irəli alır',\n 'tab': 'Girintini artırır',\n 'untab': 'Girintini azaltır',\n 'bold': 'Qalın yazma stilini nizamlayır',\n 'italic': 'İtalik yazma stilini nizamlayır',\n 'underline': 'Altı xətli yazma stilini nizamlayır',\n 'strikethrough': 'Üstü xətli yazma stilini nizamlayır',\n 'removeFormat': 'Formatlandırmanı ləğv edir',\n 'justifyLeft': 'Yazını sola çəkir',\n 'justifyCenter': 'Yazını ortaya çəkir',\n 'justifyRight': 'Yazını sağa çəkir',\n 'justifyFull': 'Yazını hər iki tərəfə yazır',\n 'insertUnorderedList': 'Nizamsız sıra əlavə edir',\n 'insertOrderedList': 'Nizamlı sıra əlavə edir',\n 'outdent': 'Aktiv paraqrafın girintisini azaltır',\n 'indent': 'Aktiv paragrafın girintisini artırır',\n 'formatPara': 'Aktiv bloqun formatını paraqraf (p) olaraq dəyişdirir',\n 'formatH1': 'Aktiv bloqun formatını başlıq 1 (h1) olaraq dəyişdirir',\n 'formatH2': 'Aktiv bloqun formatını başlıq 2 (h2) olaraq dəyişdirir',\n 'formatH3': 'Aktiv bloqun formatını başlıq 3 (h3) olaraq dəyişdirir',\n 'formatH4': 'Aktiv bloqun formatını başlıq 4 (h4) olaraq dəyişdirir',\n 'formatH5': 'Aktiv bloqun formatını başlıq 5 (h5) olaraq dəyişdirir',\n 'formatH6': 'Aktiv bloqun formatını başlıq 6 (h6) olaraq dəyişdirir',\n 'insertHorizontalRule': 'Üfuqi xətt əlavə edir',\n 'linkDialog.show': 'Link parametrləri qutusunu göstərir',\n },\n history: {\n undo: 'Əvvəlki vəziyyət',\n redo: 'Sonrakı vəziyyət',\n },\n specialChar: {\n specialChar: 'Xüsusi simvollar',\n select: 'Xüsusi simvolları seçin',\n },\n },\n });\n})(jQuery);"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.js b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.js new file mode 100644 index 0000000..6c18b46 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'bg-BG': { + font: { + bold: 'Удебелен', + italic: 'Наклонен', + underline: 'Подчертан', + clear: 'Изчисти стиловете', + height: 'Височина', + name: 'Шрифт', + strikethrough: 'Задраскано', + subscript: 'Долен индекс', + superscript: 'Горен индекс', + size: 'Размер на шрифта' + }, + image: { + image: 'Изображение', + insert: 'Постави картинка', + resizeFull: 'Цял размер', + resizeHalf: 'Размер на 50%', + resizeQuarter: 'Размер на 25%', + floatLeft: 'Подравни в ляво', + floatRight: 'Подравни в дясно', + floatNone: 'Без подравняване', + shapeRounded: 'Форма: Заоблено', + shapeCircle: 'Форма: Кръг', + shapeThumbnail: 'Форма: Миниатюра', + shapeNone: 'Форма: Без', + dragImageHere: 'Пуснете изображението тук', + dropImage: 'Пуснете Изображение или Текст', + selectFromFiles: 'Изберете файл', + maximumFileSize: 'Максимален размер на файла', + maximumFileSizeError: 'Достигнат Максимален размер на файла.', + url: 'URL адрес на изображение', + remove: 'Премахни изображение', + original: 'Оригинал' + }, + video: { + video: 'Видео', + videoLink: 'Видео линк', + insert: 'Добави Видео', + url: 'Видео URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Връзка', + insert: 'Добави връзка', + unlink: 'Премахни връзка', + edit: 'Промени', + textToDisplay: 'Текст за показване', + url: 'URL адрес', + openInNewWindow: 'Отвори в нов прозорец' + }, + table: { + table: 'Таблица', + addRowAbove: 'Добави ред отгоре', + addRowBelow: 'Добави ред отдолу', + addColLeft: 'Добави колона отляво', + addColRight: 'Добави колона отдясно', + delRow: 'Изтрии ред', + delCol: 'Изтрии колона', + delTable: 'Изтрии таблица' + }, + hr: { + insert: 'Добави хоризонтална линия' + }, + style: { + style: 'Стил', + p: 'Нормален', + blockquote: 'Цитат', + pre: 'Код', + h1: 'Заглавие 1', + h2: 'Заглавие 2', + h3: 'Заглавие 3', + h4: 'Заглавие 4', + h5: 'Заглавие 5', + h6: 'Заглавие 6' + }, + lists: { + unordered: 'Символен списък', + ordered: 'Цифров списък' + }, + options: { + help: 'Помощ', + fullscreen: 'На цял екран', + codeview: 'Преглед на код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Намаляване на отстъпа', + indent: 'Абзац', + left: 'Подравняване в ляво', + center: 'Център', + right: 'Подравняване в дясно', + justify: 'Разтягане по ширина' + }, + color: { + recent: 'Последния избран цвят', + more: 'Още цветове', + background: 'Цвят на фона', + foreground: 'Цвят на шрифта', + transparent: 'Прозрачен', + setTransparent: 'Направете прозрачен', + reset: 'Възстанови', + resetToDefault: 'Възстанови оригиналните', + cpSelect: 'Изберете' + }, + shortcut: { + shortcuts: 'Клавишни комбинации', + close: 'Затвори', + textFormatting: 'Форматиране на текста', + action: 'Действие', + paragraphFormatting: 'Форматиране на параграф', + documentStyle: 'Стил на документа', + extraKeys: 'Екстра бутони' + }, + help: { + 'insertParagraph': 'Добави Параграф', + 'undo': 'Отмени последната промяна', + 'redo': 'Върни последната промяна', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Удебели', + 'italic': 'Приложи наклонен стил', + 'underline': 'Приложи подчераване', + 'strikethrough': 'Приложи зачеркнат стил', + 'removeFormat': 'Изчисти стилове', + 'justifyLeft': 'Подравняване в ляво', + 'justifyCenter': 'Подравняване в центъра', + 'justifyRight': 'Подравняване в дясно', + 'justifyFull': 'Двустранно подравняване', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Вмъкни хоризонтално правило', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Назад', + redo: 'Напред' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Избери Специални символи' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-bg-BG.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.js.map new file mode 100644 index 0000000..4160401 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-bg-BG.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-bg-BG.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'bg-BG': {\n font: {\n bold: 'Удебелен',\n italic: 'Наклонен',\n underline: 'Подчертан',\n clear: 'Изчисти стиловете',\n height: 'Височина',\n name: 'Шрифт',\n strikethrough: 'Задраскано',\n subscript: 'Долен индекс',\n superscript: 'Горен индекс',\n size: 'Размер на шрифта',\n },\n image: {\n image: 'Изображение',\n insert: 'Постави картинка',\n resizeFull: 'Цял размер',\n resizeHalf: 'Размер на 50%',\n resizeQuarter: 'Размер на 25%',\n floatLeft: 'Подравни в ляво',\n floatRight: 'Подравни в дясно',\n floatNone: 'Без подравняване',\n shapeRounded: 'Форма: Заоблено',\n shapeCircle: 'Форма: Кръг',\n shapeThumbnail: 'Форма: Миниатюра',\n shapeNone: 'Форма: Без',\n dragImageHere: 'Пуснете изображението тук',\n dropImage: 'Пуснете Изображение или Текст',\n selectFromFiles: 'Изберете файл',\n maximumFileSize: 'Максимален размер на файла',\n maximumFileSizeError: 'Достигнат Максимален размер на файла.',\n url: 'URL адрес на изображение',\n remove: 'Премахни изображение',\n original: 'Оригинал',\n },\n video: {\n video: 'Видео',\n videoLink: 'Видео линк',\n insert: 'Добави Видео',\n url: 'Видео URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Връзка',\n insert: 'Добави връзка',\n unlink: 'Премахни връзка',\n edit: 'Промени',\n textToDisplay: 'Текст за показване',\n url: 'URL адрес',\n openInNewWindow: 'Отвори в нов прозорец',\n },\n table: {\n table: 'Таблица',\n addRowAbove: 'Добави ред отгоре',\n addRowBelow: 'Добави ред отдолу',\n addColLeft: 'Добави колона отляво',\n addColRight: 'Добави колона отдясно',\n delRow: 'Изтрии ред',\n delCol: 'Изтрии колона',\n delTable: 'Изтрии таблица',\n },\n hr: {\n insert: 'Добави хоризонтална линия',\n },\n style: {\n style: 'Стил',\n p: 'Нормален',\n blockquote: 'Цитат',\n pre: 'Код',\n h1: 'Заглавие 1',\n h2: 'Заглавие 2',\n h3: 'Заглавие 3',\n h4: 'Заглавие 4',\n h5: 'Заглавие 5',\n h6: 'Заглавие 6',\n },\n lists: {\n unordered: 'Символен списък',\n ordered: 'Цифров списък',\n },\n options: {\n help: 'Помощ',\n fullscreen: 'На цял екран',\n codeview: 'Преглед на код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Намаляване на отстъпа',\n indent: 'Абзац',\n left: 'Подравняване в ляво',\n center: 'Център',\n right: 'Подравняване в дясно',\n justify: 'Разтягане по ширина',\n },\n color: {\n recent: 'Последния избран цвят',\n more: 'Още цветове',\n background: 'Цвят на фона',\n foreground: 'Цвят на шрифта',\n transparent: 'Прозрачен',\n setTransparent: 'Направете прозрачен',\n reset: 'Възстанови',\n resetToDefault: 'Възстанови оригиналните',\n cpSelect: 'Изберете',\n },\n shortcut: {\n shortcuts: 'Клавишни комбинации',\n close: 'Затвори',\n textFormatting: 'Форматиране на текста',\n action: 'Действие',\n paragraphFormatting: 'Форматиране на параграф',\n documentStyle: 'Стил на документа',\n extraKeys: 'Екстра бутони',\n },\n help: {\n 'insertParagraph': 'Добави Параграф',\n 'undo': 'Отмени последната промяна',\n 'redo': 'Върни последната промяна',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Удебели',\n 'italic': 'Приложи наклонен стил',\n 'underline': 'Приложи подчераване',\n 'strikethrough': 'Приложи зачеркнат стил',\n 'removeFormat': 'Изчисти стилове',\n 'justifyLeft': 'Подравняване в ляво',\n 'justifyCenter': 'Подравняване в центъра',\n 'justifyRight': 'Подравняване в дясно',\n 'justifyFull': 'Двустранно подравняване',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Вмъкни хоризонтално правило',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Назад',\n redo: 'Напред',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Избери Специални символи',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.min.js new file mode 100644 index 0000000..16b79e8 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var t=r();for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"bg-BG":{font:{bold:"Удебелен",italic:"Наклонен",underline:"Подчертан",clear:"Изчисти стиловете",height:"Височина",name:"Шрифт",strikethrough:"Задраскано",subscript:"Долен индекс",superscript:"Горен индекс",size:"Размер на шрифта"},image:{image:"Изображение",insert:"Постави картинка",resizeFull:"Цял размер",resizeHalf:"Размер на 50%",resizeQuarter:"Размер на 25%",floatLeft:"Подравни в ляво",floatRight:"Подравни в дясно",floatNone:"Без подравняване",shapeRounded:"Форма: Заоблено",shapeCircle:"Форма: Кръг",shapeThumbnail:"Форма: Миниатюра",shapeNone:"Форма: Без",dragImageHere:"Пуснете изображението тук",dropImage:"Пуснете Изображение или Текст",selectFromFiles:"Изберете файл",maximumFileSize:"Максимален размер на файла",maximumFileSizeError:"Достигнат Максимален размер на файла.",url:"URL адрес на изображение",remove:"Премахни изображение",original:"Оригинал"},video:{video:"Видео",videoLink:"Видео линк",insert:"Добави Видео",url:"Видео URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Връзка",insert:"Добави връзка",unlink:"Премахни връзка",edit:"Промени",textToDisplay:"Текст за показване",url:"URL адрес",openInNewWindow:"Отвори в нов прозорец"},table:{table:"Таблица",addRowAbove:"Добави ред отгоре",addRowBelow:"Добави ред отдолу",addColLeft:"Добави колона отляво",addColRight:"Добави колона отдясно",delRow:"Изтрии ред",delCol:"Изтрии колона",delTable:"Изтрии таблица"},hr:{insert:"Добави хоризонтална линия"},style:{style:"Стил",p:"Нормален",blockquote:"Цитат",pre:"Код",h1:"Заглавие 1",h2:"Заглавие 2",h3:"Заглавие 3",h4:"Заглавие 4",h5:"Заглавие 5",h6:"Заглавие 6"},lists:{unordered:"Символен списък",ordered:"Цифров списък"},options:{help:"Помощ",fullscreen:"На цял екран",codeview:"Преглед на код"},paragraph:{paragraph:"Параграф",outdent:"Намаляване на отстъпа",indent:"Абзац",left:"Подравняване в ляво",center:"Център",right:"Подравняване в дясно",justify:"Разтягане по ширина"},color:{recent:"Последния избран цвят",more:"Още цветове",background:"Цвят на фона",foreground:"Цвят на шрифта",transparent:"Прозрачен",setTransparent:"Направете прозрачен",reset:"Възстанови",resetToDefault:"Възстанови оригиналните",cpSelect:"Изберете"},shortcut:{shortcuts:"Клавишни комбинации",close:"Затвори",textFormatting:"Форматиране на текста",action:"Действие",paragraphFormatting:"Форматиране на параграф",documentStyle:"Стил на документа",extraKeys:"Екстра бутони"},help:{insertParagraph:"Добави Параграф",undo:"Отмени последната промяна",redo:"Върни последната промяна",tab:"Tab",untab:"Untab",bold:"Удебели",italic:"Приложи наклонен стил",underline:"Приложи подчераване",strikethrough:"Приложи зачеркнат стил",removeFormat:"Изчисти стилове",justifyLeft:"Подравняване в ляво",justifyCenter:"Подравняване в центъра",justifyRight:"Подравняване в дясно",justifyFull:"Двустранно подравняване",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Вмъкни хоризонтално правило","linkDialog.show":"Show Link Dialog"},history:{undo:"Назад",redo:"Напред"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Избери Специални символи"}}}),{};var e})); +//# sourceMappingURL=summernote-bg-BG.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.min.js.map new file mode 100644 index 0000000..812f060 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bg-BG.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-bg-BG.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,WACNC,OAAQ,WACRC,UAAW,YACXC,MAAO,oBACPC,OAAQ,WACRC,KAAM,QACNC,cAAe,aACfC,UAAW,eACXC,YAAa,eACbC,KAAM,oBAERC,MAAO,CACLA,MAAO,cACPC,OAAQ,mBACRC,WAAY,aACZC,WAAY,gBACZC,cAAe,gBACfC,UAAW,kBACXC,WAAY,mBACZC,UAAW,mBACXC,aAAc,kBACdC,YAAa,cACbC,eAAgB,mBAChBC,UAAW,aACXC,cAAe,4BACfC,UAAW,gCACXC,gBAAiB,gBACjBC,gBAAiB,6BACjBC,qBAAsB,wCACtBC,IAAK,2BACLC,OAAQ,uBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,eACRgB,IAAK,aACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,SACNtB,OAAQ,gBACRuB,OAAQ,kBACRC,KAAM,UACNC,cAAe,qBACfT,IAAK,YACLU,gBAAiB,yBAEnBC,MAAO,CACLA,MAAO,UACPC,YAAa,oBACbC,YAAa,oBACbC,WAAY,uBACZC,YAAa,wBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,kBAEZC,GAAI,CACFnC,OAAQ,6BAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,WACHC,WAAY,QACZC,IAAK,MACLC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,cAENC,MAAO,CACLC,UAAW,kBACXC,QAAS,iBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,eACZC,SAAU,kBAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,wBACTC,OAAQ,QACRC,KAAM,sBACNC,OAAQ,SACRC,MAAO,uBACPC,QAAS,uBAEXC,MAAO,CACLC,OAAQ,wBACRC,KAAM,cACNC,WAAY,eACZC,WAAY,iBACZC,YAAa,YACbC,eAAgB,sBAChBC,MAAO,aACPC,eAAgB,0BAChBC,SAAU,YAEZC,SAAU,CACRC,UAAW,sBACXC,MAAO,UACPC,eAAgB,wBAChBC,OAAQ,WACRC,oBAAqB,0BACrBC,cAAe,oBACfC,UAAW,iBAEb3B,KAAM,CACJ,gBAAmB,kBACnB,KAAQ,4BACR,KAAQ,2BACR,IAAO,MACP,MAAS,QACT,KAAQ,UACR,OAAU,wBACV,UAAa,sBACb,cAAiB,yBACjB,aAAgB,kBAChB,YAAe,sBACf,cAAiB,yBACjB,aAAgB,uBAChB,YAAe,0BACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,8BACxB,kBAAmB,oBAErB4B,QAAS,CACPC,KAAM,QACNC,KAAM,UAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,+B,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-bg-BG.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'bg-BG': {\n font: {\n bold: 'Удебелен',\n italic: 'Наклонен',\n underline: 'Подчертан',\n clear: 'Изчисти стиловете',\n height: 'Височина',\n name: 'Шрифт',\n strikethrough: 'Задраскано',\n subscript: 'Долен индекс',\n superscript: 'Горен индекс',\n size: 'Размер на шрифта',\n },\n image: {\n image: 'Изображение',\n insert: 'Постави картинка',\n resizeFull: 'Цял размер',\n resizeHalf: 'Размер на 50%',\n resizeQuarter: 'Размер на 25%',\n floatLeft: 'Подравни в ляво',\n floatRight: 'Подравни в дясно',\n floatNone: 'Без подравняване',\n shapeRounded: 'Форма: Заоблено',\n shapeCircle: 'Форма: Кръг',\n shapeThumbnail: 'Форма: Миниатюра',\n shapeNone: 'Форма: Без',\n dragImageHere: 'Пуснете изображението тук',\n dropImage: 'Пуснете Изображение или Текст',\n selectFromFiles: 'Изберете файл',\n maximumFileSize: 'Максимален размер на файла',\n maximumFileSizeError: 'Достигнат Максимален размер на файла.',\n url: 'URL адрес на изображение',\n remove: 'Премахни изображение',\n original: 'Оригинал',\n },\n video: {\n video: 'Видео',\n videoLink: 'Видео линк',\n insert: 'Добави Видео',\n url: 'Видео URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Връзка',\n insert: 'Добави връзка',\n unlink: 'Премахни връзка',\n edit: 'Промени',\n textToDisplay: 'Текст за показване',\n url: 'URL адрес',\n openInNewWindow: 'Отвори в нов прозорец',\n },\n table: {\n table: 'Таблица',\n addRowAbove: 'Добави ред отгоре',\n addRowBelow: 'Добави ред отдолу',\n addColLeft: 'Добави колона отляво',\n addColRight: 'Добави колона отдясно',\n delRow: 'Изтрии ред',\n delCol: 'Изтрии колона',\n delTable: 'Изтрии таблица',\n },\n hr: {\n insert: 'Добави хоризонтална линия',\n },\n style: {\n style: 'Стил',\n p: 'Нормален',\n blockquote: 'Цитат',\n pre: 'Код',\n h1: 'Заглавие 1',\n h2: 'Заглавие 2',\n h3: 'Заглавие 3',\n h4: 'Заглавие 4',\n h5: 'Заглавие 5',\n h6: 'Заглавие 6',\n },\n lists: {\n unordered: 'Символен списък',\n ordered: 'Цифров списък',\n },\n options: {\n help: 'Помощ',\n fullscreen: 'На цял екран',\n codeview: 'Преглед на код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Намаляване на отстъпа',\n indent: 'Абзац',\n left: 'Подравняване в ляво',\n center: 'Център',\n right: 'Подравняване в дясно',\n justify: 'Разтягане по ширина',\n },\n color: {\n recent: 'Последния избран цвят',\n more: 'Още цветове',\n background: 'Цвят на фона',\n foreground: 'Цвят на шрифта',\n transparent: 'Прозрачен',\n setTransparent: 'Направете прозрачен',\n reset: 'Възстанови',\n resetToDefault: 'Възстанови оригиналните',\n cpSelect: 'Изберете',\n },\n shortcut: {\n shortcuts: 'Клавишни комбинации',\n close: 'Затвори',\n textFormatting: 'Форматиране на текста',\n action: 'Действие',\n paragraphFormatting: 'Форматиране на параграф',\n documentStyle: 'Стил на документа',\n extraKeys: 'Екстра бутони',\n },\n help: {\n 'insertParagraph': 'Добави Параграф',\n 'undo': 'Отмени последната промяна',\n 'redo': 'Върни последната промяна',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Удебели',\n 'italic': 'Приложи наклонен стил',\n 'underline': 'Приложи подчераване',\n 'strikethrough': 'Приложи зачеркнат стил',\n 'removeFormat': 'Изчисти стилове',\n 'justifyLeft': 'Подравняване в ляво',\n 'justifyCenter': 'Подравняване в центъра',\n 'justifyRight': 'Подравняване в дясно',\n 'justifyFull': 'Двустранно подравняване',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Вмъкни хоризонтално правило',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Назад',\n redo: 'Напред',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Избери Специални символи',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.js b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.js new file mode 100644 index 0000000..466e0be --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.js @@ -0,0 +1,189 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'bn-BD': { + font: { + bold: 'গাঢ়', + italic: 'তির্যক', + underline: 'নিন্মরেখা', + clear: 'ফন্টের শৈলী সরান', + height: 'লাইনের উচ্চতা', + name: 'ফন্ট পরিবার', + strikethrough: 'অবচ্ছেদন', + subscript: 'নিম্নলিপি', + superscript: 'উর্ধ্বলিপি', + size: 'ফন্টের আকার', + sizeunit: 'ফন্টের আকারের একক' + }, + image: { + image: 'ছবি', + insert: 'ছবি যোগ করুন', + resizeFull: 'পূর্ণ আকারে নিন', + resizeHalf: 'অর্ধ আকারে নিন', + resizeQuarter: 'চতুর্থাংশ আকারে নিন', + resizeNone: 'আসল আকার', + floatLeft: 'বামে নিন', + floatRight: 'ডানে নিন', + floatNone: 'দিক সরান', + shapeRounded: 'আকৃতি: গোলাকার', + shapeCircle: 'আকৃতি: বৃত্ত', + shapeThumbnail: 'আকৃতি: থাম্বনেইল', + shapeNone: 'আকৃতি: কিছু নয়', + dragImageHere: 'এখানে ছবি বা লেখা টেনে আনুন', + dropImage: 'ছবি বা লেখা ছাড়ুন', + selectFromFiles: 'ফাইল থেকে নির্বাচন করুন', + maximumFileSize: 'সর্বোচ্চ ফাইলের আকার', + maximumFileSizeError: 'সর্বোচ্চ ফাইলের আকার অতিক্রম করেছে।', + url: 'ছবির URL', + remove: 'ছবি সরান', + original: 'আসল' + }, + video: { + video: 'ভিডিও', + videoLink: 'ভিডিওর লিঙ্ক', + insert: 'ভিডিও সন্নিবেশ করুন', + url: 'ভিডিওর URL', + providers: '(ইউটিউব, গুগল ড্রাইভ, ভিমিও, ভিন, ইনস্টাগ্রাম, ডেইলিমোশন বা ইউকু)' + }, + link: { + link: 'লিঙ্ক', + insert: 'লিঙ্ক সন্নিবেশ করুন', + unlink: 'লিঙ্কমুক্ত করুন', + edit: 'সম্পাদনা করুন', + textToDisplay: 'দেখানোর জন্য লেখা', + url: 'এই লিঙ্কটি কোন URL-এ যাবে?', + openInNewWindow: 'নতুন উইন্ডোতে খুলুন', + useProtocol: 'পূর্বনির্ধারিত প্রোটোকল ব্যবহার করুন' + }, + table: { + table: 'ছক', + addRowAbove: 'উপরে সারি যোগ করুন', + addRowBelow: 'নিচে সারি যোগ করুন', + addColLeft: 'বামে কলাম যোগ করুন', + addColRight: 'ডানে কলাম যোগ করুন', + delRow: 'সারি মুছুন', + delCol: 'কলাম মুছুন', + delTable: 'ছক মুছুন' + }, + hr: { + insert: 'বিভাজক রেখা সন্নিবেশ করুন' + }, + style: { + style: 'শৈলী', + p: 'সাধারণ', + blockquote: 'উক্তি', + pre: 'কোড', + h1: 'শীর্ষক ১', + h2: 'শীর্ষক ২', + h3: 'শীর্ষক ৩', + h4: 'শীর্ষক ৪', + h5: 'শীর্ষক ৫', + h6: 'শীর্ষক ৬' + }, + lists: { + unordered: 'অবিন্যস্ত তালিকা', + ordered: 'বিন্যস্ত তালিকা' + }, + options: { + help: 'সাহায্য', + fullscreen: 'পূর্ণ পর্দা', + codeview: 'কোড দৃশ্য' + }, + paragraph: { + paragraph: 'অনুচ্ছেদ', + outdent: 'ঋণাত্মক প্রান্তিককরণ', + indent: 'প্রান্তিককরণ', + left: 'বামে সারিবদ্ধ করুন', + center: 'কেন্দ্রে সারিবদ্ধ করুন', + right: 'ডানে সারিবদ্ধ করুন', + justify: 'যথাযথ ফাঁক দিয়ে সাজান' + }, + color: { + recent: 'সাম্প্রতিক রং', + more: 'আরও রং', + background: 'পটভূমির রং', + foreground: 'লেখার রং', + transparent: 'স্বচ্ছ', + setTransparent: 'স্বচ্ছ নির্ধারণ করুন', + reset: 'পুনঃস্থাপন করুন', + resetToDefault: 'পূর্বনির্ধারিত ফিরিয়ে আনুন', + cpSelect: 'নির্বাচন করুন' + }, + shortcut: { + shortcuts: 'কীবোর্ড শর্টকাট', + close: 'বন্ধ করুন', + textFormatting: 'লেখার বিন্যাসন', + action: 'কার্য', + paragraphFormatting: 'অনুচ্ছেদের বিন্যাসন', + documentStyle: 'নথির শৈলী', + extraKeys: 'অতিরিক্ত কীগুলি' + }, + help: { + 'escape': 'এস্কেপ', + 'insertParagraph': 'অনুচ্ছেদ সন্নিবেশ', + 'undo': 'শেষ কমান্ড পূর্বাবস্থায় ফেরত', + 'redo': 'শেষ কমান্ড পুনরায় করা', + 'tab': 'ট্যাব', + 'untab': 'অ-ট্যাব', + 'bold': 'গাঢ় শৈলী নির্ধারণ', + 'italic': 'তির্যক শৈলী নির্ধারণ', + 'underline': 'নিম্নরেখার শৈলী নির্ধারণ', + 'strikethrough': 'অবচ্ছেদনের শৈলী নির্ধারণ', + 'removeFormat': 'শৈলী পরিষ্কার', + 'justifyLeft': 'বামের সারিবন্ধন নির্ধারণ', + 'justifyCenter': 'কেন্দ্রের সারিবন্ধন নির্ধারণ', + 'justifyRight': 'ডানের সারিবন্ধন নির্ধারণ', + 'justifyFull': 'পূর্ণ সারিবন্ধন নির্ধারণ', + 'insertUnorderedList': 'অবিন্যস্ত তালিকা টগল', + 'insertOrderedList': 'বিন্যস্ত তালিকা টগল', + 'outdent': 'বর্তমান অনুচ্ছেদে ঋণাত্মক প্রান্তিককরণ', + 'indent': 'বর্তমান অনুচ্ছেদে প্রান্তিককরণ', + 'formatPara': 'বর্তমান ব্লকের বিন্যাসটি অনুচ্ছেদ হিসেবে পরিবর্তন (P ট্যাগ)', + 'formatH1': 'বর্তমান ব্লকের বিন্যাসটি H1 হিসেবে পরিবর্তন', + 'formatH2': 'বর্তমান ব্লকের বিন্যাসটি H2 হিসেবে পরিবর্তন', + 'formatH3': 'বর্তমান ব্লকের বিন্যাসটি H3 হিসেবে পরিবর্তন', + 'formatH4': 'বর্তমান ব্লকের বিন্যাসটি H4 হিসেবে পরিবর্তন', + 'formatH5': 'বর্তমান ব্লকের বিন্যাসটি H5 হিসেবে পরিবর্তন', + 'formatH6': 'বর্তমান ব্লকের বিন্যাসটি H6 হিসেবে পরিবর্তন', + 'insertHorizontalRule': 'বিভাজক রেখা সন্নিবেশ', + 'linkDialog.show': 'লিংক ডায়ালগ প্রদর্শন' + }, + history: { + undo: 'পূর্বাবস্থায় আনুন', + redo: 'পুনঃকরুন' + }, + specialChar: { + specialChar: 'বিশেষ অক্ষর', + select: 'বিশেষ অক্ষর নির্বাচন করুন' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-bn-BD.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.js.map new file mode 100644 index 0000000..8f0201a --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-bn-BD.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-bn-BD.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'bn-BD': {\n font: {\n bold: 'গাঢ়',\n italic: 'তির্যক',\n underline: 'নিন্মরেখা',\n clear: 'ফন্টের শৈলী সরান',\n height: 'লাইনের উচ্চতা',\n name: 'ফন্ট পরিবার',\n strikethrough: 'অবচ্ছেদন',\n subscript: 'নিম্নলিপি',\n superscript: 'উর্ধ্বলিপি',\n size: 'ফন্টের আকার',\n sizeunit: 'ফন্টের আকারের একক',\n },\n image: {\n image: 'ছবি',\n insert: 'ছবি যোগ করুন',\n resizeFull: 'পূর্ণ আকারে নিন',\n resizeHalf: 'অর্ধ আকারে নিন',\n resizeQuarter: 'চতুর্থাংশ আকারে নিন',\n resizeNone: 'আসল আকার',\n floatLeft: 'বামে নিন',\n floatRight: 'ডানে নিন',\n floatNone: 'দিক সরান',\n shapeRounded: 'আকৃতি: গোলাকার',\n shapeCircle: 'আকৃতি: বৃত্ত',\n shapeThumbnail: 'আকৃতি: থাম্বনেইল',\n shapeNone: 'আকৃতি: কিছু নয়',\n dragImageHere: 'এখানে ছবি বা লেখা টেনে আনুন',\n dropImage: 'ছবি বা লেখা ছাড়ুন',\n selectFromFiles: 'ফাইল থেকে নির্বাচন করুন',\n maximumFileSize: 'সর্বোচ্চ ফাইলের আকার',\n maximumFileSizeError: 'সর্বোচ্চ ফাইলের আকার অতিক্রম করেছে।',\n url: 'ছবির URL',\n remove: 'ছবি সরান',\n original: 'আসল',\n },\n video: {\n video: 'ভিডিও',\n videoLink: 'ভিডিওর লিঙ্ক',\n insert: 'ভিডিও সন্নিবেশ করুন',\n url: 'ভিডিওর URL',\n providers: '(ইউটিউব, গুগল ড্রাইভ, ভিমিও, ভিন, ইনস্টাগ্রাম, ডেইলিমোশন বা ইউকু)',\n },\n link: {\n link: 'লিঙ্ক',\n insert: 'লিঙ্ক সন্নিবেশ করুন',\n unlink: 'লিঙ্কমুক্ত করুন',\n edit: 'সম্পাদনা করুন',\n textToDisplay: 'দেখানোর জন্য লেখা',\n url: 'এই লিঙ্কটি কোন URL-এ যাবে?',\n openInNewWindow: 'নতুন উইন্ডোতে খুলুন',\n useProtocol: 'পূর্বনির্ধারিত প্রোটোকল ব্যবহার করুন',\n },\n table: {\n table: 'ছক',\n addRowAbove: 'উপরে সারি যোগ করুন',\n addRowBelow: 'নিচে সারি যোগ করুন',\n addColLeft: 'বামে কলাম যোগ করুন',\n addColRight: 'ডানে কলাম যোগ করুন',\n delRow: 'সারি মুছুন',\n delCol: 'কলাম মুছুন',\n delTable: 'ছক মুছুন',\n },\n hr: {\n insert: 'বিভাজক রেখা সন্নিবেশ করুন',\n },\n style: {\n style: 'শৈলী',\n p: 'সাধারণ',\n blockquote: 'উক্তি',\n pre: 'কোড',\n h1: 'শীর্ষক ১',\n h2: 'শীর্ষক ২',\n h3: 'শীর্ষক ৩',\n h4: 'শীর্ষক ৪',\n h5: 'শীর্ষক ৫',\n h6: 'শীর্ষক ৬',\n },\n lists: {\n unordered: 'অবিন্যস্ত তালিকা',\n ordered: 'বিন্যস্ত তালিকা',\n },\n options: {\n help: 'সাহায্য',\n fullscreen: 'পূর্ণ পর্দা',\n codeview: 'কোড দৃশ্য',\n },\n paragraph: {\n paragraph: 'অনুচ্ছেদ',\n outdent: 'ঋণাত্মক প্রান্তিককরণ',\n indent: 'প্রান্তিককরণ',\n left: 'বামে সারিবদ্ধ করুন',\n center: 'কেন্দ্রে সারিবদ্ধ করুন',\n right: 'ডানে সারিবদ্ধ করুন',\n justify: 'যথাযথ ফাঁক দিয়ে সাজান',\n },\n color: {\n recent: 'সাম্প্রতিক রং',\n more: 'আরও রং',\n background: 'পটভূমির রং',\n foreground: 'লেখার রং',\n transparent: 'স্বচ্ছ',\n setTransparent: 'স্বচ্ছ নির্ধারণ করুন',\n reset: 'পুনঃস্থাপন করুন',\n resetToDefault: 'পূর্বনির্ধারিত ফিরিয়ে আনুন',\n cpSelect: 'নির্বাচন করুন',\n },\n shortcut: {\n shortcuts: 'কীবোর্ড শর্টকাট',\n close: 'বন্ধ করুন',\n textFormatting: 'লেখার বিন্যাসন',\n action: 'কার্য',\n paragraphFormatting: 'অনুচ্ছেদের বিন্যাসন',\n documentStyle: 'নথির শৈলী',\n extraKeys: 'অতিরিক্ত কীগুলি',\n },\n help: {\n 'escape': 'এস্কেপ',\n 'insertParagraph': 'অনুচ্ছেদ সন্নিবেশ',\n 'undo': 'শেষ কমান্ড পূর্বাবস্থায় ফেরত',\n 'redo': 'শেষ কমান্ড পুনরায় করা',\n 'tab': 'ট্যাব',\n 'untab': 'অ-ট্যাব',\n 'bold': 'গাঢ় শৈলী নির্ধারণ',\n 'italic': 'তির্যক শৈলী নির্ধারণ',\n 'underline': 'নিম্নরেখার শৈলী নির্ধারণ',\n 'strikethrough': 'অবচ্ছেদনের শৈলী নির্ধারণ',\n 'removeFormat': 'শৈলী পরিষ্কার',\n 'justifyLeft': 'বামের সারিবন্ধন নির্ধারণ',\n 'justifyCenter': 'কেন্দ্রের সারিবন্ধন নির্ধারণ',\n 'justifyRight': 'ডানের সারিবন্ধন নির্ধারণ',\n 'justifyFull': 'পূর্ণ সারিবন্ধন নির্ধারণ',\n 'insertUnorderedList': 'অবিন্যস্ত তালিকা টগল',\n 'insertOrderedList': 'বিন্যস্ত তালিকা টগল',\n 'outdent': 'বর্তমান অনুচ্ছেদে ঋণাত্মক প্রান্তিককরণ',\n 'indent': 'বর্তমান অনুচ্ছেদে প্রান্তিককরণ',\n 'formatPara': 'বর্তমান ব্লকের বিন্যাসটি অনুচ্ছেদ হিসেবে পরিবর্তন (P ট্যাগ)',\n 'formatH1': 'বর্তমান ব্লকের বিন্যাসটি H1 হিসেবে পরিবর্তন',\n 'formatH2': 'বর্তমান ব্লকের বিন্যাসটি H2 হিসেবে পরিবর্তন',\n 'formatH3': 'বর্তমান ব্লকের বিন্যাসটি H3 হিসেবে পরিবর্তন',\n 'formatH4': 'বর্তমান ব্লকের বিন্যাসটি H4 হিসেবে পরিবর্তন',\n 'formatH5': 'বর্তমান ব্লকের বিন্যাসটি H5 হিসেবে পরিবর্তন',\n 'formatH6': 'বর্তমান ব্লকের বিন্যাসটি H6 হিসেবে পরিবর্তন',\n 'insertHorizontalRule': 'বিভাজক রেখা সন্নিবেশ',\n 'linkDialog.show': 'লিংক ডায়ালগ প্রদর্শন',\n },\n history: {\n undo: 'পূর্বাবস্থায় আনুন',\n redo: 'পুনঃকরুন',\n },\n specialChar: {\n specialChar: 'বিশেষ অক্ষর',\n select: 'বিশেষ অক্ষর নির্বাচন করুন',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.min.js new file mode 100644 index 0000000..672f272 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"bn-BD":{font:{bold:"গাঢ়",italic:"তির্যক",underline:"নিন্মরেখা",clear:"ফন্টের শৈলী সরান",height:"লাইনের উচ্চতা",name:"ফন্ট পরিবার",strikethrough:"অবচ্ছেদন",subscript:"নিম্নলিপি",superscript:"উর্ধ্বলিপি",size:"ফন্টের আকার",sizeunit:"ফন্টের আকারের একক"},image:{image:"ছবি",insert:"ছবি যোগ করুন",resizeFull:"পূর্ণ আকারে নিন",resizeHalf:"অর্ধ আকারে নিন",resizeQuarter:"চতুর্থাংশ আকারে নিন",resizeNone:"আসল আকার",floatLeft:"বামে নিন",floatRight:"ডানে নিন",floatNone:"দিক সরান",shapeRounded:"আকৃতি: গোলাকার",shapeCircle:"আকৃতি: বৃত্ত",shapeThumbnail:"আকৃতি: থাম্বনেইল",shapeNone:"আকৃতি: কিছু নয়",dragImageHere:"এখানে ছবি বা লেখা টেনে আনুন",dropImage:"ছবি বা লেখা ছাড়ুন",selectFromFiles:"ফাইল থেকে নির্বাচন করুন",maximumFileSize:"সর্বোচ্চ ফাইলের আকার",maximumFileSizeError:"সর্বোচ্চ ফাইলের আকার অতিক্রম করেছে।",url:"ছবির URL",remove:"ছবি সরান",original:"আসল"},video:{video:"ভিডিও",videoLink:"ভিডিওর লিঙ্ক",insert:"ভিডিও সন্নিবেশ করুন",url:"ভিডিওর URL",providers:"(ইউটিউব, গুগল ড্রাইভ, ভিমিও, ভিন, ইনস্টাগ্রাম, ডেইলিমোশন বা ইউকু)"},link:{link:"লিঙ্ক",insert:"লিঙ্ক সন্নিবেশ করুন",unlink:"লিঙ্কমুক্ত করুন",edit:"সম্পাদনা করুন",textToDisplay:"দেখানোর জন্য লেখা",url:"এই লিঙ্কটি কোন URL-এ যাবে?",openInNewWindow:"নতুন উইন্ডোতে খুলুন",useProtocol:"পূর্বনির্ধারিত প্রোটোকল ব্যবহার করুন"},table:{table:"ছক",addRowAbove:"উপরে সারি যোগ করুন",addRowBelow:"নিচে সারি যোগ করুন",addColLeft:"বামে কলাম যোগ করুন",addColRight:"ডানে কলাম যোগ করুন",delRow:"সারি মুছুন",delCol:"কলাম মুছুন",delTable:"ছক মুছুন"},hr:{insert:"বিভাজক রেখা সন্নিবেশ করুন"},style:{style:"শৈলী",p:"সাধারণ",blockquote:"উক্তি",pre:"কোড",h1:"শীর্ষক ১",h2:"শীর্ষক ২",h3:"শীর্ষক ৩",h4:"শীর্ষক ৪",h5:"শীর্ষক ৫",h6:"শীর্ষক ৬"},lists:{unordered:"অবিন্যস্ত তালিকা",ordered:"বিন্যস্ত তালিকা"},options:{help:"সাহায্য",fullscreen:"পূর্ণ পর্দা",codeview:"কোড দৃশ্য"},paragraph:{paragraph:"অনুচ্ছেদ",outdent:"ঋণাত্মক প্রান্তিককরণ",indent:"প্রান্তিককরণ",left:"বামে সারিবদ্ধ করুন",center:"কেন্দ্রে সারিবদ্ধ করুন",right:"ডানে সারিবদ্ধ করুন",justify:"যথাযথ ফাঁক দিয়ে সাজান"},color:{recent:"সাম্প্রতিক রং",more:"আরও রং",background:"পটভূমির রং",foreground:"লেখার রং",transparent:"স্বচ্ছ",setTransparent:"স্বচ্ছ নির্ধারণ করুন",reset:"পুনঃস্থাপন করুন",resetToDefault:"পূর্বনির্ধারিত ফিরিয়ে আনুন",cpSelect:"নির্বাচন করুন"},shortcut:{shortcuts:"কীবোর্ড শর্টকাট",close:"বন্ধ করুন",textFormatting:"লেখার বিন্যাসন",action:"কার্য",paragraphFormatting:"অনুচ্ছেদের বিন্যাসন",documentStyle:"নথির শৈলী",extraKeys:"অতিরিক্ত কীগুলি"},help:{escape:"এস্কেপ",insertParagraph:"অনুচ্ছেদ সন্নিবেশ",undo:"শেষ কমান্ড পূর্বাবস্থায় ফেরত",redo:"শেষ কমান্ড পুনরায় করা",tab:"ট্যাব",untab:"অ-ট্যাব",bold:"গাঢ় শৈলী নির্ধারণ",italic:"তির্যক শৈলী নির্ধারণ",underline:"নিম্নরেখার শৈলী নির্ধারণ",strikethrough:"অবচ্ছেদনের শৈলী নির্ধারণ",removeFormat:"শৈলী পরিষ্কার",justifyLeft:"বামের সারিবন্ধন নির্ধারণ",justifyCenter:"কেন্দ্রের সারিবন্ধন নির্ধারণ",justifyRight:"ডানের সারিবন্ধন নির্ধারণ",justifyFull:"পূর্ণ সারিবন্ধন নির্ধারণ",insertUnorderedList:"অবিন্যস্ত তালিকা টগল",insertOrderedList:"বিন্যস্ত তালিকা টগল",outdent:"বর্তমান অনুচ্ছেদে ঋণাত্মক প্রান্তিককরণ",indent:"বর্তমান অনুচ্ছেদে প্রান্তিককরণ",formatPara:"বর্তমান ব্লকের বিন্যাসটি অনুচ্ছেদ হিসেবে পরিবর্তন (P ট্যাগ)",formatH1:"বর্তমান ব্লকের বিন্যাসটি H1 হিসেবে পরিবর্তন",formatH2:"বর্তমান ব্লকের বিন্যাসটি H2 হিসেবে পরিবর্তন",formatH3:"বর্তমান ব্লকের বিন্যাসটি H3 হিসেবে পরিবর্তন",formatH4:"বর্তমান ব্লকের বিন্যাসটি H4 হিসেবে পরিবর্তন",formatH5:"বর্তমান ব্লকের বিন্যাসটি H5 হিসেবে পরিবর্তন",formatH6:"বর্তমান ব্লকের বিন্যাসটি H6 হিসেবে পরিবর্তন",insertHorizontalRule:"বিভাজক রেখা সন্নিবেশ","linkDialog.show":"লিংক ডায়ালগ প্রদর্শন"},history:{undo:"পূর্বাবস্থায় আনুন",redo:"পুনঃকরুন"},specialChar:{specialChar:"বিশেষ অক্ষর",select:"বিশেষ অক্ষর নির্বাচন করুন"}}}),{};var e})); +//# sourceMappingURL=summernote-bn-BD.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.min.js.map new file mode 100644 index 0000000..1681536 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-bn-BD.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-bn-BD.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA+JPC,QA9JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,MACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,mBACPC,OAAQ,gBACRC,KAAM,cACNC,cAAe,WACfC,UAAW,YACXC,YAAa,aACbC,KAAM,cACNC,SAAU,qBAEZC,MAAO,CACLA,MAAO,MACPC,OAAQ,eACRC,WAAY,kBACZC,WAAY,iBACZC,cAAe,sBACfC,WAAY,WACZC,UAAW,WACXC,WAAY,WACZC,UAAW,WACXC,aAAc,iBACdC,YAAa,eACbC,eAAgB,mBAChBC,UAAW,iBACXC,cAAe,8BACfC,UAAW,oBACXC,gBAAiB,0BACjBC,gBAAiB,uBACjBC,qBAAsB,sCACtBC,IAAK,WACLC,OAAQ,WACRC,SAAU,OAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,eACXrB,OAAQ,sBACRiB,IAAK,aACLK,UAAW,qEAEbC,KAAM,CACJA,KAAM,QACNvB,OAAQ,sBACRwB,OAAQ,kBACRC,KAAM,gBACNC,cAAe,oBACfT,IAAK,6BACLU,gBAAiB,sBACjBC,YAAa,wCAEfC,MAAO,CACLA,MAAO,KACPC,YAAa,qBACbC,YAAa,qBACbC,WAAY,qBACZC,YAAa,qBACbC,OAAQ,aACRC,OAAQ,aACRC,SAAU,YAEZC,GAAI,CACFrC,OAAQ,6BAEVsC,MAAO,CACLA,MAAO,OACPC,EAAG,SACHC,WAAY,QACZC,IAAK,MACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,mBACXC,QAAS,mBAEXC,QAAS,CACPC,KAAM,UACNC,WAAY,cACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,uBACTC,OAAQ,eACRC,KAAM,qBACNC,OAAQ,yBACRC,MAAO,qBACPC,QAAS,0BAEXC,MAAO,CACLC,OAAQ,gBACRC,KAAM,SACNC,WAAY,aACZC,WAAY,WACZC,YAAa,SACbC,eAAgB,uBAChBC,MAAO,kBACPC,eAAgB,6BAChBC,SAAU,iBAEZC,SAAU,CACRC,UAAW,kBACXC,MAAO,YACPC,eAAgB,iBAChBC,OAAQ,QACRC,oBAAqB,sBACrBC,cAAe,YACfC,UAAW,mBAEb3B,KAAM,CACJ,OAAU,SACV,gBAAmB,oBACnB,KAAQ,+BACR,KAAQ,wBACR,IAAO,QACP,MAAS,UACT,KAAQ,oBACR,OAAU,uBACV,UAAa,2BACb,cAAiB,2BACjB,aAAgB,gBAChB,YAAe,2BACf,cAAiB,+BACjB,aAAgB,2BAChB,YAAe,2BACf,oBAAuB,uBACvB,kBAAqB,sBACrB,QAAW,yCACX,OAAU,iCACV,WAAc,8DACd,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,qBAAwB,uBACxB,kBAAmB,yBAErB4B,QAAS,CACPC,KAAM,oBACNC,KAAM,YAERC,YAAa,CACXA,YAAa,cACbC,OAAQ,gC,GDjJhB,ICVUtG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-bn-BD.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'bn-BD': {\n font: {\n bold: 'গাঢ়',\n italic: 'তির্যক',\n underline: 'নিন্মরেখা',\n clear: 'ফন্টের শৈলী সরান',\n height: 'লাইনের উচ্চতা',\n name: 'ফন্ট পরিবার',\n strikethrough: 'অবচ্ছেদন',\n subscript: 'নিম্নলিপি',\n superscript: 'উর্ধ্বলিপি',\n size: 'ফন্টের আকার',\n sizeunit: 'ফন্টের আকারের একক',\n },\n image: {\n image: 'ছবি',\n insert: 'ছবি যোগ করুন',\n resizeFull: 'পূর্ণ আকারে নিন',\n resizeHalf: 'অর্ধ আকারে নিন',\n resizeQuarter: 'চতুর্থাংশ আকারে নিন',\n resizeNone: 'আসল আকার',\n floatLeft: 'বামে নিন',\n floatRight: 'ডানে নিন',\n floatNone: 'দিক সরান',\n shapeRounded: 'আকৃতি: গোলাকার',\n shapeCircle: 'আকৃতি: বৃত্ত',\n shapeThumbnail: 'আকৃতি: থাম্বনেইল',\n shapeNone: 'আকৃতি: কিছু নয়',\n dragImageHere: 'এখানে ছবি বা লেখা টেনে আনুন',\n dropImage: 'ছবি বা লেখা ছাড়ুন',\n selectFromFiles: 'ফাইল থেকে নির্বাচন করুন',\n maximumFileSize: 'সর্বোচ্চ ফাইলের আকার',\n maximumFileSizeError: 'সর্বোচ্চ ফাইলের আকার অতিক্রম করেছে।',\n url: 'ছবির URL',\n remove: 'ছবি সরান',\n original: 'আসল',\n },\n video: {\n video: 'ভিডিও',\n videoLink: 'ভিডিওর লিঙ্ক',\n insert: 'ভিডিও সন্নিবেশ করুন',\n url: 'ভিডিওর URL',\n providers: '(ইউটিউব, গুগল ড্রাইভ, ভিমিও, ভিন, ইনস্টাগ্রাম, ডেইলিমোশন বা ইউকু)',\n },\n link: {\n link: 'লিঙ্ক',\n insert: 'লিঙ্ক সন্নিবেশ করুন',\n unlink: 'লিঙ্কমুক্ত করুন',\n edit: 'সম্পাদনা করুন',\n textToDisplay: 'দেখানোর জন্য লেখা',\n url: 'এই লিঙ্কটি কোন URL-এ যাবে?',\n openInNewWindow: 'নতুন উইন্ডোতে খুলুন',\n useProtocol: 'পূর্বনির্ধারিত প্রোটোকল ব্যবহার করুন',\n },\n table: {\n table: 'ছক',\n addRowAbove: 'উপরে সারি যোগ করুন',\n addRowBelow: 'নিচে সারি যোগ করুন',\n addColLeft: 'বামে কলাম যোগ করুন',\n addColRight: 'ডানে কলাম যোগ করুন',\n delRow: 'সারি মুছুন',\n delCol: 'কলাম মুছুন',\n delTable: 'ছক মুছুন',\n },\n hr: {\n insert: 'বিভাজক রেখা সন্নিবেশ করুন',\n },\n style: {\n style: 'শৈলী',\n p: 'সাধারণ',\n blockquote: 'উক্তি',\n pre: 'কোড',\n h1: 'শীর্ষক ১',\n h2: 'শীর্ষক ২',\n h3: 'শীর্ষক ৩',\n h4: 'শীর্ষক ৪',\n h5: 'শীর্ষক ৫',\n h6: 'শীর্ষক ৬',\n },\n lists: {\n unordered: 'অবিন্যস্ত তালিকা',\n ordered: 'বিন্যস্ত তালিকা',\n },\n options: {\n help: 'সাহায্য',\n fullscreen: 'পূর্ণ পর্দা',\n codeview: 'কোড দৃশ্য',\n },\n paragraph: {\n paragraph: 'অনুচ্ছেদ',\n outdent: 'ঋণাত্মক প্রান্তিককরণ',\n indent: 'প্রান্তিককরণ',\n left: 'বামে সারিবদ্ধ করুন',\n center: 'কেন্দ্রে সারিবদ্ধ করুন',\n right: 'ডানে সারিবদ্ধ করুন',\n justify: 'যথাযথ ফাঁক দিয়ে সাজান',\n },\n color: {\n recent: 'সাম্প্রতিক রং',\n more: 'আরও রং',\n background: 'পটভূমির রং',\n foreground: 'লেখার রং',\n transparent: 'স্বচ্ছ',\n setTransparent: 'স্বচ্ছ নির্ধারণ করুন',\n reset: 'পুনঃস্থাপন করুন',\n resetToDefault: 'পূর্বনির্ধারিত ফিরিয়ে আনুন',\n cpSelect: 'নির্বাচন করুন',\n },\n shortcut: {\n shortcuts: 'কীবোর্ড শর্টকাট',\n close: 'বন্ধ করুন',\n textFormatting: 'লেখার বিন্যাসন',\n action: 'কার্য',\n paragraphFormatting: 'অনুচ্ছেদের বিন্যাসন',\n documentStyle: 'নথির শৈলী',\n extraKeys: 'অতিরিক্ত কীগুলি',\n },\n help: {\n 'escape': 'এস্কেপ',\n 'insertParagraph': 'অনুচ্ছেদ সন্নিবেশ',\n 'undo': 'শেষ কমান্ড পূর্বাবস্থায় ফেরত',\n 'redo': 'শেষ কমান্ড পুনরায় করা',\n 'tab': 'ট্যাব',\n 'untab': 'অ-ট্যাব',\n 'bold': 'গাঢ় শৈলী নির্ধারণ',\n 'italic': 'তির্যক শৈলী নির্ধারণ',\n 'underline': 'নিম্নরেখার শৈলী নির্ধারণ',\n 'strikethrough': 'অবচ্ছেদনের শৈলী নির্ধারণ',\n 'removeFormat': 'শৈলী পরিষ্কার',\n 'justifyLeft': 'বামের সারিবন্ধন নির্ধারণ',\n 'justifyCenter': 'কেন্দ্রের সারিবন্ধন নির্ধারণ',\n 'justifyRight': 'ডানের সারিবন্ধন নির্ধারণ',\n 'justifyFull': 'পূর্ণ সারিবন্ধন নির্ধারণ',\n 'insertUnorderedList': 'অবিন্যস্ত তালিকা টগল',\n 'insertOrderedList': 'বিন্যস্ত তালিকা টগল',\n 'outdent': 'বর্তমান অনুচ্ছেদে ঋণাত্মক প্রান্তিককরণ',\n 'indent': 'বর্তমান অনুচ্ছেদে প্রান্তিককরণ',\n 'formatPara': 'বর্তমান ব্লকের বিন্যাসটি অনুচ্ছেদ হিসেবে পরিবর্তন (P ট্যাগ)',\n 'formatH1': 'বর্তমান ব্লকের বিন্যাসটি H1 হিসেবে পরিবর্তন',\n 'formatH2': 'বর্তমান ব্লকের বিন্যাসটি H2 হিসেবে পরিবর্তন',\n 'formatH3': 'বর্তমান ব্লকের বিন্যাসটি H3 হিসেবে পরিবর্তন',\n 'formatH4': 'বর্তমান ব্লকের বিন্যাসটি H4 হিসেবে পরিবর্তন',\n 'formatH5': 'বর্তমান ব্লকের বিন্যাসটি H5 হিসেবে পরিবর্তন',\n 'formatH6': 'বর্তমান ব্লকের বিন্যাসটি H6 হিসেবে পরিবর্তন',\n 'insertHorizontalRule': 'বিভাজক রেখা সন্নিবেশ',\n 'linkDialog.show': 'লিংক ডায়ালগ প্রদর্শন',\n },\n history: {\n undo: 'পূর্বাবস্থায় আনুন',\n redo: 'পুনঃকরুন',\n },\n specialChar: {\n specialChar: 'বিশেষ অক্ষর',\n select: 'বিশেষ অক্ষর নির্বাচন করুন',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.js b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.js new file mode 100644 index 0000000..ea41311 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'ca-ES': { + font: { + bold: 'Negreta', + italic: 'Cursiva', + underline: 'Subratllat', + clear: 'Treure estil de lletra', + height: 'Alçada de línia', + name: 'Font', + strikethrough: 'Ratllat', + subscript: 'Subíndex', + superscript: 'Superíndex', + size: 'Mida de lletra' + }, + image: { + image: 'Imatge', + insert: 'Inserir imatge', + resizeFull: 'Redimensionar a mida completa', + resizeHalf: 'Redimensionar a la meitat', + resizeQuarter: 'Redimensionar a un quart', + floatLeft: 'Alinear a l\'esquerra', + floatRight: 'Alinear a la dreta', + floatNone: 'No alinear', + shapeRounded: 'Forma: Arrodonit', + shapeCircle: 'Forma: Cercle', + shapeThumbnail: 'Forma: Marc', + shapeNone: 'Forma: Cap', + dragImageHere: 'Arrossegueu una imatge o text aquí', + dropImage: 'Deixa anar aquí una imatge o un text', + selectFromFiles: 'Seleccioneu des dels arxius', + maximumFileSize: 'Mida màxima de l\'arxiu', + maximumFileSizeError: 'La mida màxima de l\'arxiu s\'ha superat.', + url: 'URL de la imatge', + remove: 'Eliminar imatge', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Enllaç del vídeo', + insert: 'Inserir vídeo', + url: 'URL del vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Enllaç', + insert: 'Inserir enllaç', + unlink: 'Treure enllaç', + edit: 'Editar', + textToDisplay: 'Text per mostrar', + url: 'Cap a quina URL porta l\'enllaç?', + openInNewWindow: 'Obrir en una finestra nova' + }, + table: { + table: 'Taula', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Inserir línia horitzontal' + }, + style: { + style: 'Estil', + p: 'p', + blockquote: 'Cita', + pre: 'Codi', + h1: 'Títol 1', + h2: 'Títol 2', + h3: 'Títol 3', + h4: 'Títol 4', + h5: 'Títol 5', + h6: 'Títol 6' + }, + lists: { + unordered: 'Llista desendreçada', + ordered: 'Llista endreçada' + }, + options: { + help: 'Ajut', + fullscreen: 'Pantalla sencera', + codeview: 'Veure codi font' + }, + paragraph: { + paragraph: 'Paràgraf', + outdent: 'Menys tabulació', + indent: 'Més tabulació', + left: 'Alinear a l\'esquerra', + center: 'Alinear al mig', + right: 'Alinear a la dreta', + justify: 'Justificar' + }, + color: { + recent: 'Últim color', + more: 'Més colors', + background: 'Color de fons', + foreground: 'Color de lletra', + transparent: 'Transparent', + setTransparent: 'Establir transparent', + reset: 'Restablir', + resetToDefault: 'Restablir per defecte' + }, + shortcut: { + shortcuts: 'Dreceres de teclat', + close: 'Tancar', + textFormatting: 'Format de text', + action: 'Acció', + paragraphFormatting: 'Format de paràgraf', + documentStyle: 'Estil del document', + extraKeys: 'Tecles adicionals' + }, + help: { + 'insertParagraph': 'Inserir paràgraf', + 'undo': 'Desfer l\'última acció', + 'redo': 'Refer l\'última acció', + 'tab': 'Tabular', + 'untab': 'Eliminar tabulació', + 'bold': 'Establir estil negreta', + 'italic': 'Establir estil cursiva', + 'underline': 'Establir estil subratllat', + 'strikethrough': 'Establir estil ratllat', + 'removeFormat': 'Netejar estil', + 'justifyLeft': 'Alinear a l\'esquerra', + 'justifyCenter': 'Alinear al centre', + 'justifyRight': 'Alinear a la dreta', + 'justifyFull': 'Justificar', + 'insertUnorderedList': 'Inserir llista desendreçada', + 'insertOrderedList': 'Inserir llista endreçada', + 'outdent': 'Reduïr tabulació del paràgraf', + 'indent': 'Augmentar tabulació del paràgraf', + 'formatPara': 'Canviar l\'estil del bloc com a un paràgraf (etiqueta P)', + 'formatH1': 'Canviar l\'estil del bloc com a un H1', + 'formatH2': 'Canviar l\'estil del bloc com a un H2', + 'formatH3': 'Canviar l\'estil del bloc com a un H3', + 'formatH4': 'Canviar l\'estil del bloc com a un H4', + 'formatH5': 'Canviar l\'estil del bloc com a un H5', + 'formatH6': 'Canviar l\'estil del bloc com a un H6', + 'insertHorizontalRule': 'Inserir una línia horitzontal', + 'linkDialog.show': 'Mostrar panel d\'enllaços' + }, + history: { + undo: 'Desfer', + redo: 'Refer' + }, + specialChar: { + specialChar: 'CARÀCTERS ESPECIALS', + select: 'Selecciona caràcters especials' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-ca-ES.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.js.map new file mode 100644 index 0000000..8f6cd94 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ca-ES.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ca-ES.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ca-ES': {\n font: {\n bold: 'Negreta',\n italic: 'Cursiva',\n underline: 'Subratllat',\n clear: 'Treure estil de lletra',\n height: 'Alçada de línia',\n name: 'Font',\n strikethrough: 'Ratllat',\n subscript: 'Subíndex',\n superscript: 'Superíndex',\n size: 'Mida de lletra',\n },\n image: {\n image: 'Imatge',\n insert: 'Inserir imatge',\n resizeFull: 'Redimensionar a mida completa',\n resizeHalf: 'Redimensionar a la meitat',\n resizeQuarter: 'Redimensionar a un quart',\n floatLeft: 'Alinear a l\\'esquerra',\n floatRight: 'Alinear a la dreta',\n floatNone: 'No alinear',\n shapeRounded: 'Forma: Arrodonit',\n shapeCircle: 'Forma: Cercle',\n shapeThumbnail: 'Forma: Marc',\n shapeNone: 'Forma: Cap',\n dragImageHere: 'Arrossegueu una imatge o text aquí',\n dropImage: 'Deixa anar aquí una imatge o un text',\n selectFromFiles: 'Seleccioneu des dels arxius',\n maximumFileSize: 'Mida màxima de l\\'arxiu',\n maximumFileSizeError: 'La mida màxima de l\\'arxiu s\\'ha superat.',\n url: 'URL de la imatge',\n remove: 'Eliminar imatge',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Enllaç del vídeo',\n insert: 'Inserir vídeo',\n url: 'URL del vídeo?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)',\n },\n link: {\n link: 'Enllaç',\n insert: 'Inserir enllaç',\n unlink: 'Treure enllaç',\n edit: 'Editar',\n textToDisplay: 'Text per mostrar',\n url: 'Cap a quina URL porta l\\'enllaç?',\n openInNewWindow: 'Obrir en una finestra nova',\n },\n table: {\n table: 'Taula',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Inserir línia horitzontal',\n },\n style: {\n style: 'Estil',\n p: 'p',\n blockquote: 'Cita',\n pre: 'Codi',\n h1: 'Títol 1',\n h2: 'Títol 2',\n h3: 'Títol 3',\n h4: 'Títol 4',\n h5: 'Títol 5',\n h6: 'Títol 6',\n },\n lists: {\n unordered: 'Llista desendreçada',\n ordered: 'Llista endreçada',\n },\n options: {\n help: 'Ajut',\n fullscreen: 'Pantalla sencera',\n codeview: 'Veure codi font',\n },\n paragraph: {\n paragraph: 'Paràgraf',\n outdent: 'Menys tabulació',\n indent: 'Més tabulació',\n left: 'Alinear a l\\'esquerra',\n center: 'Alinear al mig',\n right: 'Alinear a la dreta',\n justify: 'Justificar',\n },\n color: {\n recent: 'Últim color',\n more: 'Més colors',\n background: 'Color de fons',\n foreground: 'Color de lletra',\n transparent: 'Transparent',\n setTransparent: 'Establir transparent',\n reset: 'Restablir',\n resetToDefault: 'Restablir per defecte',\n },\n shortcut: {\n shortcuts: 'Dreceres de teclat',\n close: 'Tancar',\n textFormatting: 'Format de text',\n action: 'Acció',\n paragraphFormatting: 'Format de paràgraf',\n documentStyle: 'Estil del document',\n extraKeys: 'Tecles adicionals',\n },\n help: {\n 'insertParagraph': 'Inserir paràgraf',\n 'undo': 'Desfer l\\'última acció',\n 'redo': 'Refer l\\'última acció',\n 'tab': 'Tabular',\n 'untab': 'Eliminar tabulació',\n 'bold': 'Establir estil negreta',\n 'italic': 'Establir estil cursiva',\n 'underline': 'Establir estil subratllat',\n 'strikethrough': 'Establir estil ratllat',\n 'removeFormat': 'Netejar estil',\n 'justifyLeft': 'Alinear a l\\'esquerra',\n 'justifyCenter': 'Alinear al centre',\n 'justifyRight': 'Alinear a la dreta',\n 'justifyFull': 'Justificar',\n 'insertUnorderedList': 'Inserir llista desendreçada',\n 'insertOrderedList': 'Inserir llista endreçada',\n 'outdent': 'Reduïr tabulació del paràgraf',\n 'indent': 'Augmentar tabulació del paràgraf',\n 'formatPara': 'Canviar l\\'estil del bloc com a un paràgraf (etiqueta P)',\n 'formatH1': 'Canviar l\\'estil del bloc com a un H1',\n 'formatH2': 'Canviar l\\'estil del bloc com a un H2',\n 'formatH3': 'Canviar l\\'estil del bloc com a un H3',\n 'formatH4': 'Canviar l\\'estil del bloc com a un H4',\n 'formatH5': 'Canviar l\\'estil del bloc com a un H5',\n 'formatH6': 'Canviar l\\'estil del bloc com a un H6',\n 'insertHorizontalRule': 'Inserir una línia horitzontal',\n 'linkDialog.show': 'Mostrar panel d\\'enllaços',\n },\n history: {\n undo: 'Desfer',\n redo: 'Refer',\n },\n specialChar: {\n specialChar: 'CARÀCTERS ESPECIALS',\n select: 'Selecciona caràcters especials',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.min.js new file mode 100644 index 0000000..e50f515 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var t in r)("object"==typeof exports?exports:e)[t]=r[t]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"ca-ES":{font:{bold:"Negreta",italic:"Cursiva",underline:"Subratllat",clear:"Treure estil de lletra",height:"Alçada de línia",name:"Font",strikethrough:"Ratllat",subscript:"Subíndex",superscript:"Superíndex",size:"Mida de lletra"},image:{image:"Imatge",insert:"Inserir imatge",resizeFull:"Redimensionar a mida completa",resizeHalf:"Redimensionar a la meitat",resizeQuarter:"Redimensionar a un quart",floatLeft:"Alinear a l'esquerra",floatRight:"Alinear a la dreta",floatNone:"No alinear",shapeRounded:"Forma: Arrodonit",shapeCircle:"Forma: Cercle",shapeThumbnail:"Forma: Marc",shapeNone:"Forma: Cap",dragImageHere:"Arrossegueu una imatge o text aquí",dropImage:"Deixa anar aquí una imatge o un text",selectFromFiles:"Seleccioneu des dels arxius",maximumFileSize:"Mida màxima de l'arxiu",maximumFileSizeError:"La mida màxima de l'arxiu s'ha superat.",url:"URL de la imatge",remove:"Eliminar imatge",original:"Original"},video:{video:"Vídeo",videoLink:"Enllaç del vídeo",insert:"Inserir vídeo",url:"URL del vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Enllaç",insert:"Inserir enllaç",unlink:"Treure enllaç",edit:"Editar",textToDisplay:"Text per mostrar",url:"Cap a quina URL porta l'enllaç?",openInNewWindow:"Obrir en una finestra nova"},table:{table:"Taula",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Inserir línia horitzontal"},style:{style:"Estil",p:"p",blockquote:"Cita",pre:"Codi",h1:"Títol 1",h2:"Títol 2",h3:"Títol 3",h4:"Títol 4",h5:"Títol 5",h6:"Títol 6"},lists:{unordered:"Llista desendreçada",ordered:"Llista endreçada"},options:{help:"Ajut",fullscreen:"Pantalla sencera",codeview:"Veure codi font"},paragraph:{paragraph:"Paràgraf",outdent:"Menys tabulació",indent:"Més tabulació",left:"Alinear a l'esquerra",center:"Alinear al mig",right:"Alinear a la dreta",justify:"Justificar"},color:{recent:"Últim color",more:"Més colors",background:"Color de fons",foreground:"Color de lletra",transparent:"Transparent",setTransparent:"Establir transparent",reset:"Restablir",resetToDefault:"Restablir per defecte"},shortcut:{shortcuts:"Dreceres de teclat",close:"Tancar",textFormatting:"Format de text",action:"Acció",paragraphFormatting:"Format de paràgraf",documentStyle:"Estil del document",extraKeys:"Tecles adicionals"},help:{insertParagraph:"Inserir paràgraf",undo:"Desfer l'última acció",redo:"Refer l'última acció",tab:"Tabular",untab:"Eliminar tabulació",bold:"Establir estil negreta",italic:"Establir estil cursiva",underline:"Establir estil subratllat",strikethrough:"Establir estil ratllat",removeFormat:"Netejar estil",justifyLeft:"Alinear a l'esquerra",justifyCenter:"Alinear al centre",justifyRight:"Alinear a la dreta",justifyFull:"Justificar",insertUnorderedList:"Inserir llista desendreçada",insertOrderedList:"Inserir llista endreçada",outdent:"Reduïr tabulació del paràgraf",indent:"Augmentar tabulació del paràgraf",formatPara:"Canviar l'estil del bloc com a un paràgraf (etiqueta P)",formatH1:"Canviar l'estil del bloc com a un H1",formatH2:"Canviar l'estil del bloc com a un H2",formatH3:"Canviar l'estil del bloc com a un H3",formatH4:"Canviar l'estil del bloc com a un H4",formatH5:"Canviar l'estil del bloc com a un H5",formatH6:"Canviar l'estil del bloc com a un H6",insertHorizontalRule:"Inserir una línia horitzontal","linkDialog.show":"Mostrar panel d'enllaços"},history:{undo:"Desfer",redo:"Refer"},specialChar:{specialChar:"CARÀCTERS ESPECIALS",select:"Selecciona caràcters especials"}}}),{};var e})); +//# sourceMappingURL=summernote-ca-ES.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.min.js.map new file mode 100644 index 0000000..6ddd942 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ca-ES.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ca-ES.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,UACNC,OAAQ,UACRC,UAAW,aACXC,MAAO,yBACPC,OAAQ,kBACRC,KAAM,OACNC,cAAe,UACfC,UAAW,WACXC,YAAa,aACbC,KAAM,kBAERC,MAAO,CACLA,MAAO,SACPC,OAAQ,iBACRC,WAAY,gCACZC,WAAY,4BACZC,cAAe,2BACfC,UAAW,uBACXC,WAAY,qBACZC,UAAW,aACXC,aAAc,mBACdC,YAAa,gBACbC,eAAgB,cAChBC,UAAW,aACXC,cAAe,qCACfC,UAAW,uCACXC,gBAAiB,8BACjBC,gBAAiB,yBACjBC,qBAAsB,0CACtBC,IAAK,mBACLC,OAAQ,kBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,mBACXpB,OAAQ,gBACRgB,IAAK,iBACLK,UAAW,0DAEbC,KAAM,CACJA,KAAM,SACNtB,OAAQ,iBACRuB,OAAQ,gBACRC,KAAM,SACNC,cAAe,mBACfT,IAAK,kCACLU,gBAAiB,8BAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,6BAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,IACHC,WAAY,OACZC,IAAK,OACLC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,WAENC,MAAO,CACLC,UAAW,sBACXC,QAAS,oBAEXC,QAAS,CACPC,KAAM,OACNC,WAAY,mBACZC,SAAU,mBAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,kBACTC,OAAQ,gBACRC,KAAM,uBACNC,OAAQ,iBACRC,MAAO,qBACPC,QAAS,cAEXC,MAAO,CACLC,OAAQ,cACRC,KAAM,aACNC,WAAY,gBACZC,WAAY,kBACZC,YAAa,cACbC,eAAgB,uBAChBC,MAAO,YACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,qBACXC,MAAO,SACPC,eAAgB,iBAChBC,OAAQ,QACRC,oBAAqB,qBACrBC,cAAe,qBACfC,UAAW,qBAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,wBACR,KAAQ,uBACR,IAAO,UACP,MAAS,qBACT,KAAQ,yBACR,OAAU,yBACV,UAAa,4BACb,cAAiB,yBACjB,aAAgB,gBAChB,YAAe,uBACf,cAAiB,oBACjB,aAAgB,qBAChB,YAAe,aACf,oBAAuB,8BACvB,kBAAqB,2BACrB,QAAW,gCACX,OAAU,mCACV,WAAc,0DACd,SAAY,uCACZ,SAAY,uCACZ,SAAY,uCACZ,SAAY,uCACZ,SAAY,uCACZ,SAAY,uCACZ,qBAAwB,gCACxB,kBAAmB,4BAErB2B,QAAS,CACPC,KAAM,SACNC,KAAM,SAERC,YAAa,CACXA,YAAa,sBACbC,OAAQ,qC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ca-ES.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ca-ES': {\n font: {\n bold: 'Negreta',\n italic: 'Cursiva',\n underline: 'Subratllat',\n clear: 'Treure estil de lletra',\n height: 'Alçada de línia',\n name: 'Font',\n strikethrough: 'Ratllat',\n subscript: 'Subíndex',\n superscript: 'Superíndex',\n size: 'Mida de lletra',\n },\n image: {\n image: 'Imatge',\n insert: 'Inserir imatge',\n resizeFull: 'Redimensionar a mida completa',\n resizeHalf: 'Redimensionar a la meitat',\n resizeQuarter: 'Redimensionar a un quart',\n floatLeft: 'Alinear a l\\'esquerra',\n floatRight: 'Alinear a la dreta',\n floatNone: 'No alinear',\n shapeRounded: 'Forma: Arrodonit',\n shapeCircle: 'Forma: Cercle',\n shapeThumbnail: 'Forma: Marc',\n shapeNone: 'Forma: Cap',\n dragImageHere: 'Arrossegueu una imatge o text aquí',\n dropImage: 'Deixa anar aquí una imatge o un text',\n selectFromFiles: 'Seleccioneu des dels arxius',\n maximumFileSize: 'Mida màxima de l\\'arxiu',\n maximumFileSizeError: 'La mida màxima de l\\'arxiu s\\'ha superat.',\n url: 'URL de la imatge',\n remove: 'Eliminar imatge',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Enllaç del vídeo',\n insert: 'Inserir vídeo',\n url: 'URL del vídeo?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)',\n },\n link: {\n link: 'Enllaç',\n insert: 'Inserir enllaç',\n unlink: 'Treure enllaç',\n edit: 'Editar',\n textToDisplay: 'Text per mostrar',\n url: 'Cap a quina URL porta l\\'enllaç?',\n openInNewWindow: 'Obrir en una finestra nova',\n },\n table: {\n table: 'Taula',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Inserir línia horitzontal',\n },\n style: {\n style: 'Estil',\n p: 'p',\n blockquote: 'Cita',\n pre: 'Codi',\n h1: 'Títol 1',\n h2: 'Títol 2',\n h3: 'Títol 3',\n h4: 'Títol 4',\n h5: 'Títol 5',\n h6: 'Títol 6',\n },\n lists: {\n unordered: 'Llista desendreçada',\n ordered: 'Llista endreçada',\n },\n options: {\n help: 'Ajut',\n fullscreen: 'Pantalla sencera',\n codeview: 'Veure codi font',\n },\n paragraph: {\n paragraph: 'Paràgraf',\n outdent: 'Menys tabulació',\n indent: 'Més tabulació',\n left: 'Alinear a l\\'esquerra',\n center: 'Alinear al mig',\n right: 'Alinear a la dreta',\n justify: 'Justificar',\n },\n color: {\n recent: 'Últim color',\n more: 'Més colors',\n background: 'Color de fons',\n foreground: 'Color de lletra',\n transparent: 'Transparent',\n setTransparent: 'Establir transparent',\n reset: 'Restablir',\n resetToDefault: 'Restablir per defecte',\n },\n shortcut: {\n shortcuts: 'Dreceres de teclat',\n close: 'Tancar',\n textFormatting: 'Format de text',\n action: 'Acció',\n paragraphFormatting: 'Format de paràgraf',\n documentStyle: 'Estil del document',\n extraKeys: 'Tecles adicionals',\n },\n help: {\n 'insertParagraph': 'Inserir paràgraf',\n 'undo': 'Desfer l\\'última acció',\n 'redo': 'Refer l\\'última acció',\n 'tab': 'Tabular',\n 'untab': 'Eliminar tabulació',\n 'bold': 'Establir estil negreta',\n 'italic': 'Establir estil cursiva',\n 'underline': 'Establir estil subratllat',\n 'strikethrough': 'Establir estil ratllat',\n 'removeFormat': 'Netejar estil',\n 'justifyLeft': 'Alinear a l\\'esquerra',\n 'justifyCenter': 'Alinear al centre',\n 'justifyRight': 'Alinear a la dreta',\n 'justifyFull': 'Justificar',\n 'insertUnorderedList': 'Inserir llista desendreçada',\n 'insertOrderedList': 'Inserir llista endreçada',\n 'outdent': 'Reduïr tabulació del paràgraf',\n 'indent': 'Augmentar tabulació del paràgraf',\n 'formatPara': 'Canviar l\\'estil del bloc com a un paràgraf (etiqueta P)',\n 'formatH1': 'Canviar l\\'estil del bloc com a un H1',\n 'formatH2': 'Canviar l\\'estil del bloc com a un H2',\n 'formatH3': 'Canviar l\\'estil del bloc com a un H3',\n 'formatH4': 'Canviar l\\'estil del bloc com a un H4',\n 'formatH5': 'Canviar l\\'estil del bloc com a un H5',\n 'formatH6': 'Canviar l\\'estil del bloc com a un H6',\n 'insertHorizontalRule': 'Inserir una línia horitzontal',\n 'linkDialog.show': 'Mostrar panel d\\'enllaços',\n },\n history: {\n undo: 'Desfer',\n redo: 'Refer',\n },\n specialChar: {\n specialChar: 'CARÀCTERS ESPECIALS',\n select: 'Selecciona caràcters especials',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.js b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.js new file mode 100644 index 0000000..59fdce2 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.js @@ -0,0 +1,179 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'cs-CZ': { + font: { + bold: 'Tučné', + italic: 'Kurzíva', + underline: 'Podtržené', + clear: 'Odstranit styl písma', + height: 'Výška řádku', + strikethrough: 'Přeškrtnuté', + size: 'Velikost písma' + }, + image: { + image: 'Obrázek', + insert: 'Vložit obrázek', + resizeFull: 'Původní velikost', + resizeHalf: 'Poloviční velikost', + resizeQuarter: 'Čtvrteční velikost', + floatLeft: 'Umístit doleva', + floatRight: 'Umístit doprava', + floatNone: 'Neobtékat textem', + shapeRounded: 'Tvar: zaoblený', + shapeCircle: 'Tvar: kruh', + shapeThumbnail: 'Tvar: náhled', + shapeNone: 'Tvar: žádný', + dragImageHere: 'Přetáhnout sem obrázek', + dropImage: 'Přetáhnout obrázek nebo text', + selectFromFiles: 'Vybrat soubor', + url: 'URL obrázku', + remove: 'Odebrat obrázek', + original: 'Originál' + }, + video: { + video: 'Video', + videoLink: 'Odkaz videa', + insert: 'Vložit video', + url: 'URL videa?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)' + }, + link: { + link: 'Odkaz', + insert: 'Vytvořit odkaz', + unlink: 'Zrušit odkaz', + edit: 'Upravit', + textToDisplay: 'Zobrazovaný text', + url: 'Na jaké URL má tento odkaz vést?', + openInNewWindow: 'Otevřít v novém okně' + }, + table: { + table: 'Tabulka', + addRowAbove: 'Přidat řádek nad', + addRowBelow: 'Přidat řádek pod', + addColLeft: 'Přidat sloupec vlevo', + addColRight: 'Přidat sloupec vpravo', + delRow: 'Smazat řádek', + delCol: 'Smazat sloupec', + delTable: 'Smazat tabulku' + }, + hr: { + insert: 'Vložit vodorovnou čáru' + }, + style: { + style: 'Styl', + p: 'Normální', + blockquote: 'Citace', + pre: 'Kód', + h1: 'Nadpis 1', + h2: 'Nadpis 2', + h3: 'Nadpis 3', + h4: 'Nadpis 4', + h5: 'Nadpis 5', + h6: 'Nadpis 6' + }, + lists: { + unordered: 'Odrážkový seznam', + ordered: 'Číselný seznam' + }, + options: { + help: 'Nápověda', + fullscreen: 'Celá obrazovka', + codeview: 'HTML kód' + }, + paragraph: { + paragraph: 'Odstavec', + outdent: 'Zvětšit odsazení', + indent: 'Zmenšit odsazení', + left: 'Zarovnat doleva', + center: 'Zarovnat na střed', + right: 'Zarovnat doprava', + justify: 'Zarovnat oboustranně' + }, + color: { + recent: 'Aktuální barva', + more: 'Další barvy', + background: 'Barva pozadí', + foreground: 'Barva písma', + transparent: 'Průhlednost', + setTransparent: 'Nastavit průhlednost', + reset: 'Obnovit', + resetToDefault: 'Obnovit výchozí', + cpSelect: 'Vybrat' + }, + shortcut: { + shortcuts: 'Klávesové zkratky', + close: 'Zavřít', + textFormatting: 'Formátování textu', + action: 'Akce', + paragraphFormatting: 'Formátování odstavce', + documentStyle: 'Styl dokumentu' + }, + help: { + 'insertParagraph': 'Vložit odstavec', + 'undo': 'Vrátit poslední příkaz', + 'redo': 'Opakovat poslední příkaz', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Nastavit tučně', + 'italic': 'Nastavit kurzívu', + 'underline': 'Nastavit podtrhnutí', + 'strikethrough': 'Nastavit přeškrtnutí', + 'removeFormat': 'Ostranit nastavený styl', + 'justifyLeft': 'Nastavit zarovnání vlevo', + 'justifyCenter': 'Nastavit zarovnání na střed', + 'justifyRight': 'Nastavit zarovnání vpravo', + 'justifyFull': 'Nastavit zarovnání do bloku', + 'insertUnorderedList': 'Aplikovat odrážkový seznam', + 'insertOrderedList': 'Aplikovat číselný seznam', + 'outdent': 'Zmenšit odsazení aktuálního odstavec', + 'indent': 'Odsadit aktuální odstavec', + 'formatPara': 'Změnit formátování aktuálního bloku na odstavec (P tag)', + 'formatH1': 'Změnit formátování aktuálního bloku na Nadpis 1', + 'formatH2': 'Změnit formátování aktuálního bloku na Nadpis 2', + 'formatH3': 'Změnit formátování aktuálního bloku na Nadpis 3', + 'formatH4': 'Změnit formátování aktuálního bloku na Nadpis 4', + 'formatH5': 'Změnit formátování aktuálního bloku na Nadpis 5', + 'formatH6': 'Změnit formátování aktuálního bloku na Nadpis 6', + 'insertHorizontalRule': 'Vložit horizontální čáru', + 'linkDialog.show': 'Zobrazit dialog pro odkaz' + }, + history: { + undo: 'Krok vzad', + redo: 'Krok vpřed' + }, + specialChar: { + specialChar: 'SPECIÁLNÍ ZNAKY', + select: 'Vyberte speciální znaky' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-cs-CZ.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.js.map new file mode 100644 index 0000000..891eadd --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-cs-CZ.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-cs-CZ.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'cs-CZ': {\n font: {\n bold: 'Tučné',\n italic: 'Kurzíva',\n underline: 'Podtržené',\n clear: 'Odstranit styl písma',\n height: 'Výška řádku',\n strikethrough: 'Přeškrtnuté',\n size: 'Velikost písma',\n },\n image: {\n image: 'Obrázek',\n insert: 'Vložit obrázek',\n resizeFull: 'Původní velikost',\n resizeHalf: 'Poloviční velikost',\n resizeQuarter: 'Čtvrteční velikost',\n floatLeft: 'Umístit doleva',\n floatRight: 'Umístit doprava',\n floatNone: 'Neobtékat textem',\n shapeRounded: 'Tvar: zaoblený',\n shapeCircle: 'Tvar: kruh',\n shapeThumbnail: 'Tvar: náhled',\n shapeNone: 'Tvar: žádný',\n dragImageHere: 'Přetáhnout sem obrázek',\n dropImage: 'Přetáhnout obrázek nebo text',\n selectFromFiles: 'Vybrat soubor',\n url: 'URL obrázku',\n remove: 'Odebrat obrázek',\n original: 'Originál',\n },\n video: {\n video: 'Video',\n videoLink: 'Odkaz videa',\n insert: 'Vložit video',\n url: 'URL videa?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)',\n },\n link: {\n link: 'Odkaz',\n insert: 'Vytvořit odkaz',\n unlink: 'Zrušit odkaz',\n edit: 'Upravit',\n textToDisplay: 'Zobrazovaný text',\n url: 'Na jaké URL má tento odkaz vést?',\n openInNewWindow: 'Otevřít v novém okně',\n },\n table: {\n table: 'Tabulka',\n addRowAbove: 'Přidat řádek nad',\n addRowBelow: 'Přidat řádek pod',\n addColLeft: 'Přidat sloupec vlevo',\n addColRight: 'Přidat sloupec vpravo',\n delRow: 'Smazat řádek',\n delCol: 'Smazat sloupec',\n delTable: 'Smazat tabulku',\n },\n hr: {\n insert: 'Vložit vodorovnou čáru',\n },\n style: {\n style: 'Styl',\n p: 'Normální',\n blockquote: 'Citace',\n pre: 'Kód',\n h1: 'Nadpis 1',\n h2: 'Nadpis 2',\n h3: 'Nadpis 3',\n h4: 'Nadpis 4',\n h5: 'Nadpis 5',\n h6: 'Nadpis 6',\n },\n lists: {\n unordered: 'Odrážkový seznam',\n ordered: 'Číselný seznam',\n },\n options: {\n help: 'Nápověda',\n fullscreen: 'Celá obrazovka',\n codeview: 'HTML kód',\n },\n paragraph: {\n paragraph: 'Odstavec',\n outdent: 'Zvětšit odsazení',\n indent: 'Zmenšit odsazení',\n left: 'Zarovnat doleva',\n center: 'Zarovnat na střed',\n right: 'Zarovnat doprava',\n justify: 'Zarovnat oboustranně',\n },\n color: {\n recent: 'Aktuální barva',\n more: 'Další barvy',\n background: 'Barva pozadí',\n foreground: 'Barva písma',\n transparent: 'Průhlednost',\n setTransparent: 'Nastavit průhlednost',\n reset: 'Obnovit',\n resetToDefault: 'Obnovit výchozí',\n cpSelect: 'Vybrat',\n },\n shortcut: {\n shortcuts: 'Klávesové zkratky',\n close: 'Zavřít',\n textFormatting: 'Formátování textu',\n action: 'Akce',\n paragraphFormatting: 'Formátování odstavce',\n documentStyle: 'Styl dokumentu',\n },\n help: {\n 'insertParagraph': 'Vložit odstavec',\n 'undo': 'Vrátit poslední příkaz',\n 'redo': 'Opakovat poslední příkaz',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Nastavit tučně',\n 'italic': 'Nastavit kurzívu',\n 'underline': 'Nastavit podtrhnutí',\n 'strikethrough': 'Nastavit přeškrtnutí',\n 'removeFormat': 'Ostranit nastavený styl',\n 'justifyLeft': 'Nastavit zarovnání vlevo',\n 'justifyCenter': 'Nastavit zarovnání na střed',\n 'justifyRight': 'Nastavit zarovnání vpravo',\n 'justifyFull': 'Nastavit zarovnání do bloku',\n 'insertUnorderedList': 'Aplikovat odrážkový seznam',\n 'insertOrderedList': 'Aplikovat číselný seznam',\n 'outdent': 'Zmenšit odsazení aktuálního odstavec',\n 'indent': 'Odsadit aktuální odstavec',\n 'formatPara': 'Změnit formátování aktuálního bloku na odstavec (P tag)',\n 'formatH1': 'Změnit formátování aktuálního bloku na Nadpis 1',\n 'formatH2': 'Změnit formátování aktuálního bloku na Nadpis 2',\n 'formatH3': 'Změnit formátování aktuálního bloku na Nadpis 3',\n 'formatH4': 'Změnit formátování aktuálního bloku na Nadpis 4',\n 'formatH5': 'Změnit formátování aktuálního bloku na Nadpis 5',\n 'formatH6': 'Změnit formátování aktuálního bloku na Nadpis 6',\n 'insertHorizontalRule': 'Vložit horizontální čáru',\n 'linkDialog.show': 'Zobrazit dialog pro odkaz',\n },\n history: {\n undo: 'Krok vzad',\n redo: 'Krok vpřed',\n },\n specialChar: {\n specialChar: 'SPECIÁLNÍ ZNAKY',\n select: 'Vyberte speciální znaky',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","strikethrough","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.min.js new file mode 100644 index 0000000..aab0658 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(t,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var o=a();for(var e in o)("object"==typeof exports?exports:t)[e]=o[e]}}(self,(function(){return(t=jQuery).extend(t.summernote.lang,{"cs-CZ":{font:{bold:"Tučné",italic:"Kurzíva",underline:"Podtržené",clear:"Odstranit styl písma",height:"Výška řádku",strikethrough:"Přeškrtnuté",size:"Velikost písma"},image:{image:"Obrázek",insert:"Vložit obrázek",resizeFull:"Původní velikost",resizeHalf:"Poloviční velikost",resizeQuarter:"Čtvrteční velikost",floatLeft:"Umístit doleva",floatRight:"Umístit doprava",floatNone:"Neobtékat textem",shapeRounded:"Tvar: zaoblený",shapeCircle:"Tvar: kruh",shapeThumbnail:"Tvar: náhled",shapeNone:"Tvar: žádný",dragImageHere:"Přetáhnout sem obrázek",dropImage:"Přetáhnout obrázek nebo text",selectFromFiles:"Vybrat soubor",url:"URL obrázku",remove:"Odebrat obrázek",original:"Originál"},video:{video:"Video",videoLink:"Odkaz videa",insert:"Vložit video",url:"URL videa?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)"},link:{link:"Odkaz",insert:"Vytvořit odkaz",unlink:"Zrušit odkaz",edit:"Upravit",textToDisplay:"Zobrazovaný text",url:"Na jaké URL má tento odkaz vést?",openInNewWindow:"Otevřít v novém okně"},table:{table:"Tabulka",addRowAbove:"Přidat řádek nad",addRowBelow:"Přidat řádek pod",addColLeft:"Přidat sloupec vlevo",addColRight:"Přidat sloupec vpravo",delRow:"Smazat řádek",delCol:"Smazat sloupec",delTable:"Smazat tabulku"},hr:{insert:"Vložit vodorovnou čáru"},style:{style:"Styl",p:"Normální",blockquote:"Citace",pre:"Kód",h1:"Nadpis 1",h2:"Nadpis 2",h3:"Nadpis 3",h4:"Nadpis 4",h5:"Nadpis 5",h6:"Nadpis 6"},lists:{unordered:"Odrážkový seznam",ordered:"Číselný seznam"},options:{help:"Nápověda",fullscreen:"Celá obrazovka",codeview:"HTML kód"},paragraph:{paragraph:"Odstavec",outdent:"Zvětšit odsazení",indent:"Zmenšit odsazení",left:"Zarovnat doleva",center:"Zarovnat na střed",right:"Zarovnat doprava",justify:"Zarovnat oboustranně"},color:{recent:"Aktuální barva",more:"Další barvy",background:"Barva pozadí",foreground:"Barva písma",transparent:"Průhlednost",setTransparent:"Nastavit průhlednost",reset:"Obnovit",resetToDefault:"Obnovit výchozí",cpSelect:"Vybrat"},shortcut:{shortcuts:"Klávesové zkratky",close:"Zavřít",textFormatting:"Formátování textu",action:"Akce",paragraphFormatting:"Formátování odstavce",documentStyle:"Styl dokumentu"},help:{insertParagraph:"Vložit odstavec",undo:"Vrátit poslední příkaz",redo:"Opakovat poslední příkaz",tab:"Tab",untab:"Untab",bold:"Nastavit tučně",italic:"Nastavit kurzívu",underline:"Nastavit podtrhnutí",strikethrough:"Nastavit přeškrtnutí",removeFormat:"Ostranit nastavený styl",justifyLeft:"Nastavit zarovnání vlevo",justifyCenter:"Nastavit zarovnání na střed",justifyRight:"Nastavit zarovnání vpravo",justifyFull:"Nastavit zarovnání do bloku",insertUnorderedList:"Aplikovat odrážkový seznam",insertOrderedList:"Aplikovat číselný seznam",outdent:"Zmenšit odsazení aktuálního odstavec",indent:"Odsadit aktuální odstavec",formatPara:"Změnit formátování aktuálního bloku na odstavec (P tag)",formatH1:"Změnit formátování aktuálního bloku na Nadpis 1",formatH2:"Změnit formátování aktuálního bloku na Nadpis 2",formatH3:"Změnit formátování aktuálního bloku na Nadpis 3",formatH4:"Změnit formátování aktuálního bloku na Nadpis 4",formatH5:"Změnit formátování aktuálního bloku na Nadpis 5",formatH6:"Změnit formátování aktuálního bloku na Nadpis 6",insertHorizontalRule:"Vložit horizontální čáru","linkDialog.show":"Zobrazit dialog pro odkaz"},history:{undo:"Krok vzad",redo:"Krok vpřed"},specialChar:{specialChar:"SPECIÁLNÍ ZNAKY",select:"Vyberte speciální znaky"}}}),{};var t})); +//# sourceMappingURL=summernote-cs-CZ.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.min.js.map new file mode 100644 index 0000000..186466b --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-cs-CZ.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-cs-CZ.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EAqJPC,QApJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,UACRC,UAAW,YACXC,MAAO,uBACPC,OAAQ,cACRC,cAAe,cACfC,KAAM,kBAERC,MAAO,CACLA,MAAO,UACPC,OAAQ,iBACRC,WAAY,mBACZC,WAAY,qBACZC,cAAe,qBACfC,UAAW,iBACXC,WAAY,kBACZC,UAAW,mBACXC,aAAc,iBACdC,YAAa,aACbC,eAAgB,eAChBC,UAAW,cACXC,cAAe,yBACfC,UAAW,+BACXC,gBAAiB,gBACjBC,IAAK,cACLC,OAAQ,kBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,cACXlB,OAAQ,eACRc,IAAK,aACLK,UAAW,6DAEbC,KAAM,CACJA,KAAM,QACNpB,OAAQ,iBACRqB,OAAQ,eACRC,KAAM,UACNC,cAAe,mBACfT,IAAK,mCACLU,gBAAiB,wBAEnBC,MAAO,CACLA,MAAO,UACPC,YAAa,mBACbC,YAAa,mBACbC,WAAY,uBACZC,YAAa,wBACbC,OAAQ,eACRC,OAAQ,iBACRC,SAAU,kBAEZC,GAAI,CACFjC,OAAQ,0BAEVkC,MAAO,CACLA,MAAO,OACPC,EAAG,WACHC,WAAY,SACZC,IAAK,MACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,mBACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,WACNC,WAAY,iBACZC,SAAU,YAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,mBACTC,OAAQ,mBACRC,KAAM,kBACNC,OAAQ,oBACRC,MAAO,mBACPC,QAAS,wBAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,cACNC,WAAY,eACZC,WAAY,cACZC,YAAa,cACbC,eAAgB,uBAChBC,MAAO,UACPC,eAAgB,kBAChBC,SAAU,UAEZC,SAAU,CACRC,UAAW,oBACXC,MAAO,SACPC,eAAgB,oBAChBC,OAAQ,OACRC,oBAAqB,uBACrBC,cAAe,kBAEjB1B,KAAM,CACJ,gBAAmB,kBACnB,KAAQ,yBACR,KAAQ,2BACR,IAAO,MACP,MAAS,QACT,KAAQ,iBACR,OAAU,mBACV,UAAa,sBACb,cAAiB,uBACjB,aAAgB,0BAChB,YAAe,2BACf,cAAiB,8BACjB,aAAgB,4BAChB,YAAe,8BACf,oBAAuB,6BACvB,kBAAqB,2BACrB,QAAW,uCACX,OAAU,4BACV,WAAc,0DACd,SAAY,kDACZ,SAAY,kDACZ,SAAY,kDACZ,SAAY,kDACZ,SAAY,kDACZ,SAAY,kDACZ,qBAAwB,2BACxB,kBAAmB,6BAErB2B,QAAS,CACPC,KAAM,YACNC,KAAM,cAERC,YAAa,CACXA,YAAa,kBACbC,OAAQ,8B,GDvIhB,ICVU7F","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-cs-CZ.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'cs-CZ': {\n font: {\n bold: 'Tučné',\n italic: 'Kurzíva',\n underline: 'Podtržené',\n clear: 'Odstranit styl písma',\n height: 'Výška řádku',\n strikethrough: 'Přeškrtnuté',\n size: 'Velikost písma',\n },\n image: {\n image: 'Obrázek',\n insert: 'Vložit obrázek',\n resizeFull: 'Původní velikost',\n resizeHalf: 'Poloviční velikost',\n resizeQuarter: 'Čtvrteční velikost',\n floatLeft: 'Umístit doleva',\n floatRight: 'Umístit doprava',\n floatNone: 'Neobtékat textem',\n shapeRounded: 'Tvar: zaoblený',\n shapeCircle: 'Tvar: kruh',\n shapeThumbnail: 'Tvar: náhled',\n shapeNone: 'Tvar: žádný',\n dragImageHere: 'Přetáhnout sem obrázek',\n dropImage: 'Přetáhnout obrázek nebo text',\n selectFromFiles: 'Vybrat soubor',\n url: 'URL obrázku',\n remove: 'Odebrat obrázek',\n original: 'Originál',\n },\n video: {\n video: 'Video',\n videoLink: 'Odkaz videa',\n insert: 'Vložit video',\n url: 'URL videa?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)',\n },\n link: {\n link: 'Odkaz',\n insert: 'Vytvořit odkaz',\n unlink: 'Zrušit odkaz',\n edit: 'Upravit',\n textToDisplay: 'Zobrazovaný text',\n url: 'Na jaké URL má tento odkaz vést?',\n openInNewWindow: 'Otevřít v novém okně',\n },\n table: {\n table: 'Tabulka',\n addRowAbove: 'Přidat řádek nad',\n addRowBelow: 'Přidat řádek pod',\n addColLeft: 'Přidat sloupec vlevo',\n addColRight: 'Přidat sloupec vpravo',\n delRow: 'Smazat řádek',\n delCol: 'Smazat sloupec',\n delTable: 'Smazat tabulku',\n },\n hr: {\n insert: 'Vložit vodorovnou čáru',\n },\n style: {\n style: 'Styl',\n p: 'Normální',\n blockquote: 'Citace',\n pre: 'Kód',\n h1: 'Nadpis 1',\n h2: 'Nadpis 2',\n h3: 'Nadpis 3',\n h4: 'Nadpis 4',\n h5: 'Nadpis 5',\n h6: 'Nadpis 6',\n },\n lists: {\n unordered: 'Odrážkový seznam',\n ordered: 'Číselný seznam',\n },\n options: {\n help: 'Nápověda',\n fullscreen: 'Celá obrazovka',\n codeview: 'HTML kód',\n },\n paragraph: {\n paragraph: 'Odstavec',\n outdent: 'Zvětšit odsazení',\n indent: 'Zmenšit odsazení',\n left: 'Zarovnat doleva',\n center: 'Zarovnat na střed',\n right: 'Zarovnat doprava',\n justify: 'Zarovnat oboustranně',\n },\n color: {\n recent: 'Aktuální barva',\n more: 'Další barvy',\n background: 'Barva pozadí',\n foreground: 'Barva písma',\n transparent: 'Průhlednost',\n setTransparent: 'Nastavit průhlednost',\n reset: 'Obnovit',\n resetToDefault: 'Obnovit výchozí',\n cpSelect: 'Vybrat',\n },\n shortcut: {\n shortcuts: 'Klávesové zkratky',\n close: 'Zavřít',\n textFormatting: 'Formátování textu',\n action: 'Akce',\n paragraphFormatting: 'Formátování odstavce',\n documentStyle: 'Styl dokumentu',\n },\n help: {\n 'insertParagraph': 'Vložit odstavec',\n 'undo': 'Vrátit poslední příkaz',\n 'redo': 'Opakovat poslední příkaz',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Nastavit tučně',\n 'italic': 'Nastavit kurzívu',\n 'underline': 'Nastavit podtrhnutí',\n 'strikethrough': 'Nastavit přeškrtnutí',\n 'removeFormat': 'Ostranit nastavený styl',\n 'justifyLeft': 'Nastavit zarovnání vlevo',\n 'justifyCenter': 'Nastavit zarovnání na střed',\n 'justifyRight': 'Nastavit zarovnání vpravo',\n 'justifyFull': 'Nastavit zarovnání do bloku',\n 'insertUnorderedList': 'Aplikovat odrážkový seznam',\n 'insertOrderedList': 'Aplikovat číselný seznam',\n 'outdent': 'Zmenšit odsazení aktuálního odstavec',\n 'indent': 'Odsadit aktuální odstavec',\n 'formatPara': 'Změnit formátování aktuálního bloku na odstavec (P tag)',\n 'formatH1': 'Změnit formátování aktuálního bloku na Nadpis 1',\n 'formatH2': 'Změnit formátování aktuálního bloku na Nadpis 2',\n 'formatH3': 'Změnit formátování aktuálního bloku na Nadpis 3',\n 'formatH4': 'Změnit formátování aktuálního bloku na Nadpis 4',\n 'formatH5': 'Změnit formátování aktuálního bloku na Nadpis 5',\n 'formatH6': 'Změnit formátování aktuálního bloku na Nadpis 6',\n 'insertHorizontalRule': 'Vložit horizontální čáru',\n 'linkDialog.show': 'Zobrazit dialog pro odkaz',\n },\n history: {\n undo: 'Krok vzad',\n redo: 'Krok vpřed',\n },\n specialChar: {\n specialChar: 'SPECIÁLNÍ ZNAKY',\n select: 'Vyberte speciální znaky',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","strikethrough","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.js b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.js new file mode 100644 index 0000000..88b998e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'da-DK': { + font: { + bold: 'Fed', + italic: 'Kursiv', + underline: 'Understreget', + clear: 'Fjern formatering', + height: 'Højde', + name: 'Skrifttype', + strikethrough: 'Gennemstreget', + subscript: 'Sænket skrift', + superscript: 'Hævet skrift', + size: 'Skriftstørrelse' + }, + image: { + image: 'Billede', + insert: 'Indsæt billede', + resizeFull: 'Original størrelse', + resizeHalf: 'Halv størrelse', + resizeQuarter: 'Kvart størrelse', + floatLeft: 'Venstrestillet', + floatRight: 'Højrestillet', + floatNone: 'Fjern formatering', + shapeRounded: 'Form: Runde kanter', + shapeCircle: 'Form: Cirkel', + shapeThumbnail: 'Form: Miniature', + shapeNone: 'Form: Ingen', + dragImageHere: 'Træk billede hertil', + dropImage: 'Slip billede', + selectFromFiles: 'Vælg billed-fil', + maximumFileSize: 'Maks fil størrelse', + maximumFileSizeError: 'Filen er større end maks tilladte fil størrelse!', + url: 'Billede URL', + remove: 'Fjern billede', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Indsæt Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Link', + insert: 'Indsæt link', + unlink: 'Fjern link', + edit: 'Rediger', + textToDisplay: 'Visningstekst', + url: 'Hvor skal linket pege hen?', + openInNewWindow: 'Åbn i nyt vindue' + }, + table: { + table: 'Tabel', + addRowAbove: 'Tilføj række over', + addRowBelow: 'Tilføj række under', + addColLeft: 'Tilføj venstre kolonne', + addColRight: 'Tilføj højre kolonne', + delRow: 'Slet række', + delCol: 'Slet kolonne', + delTable: 'Slet tabel' + }, + hr: { + insert: 'Indsæt horisontal linje' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Kode', + h1: 'Overskrift 1', + h2: 'Overskrift 2', + h3: 'Overskrift 3', + h4: 'Overskrift 4', + h5: 'Overskrift 5', + h6: 'Overskrift 6' + }, + lists: { + unordered: 'Punktopstillet liste', + ordered: 'Nummereret liste' + }, + options: { + help: 'Hjælp', + fullscreen: 'Fuld skærm', + codeview: 'HTML-Visning' + }, + paragraph: { + paragraph: 'Afsnit', + outdent: 'Formindsk indryk', + indent: 'Forøg indryk', + left: 'Venstrestillet', + center: 'Centreret', + right: 'Højrestillet', + justify: 'Blokjuster' + }, + color: { + recent: 'Nyligt valgt farve', + more: 'Flere farver', + background: 'Baggrund', + foreground: 'Forgrund', + transparent: 'Transparent', + setTransparent: 'Sæt transparent', + reset: 'Nulstil', + resetToDefault: 'Gendan standardindstillinger' + }, + shortcut: { + shortcuts: 'Genveje', + close: 'Luk', + textFormatting: 'Tekstformatering', + action: 'Handling', + paragraphFormatting: 'Afsnitsformatering', + documentStyle: 'Dokumentstil', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Indsæt paragraf', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Vis Link Dialog' + }, + history: { + undo: 'Fortryd', + redo: 'Annuller fortryd' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Vælg special karakterer' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-da-DK.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.js.map new file mode 100644 index 0000000..9dec850 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-da-DK.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-da-DK.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'da-DK': {\n font: {\n bold: 'Fed',\n italic: 'Kursiv',\n underline: 'Understreget',\n clear: 'Fjern formatering',\n height: 'Højde',\n name: 'Skrifttype',\n strikethrough: 'Gennemstreget',\n subscript: 'Sænket skrift',\n superscript: 'Hævet skrift',\n size: 'Skriftstørrelse',\n },\n image: {\n image: 'Billede',\n insert: 'Indsæt billede',\n resizeFull: 'Original størrelse',\n resizeHalf: 'Halv størrelse',\n resizeQuarter: 'Kvart størrelse',\n floatLeft: 'Venstrestillet',\n floatRight: 'Højrestillet',\n floatNone: 'Fjern formatering',\n shapeRounded: 'Form: Runde kanter',\n shapeCircle: 'Form: Cirkel',\n shapeThumbnail: 'Form: Miniature',\n shapeNone: 'Form: Ingen',\n dragImageHere: 'Træk billede hertil',\n dropImage: 'Slip billede',\n selectFromFiles: 'Vælg billed-fil',\n maximumFileSize: 'Maks fil størrelse',\n maximumFileSizeError: 'Filen er større end maks tilladte fil størrelse!',\n url: 'Billede URL',\n remove: 'Fjern billede',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Indsæt Video',\n url: 'Video URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Indsæt link',\n unlink: 'Fjern link',\n edit: 'Rediger',\n textToDisplay: 'Visningstekst',\n url: 'Hvor skal linket pege hen?',\n openInNewWindow: 'Åbn i nyt vindue',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Tilføj række over',\n addRowBelow: 'Tilføj række under',\n addColLeft: 'Tilføj venstre kolonne',\n addColRight: 'Tilføj højre kolonne',\n delRow: 'Slet række',\n delCol: 'Slet kolonne',\n delTable: 'Slet tabel',\n },\n hr: {\n insert: 'Indsæt horisontal linje',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'Citat',\n pre: 'Kode',\n h1: 'Overskrift 1',\n h2: 'Overskrift 2',\n h3: 'Overskrift 3',\n h4: 'Overskrift 4',\n h5: 'Overskrift 5',\n h6: 'Overskrift 6',\n },\n lists: {\n unordered: 'Punktopstillet liste',\n ordered: 'Nummereret liste',\n },\n options: {\n help: 'Hjælp',\n fullscreen: 'Fuld skærm',\n codeview: 'HTML-Visning',\n },\n paragraph: {\n paragraph: 'Afsnit',\n outdent: 'Formindsk indryk',\n indent: 'Forøg indryk',\n left: 'Venstrestillet',\n center: 'Centreret',\n right: 'Højrestillet',\n justify: 'Blokjuster',\n },\n color: {\n recent: 'Nyligt valgt farve',\n more: 'Flere farver',\n background: 'Baggrund',\n foreground: 'Forgrund',\n transparent: 'Transparent',\n setTransparent: 'Sæt transparent',\n reset: 'Nulstil',\n resetToDefault: 'Gendan standardindstillinger',\n },\n shortcut: {\n shortcuts: 'Genveje',\n close: 'Luk',\n textFormatting: 'Tekstformatering',\n action: 'Handling',\n paragraphFormatting: 'Afsnitsformatering',\n documentStyle: 'Dokumentstil',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Indsæt paragraf',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Vis Link Dialog',\n },\n history: {\n undo: 'Fortryd',\n redo: 'Annuller fortryd',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Vælg special karakterer',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.min.js new file mode 100644 index 0000000..89ef6b0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var t=r();for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"da-DK":{font:{bold:"Fed",italic:"Kursiv",underline:"Understreget",clear:"Fjern formatering",height:"Højde",name:"Skrifttype",strikethrough:"Gennemstreget",subscript:"Sænket skrift",superscript:"Hævet skrift",size:"Skriftstørrelse"},image:{image:"Billede",insert:"Indsæt billede",resizeFull:"Original størrelse",resizeHalf:"Halv størrelse",resizeQuarter:"Kvart størrelse",floatLeft:"Venstrestillet",floatRight:"Højrestillet",floatNone:"Fjern formatering",shapeRounded:"Form: Runde kanter",shapeCircle:"Form: Cirkel",shapeThumbnail:"Form: Miniature",shapeNone:"Form: Ingen",dragImageHere:"Træk billede hertil",dropImage:"Slip billede",selectFromFiles:"Vælg billed-fil",maximumFileSize:"Maks fil størrelse",maximumFileSizeError:"Filen er større end maks tilladte fil størrelse!",url:"Billede URL",remove:"Fjern billede",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Indsæt Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Link",insert:"Indsæt link",unlink:"Fjern link",edit:"Rediger",textToDisplay:"Visningstekst",url:"Hvor skal linket pege hen?",openInNewWindow:"Åbn i nyt vindue"},table:{table:"Tabel",addRowAbove:"Tilføj række over",addRowBelow:"Tilføj række under",addColLeft:"Tilføj venstre kolonne",addColRight:"Tilføj højre kolonne",delRow:"Slet række",delCol:"Slet kolonne",delTable:"Slet tabel"},hr:{insert:"Indsæt horisontal linje"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Kode",h1:"Overskrift 1",h2:"Overskrift 2",h3:"Overskrift 3",h4:"Overskrift 4",h5:"Overskrift 5",h6:"Overskrift 6"},lists:{unordered:"Punktopstillet liste",ordered:"Nummereret liste"},options:{help:"Hjælp",fullscreen:"Fuld skærm",codeview:"HTML-Visning"},paragraph:{paragraph:"Afsnit",outdent:"Formindsk indryk",indent:"Forøg indryk",left:"Venstrestillet",center:"Centreret",right:"Højrestillet",justify:"Blokjuster"},color:{recent:"Nyligt valgt farve",more:"Flere farver",background:"Baggrund",foreground:"Forgrund",transparent:"Transparent",setTransparent:"Sæt transparent",reset:"Nulstil",resetToDefault:"Gendan standardindstillinger"},shortcut:{shortcuts:"Genveje",close:"Luk",textFormatting:"Tekstformatering",action:"Handling",paragraphFormatting:"Afsnitsformatering",documentStyle:"Dokumentstil",extraKeys:"Extra keys"},help:{insertParagraph:"Indsæt paragraf",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Vis Link Dialog"},history:{undo:"Fortryd",redo:"Annuller fortryd"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Vælg special karakterer"}}}),{};var e})); +//# sourceMappingURL=summernote-da-DK.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.min.js.map new file mode 100644 index 0000000..9670e28 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-da-DK.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-da-DK.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,MACNC,OAAQ,SACRC,UAAW,eACXC,MAAO,oBACPC,OAAQ,QACRC,KAAM,aACNC,cAAe,gBACfC,UAAW,gBACXC,YAAa,eACbC,KAAM,mBAERC,MAAO,CACLA,MAAO,UACPC,OAAQ,iBACRC,WAAY,qBACZC,WAAY,iBACZC,cAAe,kBACfC,UAAW,iBACXC,WAAY,eACZC,UAAW,oBACXC,aAAc,qBACdC,YAAa,eACbC,eAAgB,kBAChBC,UAAW,cACXC,cAAe,sBACfC,UAAW,eACXC,gBAAiB,kBACjBC,gBAAiB,qBACjBC,qBAAsB,mDACtBC,IAAK,cACLC,OAAQ,gBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,eACRgB,IAAK,aACLK,UAAW,8DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,cACRuB,OAAQ,aACRC,KAAM,UACNC,cAAe,gBACfT,IAAK,6BACLU,gBAAiB,oBAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,oBACbC,YAAa,qBACbC,WAAY,yBACZC,YAAa,uBACbC,OAAQ,aACRC,OAAQ,eACRC,SAAU,cAEZC,GAAI,CACFnC,OAAQ,2BAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,IACHC,WAAY,QACZC,IAAK,OACLC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,gBAENC,MAAO,CACLC,UAAW,uBACXC,QAAS,oBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,aACZC,SAAU,gBAEZC,UAAW,CACTA,UAAW,SACXC,QAAS,mBACTC,OAAQ,eACRC,KAAM,iBACNC,OAAQ,YACRC,MAAO,eACPC,QAAS,cAEXC,MAAO,CACLC,OAAQ,qBACRC,KAAM,eACNC,WAAY,WACZC,WAAY,WACZC,YAAa,cACbC,eAAgB,kBAChBC,MAAO,UACPC,eAAgB,gCAElBC,SAAU,CACRC,UAAW,UACXC,MAAO,MACPC,eAAgB,mBAChBC,OAAQ,WACRC,oBAAqB,qBACrBC,cAAe,eACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,kBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,mBAErB2B,QAAS,CACPC,KAAM,UACNC,KAAM,oBAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,8B,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-da-DK.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'da-DK': {\n font: {\n bold: 'Fed',\n italic: 'Kursiv',\n underline: 'Understreget',\n clear: 'Fjern formatering',\n height: 'Højde',\n name: 'Skrifttype',\n strikethrough: 'Gennemstreget',\n subscript: 'Sænket skrift',\n superscript: 'Hævet skrift',\n size: 'Skriftstørrelse',\n },\n image: {\n image: 'Billede',\n insert: 'Indsæt billede',\n resizeFull: 'Original størrelse',\n resizeHalf: 'Halv størrelse',\n resizeQuarter: 'Kvart størrelse',\n floatLeft: 'Venstrestillet',\n floatRight: 'Højrestillet',\n floatNone: 'Fjern formatering',\n shapeRounded: 'Form: Runde kanter',\n shapeCircle: 'Form: Cirkel',\n shapeThumbnail: 'Form: Miniature',\n shapeNone: 'Form: Ingen',\n dragImageHere: 'Træk billede hertil',\n dropImage: 'Slip billede',\n selectFromFiles: 'Vælg billed-fil',\n maximumFileSize: 'Maks fil størrelse',\n maximumFileSizeError: 'Filen er større end maks tilladte fil størrelse!',\n url: 'Billede URL',\n remove: 'Fjern billede',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Indsæt Video',\n url: 'Video URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Indsæt link',\n unlink: 'Fjern link',\n edit: 'Rediger',\n textToDisplay: 'Visningstekst',\n url: 'Hvor skal linket pege hen?',\n openInNewWindow: 'Åbn i nyt vindue',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Tilføj række over',\n addRowBelow: 'Tilføj række under',\n addColLeft: 'Tilføj venstre kolonne',\n addColRight: 'Tilføj højre kolonne',\n delRow: 'Slet række',\n delCol: 'Slet kolonne',\n delTable: 'Slet tabel',\n },\n hr: {\n insert: 'Indsæt horisontal linje',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'Citat',\n pre: 'Kode',\n h1: 'Overskrift 1',\n h2: 'Overskrift 2',\n h3: 'Overskrift 3',\n h4: 'Overskrift 4',\n h5: 'Overskrift 5',\n h6: 'Overskrift 6',\n },\n lists: {\n unordered: 'Punktopstillet liste',\n ordered: 'Nummereret liste',\n },\n options: {\n help: 'Hjælp',\n fullscreen: 'Fuld skærm',\n codeview: 'HTML-Visning',\n },\n paragraph: {\n paragraph: 'Afsnit',\n outdent: 'Formindsk indryk',\n indent: 'Forøg indryk',\n left: 'Venstrestillet',\n center: 'Centreret',\n right: 'Højrestillet',\n justify: 'Blokjuster',\n },\n color: {\n recent: 'Nyligt valgt farve',\n more: 'Flere farver',\n background: 'Baggrund',\n foreground: 'Forgrund',\n transparent: 'Transparent',\n setTransparent: 'Sæt transparent',\n reset: 'Nulstil',\n resetToDefault: 'Gendan standardindstillinger',\n },\n shortcut: {\n shortcuts: 'Genveje',\n close: 'Luk',\n textFormatting: 'Tekstformatering',\n action: 'Handling',\n paragraphFormatting: 'Afsnitsformatering',\n documentStyle: 'Dokumentstil',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Indsæt paragraf',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Vis Link Dialog',\n },\n history: {\n undo: 'Fortryd',\n redo: 'Annuller fortryd',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Vælg special karakterer',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.js b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.js new file mode 100644 index 0000000..a0ccee0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.js @@ -0,0 +1,186 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'de-CH': { + font: { + bold: 'Fett', + italic: 'Kursiv', + underline: 'Unterstrichen', + clear: 'Zurücksetzen', + height: 'Zeilenhöhe', + name: 'Schriftart', + strikethrough: 'Durchgestrichen', + subscript: 'Tiefgestellt', + superscript: 'Hochgestellt', + size: 'Schriftgrösse' + }, + image: { + image: 'Bild', + insert: 'Bild einfügen', + resizeFull: 'Originalgrösse', + resizeHalf: '1/2 Grösse', + resizeQuarter: '1/4 Grösse', + floatLeft: 'Linksbündig', + floatRight: 'Rechtsbündig', + floatNone: 'Kein Textfluss', + shapeRounded: 'Abgerundete Ecken', + shapeCircle: 'Kreisförmig', + shapeThumbnail: '"Vorschaubild"', + shapeNone: 'Kein Rahmen', + dragImageHere: 'Bild hierher ziehen', + dropImage: 'Bild oder Text nehmen', + selectFromFiles: 'Datei auswählen', + maximumFileSize: 'Maximale Dateigrösse', + maximumFileSizeError: 'Maximale Dateigrösse überschritten', + url: 'Bild URL', + remove: 'Bild entfernen', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Videolink', + insert: 'Video einfügen', + url: 'Video URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)' + }, + link: { + link: 'Link', + insert: 'Link einfügen', + unlink: 'Link entfernen', + edit: 'Bearbeiten', + textToDisplay: 'Anzeigetext', + url: 'Link URL', + openInNewWindow: 'In neuem Fenster öffnen', + useProtocol: 'Standardprotokoll verwenden' + }, + table: { + table: 'Tabelle', + addRowAbove: '+ Zeile oberhalb', + addRowBelow: '+ Zeile unterhalb', + addColLeft: '+ Spalte links', + addColRight: '+ Spalte rechts', + delRow: 'Zeile löschen', + delCol: 'Spalte löschen', + delTable: 'Tabelle löschen' + }, + hr: { + insert: 'Horizontale Linie einfügen' + }, + style: { + style: 'Stil', + normal: 'Normal', + p: 'Normal', + blockquote: 'Zitat', + pre: 'Quellcode', + h1: 'Überschrift 1', + h2: 'Überschrift 2', + h3: 'Überschrift 3', + h4: 'Überschrift 4', + h5: 'Überschrift 5', + h6: 'Überschrift 6' + }, + lists: { + unordered: 'Aufzählung', + ordered: 'Nummerierung' + }, + options: { + help: 'Hilfe', + fullscreen: 'Vollbild', + codeview: 'Quellcode anzeigen' + }, + paragraph: { + paragraph: 'Absatz', + outdent: 'Einzug verkleinern', + indent: 'Einzug vergrössern', + left: 'Links ausrichten', + center: 'Zentriert ausrichten', + right: 'Rechts ausrichten', + justify: 'Blocksatz' + }, + color: { + recent: 'Letzte Farbe', + more: 'Weitere Farben', + background: 'Hintergrundfarbe', + foreground: 'Schriftfarbe', + transparent: 'Transparenz', + setTransparent: 'Transparenz setzen', + reset: 'Zurücksetzen', + resetToDefault: 'Auf Standard zurücksetzen' + }, + shortcut: { + shortcuts: 'Tastenkürzel', + close: 'Schliessen', + textFormatting: 'Textformatierung', + action: 'Aktion', + paragraphFormatting: 'Absatzformatierung', + documentStyle: 'Dokumentenstil', + extraKeys: 'Weitere Tasten' + }, + help: { + insertParagraph: 'Absatz einfügen', + undo: 'Letzte Anweisung rückgängig', + redo: 'Letzte Anweisung wiederholen', + tab: 'Einzug hinzufügen', + untab: 'Einzug entfernen', + bold: 'Schrift Fett', + italic: 'Schrift Kursiv', + underline: 'Unterstreichen', + strikethrough: 'Durchstreichen', + removeFormat: 'Entfernt Format', + justifyLeft: 'Linksbündig', + justifyCenter: 'Mittig', + justifyRight: 'Rechtsbündig', + justifyFull: 'Blocksatz', + insertUnorderedList: 'Unnummerierte Liste', + insertOrderedList: 'Nummerierte Liste', + outdent: 'Aktuellen Absatz ausrücken', + indent: 'Aktuellen Absatz einrücken', + formatPara: 'Formatiert aktuellen Block als Absatz (P-Tag)', + formatH1: 'Formatiert aktuellen Block als H1', + formatH2: 'Formatiert aktuellen Block als H2', + formatH3: 'Formatiert aktuellen Block als H3', + formatH4: 'Formatiert aktuellen Block als H4', + formatH5: 'Formatiert aktuellen Block als H5', + formatH6: 'Formatiert aktuellen Block als H6', + insertHorizontalRule: 'Fügt eine horizontale Linie ein', + 'linkDialog.show': 'Zeigt den Linkdialog' + }, + history: { + undo: 'Rückgängig', + redo: 'Wiederholen' + }, + specialChar: { + specialChar: 'Sonderzeichen', + select: 'Zeichen auswählen' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-de-CH.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.js.map new file mode 100644 index 0000000..c4df76b --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-de-CH.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-de-CH.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'de-CH': {\n font: {\n bold: 'Fett',\n italic: 'Kursiv',\n underline: 'Unterstrichen',\n clear: 'Zurücksetzen',\n height: 'Zeilenhöhe',\n name: 'Schriftart',\n strikethrough: 'Durchgestrichen',\n subscript: 'Tiefgestellt',\n superscript: 'Hochgestellt',\n size: 'Schriftgrösse',\n },\n image: {\n image: 'Bild',\n insert: 'Bild einfügen',\n resizeFull: 'Originalgrösse',\n resizeHalf: '1/2 Grösse',\n resizeQuarter: '1/4 Grösse',\n floatLeft: 'Linksbündig',\n floatRight: 'Rechtsbündig',\n floatNone: 'Kein Textfluss',\n shapeRounded: 'Abgerundete Ecken',\n shapeCircle: 'Kreisförmig',\n shapeThumbnail: '\"Vorschaubild\"',\n shapeNone: 'Kein Rahmen',\n dragImageHere: 'Bild hierher ziehen',\n dropImage: 'Bild oder Text nehmen',\n selectFromFiles: 'Datei auswählen',\n maximumFileSize: 'Maximale Dateigrösse',\n maximumFileSizeError: 'Maximale Dateigrösse überschritten',\n url: 'Bild URL',\n remove: 'Bild entfernen',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Videolink',\n insert: 'Video einfügen',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link einfügen',\n unlink: 'Link entfernen',\n edit: 'Bearbeiten',\n textToDisplay: 'Anzeigetext',\n url: 'Link URL',\n openInNewWindow: 'In neuem Fenster öffnen',\n useProtocol: 'Standardprotokoll verwenden',\n },\n table: {\n table: 'Tabelle',\n addRowAbove: '+ Zeile oberhalb',\n addRowBelow: '+ Zeile unterhalb',\n addColLeft: '+ Spalte links',\n addColRight: '+ Spalte rechts',\n delRow: 'Zeile löschen',\n delCol: 'Spalte löschen',\n delTable: 'Tabelle löschen',\n },\n hr: {\n insert: 'Horizontale Linie einfügen',\n },\n style: {\n style: 'Stil',\n normal: 'Normal',\n p: 'Normal',\n blockquote: 'Zitat',\n pre: 'Quellcode',\n h1: 'Überschrift 1',\n h2: 'Überschrift 2',\n h3: 'Überschrift 3',\n h4: 'Überschrift 4',\n h5: 'Überschrift 5',\n h6: 'Überschrift 6',\n },\n lists: {\n unordered: 'Aufzählung',\n ordered: 'Nummerierung',\n },\n options: {\n help: 'Hilfe',\n fullscreen: 'Vollbild',\n codeview: 'Quellcode anzeigen',\n },\n paragraph: {\n paragraph: 'Absatz',\n outdent: 'Einzug verkleinern',\n indent: 'Einzug vergrössern',\n left: 'Links ausrichten',\n center: 'Zentriert ausrichten',\n right: 'Rechts ausrichten',\n justify: 'Blocksatz',\n },\n color: {\n recent: 'Letzte Farbe',\n more: 'Weitere Farben',\n background: 'Hintergrundfarbe',\n foreground: 'Schriftfarbe',\n transparent: 'Transparenz',\n setTransparent: 'Transparenz setzen',\n reset: 'Zurücksetzen',\n resetToDefault: 'Auf Standard zurücksetzen',\n },\n shortcut: {\n shortcuts: 'Tastenkürzel',\n close: 'Schliessen',\n textFormatting: 'Textformatierung',\n action: 'Aktion',\n paragraphFormatting: 'Absatzformatierung',\n documentStyle: 'Dokumentenstil',\n extraKeys: 'Weitere Tasten',\n },\n help: {\n insertParagraph: 'Absatz einfügen',\n undo: 'Letzte Anweisung rückgängig',\n redo: 'Letzte Anweisung wiederholen',\n tab: 'Einzug hinzufügen',\n untab: 'Einzug entfernen',\n bold: 'Schrift Fett',\n italic: 'Schrift Kursiv',\n underline: 'Unterstreichen',\n strikethrough: 'Durchstreichen',\n removeFormat: 'Entfernt Format',\n justifyLeft: 'Linksbündig',\n justifyCenter: 'Mittig',\n justifyRight: 'Rechtsbündig',\n justifyFull: 'Blocksatz',\n insertUnorderedList: 'Unnummerierte Liste',\n insertOrderedList: 'Nummerierte Liste',\n outdent: 'Aktuellen Absatz ausrücken',\n indent: 'Aktuellen Absatz einrücken',\n formatPara: 'Formatiert aktuellen Block als Absatz (P-Tag)',\n formatH1: 'Formatiert aktuellen Block als H1',\n formatH2: 'Formatiert aktuellen Block als H2',\n formatH3: 'Formatiert aktuellen Block als H3',\n formatH4: 'Formatiert aktuellen Block als H4',\n formatH5: 'Formatiert aktuellen Block als H5',\n formatH6: 'Formatiert aktuellen Block als H6',\n insertHorizontalRule: 'Fügt eine horizontale Linie ein',\n 'linkDialog.show': 'Zeigt den Linkdialog',\n },\n history: {\n undo: 'Rückgängig',\n redo: 'Wiederholen',\n },\n specialChar: {\n specialChar: 'Sonderzeichen',\n select: 'Zeichen auswählen',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","normal","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.min.js new file mode 100644 index 0000000..fd5fb02 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"de-CH":{font:{bold:"Fett",italic:"Kursiv",underline:"Unterstrichen",clear:"Zurücksetzen",height:"Zeilenhöhe",name:"Schriftart",strikethrough:"Durchgestrichen",subscript:"Tiefgestellt",superscript:"Hochgestellt",size:"Schriftgrösse"},image:{image:"Bild",insert:"Bild einfügen",resizeFull:"Originalgrösse",resizeHalf:"1/2 Grösse",resizeQuarter:"1/4 Grösse",floatLeft:"Linksbündig",floatRight:"Rechtsbündig",floatNone:"Kein Textfluss",shapeRounded:"Abgerundete Ecken",shapeCircle:"Kreisförmig",shapeThumbnail:'"Vorschaubild"',shapeNone:"Kein Rahmen",dragImageHere:"Bild hierher ziehen",dropImage:"Bild oder Text nehmen",selectFromFiles:"Datei auswählen",maximumFileSize:"Maximale Dateigrösse",maximumFileSizeError:"Maximale Dateigrösse überschritten",url:"Bild URL",remove:"Bild entfernen",original:"Original"},video:{video:"Video",videoLink:"Videolink",insert:"Video einfügen",url:"Video URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)"},link:{link:"Link",insert:"Link einfügen",unlink:"Link entfernen",edit:"Bearbeiten",textToDisplay:"Anzeigetext",url:"Link URL",openInNewWindow:"In neuem Fenster öffnen",useProtocol:"Standardprotokoll verwenden"},table:{table:"Tabelle",addRowAbove:"+ Zeile oberhalb",addRowBelow:"+ Zeile unterhalb",addColLeft:"+ Spalte links",addColRight:"+ Spalte rechts",delRow:"Zeile löschen",delCol:"Spalte löschen",delTable:"Tabelle löschen"},hr:{insert:"Horizontale Linie einfügen"},style:{style:"Stil",normal:"Normal",p:"Normal",blockquote:"Zitat",pre:"Quellcode",h1:"Überschrift 1",h2:"Überschrift 2",h3:"Überschrift 3",h4:"Überschrift 4",h5:"Überschrift 5",h6:"Überschrift 6"},lists:{unordered:"Aufzählung",ordered:"Nummerierung"},options:{help:"Hilfe",fullscreen:"Vollbild",codeview:"Quellcode anzeigen"},paragraph:{paragraph:"Absatz",outdent:"Einzug verkleinern",indent:"Einzug vergrössern",left:"Links ausrichten",center:"Zentriert ausrichten",right:"Rechts ausrichten",justify:"Blocksatz"},color:{recent:"Letzte Farbe",more:"Weitere Farben",background:"Hintergrundfarbe",foreground:"Schriftfarbe",transparent:"Transparenz",setTransparent:"Transparenz setzen",reset:"Zurücksetzen",resetToDefault:"Auf Standard zurücksetzen"},shortcut:{shortcuts:"Tastenkürzel",close:"Schliessen",textFormatting:"Textformatierung",action:"Aktion",paragraphFormatting:"Absatzformatierung",documentStyle:"Dokumentenstil",extraKeys:"Weitere Tasten"},help:{insertParagraph:"Absatz einfügen",undo:"Letzte Anweisung rückgängig",redo:"Letzte Anweisung wiederholen",tab:"Einzug hinzufügen",untab:"Einzug entfernen",bold:"Schrift Fett",italic:"Schrift Kursiv",underline:"Unterstreichen",strikethrough:"Durchstreichen",removeFormat:"Entfernt Format",justifyLeft:"Linksbündig",justifyCenter:"Mittig",justifyRight:"Rechtsbündig",justifyFull:"Blocksatz",insertUnorderedList:"Unnummerierte Liste",insertOrderedList:"Nummerierte Liste",outdent:"Aktuellen Absatz ausrücken",indent:"Aktuellen Absatz einrücken",formatPara:"Formatiert aktuellen Block als Absatz (P-Tag)",formatH1:"Formatiert aktuellen Block als H1",formatH2:"Formatiert aktuellen Block als H2",formatH3:"Formatiert aktuellen Block als H3",formatH4:"Formatiert aktuellen Block als H4",formatH5:"Formatiert aktuellen Block als H5",formatH6:"Formatiert aktuellen Block als H6",insertHorizontalRule:"Fügt eine horizontale Linie ein","linkDialog.show":"Zeigt den Linkdialog"},history:{undo:"Rückgängig",redo:"Wiederholen"},specialChar:{specialChar:"Sonderzeichen",select:"Zeichen auswählen"}}}),{};var e})); +//# sourceMappingURL=summernote-de-CH.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.min.js.map new file mode 100644 index 0000000..05a6a89 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-CH.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-de-CH.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA4JPC,QA3JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,OACNC,OAAQ,SACRC,UAAW,gBACXC,MAAO,eACPC,OAAQ,aACRC,KAAM,aACNC,cAAe,kBACfC,UAAW,eACXC,YAAa,eACbC,KAAM,iBAERC,MAAO,CACLA,MAAO,OACPC,OAAQ,gBACRC,WAAY,iBACZC,WAAY,aACZC,cAAe,aACfC,UAAW,cACXC,WAAY,eACZC,UAAW,iBACXC,aAAc,oBACdC,YAAa,cACbC,eAAgB,iBAChBC,UAAW,cACXC,cAAe,sBACfC,UAAW,wBACXC,gBAAiB,kBACjBC,gBAAiB,uBACjBC,qBAAsB,qCACtBC,IAAK,WACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,YACXpB,OAAQ,iBACRgB,IAAK,YACLK,UAAW,6DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,gBACRuB,OAAQ,iBACRC,KAAM,aACNC,cAAe,cACfT,IAAK,WACLU,gBAAiB,0BACjBC,YAAa,+BAEfC,MAAO,CACLA,MAAO,UACPC,YAAa,mBACbC,YAAa,oBACbC,WAAY,iBACZC,YAAa,kBACbC,OAAQ,gBACRC,OAAQ,iBACRC,SAAU,mBAEZC,GAAI,CACFpC,OAAQ,8BAEVqC,MAAO,CACLA,MAAO,OACPC,OAAQ,SACRC,EAAG,SACHC,WAAY,QACZC,IAAK,YACLC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,iBAENC,MAAO,CACLC,UAAW,aACXC,QAAS,gBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,WACZC,SAAU,sBAEZC,UAAW,CACTA,UAAW,SACXC,QAAS,qBACTC,OAAQ,qBACRC,KAAM,mBACNC,OAAQ,uBACRC,MAAO,oBACPC,QAAS,aAEXC,MAAO,CACLC,OAAQ,eACRC,KAAM,iBACNC,WAAY,mBACZC,WAAY,eACZC,YAAa,cACbC,eAAgB,qBAChBC,MAAO,eACPC,eAAgB,6BAElBC,SAAU,CACRC,UAAW,eACXC,MAAO,aACPC,eAAgB,mBAChBC,OAAQ,SACRC,oBAAqB,qBACrBC,cAAe,iBACfC,UAAW,kBAEb1B,KAAM,CACJ2B,gBAAiB,kBACjBC,KAAM,8BACNC,KAAM,+BACNC,IAAK,oBACLC,MAAO,mBACP9F,KAAM,eACNC,OAAQ,iBACRC,UAAW,iBACXI,cAAe,iBACfyF,aAAc,kBACdC,YAAa,cACbC,cAAe,SACfC,aAAc,eACdC,YAAa,YACbC,oBAAqB,sBACrBC,kBAAmB,oBACnBlC,QAAS,6BACTC,OAAQ,6BACRkC,WAAY,gDACZC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,qBAAsB,kCACtB,kBAAmB,wBAErBC,QAAS,CACPnB,KAAM,aACNC,KAAM,eAERmB,YAAa,CACXA,YAAa,gBACbC,OAAQ,wB,GD9IhB,ICVUtH","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-de-CH.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'de-CH': {\n font: {\n bold: 'Fett',\n italic: 'Kursiv',\n underline: 'Unterstrichen',\n clear: 'Zurücksetzen',\n height: 'Zeilenhöhe',\n name: 'Schriftart',\n strikethrough: 'Durchgestrichen',\n subscript: 'Tiefgestellt',\n superscript: 'Hochgestellt',\n size: 'Schriftgrösse',\n },\n image: {\n image: 'Bild',\n insert: 'Bild einfügen',\n resizeFull: 'Originalgrösse',\n resizeHalf: '1/2 Grösse',\n resizeQuarter: '1/4 Grösse',\n floatLeft: 'Linksbündig',\n floatRight: 'Rechtsbündig',\n floatNone: 'Kein Textfluss',\n shapeRounded: 'Abgerundete Ecken',\n shapeCircle: 'Kreisförmig',\n shapeThumbnail: '\"Vorschaubild\"',\n shapeNone: 'Kein Rahmen',\n dragImageHere: 'Bild hierher ziehen',\n dropImage: 'Bild oder Text nehmen',\n selectFromFiles: 'Datei auswählen',\n maximumFileSize: 'Maximale Dateigrösse',\n maximumFileSizeError: 'Maximale Dateigrösse überschritten',\n url: 'Bild URL',\n remove: 'Bild entfernen',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Videolink',\n insert: 'Video einfügen',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link einfügen',\n unlink: 'Link entfernen',\n edit: 'Bearbeiten',\n textToDisplay: 'Anzeigetext',\n url: 'Link URL',\n openInNewWindow: 'In neuem Fenster öffnen',\n useProtocol: 'Standardprotokoll verwenden',\n },\n table: {\n table: 'Tabelle',\n addRowAbove: '+ Zeile oberhalb',\n addRowBelow: '+ Zeile unterhalb',\n addColLeft: '+ Spalte links',\n addColRight: '+ Spalte rechts',\n delRow: 'Zeile löschen',\n delCol: 'Spalte löschen',\n delTable: 'Tabelle löschen',\n },\n hr: {\n insert: 'Horizontale Linie einfügen',\n },\n style: {\n style: 'Stil',\n normal: 'Normal',\n p: 'Normal',\n blockquote: 'Zitat',\n pre: 'Quellcode',\n h1: 'Überschrift 1',\n h2: 'Überschrift 2',\n h3: 'Überschrift 3',\n h4: 'Überschrift 4',\n h5: 'Überschrift 5',\n h6: 'Überschrift 6',\n },\n lists: {\n unordered: 'Aufzählung',\n ordered: 'Nummerierung',\n },\n options: {\n help: 'Hilfe',\n fullscreen: 'Vollbild',\n codeview: 'Quellcode anzeigen',\n },\n paragraph: {\n paragraph: 'Absatz',\n outdent: 'Einzug verkleinern',\n indent: 'Einzug vergrössern',\n left: 'Links ausrichten',\n center: 'Zentriert ausrichten',\n right: 'Rechts ausrichten',\n justify: 'Blocksatz',\n },\n color: {\n recent: 'Letzte Farbe',\n more: 'Weitere Farben',\n background: 'Hintergrundfarbe',\n foreground: 'Schriftfarbe',\n transparent: 'Transparenz',\n setTransparent: 'Transparenz setzen',\n reset: 'Zurücksetzen',\n resetToDefault: 'Auf Standard zurücksetzen',\n },\n shortcut: {\n shortcuts: 'Tastenkürzel',\n close: 'Schliessen',\n textFormatting: 'Textformatierung',\n action: 'Aktion',\n paragraphFormatting: 'Absatzformatierung',\n documentStyle: 'Dokumentenstil',\n extraKeys: 'Weitere Tasten',\n },\n help: {\n insertParagraph: 'Absatz einfügen',\n undo: 'Letzte Anweisung rückgängig',\n redo: 'Letzte Anweisung wiederholen',\n tab: 'Einzug hinzufügen',\n untab: 'Einzug entfernen',\n bold: 'Schrift Fett',\n italic: 'Schrift Kursiv',\n underline: 'Unterstreichen',\n strikethrough: 'Durchstreichen',\n removeFormat: 'Entfernt Format',\n justifyLeft: 'Linksbündig',\n justifyCenter: 'Mittig',\n justifyRight: 'Rechtsbündig',\n justifyFull: 'Blocksatz',\n insertUnorderedList: 'Unnummerierte Liste',\n insertOrderedList: 'Nummerierte Liste',\n outdent: 'Aktuellen Absatz ausrücken',\n indent: 'Aktuellen Absatz einrücken',\n formatPara: 'Formatiert aktuellen Block als Absatz (P-Tag)',\n formatH1: 'Formatiert aktuellen Block als H1',\n formatH2: 'Formatiert aktuellen Block als H2',\n formatH3: 'Formatiert aktuellen Block als H3',\n formatH4: 'Formatiert aktuellen Block als H4',\n formatH5: 'Formatiert aktuellen Block als H5',\n formatH6: 'Formatiert aktuellen Block als H6',\n insertHorizontalRule: 'Fügt eine horizontale Linie ein',\n 'linkDialog.show': 'Zeigt den Linkdialog',\n },\n history: {\n undo: 'Rückgängig',\n redo: 'Wiederholen',\n },\n specialChar: {\n specialChar: 'Sonderzeichen',\n select: 'Zeichen auswählen',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","normal","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.js b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.js new file mode 100644 index 0000000..4e010dd --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.js @@ -0,0 +1,186 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'de-DE': { + font: { + bold: 'Fett', + italic: 'Kursiv', + underline: 'Unterstrichen', + clear: 'Zurücksetzen', + height: 'Zeilenhöhe', + name: 'Schriftart', + strikethrough: 'Durchgestrichen', + subscript: 'Tiefgestellt', + superscript: 'Hochgestellt', + size: 'Schriftgröße' + }, + image: { + image: 'Bild', + insert: 'Bild einfügen', + resizeFull: 'Originalgröße', + resizeHalf: '1/2 Größe', + resizeQuarter: '1/4 Größe', + floatLeft: 'Linksbündig', + floatRight: 'Rechtsbündig', + floatNone: 'Kein Textfluss', + shapeRounded: 'Abgerundete Ecken', + shapeCircle: 'Kreisförmig', + shapeThumbnail: '"Vorschaubild"', + shapeNone: 'Kein Rahmen', + dragImageHere: 'Bild hierher ziehen', + dropImage: 'Bild oder Text nehmen', + selectFromFiles: 'Datei auswählen', + maximumFileSize: 'Maximale Dateigröße', + maximumFileSizeError: 'Maximale Dateigröße überschritten', + url: 'Bild URL', + remove: 'Bild entfernen', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Videolink', + insert: 'Video einfügen', + url: 'Video URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)' + }, + link: { + link: 'Link', + insert: 'Link einfügen', + unlink: 'Link entfernen', + edit: 'Bearbeiten', + textToDisplay: 'Anzeigetext', + url: 'Link URL', + openInNewWindow: 'In neuem Fenster öffnen', + useProtocol: 'Standardprotokoll verwenden' + }, + table: { + table: 'Tabelle', + addRowAbove: '+ Zeile oberhalb', + addRowBelow: '+ Zeile unterhalb', + addColLeft: '+ Spalte links', + addColRight: '+ Spalte rechts', + delRow: 'Zeile löschen', + delCol: 'Spalte löschen', + delTable: 'Tabelle löschen' + }, + hr: { + insert: 'Horizontale Linie einfügen' + }, + style: { + style: 'Stil', + normal: 'Normal', + p: 'Normal', + blockquote: 'Zitat', + pre: 'Quellcode', + h1: 'Überschrift 1', + h2: 'Überschrift 2', + h3: 'Überschrift 3', + h4: 'Überschrift 4', + h5: 'Überschrift 5', + h6: 'Überschrift 6' + }, + lists: { + unordered: 'Aufzählung', + ordered: 'Nummerierung' + }, + options: { + help: 'Hilfe', + fullscreen: 'Vollbild', + codeview: 'Quellcode anzeigen' + }, + paragraph: { + paragraph: 'Absatz', + outdent: 'Einzug verkleinern', + indent: 'Einzug vergrößern', + left: 'Links ausrichten', + center: 'Zentriert ausrichten', + right: 'Rechts ausrichten', + justify: 'Blocksatz' + }, + color: { + recent: 'Letzte Farbe', + more: 'Weitere Farben', + background: 'Hintergrundfarbe', + foreground: 'Schriftfarbe', + transparent: 'Transparenz', + setTransparent: 'Transparenz setzen', + reset: 'Zurücksetzen', + resetToDefault: 'Auf Standard zurücksetzen' + }, + shortcut: { + shortcuts: 'Tastenkürzel', + close: 'Schließen', + textFormatting: 'Textformatierung', + action: 'Aktion', + paragraphFormatting: 'Absatzformatierung', + documentStyle: 'Dokumentenstil', + extraKeys: 'Weitere Tasten' + }, + help: { + insertParagraph: 'Absatz einfügen', + undo: 'Letzte Anweisung rückgängig', + redo: 'Letzte Anweisung wiederholen', + tab: 'Einzug hinzufügen', + untab: 'Einzug entfernen', + bold: 'Schrift Fett', + italic: 'Schrift Kursiv', + underline: 'Unterstreichen', + strikethrough: 'Durchstreichen', + removeFormat: 'Entfernt Format', + justifyLeft: 'Linksbündig', + justifyCenter: 'Mittig', + justifyRight: 'Rechtsbündig', + justifyFull: 'Blocksatz', + insertUnorderedList: 'Unnummerierte Liste', + insertOrderedList: 'Nummerierte Liste', + outdent: 'Aktuellen Absatz ausrücken', + indent: 'Aktuellen Absatz einrücken', + formatPara: 'Formatiert aktuellen Block als Absatz (P-Tag)', + formatH1: 'Formatiert aktuellen Block als H1', + formatH2: 'Formatiert aktuellen Block als H2', + formatH3: 'Formatiert aktuellen Block als H3', + formatH4: 'Formatiert aktuellen Block als H4', + formatH5: 'Formatiert aktuellen Block als H5', + formatH6: 'Formatiert aktuellen Block als H6', + insertHorizontalRule: 'Fügt eine horizontale Linie ein', + 'linkDialog.show': 'Zeigt den Linkdialog' + }, + history: { + undo: 'Rückgängig', + redo: 'Wiederholen' + }, + specialChar: { + specialChar: 'Sonderzeichen', + select: 'Zeichen auswählen' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-de-DE.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.js.map new file mode 100644 index 0000000..c9062a7 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-de-DE.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-de-DE.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'de-DE': {\n font: {\n bold: 'Fett',\n italic: 'Kursiv',\n underline: 'Unterstrichen',\n clear: 'Zurücksetzen',\n height: 'Zeilenhöhe',\n name: 'Schriftart',\n strikethrough: 'Durchgestrichen',\n subscript: 'Tiefgestellt',\n superscript: 'Hochgestellt',\n size: 'Schriftgröße',\n },\n image: {\n image: 'Bild',\n insert: 'Bild einfügen',\n resizeFull: 'Originalgröße',\n resizeHalf: '1/2 Größe',\n resizeQuarter: '1/4 Größe',\n floatLeft: 'Linksbündig',\n floatRight: 'Rechtsbündig',\n floatNone: 'Kein Textfluss',\n shapeRounded: 'Abgerundete Ecken',\n shapeCircle: 'Kreisförmig',\n shapeThumbnail: '\"Vorschaubild\"',\n shapeNone: 'Kein Rahmen',\n dragImageHere: 'Bild hierher ziehen',\n dropImage: 'Bild oder Text nehmen',\n selectFromFiles: 'Datei auswählen',\n maximumFileSize: 'Maximale Dateigröße',\n maximumFileSizeError: 'Maximale Dateigröße überschritten',\n url: 'Bild URL',\n remove: 'Bild entfernen',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Videolink',\n insert: 'Video einfügen',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link einfügen',\n unlink: 'Link entfernen',\n edit: 'Bearbeiten',\n textToDisplay: 'Anzeigetext',\n url: 'Link URL',\n openInNewWindow: 'In neuem Fenster öffnen',\n useProtocol: 'Standardprotokoll verwenden',\n },\n table: {\n table: 'Tabelle',\n addRowAbove: '+ Zeile oberhalb',\n addRowBelow: '+ Zeile unterhalb',\n addColLeft: '+ Spalte links',\n addColRight: '+ Spalte rechts',\n delRow: 'Zeile löschen',\n delCol: 'Spalte löschen',\n delTable: 'Tabelle löschen',\n },\n hr: {\n insert: 'Horizontale Linie einfügen',\n },\n style: {\n style: 'Stil',\n normal: 'Normal',\n p: 'Normal',\n blockquote: 'Zitat',\n pre: 'Quellcode',\n h1: 'Überschrift 1',\n h2: 'Überschrift 2',\n h3: 'Überschrift 3',\n h4: 'Überschrift 4',\n h5: 'Überschrift 5',\n h6: 'Überschrift 6',\n },\n lists: {\n unordered: 'Aufzählung',\n ordered: 'Nummerierung',\n },\n options: {\n help: 'Hilfe',\n fullscreen: 'Vollbild',\n codeview: 'Quellcode anzeigen',\n },\n paragraph: {\n paragraph: 'Absatz',\n outdent: 'Einzug verkleinern',\n indent: 'Einzug vergrößern',\n left: 'Links ausrichten',\n center: 'Zentriert ausrichten',\n right: 'Rechts ausrichten',\n justify: 'Blocksatz',\n },\n color: {\n recent: 'Letzte Farbe',\n more: 'Weitere Farben',\n background: 'Hintergrundfarbe',\n foreground: 'Schriftfarbe',\n transparent: 'Transparenz',\n setTransparent: 'Transparenz setzen',\n reset: 'Zurücksetzen',\n resetToDefault: 'Auf Standard zurücksetzen',\n },\n shortcut: {\n shortcuts: 'Tastenkürzel',\n close: 'Schließen',\n textFormatting: 'Textformatierung',\n action: 'Aktion',\n paragraphFormatting: 'Absatzformatierung',\n documentStyle: 'Dokumentenstil',\n extraKeys: 'Weitere Tasten',\n },\n help: {\n insertParagraph: 'Absatz einfügen',\n undo: 'Letzte Anweisung rückgängig',\n redo: 'Letzte Anweisung wiederholen',\n tab: 'Einzug hinzufügen',\n untab: 'Einzug entfernen',\n bold: 'Schrift Fett',\n italic: 'Schrift Kursiv',\n underline: 'Unterstreichen',\n strikethrough: 'Durchstreichen',\n removeFormat: 'Entfernt Format',\n justifyLeft: 'Linksbündig',\n justifyCenter: 'Mittig',\n justifyRight: 'Rechtsbündig',\n justifyFull: 'Blocksatz',\n insertUnorderedList: 'Unnummerierte Liste',\n insertOrderedList: 'Nummerierte Liste',\n outdent: 'Aktuellen Absatz ausrücken',\n indent: 'Aktuellen Absatz einrücken',\n formatPara: 'Formatiert aktuellen Block als Absatz (P-Tag)',\n formatH1: 'Formatiert aktuellen Block als H1',\n formatH2: 'Formatiert aktuellen Block als H2',\n formatH3: 'Formatiert aktuellen Block als H3',\n formatH4: 'Formatiert aktuellen Block als H4',\n formatH5: 'Formatiert aktuellen Block als H5',\n formatH6: 'Formatiert aktuellen Block als H6',\n insertHorizontalRule: 'Fügt eine horizontale Linie ein',\n 'linkDialog.show': 'Zeigt den Linkdialog',\n },\n history: {\n undo: 'Rückgängig',\n redo: 'Wiederholen',\n },\n specialChar: {\n specialChar: 'Sonderzeichen',\n select: 'Zeichen auswählen',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","normal","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.min.js new file mode 100644 index 0000000..29a070b --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"de-DE":{font:{bold:"Fett",italic:"Kursiv",underline:"Unterstrichen",clear:"Zurücksetzen",height:"Zeilenhöhe",name:"Schriftart",strikethrough:"Durchgestrichen",subscript:"Tiefgestellt",superscript:"Hochgestellt",size:"Schriftgröße"},image:{image:"Bild",insert:"Bild einfügen",resizeFull:"Originalgröße",resizeHalf:"1/2 Größe",resizeQuarter:"1/4 Größe",floatLeft:"Linksbündig",floatRight:"Rechtsbündig",floatNone:"Kein Textfluss",shapeRounded:"Abgerundete Ecken",shapeCircle:"Kreisförmig",shapeThumbnail:'"Vorschaubild"',shapeNone:"Kein Rahmen",dragImageHere:"Bild hierher ziehen",dropImage:"Bild oder Text nehmen",selectFromFiles:"Datei auswählen",maximumFileSize:"Maximale Dateigröße",maximumFileSizeError:"Maximale Dateigröße überschritten",url:"Bild URL",remove:"Bild entfernen",original:"Original"},video:{video:"Video",videoLink:"Videolink",insert:"Video einfügen",url:"Video URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)"},link:{link:"Link",insert:"Link einfügen",unlink:"Link entfernen",edit:"Bearbeiten",textToDisplay:"Anzeigetext",url:"Link URL",openInNewWindow:"In neuem Fenster öffnen",useProtocol:"Standardprotokoll verwenden"},table:{table:"Tabelle",addRowAbove:"+ Zeile oberhalb",addRowBelow:"+ Zeile unterhalb",addColLeft:"+ Spalte links",addColRight:"+ Spalte rechts",delRow:"Zeile löschen",delCol:"Spalte löschen",delTable:"Tabelle löschen"},hr:{insert:"Horizontale Linie einfügen"},style:{style:"Stil",normal:"Normal",p:"Normal",blockquote:"Zitat",pre:"Quellcode",h1:"Überschrift 1",h2:"Überschrift 2",h3:"Überschrift 3",h4:"Überschrift 4",h5:"Überschrift 5",h6:"Überschrift 6"},lists:{unordered:"Aufzählung",ordered:"Nummerierung"},options:{help:"Hilfe",fullscreen:"Vollbild",codeview:"Quellcode anzeigen"},paragraph:{paragraph:"Absatz",outdent:"Einzug verkleinern",indent:"Einzug vergrößern",left:"Links ausrichten",center:"Zentriert ausrichten",right:"Rechts ausrichten",justify:"Blocksatz"},color:{recent:"Letzte Farbe",more:"Weitere Farben",background:"Hintergrundfarbe",foreground:"Schriftfarbe",transparent:"Transparenz",setTransparent:"Transparenz setzen",reset:"Zurücksetzen",resetToDefault:"Auf Standard zurücksetzen"},shortcut:{shortcuts:"Tastenkürzel",close:"Schließen",textFormatting:"Textformatierung",action:"Aktion",paragraphFormatting:"Absatzformatierung",documentStyle:"Dokumentenstil",extraKeys:"Weitere Tasten"},help:{insertParagraph:"Absatz einfügen",undo:"Letzte Anweisung rückgängig",redo:"Letzte Anweisung wiederholen",tab:"Einzug hinzufügen",untab:"Einzug entfernen",bold:"Schrift Fett",italic:"Schrift Kursiv",underline:"Unterstreichen",strikethrough:"Durchstreichen",removeFormat:"Entfernt Format",justifyLeft:"Linksbündig",justifyCenter:"Mittig",justifyRight:"Rechtsbündig",justifyFull:"Blocksatz",insertUnorderedList:"Unnummerierte Liste",insertOrderedList:"Nummerierte Liste",outdent:"Aktuellen Absatz ausrücken",indent:"Aktuellen Absatz einrücken",formatPara:"Formatiert aktuellen Block als Absatz (P-Tag)",formatH1:"Formatiert aktuellen Block als H1",formatH2:"Formatiert aktuellen Block als H2",formatH3:"Formatiert aktuellen Block als H3",formatH4:"Formatiert aktuellen Block als H4",formatH5:"Formatiert aktuellen Block als H5",formatH6:"Formatiert aktuellen Block als H6",insertHorizontalRule:"Fügt eine horizontale Linie ein","linkDialog.show":"Zeigt den Linkdialog"},history:{undo:"Rückgängig",redo:"Wiederholen"},specialChar:{specialChar:"Sonderzeichen",select:"Zeichen auswählen"}}}),{};var e})); +//# sourceMappingURL=summernote-de-DE.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.min.js.map new file mode 100644 index 0000000..efdb5bd --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-de-DE.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-de-DE.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA4JPC,QA3JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,OACNC,OAAQ,SACRC,UAAW,gBACXC,MAAO,eACPC,OAAQ,aACRC,KAAM,aACNC,cAAe,kBACfC,UAAW,eACXC,YAAa,eACbC,KAAM,gBAERC,MAAO,CACLA,MAAO,OACPC,OAAQ,gBACRC,WAAY,gBACZC,WAAY,YACZC,cAAe,YACfC,UAAW,cACXC,WAAY,eACZC,UAAW,iBACXC,aAAc,oBACdC,YAAa,cACbC,eAAgB,iBAChBC,UAAW,cACXC,cAAe,sBACfC,UAAW,wBACXC,gBAAiB,kBACjBC,gBAAiB,sBACjBC,qBAAsB,oCACtBC,IAAK,WACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,YACXpB,OAAQ,iBACRgB,IAAK,YACLK,UAAW,6DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,gBACRuB,OAAQ,iBACRC,KAAM,aACNC,cAAe,cACfT,IAAK,WACLU,gBAAiB,0BACjBC,YAAa,+BAEfC,MAAO,CACLA,MAAO,UACPC,YAAa,mBACbC,YAAa,oBACbC,WAAY,iBACZC,YAAa,kBACbC,OAAQ,gBACRC,OAAQ,iBACRC,SAAU,mBAEZC,GAAI,CACFpC,OAAQ,8BAEVqC,MAAO,CACLA,MAAO,OACPC,OAAQ,SACRC,EAAG,SACHC,WAAY,QACZC,IAAK,YACLC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,iBAENC,MAAO,CACLC,UAAW,aACXC,QAAS,gBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,WACZC,SAAU,sBAEZC,UAAW,CACTA,UAAW,SACXC,QAAS,qBACTC,OAAQ,oBACRC,KAAM,mBACNC,OAAQ,uBACRC,MAAO,oBACPC,QAAS,aAEXC,MAAO,CACLC,OAAQ,eACRC,KAAM,iBACNC,WAAY,mBACZC,WAAY,eACZC,YAAa,cACbC,eAAgB,qBAChBC,MAAO,eACPC,eAAgB,6BAElBC,SAAU,CACRC,UAAW,eACXC,MAAO,YACPC,eAAgB,mBAChBC,OAAQ,SACRC,oBAAqB,qBACrBC,cAAe,iBACfC,UAAW,kBAEb1B,KAAM,CACJ2B,gBAAiB,kBACjBC,KAAM,8BACNC,KAAM,+BACNC,IAAK,oBACLC,MAAO,mBACP9F,KAAM,eACNC,OAAQ,iBACRC,UAAW,iBACXI,cAAe,iBACfyF,aAAc,kBACdC,YAAa,cACbC,cAAe,SACfC,aAAc,eACdC,YAAa,YACbC,oBAAqB,sBACrBC,kBAAmB,oBACnBlC,QAAS,6BACTC,OAAQ,6BACRkC,WAAY,gDACZC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,SAAU,oCACVC,qBAAsB,kCACtB,kBAAmB,wBAErBC,QAAS,CACPnB,KAAM,aACNC,KAAM,eAERmB,YAAa,CACXA,YAAa,gBACbC,OAAQ,wB,GD9IhB,ICVUtH","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-de-DE.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'de-DE': {\n font: {\n bold: 'Fett',\n italic: 'Kursiv',\n underline: 'Unterstrichen',\n clear: 'Zurücksetzen',\n height: 'Zeilenhöhe',\n name: 'Schriftart',\n strikethrough: 'Durchgestrichen',\n subscript: 'Tiefgestellt',\n superscript: 'Hochgestellt',\n size: 'Schriftgröße',\n },\n image: {\n image: 'Bild',\n insert: 'Bild einfügen',\n resizeFull: 'Originalgröße',\n resizeHalf: '1/2 Größe',\n resizeQuarter: '1/4 Größe',\n floatLeft: 'Linksbündig',\n floatRight: 'Rechtsbündig',\n floatNone: 'Kein Textfluss',\n shapeRounded: 'Abgerundete Ecken',\n shapeCircle: 'Kreisförmig',\n shapeThumbnail: '\"Vorschaubild\"',\n shapeNone: 'Kein Rahmen',\n dragImageHere: 'Bild hierher ziehen',\n dropImage: 'Bild oder Text nehmen',\n selectFromFiles: 'Datei auswählen',\n maximumFileSize: 'Maximale Dateigröße',\n maximumFileSizeError: 'Maximale Dateigröße überschritten',\n url: 'Bild URL',\n remove: 'Bild entfernen',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Videolink',\n insert: 'Video einfügen',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link einfügen',\n unlink: 'Link entfernen',\n edit: 'Bearbeiten',\n textToDisplay: 'Anzeigetext',\n url: 'Link URL',\n openInNewWindow: 'In neuem Fenster öffnen',\n useProtocol: 'Standardprotokoll verwenden',\n },\n table: {\n table: 'Tabelle',\n addRowAbove: '+ Zeile oberhalb',\n addRowBelow: '+ Zeile unterhalb',\n addColLeft: '+ Spalte links',\n addColRight: '+ Spalte rechts',\n delRow: 'Zeile löschen',\n delCol: 'Spalte löschen',\n delTable: 'Tabelle löschen',\n },\n hr: {\n insert: 'Horizontale Linie einfügen',\n },\n style: {\n style: 'Stil',\n normal: 'Normal',\n p: 'Normal',\n blockquote: 'Zitat',\n pre: 'Quellcode',\n h1: 'Überschrift 1',\n h2: 'Überschrift 2',\n h3: 'Überschrift 3',\n h4: 'Überschrift 4',\n h5: 'Überschrift 5',\n h6: 'Überschrift 6',\n },\n lists: {\n unordered: 'Aufzählung',\n ordered: 'Nummerierung',\n },\n options: {\n help: 'Hilfe',\n fullscreen: 'Vollbild',\n codeview: 'Quellcode anzeigen',\n },\n paragraph: {\n paragraph: 'Absatz',\n outdent: 'Einzug verkleinern',\n indent: 'Einzug vergrößern',\n left: 'Links ausrichten',\n center: 'Zentriert ausrichten',\n right: 'Rechts ausrichten',\n justify: 'Blocksatz',\n },\n color: {\n recent: 'Letzte Farbe',\n more: 'Weitere Farben',\n background: 'Hintergrundfarbe',\n foreground: 'Schriftfarbe',\n transparent: 'Transparenz',\n setTransparent: 'Transparenz setzen',\n reset: 'Zurücksetzen',\n resetToDefault: 'Auf Standard zurücksetzen',\n },\n shortcut: {\n shortcuts: 'Tastenkürzel',\n close: 'Schließen',\n textFormatting: 'Textformatierung',\n action: 'Aktion',\n paragraphFormatting: 'Absatzformatierung',\n documentStyle: 'Dokumentenstil',\n extraKeys: 'Weitere Tasten',\n },\n help: {\n insertParagraph: 'Absatz einfügen',\n undo: 'Letzte Anweisung rückgängig',\n redo: 'Letzte Anweisung wiederholen',\n tab: 'Einzug hinzufügen',\n untab: 'Einzug entfernen',\n bold: 'Schrift Fett',\n italic: 'Schrift Kursiv',\n underline: 'Unterstreichen',\n strikethrough: 'Durchstreichen',\n removeFormat: 'Entfernt Format',\n justifyLeft: 'Linksbündig',\n justifyCenter: 'Mittig',\n justifyRight: 'Rechtsbündig',\n justifyFull: 'Blocksatz',\n insertUnorderedList: 'Unnummerierte Liste',\n insertOrderedList: 'Nummerierte Liste',\n outdent: 'Aktuellen Absatz ausrücken',\n indent: 'Aktuellen Absatz einrücken',\n formatPara: 'Formatiert aktuellen Block als Absatz (P-Tag)',\n formatH1: 'Formatiert aktuellen Block als H1',\n formatH2: 'Formatiert aktuellen Block als H2',\n formatH3: 'Formatiert aktuellen Block als H3',\n formatH4: 'Formatiert aktuellen Block als H4',\n formatH5: 'Formatiert aktuellen Block als H5',\n formatH6: 'Formatiert aktuellen Block als H6',\n insertHorizontalRule: 'Fügt eine horizontale Linie ein',\n 'linkDialog.show': 'Zeigt den Linkdialog',\n },\n history: {\n undo: 'Rückgängig',\n redo: 'Wiederholen',\n },\n specialChar: {\n specialChar: 'Sonderzeichen',\n select: 'Zeichen auswählen',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","normal","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.js b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.js new file mode 100644 index 0000000..3f173f7 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.js @@ -0,0 +1,192 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'el-GR': { + font: { + bold: 'Έντονα', + italic: 'Πλάγια', + underline: 'Υπογραμμισμένα', + clear: 'Καθαρισμός', + height: 'Ύψος', + name: 'Γραμματοσειρά', + strikethrough: 'Διεγραμμένα', + subscript: 'Δείκτης', + superscript: 'Εκθέτης', + size: 'Μέγεθος', + sizeunit: 'Μονάδα μεγέθους' + }, + image: { + image: 'Εικόνα', + insert: 'Εισαγωγή', + resizeFull: 'Πλήρες μέγεθος', + resizeHalf: 'Μισό μέγεθος', + resizeQuarter: '1/4 μέγεθος', + resizeNone: 'Αρχικό μέγεθος', + floatLeft: 'Μετατόπιση αριστερά', + floatRight: 'Μετατόπιση δεξιά', + floatNone: 'Χωρίς μετατόπιση', + shapeRounded: 'Σχήμα: Στρογγυλεμένο', + shapeCircle: 'Σχήμα: Κύκλος', + shapeThumbnail: 'Σχήμα: Μικρογραφία', + shapeNone: 'Σχήμα: Κανένα', + dragImageHere: 'Σύρτε την εικόνα εδώ', + dropImage: 'Αφήστε την εικόνα', + selectFromFiles: 'Επιλογή από αρχεία', + maximumFileSize: 'Μέγιστο μέγεθος αρχείου', + maximumFileSizeError: 'Το μέγεθος είναι μεγαλύτερο από το μέγιστο επιτρεπτό.', + url: 'URL', + remove: 'Αφαίρεση', + original: 'Αρχικό' + }, + link: { + link: 'Σύνδεσμος', + insert: 'Εισαγωγή συνδέσμου', + unlink: 'Αφαίρεση συνδέσμου', + edit: 'Επεξεργασία συνδέσμου', + textToDisplay: 'Κείμενο συνδέσμου', + url: 'Σε ποιo URL πρέπει να πηγαίνει αυτός ο σύνδεσμος;', + openInNewWindow: 'Άνοιγμα σε νέο παράθυρο', + useProtocol: 'Χρήση προεπιλεγμένου πρωτοκόλλου' + }, + video: { + video: 'Βίντεο', + videoLink: 'Σύνδεσμος Βίντεο', + insert: 'Εισαγωγή', + url: 'URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ή Youku)' + }, + table: { + table: 'Πίνακας', + addRowAbove: 'Προσθήκη γραμμής πάνω', + addRowBelow: 'Προσθήκη γραμμής κάτω', + addColLeft: 'Προσθήκη στήλης αριστερά', + addColRight: 'Προσθήκη στήλης δεξία', + delRow: 'Διαγραφή γραμμής', + delCol: 'Διαγραφή στήλης', + delTable: 'Διαγραφή πίνακα' + }, + hr: { + insert: 'Εισαγωγή οριζόντιας γραμμής' + }, + style: { + style: 'Στυλ', + normal: 'Κανονικό', + blockquote: 'Παράθεση', + pre: 'Ως έχει', + h1: 'Κεφαλίδα 1', + h2: 'Κεφαλίδα 2', + h3: 'Κεφαλίδα 3', + h4: 'Κεφαλίδα 4', + h5: 'Κεφαλίδα 5', + h6: 'Κεφαλίδα 6' + }, + lists: { + unordered: 'Αταξινόμητη λίστα', + ordered: 'Ταξινομημένη λίστα' + }, + options: { + help: 'Βοήθεια', + fullscreen: 'Πλήρης οθόνη', + codeview: 'Προβολή HTML' + }, + paragraph: { + paragraph: 'Παράγραφος', + outdent: 'Μείωση εσοχής', + indent: 'Άυξηση εσοχής', + left: 'Αριστερή στοίχιση', + center: 'Στοίχιση στο κέντρο', + right: 'Δεξιά στοίχιση', + justify: 'Πλήρης στοίχιση' + }, + color: { + recent: 'Πρόσφατη επιλογή', + more: 'Περισσότερα', + background: 'Υπόβαθρο', + foreground: 'Μπροστά', + transparent: 'Διαφανές', + setTransparent: 'Επιλογή διαφάνειας', + reset: 'Επαναφορά', + resetToDefault: 'Επαναφορά στις προκαθορισμένες τιμές', + cpSelect: 'Επιλογή' + }, + shortcut: { + shortcuts: 'Συντομεύσεις', + close: 'Κλείσιμο', + textFormatting: 'Διαμόρφωση κειμένου', + action: 'Ενέργεια', + paragraphFormatting: 'Διαμόρφωση παραγράφου', + documentStyle: 'Στυλ κειμένου', + extraKeys: 'Επιπλέον συντομεύσεις' + }, + help: { + 'escape': 'Έξοδος', + 'insertParagraph': 'Εισαγωγή παραγράφου', + 'undo': 'Αναιρεί την προηγούμενη εντολή', + 'redo': 'Επαναλαμβάνει την προηγούμενη εντολή', + 'tab': 'Εσοχή', + 'untab': 'Αναίρεση εσοχής', + 'bold': 'Ορισμός έντονου στυλ', + 'italic': 'Ορισμός πλάγιου στυλ', + 'underline': 'Ορισμός υπογεγραμμένου στυλ', + 'strikethrough': 'Ορισμός διεγραμμένου στυλ', + 'removeFormat': 'Αφαίρεση στυλ', + 'justifyLeft': 'Ορισμός αριστερής στοίχισης', + 'justifyCenter': 'Ορισμός κεντρικής στοίχισης', + 'justifyRight': 'Ορισμός δεξιάς στοίχισης', + 'justifyFull': 'Ορισμός πλήρους στοίχισης', + 'insertUnorderedList': 'Ορισμός μη-ταξινομημένης λίστας', + 'insertOrderedList': 'Ορισμός ταξινομημένης λίστας', + 'outdent': 'Προεξοχή παραγράφου', + 'indent': 'Εσοχή παραγράφου', + 'formatPara': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε παράγραφο (P tag)', + 'formatH1': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H1', + 'formatH2': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H2', + 'formatH3': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H3', + 'formatH4': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H4', + 'formatH5': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H5', + 'formatH6': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H6', + 'insertHorizontalRule': 'Εισαγωγή οριζόντιας γραμμής', + 'linkDialog.show': 'Εμφάνιση διαλόγου συνδέσμου' + }, + history: { + undo: 'Αναίρεση', + redo: 'Επαναληψη' + }, + specialChar: { + specialChar: 'ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ', + select: 'Επιλέξτε ειδικούς χαρακτήρες' + }, + output: { + noSelection: 'Δεν έγινε επιλογή!' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-el-GR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.js.map new file mode 100644 index 0000000..24ab572 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-el-GR.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-el-GR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'el-GR': {\n font: {\n bold: 'Έντονα',\n italic: 'Πλάγια',\n underline: 'Υπογραμμισμένα',\n clear: 'Καθαρισμός',\n height: 'Ύψος',\n name: 'Γραμματοσειρά',\n strikethrough: 'Διεγραμμένα',\n subscript: 'Δείκτης',\n superscript: 'Εκθέτης',\n size: 'Μέγεθος',\n sizeunit: 'Μονάδα μεγέθους',\n },\n image: {\n image: 'Εικόνα',\n insert: 'Εισαγωγή',\n resizeFull: 'Πλήρες μέγεθος',\n resizeHalf: 'Μισό μέγεθος',\n resizeQuarter: '1/4 μέγεθος',\n resizeNone: 'Αρχικό μέγεθος',\n floatLeft: 'Μετατόπιση αριστερά',\n floatRight: 'Μετατόπιση δεξιά',\n floatNone: 'Χωρίς μετατόπιση',\n shapeRounded: 'Σχήμα: Στρογγυλεμένο',\n shapeCircle: 'Σχήμα: Κύκλος',\n shapeThumbnail: 'Σχήμα: Μικρογραφία',\n shapeNone: 'Σχήμα: Κανένα',\n dragImageHere: 'Σύρτε την εικόνα εδώ',\n dropImage: 'Αφήστε την εικόνα',\n selectFromFiles: 'Επιλογή από αρχεία',\n maximumFileSize: 'Μέγιστο μέγεθος αρχείου',\n maximumFileSizeError: 'Το μέγεθος είναι μεγαλύτερο από το μέγιστο επιτρεπτό.',\n url: 'URL',\n remove: 'Αφαίρεση',\n original: 'Αρχικό',\n },\n link: {\n link: 'Σύνδεσμος',\n insert: 'Εισαγωγή συνδέσμου',\n unlink: 'Αφαίρεση συνδέσμου',\n edit: 'Επεξεργασία συνδέσμου',\n textToDisplay: 'Κείμενο συνδέσμου',\n url: 'Σε ποιo URL πρέπει να πηγαίνει αυτός ο σύνδεσμος;',\n openInNewWindow: 'Άνοιγμα σε νέο παράθυρο',\n useProtocol: 'Χρήση προεπιλεγμένου πρωτοκόλλου',\n },\n video: {\n video: 'Βίντεο',\n videoLink: 'Σύνδεσμος Βίντεο',\n insert: 'Εισαγωγή',\n url: 'URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ή Youku)',\n },\n table: {\n table: 'Πίνακας',\n addRowAbove: 'Προσθήκη γραμμής πάνω',\n addRowBelow: 'Προσθήκη γραμμής κάτω',\n addColLeft: 'Προσθήκη στήλης αριστερά',\n addColRight: 'Προσθήκη στήλης δεξία',\n delRow: 'Διαγραφή γραμμής',\n delCol: 'Διαγραφή στήλης',\n delTable: 'Διαγραφή πίνακα',\n },\n hr: {\n insert: 'Εισαγωγή οριζόντιας γραμμής',\n },\n style: {\n style: 'Στυλ',\n normal: 'Κανονικό',\n blockquote: 'Παράθεση',\n pre: 'Ως έχει',\n h1: 'Κεφαλίδα 1',\n h2: 'Κεφαλίδα 2',\n h3: 'Κεφαλίδα 3',\n h4: 'Κεφαλίδα 4',\n h5: 'Κεφαλίδα 5',\n h6: 'Κεφαλίδα 6',\n },\n lists: {\n unordered: 'Αταξινόμητη λίστα',\n ordered: 'Ταξινομημένη λίστα',\n },\n options: {\n help: 'Βοήθεια',\n fullscreen: 'Πλήρης οθόνη',\n codeview: 'Προβολή HTML',\n },\n paragraph: {\n paragraph: 'Παράγραφος',\n outdent: 'Μείωση εσοχής',\n indent: 'Άυξηση εσοχής',\n left: 'Αριστερή στοίχιση',\n center: 'Στοίχιση στο κέντρο',\n right: 'Δεξιά στοίχιση',\n justify: 'Πλήρης στοίχιση',\n },\n color: {\n recent: 'Πρόσφατη επιλογή',\n more: 'Περισσότερα',\n background: 'Υπόβαθρο',\n foreground: 'Μπροστά',\n transparent: 'Διαφανές',\n setTransparent: 'Επιλογή διαφάνειας',\n reset: 'Επαναφορά',\n resetToDefault: 'Επαναφορά στις προκαθορισμένες τιμές',\n cpSelect: 'Επιλογή',\n },\n shortcut: {\n shortcuts: 'Συντομεύσεις',\n close: 'Κλείσιμο',\n textFormatting: 'Διαμόρφωση κειμένου',\n action: 'Ενέργεια',\n paragraphFormatting: 'Διαμόρφωση παραγράφου',\n documentStyle: 'Στυλ κειμένου',\n extraKeys: 'Επιπλέον συντομεύσεις',\n },\n help: {\n 'escape': 'Έξοδος',\n 'insertParagraph': 'Εισαγωγή παραγράφου',\n 'undo': 'Αναιρεί την προηγούμενη εντολή',\n 'redo': 'Επαναλαμβάνει την προηγούμενη εντολή',\n 'tab': 'Εσοχή',\n 'untab': 'Αναίρεση εσοχής',\n 'bold': 'Ορισμός έντονου στυλ',\n 'italic': 'Ορισμός πλάγιου στυλ',\n 'underline': 'Ορισμός υπογεγραμμένου στυλ',\n 'strikethrough': 'Ορισμός διεγραμμένου στυλ',\n 'removeFormat': 'Αφαίρεση στυλ',\n 'justifyLeft': 'Ορισμός αριστερής στοίχισης',\n 'justifyCenter': 'Ορισμός κεντρικής στοίχισης',\n 'justifyRight': 'Ορισμός δεξιάς στοίχισης',\n 'justifyFull': 'Ορισμός πλήρους στοίχισης',\n 'insertUnorderedList': 'Ορισμός μη-ταξινομημένης λίστας',\n 'insertOrderedList': 'Ορισμός ταξινομημένης λίστας',\n 'outdent': 'Προεξοχή παραγράφου',\n 'indent': 'Εσοχή παραγράφου',\n 'formatPara': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε παράγραφο (P tag)',\n 'formatH1': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H1',\n 'formatH2': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H2',\n 'formatH3': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H3',\n 'formatH4': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H4',\n 'formatH5': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H5',\n 'formatH6': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H6',\n 'insertHorizontalRule': 'Εισαγωγή οριζόντιας γραμμής',\n 'linkDialog.show': 'Εμφάνιση διαλόγου συνδέσμου',\n },\n history: {\n undo: 'Αναίρεση',\n redo: 'Επαναληψη',\n },\n specialChar: {\n specialChar: 'ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ',\n select: 'Επιλέξτε ειδικούς χαρακτήρες',\n },\n output: {\n noSelection: 'Δεν έγινε επιλογή!',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","video","videoLink","providers","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","normal","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.min.js new file mode 100644 index 0000000..0839d66 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"el-GR":{font:{bold:"Έντονα",italic:"Πλάγια",underline:"Υπογραμμισμένα",clear:"Καθαρισμός",height:"Ύψος",name:"Γραμματοσειρά",strikethrough:"Διεγραμμένα",subscript:"Δείκτης",superscript:"Εκθέτης",size:"Μέγεθος",sizeunit:"Μονάδα μεγέθους"},image:{image:"Εικόνα",insert:"Εισαγωγή",resizeFull:"Πλήρες μέγεθος",resizeHalf:"Μισό μέγεθος",resizeQuarter:"1/4 μέγεθος",resizeNone:"Αρχικό μέγεθος",floatLeft:"Μετατόπιση αριστερά",floatRight:"Μετατόπιση δεξιά",floatNone:"Χωρίς μετατόπιση",shapeRounded:"Σχήμα: Στρογγυλεμένο",shapeCircle:"Σχήμα: Κύκλος",shapeThumbnail:"Σχήμα: Μικρογραφία",shapeNone:"Σχήμα: Κανένα",dragImageHere:"Σύρτε την εικόνα εδώ",dropImage:"Αφήστε την εικόνα",selectFromFiles:"Επιλογή από αρχεία",maximumFileSize:"Μέγιστο μέγεθος αρχείου",maximumFileSizeError:"Το μέγεθος είναι μεγαλύτερο από το μέγιστο επιτρεπτό.",url:"URL",remove:"Αφαίρεση",original:"Αρχικό"},link:{link:"Σύνδεσμος",insert:"Εισαγωγή συνδέσμου",unlink:"Αφαίρεση συνδέσμου",edit:"Επεξεργασία συνδέσμου",textToDisplay:"Κείμενο συνδέσμου",url:"Σε ποιo URL πρέπει να πηγαίνει αυτός ο σύνδεσμος;",openInNewWindow:"Άνοιγμα σε νέο παράθυρο",useProtocol:"Χρήση προεπιλεγμένου πρωτοκόλλου"},video:{video:"Βίντεο",videoLink:"Σύνδεσμος Βίντεο",insert:"Εισαγωγή",url:"URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ή Youku)"},table:{table:"Πίνακας",addRowAbove:"Προσθήκη γραμμής πάνω",addRowBelow:"Προσθήκη γραμμής κάτω",addColLeft:"Προσθήκη στήλης αριστερά",addColRight:"Προσθήκη στήλης δεξία",delRow:"Διαγραφή γραμμής",delCol:"Διαγραφή στήλης",delTable:"Διαγραφή πίνακα"},hr:{insert:"Εισαγωγή οριζόντιας γραμμής"},style:{style:"Στυλ",normal:"Κανονικό",blockquote:"Παράθεση",pre:"Ως έχει",h1:"Κεφαλίδα 1",h2:"Κεφαλίδα 2",h3:"Κεφαλίδα 3",h4:"Κεφαλίδα 4",h5:"Κεφαλίδα 5",h6:"Κεφαλίδα 6"},lists:{unordered:"Αταξινόμητη λίστα",ordered:"Ταξινομημένη λίστα"},options:{help:"Βοήθεια",fullscreen:"Πλήρης οθόνη",codeview:"Προβολή HTML"},paragraph:{paragraph:"Παράγραφος",outdent:"Μείωση εσοχής",indent:"Άυξηση εσοχής",left:"Αριστερή στοίχιση",center:"Στοίχιση στο κέντρο",right:"Δεξιά στοίχιση",justify:"Πλήρης στοίχιση"},color:{recent:"Πρόσφατη επιλογή",more:"Περισσότερα",background:"Υπόβαθρο",foreground:"Μπροστά",transparent:"Διαφανές",setTransparent:"Επιλογή διαφάνειας",reset:"Επαναφορά",resetToDefault:"Επαναφορά στις προκαθορισμένες τιμές",cpSelect:"Επιλογή"},shortcut:{shortcuts:"Συντομεύσεις",close:"Κλείσιμο",textFormatting:"Διαμόρφωση κειμένου",action:"Ενέργεια",paragraphFormatting:"Διαμόρφωση παραγράφου",documentStyle:"Στυλ κειμένου",extraKeys:"Επιπλέον συντομεύσεις"},help:{escape:"Έξοδος",insertParagraph:"Εισαγωγή παραγράφου",undo:"Αναιρεί την προηγούμενη εντολή",redo:"Επαναλαμβάνει την προηγούμενη εντολή",tab:"Εσοχή",untab:"Αναίρεση εσοχής",bold:"Ορισμός έντονου στυλ",italic:"Ορισμός πλάγιου στυλ",underline:"Ορισμός υπογεγραμμένου στυλ",strikethrough:"Ορισμός διεγραμμένου στυλ",removeFormat:"Αφαίρεση στυλ",justifyLeft:"Ορισμός αριστερής στοίχισης",justifyCenter:"Ορισμός κεντρικής στοίχισης",justifyRight:"Ορισμός δεξιάς στοίχισης",justifyFull:"Ορισμός πλήρους στοίχισης",insertUnorderedList:"Ορισμός μη-ταξινομημένης λίστας",insertOrderedList:"Ορισμός ταξινομημένης λίστας",outdent:"Προεξοχή παραγράφου",indent:"Εσοχή παραγράφου",formatPara:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε παράγραφο (P tag)",formatH1:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H1",formatH2:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H2",formatH3:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H3",formatH4:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H4",formatH5:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H5",formatH6:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H6",insertHorizontalRule:"Εισαγωγή οριζόντιας γραμμής","linkDialog.show":"Εμφάνιση διαλόγου συνδέσμου"},history:{undo:"Αναίρεση",redo:"Επαναληψη"},specialChar:{specialChar:"ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ",select:"Επιλέξτε ειδικούς χαρακτήρες"},output:{noSelection:"Δεν έγινε επιλογή!"}}}),{};var e})); +//# sourceMappingURL=summernote-el-GR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.min.js.map new file mode 100644 index 0000000..1c5241c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-el-GR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-el-GR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EAkKPC,QAjKCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,SACNC,OAAQ,SACRC,UAAW,iBACXC,MAAO,aACPC,OAAQ,OACRC,KAAM,gBACNC,cAAe,cACfC,UAAW,UACXC,YAAa,UACbC,KAAM,UACNC,SAAU,mBAEZC,MAAO,CACLA,MAAO,SACPC,OAAQ,WACRC,WAAY,iBACZC,WAAY,eACZC,cAAe,cACfC,WAAY,iBACZC,UAAW,sBACXC,WAAY,mBACZC,UAAW,mBACXC,aAAc,uBACdC,YAAa,gBACbC,eAAgB,qBAChBC,UAAW,gBACXC,cAAe,uBACfC,UAAW,oBACXC,gBAAiB,qBACjBC,gBAAiB,0BACjBC,qBAAsB,wDACtBC,IAAK,MACLC,OAAQ,WACRC,SAAU,UAEZC,KAAM,CACJA,KAAM,YACNpB,OAAQ,qBACRqB,OAAQ,qBACRC,KAAM,wBACNC,cAAe,oBACfN,IAAK,oDACLO,gBAAiB,0BACjBC,YAAa,oCAEfC,MAAO,CACLA,MAAO,SACPC,UAAW,mBACX3B,OAAQ,WACRiB,IAAK,MACLW,UAAW,0DAEbC,MAAO,CACLA,MAAO,UACPC,YAAa,wBACbC,YAAa,wBACbC,WAAY,2BACZC,YAAa,wBACbC,OAAQ,mBACRC,OAAQ,kBACRC,SAAU,mBAEZC,GAAI,CACFrC,OAAQ,+BAEVsC,MAAO,CACLA,MAAO,OACPC,OAAQ,WACRC,WAAY,WACZC,IAAK,UACLC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,cAENC,MAAO,CACLC,UAAW,oBACXC,QAAS,sBAEXC,QAAS,CACPC,KAAM,UACNC,WAAY,eACZC,SAAU,gBAEZC,UAAW,CACTA,UAAW,aACXC,QAAS,gBACTC,OAAQ,gBACRC,KAAM,oBACNC,OAAQ,sBACRC,MAAO,iBACPC,QAAS,mBAEXC,MAAO,CACLC,OAAQ,mBACRC,KAAM,cACNC,WAAY,WACZC,WAAY,UACZC,YAAa,WACbC,eAAgB,qBAChBC,MAAO,YACPC,eAAgB,uCAChBC,SAAU,WAEZC,SAAU,CACRC,UAAW,eACXC,MAAO,WACPC,eAAgB,sBAChBC,OAAQ,WACRC,oBAAqB,wBACrBC,cAAe,gBACfC,UAAW,yBAEb3B,KAAM,CACJ,OAAU,SACV,gBAAmB,sBACnB,KAAQ,iCACR,KAAQ,uCACR,IAAO,QACP,MAAS,kBACT,KAAQ,uBACR,OAAU,uBACV,UAAa,8BACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,8BACf,cAAiB,8BACjB,aAAgB,2BAChB,YAAe,4BACf,oBAAuB,kCACvB,kBAAqB,+BACrB,QAAW,sBACX,OAAU,mBACV,WAAc,6DACd,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,qBAAwB,8BACxB,kBAAmB,+BAErB4B,QAAS,CACPC,KAAM,WACNC,KAAM,aAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gCAEVC,OAAQ,CACNC,YAAa,yB,GDpJrB,ICVUxG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-el-GR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'el-GR': {\n font: {\n bold: 'Έντονα',\n italic: 'Πλάγια',\n underline: 'Υπογραμμισμένα',\n clear: 'Καθαρισμός',\n height: 'Ύψος',\n name: 'Γραμματοσειρά',\n strikethrough: 'Διεγραμμένα',\n subscript: 'Δείκτης',\n superscript: 'Εκθέτης',\n size: 'Μέγεθος',\n sizeunit: 'Μονάδα μεγέθους',\n },\n image: {\n image: 'Εικόνα',\n insert: 'Εισαγωγή',\n resizeFull: 'Πλήρες μέγεθος',\n resizeHalf: 'Μισό μέγεθος',\n resizeQuarter: '1/4 μέγεθος',\n resizeNone: 'Αρχικό μέγεθος',\n floatLeft: 'Μετατόπιση αριστερά',\n floatRight: 'Μετατόπιση δεξιά',\n floatNone: 'Χωρίς μετατόπιση',\n shapeRounded: 'Σχήμα: Στρογγυλεμένο',\n shapeCircle: 'Σχήμα: Κύκλος',\n shapeThumbnail: 'Σχήμα: Μικρογραφία',\n shapeNone: 'Σχήμα: Κανένα',\n dragImageHere: 'Σύρτε την εικόνα εδώ',\n dropImage: 'Αφήστε την εικόνα',\n selectFromFiles: 'Επιλογή από αρχεία',\n maximumFileSize: 'Μέγιστο μέγεθος αρχείου',\n maximumFileSizeError: 'Το μέγεθος είναι μεγαλύτερο από το μέγιστο επιτρεπτό.',\n url: 'URL',\n remove: 'Αφαίρεση',\n original: 'Αρχικό',\n },\n link: {\n link: 'Σύνδεσμος',\n insert: 'Εισαγωγή συνδέσμου',\n unlink: 'Αφαίρεση συνδέσμου',\n edit: 'Επεξεργασία συνδέσμου',\n textToDisplay: 'Κείμενο συνδέσμου',\n url: 'Σε ποιo URL πρέπει να πηγαίνει αυτός ο σύνδεσμος;',\n openInNewWindow: 'Άνοιγμα σε νέο παράθυρο',\n useProtocol: 'Χρήση προεπιλεγμένου πρωτοκόλλου',\n },\n video: {\n video: 'Βίντεο',\n videoLink: 'Σύνδεσμος Βίντεο',\n insert: 'Εισαγωγή',\n url: 'URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ή Youku)',\n },\n table: {\n table: 'Πίνακας',\n addRowAbove: 'Προσθήκη γραμμής πάνω',\n addRowBelow: 'Προσθήκη γραμμής κάτω',\n addColLeft: 'Προσθήκη στήλης αριστερά',\n addColRight: 'Προσθήκη στήλης δεξία',\n delRow: 'Διαγραφή γραμμής',\n delCol: 'Διαγραφή στήλης',\n delTable: 'Διαγραφή πίνακα',\n },\n hr: {\n insert: 'Εισαγωγή οριζόντιας γραμμής',\n },\n style: {\n style: 'Στυλ',\n normal: 'Κανονικό',\n blockquote: 'Παράθεση',\n pre: 'Ως έχει',\n h1: 'Κεφαλίδα 1',\n h2: 'Κεφαλίδα 2',\n h3: 'Κεφαλίδα 3',\n h4: 'Κεφαλίδα 4',\n h5: 'Κεφαλίδα 5',\n h6: 'Κεφαλίδα 6',\n },\n lists: {\n unordered: 'Αταξινόμητη λίστα',\n ordered: 'Ταξινομημένη λίστα',\n },\n options: {\n help: 'Βοήθεια',\n fullscreen: 'Πλήρης οθόνη',\n codeview: 'Προβολή HTML',\n },\n paragraph: {\n paragraph: 'Παράγραφος',\n outdent: 'Μείωση εσοχής',\n indent: 'Άυξηση εσοχής',\n left: 'Αριστερή στοίχιση',\n center: 'Στοίχιση στο κέντρο',\n right: 'Δεξιά στοίχιση',\n justify: 'Πλήρης στοίχιση',\n },\n color: {\n recent: 'Πρόσφατη επιλογή',\n more: 'Περισσότερα',\n background: 'Υπόβαθρο',\n foreground: 'Μπροστά',\n transparent: 'Διαφανές',\n setTransparent: 'Επιλογή διαφάνειας',\n reset: 'Επαναφορά',\n resetToDefault: 'Επαναφορά στις προκαθορισμένες τιμές',\n cpSelect: 'Επιλογή',\n },\n shortcut: {\n shortcuts: 'Συντομεύσεις',\n close: 'Κλείσιμο',\n textFormatting: 'Διαμόρφωση κειμένου',\n action: 'Ενέργεια',\n paragraphFormatting: 'Διαμόρφωση παραγράφου',\n documentStyle: 'Στυλ κειμένου',\n extraKeys: 'Επιπλέον συντομεύσεις',\n },\n help: {\n 'escape': 'Έξοδος',\n 'insertParagraph': 'Εισαγωγή παραγράφου',\n 'undo': 'Αναιρεί την προηγούμενη εντολή',\n 'redo': 'Επαναλαμβάνει την προηγούμενη εντολή',\n 'tab': 'Εσοχή',\n 'untab': 'Αναίρεση εσοχής',\n 'bold': 'Ορισμός έντονου στυλ',\n 'italic': 'Ορισμός πλάγιου στυλ',\n 'underline': 'Ορισμός υπογεγραμμένου στυλ',\n 'strikethrough': 'Ορισμός διεγραμμένου στυλ',\n 'removeFormat': 'Αφαίρεση στυλ',\n 'justifyLeft': 'Ορισμός αριστερής στοίχισης',\n 'justifyCenter': 'Ορισμός κεντρικής στοίχισης',\n 'justifyRight': 'Ορισμός δεξιάς στοίχισης',\n 'justifyFull': 'Ορισμός πλήρους στοίχισης',\n 'insertUnorderedList': 'Ορισμός μη-ταξινομημένης λίστας',\n 'insertOrderedList': 'Ορισμός ταξινομημένης λίστας',\n 'outdent': 'Προεξοχή παραγράφου',\n 'indent': 'Εσοχή παραγράφου',\n 'formatPara': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε παράγραφο (P tag)',\n 'formatH1': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H1',\n 'formatH2': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H2',\n 'formatH3': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H3',\n 'formatH4': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H4',\n 'formatH5': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H5',\n 'formatH6': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H6',\n 'insertHorizontalRule': 'Εισαγωγή οριζόντιας γραμμής',\n 'linkDialog.show': 'Εμφάνιση διαλόγου συνδέσμου',\n },\n history: {\n undo: 'Αναίρεση',\n redo: 'Επαναληψη',\n },\n specialChar: {\n specialChar: 'ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ',\n select: 'Επιλέξτε ειδικούς χαρακτήρες',\n },\n output: {\n noSelection: 'Δεν έγινε επιλογή!',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","video","videoLink","providers","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","normal","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-en-US.js b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.js new file mode 100644 index 0000000..9b5977e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.js @@ -0,0 +1,279 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("jQuery")); + else if(typeof define === 'function' && define.amd) + define(["jQuery"], factory); + else { + var a = typeof exports === 'object' ? factory(require("jQuery")) : factory(root["jQuery"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function(__WEBPACK_EXTERNAL_MODULE__1145__) { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ 1145: +/***/ ((module) => { + +module.exports = __WEBPACK_EXTERNAL_MODULE__1145__; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1145); +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); + +(jquery__WEBPACK_IMPORTED_MODULE_0___default().summernote) = (jquery__WEBPACK_IMPORTED_MODULE_0___default().summernote) || { + lang: {} +}; +jquery__WEBPACK_IMPORTED_MODULE_0___default().extend((jquery__WEBPACK_IMPORTED_MODULE_0___default().summernote.lang), { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family', + strikethrough: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Font Size', + sizeunit: 'Font Size Unit' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize full', + resizeHalf: 'Resize half', + resizeQuarter: 'Resize quarter', + resizeNone: 'Original size', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Remove float', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image or text here', + dropImage: 'Drop image or Text', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL', + providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window', + useProtocol: 'Use default protocol' + }, + table: { + table: 'Table', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + p: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Background Color', + foreground: 'Text Color', + transparent: 'Transparent', + setTransparent: 'Set transparent', + reset: 'Reset', + resetToDefault: 'Reset to default', + cpSelect: 'Select' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style', + extraKeys: 'Extra keys' + }, + help: { + 'escape': 'Escape', + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undo the last command', + 'redo': 'Redo the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Undo', + redo: 'Redo' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + }, + output: { + noSelection: 'No Selection Made!' + } + } +}); +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-en-US.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-en-US.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.js.map new file mode 100644 index 0000000..c802f82 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-en-US.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/external umd \"jQuery\"","webpack://summernote/webpack/bootstrap","webpack://summernote/webpack/runtime/compat get default export","webpack://summernote/webpack/runtime/define property getters","webpack://summernote/webpack/runtime/hasOwnProperty shorthand","webpack://summernote/webpack/runtime/make namespace object","webpack://summernote/./src/lang/summernote-en-US.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jQuery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jQuery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jQuery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function(__WEBPACK_EXTERNAL_MODULE__1145__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__1145__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n"],"names":["$","summernote","lang","extend","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-en-US.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.min.js new file mode 100644 index 0000000..1936c40 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("jQuery"));else if("function"==typeof define&&define.amd)define(["jQuery"],t);else{var r="object"==typeof exports?t(require("jQuery")):t(e.jQuery);for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(e){return(()=>{"use strict";var t={1145:t=>{t.exports=e}},r={};function o(e){var a=r[e];if(void 0!==a)return a.exports;var n=r[e]={exports:{}};return t[e](n,n.exports,o),n.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{o.r(a);var e=o(1145),t=o.n(e);t().summernote=t().summernote||{lang:{}},t().extend(t().summernote.lang,{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",clear:"Remove Font Style",height:"Line Height",name:"Font Family",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",size:"Font Size",sizeunit:"Font Size Unit"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize full",resizeHalf:"Resize half",resizeQuarter:"Resize quarter",resizeNone:"Original size",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Remove float",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Drag image or text here",dropImage:"Drop image or Text",selectFromFiles:"Select from files",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Image URL",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL",providers:"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window",useProtocol:"Use default protocol"},table:{table:"Table",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",p:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"Background Color",foreground:"Text Color",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default",cpSelect:"Select"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style",extraKeys:"Extra keys"},help:{escape:"Escape",insertParagraph:"Insert Paragraph",undo:"Undo the last command",redo:"Redo the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Undo",redo:"Redo"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"},output:{noSelection:"No Selection Made!"}}})})(),a})()})); +//# sourceMappingURL=summernote-en-US.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-en-US.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.min.js.map new file mode 100644 index 0000000..8573bfa --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-en-US.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-en-US.min.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/external umd \"jQuery\"","webpack://summernote/webpack/bootstrap","webpack://summernote/webpack/runtime/compat get default export","webpack://summernote/webpack/runtime/define property getters","webpack://summernote/webpack/runtime/hasOwnProperty shorthand","webpack://summernote/webpack/runtime/make namespace object","webpack://summernote/./src/lang/summernote-en-US.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jQuery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jQuery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jQuery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function(__WEBPACK_EXTERNAL_MODULE__1145__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__1145__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n"],"names":["root","factory","exports","module","require","define","amd","a","i","self","__WEBPACK_EXTERNAL_MODULE__1145__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","$","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.js b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.js new file mode 100644 index 0000000..460fa90 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.js @@ -0,0 +1,191 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'es-ES': { + font: { + bold: 'Negrita', + italic: 'Cursiva', + underline: 'Subrayado', + clear: 'Eliminar estilo de letra', + height: 'Altura de línea', + name: 'Tipo de letra', + strikethrough: 'Tachado', + subscript: 'Subíndice', + superscript: 'Superíndice', + size: 'Tamaño de la fuente', + sizeunit: 'Unidad del tamaño de letra' + }, + image: { + image: 'Imagen', + insert: 'Insertar imagen', + resizeFull: 'Redimensionar a tamaño completo', + resizeHalf: 'Redimensionar a la mitad', + resizeQuarter: 'Redimensionar a un cuarto', + resizeNone: 'Tamaño original', + floatLeft: 'Flotar a la izquierda', + floatRight: 'Flotar a la derecha', + floatNone: 'No flotar', + shapeRounded: 'Forma: Redondeado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Miniatura', + shapeNone: 'Forma: Ninguna', + dragImageHere: 'Arrastre una imagen o texto aquí', + dropImage: 'Suelte una imagen o texto', + selectFromFiles: 'Seleccione un fichero', + maximumFileSize: 'Tamaño máximo del fichero', + maximumFileSizeError: 'Superado el tamaño máximo de fichero.', + url: 'URL de la imagen', + remove: 'Eliminar la imagen', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Enlace del vídeo', + insert: 'Insertar un vídeo', + url: 'URL del vídeo', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Enlace', + insert: 'Insertar un enlace', + unlink: 'Quitar el enlace', + edit: 'Editar', + textToDisplay: 'Texto a mostrar', + url: '¿A qué URL lleva este enlace?', + openInNewWindow: 'Abrir en una nueva ventana', + useProtocol: 'Usar el protocolo predefinido' + }, + table: { + table: 'Tabla', + addRowAbove: 'Añadir una fila encima', + addRowBelow: 'Añadir una fila debajo', + addColLeft: 'Añadir una columna a la izquierda', + addColRight: 'Añadir una columna a la derecha', + delRow: 'Borrar la fila', + delCol: 'Borrar la columna', + delTable: 'Borrar la tabla' + }, + hr: { + insert: 'Insertar una línea horizontal' + }, + style: { + style: 'Estilo', + p: 'Normal', + blockquote: 'Cita', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista', + ordered: 'Lista numerada' + }, + options: { + help: 'Ayuda', + fullscreen: 'Pantalla completa', + codeview: 'Ver el código fuente' + }, + paragraph: { + paragraph: 'Párrafo', + outdent: 'Reducir la sangría', + indent: 'Aumentar la sangría', + left: 'Alinear a la izquierda', + center: 'Centrar', + right: 'Alinear a la derecha', + justify: 'Justificar' + }, + color: { + recent: 'Último color', + more: 'Más colores', + background: 'Color de fondo', + foreground: 'Color del texto', + transparent: 'Transparente', + setTransparent: 'Establecer transparente', + reset: 'Restablecer', + resetToDefault: 'Restablecer a los valores predefinidos', + cpSelect: 'Seleccionar' + }, + shortcut: { + shortcuts: 'Atajos de teclado', + close: 'Cerrar', + textFormatting: 'Formato de texto', + action: 'Acción', + paragraphFormatting: 'Formato de párrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Teclas adicionales' + }, + help: { + insertParagraph: 'Insertar un párrafo', + undo: 'Deshacer la última acción', + redo: 'Rehacer la última acción', + tab: 'Tabular', + untab: 'Eliminar tabulación', + bold: 'Establecer estilo negrita', + italic: 'Establecer estilo cursiva', + underline: 'Establecer estilo subrayado', + strikethrough: 'Establecer estilo tachado', + removeFormat: 'Limpiar estilo', + justifyLeft: 'Alinear a la izquierda', + justifyCenter: 'Alinear al centro', + justifyRight: 'Alinear a la derecha', + justifyFull: 'Justificar', + insertUnorderedList: 'Insertar lista', + insertOrderedList: 'Insertar lista numerada', + outdent: 'Reducir sangría del párrafo', + indent: 'Aumentar sangría del párrafo', + formatPara: 'Cambiar el formato del bloque actual a párrafo (etiqueta P)', + formatH1: 'Cambiar el formato del bloque actual a H1', + formatH2: 'Cambiar el formato del bloque actual a H2', + formatH3: 'Cambiar el formato del bloque actual a H3', + formatH4: 'Cambiar el formato del bloque actual a H4', + formatH5: 'Cambiar el formato del bloque actual a H5', + formatH6: 'Cambiar el formato del bloque actual a H6', + insertHorizontalRule: 'Insertar una línea horizontal', + 'linkDialog.show': 'Mostrar el panel de enlaces' + }, + history: { + undo: 'Deshacer', + redo: 'Rehacer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIALES', + select: 'Seleccionar caracteres especiales' + }, + output: { + noSelection: '¡No ha seleccionado nada!' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-es-ES.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.js.map new file mode 100644 index 0000000..b891ce7 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-es-ES.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-es-ES.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'es-ES': {\n font: {\n bold: 'Negrita',\n italic: 'Cursiva',\n underline: 'Subrayado',\n clear: 'Eliminar estilo de letra',\n height: 'Altura de línea',\n name: 'Tipo de letra',\n strikethrough: 'Tachado',\n subscript: 'Subíndice',\n superscript: 'Superíndice',\n size: 'Tamaño de la fuente',\n sizeunit: 'Unidad del tamaño de letra',\n },\n image: {\n image: 'Imagen',\n insert: 'Insertar imagen',\n resizeFull: 'Redimensionar a tamaño completo',\n resizeHalf: 'Redimensionar a la mitad',\n resizeQuarter: 'Redimensionar a un cuarto',\n resizeNone: 'Tamaño original',\n floatLeft: 'Flotar a la izquierda',\n floatRight: 'Flotar a la derecha',\n floatNone: 'No flotar',\n shapeRounded: 'Forma: Redondeado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Miniatura',\n shapeNone: 'Forma: Ninguna',\n dragImageHere: 'Arrastre una imagen o texto aquí',\n dropImage: 'Suelte una imagen o texto',\n selectFromFiles: 'Seleccione un fichero',\n maximumFileSize: 'Tamaño máximo del fichero',\n maximumFileSizeError: 'Superado el tamaño máximo de fichero.',\n url: 'URL de la imagen',\n remove: 'Eliminar la imagen',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Enlace del vídeo',\n insert: 'Insertar un vídeo',\n url: 'URL del vídeo',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)',\n },\n link: {\n link: 'Enlace',\n insert: 'Insertar un enlace',\n unlink: 'Quitar el enlace',\n edit: 'Editar',\n textToDisplay: 'Texto a mostrar',\n url: '¿A qué URL lleva este enlace?',\n openInNewWindow: 'Abrir en una nueva ventana',\n useProtocol: 'Usar el protocolo predefinido',\n },\n table: {\n table: 'Tabla',\n addRowAbove: 'Añadir una fila encima',\n addRowBelow: 'Añadir una fila debajo',\n addColLeft: 'Añadir una columna a la izquierda',\n addColRight: 'Añadir una columna a la derecha',\n delRow: 'Borrar la fila',\n delCol: 'Borrar la columna',\n delTable: 'Borrar la tabla',\n },\n hr: {\n insert: 'Insertar una línea horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Normal',\n blockquote: 'Cita',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista',\n ordered: 'Lista numerada',\n },\n options: {\n help: 'Ayuda',\n fullscreen: 'Pantalla completa',\n codeview: 'Ver el código fuente',\n },\n paragraph: {\n paragraph: 'Párrafo',\n outdent: 'Reducir la sangría',\n indent: 'Aumentar la sangría',\n left: 'Alinear a la izquierda',\n center: 'Centrar',\n right: 'Alinear a la derecha',\n justify: 'Justificar',\n },\n color: {\n recent: 'Último color',\n more: 'Más colores',\n background: 'Color de fondo',\n foreground: 'Color del texto',\n transparent: 'Transparente',\n setTransparent: 'Establecer transparente',\n reset: 'Restablecer',\n resetToDefault: 'Restablecer a los valores predefinidos',\n cpSelect: 'Seleccionar',\n },\n shortcut: {\n shortcuts: 'Atajos de teclado',\n close: 'Cerrar',\n textFormatting: 'Formato de texto',\n action: 'Acción',\n paragraphFormatting: 'Formato de párrafo',\n documentStyle: 'Estilo de documento',\n extraKeys: 'Teclas adicionales',\n },\n help: {\n insertParagraph: 'Insertar un párrafo',\n undo: 'Deshacer la última acción',\n redo: 'Rehacer la última acción',\n tab: 'Tabular',\n untab: 'Eliminar tabulación',\n bold: 'Establecer estilo negrita',\n italic: 'Establecer estilo cursiva',\n underline: 'Establecer estilo subrayado',\n strikethrough: 'Establecer estilo tachado',\n removeFormat: 'Limpiar estilo',\n justifyLeft: 'Alinear a la izquierda',\n justifyCenter: 'Alinear al centro',\n justifyRight: 'Alinear a la derecha',\n justifyFull: 'Justificar',\n insertUnorderedList: 'Insertar lista',\n insertOrderedList: 'Insertar lista numerada',\n outdent: 'Reducir sangría del párrafo',\n indent: 'Aumentar sangría del párrafo',\n formatPara: 'Cambiar el formato del bloque actual a párrafo (etiqueta P)',\n formatH1: 'Cambiar el formato del bloque actual a H1',\n formatH2: 'Cambiar el formato del bloque actual a H2',\n formatH3: 'Cambiar el formato del bloque actual a H3',\n formatH4: 'Cambiar el formato del bloque actual a H4',\n formatH5: 'Cambiar el formato del bloque actual a H5',\n formatH6: 'Cambiar el formato del bloque actual a H6',\n insertHorizontalRule: 'Insertar una línea horizontal',\n 'linkDialog.show': 'Mostrar el panel de enlaces',\n },\n history: {\n undo: 'Deshacer',\n redo: 'Rehacer',\n },\n specialChar: {\n specialChar: 'CARACTERES ESPECIALES',\n select: 'Seleccionar caracteres especiales',\n },\n output: {\n noSelection: '¡No ha seleccionado nada!',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select","output","noSelection","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.min.js new file mode 100644 index 0000000..77f974d --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"es-ES":{font:{bold:"Negrita",italic:"Cursiva",underline:"Subrayado",clear:"Eliminar estilo de letra",height:"Altura de línea",name:"Tipo de letra",strikethrough:"Tachado",subscript:"Subíndice",superscript:"Superíndice",size:"Tamaño de la fuente",sizeunit:"Unidad del tamaño de letra"},image:{image:"Imagen",insert:"Insertar imagen",resizeFull:"Redimensionar a tamaño completo",resizeHalf:"Redimensionar a la mitad",resizeQuarter:"Redimensionar a un cuarto",resizeNone:"Tamaño original",floatLeft:"Flotar a la izquierda",floatRight:"Flotar a la derecha",floatNone:"No flotar",shapeRounded:"Forma: Redondeado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Miniatura",shapeNone:"Forma: Ninguna",dragImageHere:"Arrastre una imagen o texto aquí",dropImage:"Suelte una imagen o texto",selectFromFiles:"Seleccione un fichero",maximumFileSize:"Tamaño máximo del fichero",maximumFileSizeError:"Superado el tamaño máximo de fichero.",url:"URL de la imagen",remove:"Eliminar la imagen",original:"Original"},video:{video:"Vídeo",videoLink:"Enlace del vídeo",insert:"Insertar un vídeo",url:"URL del vídeo",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Enlace",insert:"Insertar un enlace",unlink:"Quitar el enlace",edit:"Editar",textToDisplay:"Texto a mostrar",url:"¿A qué URL lleva este enlace?",openInNewWindow:"Abrir en una nueva ventana",useProtocol:"Usar el protocolo predefinido"},table:{table:"Tabla",addRowAbove:"Añadir una fila encima",addRowBelow:"Añadir una fila debajo",addColLeft:"Añadir una columna a la izquierda",addColRight:"Añadir una columna a la derecha",delRow:"Borrar la fila",delCol:"Borrar la columna",delTable:"Borrar la tabla"},hr:{insert:"Insertar una línea horizontal"},style:{style:"Estilo",p:"Normal",blockquote:"Cita",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista",ordered:"Lista numerada"},options:{help:"Ayuda",fullscreen:"Pantalla completa",codeview:"Ver el código fuente"},paragraph:{paragraph:"Párrafo",outdent:"Reducir la sangría",indent:"Aumentar la sangría",left:"Alinear a la izquierda",center:"Centrar",right:"Alinear a la derecha",justify:"Justificar"},color:{recent:"Último color",more:"Más colores",background:"Color de fondo",foreground:"Color del texto",transparent:"Transparente",setTransparent:"Establecer transparente",reset:"Restablecer",resetToDefault:"Restablecer a los valores predefinidos",cpSelect:"Seleccionar"},shortcut:{shortcuts:"Atajos de teclado",close:"Cerrar",textFormatting:"Formato de texto",action:"Acción",paragraphFormatting:"Formato de párrafo",documentStyle:"Estilo de documento",extraKeys:"Teclas adicionales"},help:{insertParagraph:"Insertar un párrafo",undo:"Deshacer la última acción",redo:"Rehacer la última acción",tab:"Tabular",untab:"Eliminar tabulación",bold:"Establecer estilo negrita",italic:"Establecer estilo cursiva",underline:"Establecer estilo subrayado",strikethrough:"Establecer estilo tachado",removeFormat:"Limpiar estilo",justifyLeft:"Alinear a la izquierda",justifyCenter:"Alinear al centro",justifyRight:"Alinear a la derecha",justifyFull:"Justificar",insertUnorderedList:"Insertar lista",insertOrderedList:"Insertar lista numerada",outdent:"Reducir sangría del párrafo",indent:"Aumentar sangría del párrafo",formatPara:"Cambiar el formato del bloque actual a párrafo (etiqueta P)",formatH1:"Cambiar el formato del bloque actual a H1",formatH2:"Cambiar el formato del bloque actual a H2",formatH3:"Cambiar el formato del bloque actual a H3",formatH4:"Cambiar el formato del bloque actual a H4",formatH5:"Cambiar el formato del bloque actual a H5",formatH6:"Cambiar el formato del bloque actual a H6",insertHorizontalRule:"Insertar una línea horizontal","linkDialog.show":"Mostrar el panel de enlaces"},history:{undo:"Deshacer",redo:"Rehacer"},specialChar:{specialChar:"CARACTERES ESPECIALES",select:"Seleccionar caracteres especiales"},output:{noSelection:"¡No ha seleccionado nada!"}}}),{};var e})); +//# sourceMappingURL=summernote-es-ES.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.min.js.map new file mode 100644 index 0000000..7fb422c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-ES.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-es-ES.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EAiKPC,QAhKCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,UACNC,OAAQ,UACRC,UAAW,YACXC,MAAO,2BACPC,OAAQ,kBACRC,KAAM,gBACNC,cAAe,UACfC,UAAW,YACXC,YAAa,cACbC,KAAM,sBACNC,SAAU,8BAEZC,MAAO,CACLA,MAAO,SACPC,OAAQ,kBACRC,WAAY,kCACZC,WAAY,2BACZC,cAAe,4BACfC,WAAY,kBACZC,UAAW,wBACXC,WAAY,sBACZC,UAAW,YACXC,aAAc,oBACdC,YAAa,iBACbC,eAAgB,mBAChBC,UAAW,iBACXC,cAAe,mCACfC,UAAW,4BACXC,gBAAiB,wBACjBC,gBAAiB,4BACjBC,qBAAsB,wCACtBC,IAAK,mBACLC,OAAQ,qBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,mBACXrB,OAAQ,oBACRiB,IAAK,gBACLK,UAAW,0DAEbC,KAAM,CACJA,KAAM,SACNvB,OAAQ,qBACRwB,OAAQ,mBACRC,KAAM,SACNC,cAAe,kBACfT,IAAK,gCACLU,gBAAiB,6BACjBC,YAAa,iCAEfC,MAAO,CACLA,MAAO,QACPC,YAAa,yBACbC,YAAa,yBACbC,WAAY,oCACZC,YAAa,kCACbC,OAAQ,iBACRC,OAAQ,oBACRC,SAAU,mBAEZC,GAAI,CACFrC,OAAQ,iCAEVsC,MAAO,CACLA,MAAO,SACPC,EAAG,SACHC,WAAY,OACZC,IAAK,SACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,QACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,oBACZC,SAAU,wBAEZC,UAAW,CACTA,UAAW,UACXC,QAAS,qBACTC,OAAQ,sBACRC,KAAM,yBACNC,OAAQ,UACRC,MAAO,uBACPC,QAAS,cAEXC,MAAO,CACLC,OAAQ,eACRC,KAAM,cACNC,WAAY,iBACZC,WAAY,kBACZC,YAAa,eACbC,eAAgB,0BAChBC,MAAO,cACPC,eAAgB,yCAChBC,SAAU,eAEZC,SAAU,CACRC,UAAW,oBACXC,MAAO,SACPC,eAAgB,mBAChBC,OAAQ,SACRC,oBAAqB,qBACrBC,cAAe,sBACfC,UAAW,sBAEb3B,KAAM,CACJ4B,gBAAiB,sBACjBC,KAAM,4BACNC,KAAM,2BACNC,IAAK,UACLC,MAAO,sBACPhG,KAAM,4BACNC,OAAQ,4BACRC,UAAW,8BACXI,cAAe,4BACf2F,aAAc,iBACdC,YAAa,yBACbC,cAAe,oBACfC,aAAc,uBACdC,YAAa,aACbC,oBAAqB,iBACrBC,kBAAmB,0BACnBnC,QAAS,8BACTC,OAAQ,+BACRmC,WAAY,8DACZC,SAAU,4CACVC,SAAU,4CACVC,SAAU,4CACVC,SAAU,4CACVC,SAAU,4CACVC,SAAU,4CACVC,qBAAsB,gCACtB,kBAAmB,+BAErBC,QAAS,CACPnB,KAAM,WACNC,KAAM,WAERmB,YAAa,CACXA,YAAa,wBACbC,OAAQ,qCAEVC,OAAQ,CACNC,YAAa,gC,GDnJrB,ICVU1H","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-es-ES.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'es-ES': {\n font: {\n bold: 'Negrita',\n italic: 'Cursiva',\n underline: 'Subrayado',\n clear: 'Eliminar estilo de letra',\n height: 'Altura de línea',\n name: 'Tipo de letra',\n strikethrough: 'Tachado',\n subscript: 'Subíndice',\n superscript: 'Superíndice',\n size: 'Tamaño de la fuente',\n sizeunit: 'Unidad del tamaño de letra',\n },\n image: {\n image: 'Imagen',\n insert: 'Insertar imagen',\n resizeFull: 'Redimensionar a tamaño completo',\n resizeHalf: 'Redimensionar a la mitad',\n resizeQuarter: 'Redimensionar a un cuarto',\n resizeNone: 'Tamaño original',\n floatLeft: 'Flotar a la izquierda',\n floatRight: 'Flotar a la derecha',\n floatNone: 'No flotar',\n shapeRounded: 'Forma: Redondeado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Miniatura',\n shapeNone: 'Forma: Ninguna',\n dragImageHere: 'Arrastre una imagen o texto aquí',\n dropImage: 'Suelte una imagen o texto',\n selectFromFiles: 'Seleccione un fichero',\n maximumFileSize: 'Tamaño máximo del fichero',\n maximumFileSizeError: 'Superado el tamaño máximo de fichero.',\n url: 'URL de la imagen',\n remove: 'Eliminar la imagen',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Enlace del vídeo',\n insert: 'Insertar un vídeo',\n url: 'URL del vídeo',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)',\n },\n link: {\n link: 'Enlace',\n insert: 'Insertar un enlace',\n unlink: 'Quitar el enlace',\n edit: 'Editar',\n textToDisplay: 'Texto a mostrar',\n url: '¿A qué URL lleva este enlace?',\n openInNewWindow: 'Abrir en una nueva ventana',\n useProtocol: 'Usar el protocolo predefinido',\n },\n table: {\n table: 'Tabla',\n addRowAbove: 'Añadir una fila encima',\n addRowBelow: 'Añadir una fila debajo',\n addColLeft: 'Añadir una columna a la izquierda',\n addColRight: 'Añadir una columna a la derecha',\n delRow: 'Borrar la fila',\n delCol: 'Borrar la columna',\n delTable: 'Borrar la tabla',\n },\n hr: {\n insert: 'Insertar una línea horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Normal',\n blockquote: 'Cita',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista',\n ordered: 'Lista numerada',\n },\n options: {\n help: 'Ayuda',\n fullscreen: 'Pantalla completa',\n codeview: 'Ver el código fuente',\n },\n paragraph: {\n paragraph: 'Párrafo',\n outdent: 'Reducir la sangría',\n indent: 'Aumentar la sangría',\n left: 'Alinear a la izquierda',\n center: 'Centrar',\n right: 'Alinear a la derecha',\n justify: 'Justificar',\n },\n color: {\n recent: 'Último color',\n more: 'Más colores',\n background: 'Color de fondo',\n foreground: 'Color del texto',\n transparent: 'Transparente',\n setTransparent: 'Establecer transparente',\n reset: 'Restablecer',\n resetToDefault: 'Restablecer a los valores predefinidos',\n cpSelect: 'Seleccionar',\n },\n shortcut: {\n shortcuts: 'Atajos de teclado',\n close: 'Cerrar',\n textFormatting: 'Formato de texto',\n action: 'Acción',\n paragraphFormatting: 'Formato de párrafo',\n documentStyle: 'Estilo de documento',\n extraKeys: 'Teclas adicionales',\n },\n help: {\n insertParagraph: 'Insertar un párrafo',\n undo: 'Deshacer la última acción',\n redo: 'Rehacer la última acción',\n tab: 'Tabular',\n untab: 'Eliminar tabulación',\n bold: 'Establecer estilo negrita',\n italic: 'Establecer estilo cursiva',\n underline: 'Establecer estilo subrayado',\n strikethrough: 'Establecer estilo tachado',\n removeFormat: 'Limpiar estilo',\n justifyLeft: 'Alinear a la izquierda',\n justifyCenter: 'Alinear al centro',\n justifyRight: 'Alinear a la derecha',\n justifyFull: 'Justificar',\n insertUnorderedList: 'Insertar lista',\n insertOrderedList: 'Insertar lista numerada',\n outdent: 'Reducir sangría del párrafo',\n indent: 'Aumentar sangría del párrafo',\n formatPara: 'Cambiar el formato del bloque actual a párrafo (etiqueta P)',\n formatH1: 'Cambiar el formato del bloque actual a H1',\n formatH2: 'Cambiar el formato del bloque actual a H2',\n formatH3: 'Cambiar el formato del bloque actual a H3',\n formatH4: 'Cambiar el formato del bloque actual a H4',\n formatH5: 'Cambiar el formato del bloque actual a H5',\n formatH6: 'Cambiar el formato del bloque actual a H6',\n insertHorizontalRule: 'Insertar una línea horizontal',\n 'linkDialog.show': 'Mostrar el panel de enlaces',\n },\n history: {\n undo: 'Deshacer',\n redo: 'Rehacer',\n },\n specialChar: {\n specialChar: 'CARACTERES ESPECIALES',\n select: 'Seleccionar caracteres especiales',\n },\n output: {\n noSelection: '¡No ha seleccionado nada!',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select","output","noSelection"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.js b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.js new file mode 100644 index 0000000..7b5dea4 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.js @@ -0,0 +1,183 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'es-EU': { + font: { + bold: 'Lodia', + italic: 'Etzana', + underline: 'Azpimarratua', + clear: 'Estiloa kendu', + height: 'Lerro altuera', + name: 'Tipografia', + strikethrough: 'Marratua', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Letren neurria' + }, + image: { + image: 'Irudia', + insert: 'Irudi bat txertatu', + resizeFull: 'Jatorrizko neurrira aldatu', + resizeHalf: 'Neurria erdira aldatu', + resizeQuarter: 'Neurria laurdenera aldatu', + floatLeft: 'Ezkerrean kokatu', + floatRight: 'Eskuinean kokatu', + floatNone: 'Kokapenik ez ezarri', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Irudi bat ezarri hemen', + dropImage: 'Drop image or Text', + selectFromFiles: 'Zure fitxategi bat aukeratu', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Irudiaren URL helbidea', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Bideoa', + videoLink: 'Bideorako esteka', + insert: 'Bideo berri bat txertatu', + url: 'Bideoaren URL helbidea', + providers: '(YouTube, Vimeo, Vine, Instagram edo DailyMotion)' + }, + link: { + link: 'Esteka', + insert: 'Esteka bat txertatu', + unlink: 'Esteka ezabatu', + edit: 'Editatu', + textToDisplay: 'Estekaren testua', + url: 'Estekaren URL helbidea', + openInNewWindow: 'Leiho berri batean ireki' + }, + table: { + table: 'Taula', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Marra horizontala txertatu' + }, + style: { + style: 'Estiloa', + p: 'p', + blockquote: 'Aipamena', + pre: 'Kodea', + h1: '1. izenburua', + h2: '2. izenburua', + h3: '3. izenburua', + h4: '4. izenburua', + h5: '5. izenburua', + h6: '6. izenburua' + }, + lists: { + unordered: 'Ordenatu gabeko zerrenda', + ordered: 'Zerrenda ordenatua' + }, + options: { + help: 'Laguntza', + fullscreen: 'Pantaila osoa', + codeview: 'Kodea ikusi' + }, + paragraph: { + paragraph: 'Paragrafoa', + outdent: 'Koska txikiagoa', + indent: 'Koska handiagoa', + left: 'Ezkerrean kokatu', + center: 'Erdian kokatu', + right: 'Eskuinean kokatu', + justify: 'Justifikatu' + }, + color: { + recent: 'Azken kolorea', + more: 'Kolore gehiago', + background: 'Atzeko planoa', + foreground: 'Aurreko planoa', + transparent: 'Gardena', + setTransparent: 'Gardendu', + reset: 'Lehengoratu', + resetToDefault: 'Berrezarri lehenetsia' + }, + shortcut: { + shortcuts: 'Lasterbideak', + close: 'Itxi', + textFormatting: 'Testuaren formatua', + action: 'Ekintza', + paragraphFormatting: 'Paragrafoaren formatua', + documentStyle: 'Dokumentuaren estiloa' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Desegin', + redo: 'Berregin' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-es-EU.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.js.map new file mode 100644 index 0000000..4dd317d --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-es-EU.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-es-EU.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'es-EU': {\n font: {\n bold: 'Lodia',\n italic: 'Etzana',\n underline: 'Azpimarratua',\n clear: 'Estiloa kendu',\n height: 'Lerro altuera',\n name: 'Tipografia',\n strikethrough: 'Marratua',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Letren neurria',\n },\n image: {\n image: 'Irudia',\n insert: 'Irudi bat txertatu',\n resizeFull: 'Jatorrizko neurrira aldatu',\n resizeHalf: 'Neurria erdira aldatu',\n resizeQuarter: 'Neurria laurdenera aldatu',\n floatLeft: 'Ezkerrean kokatu',\n floatRight: 'Eskuinean kokatu',\n floatNone: 'Kokapenik ez ezarri',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Irudi bat ezarri hemen',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Zure fitxategi bat aukeratu',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Irudiaren URL helbidea',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Bideoa',\n videoLink: 'Bideorako esteka',\n insert: 'Bideo berri bat txertatu',\n url: 'Bideoaren URL helbidea',\n providers: '(YouTube, Vimeo, Vine, Instagram edo DailyMotion)',\n },\n link: {\n link: 'Esteka',\n insert: 'Esteka bat txertatu',\n unlink: 'Esteka ezabatu',\n edit: 'Editatu',\n textToDisplay: 'Estekaren testua',\n url: 'Estekaren URL helbidea',\n openInNewWindow: 'Leiho berri batean ireki',\n },\n table: {\n table: 'Taula',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Marra horizontala txertatu',\n },\n style: {\n style: 'Estiloa',\n p: 'p',\n blockquote: 'Aipamena',\n pre: 'Kodea',\n h1: '1. izenburua',\n h2: '2. izenburua',\n h3: '3. izenburua',\n h4: '4. izenburua',\n h5: '5. izenburua',\n h6: '6. izenburua',\n },\n lists: {\n unordered: 'Ordenatu gabeko zerrenda',\n ordered: 'Zerrenda ordenatua',\n },\n options: {\n help: 'Laguntza',\n fullscreen: 'Pantaila osoa',\n codeview: 'Kodea ikusi',\n },\n paragraph: {\n paragraph: 'Paragrafoa',\n outdent: 'Koska txikiagoa',\n indent: 'Koska handiagoa',\n left: 'Ezkerrean kokatu',\n center: 'Erdian kokatu',\n right: 'Eskuinean kokatu',\n justify: 'Justifikatu',\n },\n color: {\n recent: 'Azken kolorea',\n more: 'Kolore gehiago',\n background: 'Atzeko planoa',\n foreground: 'Aurreko planoa',\n transparent: 'Gardena',\n setTransparent: 'Gardendu',\n reset: 'Lehengoratu',\n resetToDefault: 'Berrezarri lehenetsia',\n },\n shortcut: {\n shortcuts: 'Lasterbideak',\n close: 'Itxi',\n textFormatting: 'Testuaren formatua',\n action: 'Ekintza',\n paragraphFormatting: 'Paragrafoaren formatua',\n documentStyle: 'Dokumentuaren estiloa',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Desegin',\n redo: 'Berregin',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.min.js new file mode 100644 index 0000000..74ec0df --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var t in r)("object"==typeof exports?exports:e)[t]=r[t]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"es-EU":{font:{bold:"Lodia",italic:"Etzana",underline:"Azpimarratua",clear:"Estiloa kendu",height:"Lerro altuera",name:"Tipografia",strikethrough:"Marratua",subscript:"Subscript",superscript:"Superscript",size:"Letren neurria"},image:{image:"Irudia",insert:"Irudi bat txertatu",resizeFull:"Jatorrizko neurrira aldatu",resizeHalf:"Neurria erdira aldatu",resizeQuarter:"Neurria laurdenera aldatu",floatLeft:"Ezkerrean kokatu",floatRight:"Eskuinean kokatu",floatNone:"Kokapenik ez ezarri",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Irudi bat ezarri hemen",dropImage:"Drop image or Text",selectFromFiles:"Zure fitxategi bat aukeratu",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Irudiaren URL helbidea",remove:"Remove Image",original:"Original"},video:{video:"Bideoa",videoLink:"Bideorako esteka",insert:"Bideo berri bat txertatu",url:"Bideoaren URL helbidea",providers:"(YouTube, Vimeo, Vine, Instagram edo DailyMotion)"},link:{link:"Esteka",insert:"Esteka bat txertatu",unlink:"Esteka ezabatu",edit:"Editatu",textToDisplay:"Estekaren testua",url:"Estekaren URL helbidea",openInNewWindow:"Leiho berri batean ireki"},table:{table:"Taula",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Marra horizontala txertatu"},style:{style:"Estiloa",p:"p",blockquote:"Aipamena",pre:"Kodea",h1:"1. izenburua",h2:"2. izenburua",h3:"3. izenburua",h4:"4. izenburua",h5:"5. izenburua",h6:"6. izenburua"},lists:{unordered:"Ordenatu gabeko zerrenda",ordered:"Zerrenda ordenatua"},options:{help:"Laguntza",fullscreen:"Pantaila osoa",codeview:"Kodea ikusi"},paragraph:{paragraph:"Paragrafoa",outdent:"Koska txikiagoa",indent:"Koska handiagoa",left:"Ezkerrean kokatu",center:"Erdian kokatu",right:"Eskuinean kokatu",justify:"Justifikatu"},color:{recent:"Azken kolorea",more:"Kolore gehiago",background:"Atzeko planoa",foreground:"Aurreko planoa",transparent:"Gardena",setTransparent:"Gardendu",reset:"Lehengoratu",resetToDefault:"Berrezarri lehenetsia"},shortcut:{shortcuts:"Lasterbideak",close:"Itxi",textFormatting:"Testuaren formatua",action:"Ekintza",paragraphFormatting:"Paragrafoaren formatua",documentStyle:"Dokumentuaren estiloa"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Desegin",redo:"Berregin"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-es-EU.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.min.js.map new file mode 100644 index 0000000..75bca5a --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-es-EU.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-es-EU.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EAyJPC,QAxJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,SACRC,UAAW,eACXC,MAAO,gBACPC,OAAQ,gBACRC,KAAM,aACNC,cAAe,WACfC,UAAW,YACXC,YAAa,cACbC,KAAM,kBAERC,MAAO,CACLA,MAAO,SACPC,OAAQ,qBACRC,WAAY,6BACZC,WAAY,wBACZC,cAAe,4BACfC,UAAW,mBACXC,WAAY,mBACZC,UAAW,sBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,yBACfC,UAAW,qBACXC,gBAAiB,8BACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,yBACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,SACPC,UAAW,mBACXpB,OAAQ,2BACRgB,IAAK,yBACLK,UAAW,qDAEbC,KAAM,CACJA,KAAM,SACNtB,OAAQ,sBACRuB,OAAQ,iBACRC,KAAM,UACNC,cAAe,mBACfT,IAAK,yBACLU,gBAAiB,4BAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,8BAEVoC,MAAO,CACLA,MAAO,UACPC,EAAG,IACHC,WAAY,WACZC,IAAK,QACLC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,gBAENC,MAAO,CACLC,UAAW,2BACXC,QAAS,sBAEXC,QAAS,CACPC,KAAM,WACNC,WAAY,gBACZC,SAAU,eAEZC,UAAW,CACTA,UAAW,aACXC,QAAS,kBACTC,OAAQ,kBACRC,KAAM,mBACNC,OAAQ,gBACRC,MAAO,mBACPC,QAAS,eAEXC,MAAO,CACLC,OAAQ,gBACRC,KAAM,iBACNC,WAAY,gBACZC,WAAY,iBACZC,YAAa,UACbC,eAAgB,WAChBC,MAAO,cACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,eACXC,MAAO,OACPC,eAAgB,qBAChBC,OAAQ,UACRC,oBAAqB,yBACrBC,cAAe,yBAEjBzB,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB0B,QAAS,CACPC,KAAM,UACNC,KAAM,YAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD3IhB,ICVUjG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-es-EU.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'es-EU': {\n font: {\n bold: 'Lodia',\n italic: 'Etzana',\n underline: 'Azpimarratua',\n clear: 'Estiloa kendu',\n height: 'Lerro altuera',\n name: 'Tipografia',\n strikethrough: 'Marratua',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Letren neurria',\n },\n image: {\n image: 'Irudia',\n insert: 'Irudi bat txertatu',\n resizeFull: 'Jatorrizko neurrira aldatu',\n resizeHalf: 'Neurria erdira aldatu',\n resizeQuarter: 'Neurria laurdenera aldatu',\n floatLeft: 'Ezkerrean kokatu',\n floatRight: 'Eskuinean kokatu',\n floatNone: 'Kokapenik ez ezarri',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Irudi bat ezarri hemen',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Zure fitxategi bat aukeratu',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Irudiaren URL helbidea',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Bideoa',\n videoLink: 'Bideorako esteka',\n insert: 'Bideo berri bat txertatu',\n url: 'Bideoaren URL helbidea',\n providers: '(YouTube, Vimeo, Vine, Instagram edo DailyMotion)',\n },\n link: {\n link: 'Esteka',\n insert: 'Esteka bat txertatu',\n unlink: 'Esteka ezabatu',\n edit: 'Editatu',\n textToDisplay: 'Estekaren testua',\n url: 'Estekaren URL helbidea',\n openInNewWindow: 'Leiho berri batean ireki',\n },\n table: {\n table: 'Taula',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Marra horizontala txertatu',\n },\n style: {\n style: 'Estiloa',\n p: 'p',\n blockquote: 'Aipamena',\n pre: 'Kodea',\n h1: '1. izenburua',\n h2: '2. izenburua',\n h3: '3. izenburua',\n h4: '4. izenburua',\n h5: '5. izenburua',\n h6: '6. izenburua',\n },\n lists: {\n unordered: 'Ordenatu gabeko zerrenda',\n ordered: 'Zerrenda ordenatua',\n },\n options: {\n help: 'Laguntza',\n fullscreen: 'Pantaila osoa',\n codeview: 'Kodea ikusi',\n },\n paragraph: {\n paragraph: 'Paragrafoa',\n outdent: 'Koska txikiagoa',\n indent: 'Koska handiagoa',\n left: 'Ezkerrean kokatu',\n center: 'Erdian kokatu',\n right: 'Eskuinean kokatu',\n justify: 'Justifikatu',\n },\n color: {\n recent: 'Azken kolorea',\n more: 'Kolore gehiago',\n background: 'Atzeko planoa',\n foreground: 'Aurreko planoa',\n transparent: 'Gardena',\n setTransparent: 'Gardendu',\n reset: 'Lehengoratu',\n resetToDefault: 'Berrezarri lehenetsia',\n },\n shortcut: {\n shortcuts: 'Lasterbideak',\n close: 'Itxi',\n textFormatting: 'Testuaren formatua',\n action: 'Ekintza',\n paragraphFormatting: 'Paragrafoaren formatua',\n documentStyle: 'Dokumentuaren estiloa',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Desegin',\n redo: 'Berregin',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.js b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.js new file mode 100644 index 0000000..eba991b --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'fa-IR': { + font: { + bold: 'درشت', + italic: 'خمیده', + underline: 'میان خط', + clear: 'پاک کردن فرمت فونت', + height: 'فاصله ی خطی', + name: 'اسم فونت', + strikethrough: 'Strike', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'اندازه ی فونت' + }, + image: { + image: 'تصویر', + insert: 'وارد کردن تصویر', + resizeFull: 'تغییر به اندازه ی کامل', + resizeHalf: 'تغییر به اندازه نصف', + resizeQuarter: 'تغییر به اندازه یک چهارم', + floatLeft: 'چسباندن به چپ', + floatRight: 'چسباندن به راست', + floatNone: 'بدون چسبندگی', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'یک تصویر را اینجا بکشید', + dropImage: 'Drop image or Text', + selectFromFiles: 'فایل ها را انتخاب کنید', + maximumFileSize: 'حداکثر اندازه پرونده', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'آدرس تصویر', + remove: 'حذف تصویر', + original: 'Original' + }, + video: { + video: 'ویدیو', + videoLink: 'لینک ویدیو', + insert: 'افزودن ویدیو', + url: 'آدرس ویدیو ؟', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)' + }, + link: { + link: 'لینک', + insert: 'اضافه کردن لینک', + unlink: 'حذف لینک', + edit: 'ویرایش', + textToDisplay: 'متن جهت نمایش', + url: 'این لینک به چه آدرسی باید برود ؟', + openInNewWindow: 'در یک پنجره ی جدید باز شود' + }, + table: { + table: 'جدول', + addRowAbove: 'افزودن ردیف بالا', + addRowBelow: 'افزودن ردیف پایین', + addColLeft: 'افزودن ستون چپ', + addColRight: 'افزودن ستون راست', + delRow: 'حذف ردیف', + delCol: 'حذف ستون', + delTable: 'حذف جدول' + }, + hr: { + insert: 'افزودن خط افقی' + }, + style: { + style: 'استیل', + p: 'نرمال', + blockquote: 'نقل قول', + pre: 'کد', + h1: 'سرتیتر 1', + h2: 'سرتیتر 2', + h3: 'سرتیتر 3', + h4: 'سرتیتر 4', + h5: 'سرتیتر 5', + h6: 'سرتیتر 6' + }, + lists: { + unordered: 'لیست غیر ترتیبی', + ordered: 'لیست ترتیبی' + }, + options: { + help: 'راهنما', + fullscreen: 'نمایش تمام صفحه', + codeview: 'مشاهده ی کد' + }, + paragraph: { + paragraph: 'پاراگراف', + outdent: 'کاهش تو رفتگی', + indent: 'افزایش تو رفتگی', + left: 'چپ چین', + center: 'میان چین', + right: 'راست چین', + justify: 'بلوک چین' + }, + color: { + recent: 'رنگ اخیرا استفاده شده', + more: 'رنگ بیشتر', + background: 'رنگ پس زمینه', + foreground: 'رنگ متن', + transparent: 'بی رنگ', + setTransparent: 'تنظیم حالت بی رنگ', + reset: 'بازنشاندن', + resetToDefault: 'حالت پیش فرض' + }, + shortcut: { + shortcuts: 'دکمه های میان بر', + close: 'بستن', + textFormatting: 'فرمت متن', + action: 'عملیات', + paragraphFormatting: 'فرمت پاراگراف', + documentStyle: 'استیل سند', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'افزودن پاراگراف', + 'undo': 'آخرین فرمان را لغو می کند', + 'redo': 'دستور آخر را دوباره اجرا می کند', + 'tab': 'تب', + 'untab': 'لغو تب', + 'bold': 'استایل ضخیم میدهد', + 'italic': 'استایل مورب میدهد', + 'underline': 'استایل زیرخط دار میدهد', + 'strikethrough': 'استایل خط خورده میدهد', + 'removeFormat': 'حذف همه استایل ها', + 'justifyLeft': 'چپ چین', + 'justifyCenter': 'وسط چین', + 'justifyRight': 'راست چین', + 'justifyFull': 'چینش در کل عرض', + 'insertUnorderedList': 'تغییر بع لیست غیرترتیبی', + 'insertOrderedList': 'تغییر بع لیست ترتیبی', + 'outdent': 'گذر از پاراگراف فعلی', + 'indent': 'قرارگیری بر روی پاراگراف جاری', + 'formatPara': 'تغییر فرمت متن به تگ

      ', + 'formatH1': 'تغییر فرمت متن به تگ

      ', + 'formatH2': 'تغییر فرمت متن به تگ

      ', + 'formatH3': 'تغییر فرمت متن به تگ

      ', + 'formatH4': 'تغییر فرمت متن به تگ

      ', + 'formatH5': 'تغییر فرمت متن به تگ

      ', + 'formatH6': 'تغییر فرمت متن به تگ
      ', + 'insertHorizontalRule': 'وارد کردن به صورت افقی', + 'linkDialog.show': 'نمایش پیام لینک' + }, + history: { + undo: 'واچیدن', + redo: 'بازچیدن' + }, + specialChar: { + specialChar: 'کاراکتر خاص', + select: 'انتخاب کاراکتر خاص' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-fa-IR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.js.map new file mode 100644 index 0000000..fa707e6 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-fa-IR.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-fa-IR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'fa-IR': {\n font: {\n bold: 'درشت',\n italic: 'خمیده',\n underline: 'میان خط',\n clear: 'پاک کردن فرمت فونت',\n height: 'فاصله ی خطی',\n name: 'اسم فونت',\n strikethrough: 'Strike',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'اندازه ی فونت',\n },\n image: {\n image: 'تصویر',\n insert: 'وارد کردن تصویر',\n resizeFull: 'تغییر به اندازه ی کامل',\n resizeHalf: 'تغییر به اندازه نصف',\n resizeQuarter: 'تغییر به اندازه یک چهارم',\n floatLeft: 'چسباندن به چپ',\n floatRight: 'چسباندن به راست',\n floatNone: 'بدون چسبندگی',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'یک تصویر را اینجا بکشید',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'فایل ها را انتخاب کنید',\n maximumFileSize: 'حداکثر اندازه پرونده',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'آدرس تصویر',\n remove: 'حذف تصویر',\n original: 'Original',\n },\n video: {\n video: 'ویدیو',\n videoLink: 'لینک ویدیو',\n insert: 'افزودن ویدیو',\n url: 'آدرس ویدیو ؟',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)',\n },\n link: {\n link: 'لینک',\n insert: 'اضافه کردن لینک',\n unlink: 'حذف لینک',\n edit: 'ویرایش',\n textToDisplay: 'متن جهت نمایش',\n url: 'این لینک به چه آدرسی باید برود ؟',\n openInNewWindow: 'در یک پنجره ی جدید باز شود',\n },\n table: {\n table: 'جدول',\n addRowAbove: 'افزودن ردیف بالا',\n addRowBelow: 'افزودن ردیف پایین',\n addColLeft: 'افزودن ستون چپ',\n addColRight: 'افزودن ستون راست',\n delRow: 'حذف ردیف',\n delCol: 'حذف ستون',\n delTable: 'حذف جدول',\n },\n hr: {\n insert: 'افزودن خط افقی',\n },\n style: {\n style: 'استیل',\n p: 'نرمال',\n blockquote: 'نقل قول',\n pre: 'کد',\n h1: 'سرتیتر 1',\n h2: 'سرتیتر 2',\n h3: 'سرتیتر 3',\n h4: 'سرتیتر 4',\n h5: 'سرتیتر 5',\n h6: 'سرتیتر 6',\n },\n lists: {\n unordered: 'لیست غیر ترتیبی',\n ordered: 'لیست ترتیبی',\n },\n options: {\n help: 'راهنما',\n fullscreen: 'نمایش تمام صفحه',\n codeview: 'مشاهده ی کد',\n },\n paragraph: {\n paragraph: 'پاراگراف',\n outdent: 'کاهش تو رفتگی',\n indent: 'افزایش تو رفتگی',\n left: 'چپ چین',\n center: 'میان چین',\n right: 'راست چین',\n justify: 'بلوک چین',\n },\n color: {\n recent: 'رنگ اخیرا استفاده شده',\n more: 'رنگ بیشتر',\n background: 'رنگ پس زمینه',\n foreground: 'رنگ متن',\n transparent: 'بی رنگ',\n setTransparent: 'تنظیم حالت بی رنگ',\n reset: 'بازنشاندن',\n resetToDefault: 'حالت پیش فرض',\n },\n shortcut: {\n shortcuts: 'دکمه های میان بر',\n close: 'بستن',\n textFormatting: 'فرمت متن',\n action: 'عملیات',\n paragraphFormatting: 'فرمت پاراگراف',\n documentStyle: 'استیل سند',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'افزودن پاراگراف',\n 'undo': 'آخرین فرمان را لغو می کند',\n 'redo': 'دستور آخر را دوباره اجرا می کند',\n 'tab': 'تب',\n 'untab': 'لغو تب',\n 'bold': 'استایل ضخیم میدهد',\n 'italic': 'استایل مورب میدهد',\n 'underline': 'استایل زیرخط دار میدهد',\n 'strikethrough': 'استایل خط خورده میدهد',\n 'removeFormat': 'حذف همه استایل ها',\n 'justifyLeft': 'چپ چین',\n 'justifyCenter': 'وسط چین',\n 'justifyRight': 'راست چین',\n 'justifyFull': 'چینش در کل عرض',\n 'insertUnorderedList': 'تغییر بع لیست غیرترتیبی',\n 'insertOrderedList': 'تغییر بع لیست ترتیبی',\n 'outdent': 'گذر از پاراگراف فعلی',\n 'indent': 'قرارگیری بر روی پاراگراف جاری',\n 'formatPara': 'تغییر فرمت متن به تگ

      ',\n 'formatH1': 'تغییر فرمت متن به تگ

      ',\n 'formatH2': 'تغییر فرمت متن به تگ

      ',\n 'formatH3': 'تغییر فرمت متن به تگ

      ',\n 'formatH4': 'تغییر فرمت متن به تگ

      ',\n 'formatH5': 'تغییر فرمت متن به تگ

      ',\n 'formatH6': 'تغییر فرمت متن به تگ
      ',\n 'insertHorizontalRule': 'وارد کردن به صورت افقی',\n 'linkDialog.show': 'نمایش پیام لینک',\n },\n history: {\n undo: 'واچیدن',\n redo: 'بازچیدن',\n },\n specialChar: {\n specialChar: 'کاراکتر خاص',\n select: 'انتخاب کاراکتر خاص',\n }, \n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.min.js new file mode 100644 index 0000000..cc327a8 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var t=r();for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"fa-IR":{font:{bold:"درشت",italic:"خمیده",underline:"میان خط",clear:"پاک کردن فرمت فونت",height:"فاصله ی خطی",name:"اسم فونت",strikethrough:"Strike",subscript:"Subscript",superscript:"Superscript",size:"اندازه ی فونت"},image:{image:"تصویر",insert:"وارد کردن تصویر",resizeFull:"تغییر به اندازه ی کامل",resizeHalf:"تغییر به اندازه نصف",resizeQuarter:"تغییر به اندازه یک چهارم",floatLeft:"چسباندن به چپ",floatRight:"چسباندن به راست",floatNone:"بدون چسبندگی",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"یک تصویر را اینجا بکشید",dropImage:"Drop image or Text",selectFromFiles:"فایل ها را انتخاب کنید",maximumFileSize:"حداکثر اندازه پرونده",maximumFileSizeError:"Maximum file size exceeded.",url:"آدرس تصویر",remove:"حذف تصویر",original:"Original"},video:{video:"ویدیو",videoLink:"لینک ویدیو",insert:"افزودن ویدیو",url:"آدرس ویدیو ؟",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)"},link:{link:"لینک",insert:"اضافه کردن لینک",unlink:"حذف لینک",edit:"ویرایش",textToDisplay:"متن جهت نمایش",url:"این لینک به چه آدرسی باید برود ؟",openInNewWindow:"در یک پنجره ی جدید باز شود"},table:{table:"جدول",addRowAbove:"افزودن ردیف بالا",addRowBelow:"افزودن ردیف پایین",addColLeft:"افزودن ستون چپ",addColRight:"افزودن ستون راست",delRow:"حذف ردیف",delCol:"حذف ستون",delTable:"حذف جدول"},hr:{insert:"افزودن خط افقی"},style:{style:"استیل",p:"نرمال",blockquote:"نقل قول",pre:"کد",h1:"سرتیتر 1",h2:"سرتیتر 2",h3:"سرتیتر 3",h4:"سرتیتر 4",h5:"سرتیتر 5",h6:"سرتیتر 6"},lists:{unordered:"لیست غیر ترتیبی",ordered:"لیست ترتیبی"},options:{help:"راهنما",fullscreen:"نمایش تمام صفحه",codeview:"مشاهده ی کد"},paragraph:{paragraph:"پاراگراف",outdent:"کاهش تو رفتگی",indent:"افزایش تو رفتگی",left:"چپ چین",center:"میان چین",right:"راست چین",justify:"بلوک چین"},color:{recent:"رنگ اخیرا استفاده شده",more:"رنگ بیشتر",background:"رنگ پس زمینه",foreground:"رنگ متن",transparent:"بی رنگ",setTransparent:"تنظیم حالت بی رنگ",reset:"بازنشاندن",resetToDefault:"حالت پیش فرض"},shortcut:{shortcuts:"دکمه های میان بر",close:"بستن",textFormatting:"فرمت متن",action:"عملیات",paragraphFormatting:"فرمت پاراگراف",documentStyle:"استیل سند",extraKeys:"Extra keys"},help:{insertParagraph:"افزودن پاراگراف",undo:"آخرین فرمان را لغو می کند",redo:"دستور آخر را دوباره اجرا می کند",tab:"تب",untab:"لغو تب",bold:"استایل ضخیم میدهد",italic:"استایل مورب میدهد",underline:"استایل زیرخط دار میدهد",strikethrough:"استایل خط خورده میدهد",removeFormat:"حذف همه استایل ها",justifyLeft:"چپ چین",justifyCenter:"وسط چین",justifyRight:"راست چین",justifyFull:"چینش در کل عرض",insertUnorderedList:"تغییر بع لیست غیرترتیبی",insertOrderedList:"تغییر بع لیست ترتیبی",outdent:"گذر از پاراگراف فعلی",indent:"قرارگیری بر روی پاراگراف جاری",formatPara:"تغییر فرمت متن به تگ

      ",formatH1:"تغییر فرمت متن به تگ

      ",formatH2:"تغییر فرمت متن به تگ

      ",formatH3:"تغییر فرمت متن به تگ

      ",formatH4:"تغییر فرمت متن به تگ

      ",formatH5:"تغییر فرمت متن به تگ

      ",formatH6:"تغییر فرمت متن به تگ
      ",insertHorizontalRule:"وارد کردن به صورت افقی","linkDialog.show":"نمایش پیام لینک"},history:{undo:"واچیدن",redo:"بازچیدن"},specialChar:{specialChar:"کاراکتر خاص",select:"انتخاب کاراکتر خاص"}}}),{};var e})); +//# sourceMappingURL=summernote-fa-IR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.min.js.map new file mode 100644 index 0000000..6e57beb --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fa-IR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-fa-IR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,OACNC,OAAQ,QACRC,UAAW,UACXC,MAAO,qBACPC,OAAQ,cACRC,KAAM,WACNC,cAAe,SACfC,UAAW,YACXC,YAAa,cACbC,KAAM,iBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,kBACRC,WAAY,yBACZC,WAAY,sBACZC,cAAe,2BACfC,UAAW,gBACXC,WAAY,kBACZC,UAAW,eACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,0BACfC,UAAW,qBACXC,gBAAiB,yBACjBC,gBAAiB,uBACjBC,qBAAsB,8BACtBC,IAAK,aACLC,OAAQ,YACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,eACRgB,IAAK,eACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,kBACRuB,OAAQ,WACRC,KAAM,SACNC,cAAe,gBACfT,IAAK,mCACLU,gBAAiB,8BAEnBC,MAAO,CACLA,MAAO,OACPC,YAAa,mBACbC,YAAa,oBACbC,WAAY,iBACZC,YAAa,mBACbC,OAAQ,WACRC,OAAQ,WACRC,SAAU,YAEZC,GAAI,CACFnC,OAAQ,kBAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,QACHC,WAAY,UACZC,IAAK,KACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,kBACXC,QAAS,eAEXC,QAAS,CACPC,KAAM,SACNC,WAAY,kBACZC,SAAU,eAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,gBACTC,OAAQ,kBACRC,KAAM,SACNC,OAAQ,WACRC,MAAO,WACPC,QAAS,YAEXC,MAAO,CACLC,OAAQ,wBACRC,KAAM,YACNC,WAAY,eACZC,WAAY,UACZC,YAAa,SACbC,eAAgB,oBAChBC,MAAO,YACPC,eAAgB,gBAElBC,SAAU,CACRC,UAAW,mBACXC,MAAO,OACPC,eAAgB,WAChBC,OAAQ,SACRC,oBAAqB,gBACrBC,cAAe,YACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,kBACnB,KAAQ,4BACR,KAAQ,kCACR,IAAO,KACP,MAAS,SACT,KAAQ,oBACR,OAAU,oBACV,UAAa,yBACb,cAAiB,wBACjB,aAAgB,oBAChB,YAAe,SACf,cAAiB,UACjB,aAAgB,WAChB,YAAe,iBACf,oBAAuB,0BACvB,kBAAqB,uBACrB,QAAW,uBACX,OAAU,gCACV,WAAc,2BACd,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,qBAAwB,yBACxB,kBAAmB,mBAErB2B,QAAS,CACPC,KAAM,SACNC,KAAM,WAERC,YAAa,CACXA,YAAa,cACbC,OAAQ,yB,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-fa-IR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'fa-IR': {\n font: {\n bold: 'درشت',\n italic: 'خمیده',\n underline: 'میان خط',\n clear: 'پاک کردن فرمت فونت',\n height: 'فاصله ی خطی',\n name: 'اسم فونت',\n strikethrough: 'Strike',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'اندازه ی فونت',\n },\n image: {\n image: 'تصویر',\n insert: 'وارد کردن تصویر',\n resizeFull: 'تغییر به اندازه ی کامل',\n resizeHalf: 'تغییر به اندازه نصف',\n resizeQuarter: 'تغییر به اندازه یک چهارم',\n floatLeft: 'چسباندن به چپ',\n floatRight: 'چسباندن به راست',\n floatNone: 'بدون چسبندگی',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'یک تصویر را اینجا بکشید',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'فایل ها را انتخاب کنید',\n maximumFileSize: 'حداکثر اندازه پرونده',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'آدرس تصویر',\n remove: 'حذف تصویر',\n original: 'Original',\n },\n video: {\n video: 'ویدیو',\n videoLink: 'لینک ویدیو',\n insert: 'افزودن ویدیو',\n url: 'آدرس ویدیو ؟',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)',\n },\n link: {\n link: 'لینک',\n insert: 'اضافه کردن لینک',\n unlink: 'حذف لینک',\n edit: 'ویرایش',\n textToDisplay: 'متن جهت نمایش',\n url: 'این لینک به چه آدرسی باید برود ؟',\n openInNewWindow: 'در یک پنجره ی جدید باز شود',\n },\n table: {\n table: 'جدول',\n addRowAbove: 'افزودن ردیف بالا',\n addRowBelow: 'افزودن ردیف پایین',\n addColLeft: 'افزودن ستون چپ',\n addColRight: 'افزودن ستون راست',\n delRow: 'حذف ردیف',\n delCol: 'حذف ستون',\n delTable: 'حذف جدول',\n },\n hr: {\n insert: 'افزودن خط افقی',\n },\n style: {\n style: 'استیل',\n p: 'نرمال',\n blockquote: 'نقل قول',\n pre: 'کد',\n h1: 'سرتیتر 1',\n h2: 'سرتیتر 2',\n h3: 'سرتیتر 3',\n h4: 'سرتیتر 4',\n h5: 'سرتیتر 5',\n h6: 'سرتیتر 6',\n },\n lists: {\n unordered: 'لیست غیر ترتیبی',\n ordered: 'لیست ترتیبی',\n },\n options: {\n help: 'راهنما',\n fullscreen: 'نمایش تمام صفحه',\n codeview: 'مشاهده ی کد',\n },\n paragraph: {\n paragraph: 'پاراگراف',\n outdent: 'کاهش تو رفتگی',\n indent: 'افزایش تو رفتگی',\n left: 'چپ چین',\n center: 'میان چین',\n right: 'راست چین',\n justify: 'بلوک چین',\n },\n color: {\n recent: 'رنگ اخیرا استفاده شده',\n more: 'رنگ بیشتر',\n background: 'رنگ پس زمینه',\n foreground: 'رنگ متن',\n transparent: 'بی رنگ',\n setTransparent: 'تنظیم حالت بی رنگ',\n reset: 'بازنشاندن',\n resetToDefault: 'حالت پیش فرض',\n },\n shortcut: {\n shortcuts: 'دکمه های میان بر',\n close: 'بستن',\n textFormatting: 'فرمت متن',\n action: 'عملیات',\n paragraphFormatting: 'فرمت پاراگراف',\n documentStyle: 'استیل سند',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'افزودن پاراگراف',\n 'undo': 'آخرین فرمان را لغو می کند',\n 'redo': 'دستور آخر را دوباره اجرا می کند',\n 'tab': 'تب',\n 'untab': 'لغو تب',\n 'bold': 'استایل ضخیم میدهد',\n 'italic': 'استایل مورب میدهد',\n 'underline': 'استایل زیرخط دار میدهد',\n 'strikethrough': 'استایل خط خورده میدهد',\n 'removeFormat': 'حذف همه استایل ها',\n 'justifyLeft': 'چپ چین',\n 'justifyCenter': 'وسط چین',\n 'justifyRight': 'راست چین',\n 'justifyFull': 'چینش در کل عرض',\n 'insertUnorderedList': 'تغییر بع لیست غیرترتیبی',\n 'insertOrderedList': 'تغییر بع لیست ترتیبی',\n 'outdent': 'گذر از پاراگراف فعلی',\n 'indent': 'قرارگیری بر روی پاراگراف جاری',\n 'formatPara': 'تغییر فرمت متن به تگ

      ',\n 'formatH1': 'تغییر فرمت متن به تگ

      ',\n 'formatH2': 'تغییر فرمت متن به تگ

      ',\n 'formatH3': 'تغییر فرمت متن به تگ

      ',\n 'formatH4': 'تغییر فرمت متن به تگ

      ',\n 'formatH5': 'تغییر فرمت متن به تگ

      ',\n 'formatH6': 'تغییر فرمت متن به تگ
      ',\n 'insertHorizontalRule': 'وارد کردن به صورت افقی',\n 'linkDialog.show': 'نمایش پیام لینک',\n },\n history: {\n undo: 'واچیدن',\n redo: 'بازچیدن',\n },\n specialChar: {\n specialChar: 'کاراکتر خاص',\n select: 'انتخاب کاراکتر خاص',\n }, \n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.js b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.js new file mode 100644 index 0000000..13d8283 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.js @@ -0,0 +1,182 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'fi-FI': { + font: { + bold: 'Lihavointi', + italic: 'Kursivointi', + underline: 'Alleviivaus', + clear: 'Tyhjennä muotoilu', + height: 'Riviväli', + name: 'Kirjasintyyppi', + strikethrough: 'Yliviivaus', + subscript: 'Alaindeksi', + superscript: 'Yläindeksi', + size: 'Kirjasinkoko' + }, + image: { + image: 'Kuva', + insert: 'Lisää kuva', + resizeFull: 'Koko leveys', + resizeHalf: 'Puolikas leveys', + resizeQuarter: 'Neljäsosa leveys', + floatLeft: 'Sijoita vasemmalle', + floatRight: 'Sijoita oikealle', + floatNone: 'Ei sijoitusta', + shapeRounded: 'Muoto: Pyöristetty', + shapeCircle: 'Muoto: Ympyrä', + shapeThumbnail: 'Muoto: Esikatselukuva', + shapeNone: 'Muoto: Ei muotoilua', + dragImageHere: 'Vedä kuva tähän', + selectFromFiles: 'Valitse tiedostoista', + maximumFileSize: 'Maksimi tiedosto koko', + maximumFileSizeError: 'Maksimi tiedosto koko ylitetty.', + url: 'URL-osoitteen mukaan', + remove: 'Poista kuva', + original: 'Alkuperäinen' + }, + video: { + video: 'Video', + videoLink: 'Linkki videoon', + insert: 'Lisää video', + url: 'Videon URL-osoite', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)' + }, + link: { + link: 'Linkki', + insert: 'Lisää linkki', + unlink: 'Poista linkki', + edit: 'Muokkaa', + textToDisplay: 'Näytettävä teksti', + url: 'Linkin URL-osoite', + openInNewWindow: 'Avaa uudessa ikkunassa' + }, + table: { + table: 'Taulukko', + addRowAbove: 'Lisää rivi yläpuolelle', + addRowBelow: 'Lisää rivi alapuolelle', + addColLeft: 'Lisää sarake vasemmalle puolelle', + addColRight: 'Lisää sarake oikealle puolelle', + delRow: 'Poista rivi', + delCol: 'Poista sarake', + delTable: 'Poista taulukko' + }, + hr: { + insert: 'Lisää vaakaviiva' + }, + style: { + style: 'Tyyli', + p: 'Normaali', + blockquote: 'Lainaus', + pre: 'Koodi', + h1: 'Otsikko 1', + h2: 'Otsikko 2', + h3: 'Otsikko 3', + h4: 'Otsikko 4', + h5: 'Otsikko 5', + h6: 'Otsikko 6' + }, + lists: { + unordered: 'Luettelomerkitty luettelo', + ordered: 'Numeroitu luettelo' + }, + options: { + help: 'Ohje', + fullscreen: 'Koko näyttö', + codeview: 'HTML-näkymä' + }, + paragraph: { + paragraph: 'Kappale', + outdent: 'Pienennä sisennystä', + indent: 'Suurenna sisennystä', + left: 'Tasaa vasemmalle', + center: 'Keskitä', + right: 'Tasaa oikealle', + justify: 'Tasaa' + }, + color: { + recent: 'Viimeisin väri', + more: 'Lisää värejä', + background: 'Korostusväri', + foreground: 'Tekstin väri', + transparent: 'Läpinäkyvä', + setTransparent: 'Aseta läpinäkyväksi', + reset: 'Palauta', + resetToDefault: 'Palauta oletusarvoksi' + }, + shortcut: { + shortcuts: 'Pikanäppäimet', + close: 'Sulje', + textFormatting: 'Tekstin muotoilu', + action: 'Toiminto', + paragraphFormatting: 'Kappaleen muotoilu', + documentStyle: 'Asiakirjan tyyli' + }, + help: { + 'insertParagraph': 'Lisää kappale', + 'undo': 'Kumoa viimeisin komento', + 'redo': 'Tee uudelleen kumottu komento', + 'tab': 'Sarkain', + 'untab': 'Sarkainmerkin poisto', + 'bold': 'Lihavointi', + 'italic': 'Kursiivi', + 'underline': 'Alleviivaus', + 'strikethrough': 'Yliviivaus', + 'removeFormat': 'Poista asetetut tyylit', + 'justifyLeft': 'Tasaa vasemmalle', + 'justifyCenter': 'Keskitä', + 'justifyRight': 'Tasaa oikealle', + 'justifyFull': 'Tasaa', + 'insertUnorderedList': 'Luettelomerkillä varustettu lista', + 'insertOrderedList': 'Numeroitu lista', + 'outdent': 'Pienennä sisennystä', + 'indent': 'Suurenna sisennystä', + 'formatPara': 'Muuta kappaleen formaatti p', + 'formatH1': 'Muuta kappaleen formaatti H1', + 'formatH2': 'Muuta kappaleen formaatti H2', + 'formatH3': 'Muuta kappaleen formaatti H3', + 'formatH4': 'Muuta kappaleen formaatti H4', + 'formatH5': 'Muuta kappaleen formaatti H5', + 'formatH6': 'Muuta kappaleen formaatti H6', + 'insertHorizontalRule': 'Lisää vaakaviiva', + 'linkDialog.show': 'Lisää linkki' + }, + history: { + undo: 'Kumoa', + redo: 'Toista' + }, + specialChar: { + specialChar: 'ERIKOISMERKIT', + select: 'Valitse erikoismerkit' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-fi-FI.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.js.map new file mode 100644 index 0000000..24a7df1 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-fi-FI.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-fi-FI.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'fi-FI': {\n font: {\n bold: 'Lihavointi',\n italic: 'Kursivointi',\n underline: 'Alleviivaus',\n clear: 'Tyhjennä muotoilu',\n height: 'Riviväli',\n name: 'Kirjasintyyppi',\n strikethrough: 'Yliviivaus',\n subscript: 'Alaindeksi',\n superscript: 'Yläindeksi',\n size: 'Kirjasinkoko',\n },\n image: {\n image: 'Kuva',\n insert: 'Lisää kuva',\n resizeFull: 'Koko leveys',\n resizeHalf: 'Puolikas leveys',\n resizeQuarter: 'Neljäsosa leveys',\n floatLeft: 'Sijoita vasemmalle',\n floatRight: 'Sijoita oikealle',\n floatNone: 'Ei sijoitusta',\n shapeRounded: 'Muoto: Pyöristetty',\n shapeCircle: 'Muoto: Ympyrä',\n shapeThumbnail: 'Muoto: Esikatselukuva',\n shapeNone: 'Muoto: Ei muotoilua',\n dragImageHere: 'Vedä kuva tähän',\n selectFromFiles: 'Valitse tiedostoista',\n maximumFileSize: 'Maksimi tiedosto koko',\n maximumFileSizeError: 'Maksimi tiedosto koko ylitetty.',\n url: 'URL-osoitteen mukaan',\n remove: 'Poista kuva',\n original: 'Alkuperäinen',\n },\n video: {\n video: 'Video',\n videoLink: 'Linkki videoon',\n insert: 'Lisää video',\n url: 'Videon URL-osoite',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)',\n },\n link: {\n link: 'Linkki',\n insert: 'Lisää linkki',\n unlink: 'Poista linkki',\n edit: 'Muokkaa',\n textToDisplay: 'Näytettävä teksti',\n url: 'Linkin URL-osoite',\n openInNewWindow: 'Avaa uudessa ikkunassa',\n },\n table: {\n table: 'Taulukko',\n addRowAbove: 'Lisää rivi yläpuolelle',\n addRowBelow: 'Lisää rivi alapuolelle',\n addColLeft: 'Lisää sarake vasemmalle puolelle',\n addColRight: 'Lisää sarake oikealle puolelle',\n delRow: 'Poista rivi',\n delCol: 'Poista sarake',\n delTable: 'Poista taulukko',\n },\n hr: {\n insert: 'Lisää vaakaviiva',\n },\n style: {\n style: 'Tyyli',\n p: 'Normaali',\n blockquote: 'Lainaus',\n pre: 'Koodi',\n h1: 'Otsikko 1',\n h2: 'Otsikko 2',\n h3: 'Otsikko 3',\n h4: 'Otsikko 4',\n h5: 'Otsikko 5',\n h6: 'Otsikko 6',\n },\n lists: {\n unordered: 'Luettelomerkitty luettelo',\n ordered: 'Numeroitu luettelo',\n },\n options: {\n help: 'Ohje',\n fullscreen: 'Koko näyttö',\n codeview: 'HTML-näkymä',\n },\n paragraph: {\n paragraph: 'Kappale',\n outdent: 'Pienennä sisennystä',\n indent: 'Suurenna sisennystä',\n left: 'Tasaa vasemmalle',\n center: 'Keskitä',\n right: 'Tasaa oikealle',\n justify: 'Tasaa',\n },\n color: {\n recent: 'Viimeisin väri',\n more: 'Lisää värejä',\n background: 'Korostusväri',\n foreground: 'Tekstin väri',\n transparent: 'Läpinäkyvä',\n setTransparent: 'Aseta läpinäkyväksi',\n reset: 'Palauta',\n resetToDefault: 'Palauta oletusarvoksi',\n },\n shortcut: {\n shortcuts: 'Pikanäppäimet',\n close: 'Sulje',\n textFormatting: 'Tekstin muotoilu',\n action: 'Toiminto',\n paragraphFormatting: 'Kappaleen muotoilu',\n documentStyle: 'Asiakirjan tyyli',\n },\n help: {\n 'insertParagraph': 'Lisää kappale',\n 'undo': 'Kumoa viimeisin komento',\n 'redo': 'Tee uudelleen kumottu komento',\n 'tab': 'Sarkain',\n 'untab': 'Sarkainmerkin poisto',\n 'bold': 'Lihavointi',\n 'italic': 'Kursiivi',\n 'underline': 'Alleviivaus',\n 'strikethrough': 'Yliviivaus',\n 'removeFormat': 'Poista asetetut tyylit',\n 'justifyLeft': 'Tasaa vasemmalle',\n 'justifyCenter': 'Keskitä',\n 'justifyRight': 'Tasaa oikealle',\n 'justifyFull': 'Tasaa',\n 'insertUnorderedList': 'Luettelomerkillä varustettu lista',\n 'insertOrderedList': 'Numeroitu lista',\n 'outdent': 'Pienennä sisennystä',\n 'indent': 'Suurenna sisennystä',\n 'formatPara': 'Muuta kappaleen formaatti p',\n 'formatH1': 'Muuta kappaleen formaatti H1',\n 'formatH2': 'Muuta kappaleen formaatti H2',\n 'formatH3': 'Muuta kappaleen formaatti H3',\n 'formatH4': 'Muuta kappaleen formaatti H4',\n 'formatH5': 'Muuta kappaleen formaatti H5',\n 'formatH6': 'Muuta kappaleen formaatti H6',\n 'insertHorizontalRule': 'Lisää vaakaviiva',\n 'linkDialog.show': 'Lisää linkki',\n },\n history: {\n undo: 'Kumoa',\n redo: 'Toista',\n },\n specialChar: {\n specialChar: 'ERIKOISMERKIT',\n select: 'Valitse erikoismerkit',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.min.js new file mode 100644 index 0000000..3b4a451 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var a=i();for(var t in a)("object"==typeof exports?exports:e)[t]=a[t]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"fi-FI":{font:{bold:"Lihavointi",italic:"Kursivointi",underline:"Alleviivaus",clear:"Tyhjennä muotoilu",height:"Riviväli",name:"Kirjasintyyppi",strikethrough:"Yliviivaus",subscript:"Alaindeksi",superscript:"Yläindeksi",size:"Kirjasinkoko"},image:{image:"Kuva",insert:"Lisää kuva",resizeFull:"Koko leveys",resizeHalf:"Puolikas leveys",resizeQuarter:"Neljäsosa leveys",floatLeft:"Sijoita vasemmalle",floatRight:"Sijoita oikealle",floatNone:"Ei sijoitusta",shapeRounded:"Muoto: Pyöristetty",shapeCircle:"Muoto: Ympyrä",shapeThumbnail:"Muoto: Esikatselukuva",shapeNone:"Muoto: Ei muotoilua",dragImageHere:"Vedä kuva tähän",selectFromFiles:"Valitse tiedostoista",maximumFileSize:"Maksimi tiedosto koko",maximumFileSizeError:"Maksimi tiedosto koko ylitetty.",url:"URL-osoitteen mukaan",remove:"Poista kuva",original:"Alkuperäinen"},video:{video:"Video",videoLink:"Linkki videoon",insert:"Lisää video",url:"Videon URL-osoite",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)"},link:{link:"Linkki",insert:"Lisää linkki",unlink:"Poista linkki",edit:"Muokkaa",textToDisplay:"Näytettävä teksti",url:"Linkin URL-osoite",openInNewWindow:"Avaa uudessa ikkunassa"},table:{table:"Taulukko",addRowAbove:"Lisää rivi yläpuolelle",addRowBelow:"Lisää rivi alapuolelle",addColLeft:"Lisää sarake vasemmalle puolelle",addColRight:"Lisää sarake oikealle puolelle",delRow:"Poista rivi",delCol:"Poista sarake",delTable:"Poista taulukko"},hr:{insert:"Lisää vaakaviiva"},style:{style:"Tyyli",p:"Normaali",blockquote:"Lainaus",pre:"Koodi",h1:"Otsikko 1",h2:"Otsikko 2",h3:"Otsikko 3",h4:"Otsikko 4",h5:"Otsikko 5",h6:"Otsikko 6"},lists:{unordered:"Luettelomerkitty luettelo",ordered:"Numeroitu luettelo"},options:{help:"Ohje",fullscreen:"Koko näyttö",codeview:"HTML-näkymä"},paragraph:{paragraph:"Kappale",outdent:"Pienennä sisennystä",indent:"Suurenna sisennystä",left:"Tasaa vasemmalle",center:"Keskitä",right:"Tasaa oikealle",justify:"Tasaa"},color:{recent:"Viimeisin väri",more:"Lisää värejä",background:"Korostusväri",foreground:"Tekstin väri",transparent:"Läpinäkyvä",setTransparent:"Aseta läpinäkyväksi",reset:"Palauta",resetToDefault:"Palauta oletusarvoksi"},shortcut:{shortcuts:"Pikanäppäimet",close:"Sulje",textFormatting:"Tekstin muotoilu",action:"Toiminto",paragraphFormatting:"Kappaleen muotoilu",documentStyle:"Asiakirjan tyyli"},help:{insertParagraph:"Lisää kappale",undo:"Kumoa viimeisin komento",redo:"Tee uudelleen kumottu komento",tab:"Sarkain",untab:"Sarkainmerkin poisto",bold:"Lihavointi",italic:"Kursiivi",underline:"Alleviivaus",strikethrough:"Yliviivaus",removeFormat:"Poista asetetut tyylit",justifyLeft:"Tasaa vasemmalle",justifyCenter:"Keskitä",justifyRight:"Tasaa oikealle",justifyFull:"Tasaa",insertUnorderedList:"Luettelomerkillä varustettu lista",insertOrderedList:"Numeroitu lista",outdent:"Pienennä sisennystä",indent:"Suurenna sisennystä",formatPara:"Muuta kappaleen formaatti p",formatH1:"Muuta kappaleen formaatti H1",formatH2:"Muuta kappaleen formaatti H2",formatH3:"Muuta kappaleen formaatti H3",formatH4:"Muuta kappaleen formaatti H4",formatH5:"Muuta kappaleen formaatti H5",formatH6:"Muuta kappaleen formaatti H6",insertHorizontalRule:"Lisää vaakaviiva","linkDialog.show":"Lisää linkki"},history:{undo:"Kumoa",redo:"Toista"},specialChar:{specialChar:"ERIKOISMERKIT",select:"Valitse erikoismerkit"}}}),{};var e})); +//# sourceMappingURL=summernote-fi-FI.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.min.js.map new file mode 100644 index 0000000..9e7daff --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fi-FI.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-fi-FI.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EAwJPC,QAvJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,aACNC,OAAQ,cACRC,UAAW,cACXC,MAAO,oBACPC,OAAQ,WACRC,KAAM,iBACNC,cAAe,aACfC,UAAW,aACXC,YAAa,aACbC,KAAM,gBAERC,MAAO,CACLA,MAAO,OACPC,OAAQ,aACRC,WAAY,cACZC,WAAY,kBACZC,cAAe,mBACfC,UAAW,qBACXC,WAAY,mBACZC,UAAW,gBACXC,aAAc,qBACdC,YAAa,gBACbC,eAAgB,wBAChBC,UAAW,sBACXC,cAAe,kBACfC,gBAAiB,uBACjBC,gBAAiB,wBACjBC,qBAAsB,kCACtBC,IAAK,uBACLC,OAAQ,cACRC,SAAU,gBAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,iBACXnB,OAAQ,cACRe,IAAK,oBACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,SACNrB,OAAQ,eACRsB,OAAQ,gBACRC,KAAM,UACNC,cAAe,oBACfT,IAAK,oBACLU,gBAAiB,0BAEnBC,MAAO,CACLA,MAAO,WACPC,YAAa,yBACbC,YAAa,yBACbC,WAAY,mCACZC,YAAa,iCACbC,OAAQ,cACRC,OAAQ,gBACRC,SAAU,mBAEZC,GAAI,CACFlC,OAAQ,oBAEVmC,MAAO,CACLA,MAAO,QACPC,EAAG,WACHC,WAAY,UACZC,IAAK,QACLC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,aAENC,MAAO,CACLC,UAAW,4BACXC,QAAS,sBAEXC,QAAS,CACPC,KAAM,OACNC,WAAY,cACZC,SAAU,eAEZC,UAAW,CACTA,UAAW,UACXC,QAAS,sBACTC,OAAQ,sBACRC,KAAM,mBACNC,OAAQ,UACRC,MAAO,iBACPC,QAAS,SAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,eACNC,WAAY,eACZC,WAAY,eACZC,YAAa,aACbC,eAAgB,sBAChBC,MAAO,UACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,gBACXC,MAAO,QACPC,eAAgB,mBAChBC,OAAQ,WACRC,oBAAqB,qBACrBC,cAAe,oBAEjBzB,KAAM,CACJ,gBAAmB,gBACnB,KAAQ,0BACR,KAAQ,gCACR,IAAO,UACP,MAAS,uBACT,KAAQ,aACR,OAAU,WACV,UAAa,cACb,cAAiB,aACjB,aAAgB,yBAChB,YAAe,mBACf,cAAiB,UACjB,aAAgB,iBAChB,YAAe,QACf,oBAAuB,oCACvB,kBAAqB,kBACrB,QAAW,sBACX,OAAU,sBACV,WAAc,8BACd,SAAY,+BACZ,SAAY,+BACZ,SAAY,+BACZ,SAAY,+BACZ,SAAY,+BACZ,SAAY,+BACZ,qBAAwB,mBACxB,kBAAmB,gBAErB0B,QAAS,CACPC,KAAM,QACNC,KAAM,UAERC,YAAa,CACXA,YAAa,gBACbC,OAAQ,4B,GD1IhB,ICVUhG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-fi-FI.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'fi-FI': {\n font: {\n bold: 'Lihavointi',\n italic: 'Kursivointi',\n underline: 'Alleviivaus',\n clear: 'Tyhjennä muotoilu',\n height: 'Riviväli',\n name: 'Kirjasintyyppi',\n strikethrough: 'Yliviivaus',\n subscript: 'Alaindeksi',\n superscript: 'Yläindeksi',\n size: 'Kirjasinkoko',\n },\n image: {\n image: 'Kuva',\n insert: 'Lisää kuva',\n resizeFull: 'Koko leveys',\n resizeHalf: 'Puolikas leveys',\n resizeQuarter: 'Neljäsosa leveys',\n floatLeft: 'Sijoita vasemmalle',\n floatRight: 'Sijoita oikealle',\n floatNone: 'Ei sijoitusta',\n shapeRounded: 'Muoto: Pyöristetty',\n shapeCircle: 'Muoto: Ympyrä',\n shapeThumbnail: 'Muoto: Esikatselukuva',\n shapeNone: 'Muoto: Ei muotoilua',\n dragImageHere: 'Vedä kuva tähän',\n selectFromFiles: 'Valitse tiedostoista',\n maximumFileSize: 'Maksimi tiedosto koko',\n maximumFileSizeError: 'Maksimi tiedosto koko ylitetty.',\n url: 'URL-osoitteen mukaan',\n remove: 'Poista kuva',\n original: 'Alkuperäinen',\n },\n video: {\n video: 'Video',\n videoLink: 'Linkki videoon',\n insert: 'Lisää video',\n url: 'Videon URL-osoite',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)',\n },\n link: {\n link: 'Linkki',\n insert: 'Lisää linkki',\n unlink: 'Poista linkki',\n edit: 'Muokkaa',\n textToDisplay: 'Näytettävä teksti',\n url: 'Linkin URL-osoite',\n openInNewWindow: 'Avaa uudessa ikkunassa',\n },\n table: {\n table: 'Taulukko',\n addRowAbove: 'Lisää rivi yläpuolelle',\n addRowBelow: 'Lisää rivi alapuolelle',\n addColLeft: 'Lisää sarake vasemmalle puolelle',\n addColRight: 'Lisää sarake oikealle puolelle',\n delRow: 'Poista rivi',\n delCol: 'Poista sarake',\n delTable: 'Poista taulukko',\n },\n hr: {\n insert: 'Lisää vaakaviiva',\n },\n style: {\n style: 'Tyyli',\n p: 'Normaali',\n blockquote: 'Lainaus',\n pre: 'Koodi',\n h1: 'Otsikko 1',\n h2: 'Otsikko 2',\n h3: 'Otsikko 3',\n h4: 'Otsikko 4',\n h5: 'Otsikko 5',\n h6: 'Otsikko 6',\n },\n lists: {\n unordered: 'Luettelomerkitty luettelo',\n ordered: 'Numeroitu luettelo',\n },\n options: {\n help: 'Ohje',\n fullscreen: 'Koko näyttö',\n codeview: 'HTML-näkymä',\n },\n paragraph: {\n paragraph: 'Kappale',\n outdent: 'Pienennä sisennystä',\n indent: 'Suurenna sisennystä',\n left: 'Tasaa vasemmalle',\n center: 'Keskitä',\n right: 'Tasaa oikealle',\n justify: 'Tasaa',\n },\n color: {\n recent: 'Viimeisin väri',\n more: 'Lisää värejä',\n background: 'Korostusväri',\n foreground: 'Tekstin väri',\n transparent: 'Läpinäkyvä',\n setTransparent: 'Aseta läpinäkyväksi',\n reset: 'Palauta',\n resetToDefault: 'Palauta oletusarvoksi',\n },\n shortcut: {\n shortcuts: 'Pikanäppäimet',\n close: 'Sulje',\n textFormatting: 'Tekstin muotoilu',\n action: 'Toiminto',\n paragraphFormatting: 'Kappaleen muotoilu',\n documentStyle: 'Asiakirjan tyyli',\n },\n help: {\n 'insertParagraph': 'Lisää kappale',\n 'undo': 'Kumoa viimeisin komento',\n 'redo': 'Tee uudelleen kumottu komento',\n 'tab': 'Sarkain',\n 'untab': 'Sarkainmerkin poisto',\n 'bold': 'Lihavointi',\n 'italic': 'Kursiivi',\n 'underline': 'Alleviivaus',\n 'strikethrough': 'Yliviivaus',\n 'removeFormat': 'Poista asetetut tyylit',\n 'justifyLeft': 'Tasaa vasemmalle',\n 'justifyCenter': 'Keskitä',\n 'justifyRight': 'Tasaa oikealle',\n 'justifyFull': 'Tasaa',\n 'insertUnorderedList': 'Luettelomerkillä varustettu lista',\n 'insertOrderedList': 'Numeroitu lista',\n 'outdent': 'Pienennä sisennystä',\n 'indent': 'Suurenna sisennystä',\n 'formatPara': 'Muuta kappaleen formaatti p',\n 'formatH1': 'Muuta kappaleen formaatti H1',\n 'formatH2': 'Muuta kappaleen formaatti H2',\n 'formatH3': 'Muuta kappaleen formaatti H3',\n 'formatH4': 'Muuta kappaleen formaatti H4',\n 'formatH5': 'Muuta kappaleen formaatti H5',\n 'formatH6': 'Muuta kappaleen formaatti H6',\n 'insertHorizontalRule': 'Lisää vaakaviiva',\n 'linkDialog.show': 'Lisää linkki',\n },\n history: {\n undo: 'Kumoa',\n redo: 'Toista',\n },\n specialChar: {\n specialChar: 'ERIKOISMERKIT',\n select: 'Valitse erikoismerkit',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.js b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.js new file mode 100644 index 0000000..be60742 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'fr-FR': { + font: { + bold: 'Gras', + italic: 'Italique', + underline: 'Souligné', + clear: 'Effacer la mise en forme', + height: 'Interligne', + name: 'Famille de police', + strikethrough: 'Barré', + superscript: 'Exposant', + subscript: 'Indice', + size: 'Taille de police' + }, + image: { + image: 'Image', + insert: 'Insérer une image', + resizeFull: 'Taille originale', + resizeHalf: 'Redimensionner à 50 %', + resizeQuarter: 'Redimensionner à 25 %', + floatLeft: 'Aligné à gauche', + floatRight: 'Aligné à droite', + floatNone: 'Pas d\'alignement', + shapeRounded: 'Forme: Rectangle arrondi', + shapeCircle: 'Forme: Cercle', + shapeThumbnail: 'Forme: Vignette', + shapeNone: 'Forme: Aucune', + dragImageHere: 'Faites glisser une image ou un texte dans ce cadre', + dropImage: 'Lachez l\'image ou le texte', + selectFromFiles: 'Choisir un fichier', + maximumFileSize: 'Taille de fichier maximale', + maximumFileSizeError: 'Taille maximale du fichier dépassée', + url: 'URL de l\'image', + remove: 'Supprimer l\'image', + original: 'Original' + }, + video: { + video: 'Vidéo', + videoLink: 'Lien vidéo', + insert: 'Insérer une vidéo', + url: 'URL de la vidéo', + providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Lien', + insert: 'Insérer un lien', + unlink: 'Supprimer un lien', + edit: 'Modifier', + textToDisplay: 'Texte à afficher', + url: 'URL du lien', + openInNewWindow: 'Ouvrir dans une nouvelle fenêtre', + useProtocol: 'Utiliser le protocole par défaut' + }, + table: { + table: 'Tableau', + addRowAbove: 'Ajouter une ligne au-dessus', + addRowBelow: 'Ajouter une ligne en dessous', + addColLeft: 'Ajouter une colonne à gauche', + addColRight: 'Ajouter une colonne à droite', + delRow: 'Supprimer la ligne', + delCol: 'Supprimer la colonne', + delTable: 'Supprimer le tableau' + }, + hr: { + insert: 'Insérer une ligne horizontale' + }, + style: { + style: 'Style', + p: 'Normal', + blockquote: 'Citation', + pre: 'Code source', + h1: 'Titre 1', + h2: 'Titre 2', + h3: 'Titre 3', + h4: 'Titre 4', + h5: 'Titre 5', + h6: 'Titre 6' + }, + lists: { + unordered: 'Liste à puces', + ordered: 'Liste numérotée' + }, + options: { + help: 'Aide', + fullscreen: 'Plein écran', + codeview: 'Afficher le code HTML' + }, + paragraph: { + paragraph: 'Paragraphe', + outdent: 'Diminuer le retrait', + indent: 'Augmenter le retrait', + left: 'Aligner à gauche', + center: 'Centrer', + right: 'Aligner à droite', + justify: 'Justifier' + }, + color: { + recent: 'Dernière couleur sélectionnée', + more: 'Plus de couleurs', + background: 'Couleur de fond', + foreground: 'Couleur de police', + transparent: 'Transparent', + setTransparent: 'Définir la transparence', + reset: 'Restaurer', + resetToDefault: 'Restaurer la couleur par défaut' + }, + shortcut: { + shortcuts: 'Raccourcis', + close: 'Fermer', + textFormatting: 'Mise en forme du texte', + action: 'Action', + paragraphFormatting: 'Mise en forme des paragraphes', + documentStyle: 'Style du document', + extraKeys: 'Touches supplémentaires' + }, + help: { + 'insertParagraph': 'Insérer paragraphe', + 'undo': 'Défaire la dernière commande', + 'redo': 'Refaire la dernière commande', + 'tab': 'Tabulation', + 'untab': 'Tabulation arrière', + 'bold': 'Mettre en caractère gras', + 'italic': 'Mettre en italique', + 'underline': 'Mettre en souligné', + 'strikethrough': 'Mettre en texte barré', + 'removeFormat': 'Nettoyer les styles', + 'justifyLeft': 'Aligner à gauche', + 'justifyCenter': 'Centrer', + 'justifyRight': 'Aligner à droite', + 'justifyFull': 'Justifier à gauche et à droite', + 'insertUnorderedList': 'Basculer liste à puces', + 'insertOrderedList': 'Basculer liste ordonnée', + 'outdent': 'Diminuer le retrait du paragraphe', + 'indent': 'Augmenter le retrait du paragraphe', + 'formatPara': 'Changer le paragraphe en cours en normal (P)', + 'formatH1': 'Changer le paragraphe en cours en entête H1', + 'formatH2': 'Changer le paragraphe en cours en entête H2', + 'formatH3': 'Changer le paragraphe en cours en entête H3', + 'formatH4': 'Changer le paragraphe en cours en entête H4', + 'formatH5': 'Changer le paragraphe en cours en entête H5', + 'formatH6': 'Changer le paragraphe en cours en entête H6', + 'insertHorizontalRule': 'Insérer séparation horizontale', + 'linkDialog.show': 'Afficher fenêtre d\'hyperlien' + }, + history: { + undo: 'Annuler la dernière action', + redo: 'Restaurer la dernière action annulée' + }, + specialChar: { + specialChar: 'Caractères spéciaux', + select: 'Choisir des caractères spéciaux' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-fr-FR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.js.map new file mode 100644 index 0000000..167c041 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-fr-FR.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-fr-FR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'fr-FR': {\n font: {\n bold: 'Gras',\n italic: 'Italique',\n underline: 'Souligné',\n clear: 'Effacer la mise en forme',\n height: 'Interligne',\n name: 'Famille de police',\n strikethrough: 'Barré',\n superscript: 'Exposant',\n subscript: 'Indice',\n size: 'Taille de police',\n },\n image: {\n image: 'Image',\n insert: 'Insérer une image',\n resizeFull: 'Taille originale',\n resizeHalf: 'Redimensionner à 50 %',\n resizeQuarter: 'Redimensionner à 25 %',\n floatLeft: 'Aligné à gauche',\n floatRight: 'Aligné à droite',\n floatNone: 'Pas d\\'alignement',\n shapeRounded: 'Forme: Rectangle arrondi',\n shapeCircle: 'Forme: Cercle',\n shapeThumbnail: 'Forme: Vignette',\n shapeNone: 'Forme: Aucune',\n dragImageHere: 'Faites glisser une image ou un texte dans ce cadre',\n dropImage: 'Lachez l\\'image ou le texte',\n selectFromFiles: 'Choisir un fichier',\n maximumFileSize: 'Taille de fichier maximale',\n maximumFileSizeError: 'Taille maximale du fichier dépassée',\n url: 'URL de l\\'image',\n remove: 'Supprimer l\\'image',\n original: 'Original',\n },\n video: {\n video: 'Vidéo',\n videoLink: 'Lien vidéo',\n insert: 'Insérer une vidéo',\n url: 'URL de la vidéo',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Lien',\n insert: 'Insérer un lien',\n unlink: 'Supprimer un lien',\n edit: 'Modifier',\n textToDisplay: 'Texte à afficher',\n url: 'URL du lien',\n openInNewWindow: 'Ouvrir dans une nouvelle fenêtre',\n useProtocol: 'Utiliser le protocole par défaut',\n },\n table: {\n table: 'Tableau',\n addRowAbove: 'Ajouter une ligne au-dessus',\n addRowBelow: 'Ajouter une ligne en dessous',\n addColLeft: 'Ajouter une colonne à gauche',\n addColRight: 'Ajouter une colonne à droite',\n delRow: 'Supprimer la ligne',\n delCol: 'Supprimer la colonne',\n delTable: 'Supprimer le tableau',\n },\n hr: {\n insert: 'Insérer une ligne horizontale',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Citation',\n pre: 'Code source',\n h1: 'Titre 1',\n h2: 'Titre 2',\n h3: 'Titre 3',\n h4: 'Titre 4',\n h5: 'Titre 5',\n h6: 'Titre 6',\n },\n lists: {\n unordered: 'Liste à puces',\n ordered: 'Liste numérotée',\n },\n options: {\n help: 'Aide',\n fullscreen: 'Plein écran',\n codeview: 'Afficher le code HTML',\n },\n paragraph: {\n paragraph: 'Paragraphe',\n outdent: 'Diminuer le retrait',\n indent: 'Augmenter le retrait',\n left: 'Aligner à gauche',\n center: 'Centrer',\n right: 'Aligner à droite',\n justify: 'Justifier',\n },\n color: {\n recent: 'Dernière couleur sélectionnée',\n more: 'Plus de couleurs',\n background: 'Couleur de fond',\n foreground: 'Couleur de police',\n transparent: 'Transparent',\n setTransparent: 'Définir la transparence',\n reset: 'Restaurer',\n resetToDefault: 'Restaurer la couleur par défaut',\n },\n shortcut: {\n shortcuts: 'Raccourcis',\n close: 'Fermer',\n textFormatting: 'Mise en forme du texte',\n action: 'Action',\n paragraphFormatting: 'Mise en forme des paragraphes',\n documentStyle: 'Style du document',\n extraKeys: 'Touches supplémentaires',\n },\n help: {\n 'insertParagraph': 'Insérer paragraphe',\n 'undo': 'Défaire la dernière commande',\n 'redo': 'Refaire la dernière commande',\n 'tab': 'Tabulation',\n 'untab': 'Tabulation arrière',\n 'bold': 'Mettre en caractère gras',\n 'italic': 'Mettre en italique',\n 'underline': 'Mettre en souligné',\n 'strikethrough': 'Mettre en texte barré',\n 'removeFormat': 'Nettoyer les styles',\n 'justifyLeft': 'Aligner à gauche',\n 'justifyCenter': 'Centrer',\n 'justifyRight': 'Aligner à droite',\n 'justifyFull': 'Justifier à gauche et à droite',\n 'insertUnorderedList': 'Basculer liste à puces',\n 'insertOrderedList': 'Basculer liste ordonnée',\n 'outdent': 'Diminuer le retrait du paragraphe',\n 'indent': 'Augmenter le retrait du paragraphe',\n 'formatPara': 'Changer le paragraphe en cours en normal (P)',\n 'formatH1': 'Changer le paragraphe en cours en entête H1',\n 'formatH2': 'Changer le paragraphe en cours en entête H2',\n 'formatH3': 'Changer le paragraphe en cours en entête H3',\n 'formatH4': 'Changer le paragraphe en cours en entête H4',\n 'formatH5': 'Changer le paragraphe en cours en entête H5',\n 'formatH6': 'Changer le paragraphe en cours en entête H6',\n 'insertHorizontalRule': 'Insérer séparation horizontale',\n 'linkDialog.show': 'Afficher fenêtre d\\'hyperlien',\n },\n history: {\n undo: 'Annuler la dernière action',\n redo: 'Restaurer la dernière action annulée',\n },\n specialChar: {\n specialChar: 'Caractères spéciaux',\n select: 'Choisir des caractères spéciaux',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.min.js new file mode 100644 index 0000000..2ad49ab --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var a=r();for(var i in a)("object"==typeof exports?exports:e)[i]=a[i]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"fr-FR":{font:{bold:"Gras",italic:"Italique",underline:"Souligné",clear:"Effacer la mise en forme",height:"Interligne",name:"Famille de police",strikethrough:"Barré",superscript:"Exposant",subscript:"Indice",size:"Taille de police"},image:{image:"Image",insert:"Insérer une image",resizeFull:"Taille originale",resizeHalf:"Redimensionner à 50 %",resizeQuarter:"Redimensionner à 25 %",floatLeft:"Aligné à gauche",floatRight:"Aligné à droite",floatNone:"Pas d'alignement",shapeRounded:"Forme: Rectangle arrondi",shapeCircle:"Forme: Cercle",shapeThumbnail:"Forme: Vignette",shapeNone:"Forme: Aucune",dragImageHere:"Faites glisser une image ou un texte dans ce cadre",dropImage:"Lachez l'image ou le texte",selectFromFiles:"Choisir un fichier",maximumFileSize:"Taille de fichier maximale",maximumFileSizeError:"Taille maximale du fichier dépassée",url:"URL de l'image",remove:"Supprimer l'image",original:"Original"},video:{video:"Vidéo",videoLink:"Lien vidéo",insert:"Insérer une vidéo",url:"URL de la vidéo",providers:"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Lien",insert:"Insérer un lien",unlink:"Supprimer un lien",edit:"Modifier",textToDisplay:"Texte à afficher",url:"URL du lien",openInNewWindow:"Ouvrir dans une nouvelle fenêtre",useProtocol:"Utiliser le protocole par défaut"},table:{table:"Tableau",addRowAbove:"Ajouter une ligne au-dessus",addRowBelow:"Ajouter une ligne en dessous",addColLeft:"Ajouter une colonne à gauche",addColRight:"Ajouter une colonne à droite",delRow:"Supprimer la ligne",delCol:"Supprimer la colonne",delTable:"Supprimer le tableau"},hr:{insert:"Insérer une ligne horizontale"},style:{style:"Style",p:"Normal",blockquote:"Citation",pre:"Code source",h1:"Titre 1",h2:"Titre 2",h3:"Titre 3",h4:"Titre 4",h5:"Titre 5",h6:"Titre 6"},lists:{unordered:"Liste à puces",ordered:"Liste numérotée"},options:{help:"Aide",fullscreen:"Plein écran",codeview:"Afficher le code HTML"},paragraph:{paragraph:"Paragraphe",outdent:"Diminuer le retrait",indent:"Augmenter le retrait",left:"Aligner à gauche",center:"Centrer",right:"Aligner à droite",justify:"Justifier"},color:{recent:"Dernière couleur sélectionnée",more:"Plus de couleurs",background:"Couleur de fond",foreground:"Couleur de police",transparent:"Transparent",setTransparent:"Définir la transparence",reset:"Restaurer",resetToDefault:"Restaurer la couleur par défaut"},shortcut:{shortcuts:"Raccourcis",close:"Fermer",textFormatting:"Mise en forme du texte",action:"Action",paragraphFormatting:"Mise en forme des paragraphes",documentStyle:"Style du document",extraKeys:"Touches supplémentaires"},help:{insertParagraph:"Insérer paragraphe",undo:"Défaire la dernière commande",redo:"Refaire la dernière commande",tab:"Tabulation",untab:"Tabulation arrière",bold:"Mettre en caractère gras",italic:"Mettre en italique",underline:"Mettre en souligné",strikethrough:"Mettre en texte barré",removeFormat:"Nettoyer les styles",justifyLeft:"Aligner à gauche",justifyCenter:"Centrer",justifyRight:"Aligner à droite",justifyFull:"Justifier à gauche et à droite",insertUnorderedList:"Basculer liste à puces",insertOrderedList:"Basculer liste ordonnée",outdent:"Diminuer le retrait du paragraphe",indent:"Augmenter le retrait du paragraphe",formatPara:"Changer le paragraphe en cours en normal (P)",formatH1:"Changer le paragraphe en cours en entête H1",formatH2:"Changer le paragraphe en cours en entête H2",formatH3:"Changer le paragraphe en cours en entête H3",formatH4:"Changer le paragraphe en cours en entête H4",formatH5:"Changer le paragraphe en cours en entête H5",formatH6:"Changer le paragraphe en cours en entête H6",insertHorizontalRule:"Insérer séparation horizontale","linkDialog.show":"Afficher fenêtre d'hyperlien"},history:{undo:"Annuler la dernière action",redo:"Restaurer la dernière action annulée"},specialChar:{specialChar:"Caractères spéciaux",select:"Choisir des caractères spéciaux"}}}),{};var e})); +//# sourceMappingURL=summernote-fr-FR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.min.js.map new file mode 100644 index 0000000..3f940c3 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-fr-FR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-fr-FR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,OACNC,OAAQ,WACRC,UAAW,WACXC,MAAO,2BACPC,OAAQ,aACRC,KAAM,oBACNC,cAAe,QACfC,YAAa,WACbC,UAAW,SACXC,KAAM,oBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,oBACRC,WAAY,mBACZC,WAAY,wBACZC,cAAe,wBACfC,UAAW,kBACXC,WAAY,kBACZC,UAAW,mBACXC,aAAc,2BACdC,YAAa,gBACbC,eAAgB,kBAChBC,UAAW,gBACXC,cAAe,qDACfC,UAAW,6BACXC,gBAAiB,qBACjBC,gBAAiB,6BACjBC,qBAAsB,sCACtBC,IAAK,iBACLC,OAAQ,oBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,oBACRgB,IAAK,kBACLK,UAAW,yEAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,kBACRuB,OAAQ,oBACRC,KAAM,WACNC,cAAe,mBACfT,IAAK,cACLU,gBAAiB,mCACjBC,YAAa,oCAEfC,MAAO,CACLA,MAAO,UACPC,YAAa,8BACbC,YAAa,+BACbC,WAAY,+BACZC,YAAa,+BACbC,OAAQ,qBACRC,OAAQ,uBACRC,SAAU,wBAEZC,GAAI,CACFpC,OAAQ,iCAEVqC,MAAO,CACLA,MAAO,QACPC,EAAG,SACHC,WAAY,WACZC,IAAK,cACLC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,WAENC,MAAO,CACLC,UAAW,gBACXC,QAAS,mBAEXC,QAAS,CACPC,KAAM,OACNC,WAAY,cACZC,SAAU,yBAEZC,UAAW,CACTA,UAAW,aACXC,QAAS,sBACTC,OAAQ,uBACRC,KAAM,mBACNC,OAAQ,UACRC,MAAO,mBACPC,QAAS,aAEXC,MAAO,CACLC,OAAQ,gCACRC,KAAM,mBACNC,WAAY,kBACZC,WAAY,oBACZC,YAAa,cACbC,eAAgB,0BAChBC,MAAO,YACPC,eAAgB,mCAElBC,SAAU,CACRC,UAAW,aACXC,MAAO,SACPC,eAAgB,yBAChBC,OAAQ,SACRC,oBAAqB,gCACrBC,cAAe,oBACfC,UAAW,2BAEb1B,KAAM,CACJ,gBAAmB,qBACnB,KAAQ,+BACR,KAAQ,+BACR,IAAO,aACP,MAAS,qBACT,KAAQ,2BACR,OAAU,qBACV,UAAa,qBACb,cAAiB,wBACjB,aAAgB,sBAChB,YAAe,mBACf,cAAiB,UACjB,aAAgB,mBAChB,YAAe,iCACf,oBAAuB,yBACvB,kBAAqB,0BACrB,QAAW,oCACX,OAAU,qCACV,WAAc,+CACd,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,SAAY,8CACZ,qBAAwB,iCACxB,kBAAmB,gCAErB2B,QAAS,CACPC,KAAM,6BACNC,KAAM,wCAERC,YAAa,CACXA,YAAa,sBACbC,OAAQ,sC,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-fr-FR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'fr-FR': {\n font: {\n bold: 'Gras',\n italic: 'Italique',\n underline: 'Souligné',\n clear: 'Effacer la mise en forme',\n height: 'Interligne',\n name: 'Famille de police',\n strikethrough: 'Barré',\n superscript: 'Exposant',\n subscript: 'Indice',\n size: 'Taille de police',\n },\n image: {\n image: 'Image',\n insert: 'Insérer une image',\n resizeFull: 'Taille originale',\n resizeHalf: 'Redimensionner à 50 %',\n resizeQuarter: 'Redimensionner à 25 %',\n floatLeft: 'Aligné à gauche',\n floatRight: 'Aligné à droite',\n floatNone: 'Pas d\\'alignement',\n shapeRounded: 'Forme: Rectangle arrondi',\n shapeCircle: 'Forme: Cercle',\n shapeThumbnail: 'Forme: Vignette',\n shapeNone: 'Forme: Aucune',\n dragImageHere: 'Faites glisser une image ou un texte dans ce cadre',\n dropImage: 'Lachez l\\'image ou le texte',\n selectFromFiles: 'Choisir un fichier',\n maximumFileSize: 'Taille de fichier maximale',\n maximumFileSizeError: 'Taille maximale du fichier dépassée',\n url: 'URL de l\\'image',\n remove: 'Supprimer l\\'image',\n original: 'Original',\n },\n video: {\n video: 'Vidéo',\n videoLink: 'Lien vidéo',\n insert: 'Insérer une vidéo',\n url: 'URL de la vidéo',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Lien',\n insert: 'Insérer un lien',\n unlink: 'Supprimer un lien',\n edit: 'Modifier',\n textToDisplay: 'Texte à afficher',\n url: 'URL du lien',\n openInNewWindow: 'Ouvrir dans une nouvelle fenêtre',\n useProtocol: 'Utiliser le protocole par défaut',\n },\n table: {\n table: 'Tableau',\n addRowAbove: 'Ajouter une ligne au-dessus',\n addRowBelow: 'Ajouter une ligne en dessous',\n addColLeft: 'Ajouter une colonne à gauche',\n addColRight: 'Ajouter une colonne à droite',\n delRow: 'Supprimer la ligne',\n delCol: 'Supprimer la colonne',\n delTable: 'Supprimer le tableau',\n },\n hr: {\n insert: 'Insérer une ligne horizontale',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Citation',\n pre: 'Code source',\n h1: 'Titre 1',\n h2: 'Titre 2',\n h3: 'Titre 3',\n h4: 'Titre 4',\n h5: 'Titre 5',\n h6: 'Titre 6',\n },\n lists: {\n unordered: 'Liste à puces',\n ordered: 'Liste numérotée',\n },\n options: {\n help: 'Aide',\n fullscreen: 'Plein écran',\n codeview: 'Afficher le code HTML',\n },\n paragraph: {\n paragraph: 'Paragraphe',\n outdent: 'Diminuer le retrait',\n indent: 'Augmenter le retrait',\n left: 'Aligner à gauche',\n center: 'Centrer',\n right: 'Aligner à droite',\n justify: 'Justifier',\n },\n color: {\n recent: 'Dernière couleur sélectionnée',\n more: 'Plus de couleurs',\n background: 'Couleur de fond',\n foreground: 'Couleur de police',\n transparent: 'Transparent',\n setTransparent: 'Définir la transparence',\n reset: 'Restaurer',\n resetToDefault: 'Restaurer la couleur par défaut',\n },\n shortcut: {\n shortcuts: 'Raccourcis',\n close: 'Fermer',\n textFormatting: 'Mise en forme du texte',\n action: 'Action',\n paragraphFormatting: 'Mise en forme des paragraphes',\n documentStyle: 'Style du document',\n extraKeys: 'Touches supplémentaires',\n },\n help: {\n 'insertParagraph': 'Insérer paragraphe',\n 'undo': 'Défaire la dernière commande',\n 'redo': 'Refaire la dernière commande',\n 'tab': 'Tabulation',\n 'untab': 'Tabulation arrière',\n 'bold': 'Mettre en caractère gras',\n 'italic': 'Mettre en italique',\n 'underline': 'Mettre en souligné',\n 'strikethrough': 'Mettre en texte barré',\n 'removeFormat': 'Nettoyer les styles',\n 'justifyLeft': 'Aligner à gauche',\n 'justifyCenter': 'Centrer',\n 'justifyRight': 'Aligner à droite',\n 'justifyFull': 'Justifier à gauche et à droite',\n 'insertUnorderedList': 'Basculer liste à puces',\n 'insertOrderedList': 'Basculer liste ordonnée',\n 'outdent': 'Diminuer le retrait du paragraphe',\n 'indent': 'Augmenter le retrait du paragraphe',\n 'formatPara': 'Changer le paragraphe en cours en normal (P)',\n 'formatH1': 'Changer le paragraphe en cours en entête H1',\n 'formatH2': 'Changer le paragraphe en cours en entête H2',\n 'formatH3': 'Changer le paragraphe en cours en entête H3',\n 'formatH4': 'Changer le paragraphe en cours en entête H4',\n 'formatH5': 'Changer le paragraphe en cours en entête H5',\n 'formatH6': 'Changer le paragraphe en cours en entête H6',\n 'insertHorizontalRule': 'Insérer séparation horizontale',\n 'linkDialog.show': 'Afficher fenêtre d\\'hyperlien',\n },\n history: {\n undo: 'Annuler la dernière action',\n redo: 'Restaurer la dernière action annulée',\n },\n specialChar: {\n specialChar: 'Caractères spéciaux',\n select: 'Choisir des caractères spéciaux',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.js b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.js new file mode 100644 index 0000000..bb0d17d --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'gl-ES': { + font: { + bold: 'Negrita', + italic: 'Cursiva', + underline: 'Subliñado', + clear: 'Quitar estilo de fonte', + height: 'Altura de liña', + name: 'Fonte', + strikethrough: 'Riscado', + superscript: 'Superíndice', + subscript: 'Subíndice', + size: 'Tamaño da fonte' + }, + image: { + image: 'Imaxe', + insert: 'Inserir imaxe', + resizeFull: 'Redimensionar a tamaño completo', + resizeHalf: 'Redimensionar á metade', + resizeQuarter: 'Redimensionar a un cuarto', + floatLeft: 'Flotar á esquerda', + floatRight: 'Flotar á dereita', + floatNone: 'Non flotar', + shapeRounded: 'Forma: Redondeado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Marco', + shapeNone: 'Forma: Ningunha', + dragImageHere: 'Arrastrar unha imaxe ou texto aquí', + dropImage: 'Solta a imaxe ou texto', + selectFromFiles: 'Seleccionar desde os arquivos', + maximumFileSize: 'Tamaño máximo do arquivo', + maximumFileSizeError: 'Superaches o tamaño máximo do arquivo.', + url: 'URL da imaxe', + remove: 'Eliminar imaxe', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Ligazón do vídeo', + insert: 'Insertar vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)' + }, + link: { + link: 'Ligazón', + insert: 'Inserir Ligazón', + unlink: 'Quitar Ligazón', + edit: 'Editar', + textToDisplay: 'Texto para amosar', + url: 'Cara a que URL leva a ligazón?', + openInNewWindow: 'Abrir nunha nova xanela' + }, + table: { + table: 'Táboa', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Inserir liña horizontal' + }, + style: { + style: 'Estilo', + p: 'Normal', + blockquote: 'Cita', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista desordenada', + ordered: 'Lista ordenada' + }, + options: { + help: 'Axuda', + fullscreen: 'Pantalla completa', + codeview: 'Ver código fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menos tabulación', + indent: 'Máis tabulación', + left: 'Aliñar á esquerda', + center: 'Aliñar ao centro', + right: 'Aliñar á dereita', + justify: 'Xustificar' + }, + color: { + recent: 'Última cor', + more: 'Máis cores', + background: 'Cor de fondo', + foreground: 'Cor de fuente', + transparent: 'Transparente', + setTransparent: 'Establecer transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar por defecto' + }, + shortcut: { + shortcuts: 'Atallos de teclado', + close: 'Pechar', + textFormatting: 'Formato de texto', + action: 'Acción', + paragraphFormatting: 'Formato de parágrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Teclas adicionais' + }, + help: { + 'insertParagraph': 'Inserir parágrafo', + 'undo': 'Desfacer última acción', + 'redo': 'Refacer última acción', + 'tab': 'Tabular', + 'untab': 'Eliminar tabulación', + 'bold': 'Establecer estilo negrita', + 'italic': 'Establecer estilo cursiva', + 'underline': 'Establecer estilo subliñado', + 'strikethrough': 'Establecer estilo riscado', + 'removeFormat': 'Limpar estilo', + 'justifyLeft': 'Aliñar á esquerda', + 'justifyCenter': 'Aliñar ao centro', + 'justifyRight': 'Aliñar á dereita', + 'justifyFull': 'Xustificar', + 'insertUnorderedList': 'Inserir lista desordenada', + 'insertOrderedList': 'Inserir lista ordenada', + 'outdent': 'Reducir tabulación do parágrafo', + 'indent': 'Aumentar tabulación do parágrafo', + 'formatPara': 'Mudar estilo do bloque a parágrafo (etiqueta P)', + 'formatH1': 'Mudar estilo do bloque a H1', + 'formatH2': 'Mudar estilo do bloque a H2', + 'formatH3': 'Mudar estilo do bloque a H3', + 'formatH4': 'Mudar estilo do bloque a H4', + 'formatH5': 'Mudar estilo do bloque a H5', + 'formatH6': 'Mudar estilo do bloque a H6', + 'insertHorizontalRule': 'Inserir liña horizontal', + 'linkDialog.show': 'Amosar panel ligazóns' + }, + history: { + undo: 'Desfacer', + redo: 'Refacer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIAIS', + select: 'Selecciona Caracteres especiais' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-gl-ES.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.js.map new file mode 100644 index 0000000..2a152e1 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-gl-ES.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-gl-ES.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'gl-ES': {\n font: {\n bold: 'Negrita',\n italic: 'Cursiva',\n underline: 'Subliñado',\n clear: 'Quitar estilo de fonte',\n height: 'Altura de liña',\n name: 'Fonte',\n strikethrough: 'Riscado',\n superscript: 'Superíndice',\n subscript: 'Subíndice',\n size: 'Tamaño da fonte',\n },\n image: {\n image: 'Imaxe',\n insert: 'Inserir imaxe',\n resizeFull: 'Redimensionar a tamaño completo',\n resizeHalf: 'Redimensionar á metade',\n resizeQuarter: 'Redimensionar a un cuarto',\n floatLeft: 'Flotar á esquerda',\n floatRight: 'Flotar á dereita',\n floatNone: 'Non flotar',\n shapeRounded: 'Forma: Redondeado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Marco',\n shapeNone: 'Forma: Ningunha',\n dragImageHere: 'Arrastrar unha imaxe ou texto aquí',\n dropImage: 'Solta a imaxe ou texto',\n selectFromFiles: 'Seleccionar desde os arquivos',\n maximumFileSize: 'Tamaño máximo do arquivo',\n maximumFileSizeError: 'Superaches o tamaño máximo do arquivo.',\n url: 'URL da imaxe',\n remove: 'Eliminar imaxe',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Ligazón do vídeo',\n insert: 'Insertar vídeo',\n url: 'URL do vídeo?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)',\n },\n link: {\n link: 'Ligazón',\n insert: 'Inserir Ligazón',\n unlink: 'Quitar Ligazón',\n edit: 'Editar',\n textToDisplay: 'Texto para amosar',\n url: 'Cara a que URL leva a ligazón?',\n openInNewWindow: 'Abrir nunha nova xanela',\n },\n table: {\n table: 'Táboa',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Inserir liña horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Normal',\n blockquote: 'Cita',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista desordenada',\n ordered: 'Lista ordenada',\n },\n options: {\n help: 'Axuda',\n fullscreen: 'Pantalla completa',\n codeview: 'Ver código fonte',\n },\n paragraph: {\n paragraph: 'Parágrafo',\n outdent: 'Menos tabulación',\n indent: 'Máis tabulación',\n left: 'Aliñar á esquerda',\n center: 'Aliñar ao centro',\n right: 'Aliñar á dereita',\n justify: 'Xustificar',\n },\n color: {\n recent: 'Última cor',\n more: 'Máis cores',\n background: 'Cor de fondo',\n foreground: 'Cor de fuente',\n transparent: 'Transparente',\n setTransparent: 'Establecer transparente',\n reset: 'Restaurar',\n resetToDefault: 'Restaurar por defecto',\n },\n shortcut: {\n shortcuts: 'Atallos de teclado',\n close: 'Pechar',\n textFormatting: 'Formato de texto',\n action: 'Acción',\n paragraphFormatting: 'Formato de parágrafo',\n documentStyle: 'Estilo de documento',\n extraKeys: 'Teclas adicionais',\n },\n help: {\n 'insertParagraph': 'Inserir parágrafo',\n 'undo': 'Desfacer última acción',\n 'redo': 'Refacer última acción',\n 'tab': 'Tabular',\n 'untab': 'Eliminar tabulación',\n 'bold': 'Establecer estilo negrita',\n 'italic': 'Establecer estilo cursiva',\n 'underline': 'Establecer estilo subliñado',\n 'strikethrough': 'Establecer estilo riscado',\n 'removeFormat': 'Limpar estilo',\n 'justifyLeft': 'Aliñar á esquerda',\n 'justifyCenter': 'Aliñar ao centro',\n 'justifyRight': 'Aliñar á dereita',\n 'justifyFull': 'Xustificar',\n 'insertUnorderedList': 'Inserir lista desordenada',\n 'insertOrderedList': 'Inserir lista ordenada',\n 'outdent': 'Reducir tabulación do parágrafo',\n 'indent': 'Aumentar tabulación do parágrafo',\n 'formatPara': 'Mudar estilo do bloque a parágrafo (etiqueta P)',\n 'formatH1': 'Mudar estilo do bloque a H1',\n 'formatH2': 'Mudar estilo do bloque a H2',\n 'formatH3': 'Mudar estilo do bloque a H3',\n 'formatH4': 'Mudar estilo do bloque a H4',\n 'formatH5': 'Mudar estilo do bloque a H5',\n 'formatH6': 'Mudar estilo do bloque a H6',\n 'insertHorizontalRule': 'Inserir liña horizontal',\n 'linkDialog.show': 'Amosar panel ligazóns',\n },\n history: {\n undo: 'Desfacer',\n redo: 'Refacer',\n },\n specialChar: {\n specialChar: 'CARACTERES ESPECIAIS',\n select: 'Selecciona Caracteres especiais',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.min.js new file mode 100644 index 0000000..c703fb0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"gl-ES":{font:{bold:"Negrita",italic:"Cursiva",underline:"Subliñado",clear:"Quitar estilo de fonte",height:"Altura de liña",name:"Fonte",strikethrough:"Riscado",superscript:"Superíndice",subscript:"Subíndice",size:"Tamaño da fonte"},image:{image:"Imaxe",insert:"Inserir imaxe",resizeFull:"Redimensionar a tamaño completo",resizeHalf:"Redimensionar á metade",resizeQuarter:"Redimensionar a un cuarto",floatLeft:"Flotar á esquerda",floatRight:"Flotar á dereita",floatNone:"Non flotar",shapeRounded:"Forma: Redondeado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Marco",shapeNone:"Forma: Ningunha",dragImageHere:"Arrastrar unha imaxe ou texto aquí",dropImage:"Solta a imaxe ou texto",selectFromFiles:"Seleccionar desde os arquivos",maximumFileSize:"Tamaño máximo do arquivo",maximumFileSizeError:"Superaches o tamaño máximo do arquivo.",url:"URL da imaxe",remove:"Eliminar imaxe",original:"Original"},video:{video:"Vídeo",videoLink:"Ligazón do vídeo",insert:"Insertar vídeo",url:"URL do vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)"},link:{link:"Ligazón",insert:"Inserir Ligazón",unlink:"Quitar Ligazón",edit:"Editar",textToDisplay:"Texto para amosar",url:"Cara a que URL leva a ligazón?",openInNewWindow:"Abrir nunha nova xanela"},table:{table:"Táboa",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Inserir liña horizontal"},style:{style:"Estilo",p:"Normal",blockquote:"Cita",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista desordenada",ordered:"Lista ordenada"},options:{help:"Axuda",fullscreen:"Pantalla completa",codeview:"Ver código fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menos tabulación",indent:"Máis tabulación",left:"Aliñar á esquerda",center:"Aliñar ao centro",right:"Aliñar á dereita",justify:"Xustificar"},color:{recent:"Última cor",more:"Máis cores",background:"Cor de fondo",foreground:"Cor de fuente",transparent:"Transparente",setTransparent:"Establecer transparente",reset:"Restaurar",resetToDefault:"Restaurar por defecto"},shortcut:{shortcuts:"Atallos de teclado",close:"Pechar",textFormatting:"Formato de texto",action:"Acción",paragraphFormatting:"Formato de parágrafo",documentStyle:"Estilo de documento",extraKeys:"Teclas adicionais"},help:{insertParagraph:"Inserir parágrafo",undo:"Desfacer última acción",redo:"Refacer última acción",tab:"Tabular",untab:"Eliminar tabulación",bold:"Establecer estilo negrita",italic:"Establecer estilo cursiva",underline:"Establecer estilo subliñado",strikethrough:"Establecer estilo riscado",removeFormat:"Limpar estilo",justifyLeft:"Aliñar á esquerda",justifyCenter:"Aliñar ao centro",justifyRight:"Aliñar á dereita",justifyFull:"Xustificar",insertUnorderedList:"Inserir lista desordenada",insertOrderedList:"Inserir lista ordenada",outdent:"Reducir tabulación do parágrafo",indent:"Aumentar tabulación do parágrafo",formatPara:"Mudar estilo do bloque a parágrafo (etiqueta P)",formatH1:"Mudar estilo do bloque a H1",formatH2:"Mudar estilo do bloque a H2",formatH3:"Mudar estilo do bloque a H3",formatH4:"Mudar estilo do bloque a H4",formatH5:"Mudar estilo do bloque a H5",formatH6:"Mudar estilo do bloque a H6",insertHorizontalRule:"Inserir liña horizontal","linkDialog.show":"Amosar panel ligazóns"},history:{undo:"Desfacer",redo:"Refacer"},specialChar:{specialChar:"CARACTERES ESPECIAIS",select:"Selecciona Caracteres especiais"}}}),{};var e})); +//# sourceMappingURL=summernote-gl-ES.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.min.js.map new file mode 100644 index 0000000..ca66d3c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-gl-ES.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-gl-ES.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,UACNC,OAAQ,UACRC,UAAW,YACXC,MAAO,yBACPC,OAAQ,iBACRC,KAAM,QACNC,cAAe,UACfC,YAAa,cACbC,UAAW,YACXC,KAAM,mBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,gBACRC,WAAY,kCACZC,WAAY,yBACZC,cAAe,4BACfC,UAAW,oBACXC,WAAY,mBACZC,UAAW,aACXC,aAAc,oBACdC,YAAa,iBACbC,eAAgB,eAChBC,UAAW,kBACXC,cAAe,qCACfC,UAAW,yBACXC,gBAAiB,gCACjBC,gBAAiB,2BACjBC,qBAAsB,yCACtBC,IAAK,eACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,mBACXpB,OAAQ,iBACRgB,IAAK,gBACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,UACNtB,OAAQ,kBACRuB,OAAQ,iBACRC,KAAM,SACNC,cAAe,oBACfT,IAAK,iCACLU,gBAAiB,2BAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,2BAEVoC,MAAO,CACLA,MAAO,SACPC,EAAG,SACHC,WAAY,OACZC,IAAK,SACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,oBACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,oBACZC,SAAU,oBAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,mBACTC,OAAQ,kBACRC,KAAM,oBACNC,OAAQ,mBACRC,MAAO,mBACPC,QAAS,cAEXC,MAAO,CACLC,OAAQ,aACRC,KAAM,aACNC,WAAY,eACZC,WAAY,gBACZC,YAAa,eACbC,eAAgB,0BAChBC,MAAO,YACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,qBACXC,MAAO,SACPC,eAAgB,mBAChBC,OAAQ,SACRC,oBAAqB,uBACrBC,cAAe,sBACfC,UAAW,qBAEb1B,KAAM,CACJ,gBAAmB,oBACnB,KAAQ,yBACR,KAAQ,wBACR,IAAO,UACP,MAAS,sBACT,KAAQ,4BACR,OAAU,4BACV,UAAa,8BACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,oBACf,cAAiB,mBACjB,aAAgB,mBAChB,YAAe,aACf,oBAAuB,4BACvB,kBAAqB,yBACrB,QAAW,kCACX,OAAU,mCACV,WAAc,kDACd,SAAY,8BACZ,SAAY,8BACZ,SAAY,8BACZ,SAAY,8BACZ,SAAY,8BACZ,SAAY,8BACZ,qBAAwB,0BACxB,kBAAmB,yBAErB2B,QAAS,CACPC,KAAM,WACNC,KAAM,WAERC,YAAa,CACXA,YAAa,uBACbC,OAAQ,sC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-gl-ES.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'gl-ES': {\n font: {\n bold: 'Negrita',\n italic: 'Cursiva',\n underline: 'Subliñado',\n clear: 'Quitar estilo de fonte',\n height: 'Altura de liña',\n name: 'Fonte',\n strikethrough: 'Riscado',\n superscript: 'Superíndice',\n subscript: 'Subíndice',\n size: 'Tamaño da fonte',\n },\n image: {\n image: 'Imaxe',\n insert: 'Inserir imaxe',\n resizeFull: 'Redimensionar a tamaño completo',\n resizeHalf: 'Redimensionar á metade',\n resizeQuarter: 'Redimensionar a un cuarto',\n floatLeft: 'Flotar á esquerda',\n floatRight: 'Flotar á dereita',\n floatNone: 'Non flotar',\n shapeRounded: 'Forma: Redondeado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Marco',\n shapeNone: 'Forma: Ningunha',\n dragImageHere: 'Arrastrar unha imaxe ou texto aquí',\n dropImage: 'Solta a imaxe ou texto',\n selectFromFiles: 'Seleccionar desde os arquivos',\n maximumFileSize: 'Tamaño máximo do arquivo',\n maximumFileSizeError: 'Superaches o tamaño máximo do arquivo.',\n url: 'URL da imaxe',\n remove: 'Eliminar imaxe',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Ligazón do vídeo',\n insert: 'Insertar vídeo',\n url: 'URL do vídeo?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)',\n },\n link: {\n link: 'Ligazón',\n insert: 'Inserir Ligazón',\n unlink: 'Quitar Ligazón',\n edit: 'Editar',\n textToDisplay: 'Texto para amosar',\n url: 'Cara a que URL leva a ligazón?',\n openInNewWindow: 'Abrir nunha nova xanela',\n },\n table: {\n table: 'Táboa',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Inserir liña horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Normal',\n blockquote: 'Cita',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista desordenada',\n ordered: 'Lista ordenada',\n },\n options: {\n help: 'Axuda',\n fullscreen: 'Pantalla completa',\n codeview: 'Ver código fonte',\n },\n paragraph: {\n paragraph: 'Parágrafo',\n outdent: 'Menos tabulación',\n indent: 'Máis tabulación',\n left: 'Aliñar á esquerda',\n center: 'Aliñar ao centro',\n right: 'Aliñar á dereita',\n justify: 'Xustificar',\n },\n color: {\n recent: 'Última cor',\n more: 'Máis cores',\n background: 'Cor de fondo',\n foreground: 'Cor de fuente',\n transparent: 'Transparente',\n setTransparent: 'Establecer transparente',\n reset: 'Restaurar',\n resetToDefault: 'Restaurar por defecto',\n },\n shortcut: {\n shortcuts: 'Atallos de teclado',\n close: 'Pechar',\n textFormatting: 'Formato de texto',\n action: 'Acción',\n paragraphFormatting: 'Formato de parágrafo',\n documentStyle: 'Estilo de documento',\n extraKeys: 'Teclas adicionais',\n },\n help: {\n 'insertParagraph': 'Inserir parágrafo',\n 'undo': 'Desfacer última acción',\n 'redo': 'Refacer última acción',\n 'tab': 'Tabular',\n 'untab': 'Eliminar tabulación',\n 'bold': 'Establecer estilo negrita',\n 'italic': 'Establecer estilo cursiva',\n 'underline': 'Establecer estilo subliñado',\n 'strikethrough': 'Establecer estilo riscado',\n 'removeFormat': 'Limpar estilo',\n 'justifyLeft': 'Aliñar á esquerda',\n 'justifyCenter': 'Aliñar ao centro',\n 'justifyRight': 'Aliñar á dereita',\n 'justifyFull': 'Xustificar',\n 'insertUnorderedList': 'Inserir lista desordenada',\n 'insertOrderedList': 'Inserir lista ordenada',\n 'outdent': 'Reducir tabulación do parágrafo',\n 'indent': 'Aumentar tabulación do parágrafo',\n 'formatPara': 'Mudar estilo do bloque a parágrafo (etiqueta P)',\n 'formatH1': 'Mudar estilo do bloque a H1',\n 'formatH2': 'Mudar estilo do bloque a H2',\n 'formatH3': 'Mudar estilo do bloque a H3',\n 'formatH4': 'Mudar estilo do bloque a H4',\n 'formatH5': 'Mudar estilo do bloque a H5',\n 'formatH6': 'Mudar estilo do bloque a H6',\n 'insertHorizontalRule': 'Inserir liña horizontal',\n 'linkDialog.show': 'Amosar panel ligazóns',\n },\n history: {\n undo: 'Desfacer',\n redo: 'Refacer',\n },\n specialChar: {\n specialChar: 'CARACTERES ESPECIAIS',\n select: 'Selecciona Caracteres especiais',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.js b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.js new file mode 100644 index 0000000..b51816a --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'he-IL': { + font: { + bold: 'מודגש', + italic: 'נטוי', + underline: 'קו תחתון', + clear: 'נקה עיצוב', + height: 'גובה', + name: 'גופן', + strikethrough: 'קו חוצה', + subscript: 'כתב תחתי', + superscript: 'כתב עילי', + size: 'גודל גופן' + }, + image: { + image: 'תמונה', + insert: 'הוסף תמונה', + resizeFull: 'גודל מלא', + resizeHalf: 'להקטין לחצי', + resizeQuarter: 'להקטין לרבע', + floatLeft: 'יישור לשמאל', + floatRight: 'יישור לימין', + floatNone: 'ישר', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'גרור תמונה לכאן', + dropImage: 'Drop image or Text', + selectFromFiles: 'בחר מתוך קבצים', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'נתיב לתמונה', + remove: 'הסר תמונה', + original: 'Original' + }, + video: { + video: 'סרטון', + videoLink: 'קישור לסרטון', + insert: 'הוסף סרטון', + url: 'קישור לסרטון', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)' + }, + link: { + link: 'קישור', + insert: 'הוסף קישור', + unlink: 'הסר קישור', + edit: 'ערוך', + textToDisplay: 'טקסט להציג', + url: 'קישור', + openInNewWindow: 'פתח בחלון חדש' + }, + table: { + table: 'טבלה', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'הוסף קו' + }, + style: { + style: 'עיצוב', + p: 'טקסט רגיל', + blockquote: 'ציטוט', + pre: 'קוד', + h1: 'כותרת 1', + h2: 'כותרת 2', + h3: 'כותרת 3', + h4: 'כותרת 4', + h5: 'כותרת 5', + h6: 'כותרת 6' + }, + lists: { + unordered: 'רשימת תבליטים', + ordered: 'רשימה ממוספרת' + }, + options: { + help: 'עזרה', + fullscreen: 'מסך מלא', + codeview: 'תצוגת קוד' + }, + paragraph: { + paragraph: 'פסקה', + outdent: 'הקטן כניסה', + indent: 'הגדל כניסה', + left: 'יישור לשמאל', + center: 'יישור למרכז', + right: 'יישור לימין', + justify: 'מיושר' + }, + color: { + recent: 'צבע טקסט אחרון', + more: 'עוד צבעים', + background: 'צבע רקע', + foreground: 'צבע טקסט', + transparent: 'שקוף', + setTransparent: 'קבע כשקוף', + reset: 'איפוס', + resetToDefault: 'אפס לברירת מחדל' + }, + shortcut: { + shortcuts: 'קיצורי מקלדת', + close: 'סגור', + textFormatting: 'עיצוב הטקסט', + action: 'פעולה', + paragraphFormatting: 'סגנונות פסקה', + documentStyle: 'עיצוב המסמך', + extraKeys: 'קיצורים נוספים' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'בטל פעולה', + redo: 'בצע שוב' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-he-IL.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.js.map new file mode 100644 index 0000000..a819bd8 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-he-IL.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-he-IL.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'he-IL': {\n font: {\n bold: 'מודגש',\n italic: 'נטוי',\n underline: 'קו תחתון',\n clear: 'נקה עיצוב',\n height: 'גובה',\n name: 'גופן',\n strikethrough: 'קו חוצה',\n subscript: 'כתב תחתי',\n superscript: 'כתב עילי',\n size: 'גודל גופן',\n },\n image: {\n image: 'תמונה',\n insert: 'הוסף תמונה',\n resizeFull: 'גודל מלא',\n resizeHalf: 'להקטין לחצי',\n resizeQuarter: 'להקטין לרבע',\n floatLeft: 'יישור לשמאל',\n floatRight: 'יישור לימין',\n floatNone: 'ישר',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'גרור תמונה לכאן',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'בחר מתוך קבצים',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'נתיב לתמונה',\n remove: 'הסר תמונה',\n original: 'Original',\n },\n video: {\n video: 'סרטון',\n videoLink: 'קישור לסרטון',\n insert: 'הוסף סרטון',\n url: 'קישור לסרטון',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)',\n },\n link: {\n link: 'קישור',\n insert: 'הוסף קישור',\n unlink: 'הסר קישור',\n edit: 'ערוך',\n textToDisplay: 'טקסט להציג',\n url: 'קישור',\n openInNewWindow: 'פתח בחלון חדש',\n },\n table: {\n table: 'טבלה',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'הוסף קו',\n },\n style: {\n style: 'עיצוב',\n p: 'טקסט רגיל',\n blockquote: 'ציטוט',\n pre: 'קוד',\n h1: 'כותרת 1',\n h2: 'כותרת 2',\n h3: 'כותרת 3',\n h4: 'כותרת 4',\n h5: 'כותרת 5',\n h6: 'כותרת 6',\n },\n lists: {\n unordered: 'רשימת תבליטים',\n ordered: 'רשימה ממוספרת',\n },\n options: {\n help: 'עזרה',\n fullscreen: 'מסך מלא',\n codeview: 'תצוגת קוד',\n },\n paragraph: {\n paragraph: 'פסקה',\n outdent: 'הקטן כניסה',\n indent: 'הגדל כניסה',\n left: 'יישור לשמאל',\n center: 'יישור למרכז',\n right: 'יישור לימין',\n justify: 'מיושר',\n },\n color: {\n recent: 'צבע טקסט אחרון',\n more: 'עוד צבעים',\n background: 'צבע רקע',\n foreground: 'צבע טקסט',\n transparent: 'שקוף',\n setTransparent: 'קבע כשקוף',\n reset: 'איפוס',\n resetToDefault: 'אפס לברירת מחדל',\n },\n shortcut: {\n shortcuts: 'קיצורי מקלדת',\n close: 'סגור',\n textFormatting: 'עיצוב הטקסט',\n action: 'פעולה',\n paragraphFormatting: 'סגנונות פסקה',\n documentStyle: 'עיצוב המסמך',\n extraKeys: 'קיצורים נוספים',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'בטל פעולה',\n redo: 'בצע שוב',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.min.js new file mode 100644 index 0000000..37e34f0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"he-IL":{font:{bold:"מודגש",italic:"נטוי",underline:"קו תחתון",clear:"נקה עיצוב",height:"גובה",name:"גופן",strikethrough:"קו חוצה",subscript:"כתב תחתי",superscript:"כתב עילי",size:"גודל גופן"},image:{image:"תמונה",insert:"הוסף תמונה",resizeFull:"גודל מלא",resizeHalf:"להקטין לחצי",resizeQuarter:"להקטין לרבע",floatLeft:"יישור לשמאל",floatRight:"יישור לימין",floatNone:"ישר",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"גרור תמונה לכאן",dropImage:"Drop image or Text",selectFromFiles:"בחר מתוך קבצים",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"נתיב לתמונה",remove:"הסר תמונה",original:"Original"},video:{video:"סרטון",videoLink:"קישור לסרטון",insert:"הוסף סרטון",url:"קישור לסרטון",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)"},link:{link:"קישור",insert:"הוסף קישור",unlink:"הסר קישור",edit:"ערוך",textToDisplay:"טקסט להציג",url:"קישור",openInNewWindow:"פתח בחלון חדש"},table:{table:"טבלה",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"הוסף קו"},style:{style:"עיצוב",p:"טקסט רגיל",blockquote:"ציטוט",pre:"קוד",h1:"כותרת 1",h2:"כותרת 2",h3:"כותרת 3",h4:"כותרת 4",h5:"כותרת 5",h6:"כותרת 6"},lists:{unordered:"רשימת תבליטים",ordered:"רשימה ממוספרת"},options:{help:"עזרה",fullscreen:"מסך מלא",codeview:"תצוגת קוד"},paragraph:{paragraph:"פסקה",outdent:"הקטן כניסה",indent:"הגדל כניסה",left:"יישור לשמאל",center:"יישור למרכז",right:"יישור לימין",justify:"מיושר"},color:{recent:"צבע טקסט אחרון",more:"עוד צבעים",background:"צבע רקע",foreground:"צבע טקסט",transparent:"שקוף",setTransparent:"קבע כשקוף",reset:"איפוס",resetToDefault:"אפס לברירת מחדל"},shortcut:{shortcuts:"קיצורי מקלדת",close:"סגור",textFormatting:"עיצוב הטקסט",action:"פעולה",paragraphFormatting:"סגנונות פסקה",documentStyle:"עיצוב המסמך",extraKeys:"קיצורים נוספים"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"בטל פעולה",redo:"בצע שוב"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-he-IL.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.min.js.map new file mode 100644 index 0000000..f5baf27 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-he-IL.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-he-IL.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,OACRC,UAAW,WACXC,MAAO,YACPC,OAAQ,OACRC,KAAM,OACNC,cAAe,UACfC,UAAW,WACXC,YAAa,WACbC,KAAM,aAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,aACRC,WAAY,WACZC,WAAY,cACZC,cAAe,cACfC,UAAW,cACXC,WAAY,cACZC,UAAW,MACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,kBACfC,UAAW,qBACXC,gBAAiB,iBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,cACLC,OAAQ,YACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,eACXpB,OAAQ,aACRgB,IAAK,eACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,QACNtB,OAAQ,aACRuB,OAAQ,YACRC,KAAM,OACNC,cAAe,aACfT,IAAK,QACLU,gBAAiB,iBAEnBC,MAAO,CACLA,MAAO,OACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,WAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,YACHC,WAAY,QACZC,IAAK,MACLC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,WAENC,MAAO,CACLC,UAAW,gBACXC,QAAS,iBAEXC,QAAS,CACPC,KAAM,OACNC,WAAY,UACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,OACXC,QAAS,aACTC,OAAQ,aACRC,KAAM,cACNC,OAAQ,cACRC,MAAO,cACPC,QAAS,SAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,YACNC,WAAY,UACZC,WAAY,WACZC,YAAa,OACbC,eAAgB,YAChBC,MAAO,QACPC,eAAgB,mBAElBC,SAAU,CACRC,UAAW,eACXC,MAAO,OACPC,eAAgB,cAChBC,OAAQ,QACRC,oBAAqB,eACrBC,cAAe,cACfC,UAAW,kBAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,YACNC,KAAM,WAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-he-IL.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'he-IL': {\n font: {\n bold: 'מודגש',\n italic: 'נטוי',\n underline: 'קו תחתון',\n clear: 'נקה עיצוב',\n height: 'גובה',\n name: 'גופן',\n strikethrough: 'קו חוצה',\n subscript: 'כתב תחתי',\n superscript: 'כתב עילי',\n size: 'גודל גופן',\n },\n image: {\n image: 'תמונה',\n insert: 'הוסף תמונה',\n resizeFull: 'גודל מלא',\n resizeHalf: 'להקטין לחצי',\n resizeQuarter: 'להקטין לרבע',\n floatLeft: 'יישור לשמאל',\n floatRight: 'יישור לימין',\n floatNone: 'ישר',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'גרור תמונה לכאן',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'בחר מתוך קבצים',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'נתיב לתמונה',\n remove: 'הסר תמונה',\n original: 'Original',\n },\n video: {\n video: 'סרטון',\n videoLink: 'קישור לסרטון',\n insert: 'הוסף סרטון',\n url: 'קישור לסרטון',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)',\n },\n link: {\n link: 'קישור',\n insert: 'הוסף קישור',\n unlink: 'הסר קישור',\n edit: 'ערוך',\n textToDisplay: 'טקסט להציג',\n url: 'קישור',\n openInNewWindow: 'פתח בחלון חדש',\n },\n table: {\n table: 'טבלה',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'הוסף קו',\n },\n style: {\n style: 'עיצוב',\n p: 'טקסט רגיל',\n blockquote: 'ציטוט',\n pre: 'קוד',\n h1: 'כותרת 1',\n h2: 'כותרת 2',\n h3: 'כותרת 3',\n h4: 'כותרת 4',\n h5: 'כותרת 5',\n h6: 'כותרת 6',\n },\n lists: {\n unordered: 'רשימת תבליטים',\n ordered: 'רשימה ממוספרת',\n },\n options: {\n help: 'עזרה',\n fullscreen: 'מסך מלא',\n codeview: 'תצוגת קוד',\n },\n paragraph: {\n paragraph: 'פסקה',\n outdent: 'הקטן כניסה',\n indent: 'הגדל כניסה',\n left: 'יישור לשמאל',\n center: 'יישור למרכז',\n right: 'יישור לימין',\n justify: 'מיושר',\n },\n color: {\n recent: 'צבע טקסט אחרון',\n more: 'עוד צבעים',\n background: 'צבע רקע',\n foreground: 'צבע טקסט',\n transparent: 'שקוף',\n setTransparent: 'קבע כשקוף',\n reset: 'איפוס',\n resetToDefault: 'אפס לברירת מחדל',\n },\n shortcut: {\n shortcuts: 'קיצורי מקלדת',\n close: 'סגור',\n textFormatting: 'עיצוב הטקסט',\n action: 'פעולה',\n paragraphFormatting: 'סגנונות פסקה',\n documentStyle: 'עיצוב המסמך',\n extraKeys: 'קיצורים נוספים',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'בטל פעולה',\n redo: 'בצע שוב',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.js b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.js new file mode 100644 index 0000000..1d30bc2 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'hr-HR': { + font: { + bold: 'Podebljano', + italic: 'Kurziv', + underline: 'Podvučeno', + clear: 'Ukloni stilove fonta', + height: 'Visina linije', + name: 'Font Family', + strikethrough: 'Precrtano', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Veličina fonta' + }, + image: { + image: 'Slika', + insert: 'Ubaci sliku', + resizeFull: 'Puna veličina', + resizeHalf: 'Umanji na 50%', + resizeQuarter: 'Umanji na 25%', + floatLeft: 'Poravnaj lijevo', + floatRight: 'Poravnaj desno', + floatNone: 'Bez poravnanja', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Povuci sliku ovdje', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izaberi iz datoteke', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Adresa slike', + remove: 'Ukloni sliku', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Veza na video', + insert: 'Ubaci video', + url: 'URL video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)' + }, + link: { + link: 'Veza', + insert: 'Ubaci vezu', + unlink: 'Ukloni vezu', + edit: 'Uredi', + textToDisplay: 'Tekst za prikaz', + url: 'Internet adresa', + openInNewWindow: 'Otvori u novom prozoru' + }, + table: { + table: 'Tablica', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Ubaci horizontalnu liniju' + }, + style: { + style: 'Stil', + p: 'pni', + blockquote: 'Citat', + pre: 'Kôd', + h1: 'Naslov 1', + h2: 'Naslov 2', + h3: 'Naslov 3', + h4: 'Naslov 4', + h5: 'Naslov 5', + h6: 'Naslov 6' + }, + lists: { + unordered: 'Obična lista', + ordered: 'Numerirana lista' + }, + options: { + help: 'Pomoć', + fullscreen: 'Preko cijelog ekrana', + codeview: 'Izvorni kôd' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Smanji uvlačenje', + indent: 'Povećaj uvlačenje', + left: 'Poravnaj lijevo', + center: 'Centrirano', + right: 'Poravnaj desno', + justify: 'Poravnaj obostrano' + }, + color: { + recent: 'Posljednja boja', + more: 'Više boja', + background: 'Boja pozadine', + foreground: 'Boja teksta', + transparent: 'Prozirna', + setTransparent: 'Prozirna', + reset: 'Poništi', + resetToDefault: 'Podrazumijevana' + }, + shortcut: { + shortcuts: 'Prečice s tipkovnice', + close: 'Zatvori', + textFormatting: 'Formatiranje teksta', + action: 'Akcija', + paragraphFormatting: 'Formatiranje paragrafa', + documentStyle: 'Stil dokumenta', + extraKeys: 'Dodatne kombinacije' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Poništi', + redo: 'Ponovi' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-hr-HR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.js.map new file mode 100644 index 0000000..324428f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-hr-HR.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-hr-HR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'hr-HR': {\n font: {\n bold: 'Podebljano',\n italic: 'Kurziv',\n underline: 'Podvučeno',\n clear: 'Ukloni stilove fonta',\n height: 'Visina linije',\n name: 'Font Family',\n strikethrough: 'Precrtano',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Veličina fonta',\n },\n image: {\n image: 'Slika',\n insert: 'Ubaci sliku',\n resizeFull: 'Puna veličina',\n resizeHalf: 'Umanji na 50%',\n resizeQuarter: 'Umanji na 25%',\n floatLeft: 'Poravnaj lijevo',\n floatRight: 'Poravnaj desno',\n floatNone: 'Bez poravnanja',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Povuci sliku ovdje',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izaberi iz datoteke',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Adresa slike',\n remove: 'Ukloni sliku',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Veza na video',\n insert: 'Ubaci video',\n url: 'URL video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)',\n },\n link: {\n link: 'Veza',\n insert: 'Ubaci vezu',\n unlink: 'Ukloni vezu',\n edit: 'Uredi',\n textToDisplay: 'Tekst za prikaz',\n url: 'Internet adresa',\n openInNewWindow: 'Otvori u novom prozoru',\n },\n table: {\n table: 'Tablica',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Ubaci horizontalnu liniju',\n },\n style: {\n style: 'Stil',\n p: 'pni',\n blockquote: 'Citat',\n pre: 'Kôd',\n h1: 'Naslov 1',\n h2: 'Naslov 2',\n h3: 'Naslov 3',\n h4: 'Naslov 4',\n h5: 'Naslov 5',\n h6: 'Naslov 6',\n },\n lists: {\n unordered: 'Obična lista',\n ordered: 'Numerirana lista',\n },\n options: {\n help: 'Pomoć',\n fullscreen: 'Preko cijelog ekrana',\n codeview: 'Izvorni kôd',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Smanji uvlačenje',\n indent: 'Povećaj uvlačenje',\n left: 'Poravnaj lijevo',\n center: 'Centrirano',\n right: 'Poravnaj desno',\n justify: 'Poravnaj obostrano',\n },\n color: {\n recent: 'Posljednja boja',\n more: 'Više boja',\n background: 'Boja pozadine',\n foreground: 'Boja teksta',\n transparent: 'Prozirna',\n setTransparent: 'Prozirna',\n reset: 'Poništi',\n resetToDefault: 'Podrazumijevana',\n },\n shortcut: {\n shortcuts: 'Prečice s tipkovnice',\n close: 'Zatvori',\n textFormatting: 'Formatiranje teksta',\n action: 'Akcija',\n paragraphFormatting: 'Formatiranje paragrafa',\n documentStyle: 'Stil dokumenta',\n extraKeys: 'Dodatne kombinacije',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Poništi',\n redo: 'Ponovi',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.min.js new file mode 100644 index 0000000..a33aac6 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var o=a();for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"hr-HR":{font:{bold:"Podebljano",italic:"Kurziv",underline:"Podvučeno",clear:"Ukloni stilove fonta",height:"Visina linije",name:"Font Family",strikethrough:"Precrtano",subscript:"Subscript",superscript:"Superscript",size:"Veličina fonta"},image:{image:"Slika",insert:"Ubaci sliku",resizeFull:"Puna veličina",resizeHalf:"Umanji na 50%",resizeQuarter:"Umanji na 25%",floatLeft:"Poravnaj lijevo",floatRight:"Poravnaj desno",floatNone:"Bez poravnanja",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Povuci sliku ovdje",dropImage:"Drop image or Text",selectFromFiles:"Izaberi iz datoteke",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Adresa slike",remove:"Ukloni sliku",original:"Original"},video:{video:"Video",videoLink:"Veza na video",insert:"Ubaci video",url:"URL video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)"},link:{link:"Veza",insert:"Ubaci vezu",unlink:"Ukloni vezu",edit:"Uredi",textToDisplay:"Tekst za prikaz",url:"Internet adresa",openInNewWindow:"Otvori u novom prozoru"},table:{table:"Tablica",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Ubaci horizontalnu liniju"},style:{style:"Stil",p:"pni",blockquote:"Citat",pre:"Kôd",h1:"Naslov 1",h2:"Naslov 2",h3:"Naslov 3",h4:"Naslov 4",h5:"Naslov 5",h6:"Naslov 6"},lists:{unordered:"Obična lista",ordered:"Numerirana lista"},options:{help:"Pomoć",fullscreen:"Preko cijelog ekrana",codeview:"Izvorni kôd"},paragraph:{paragraph:"Paragraf",outdent:"Smanji uvlačenje",indent:"Povećaj uvlačenje",left:"Poravnaj lijevo",center:"Centrirano",right:"Poravnaj desno",justify:"Poravnaj obostrano"},color:{recent:"Posljednja boja",more:"Više boja",background:"Boja pozadine",foreground:"Boja teksta",transparent:"Prozirna",setTransparent:"Prozirna",reset:"Poništi",resetToDefault:"Podrazumijevana"},shortcut:{shortcuts:"Prečice s tipkovnice",close:"Zatvori",textFormatting:"Formatiranje teksta",action:"Akcija",paragraphFormatting:"Formatiranje paragrafa",documentStyle:"Stil dokumenta",extraKeys:"Dodatne kombinacije"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Poništi",redo:"Ponovi"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-hr-HR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.min.js.map new file mode 100644 index 0000000..35bd0b3 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hr-HR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-hr-HR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,aACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,uBACPC,OAAQ,gBACRC,KAAM,cACNC,cAAe,YACfC,UAAW,YACXC,YAAa,cACbC,KAAM,kBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,cACRC,WAAY,gBACZC,WAAY,gBACZC,cAAe,gBACfC,UAAW,kBACXC,WAAY,iBACZC,UAAW,iBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,qBACfC,UAAW,qBACXC,gBAAiB,sBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,eACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,gBACXpB,OAAQ,cACRgB,IAAK,YACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,aACRuB,OAAQ,cACRC,KAAM,QACNC,cAAe,kBACfT,IAAK,kBACLU,gBAAiB,0BAEnBC,MAAO,CACLA,MAAO,UACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,6BAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,MACHC,WAAY,QACZC,IAAK,MACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,eACXC,QAAS,oBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,uBACZC,SAAU,eAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,mBACTC,OAAQ,oBACRC,KAAM,kBACNC,OAAQ,aACRC,MAAO,iBACPC,QAAS,sBAEXC,MAAO,CACLC,OAAQ,kBACRC,KAAM,YACNC,WAAY,gBACZC,WAAY,cACZC,YAAa,WACbC,eAAgB,WAChBC,MAAO,UACPC,eAAgB,mBAElBC,SAAU,CACRC,UAAW,uBACXC,MAAO,UACPC,eAAgB,sBAChBC,OAAQ,SACRC,oBAAqB,yBACrBC,cAAe,iBACfC,UAAW,uBAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,UACNC,KAAM,UAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-hr-HR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'hr-HR': {\n font: {\n bold: 'Podebljano',\n italic: 'Kurziv',\n underline: 'Podvučeno',\n clear: 'Ukloni stilove fonta',\n height: 'Visina linije',\n name: 'Font Family',\n strikethrough: 'Precrtano',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Veličina fonta',\n },\n image: {\n image: 'Slika',\n insert: 'Ubaci sliku',\n resizeFull: 'Puna veličina',\n resizeHalf: 'Umanji na 50%',\n resizeQuarter: 'Umanji na 25%',\n floatLeft: 'Poravnaj lijevo',\n floatRight: 'Poravnaj desno',\n floatNone: 'Bez poravnanja',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Povuci sliku ovdje',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izaberi iz datoteke',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Adresa slike',\n remove: 'Ukloni sliku',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Veza na video',\n insert: 'Ubaci video',\n url: 'URL video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)',\n },\n link: {\n link: 'Veza',\n insert: 'Ubaci vezu',\n unlink: 'Ukloni vezu',\n edit: 'Uredi',\n textToDisplay: 'Tekst za prikaz',\n url: 'Internet adresa',\n openInNewWindow: 'Otvori u novom prozoru',\n },\n table: {\n table: 'Tablica',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Ubaci horizontalnu liniju',\n },\n style: {\n style: 'Stil',\n p: 'pni',\n blockquote: 'Citat',\n pre: 'Kôd',\n h1: 'Naslov 1',\n h2: 'Naslov 2',\n h3: 'Naslov 3',\n h4: 'Naslov 4',\n h5: 'Naslov 5',\n h6: 'Naslov 6',\n },\n lists: {\n unordered: 'Obična lista',\n ordered: 'Numerirana lista',\n },\n options: {\n help: 'Pomoć',\n fullscreen: 'Preko cijelog ekrana',\n codeview: 'Izvorni kôd',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Smanji uvlačenje',\n indent: 'Povećaj uvlačenje',\n left: 'Poravnaj lijevo',\n center: 'Centrirano',\n right: 'Poravnaj desno',\n justify: 'Poravnaj obostrano',\n },\n color: {\n recent: 'Posljednja boja',\n more: 'Više boja',\n background: 'Boja pozadine',\n foreground: 'Boja teksta',\n transparent: 'Prozirna',\n setTransparent: 'Prozirna',\n reset: 'Poništi',\n resetToDefault: 'Podrazumijevana',\n },\n shortcut: {\n shortcuts: 'Prečice s tipkovnice',\n close: 'Zatvori',\n textFormatting: 'Formatiranje teksta',\n action: 'Akcija',\n paragraphFormatting: 'Formatiranje paragrafa',\n documentStyle: 'Stil dokumenta',\n extraKeys: 'Dodatne kombinacije',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Poništi',\n redo: 'Ponovi',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.js b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.js new file mode 100644 index 0000000..41dca68 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'hu-HU': { + font: { + bold: 'Félkövér', + italic: 'Dőlt', + underline: 'Aláhúzott', + clear: 'Formázás törlése', + height: 'Sorköz', + name: 'Betűtípus', + strikethrough: 'Áthúzott', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Betűméret' + }, + image: { + image: 'Kép', + insert: 'Kép beszúrása', + resizeFull: 'Átméretezés teljes méretre', + resizeHalf: 'Átméretezés felére', + resizeQuarter: 'Átméretezés negyedére', + floatLeft: 'Igazítás balra', + floatRight: 'Igazítás jobbra', + floatNone: 'Igazítás törlése', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Ide húzhat képet vagy szöveget', + dropImage: 'Engedje el a képet vagy szöveget', + selectFromFiles: 'Fájlok kiválasztása', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Kép URL címe', + remove: 'Kép törlése', + original: 'Original' + }, + video: { + video: 'Videó', + videoLink: 'Videó hivatkozás', + insert: 'Videó beszúrása', + url: 'Videó URL címe', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)' + }, + link: { + link: 'Hivatkozás', + insert: 'Hivatkozás beszúrása', + unlink: 'Hivatkozás megszüntetése', + edit: 'Szerkesztés', + textToDisplay: 'Megjelenítendő szöveg', + url: 'Milyen URL címre hivatkozzon?', + openInNewWindow: 'Megnyitás új ablakban' + }, + table: { + table: 'Táblázat', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Elválasztó vonal beszúrása' + }, + style: { + style: 'Stílus', + p: 'Normál', + blockquote: 'Idézet', + pre: 'Kód', + h1: 'Fejléc 1', + h2: 'Fejléc 2', + h3: 'Fejléc 3', + h4: 'Fejléc 4', + h5: 'Fejléc 5', + h6: 'Fejléc 6' + }, + lists: { + unordered: 'Listajeles lista', + ordered: 'Számozott lista' + }, + options: { + help: 'Súgó', + fullscreen: 'Teljes képernyő', + codeview: 'Kód nézet' + }, + paragraph: { + paragraph: 'Bekezdés', + outdent: 'Behúzás csökkentése', + indent: 'Behúzás növelése', + left: 'Igazítás balra', + center: 'Igazítás középre', + right: 'Igazítás jobbra', + justify: 'Sorkizárt' + }, + color: { + recent: 'Jelenlegi szín', + more: 'További színek', + background: 'Háttérszín', + foreground: 'Betűszín', + transparent: 'Átlátszó', + setTransparent: 'Átlászóság beállítása', + reset: 'Visszaállítás', + resetToDefault: 'Alaphelyzetbe állítás' + }, + shortcut: { + shortcuts: 'Gyorsbillentyű', + close: 'Bezárás', + textFormatting: 'Szöveg formázása', + action: 'Művelet', + paragraphFormatting: 'Bekezdés formázása', + documentStyle: 'Dokumentumstílus', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Új bekezdés', + 'undo': 'Visszavonás', + 'redo': 'Újra', + 'tab': 'Behúzás növelése', + 'untab': 'Behúzás csökkentése', + 'bold': 'Félkövérre állítás', + 'italic': 'Dőltre állítás', + 'underline': 'Aláhúzás', + 'strikethrough': 'Áthúzás', + 'removeFormat': 'Formázás törlése', + 'justifyLeft': 'Balra igazítás', + 'justifyCenter': 'Középre igazítás', + 'justifyRight': 'Jobbra igazítás', + 'justifyFull': 'Sorkizárt', + 'insertUnorderedList': 'Számozatlan lista be/ki', + 'insertOrderedList': 'Számozott lista be/ki', + 'outdent': 'Jelenlegi bekezdés behúzásának megszüntetése', + 'indent': 'Jelenlegi bekezdés behúzása', + 'formatPara': 'Blokk formázása bekezdésként (P tag)', + 'formatH1': 'Blokk formázása, mint Fejléc 1', + 'formatH2': 'Blokk formázása, mint Fejléc 2', + 'formatH3': 'Blokk formázása, mint Fejléc 3', + 'formatH4': 'Blokk formázása, mint Fejléc 4', + 'formatH5': 'Blokk formázása, mint Fejléc 5', + 'formatH6': 'Blokk formázása, mint Fejléc 6', + 'insertHorizontalRule': 'Vízszintes vonal beszúrása', + 'linkDialog.show': 'Link párbeszédablak megjelenítése' + }, + history: { + undo: 'Visszavonás', + redo: 'Újra' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-hu-HU.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.js.map new file mode 100644 index 0000000..48fd78f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-hu-HU.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-hu-HU.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'hu-HU': {\n font: {\n bold: 'Félkövér',\n italic: 'Dőlt',\n underline: 'Aláhúzott',\n clear: 'Formázás törlése',\n height: 'Sorköz',\n name: 'Betűtípus',\n strikethrough: 'Áthúzott',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Betűméret',\n },\n image: {\n image: 'Kép',\n insert: 'Kép beszúrása',\n resizeFull: 'Átméretezés teljes méretre',\n resizeHalf: 'Átméretezés felére',\n resizeQuarter: 'Átméretezés negyedére',\n floatLeft: 'Igazítás balra',\n floatRight: 'Igazítás jobbra',\n floatNone: 'Igazítás törlése',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Ide húzhat képet vagy szöveget',\n dropImage: 'Engedje el a képet vagy szöveget',\n selectFromFiles: 'Fájlok kiválasztása',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Kép URL címe',\n remove: 'Kép törlése',\n original: 'Original',\n },\n video: {\n video: 'Videó',\n videoLink: 'Videó hivatkozás',\n insert: 'Videó beszúrása',\n url: 'Videó URL címe',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)',\n },\n link: {\n link: 'Hivatkozás',\n insert: 'Hivatkozás beszúrása',\n unlink: 'Hivatkozás megszüntetése',\n edit: 'Szerkesztés',\n textToDisplay: 'Megjelenítendő szöveg',\n url: 'Milyen URL címre hivatkozzon?',\n openInNewWindow: 'Megnyitás új ablakban',\n },\n table: {\n table: 'Táblázat',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Elválasztó vonal beszúrása',\n },\n style: {\n style: 'Stílus',\n p: 'Normál',\n blockquote: 'Idézet',\n pre: 'Kód',\n h1: 'Fejléc 1',\n h2: 'Fejléc 2',\n h3: 'Fejléc 3',\n h4: 'Fejléc 4',\n h5: 'Fejléc 5',\n h6: 'Fejléc 6',\n },\n lists: {\n unordered: 'Listajeles lista',\n ordered: 'Számozott lista',\n },\n options: {\n help: 'Súgó',\n fullscreen: 'Teljes képernyő',\n codeview: 'Kód nézet',\n },\n paragraph: {\n paragraph: 'Bekezdés',\n outdent: 'Behúzás csökkentése',\n indent: 'Behúzás növelése',\n left: 'Igazítás balra',\n center: 'Igazítás középre',\n right: 'Igazítás jobbra',\n justify: 'Sorkizárt',\n },\n color: {\n recent: 'Jelenlegi szín',\n more: 'További színek',\n background: 'Háttérszín',\n foreground: 'Betűszín',\n transparent: 'Átlátszó',\n setTransparent: 'Átlászóság beállítása',\n reset: 'Visszaállítás',\n resetToDefault: 'Alaphelyzetbe állítás',\n },\n shortcut: {\n shortcuts: 'Gyorsbillentyű',\n close: 'Bezárás',\n textFormatting: 'Szöveg formázása',\n action: 'Művelet',\n paragraphFormatting: 'Bekezdés formázása',\n documentStyle: 'Dokumentumstílus',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Új bekezdés',\n 'undo': 'Visszavonás',\n 'redo': 'Újra',\n 'tab': 'Behúzás növelése',\n 'untab': 'Behúzás csökkentése',\n 'bold': 'Félkövérre állítás',\n 'italic': 'Dőltre állítás',\n 'underline': 'Aláhúzás',\n 'strikethrough': 'Áthúzás',\n 'removeFormat': 'Formázás törlése',\n 'justifyLeft': 'Balra igazítás',\n 'justifyCenter': 'Középre igazítás',\n 'justifyRight': 'Jobbra igazítás',\n 'justifyFull': 'Sorkizárt',\n 'insertUnorderedList': 'Számozatlan lista be/ki',\n 'insertOrderedList': 'Számozott lista be/ki',\n 'outdent': 'Jelenlegi bekezdés behúzásának megszüntetése',\n 'indent': 'Jelenlegi bekezdés behúzása',\n 'formatPara': 'Blokk formázása bekezdésként (P tag)',\n 'formatH1': 'Blokk formázása, mint Fejléc 1',\n 'formatH2': 'Blokk formázása, mint Fejléc 2',\n 'formatH3': 'Blokk formázása, mint Fejléc 3',\n 'formatH4': 'Blokk formázása, mint Fejléc 4',\n 'formatH5': 'Blokk formázása, mint Fejléc 5',\n 'formatH6': 'Blokk formázása, mint Fejléc 6',\n 'insertHorizontalRule': 'Vízszintes vonal beszúrása',\n 'linkDialog.show': 'Link párbeszédablak megjelenítése',\n },\n history: {\n undo: 'Visszavonás',\n redo: 'Újra',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.min.js new file mode 100644 index 0000000..ba706f5 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var s=t();for(var r in s)("object"==typeof exports?exports:e)[r]=s[r]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"hu-HU":{font:{bold:"Félkövér",italic:"Dőlt",underline:"Aláhúzott",clear:"Formázás törlése",height:"Sorköz",name:"Betűtípus",strikethrough:"Áthúzott",subscript:"Subscript",superscript:"Superscript",size:"Betűméret"},image:{image:"Kép",insert:"Kép beszúrása",resizeFull:"Átméretezés teljes méretre",resizeHalf:"Átméretezés felére",resizeQuarter:"Átméretezés negyedére",floatLeft:"Igazítás balra",floatRight:"Igazítás jobbra",floatNone:"Igazítás törlése",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Ide húzhat képet vagy szöveget",dropImage:"Engedje el a képet vagy szöveget",selectFromFiles:"Fájlok kiválasztása",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Kép URL címe",remove:"Kép törlése",original:"Original"},video:{video:"Videó",videoLink:"Videó hivatkozás",insert:"Videó beszúrása",url:"Videó URL címe",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)"},link:{link:"Hivatkozás",insert:"Hivatkozás beszúrása",unlink:"Hivatkozás megszüntetése",edit:"Szerkesztés",textToDisplay:"Megjelenítendő szöveg",url:"Milyen URL címre hivatkozzon?",openInNewWindow:"Megnyitás új ablakban"},table:{table:"Táblázat",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Elválasztó vonal beszúrása"},style:{style:"Stílus",p:"Normál",blockquote:"Idézet",pre:"Kód",h1:"Fejléc 1",h2:"Fejléc 2",h3:"Fejléc 3",h4:"Fejléc 4",h5:"Fejléc 5",h6:"Fejléc 6"},lists:{unordered:"Listajeles lista",ordered:"Számozott lista"},options:{help:"Súgó",fullscreen:"Teljes képernyő",codeview:"Kód nézet"},paragraph:{paragraph:"Bekezdés",outdent:"Behúzás csökkentése",indent:"Behúzás növelése",left:"Igazítás balra",center:"Igazítás középre",right:"Igazítás jobbra",justify:"Sorkizárt"},color:{recent:"Jelenlegi szín",more:"További színek",background:"Háttérszín",foreground:"Betűszín",transparent:"Átlátszó",setTransparent:"Átlászóság beállítása",reset:"Visszaállítás",resetToDefault:"Alaphelyzetbe állítás"},shortcut:{shortcuts:"Gyorsbillentyű",close:"Bezárás",textFormatting:"Szöveg formázása",action:"Művelet",paragraphFormatting:"Bekezdés formázása",documentStyle:"Dokumentumstílus",extraKeys:"Extra keys"},help:{insertParagraph:"Új bekezdés",undo:"Visszavonás",redo:"Újra",tab:"Behúzás növelése",untab:"Behúzás csökkentése",bold:"Félkövérre állítás",italic:"Dőltre állítás",underline:"Aláhúzás",strikethrough:"Áthúzás",removeFormat:"Formázás törlése",justifyLeft:"Balra igazítás",justifyCenter:"Középre igazítás",justifyRight:"Jobbra igazítás",justifyFull:"Sorkizárt",insertUnorderedList:"Számozatlan lista be/ki",insertOrderedList:"Számozott lista be/ki",outdent:"Jelenlegi bekezdés behúzásának megszüntetése",indent:"Jelenlegi bekezdés behúzása",formatPara:"Blokk formázása bekezdésként (P tag)",formatH1:"Blokk formázása, mint Fejléc 1",formatH2:"Blokk formázása, mint Fejléc 2",formatH3:"Blokk formázása, mint Fejléc 3",formatH4:"Blokk formázása, mint Fejléc 4",formatH5:"Blokk formázása, mint Fejléc 5",formatH6:"Blokk formázása, mint Fejléc 6",insertHorizontalRule:"Vízszintes vonal beszúrása","linkDialog.show":"Link párbeszédablak megjelenítése"},history:{undo:"Visszavonás",redo:"Újra"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-hu-HU.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.min.js.map new file mode 100644 index 0000000..4524300 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-hu-HU.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-hu-HU.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,WACNC,OAAQ,OACRC,UAAW,YACXC,MAAO,mBACPC,OAAQ,SACRC,KAAM,YACNC,cAAe,WACfC,UAAW,YACXC,YAAa,cACbC,KAAM,aAERC,MAAO,CACLA,MAAO,MACPC,OAAQ,gBACRC,WAAY,6BACZC,WAAY,qBACZC,cAAe,wBACfC,UAAW,iBACXC,WAAY,kBACZC,UAAW,mBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,iCACfC,UAAW,mCACXC,gBAAiB,sBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,eACLC,OAAQ,cACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,mBACXpB,OAAQ,kBACRgB,IAAK,iBACLK,UAAW,6DAEbC,KAAM,CACJA,KAAM,aACNtB,OAAQ,uBACRuB,OAAQ,2BACRC,KAAM,cACNC,cAAe,wBACfT,IAAK,gCACLU,gBAAiB,yBAEnBC,MAAO,CACLA,MAAO,WACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,8BAEVoC,MAAO,CACLA,MAAO,SACPC,EAAG,SACHC,WAAY,SACZC,IAAK,MACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,mBACXC,QAAS,mBAEXC,QAAS,CACPC,KAAM,OACNC,WAAY,kBACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,sBACTC,OAAQ,mBACRC,KAAM,iBACNC,OAAQ,mBACRC,MAAO,kBACPC,QAAS,aAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,iBACNC,WAAY,aACZC,WAAY,WACZC,YAAa,WACbC,eAAgB,wBAChBC,MAAO,gBACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,iBACXC,MAAO,UACPC,eAAgB,mBAChBC,OAAQ,UACRC,oBAAqB,qBACrBC,cAAe,mBACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,cACnB,KAAQ,cACR,KAAQ,OACR,IAAO,mBACP,MAAS,sBACT,KAAQ,qBACR,OAAU,iBACV,UAAa,WACb,cAAiB,UACjB,aAAgB,mBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,YACf,oBAAuB,0BACvB,kBAAqB,wBACrB,QAAW,+CACX,OAAU,8BACV,WAAc,uCACd,SAAY,iCACZ,SAAY,iCACZ,SAAY,iCACZ,SAAY,iCACZ,SAAY,iCACZ,SAAY,iCACZ,qBAAwB,6BACxB,kBAAmB,qCAErB2B,QAAS,CACPC,KAAM,cACNC,KAAM,QAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-hu-HU.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'hu-HU': {\n font: {\n bold: 'Félkövér',\n italic: 'Dőlt',\n underline: 'Aláhúzott',\n clear: 'Formázás törlése',\n height: 'Sorköz',\n name: 'Betűtípus',\n strikethrough: 'Áthúzott',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Betűméret',\n },\n image: {\n image: 'Kép',\n insert: 'Kép beszúrása',\n resizeFull: 'Átméretezés teljes méretre',\n resizeHalf: 'Átméretezés felére',\n resizeQuarter: 'Átméretezés negyedére',\n floatLeft: 'Igazítás balra',\n floatRight: 'Igazítás jobbra',\n floatNone: 'Igazítás törlése',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Ide húzhat képet vagy szöveget',\n dropImage: 'Engedje el a képet vagy szöveget',\n selectFromFiles: 'Fájlok kiválasztása',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Kép URL címe',\n remove: 'Kép törlése',\n original: 'Original',\n },\n video: {\n video: 'Videó',\n videoLink: 'Videó hivatkozás',\n insert: 'Videó beszúrása',\n url: 'Videó URL címe',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)',\n },\n link: {\n link: 'Hivatkozás',\n insert: 'Hivatkozás beszúrása',\n unlink: 'Hivatkozás megszüntetése',\n edit: 'Szerkesztés',\n textToDisplay: 'Megjelenítendő szöveg',\n url: 'Milyen URL címre hivatkozzon?',\n openInNewWindow: 'Megnyitás új ablakban',\n },\n table: {\n table: 'Táblázat',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Elválasztó vonal beszúrása',\n },\n style: {\n style: 'Stílus',\n p: 'Normál',\n blockquote: 'Idézet',\n pre: 'Kód',\n h1: 'Fejléc 1',\n h2: 'Fejléc 2',\n h3: 'Fejléc 3',\n h4: 'Fejléc 4',\n h5: 'Fejléc 5',\n h6: 'Fejléc 6',\n },\n lists: {\n unordered: 'Listajeles lista',\n ordered: 'Számozott lista',\n },\n options: {\n help: 'Súgó',\n fullscreen: 'Teljes képernyő',\n codeview: 'Kód nézet',\n },\n paragraph: {\n paragraph: 'Bekezdés',\n outdent: 'Behúzás csökkentése',\n indent: 'Behúzás növelése',\n left: 'Igazítás balra',\n center: 'Igazítás középre',\n right: 'Igazítás jobbra',\n justify: 'Sorkizárt',\n },\n color: {\n recent: 'Jelenlegi szín',\n more: 'További színek',\n background: 'Háttérszín',\n foreground: 'Betűszín',\n transparent: 'Átlátszó',\n setTransparent: 'Átlászóság beállítása',\n reset: 'Visszaállítás',\n resetToDefault: 'Alaphelyzetbe állítás',\n },\n shortcut: {\n shortcuts: 'Gyorsbillentyű',\n close: 'Bezárás',\n textFormatting: 'Szöveg formázása',\n action: 'Művelet',\n paragraphFormatting: 'Bekezdés formázása',\n documentStyle: 'Dokumentumstílus',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Új bekezdés',\n 'undo': 'Visszavonás',\n 'redo': 'Újra',\n 'tab': 'Behúzás növelése',\n 'untab': 'Behúzás csökkentése',\n 'bold': 'Félkövérre állítás',\n 'italic': 'Dőltre állítás',\n 'underline': 'Aláhúzás',\n 'strikethrough': 'Áthúzás',\n 'removeFormat': 'Formázás törlése',\n 'justifyLeft': 'Balra igazítás',\n 'justifyCenter': 'Középre igazítás',\n 'justifyRight': 'Jobbra igazítás',\n 'justifyFull': 'Sorkizárt',\n 'insertUnorderedList': 'Számozatlan lista be/ki',\n 'insertOrderedList': 'Számozott lista be/ki',\n 'outdent': 'Jelenlegi bekezdés behúzásának megszüntetése',\n 'indent': 'Jelenlegi bekezdés behúzása',\n 'formatPara': 'Blokk formázása bekezdésként (P tag)',\n 'formatH1': 'Blokk formázása, mint Fejléc 1',\n 'formatH2': 'Blokk formázása, mint Fejléc 2',\n 'formatH3': 'Blokk formázása, mint Fejléc 3',\n 'formatH4': 'Blokk formázása, mint Fejléc 4',\n 'formatH5': 'Blokk formázása, mint Fejléc 5',\n 'formatH6': 'Blokk formázása, mint Fejléc 6',\n 'insertHorizontalRule': 'Vízszintes vonal beszúrása',\n 'linkDialog.show': 'Link párbeszédablak megjelenítése',\n },\n history: {\n undo: 'Visszavonás',\n redo: 'Újra',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.js b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.js new file mode 100644 index 0000000..cccf22b --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'id-ID': { + font: { + bold: 'Tebal', + italic: 'Miring', + underline: 'Garis bawah', + clear: 'Bersihkan gaya', + height: 'Jarak baris', + name: 'Jenis Tulisan', + strikethrough: 'Coret', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Ukuran font' + }, + image: { + image: 'Gambar', + insert: 'Sisipkan gambar', + resizeFull: 'Ukuran penuh', + resizeHalf: 'Ukuran 50%', + resizeQuarter: 'Ukuran 25%', + floatLeft: 'Rata kiri', + floatRight: 'Rata kanan', + floatNone: 'Tanpa perataan', + shapeRounded: 'Bentuk: Membundar', + shapeCircle: 'Bentuk: Bundar', + shapeThumbnail: 'Bentuk: Thumbnail', + shapeNone: 'Bentuk: Tidak ada', + dragImageHere: 'Tarik gambar ke area ini', + dropImage: 'Letakkan gambar atau teks', + selectFromFiles: 'Pilih gambar dari berkas', + maximumFileSize: 'Ukuran maksimal berkas', + maximumFileSizeError: 'Ukuran maksimal berkas terlampaui.', + url: 'URL gambar', + remove: 'Hapus Gambar', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Link video', + insert: 'Sisipkan video', + url: 'Tautan video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)' + }, + link: { + link: 'Tautan', + insert: 'Tambah tautan', + unlink: 'Hapus tautan', + edit: 'Edit', + textToDisplay: 'Tampilan teks', + url: 'Tautan tujuan', + openInNewWindow: 'Buka di jendela baru' + }, + table: { + table: 'Tabel', + addRowAbove: 'Tambahkan baris ke atas', + addRowBelow: 'Tambahkan baris ke bawah', + addColLeft: 'Tambahkan kolom ke kiri', + addColRight: 'Tambahkan kolom ke kanan', + delRow: 'Hapus baris', + delCol: 'Hapus kolom', + delTable: 'Hapus tabel' + }, + hr: { + insert: 'Masukkan garis horizontal' + }, + style: { + style: 'Gaya', + p: 'p', + blockquote: 'Kutipan', + pre: 'Kode', + h1: 'Heading 1', + h2: 'Heading 2', + h3: 'Heading 3', + h4: 'Heading 4', + h5: 'Heading 5', + h6: 'Heading 6' + }, + lists: { + unordered: 'Pencacahan', + ordered: 'Penomoran' + }, + options: { + help: 'Bantuan', + fullscreen: 'Layar penuh', + codeview: 'Kode HTML' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Outdent', + indent: 'Indent', + left: 'Rata kiri', + center: 'Rata tengah', + right: 'Rata kanan', + justify: 'Rata kanan kiri' + }, + color: { + recent: 'Warna sekarang', + more: 'Selengkapnya', + background: 'Warna latar', + foreground: 'Warna font', + transparent: 'Transparan', + setTransparent: 'Atur transparansi', + reset: 'Atur ulang', + resetToDefault: 'Kembalikan kesemula' + }, + shortcut: { + shortcuts: 'Jalan pintas', + close: 'Tutup', + textFormatting: 'Format teks', + action: 'Aksi', + paragraphFormatting: 'Format paragraf', + documentStyle: 'Gaya dokumen', + extraKeys: 'Shortcut tambahan' + }, + help: { + 'insertParagraph': 'Tambahkan paragraf', + 'undo': 'Urungkan perintah terakhir', + 'redo': 'Kembalikan perintah terakhir', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Mengaktifkan gaya tebal', + 'italic': 'Mengaktifkan gaya italic', + 'underline': 'Mengaktifkan gaya underline', + 'strikethrough': 'Mengaktifkan gaya strikethrough', + 'removeFormat': 'Hapus semua gaya', + 'justifyLeft': 'Atur rata kiri', + 'justifyCenter': 'Atur rata tengah', + 'justifyRight': 'Atur rata kanan', + 'justifyFull': 'Atur rata kiri-kanan', + 'insertUnorderedList': 'Nyalakan urutan tanpa nomor', + 'insertOrderedList': 'Nyalakan urutan bernomor', + 'outdent': 'Outdent di paragraf terpilih', + 'indent': 'Indent di paragraf terpilih', + 'formatPara': 'Ubah format gaya tulisan terpilih menjadi paragraf', + 'formatH1': 'Ubah format gaya tulisan terpilih menjadi Heading 1', + 'formatH2': 'Ubah format gaya tulisan terpilih menjadi Heading 2', + 'formatH3': 'Ubah format gaya tulisan terpilih menjadi Heading 3', + 'formatH4': 'Ubah format gaya tulisan terpilih menjadi Heading 4', + 'formatH5': 'Ubah format gaya tulisan terpilih menjadi Heading 5', + 'formatH6': 'Ubah format gaya tulisan terpilih menjadi Heading 6', + 'insertHorizontalRule': 'Masukkan garis horizontal', + 'linkDialog.show': 'Tampilkan Link Dialog' + }, + history: { + undo: 'Kembali', + redo: 'Ulang' + }, + specialChar: { + specialChar: 'KARAKTER KHUSUS', + select: 'Pilih karakter khusus' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-id-ID.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.js.map new file mode 100644 index 0000000..43ea934 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-id-ID.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-id-ID.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'id-ID': {\n font: {\n bold: 'Tebal',\n italic: 'Miring',\n underline: 'Garis bawah',\n clear: 'Bersihkan gaya',\n height: 'Jarak baris',\n name: 'Jenis Tulisan',\n strikethrough: 'Coret',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Ukuran font',\n },\n image: {\n image: 'Gambar',\n insert: 'Sisipkan gambar',\n resizeFull: 'Ukuran penuh',\n resizeHalf: 'Ukuran 50%',\n resizeQuarter: 'Ukuran 25%',\n floatLeft: 'Rata kiri',\n floatRight: 'Rata kanan',\n floatNone: 'Tanpa perataan',\n shapeRounded: 'Bentuk: Membundar',\n shapeCircle: 'Bentuk: Bundar',\n shapeThumbnail: 'Bentuk: Thumbnail',\n shapeNone: 'Bentuk: Tidak ada',\n dragImageHere: 'Tarik gambar ke area ini',\n dropImage: 'Letakkan gambar atau teks',\n selectFromFiles: 'Pilih gambar dari berkas',\n maximumFileSize: 'Ukuran maksimal berkas',\n maximumFileSizeError: 'Ukuran maksimal berkas terlampaui.',\n url: 'URL gambar',\n remove: 'Hapus Gambar',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Link video',\n insert: 'Sisipkan video',\n url: 'Tautan video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)',\n },\n link: {\n link: 'Tautan',\n insert: 'Tambah tautan',\n unlink: 'Hapus tautan',\n edit: 'Edit',\n textToDisplay: 'Tampilan teks',\n url: 'Tautan tujuan',\n openInNewWindow: 'Buka di jendela baru',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Tambahkan baris ke atas',\n addRowBelow: 'Tambahkan baris ke bawah',\n addColLeft: 'Tambahkan kolom ke kiri',\n addColRight: 'Tambahkan kolom ke kanan',\n delRow: 'Hapus baris',\n delCol: 'Hapus kolom',\n delTable: 'Hapus tabel',\n },\n hr: {\n insert: 'Masukkan garis horizontal',\n },\n style: {\n style: 'Gaya',\n p: 'p',\n blockquote: 'Kutipan',\n pre: 'Kode',\n h1: 'Heading 1',\n h2: 'Heading 2',\n h3: 'Heading 3',\n h4: 'Heading 4',\n h5: 'Heading 5',\n h6: 'Heading 6',\n },\n lists: {\n unordered: 'Pencacahan',\n ordered: 'Penomoran',\n },\n options: {\n help: 'Bantuan',\n fullscreen: 'Layar penuh',\n codeview: 'Kode HTML',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Rata kiri',\n center: 'Rata tengah',\n right: 'Rata kanan',\n justify: 'Rata kanan kiri',\n },\n color: {\n recent: 'Warna sekarang',\n more: 'Selengkapnya',\n background: 'Warna latar',\n foreground: 'Warna font',\n transparent: 'Transparan',\n setTransparent: 'Atur transparansi',\n reset: 'Atur ulang',\n resetToDefault: 'Kembalikan kesemula',\n },\n shortcut: {\n shortcuts: 'Jalan pintas',\n close: 'Tutup',\n textFormatting: 'Format teks',\n action: 'Aksi',\n paragraphFormatting: 'Format paragraf',\n documentStyle: 'Gaya dokumen',\n extraKeys: 'Shortcut tambahan',\n },\n help: {\n 'insertParagraph': 'Tambahkan paragraf',\n 'undo': 'Urungkan perintah terakhir',\n 'redo': 'Kembalikan perintah terakhir',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Mengaktifkan gaya tebal',\n 'italic': 'Mengaktifkan gaya italic',\n 'underline': 'Mengaktifkan gaya underline',\n 'strikethrough': 'Mengaktifkan gaya strikethrough',\n 'removeFormat': 'Hapus semua gaya',\n 'justifyLeft': 'Atur rata kiri',\n 'justifyCenter': 'Atur rata tengah',\n 'justifyRight': 'Atur rata kanan',\n 'justifyFull': 'Atur rata kiri-kanan',\n 'insertUnorderedList': 'Nyalakan urutan tanpa nomor',\n 'insertOrderedList': 'Nyalakan urutan bernomor',\n 'outdent': 'Outdent di paragraf terpilih',\n 'indent': 'Indent di paragraf terpilih',\n 'formatPara': 'Ubah format gaya tulisan terpilih menjadi paragraf',\n 'formatH1': 'Ubah format gaya tulisan terpilih menjadi Heading 1',\n 'formatH2': 'Ubah format gaya tulisan terpilih menjadi Heading 2',\n 'formatH3': 'Ubah format gaya tulisan terpilih menjadi Heading 3',\n 'formatH4': 'Ubah format gaya tulisan terpilih menjadi Heading 4',\n 'formatH5': 'Ubah format gaya tulisan terpilih menjadi Heading 5',\n 'formatH6': 'Ubah format gaya tulisan terpilih menjadi Heading 6',\n 'insertHorizontalRule': 'Masukkan garis horizontal',\n 'linkDialog.show': 'Tampilkan Link Dialog',\n },\n history: {\n undo: 'Kembali',\n redo: 'Ulang',\n },\n specialChar: {\n specialChar: 'KARAKTER KHUSUS',\n select: 'Pilih karakter khusus',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.min.js new file mode 100644 index 0000000..68966df --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(a,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var t in r)("object"==typeof exports?exports:a)[t]=r[t]}}(self,(function(){return(a=jQuery).extend(a.summernote.lang,{"id-ID":{font:{bold:"Tebal",italic:"Miring",underline:"Garis bawah",clear:"Bersihkan gaya",height:"Jarak baris",name:"Jenis Tulisan",strikethrough:"Coret",subscript:"Subscript",superscript:"Superscript",size:"Ukuran font"},image:{image:"Gambar",insert:"Sisipkan gambar",resizeFull:"Ukuran penuh",resizeHalf:"Ukuran 50%",resizeQuarter:"Ukuran 25%",floatLeft:"Rata kiri",floatRight:"Rata kanan",floatNone:"Tanpa perataan",shapeRounded:"Bentuk: Membundar",shapeCircle:"Bentuk: Bundar",shapeThumbnail:"Bentuk: Thumbnail",shapeNone:"Bentuk: Tidak ada",dragImageHere:"Tarik gambar ke area ini",dropImage:"Letakkan gambar atau teks",selectFromFiles:"Pilih gambar dari berkas",maximumFileSize:"Ukuran maksimal berkas",maximumFileSizeError:"Ukuran maksimal berkas terlampaui.",url:"URL gambar",remove:"Hapus Gambar",original:"Original"},video:{video:"Video",videoLink:"Link video",insert:"Sisipkan video",url:"Tautan video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)"},link:{link:"Tautan",insert:"Tambah tautan",unlink:"Hapus tautan",edit:"Edit",textToDisplay:"Tampilan teks",url:"Tautan tujuan",openInNewWindow:"Buka di jendela baru"},table:{table:"Tabel",addRowAbove:"Tambahkan baris ke atas",addRowBelow:"Tambahkan baris ke bawah",addColLeft:"Tambahkan kolom ke kiri",addColRight:"Tambahkan kolom ke kanan",delRow:"Hapus baris",delCol:"Hapus kolom",delTable:"Hapus tabel"},hr:{insert:"Masukkan garis horizontal"},style:{style:"Gaya",p:"p",blockquote:"Kutipan",pre:"Kode",h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6"},lists:{unordered:"Pencacahan",ordered:"Penomoran"},options:{help:"Bantuan",fullscreen:"Layar penuh",codeview:"Kode HTML"},paragraph:{paragraph:"Paragraf",outdent:"Outdent",indent:"Indent",left:"Rata kiri",center:"Rata tengah",right:"Rata kanan",justify:"Rata kanan kiri"},color:{recent:"Warna sekarang",more:"Selengkapnya",background:"Warna latar",foreground:"Warna font",transparent:"Transparan",setTransparent:"Atur transparansi",reset:"Atur ulang",resetToDefault:"Kembalikan kesemula"},shortcut:{shortcuts:"Jalan pintas",close:"Tutup",textFormatting:"Format teks",action:"Aksi",paragraphFormatting:"Format paragraf",documentStyle:"Gaya dokumen",extraKeys:"Shortcut tambahan"},help:{insertParagraph:"Tambahkan paragraf",undo:"Urungkan perintah terakhir",redo:"Kembalikan perintah terakhir",tab:"Tab",untab:"Untab",bold:"Mengaktifkan gaya tebal",italic:"Mengaktifkan gaya italic",underline:"Mengaktifkan gaya underline",strikethrough:"Mengaktifkan gaya strikethrough",removeFormat:"Hapus semua gaya",justifyLeft:"Atur rata kiri",justifyCenter:"Atur rata tengah",justifyRight:"Atur rata kanan",justifyFull:"Atur rata kiri-kanan",insertUnorderedList:"Nyalakan urutan tanpa nomor",insertOrderedList:"Nyalakan urutan bernomor",outdent:"Outdent di paragraf terpilih",indent:"Indent di paragraf terpilih",formatPara:"Ubah format gaya tulisan terpilih menjadi paragraf",formatH1:"Ubah format gaya tulisan terpilih menjadi Heading 1",formatH2:"Ubah format gaya tulisan terpilih menjadi Heading 2",formatH3:"Ubah format gaya tulisan terpilih menjadi Heading 3",formatH4:"Ubah format gaya tulisan terpilih menjadi Heading 4",formatH5:"Ubah format gaya tulisan terpilih menjadi Heading 5",formatH6:"Ubah format gaya tulisan terpilih menjadi Heading 6",insertHorizontalRule:"Masukkan garis horizontal","linkDialog.show":"Tampilkan Link Dialog"},history:{undo:"Kembali",redo:"Ulang"},specialChar:{specialChar:"KARAKTER KHUSUS",select:"Pilih karakter khusus"}}}),{};var a})); +//# sourceMappingURL=summernote-id-ID.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.min.js.map new file mode 100644 index 0000000..e104dcf --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-id-ID.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-id-ID.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,SACRC,UAAW,cACXC,MAAO,iBACPC,OAAQ,cACRC,KAAM,gBACNC,cAAe,QACfC,UAAW,YACXC,YAAa,cACbC,KAAM,eAERC,MAAO,CACLA,MAAO,SACPC,OAAQ,kBACRC,WAAY,eACZC,WAAY,aACZC,cAAe,aACfC,UAAW,YACXC,WAAY,aACZC,UAAW,iBACXC,aAAc,oBACdC,YAAa,iBACbC,eAAgB,oBAChBC,UAAW,oBACXC,cAAe,2BACfC,UAAW,4BACXC,gBAAiB,2BACjBC,gBAAiB,yBACjBC,qBAAsB,qCACtBC,IAAK,aACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,iBACRgB,IAAK,eACLK,UAAW,6DAEbC,KAAM,CACJA,KAAM,SACNtB,OAAQ,gBACRuB,OAAQ,eACRC,KAAM,OACNC,cAAe,gBACfT,IAAK,gBACLU,gBAAiB,wBAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,0BACbC,YAAa,2BACbC,WAAY,0BACZC,YAAa,2BACbC,OAAQ,cACRC,OAAQ,cACRC,SAAU,eAEZC,GAAI,CACFnC,OAAQ,6BAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,IACHC,WAAY,UACZC,IAAK,OACLC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,aAENC,MAAO,CACLC,UAAW,aACXC,QAAS,aAEXC,QAAS,CACPC,KAAM,UACNC,WAAY,cACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,UACTC,OAAQ,SACRC,KAAM,YACNC,OAAQ,cACRC,MAAO,aACPC,QAAS,mBAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,eACNC,WAAY,cACZC,WAAY,aACZC,YAAa,aACbC,eAAgB,oBAChBC,MAAO,aACPC,eAAgB,uBAElBC,SAAU,CACRC,UAAW,eACXC,MAAO,QACPC,eAAgB,cAChBC,OAAQ,OACRC,oBAAqB,kBACrBC,cAAe,eACfC,UAAW,qBAEb1B,KAAM,CACJ,gBAAmB,qBACnB,KAAQ,6BACR,KAAQ,+BACR,IAAO,MACP,MAAS,QACT,KAAQ,0BACR,OAAU,2BACV,UAAa,8BACb,cAAiB,kCACjB,aAAgB,mBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,uBACf,oBAAuB,8BACvB,kBAAqB,2BACrB,QAAW,+BACX,OAAU,8BACV,WAAc,qDACd,SAAY,sDACZ,SAAY,sDACZ,SAAY,sDACZ,SAAY,sDACZ,SAAY,sDACZ,SAAY,sDACZ,qBAAwB,4BACxB,kBAAmB,yBAErB2B,QAAS,CACPC,KAAM,UACNC,KAAM,SAERC,YAAa,CACXA,YAAa,kBACbC,OAAQ,4B,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-id-ID.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'id-ID': {\n font: {\n bold: 'Tebal',\n italic: 'Miring',\n underline: 'Garis bawah',\n clear: 'Bersihkan gaya',\n height: 'Jarak baris',\n name: 'Jenis Tulisan',\n strikethrough: 'Coret',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Ukuran font',\n },\n image: {\n image: 'Gambar',\n insert: 'Sisipkan gambar',\n resizeFull: 'Ukuran penuh',\n resizeHalf: 'Ukuran 50%',\n resizeQuarter: 'Ukuran 25%',\n floatLeft: 'Rata kiri',\n floatRight: 'Rata kanan',\n floatNone: 'Tanpa perataan',\n shapeRounded: 'Bentuk: Membundar',\n shapeCircle: 'Bentuk: Bundar',\n shapeThumbnail: 'Bentuk: Thumbnail',\n shapeNone: 'Bentuk: Tidak ada',\n dragImageHere: 'Tarik gambar ke area ini',\n dropImage: 'Letakkan gambar atau teks',\n selectFromFiles: 'Pilih gambar dari berkas',\n maximumFileSize: 'Ukuran maksimal berkas',\n maximumFileSizeError: 'Ukuran maksimal berkas terlampaui.',\n url: 'URL gambar',\n remove: 'Hapus Gambar',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Link video',\n insert: 'Sisipkan video',\n url: 'Tautan video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)',\n },\n link: {\n link: 'Tautan',\n insert: 'Tambah tautan',\n unlink: 'Hapus tautan',\n edit: 'Edit',\n textToDisplay: 'Tampilan teks',\n url: 'Tautan tujuan',\n openInNewWindow: 'Buka di jendela baru',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Tambahkan baris ke atas',\n addRowBelow: 'Tambahkan baris ke bawah',\n addColLeft: 'Tambahkan kolom ke kiri',\n addColRight: 'Tambahkan kolom ke kanan',\n delRow: 'Hapus baris',\n delCol: 'Hapus kolom',\n delTable: 'Hapus tabel',\n },\n hr: {\n insert: 'Masukkan garis horizontal',\n },\n style: {\n style: 'Gaya',\n p: 'p',\n blockquote: 'Kutipan',\n pre: 'Kode',\n h1: 'Heading 1',\n h2: 'Heading 2',\n h3: 'Heading 3',\n h4: 'Heading 4',\n h5: 'Heading 5',\n h6: 'Heading 6',\n },\n lists: {\n unordered: 'Pencacahan',\n ordered: 'Penomoran',\n },\n options: {\n help: 'Bantuan',\n fullscreen: 'Layar penuh',\n codeview: 'Kode HTML',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Rata kiri',\n center: 'Rata tengah',\n right: 'Rata kanan',\n justify: 'Rata kanan kiri',\n },\n color: {\n recent: 'Warna sekarang',\n more: 'Selengkapnya',\n background: 'Warna latar',\n foreground: 'Warna font',\n transparent: 'Transparan',\n setTransparent: 'Atur transparansi',\n reset: 'Atur ulang',\n resetToDefault: 'Kembalikan kesemula',\n },\n shortcut: {\n shortcuts: 'Jalan pintas',\n close: 'Tutup',\n textFormatting: 'Format teks',\n action: 'Aksi',\n paragraphFormatting: 'Format paragraf',\n documentStyle: 'Gaya dokumen',\n extraKeys: 'Shortcut tambahan',\n },\n help: {\n 'insertParagraph': 'Tambahkan paragraf',\n 'undo': 'Urungkan perintah terakhir',\n 'redo': 'Kembalikan perintah terakhir',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Mengaktifkan gaya tebal',\n 'italic': 'Mengaktifkan gaya italic',\n 'underline': 'Mengaktifkan gaya underline',\n 'strikethrough': 'Mengaktifkan gaya strikethrough',\n 'removeFormat': 'Hapus semua gaya',\n 'justifyLeft': 'Atur rata kiri',\n 'justifyCenter': 'Atur rata tengah',\n 'justifyRight': 'Atur rata kanan',\n 'justifyFull': 'Atur rata kiri-kanan',\n 'insertUnorderedList': 'Nyalakan urutan tanpa nomor',\n 'insertOrderedList': 'Nyalakan urutan bernomor',\n 'outdent': 'Outdent di paragraf terpilih',\n 'indent': 'Indent di paragraf terpilih',\n 'formatPara': 'Ubah format gaya tulisan terpilih menjadi paragraf',\n 'formatH1': 'Ubah format gaya tulisan terpilih menjadi Heading 1',\n 'formatH2': 'Ubah format gaya tulisan terpilih menjadi Heading 2',\n 'formatH3': 'Ubah format gaya tulisan terpilih menjadi Heading 3',\n 'formatH4': 'Ubah format gaya tulisan terpilih menjadi Heading 4',\n 'formatH5': 'Ubah format gaya tulisan terpilih menjadi Heading 5',\n 'formatH6': 'Ubah format gaya tulisan terpilih menjadi Heading 6',\n 'insertHorizontalRule': 'Masukkan garis horizontal',\n 'linkDialog.show': 'Tampilkan Link Dialog',\n },\n history: {\n undo: 'Kembali',\n redo: 'Ulang',\n },\n specialChar: {\n specialChar: 'KARAKTER KHUSUS',\n select: 'Pilih karakter khusus',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.js b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.js new file mode 100644 index 0000000..6ca0d68 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'it-IT': { + font: { + bold: 'Testo in grassetto', + italic: 'Testo in corsivo', + underline: 'Testo sottolineato', + clear: 'Elimina la formattazione del testo', + height: 'Altezza della linea di testo', + name: 'Famiglia Font', + strikethrough: 'Testo barrato', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Dimensione del carattere' + }, + image: { + image: 'Immagine', + insert: 'Inserisci Immagine', + resizeFull: 'Dimensioni originali', + resizeHalf: 'Ridimensiona al 50%', + resizeQuarter: 'Ridimensiona al 25%', + floatLeft: 'Posiziona a sinistra', + floatRight: 'Posiziona a destra', + floatNone: 'Nessun posizionamento', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Trascina qui un\'immagine', + dropImage: 'Drop image or Text', + selectFromFiles: 'Scegli dai Documenti', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL dell\'immagine', + remove: 'Rimuovi immagine', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Collegamento ad un Video', + insert: 'Inserisci Video', + url: 'URL del Video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Collegamento', + insert: 'Inserisci Collegamento', + unlink: 'Elimina collegamento', + edit: 'Modifica collegamento', + textToDisplay: 'Testo del collegamento', + url: 'URL del collegamento', + openInNewWindow: 'Apri in una nuova finestra' + }, + table: { + table: 'Tabella', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Inserisce una linea di separazione' + }, + style: { + style: 'Stili', + p: 'pe', + blockquote: 'Citazione', + pre: 'Codice', + h1: 'Titolo 1', + h2: 'Titolo 2', + h3: 'Titolo 3', + h4: 'Titolo 4', + h5: 'Titolo 5', + h6: 'Titolo 6' + }, + lists: { + unordered: 'Elenco non ordinato', + ordered: 'Elenco ordinato' + }, + options: { + help: 'Aiuto', + fullscreen: 'Modalità a tutto schermo', + codeview: 'Visualizza codice' + }, + paragraph: { + paragraph: 'Paragrafo', + outdent: 'Diminuisce il livello di rientro', + indent: 'Aumenta il livello di rientro', + left: 'Allinea a sinistra', + center: 'Centra', + right: 'Allinea a destra', + justify: 'Giustifica (allinea a destra e sinistra)' + }, + color: { + recent: 'Ultimo colore utilizzato', + more: 'Altri colori', + background: 'Colore di sfondo', + foreground: 'Colore', + transparent: 'Trasparente', + setTransparent: 'Trasparente', + reset: 'Reimposta', + resetToDefault: 'Reimposta i colori' + }, + shortcut: { + shortcuts: 'Scorciatoie da tastiera', + close: 'Chiudi', + textFormatting: 'Formattazione testo', + action: 'Azioni', + paragraphFormatting: 'Formattazione paragrafo', + documentStyle: 'Stili', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Annulla', + redo: 'Ripristina' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-it-IT.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.js.map new file mode 100644 index 0000000..df1192a --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-it-IT.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-it-IT.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'it-IT': {\n font: {\n bold: 'Testo in grassetto',\n italic: 'Testo in corsivo',\n underline: 'Testo sottolineato',\n clear: 'Elimina la formattazione del testo',\n height: 'Altezza della linea di testo',\n name: 'Famiglia Font',\n strikethrough: 'Testo barrato',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Dimensione del carattere',\n },\n image: {\n image: 'Immagine',\n insert: 'Inserisci Immagine',\n resizeFull: 'Dimensioni originali',\n resizeHalf: 'Ridimensiona al 50%',\n resizeQuarter: 'Ridimensiona al 25%',\n floatLeft: 'Posiziona a sinistra',\n floatRight: 'Posiziona a destra',\n floatNone: 'Nessun posizionamento',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Trascina qui un\\'immagine',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Scegli dai Documenti',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL dell\\'immagine',\n remove: 'Rimuovi immagine',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Collegamento ad un Video',\n insert: 'Inserisci Video',\n url: 'URL del Video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)',\n },\n link: {\n link: 'Collegamento',\n insert: 'Inserisci Collegamento',\n unlink: 'Elimina collegamento',\n edit: 'Modifica collegamento',\n textToDisplay: 'Testo del collegamento',\n url: 'URL del collegamento',\n openInNewWindow: 'Apri in una nuova finestra',\n },\n table: {\n table: 'Tabella',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Inserisce una linea di separazione',\n },\n style: {\n style: 'Stili',\n p: 'pe',\n blockquote: 'Citazione',\n pre: 'Codice',\n h1: 'Titolo 1',\n h2: 'Titolo 2',\n h3: 'Titolo 3',\n h4: 'Titolo 4',\n h5: 'Titolo 5',\n h6: 'Titolo 6',\n },\n lists: {\n unordered: 'Elenco non ordinato',\n ordered: 'Elenco ordinato',\n },\n options: {\n help: 'Aiuto',\n fullscreen: 'Modalità a tutto schermo',\n codeview: 'Visualizza codice',\n },\n paragraph: {\n paragraph: 'Paragrafo',\n outdent: 'Diminuisce il livello di rientro',\n indent: 'Aumenta il livello di rientro',\n left: 'Allinea a sinistra',\n center: 'Centra',\n right: 'Allinea a destra',\n justify: 'Giustifica (allinea a destra e sinistra)',\n },\n color: {\n recent: 'Ultimo colore utilizzato',\n more: 'Altri colori',\n background: 'Colore di sfondo',\n foreground: 'Colore',\n transparent: 'Trasparente',\n setTransparent: 'Trasparente',\n reset: 'Reimposta',\n resetToDefault: 'Reimposta i colori',\n },\n shortcut: {\n shortcuts: 'Scorciatoie da tastiera',\n close: 'Chiudi',\n textFormatting: 'Formattazione testo',\n action: 'Azioni',\n paragraphFormatting: 'Formattazione paragrafo',\n documentStyle: 'Stili',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Annulla',\n redo: 'Ripristina',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.min.js new file mode 100644 index 0000000..d8f7aa9 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var i=t();for(var o in i)("object"==typeof exports?exports:e)[o]=i[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"it-IT":{font:{bold:"Testo in grassetto",italic:"Testo in corsivo",underline:"Testo sottolineato",clear:"Elimina la formattazione del testo",height:"Altezza della linea di testo",name:"Famiglia Font",strikethrough:"Testo barrato",subscript:"Subscript",superscript:"Superscript",size:"Dimensione del carattere"},image:{image:"Immagine",insert:"Inserisci Immagine",resizeFull:"Dimensioni originali",resizeHalf:"Ridimensiona al 50%",resizeQuarter:"Ridimensiona al 25%",floatLeft:"Posiziona a sinistra",floatRight:"Posiziona a destra",floatNone:"Nessun posizionamento",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Trascina qui un'immagine",dropImage:"Drop image or Text",selectFromFiles:"Scegli dai Documenti",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL dell'immagine",remove:"Rimuovi immagine",original:"Original"},video:{video:"Video",videoLink:"Collegamento ad un Video",insert:"Inserisci Video",url:"URL del Video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Collegamento",insert:"Inserisci Collegamento",unlink:"Elimina collegamento",edit:"Modifica collegamento",textToDisplay:"Testo del collegamento",url:"URL del collegamento",openInNewWindow:"Apri in una nuova finestra"},table:{table:"Tabella",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Inserisce una linea di separazione"},style:{style:"Stili",p:"pe",blockquote:"Citazione",pre:"Codice",h1:"Titolo 1",h2:"Titolo 2",h3:"Titolo 3",h4:"Titolo 4",h5:"Titolo 5",h6:"Titolo 6"},lists:{unordered:"Elenco non ordinato",ordered:"Elenco ordinato"},options:{help:"Aiuto",fullscreen:"Modalità a tutto schermo",codeview:"Visualizza codice"},paragraph:{paragraph:"Paragrafo",outdent:"Diminuisce il livello di rientro",indent:"Aumenta il livello di rientro",left:"Allinea a sinistra",center:"Centra",right:"Allinea a destra",justify:"Giustifica (allinea a destra e sinistra)"},color:{recent:"Ultimo colore utilizzato",more:"Altri colori",background:"Colore di sfondo",foreground:"Colore",transparent:"Trasparente",setTransparent:"Trasparente",reset:"Reimposta",resetToDefault:"Reimposta i colori"},shortcut:{shortcuts:"Scorciatoie da tastiera",close:"Chiudi",textFormatting:"Formattazione testo",action:"Azioni",paragraphFormatting:"Formattazione paragrafo",documentStyle:"Stili",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Annulla",redo:"Ripristina"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-it-IT.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.min.js.map new file mode 100644 index 0000000..6b54ddc --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-it-IT.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-it-IT.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,qBACNC,OAAQ,mBACRC,UAAW,qBACXC,MAAO,qCACPC,OAAQ,+BACRC,KAAM,gBACNC,cAAe,gBACfC,UAAW,YACXC,YAAa,cACbC,KAAM,4BAERC,MAAO,CACLA,MAAO,WACPC,OAAQ,qBACRC,WAAY,uBACZC,WAAY,sBACZC,cAAe,sBACfC,UAAW,uBACXC,WAAY,qBACZC,UAAW,wBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,2BACfC,UAAW,qBACXC,gBAAiB,uBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,oBACLC,OAAQ,mBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,2BACXpB,OAAQ,kBACRgB,IAAK,gBACLK,UAAW,0DAEbC,KAAM,CACJA,KAAM,eACNtB,OAAQ,yBACRuB,OAAQ,uBACRC,KAAM,wBACNC,cAAe,yBACfT,IAAK,uBACLU,gBAAiB,8BAEnBC,MAAO,CACLA,MAAO,UACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,sCAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,KACHC,WAAY,YACZC,IAAK,SACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,sBACXC,QAAS,mBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,2BACZC,SAAU,qBAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,mCACTC,OAAQ,gCACRC,KAAM,qBACNC,OAAQ,SACRC,MAAO,mBACPC,QAAS,4CAEXC,MAAO,CACLC,OAAQ,2BACRC,KAAM,eACNC,WAAY,mBACZC,WAAY,SACZC,YAAa,cACbC,eAAgB,cAChBC,MAAO,YACPC,eAAgB,sBAElBC,SAAU,CACRC,UAAW,0BACXC,MAAO,SACPC,eAAgB,sBAChBC,OAAQ,SACRC,oBAAqB,0BACrBC,cAAe,QACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,UACNC,KAAM,cAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-it-IT.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'it-IT': {\n font: {\n bold: 'Testo in grassetto',\n italic: 'Testo in corsivo',\n underline: 'Testo sottolineato',\n clear: 'Elimina la formattazione del testo',\n height: 'Altezza della linea di testo',\n name: 'Famiglia Font',\n strikethrough: 'Testo barrato',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Dimensione del carattere',\n },\n image: {\n image: 'Immagine',\n insert: 'Inserisci Immagine',\n resizeFull: 'Dimensioni originali',\n resizeHalf: 'Ridimensiona al 50%',\n resizeQuarter: 'Ridimensiona al 25%',\n floatLeft: 'Posiziona a sinistra',\n floatRight: 'Posiziona a destra',\n floatNone: 'Nessun posizionamento',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Trascina qui un\\'immagine',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Scegli dai Documenti',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL dell\\'immagine',\n remove: 'Rimuovi immagine',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Collegamento ad un Video',\n insert: 'Inserisci Video',\n url: 'URL del Video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)',\n },\n link: {\n link: 'Collegamento',\n insert: 'Inserisci Collegamento',\n unlink: 'Elimina collegamento',\n edit: 'Modifica collegamento',\n textToDisplay: 'Testo del collegamento',\n url: 'URL del collegamento',\n openInNewWindow: 'Apri in una nuova finestra',\n },\n table: {\n table: 'Tabella',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Inserisce una linea di separazione',\n },\n style: {\n style: 'Stili',\n p: 'pe',\n blockquote: 'Citazione',\n pre: 'Codice',\n h1: 'Titolo 1',\n h2: 'Titolo 2',\n h3: 'Titolo 3',\n h4: 'Titolo 4',\n h5: 'Titolo 5',\n h6: 'Titolo 6',\n },\n lists: {\n unordered: 'Elenco non ordinato',\n ordered: 'Elenco ordinato',\n },\n options: {\n help: 'Aiuto',\n fullscreen: 'Modalità a tutto schermo',\n codeview: 'Visualizza codice',\n },\n paragraph: {\n paragraph: 'Paragrafo',\n outdent: 'Diminuisce il livello di rientro',\n indent: 'Aumenta il livello di rientro',\n left: 'Allinea a sinistra',\n center: 'Centra',\n right: 'Allinea a destra',\n justify: 'Giustifica (allinea a destra e sinistra)',\n },\n color: {\n recent: 'Ultimo colore utilizzato',\n more: 'Altri colori',\n background: 'Colore di sfondo',\n foreground: 'Colore',\n transparent: 'Trasparente',\n setTransparent: 'Trasparente',\n reset: 'Reimposta',\n resetToDefault: 'Reimposta i colori',\n },\n shortcut: {\n shortcuts: 'Scorciatoie da tastiera',\n close: 'Chiudi',\n textFormatting: 'Formattazione testo',\n action: 'Azioni',\n paragraphFormatting: 'Formattazione paragrafo',\n documentStyle: 'Stili',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Annulla',\n redo: 'Ripristina',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.js b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.js new file mode 100644 index 0000000..155ed6f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'ja-JP': { + font: { + bold: '太字', + italic: '斜体', + underline: '下線', + clear: 'クリア', + height: '文字高', + name: 'フォント', + strikethrough: '取り消し線', + subscript: 'Subscript', + superscript: 'Superscript', + size: '大きさ' + }, + image: { + image: '画像', + insert: '画像挿入', + resizeFull: '最大化', + resizeHalf: '1/2', + resizeQuarter: '1/4', + floatLeft: '左寄せ', + floatRight: '右寄せ', + floatNone: '寄せ解除', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'ここに画像をドラッグしてください', + dropImage: 'Drop image or Text', + selectFromFiles: '画像ファイルを選ぶ', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URLから画像を挿入する', + remove: '画像を削除する', + original: 'Original' + }, + video: { + video: '動画', + videoLink: '動画リンク', + insert: '動画挿入', + url: '動画のURL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)' + }, + link: { + link: 'リンク', + insert: 'リンク挿入', + unlink: 'リンク解除', + edit: '編集', + textToDisplay: 'リンク文字列', + url: 'URLを入力してください', + openInNewWindow: '新しいウィンドウで開く' + }, + table: { + table: 'テーブル', + addRowAbove: '行を上に追加', + addRowBelow: '行を下に追加', + addColLeft: '列を左に追加', + addColRight: '列を右に追加', + delRow: '行を削除', + delCol: '列を削除', + delTable: 'テーブルを削除' + }, + hr: { + insert: '水平線の挿入' + }, + style: { + style: 'スタイル', + p: '標準', + blockquote: '引用', + pre: 'コード', + h1: '見出し1', + h2: '見出し2', + h3: '見出し3', + h4: '見出し4', + h5: '見出し5', + h6: '見出し6' + }, + lists: { + unordered: '通常リスト', + ordered: '番号リスト' + }, + options: { + help: 'ヘルプ', + fullscreen: 'フルスクリーン', + codeview: 'コード表示' + }, + paragraph: { + paragraph: '文章', + outdent: '字上げ', + indent: '字下げ', + left: '左寄せ', + center: '中央寄せ', + right: '右寄せ', + justify: '均等割付' + }, + color: { + recent: '現在の色', + more: 'もっと見る', + background: '背景色', + foreground: '文字色', + transparent: '透明', + setTransparent: '透明にする', + reset: '標準', + resetToDefault: '標準に戻す' + }, + shortcut: { + shortcuts: 'ショートカット', + close: '閉じる', + textFormatting: '文字フォーマット', + action: 'アクション', + paragraphFormatting: '文章フォーマット', + documentStyle: 'ドキュメント形式', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': '改行挿入', + 'undo': '一旦、行った操作を戻す', + 'redo': '最後のコマンドをやり直す', + 'tab': 'Tab', + 'untab': 'タブ戻し', + 'bold': '太文字', + 'italic': '斜体', + 'underline': '下線', + 'strikethrough': '取り消し線', + 'removeFormat': '装飾を戻す', + 'justifyLeft': '左寄せ', + 'justifyCenter': '真ん中寄せ', + 'justifyRight': '右寄せ', + 'justifyFull': 'すべてを整列', + 'insertUnorderedList': '行頭に●を挿入', + 'insertOrderedList': '行頭に番号を挿入', + 'outdent': '字下げを戻す(アウトデント)', + 'indent': '字下げする(インデント)', + 'formatPara': '段落(P tag)指定', + 'formatH1': 'H1指定', + 'formatH2': 'H2指定', + 'formatH3': 'H3指定', + 'formatH4': 'H4指定', + 'formatH5': 'H5指定', + 'formatH6': 'H6指定', + 'insertHorizontalRule': '<hr />を挿入', + 'linkDialog.show': 'リンク挿入' + }, + history: { + undo: '元に戻す', + redo: 'やり直す' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-ja-JP.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.js.map new file mode 100644 index 0000000..f5030a1 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ja-JP.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ja-JP.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ja-JP': {\n font: {\n bold: '太字',\n italic: '斜体',\n underline: '下線',\n clear: 'クリア',\n height: '文字高',\n name: 'フォント',\n strikethrough: '取り消し線',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: '大きさ',\n },\n image: {\n image: '画像',\n insert: '画像挿入',\n resizeFull: '最大化',\n resizeHalf: '1/2',\n resizeQuarter: '1/4',\n floatLeft: '左寄せ',\n floatRight: '右寄せ',\n floatNone: '寄せ解除',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'ここに画像をドラッグしてください',\n dropImage: 'Drop image or Text',\n selectFromFiles: '画像ファイルを選ぶ',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URLから画像を挿入する',\n remove: '画像を削除する',\n original: 'Original',\n },\n video: {\n video: '動画',\n videoLink: '動画リンク',\n insert: '動画挿入',\n url: '動画のURL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)',\n },\n link: {\n link: 'リンク',\n insert: 'リンク挿入',\n unlink: 'リンク解除',\n edit: '編集',\n textToDisplay: 'リンク文字列',\n url: 'URLを入力してください',\n openInNewWindow: '新しいウィンドウで開く',\n },\n table: {\n table: 'テーブル',\n addRowAbove: '行を上に追加',\n addRowBelow: '行を下に追加',\n addColLeft: '列を左に追加',\n addColRight: '列を右に追加',\n delRow: '行を削除',\n delCol: '列を削除',\n delTable: 'テーブルを削除',\n },\n hr: {\n insert: '水平線の挿入',\n },\n style: {\n style: 'スタイル',\n p: '標準',\n blockquote: '引用',\n pre: 'コード',\n h1: '見出し1',\n h2: '見出し2',\n h3: '見出し3',\n h4: '見出し4',\n h5: '見出し5',\n h6: '見出し6',\n },\n lists: {\n unordered: '通常リスト',\n ordered: '番号リスト',\n },\n options: {\n help: 'ヘルプ',\n fullscreen: 'フルスクリーン',\n codeview: 'コード表示',\n },\n paragraph: {\n paragraph: '文章',\n outdent: '字上げ',\n indent: '字下げ',\n left: '左寄せ',\n center: '中央寄せ',\n right: '右寄せ',\n justify: '均等割付',\n },\n color: {\n recent: '現在の色',\n more: 'もっと見る',\n background: '背景色',\n foreground: '文字色',\n transparent: '透明',\n setTransparent: '透明にする',\n reset: '標準',\n resetToDefault: '標準に戻す',\n },\n shortcut: {\n shortcuts: 'ショートカット',\n close: '閉じる',\n textFormatting: '文字フォーマット',\n action: 'アクション',\n paragraphFormatting: '文章フォーマット',\n documentStyle: 'ドキュメント形式',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': '改行挿入',\n 'undo': '一旦、行った操作を戻す',\n 'redo': '最後のコマンドをやり直す',\n 'tab': 'Tab',\n 'untab': 'タブ戻し',\n 'bold': '太文字',\n 'italic': '斜体',\n 'underline': '下線',\n 'strikethrough': '取り消し線',\n 'removeFormat': '装飾を戻す',\n 'justifyLeft': '左寄せ',\n 'justifyCenter': '真ん中寄せ',\n 'justifyRight': '右寄せ',\n 'justifyFull': 'すべてを整列',\n 'insertUnorderedList': '行頭に●を挿入',\n 'insertOrderedList': '行頭に番号を挿入',\n 'outdent': '字下げを戻す(アウトデント)',\n 'indent': '字下げする(インデント)',\n 'formatPara': '段落(P tag)指定',\n 'formatH1': 'H1指定',\n 'formatH2': 'H2指定',\n 'formatH3': 'H3指定',\n 'formatH4': 'H4指定',\n 'formatH5': 'H5指定',\n 'formatH6': 'H6指定',\n 'insertHorizontalRule': '<hr />を挿入',\n 'linkDialog.show': 'リンク挿入',\n },\n history: {\n undo: '元に戻す',\n redo: 'やり直す',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.min.js new file mode 100644 index 0000000..38f28bf --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"ja-JP":{font:{bold:"太字",italic:"斜体",underline:"下線",clear:"クリア",height:"文字高",name:"フォント",strikethrough:"取り消し線",subscript:"Subscript",superscript:"Superscript",size:"大きさ"},image:{image:"画像",insert:"画像挿入",resizeFull:"最大化",resizeHalf:"1/2",resizeQuarter:"1/4",floatLeft:"左寄せ",floatRight:"右寄せ",floatNone:"寄せ解除",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"ここに画像をドラッグしてください",dropImage:"Drop image or Text",selectFromFiles:"画像ファイルを選ぶ",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URLから画像を挿入する",remove:"画像を削除する",original:"Original"},video:{video:"動画",videoLink:"動画リンク",insert:"動画挿入",url:"動画のURL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)"},link:{link:"リンク",insert:"リンク挿入",unlink:"リンク解除",edit:"編集",textToDisplay:"リンク文字列",url:"URLを入力してください",openInNewWindow:"新しいウィンドウで開く"},table:{table:"テーブル",addRowAbove:"行を上に追加",addRowBelow:"行を下に追加",addColLeft:"列を左に追加",addColRight:"列を右に追加",delRow:"行を削除",delCol:"列を削除",delTable:"テーブルを削除"},hr:{insert:"水平線の挿入"},style:{style:"スタイル",p:"標準",blockquote:"引用",pre:"コード",h1:"見出し1",h2:"見出し2",h3:"見出し3",h4:"見出し4",h5:"見出し5",h6:"見出し6"},lists:{unordered:"通常リスト",ordered:"番号リスト"},options:{help:"ヘルプ",fullscreen:"フルスクリーン",codeview:"コード表示"},paragraph:{paragraph:"文章",outdent:"字上げ",indent:"字下げ",left:"左寄せ",center:"中央寄せ",right:"右寄せ",justify:"均等割付"},color:{recent:"現在の色",more:"もっと見る",background:"背景色",foreground:"文字色",transparent:"透明",setTransparent:"透明にする",reset:"標準",resetToDefault:"標準に戻す"},shortcut:{shortcuts:"ショートカット",close:"閉じる",textFormatting:"文字フォーマット",action:"アクション",paragraphFormatting:"文章フォーマット",documentStyle:"ドキュメント形式",extraKeys:"Extra keys"},help:{insertParagraph:"改行挿入",undo:"一旦、行った操作を戻す",redo:"最後のコマンドをやり直す",tab:"Tab",untab:"タブ戻し",bold:"太文字",italic:"斜体",underline:"下線",strikethrough:"取り消し線",removeFormat:"装飾を戻す",justifyLeft:"左寄せ",justifyCenter:"真ん中寄せ",justifyRight:"右寄せ",justifyFull:"すべてを整列",insertUnorderedList:"行頭に●を挿入",insertOrderedList:"行頭に番号を挿入",outdent:"字下げを戻す(アウトデント)",indent:"字下げする(インデント)",formatPara:"段落(P tag)指定",formatH1:"H1指定",formatH2:"H2指定",formatH3:"H3指定",formatH4:"H4指定",formatH5:"H5指定",formatH6:"H6指定",insertHorizontalRule:"<hr />を挿入","linkDialog.show":"リンク挿入"},history:{undo:"元に戻す",redo:"やり直す"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-ja-JP.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.min.js.map new file mode 100644 index 0000000..c0f2b94 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ja-JP.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ja-JP.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,KACNC,OAAQ,KACRC,UAAW,KACXC,MAAO,MACPC,OAAQ,MACRC,KAAM,OACNC,cAAe,QACfC,UAAW,YACXC,YAAa,cACbC,KAAM,OAERC,MAAO,CACLA,MAAO,KACPC,OAAQ,OACRC,WAAY,MACZC,WAAY,MACZC,cAAe,MACfC,UAAW,MACXC,WAAY,MACZC,UAAW,OACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,mBACfC,UAAW,qBACXC,gBAAiB,YACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,eACLC,OAAQ,UACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,KACPC,UAAW,QACXpB,OAAQ,OACRgB,IAAK,SACLK,UAAW,yDAEbC,KAAM,CACJA,KAAM,MACNtB,OAAQ,QACRuB,OAAQ,QACRC,KAAM,KACNC,cAAe,SACfT,IAAK,eACLU,gBAAiB,eAEnBC,MAAO,CACLA,MAAO,OACPC,YAAa,SACbC,YAAa,SACbC,WAAY,SACZC,YAAa,SACbC,OAAQ,OACRC,OAAQ,OACRC,SAAU,WAEZC,GAAI,CACFnC,OAAQ,UAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,KACHC,WAAY,KACZC,IAAK,MACLC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,QAENC,MAAO,CACLC,UAAW,QACXC,QAAS,SAEXC,QAAS,CACPC,KAAM,MACNC,WAAY,UACZC,SAAU,SAEZC,UAAW,CACTA,UAAW,KACXC,QAAS,MACTC,OAAQ,MACRC,KAAM,MACNC,OAAQ,OACRC,MAAO,MACPC,QAAS,QAEXC,MAAO,CACLC,OAAQ,OACRC,KAAM,QACNC,WAAY,MACZC,WAAY,MACZC,YAAa,KACbC,eAAgB,QAChBC,MAAO,KACPC,eAAgB,SAElBC,SAAU,CACRC,UAAW,UACXC,MAAO,MACPC,eAAgB,WAChBC,OAAQ,QACRC,oBAAqB,WACrBC,cAAe,WACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,OACnB,KAAQ,cACR,KAAQ,eACR,IAAO,MACP,MAAS,OACT,KAAQ,MACR,OAAU,KACV,UAAa,KACb,cAAiB,QACjB,aAAgB,QAChB,YAAe,MACf,cAAiB,QACjB,aAAgB,MAChB,YAAe,SACf,oBAAuB,UACvB,kBAAqB,WACrB,QAAW,iBACX,OAAU,eACV,WAAc,cACd,SAAY,OACZ,SAAY,OACZ,SAAY,OACZ,SAAY,OACZ,SAAY,OACZ,SAAY,OACZ,qBAAwB,kBACxB,kBAAmB,SAErB2B,QAAS,CACPC,KAAM,OACNC,KAAM,QAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ja-JP.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ja-JP': {\n font: {\n bold: '太字',\n italic: '斜体',\n underline: '下線',\n clear: 'クリア',\n height: '文字高',\n name: 'フォント',\n strikethrough: '取り消し線',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: '大きさ',\n },\n image: {\n image: '画像',\n insert: '画像挿入',\n resizeFull: '最大化',\n resizeHalf: '1/2',\n resizeQuarter: '1/4',\n floatLeft: '左寄せ',\n floatRight: '右寄せ',\n floatNone: '寄せ解除',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'ここに画像をドラッグしてください',\n dropImage: 'Drop image or Text',\n selectFromFiles: '画像ファイルを選ぶ',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URLから画像を挿入する',\n remove: '画像を削除する',\n original: 'Original',\n },\n video: {\n video: '動画',\n videoLink: '動画リンク',\n insert: '動画挿入',\n url: '動画のURL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)',\n },\n link: {\n link: 'リンク',\n insert: 'リンク挿入',\n unlink: 'リンク解除',\n edit: '編集',\n textToDisplay: 'リンク文字列',\n url: 'URLを入力してください',\n openInNewWindow: '新しいウィンドウで開く',\n },\n table: {\n table: 'テーブル',\n addRowAbove: '行を上に追加',\n addRowBelow: '行を下に追加',\n addColLeft: '列を左に追加',\n addColRight: '列を右に追加',\n delRow: '行を削除',\n delCol: '列を削除',\n delTable: 'テーブルを削除',\n },\n hr: {\n insert: '水平線の挿入',\n },\n style: {\n style: 'スタイル',\n p: '標準',\n blockquote: '引用',\n pre: 'コード',\n h1: '見出し1',\n h2: '見出し2',\n h3: '見出し3',\n h4: '見出し4',\n h5: '見出し5',\n h6: '見出し6',\n },\n lists: {\n unordered: '通常リスト',\n ordered: '番号リスト',\n },\n options: {\n help: 'ヘルプ',\n fullscreen: 'フルスクリーン',\n codeview: 'コード表示',\n },\n paragraph: {\n paragraph: '文章',\n outdent: '字上げ',\n indent: '字下げ',\n left: '左寄せ',\n center: '中央寄せ',\n right: '右寄せ',\n justify: '均等割付',\n },\n color: {\n recent: '現在の色',\n more: 'もっと見る',\n background: '背景色',\n foreground: '文字色',\n transparent: '透明',\n setTransparent: '透明にする',\n reset: '標準',\n resetToDefault: '標準に戻す',\n },\n shortcut: {\n shortcuts: 'ショートカット',\n close: '閉じる',\n textFormatting: '文字フォーマット',\n action: 'アクション',\n paragraphFormatting: '文章フォーマット',\n documentStyle: 'ドキュメント形式',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': '改行挿入',\n 'undo': '一旦、行った操作を戻す',\n 'redo': '最後のコマンドをやり直す',\n 'tab': 'Tab',\n 'untab': 'タブ戻し',\n 'bold': '太文字',\n 'italic': '斜体',\n 'underline': '下線',\n 'strikethrough': '取り消し線',\n 'removeFormat': '装飾を戻す',\n 'justifyLeft': '左寄せ',\n 'justifyCenter': '真ん中寄せ',\n 'justifyRight': '右寄せ',\n 'justifyFull': 'すべてを整列',\n 'insertUnorderedList': '行頭に●を挿入',\n 'insertOrderedList': '行頭に番号を挿入',\n 'outdent': '字下げを戻す(アウトデント)',\n 'indent': '字下げする(インデント)',\n 'formatPara': '段落(P tag)指定',\n 'formatH1': 'H1指定',\n 'formatH2': 'H2指定',\n 'formatH3': 'H3指定',\n 'formatH4': 'H4指定',\n 'formatH5': 'H5指定',\n 'formatH6': 'H6指定',\n 'insertHorizontalRule': '<hr />を挿入',\n 'linkDialog.show': 'リンク挿入',\n },\n history: {\n undo: '元に戻す',\n redo: 'やり直す',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.js b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.js new file mode 100644 index 0000000..04a089c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.js @@ -0,0 +1,186 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'ko-KR': { + font: { + bold: '굵게', + italic: '기울임꼴', + underline: '밑줄', + clear: '서식 지우기', + height: '줄 간격', + name: '글꼴', + superscript: '위 첨자', + subscript: '아래 첨자', + strikethrough: '취소선', + size: '글자 크기' + }, + image: { + image: '그림', + insert: '그림 삽입', + resizeFull: '100% 크기로 변경', + resizeHalf: '50% 크기로 변경', + resizeQuarter: '25% 크기로 변경', + resizeNone: '원본 크기', + floatLeft: '왼쪽 정렬', + floatRight: '오른쪽 정렬', + floatNone: '정렬하지 않음', + shapeRounded: '스타일: 둥근 모서리', + shapeCircle: '스타일: 원형', + shapeThumbnail: '스타일: 액자', + shapeNone: '스타일: 없음', + dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요', + dropImage: '텍스트 혹은 사진을 내려놓으세요', + selectFromFiles: '파일 선택', + maximumFileSize: '최대 파일 크기', + maximumFileSizeError: '최대 파일 크기를 초과했습니다.', + url: '사진 URL', + remove: '사진 삭제', + original: '원본' + }, + video: { + video: '동영상', + videoLink: '동영상 링크', + insert: '동영상 삽입', + url: '동영상 URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)' + }, + link: { + link: '링크', + insert: '링크 삽입', + unlink: '링크 삭제', + edit: '수정', + textToDisplay: '링크에 표시할 내용', + url: '이동할 URL', + openInNewWindow: '새창으로 열기' + }, + table: { + table: '표', + addRowAbove: '위에 행 삽입', + addRowBelow: '아래에 행 삽입', + addColLeft: '왼쪽에 열 삽입', + addColRight: '오른쪽에 열 삽입', + delRow: '행 지우기', + delCol: '열 지우기', + delTable: '표 삭제' + }, + hr: { + insert: '구분선 삽입' + }, + style: { + style: '스타일', + p: '본문', + blockquote: '인용구', + pre: '코드', + h1: '제목 1', + h2: '제목 2', + h3: '제목 3', + h4: '제목 4', + h5: '제목 5', + h6: '제목 6' + }, + lists: { + unordered: '글머리 기호', + ordered: '번호 매기기' + }, + options: { + help: '도움말', + fullscreen: '전체 화면', + codeview: '코드 보기' + }, + paragraph: { + paragraph: '문단 정렬', + outdent: '내어쓰기', + indent: '들여쓰기', + left: '왼쪽 정렬', + center: '가운데 정렬', + right: '오른쪽 정렬', + justify: '양쪽 정렬' + }, + color: { + recent: '마지막으로 사용한 색', + more: '다른 색 선택', + background: '배경색', + foreground: '글자색', + transparent: '투명', + setTransparent: '투명으로 설정', + reset: '취소', + resetToDefault: '기본값으로 설정', + cpSelect: '선택' + }, + shortcut: { + shortcuts: '키보드 단축키', + close: '닫기', + textFormatting: '글자 스타일 적용', + action: '기능', + paragraphFormatting: '문단 스타일 적용', + documentStyle: '문서 스타일 적용', + extraKeys: '추가 키' + }, + help: { + 'insertParagraph': '문단 삽입', + 'undo': '마지막 명령 취소', + 'redo': '마지막 명령 재실행', + 'tab': '탭', + 'untab': '탭 제거', + 'bold': '굵은 글자로 설정', + 'italic': '기울임꼴 글자로 설정', + 'underline': '밑줄 글자로 설정', + 'strikethrough': '취소선 글자로 설정', + 'removeFormat': '서식 삭제', + 'justifyLeft': '왼쪽 정렬하기', + 'justifyCenter': '가운데 정렬하기', + 'justifyRight': '오른쪽 정렬하기', + 'justifyFull': '좌우채움 정렬하기', + 'insertUnorderedList': '글머리 기호 켜고 끄기', + 'insertOrderedList': '번호 매기기 켜고 끄기', + 'outdent': '현재 문단 내어쓰기', + 'indent': '현재 문단 들여쓰기', + 'formatPara': '현재 블록의 포맷을 문단(P)으로 변경', + 'formatH1': '현재 블록의 포맷을 제목1(H1)로 변경', + 'formatH2': '현재 블록의 포맷을 제목2(H2)로 변경', + 'formatH3': '현재 블록의 포맷을 제목3(H3)로 변경', + 'formatH4': '현재 블록의 포맷을 제목4(H4)로 변경', + 'formatH5': '현재 블록의 포맷을 제목5(H5)로 변경', + 'formatH6': '현재 블록의 포맷을 제목6(H6)로 변경', + 'insertHorizontalRule': '구분선 삽입', + 'linkDialog.show': '링크 대화상자 열기' + }, + history: { + undo: '실행 취소', + redo: '재실행' + }, + specialChar: { + specialChar: '특수문자', + select: '특수문자를 선택하세요' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-ko-KR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.js.map new file mode 100644 index 0000000..6a23fb0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ko-KR.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ko-KR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ko-KR': {\n font: {\n bold: '굵게',\n italic: '기울임꼴',\n underline: '밑줄',\n clear: '서식 지우기',\n height: '줄 간격',\n name: '글꼴',\n superscript: '위 첨자',\n subscript: '아래 첨자',\n strikethrough: '취소선',\n size: '글자 크기',\n },\n image: {\n image: '그림',\n insert: '그림 삽입',\n resizeFull: '100% 크기로 변경',\n resizeHalf: '50% 크기로 변경',\n resizeQuarter: '25% 크기로 변경',\n resizeNone: '원본 크기',\n floatLeft: '왼쪽 정렬',\n floatRight: '오른쪽 정렬',\n floatNone: '정렬하지 않음',\n shapeRounded: '스타일: 둥근 모서리',\n shapeCircle: '스타일: 원형',\n shapeThumbnail: '스타일: 액자',\n shapeNone: '스타일: 없음',\n dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요',\n dropImage: '텍스트 혹은 사진을 내려놓으세요',\n selectFromFiles: '파일 선택',\n maximumFileSize: '최대 파일 크기',\n maximumFileSizeError: '최대 파일 크기를 초과했습니다.',\n url: '사진 URL',\n remove: '사진 삭제',\n original: '원본',\n },\n video: {\n video: '동영상',\n videoLink: '동영상 링크',\n insert: '동영상 삽입',\n url: '동영상 URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)',\n },\n link: {\n link: '링크',\n insert: '링크 삽입',\n unlink: '링크 삭제',\n edit: '수정',\n textToDisplay: '링크에 표시할 내용',\n url: '이동할 URL',\n openInNewWindow: '새창으로 열기',\n },\n table: {\n table: '표',\n addRowAbove: '위에 행 삽입',\n addRowBelow: '아래에 행 삽입',\n addColLeft: '왼쪽에 열 삽입',\n addColRight: '오른쪽에 열 삽입',\n delRow: '행 지우기',\n delCol: '열 지우기',\n delTable: '표 삭제',\n },\n hr: {\n insert: '구분선 삽입',\n },\n style: {\n style: '스타일',\n p: '본문',\n blockquote: '인용구',\n pre: '코드',\n h1: '제목 1',\n h2: '제목 2',\n h3: '제목 3',\n h4: '제목 4',\n h5: '제목 5',\n h6: '제목 6',\n },\n lists: {\n unordered: '글머리 기호',\n ordered: '번호 매기기',\n },\n options: {\n help: '도움말',\n fullscreen: '전체 화면',\n codeview: '코드 보기',\n },\n paragraph: {\n paragraph: '문단 정렬',\n outdent: '내어쓰기',\n indent: '들여쓰기',\n left: '왼쪽 정렬',\n center: '가운데 정렬',\n right: '오른쪽 정렬',\n justify: '양쪽 정렬',\n },\n color: {\n recent: '마지막으로 사용한 색',\n more: '다른 색 선택',\n background: '배경색',\n foreground: '글자색',\n transparent: '투명',\n setTransparent: '투명으로 설정',\n reset: '취소',\n resetToDefault: '기본값으로 설정',\n cpSelect: '선택',\n },\n shortcut: {\n shortcuts: '키보드 단축키',\n close: '닫기',\n textFormatting: '글자 스타일 적용',\n action: '기능',\n paragraphFormatting: '문단 스타일 적용',\n documentStyle: '문서 스타일 적용',\n extraKeys: '추가 키',\n },\n help: {\n 'insertParagraph': '문단 삽입',\n 'undo': '마지막 명령 취소',\n 'redo': '마지막 명령 재실행',\n 'tab': '탭',\n 'untab': '탭 제거',\n 'bold': '굵은 글자로 설정',\n 'italic': '기울임꼴 글자로 설정',\n 'underline': '밑줄 글자로 설정',\n 'strikethrough': '취소선 글자로 설정',\n 'removeFormat': '서식 삭제',\n 'justifyLeft': '왼쪽 정렬하기',\n 'justifyCenter': '가운데 정렬하기',\n 'justifyRight': '오른쪽 정렬하기',\n 'justifyFull': '좌우채움 정렬하기',\n 'insertUnorderedList': '글머리 기호 켜고 끄기',\n 'insertOrderedList': '번호 매기기 켜고 끄기',\n 'outdent': '현재 문단 내어쓰기',\n 'indent': '현재 문단 들여쓰기',\n 'formatPara': '현재 블록의 포맷을 문단(P)으로 변경',\n 'formatH1': '현재 블록의 포맷을 제목1(H1)로 변경',\n 'formatH2': '현재 블록의 포맷을 제목2(H2)로 변경',\n 'formatH3': '현재 블록의 포맷을 제목3(H3)로 변경',\n 'formatH4': '현재 블록의 포맷을 제목4(H4)로 변경',\n 'formatH5': '현재 블록의 포맷을 제목5(H5)로 변경',\n 'formatH6': '현재 블록의 포맷을 제목6(H6)로 변경',\n 'insertHorizontalRule': '구분선 삽입',\n 'linkDialog.show': '링크 대화상자 열기',\n },\n history: {\n undo: '실행 취소',\n redo: '재실행',\n },\n specialChar: {\n specialChar: '특수문자',\n select: '특수문자를 선택하세요',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","superscript","subscript","strikethrough","size","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.min.js new file mode 100644 index 0000000..5b0a23e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"ko-KR":{font:{bold:"굵게",italic:"기울임꼴",underline:"밑줄",clear:"서식 지우기",height:"줄 간격",name:"글꼴",superscript:"위 첨자",subscript:"아래 첨자",strikethrough:"취소선",size:"글자 크기"},image:{image:"그림",insert:"그림 삽입",resizeFull:"100% 크기로 변경",resizeHalf:"50% 크기로 변경",resizeQuarter:"25% 크기로 변경",resizeNone:"원본 크기",floatLeft:"왼쪽 정렬",floatRight:"오른쪽 정렬",floatNone:"정렬하지 않음",shapeRounded:"스타일: 둥근 모서리",shapeCircle:"스타일: 원형",shapeThumbnail:"스타일: 액자",shapeNone:"스타일: 없음",dragImageHere:"텍스트 혹은 사진을 이곳으로 끌어오세요",dropImage:"텍스트 혹은 사진을 내려놓으세요",selectFromFiles:"파일 선택",maximumFileSize:"최대 파일 크기",maximumFileSizeError:"최대 파일 크기를 초과했습니다.",url:"사진 URL",remove:"사진 삭제",original:"원본"},video:{video:"동영상",videoLink:"동영상 링크",insert:"동영상 삽입",url:"동영상 URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)"},link:{link:"링크",insert:"링크 삽입",unlink:"링크 삭제",edit:"수정",textToDisplay:"링크에 표시할 내용",url:"이동할 URL",openInNewWindow:"새창으로 열기"},table:{table:"표",addRowAbove:"위에 행 삽입",addRowBelow:"아래에 행 삽입",addColLeft:"왼쪽에 열 삽입",addColRight:"오른쪽에 열 삽입",delRow:"행 지우기",delCol:"열 지우기",delTable:"표 삭제"},hr:{insert:"구분선 삽입"},style:{style:"스타일",p:"본문",blockquote:"인용구",pre:"코드",h1:"제목 1",h2:"제목 2",h3:"제목 3",h4:"제목 4",h5:"제목 5",h6:"제목 6"},lists:{unordered:"글머리 기호",ordered:"번호 매기기"},options:{help:"도움말",fullscreen:"전체 화면",codeview:"코드 보기"},paragraph:{paragraph:"문단 정렬",outdent:"내어쓰기",indent:"들여쓰기",left:"왼쪽 정렬",center:"가운데 정렬",right:"오른쪽 정렬",justify:"양쪽 정렬"},color:{recent:"마지막으로 사용한 색",more:"다른 색 선택",background:"배경색",foreground:"글자색",transparent:"투명",setTransparent:"투명으로 설정",reset:"취소",resetToDefault:"기본값으로 설정",cpSelect:"선택"},shortcut:{shortcuts:"키보드 단축키",close:"닫기",textFormatting:"글자 스타일 적용",action:"기능",paragraphFormatting:"문단 스타일 적용",documentStyle:"문서 스타일 적용",extraKeys:"추가 키"},help:{insertParagraph:"문단 삽입",undo:"마지막 명령 취소",redo:"마지막 명령 재실행",tab:"탭",untab:"탭 제거",bold:"굵은 글자로 설정",italic:"기울임꼴 글자로 설정",underline:"밑줄 글자로 설정",strikethrough:"취소선 글자로 설정",removeFormat:"서식 삭제",justifyLeft:"왼쪽 정렬하기",justifyCenter:"가운데 정렬하기",justifyRight:"오른쪽 정렬하기",justifyFull:"좌우채움 정렬하기",insertUnorderedList:"글머리 기호 켜고 끄기",insertOrderedList:"번호 매기기 켜고 끄기",outdent:"현재 문단 내어쓰기",indent:"현재 문단 들여쓰기",formatPara:"현재 블록의 포맷을 문단(P)으로 변경",formatH1:"현재 블록의 포맷을 제목1(H1)로 변경",formatH2:"현재 블록의 포맷을 제목2(H2)로 변경",formatH3:"현재 블록의 포맷을 제목3(H3)로 변경",formatH4:"현재 블록의 포맷을 제목4(H4)로 변경",formatH5:"현재 블록의 포맷을 제목5(H5)로 변경",formatH6:"현재 블록의 포맷을 제목6(H6)로 변경",insertHorizontalRule:"구분선 삽입","linkDialog.show":"링크 대화상자 열기"},history:{undo:"실행 취소",redo:"재실행"},specialChar:{specialChar:"특수문자",select:"특수문자를 선택하세요"}}}),{};var e})); +//# sourceMappingURL=summernote-ko-KR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.min.js.map new file mode 100644 index 0000000..38d29a9 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ko-KR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ko-KR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA4JPC,QA3JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,KACNC,OAAQ,OACRC,UAAW,KACXC,MAAO,SACPC,OAAQ,OACRC,KAAM,KACNC,YAAa,OACbC,UAAW,QACXC,cAAe,MACfC,KAAM,SAERC,MAAO,CACLA,MAAO,KACPC,OAAQ,QACRC,WAAY,cACZC,WAAY,aACZC,cAAe,aACfC,WAAY,QACZC,UAAW,QACXC,WAAY,SACZC,UAAW,UACXC,aAAc,cACdC,YAAa,UACbC,eAAgB,UAChBC,UAAW,UACXC,cAAe,wBACfC,UAAW,oBACXC,gBAAiB,QACjBC,gBAAiB,WACjBC,qBAAsB,oBACtBC,IAAK,SACLC,OAAQ,QACRC,SAAU,MAEZC,MAAO,CACLA,MAAO,MACPC,UAAW,SACXrB,OAAQ,SACRiB,IAAK,UACLK,UAAW,+DAEbC,KAAM,CACJA,KAAM,KACNvB,OAAQ,QACRwB,OAAQ,QACRC,KAAM,KACNC,cAAe,aACfT,IAAK,UACLU,gBAAiB,WAEnBC,MAAO,CACLA,MAAO,IACPC,YAAa,UACbC,YAAa,WACbC,WAAY,WACZC,YAAa,YACbC,OAAQ,QACRC,OAAQ,QACRC,SAAU,QAEZC,GAAI,CACFpC,OAAQ,UAEVqC,MAAO,CACLA,MAAO,MACPC,EAAG,KACHC,WAAY,MACZC,IAAK,KACLC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,QAENC,MAAO,CACLC,UAAW,SACXC,QAAS,UAEXC,QAAS,CACPC,KAAM,MACNC,WAAY,QACZC,SAAU,SAEZC,UAAW,CACTA,UAAW,QACXC,QAAS,OACTC,OAAQ,OACRC,KAAM,QACNC,OAAQ,SACRC,MAAO,SACPC,QAAS,SAEXC,MAAO,CACLC,OAAQ,cACRC,KAAM,UACNC,WAAY,MACZC,WAAY,MACZC,YAAa,KACbC,eAAgB,UAChBC,MAAO,KACPC,eAAgB,WAChBC,SAAU,MAEZC,SAAU,CACRC,UAAW,UACXC,MAAO,KACPC,eAAgB,YAChBC,OAAQ,KACRC,oBAAqB,YACrBC,cAAe,YACfC,UAAW,QAEb3B,KAAM,CACJ,gBAAmB,QACnB,KAAQ,YACR,KAAQ,aACR,IAAO,IACP,MAAS,OACT,KAAQ,YACR,OAAU,cACV,UAAa,YACb,cAAiB,aACjB,aAAgB,QAChB,YAAe,UACf,cAAiB,WACjB,aAAgB,WAChB,YAAe,YACf,oBAAuB,eACvB,kBAAqB,eACrB,QAAW,aACX,OAAU,aACV,WAAc,wBACd,SAAY,yBACZ,SAAY,yBACZ,SAAY,yBACZ,SAAY,yBACZ,SAAY,yBACZ,SAAY,yBACZ,qBAAwB,SACxB,kBAAmB,cAErB4B,QAAS,CACPC,KAAM,QACNC,KAAM,OAERC,YAAa,CACXA,YAAa,OACbC,OAAQ,kB,GD9IhB,ICVUpG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ko-KR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ko-KR': {\n font: {\n bold: '굵게',\n italic: '기울임꼴',\n underline: '밑줄',\n clear: '서식 지우기',\n height: '줄 간격',\n name: '글꼴',\n superscript: '위 첨자',\n subscript: '아래 첨자',\n strikethrough: '취소선',\n size: '글자 크기',\n },\n image: {\n image: '그림',\n insert: '그림 삽입',\n resizeFull: '100% 크기로 변경',\n resizeHalf: '50% 크기로 변경',\n resizeQuarter: '25% 크기로 변경',\n resizeNone: '원본 크기',\n floatLeft: '왼쪽 정렬',\n floatRight: '오른쪽 정렬',\n floatNone: '정렬하지 않음',\n shapeRounded: '스타일: 둥근 모서리',\n shapeCircle: '스타일: 원형',\n shapeThumbnail: '스타일: 액자',\n shapeNone: '스타일: 없음',\n dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요',\n dropImage: '텍스트 혹은 사진을 내려놓으세요',\n selectFromFiles: '파일 선택',\n maximumFileSize: '최대 파일 크기',\n maximumFileSizeError: '최대 파일 크기를 초과했습니다.',\n url: '사진 URL',\n remove: '사진 삭제',\n original: '원본',\n },\n video: {\n video: '동영상',\n videoLink: '동영상 링크',\n insert: '동영상 삽입',\n url: '동영상 URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)',\n },\n link: {\n link: '링크',\n insert: '링크 삽입',\n unlink: '링크 삭제',\n edit: '수정',\n textToDisplay: '링크에 표시할 내용',\n url: '이동할 URL',\n openInNewWindow: '새창으로 열기',\n },\n table: {\n table: '표',\n addRowAbove: '위에 행 삽입',\n addRowBelow: '아래에 행 삽입',\n addColLeft: '왼쪽에 열 삽입',\n addColRight: '오른쪽에 열 삽입',\n delRow: '행 지우기',\n delCol: '열 지우기',\n delTable: '표 삭제',\n },\n hr: {\n insert: '구분선 삽입',\n },\n style: {\n style: '스타일',\n p: '본문',\n blockquote: '인용구',\n pre: '코드',\n h1: '제목 1',\n h2: '제목 2',\n h3: '제목 3',\n h4: '제목 4',\n h5: '제목 5',\n h6: '제목 6',\n },\n lists: {\n unordered: '글머리 기호',\n ordered: '번호 매기기',\n },\n options: {\n help: '도움말',\n fullscreen: '전체 화면',\n codeview: '코드 보기',\n },\n paragraph: {\n paragraph: '문단 정렬',\n outdent: '내어쓰기',\n indent: '들여쓰기',\n left: '왼쪽 정렬',\n center: '가운데 정렬',\n right: '오른쪽 정렬',\n justify: '양쪽 정렬',\n },\n color: {\n recent: '마지막으로 사용한 색',\n more: '다른 색 선택',\n background: '배경색',\n foreground: '글자색',\n transparent: '투명',\n setTransparent: '투명으로 설정',\n reset: '취소',\n resetToDefault: '기본값으로 설정',\n cpSelect: '선택',\n },\n shortcut: {\n shortcuts: '키보드 단축키',\n close: '닫기',\n textFormatting: '글자 스타일 적용',\n action: '기능',\n paragraphFormatting: '문단 스타일 적용',\n documentStyle: '문서 스타일 적용',\n extraKeys: '추가 키',\n },\n help: {\n 'insertParagraph': '문단 삽입',\n 'undo': '마지막 명령 취소',\n 'redo': '마지막 명령 재실행',\n 'tab': '탭',\n 'untab': '탭 제거',\n 'bold': '굵은 글자로 설정',\n 'italic': '기울임꼴 글자로 설정',\n 'underline': '밑줄 글자로 설정',\n 'strikethrough': '취소선 글자로 설정',\n 'removeFormat': '서식 삭제',\n 'justifyLeft': '왼쪽 정렬하기',\n 'justifyCenter': '가운데 정렬하기',\n 'justifyRight': '오른쪽 정렬하기',\n 'justifyFull': '좌우채움 정렬하기',\n 'insertUnorderedList': '글머리 기호 켜고 끄기',\n 'insertOrderedList': '번호 매기기 켜고 끄기',\n 'outdent': '현재 문단 내어쓰기',\n 'indent': '현재 문단 들여쓰기',\n 'formatPara': '현재 블록의 포맷을 문단(P)으로 변경',\n 'formatH1': '현재 블록의 포맷을 제목1(H1)로 변경',\n 'formatH2': '현재 블록의 포맷을 제목2(H2)로 변경',\n 'formatH3': '현재 블록의 포맷을 제목3(H3)로 변경',\n 'formatH4': '현재 블록의 포맷을 제목4(H4)로 변경',\n 'formatH5': '현재 블록의 포맷을 제목5(H5)로 변경',\n 'formatH6': '현재 블록의 포맷을 제목6(H6)로 변경',\n 'insertHorizontalRule': '구분선 삽입',\n 'linkDialog.show': '링크 대화상자 열기',\n },\n history: {\n undo: '실행 취소',\n redo: '재실행',\n },\n specialChar: {\n specialChar: '특수문자',\n select: '특수문자를 선택하세요',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","superscript","subscript","strikethrough","size","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.js b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.js new file mode 100644 index 0000000..469528f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'lt-LT': { + font: { + bold: 'Paryškintas', + italic: 'Kursyvas', + underline: 'Pabrėžtas', + clear: 'Be formatavimo', + height: 'Eilutės aukštis', + name: 'Šrifto pavadinimas', + strikethrough: 'Perbrauktas', + superscript: 'Viršutinis', + subscript: 'Indeksas', + size: 'Šrifto dydis' + }, + image: { + image: 'Paveikslėlis', + insert: 'Įterpti paveikslėlį', + resizeFull: 'Pilnas dydis', + resizeHalf: 'Sumažinti dydį 50%', + resizeQuarter: 'Sumažinti dydį 25%', + floatLeft: 'Kairinis lygiavimas', + floatRight: 'Dešininis lygiavimas', + floatNone: 'Jokio lygiavimo', + shapeRounded: 'Forma: apvalūs kraštai', + shapeCircle: 'Forma: apskritimas', + shapeThumbnail: 'Forma: miniatiūra', + shapeNone: 'Forma: jokia', + dragImageHere: 'Vilkite paveikslėlį čia', + dropImage: 'Drop image or Text', + selectFromFiles: 'Pasirinkite failą', + maximumFileSize: 'Maskimalus failo dydis', + maximumFileSizeError: 'Maskimalus failo dydis viršytas!', + url: 'Paveikslėlio URL adresas', + remove: 'Ištrinti paveikslėlį', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Nuoroda', + insert: 'Įterpti nuorodą', + unlink: 'Pašalinti nuorodą', + edit: 'Redaguoti', + textToDisplay: 'Rodomas tekstas', + url: 'Koks URL adresas yra susietas?', + openInNewWindow: 'Atidaryti naujame lange' + }, + table: { + table: 'Lentelė', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Įterpti horizontalią liniją' + }, + style: { + style: 'Stilius', + p: 'pus', + blockquote: 'Citata', + pre: 'Kodas', + h1: 'Antraštė 1', + h2: 'Antraštė 2', + h3: 'Antraštė 3', + h4: 'Antraštė 4', + h5: 'Antraštė 5', + h6: 'Antraštė 6' + }, + lists: { + unordered: 'Suženklintasis sąrašas', + ordered: 'Sunumeruotas sąrašas' + }, + options: { + help: 'Pagalba', + fullscreen: 'Viso ekrano režimas', + codeview: 'HTML kodo peržiūra' + }, + paragraph: { + paragraph: 'Pastraipa', + outdent: 'Sumažinti įtrauką', + indent: 'Padidinti įtrauką', + left: 'Kairinė lygiuotė', + center: 'Centrinė lygiuotė', + right: 'Dešininė lygiuotė', + justify: 'Abipusis išlyginimas' + }, + color: { + recent: 'Paskutinė naudota spalva', + more: 'Daugiau spalvų', + background: 'Fono spalva', + foreground: 'Šrifto spalva', + transparent: 'Permatoma', + setTransparent: 'Nustatyti skaidrumo intensyvumą', + reset: 'Atkurti', + resetToDefault: 'Atstatyti numatytąją spalvą' + }, + shortcut: { + shortcuts: 'Spartieji klavišai', + close: 'Uždaryti', + textFormatting: 'Teksto formatavimas', + action: 'Veiksmas', + paragraphFormatting: 'Pastraipos formatavimas', + documentStyle: 'Dokumento stilius', + extraKeys: 'Papildomi klavišų deriniai' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Anuliuoti veiksmą', + redo: 'Perdaryti veiksmą' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-lt-LT.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.js.map new file mode 100644 index 0000000..525b50f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-lt-LT.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-lt-LT.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'lt-LT': {\n font: {\n bold: 'Paryškintas',\n italic: 'Kursyvas',\n underline: 'Pabrėžtas',\n clear: 'Be formatavimo',\n height: 'Eilutės aukštis',\n name: 'Šrifto pavadinimas',\n strikethrough: 'Perbrauktas',\n superscript: 'Viršutinis',\n subscript: 'Indeksas',\n size: 'Šrifto dydis',\n },\n image: {\n image: 'Paveikslėlis',\n insert: 'Įterpti paveikslėlį',\n resizeFull: 'Pilnas dydis',\n resizeHalf: 'Sumažinti dydį 50%',\n resizeQuarter: 'Sumažinti dydį 25%',\n floatLeft: 'Kairinis lygiavimas',\n floatRight: 'Dešininis lygiavimas',\n floatNone: 'Jokio lygiavimo',\n shapeRounded: 'Forma: apvalūs kraštai',\n shapeCircle: 'Forma: apskritimas',\n shapeThumbnail: 'Forma: miniatiūra',\n shapeNone: 'Forma: jokia',\n dragImageHere: 'Vilkite paveikslėlį čia',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Pasirinkite failą',\n maximumFileSize: 'Maskimalus failo dydis',\n maximumFileSizeError: 'Maskimalus failo dydis viršytas!',\n url: 'Paveikslėlio URL adresas',\n remove: 'Ištrinti paveikslėlį',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Nuoroda',\n insert: 'Įterpti nuorodą',\n unlink: 'Pašalinti nuorodą',\n edit: 'Redaguoti',\n textToDisplay: 'Rodomas tekstas',\n url: 'Koks URL adresas yra susietas?',\n openInNewWindow: 'Atidaryti naujame lange',\n },\n table: {\n table: 'Lentelė',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Įterpti horizontalią liniją',\n },\n style: {\n style: 'Stilius',\n p: 'pus',\n blockquote: 'Citata',\n pre: 'Kodas',\n h1: 'Antraštė 1',\n h2: 'Antraštė 2',\n h3: 'Antraštė 3',\n h4: 'Antraštė 4',\n h5: 'Antraštė 5',\n h6: 'Antraštė 6',\n },\n lists: {\n unordered: 'Suženklintasis sąrašas',\n ordered: 'Sunumeruotas sąrašas',\n },\n options: {\n help: 'Pagalba',\n fullscreen: 'Viso ekrano režimas',\n codeview: 'HTML kodo peržiūra',\n },\n paragraph: {\n paragraph: 'Pastraipa',\n outdent: 'Sumažinti įtrauką',\n indent: 'Padidinti įtrauką',\n left: 'Kairinė lygiuotė',\n center: 'Centrinė lygiuotė',\n right: 'Dešininė lygiuotė',\n justify: 'Abipusis išlyginimas',\n },\n color: {\n recent: 'Paskutinė naudota spalva',\n more: 'Daugiau spalvų',\n background: 'Fono spalva',\n foreground: 'Šrifto spalva',\n transparent: 'Permatoma',\n setTransparent: 'Nustatyti skaidrumo intensyvumą',\n reset: 'Atkurti',\n resetToDefault: 'Atstatyti numatytąją spalvą',\n },\n shortcut: {\n shortcuts: 'Spartieji klavišai',\n close: 'Uždaryti',\n textFormatting: 'Teksto formatavimas',\n action: 'Veiksmas',\n paragraphFormatting: 'Pastraipos formatavimas',\n documentStyle: 'Dokumento stilius',\n extraKeys: 'Papildomi klavišų deriniai',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Anuliuoti veiksmą',\n redo: 'Perdaryti veiksmą',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.min.js new file mode 100644 index 0000000..3bca869 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(a,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t=e();for(var i in t)("object"==typeof exports?exports:a)[i]=t[i]}}(self,(function(){return(a=jQuery).extend(a.summernote.lang,{"lt-LT":{font:{bold:"Paryškintas",italic:"Kursyvas",underline:"Pabrėžtas",clear:"Be formatavimo",height:"Eilutės aukštis",name:"Šrifto pavadinimas",strikethrough:"Perbrauktas",superscript:"Viršutinis",subscript:"Indeksas",size:"Šrifto dydis"},image:{image:"Paveikslėlis",insert:"Įterpti paveikslėlį",resizeFull:"Pilnas dydis",resizeHalf:"Sumažinti dydį 50%",resizeQuarter:"Sumažinti dydį 25%",floatLeft:"Kairinis lygiavimas",floatRight:"Dešininis lygiavimas",floatNone:"Jokio lygiavimo",shapeRounded:"Forma: apvalūs kraštai",shapeCircle:"Forma: apskritimas",shapeThumbnail:"Forma: miniatiūra",shapeNone:"Forma: jokia",dragImageHere:"Vilkite paveikslėlį čia",dropImage:"Drop image or Text",selectFromFiles:"Pasirinkite failą",maximumFileSize:"Maskimalus failo dydis",maximumFileSizeError:"Maskimalus failo dydis viršytas!",url:"Paveikslėlio URL adresas",remove:"Ištrinti paveikslėlį",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Nuoroda",insert:"Įterpti nuorodą",unlink:"Pašalinti nuorodą",edit:"Redaguoti",textToDisplay:"Rodomas tekstas",url:"Koks URL adresas yra susietas?",openInNewWindow:"Atidaryti naujame lange"},table:{table:"Lentelė",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Įterpti horizontalią liniją"},style:{style:"Stilius",p:"pus",blockquote:"Citata",pre:"Kodas",h1:"Antraštė 1",h2:"Antraštė 2",h3:"Antraštė 3",h4:"Antraštė 4",h5:"Antraštė 5",h6:"Antraštė 6"},lists:{unordered:"Suženklintasis sąrašas",ordered:"Sunumeruotas sąrašas"},options:{help:"Pagalba",fullscreen:"Viso ekrano režimas",codeview:"HTML kodo peržiūra"},paragraph:{paragraph:"Pastraipa",outdent:"Sumažinti įtrauką",indent:"Padidinti įtrauką",left:"Kairinė lygiuotė",center:"Centrinė lygiuotė",right:"Dešininė lygiuotė",justify:"Abipusis išlyginimas"},color:{recent:"Paskutinė naudota spalva",more:"Daugiau spalvų",background:"Fono spalva",foreground:"Šrifto spalva",transparent:"Permatoma",setTransparent:"Nustatyti skaidrumo intensyvumą",reset:"Atkurti",resetToDefault:"Atstatyti numatytąją spalvą"},shortcut:{shortcuts:"Spartieji klavišai",close:"Uždaryti",textFormatting:"Teksto formatavimas",action:"Veiksmas",paragraphFormatting:"Pastraipos formatavimas",documentStyle:"Dokumento stilius",extraKeys:"Papildomi klavišų deriniai"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Anuliuoti veiksmą",redo:"Perdaryti veiksmą"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var a})); +//# sourceMappingURL=summernote-lt-LT.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.min.js.map new file mode 100644 index 0000000..c13019c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LT.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-lt-LT.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,cACNC,OAAQ,WACRC,UAAW,YACXC,MAAO,iBACPC,OAAQ,kBACRC,KAAM,qBACNC,cAAe,cACfC,YAAa,aACbC,UAAW,WACXC,KAAM,gBAERC,MAAO,CACLA,MAAO,eACPC,OAAQ,sBACRC,WAAY,eACZC,WAAY,qBACZC,cAAe,qBACfC,UAAW,sBACXC,WAAY,uBACZC,UAAW,kBACXC,aAAc,yBACdC,YAAa,qBACbC,eAAgB,oBAChBC,UAAW,eACXC,cAAe,0BACfC,UAAW,qBACXC,gBAAiB,oBACjBC,gBAAiB,yBACjBC,qBAAsB,mCACtBC,IAAK,2BACLC,OAAQ,uBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,eACRgB,IAAK,aACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,UACNtB,OAAQ,kBACRuB,OAAQ,oBACRC,KAAM,YACNC,cAAe,kBACfT,IAAK,iCACLU,gBAAiB,2BAEnBC,MAAO,CACLA,MAAO,UACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,+BAEVoC,MAAO,CACLA,MAAO,UACPC,EAAG,MACHC,WAAY,SACZC,IAAK,QACLC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,cAENC,MAAO,CACLC,UAAW,yBACXC,QAAS,wBAEXC,QAAS,CACPC,KAAM,UACNC,WAAY,sBACZC,SAAU,sBAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,oBACTC,OAAQ,oBACRC,KAAM,mBACNC,OAAQ,oBACRC,MAAO,oBACPC,QAAS,wBAEXC,MAAO,CACLC,OAAQ,2BACRC,KAAM,iBACNC,WAAY,cACZC,WAAY,gBACZC,YAAa,YACbC,eAAgB,kCAChBC,MAAO,UACPC,eAAgB,+BAElBC,SAAU,CACRC,UAAW,qBACXC,MAAO,WACPC,eAAgB,sBAChBC,OAAQ,WACRC,oBAAqB,0BACrBC,cAAe,oBACfC,UAAW,8BAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,oBACNC,KAAM,qBAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-lt-LT.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'lt-LT': {\n font: {\n bold: 'Paryškintas',\n italic: 'Kursyvas',\n underline: 'Pabrėžtas',\n clear: 'Be formatavimo',\n height: 'Eilutės aukštis',\n name: 'Šrifto pavadinimas',\n strikethrough: 'Perbrauktas',\n superscript: 'Viršutinis',\n subscript: 'Indeksas',\n size: 'Šrifto dydis',\n },\n image: {\n image: 'Paveikslėlis',\n insert: 'Įterpti paveikslėlį',\n resizeFull: 'Pilnas dydis',\n resizeHalf: 'Sumažinti dydį 50%',\n resizeQuarter: 'Sumažinti dydį 25%',\n floatLeft: 'Kairinis lygiavimas',\n floatRight: 'Dešininis lygiavimas',\n floatNone: 'Jokio lygiavimo',\n shapeRounded: 'Forma: apvalūs kraštai',\n shapeCircle: 'Forma: apskritimas',\n shapeThumbnail: 'Forma: miniatiūra',\n shapeNone: 'Forma: jokia',\n dragImageHere: 'Vilkite paveikslėlį čia',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Pasirinkite failą',\n maximumFileSize: 'Maskimalus failo dydis',\n maximumFileSizeError: 'Maskimalus failo dydis viršytas!',\n url: 'Paveikslėlio URL adresas',\n remove: 'Ištrinti paveikslėlį',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Nuoroda',\n insert: 'Įterpti nuorodą',\n unlink: 'Pašalinti nuorodą',\n edit: 'Redaguoti',\n textToDisplay: 'Rodomas tekstas',\n url: 'Koks URL adresas yra susietas?',\n openInNewWindow: 'Atidaryti naujame lange',\n },\n table: {\n table: 'Lentelė',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Įterpti horizontalią liniją',\n },\n style: {\n style: 'Stilius',\n p: 'pus',\n blockquote: 'Citata',\n pre: 'Kodas',\n h1: 'Antraštė 1',\n h2: 'Antraštė 2',\n h3: 'Antraštė 3',\n h4: 'Antraštė 4',\n h5: 'Antraštė 5',\n h6: 'Antraštė 6',\n },\n lists: {\n unordered: 'Suženklintasis sąrašas',\n ordered: 'Sunumeruotas sąrašas',\n },\n options: {\n help: 'Pagalba',\n fullscreen: 'Viso ekrano režimas',\n codeview: 'HTML kodo peržiūra',\n },\n paragraph: {\n paragraph: 'Pastraipa',\n outdent: 'Sumažinti įtrauką',\n indent: 'Padidinti įtrauką',\n left: 'Kairinė lygiuotė',\n center: 'Centrinė lygiuotė',\n right: 'Dešininė lygiuotė',\n justify: 'Abipusis išlyginimas',\n },\n color: {\n recent: 'Paskutinė naudota spalva',\n more: 'Daugiau spalvų',\n background: 'Fono spalva',\n foreground: 'Šrifto spalva',\n transparent: 'Permatoma',\n setTransparent: 'Nustatyti skaidrumo intensyvumą',\n reset: 'Atkurti',\n resetToDefault: 'Atstatyti numatytąją spalvą',\n },\n shortcut: {\n shortcuts: 'Spartieji klavišai',\n close: 'Uždaryti',\n textFormatting: 'Teksto formatavimas',\n action: 'Veiksmas',\n paragraphFormatting: 'Pastraipos formatavimas',\n documentStyle: 'Dokumento stilius',\n extraKeys: 'Papildomi klavišų deriniai',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Anuliuoti veiksmą',\n redo: 'Perdaryti veiksmą',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.js b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.js new file mode 100644 index 0000000..f25b93c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'lv-LV': { + font: { + bold: 'Treknraksts', + italic: 'Kursīvs', + underline: 'Pasvītrots', + clear: 'Noņemt formatējumu', + height: 'Līnijas augstums', + name: 'Fonts', + strikethrough: 'Nosvītrots', + superscript: 'Augšraksts', + subscript: 'Apakšraksts', + size: 'Fonta lielums' + }, + image: { + image: 'Attēls', + insert: 'Ievietot attēlu', + resizeFull: 'Pilns izmērts', + resizeHalf: 'Samazināt 50%', + resizeQuarter: 'Samazināt 25%', + floatLeft: 'Līdzināt pa kreisi', + floatRight: 'Līdzināt pa labi', + floatNone: 'Nelīdzināt', + shapeRounded: 'Forma: apaļām malām', + shapeCircle: 'Forma: aplis', + shapeThumbnail: 'Forma: rāmītis', + shapeNone: 'Forma: orģināla', + dragImageHere: 'Ievēlciet attēlu šeit', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izvēlēties failu', + maximumFileSize: 'Maksimālais faila izmērs', + maximumFileSizeError: 'Faila izmērs pārāk liels!', + url: 'Attēla URL', + remove: 'Dzēst attēlu', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Saite', + insert: 'Ievietot saiti', + unlink: 'Noņemt saiti', + edit: 'Rediģēt', + textToDisplay: 'Saites saturs', + url: 'Koks URL adresas yra susietas?', + openInNewWindow: 'Atvērt jaunā logā' + }, + table: { + table: 'Tabula', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Ievietot līniju' + }, + style: { + style: 'Stils', + p: 'Parasts', + blockquote: 'Citāts', + pre: 'Kods', + h1: 'Virsraksts h1', + h2: 'Virsraksts h2', + h3: 'Virsraksts h3', + h4: 'Virsraksts h4', + h5: 'Virsraksts h5', + h6: 'Virsraksts h6' + }, + lists: { + unordered: 'Nenumurēts saraksts', + ordered: 'Numurēts saraksts' + }, + options: { + help: 'Palīdzība', + fullscreen: 'Pa visu ekrānu', + codeview: 'HTML kods' + }, + paragraph: { + paragraph: 'Paragrāfs', + outdent: 'Samazināt atkāpi', + indent: 'Palielināt atkāpi', + left: 'Līdzināt pa kreisi', + center: 'Centrēt', + right: 'Līdzināt pa labi', + justify: 'Līdzināt gar abām malām' + }, + color: { + recent: 'Nesen izmantotās', + more: 'Citas krāsas', + background: 'Fona krāsa', + foreground: 'Fonta krāsa', + transparent: 'Caurspīdīgs', + setTransparent: 'Iestatīt caurspīdīgumu', + reset: 'Atjaunot', + resetToDefault: 'Atjaunot noklusējumu' + }, + shortcut: { + shortcuts: 'Saīsnes', + close: 'Aizvērt', + textFormatting: 'Teksta formatēšana', + action: 'Darbība', + paragraphFormatting: 'Paragrāfa formatēšana', + documentStyle: 'Dokumenta stils', + extraKeys: 'Citas taustiņu kombinācijas' + }, + help: { + insertParagraph: 'Ievietot Paragrāfu', + undo: 'Atcelt iepriekšējo darbību', + redo: 'Atkārtot atcelto darbību', + tab: 'Atkāpe', + untab: 'Samazināt atkāpi', + bold: 'Pārvērst tekstu treknrakstā', + italic: 'Pārvērst tekstu slīprakstā (kursīvā)', + underline: 'Pasvītrot tekstu', + strikethrough: 'Nosvītrot tekstu', + removeFormat: 'Notīrīt stilu no teksta', + justifyLeft: 'Līdzīnāt saturu pa kreisi', + justifyCenter: 'Centrēt saturu', + justifyRight: 'Līdzīnāt saturu pa labi', + justifyFull: 'Izlīdzināt saturu gar abām malām', + insertUnorderedList: 'Ievietot nenumurētu sarakstu', + insertOrderedList: 'Ievietot numurētu sarakstu', + outdent: 'Samazināt/noņemt atkāpi paragrāfam', + indent: 'Uzlikt atkāpi paragrāfam', + formatPara: 'Mainīt bloka tipu uz (p) Paragrāfu', + formatH1: 'Mainīt bloka tipu uz virsrakstu H1', + formatH2: 'Mainīt bloka tipu uz virsrakstu H2', + formatH3: 'Mainīt bloka tipu uz virsrakstu H3', + formatH4: 'Mainīt bloka tipu uz virsrakstu H4', + formatH5: 'Mainīt bloka tipu uz virsrakstu H5', + formatH6: 'Mainīt bloka tipu uz virsrakstu H6', + insertHorizontalRule: 'Ievietot horizontālu līniju', + 'linkDialog.show': 'Parādīt saites logu' + }, + history: { + undo: 'Atsauks (undo)', + redo: 'Atkārtot (redo)' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-lt-LV.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.js.map new file mode 100644 index 0000000..0bf799b --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-lt-LV.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-lt-LV.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'lv-LV': {\n font: {\n bold: 'Treknraksts',\n italic: 'Kursīvs',\n underline: 'Pasvītrots',\n clear: 'Noņemt formatējumu',\n height: 'Līnijas augstums',\n name: 'Fonts',\n strikethrough: 'Nosvītrots',\n superscript: 'Augšraksts',\n subscript: 'Apakšraksts',\n size: 'Fonta lielums',\n },\n image: {\n image: 'Attēls',\n insert: 'Ievietot attēlu',\n resizeFull: 'Pilns izmērts',\n resizeHalf: 'Samazināt 50%',\n resizeQuarter: 'Samazināt 25%',\n floatLeft: 'Līdzināt pa kreisi',\n floatRight: 'Līdzināt pa labi',\n floatNone: 'Nelīdzināt',\n shapeRounded: 'Forma: apaļām malām',\n shapeCircle: 'Forma: aplis',\n shapeThumbnail: 'Forma: rāmītis',\n shapeNone: 'Forma: orģināla',\n dragImageHere: 'Ievēlciet attēlu šeit',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izvēlēties failu',\n maximumFileSize: 'Maksimālais faila izmērs',\n maximumFileSizeError: 'Faila izmērs pārāk liels!',\n url: 'Attēla URL',\n remove: 'Dzēst attēlu',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Saite',\n insert: 'Ievietot saiti',\n unlink: 'Noņemt saiti',\n edit: 'Rediģēt',\n textToDisplay: 'Saites saturs',\n url: 'Koks URL adresas yra susietas?',\n openInNewWindow: 'Atvērt jaunā logā',\n },\n table: {\n table: 'Tabula',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Ievietot līniju',\n },\n style: {\n style: 'Stils',\n p: 'Parasts',\n blockquote: 'Citāts',\n pre: 'Kods',\n h1: 'Virsraksts h1',\n h2: 'Virsraksts h2',\n h3: 'Virsraksts h3',\n h4: 'Virsraksts h4',\n h5: 'Virsraksts h5',\n h6: 'Virsraksts h6',\n },\n lists: {\n unordered: 'Nenumurēts saraksts',\n ordered: 'Numurēts saraksts',\n },\n options: {\n help: 'Palīdzība',\n fullscreen: 'Pa visu ekrānu',\n codeview: 'HTML kods',\n },\n paragraph: {\n paragraph: 'Paragrāfs',\n outdent: 'Samazināt atkāpi',\n indent: 'Palielināt atkāpi',\n left: 'Līdzināt pa kreisi',\n center: 'Centrēt',\n right: 'Līdzināt pa labi',\n justify: 'Līdzināt gar abām malām',\n },\n color: {\n recent: 'Nesen izmantotās',\n more: 'Citas krāsas',\n background: 'Fona krāsa',\n foreground: 'Fonta krāsa',\n transparent: 'Caurspīdīgs',\n setTransparent: 'Iestatīt caurspīdīgumu',\n reset: 'Atjaunot',\n resetToDefault: 'Atjaunot noklusējumu',\n },\n shortcut: {\n shortcuts: 'Saīsnes',\n close: 'Aizvērt',\n textFormatting: 'Teksta formatēšana',\n action: 'Darbība',\n paragraphFormatting: 'Paragrāfa formatēšana',\n documentStyle: 'Dokumenta stils',\n extraKeys: 'Citas taustiņu kombinācijas',\n },\n help: {\n insertParagraph: 'Ievietot Paragrāfu',\n undo: 'Atcelt iepriekšējo darbību',\n redo: 'Atkārtot atcelto darbību',\n tab: 'Atkāpe',\n untab: 'Samazināt atkāpi',\n bold: 'Pārvērst tekstu treknrakstā',\n italic: 'Pārvērst tekstu slīprakstā (kursīvā)',\n underline: 'Pasvītrot tekstu',\n strikethrough: 'Nosvītrot tekstu',\n removeFormat: 'Notīrīt stilu no teksta',\n justifyLeft: 'Līdzīnāt saturu pa kreisi',\n justifyCenter: 'Centrēt saturu',\n justifyRight: 'Līdzīnāt saturu pa labi',\n justifyFull: 'Izlīdzināt saturu gar abām malām',\n insertUnorderedList: 'Ievietot nenumurētu sarakstu',\n insertOrderedList: 'Ievietot numurētu sarakstu',\n outdent: 'Samazināt/noņemt atkāpi paragrāfam',\n indent: 'Uzlikt atkāpi paragrāfam',\n formatPara: 'Mainīt bloka tipu uz (p) Paragrāfu',\n formatH1: 'Mainīt bloka tipu uz virsrakstu H1',\n formatH2: 'Mainīt bloka tipu uz virsrakstu H2',\n formatH3: 'Mainīt bloka tipu uz virsrakstu H3',\n formatH4: 'Mainīt bloka tipu uz virsrakstu H4',\n formatH5: 'Mainīt bloka tipu uz virsrakstu H5',\n formatH6: 'Mainīt bloka tipu uz virsrakstu H6',\n insertHorizontalRule: 'Ievietot horizontālu līniju',\n 'linkDialog.show': 'Parādīt saites logu',\n },\n history: {\n undo: 'Atsauks (undo)',\n redo: 'Atkārtot (redo)',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.min.js new file mode 100644 index 0000000..3bd96eb --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(t,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var e=a();for(var r in e)("object"==typeof exports?exports:t)[r]=e[r]}}(self,(function(){return(t=jQuery).extend(t.summernote.lang,{"lv-LV":{font:{bold:"Treknraksts",italic:"Kursīvs",underline:"Pasvītrots",clear:"Noņemt formatējumu",height:"Līnijas augstums",name:"Fonts",strikethrough:"Nosvītrots",superscript:"Augšraksts",subscript:"Apakšraksts",size:"Fonta lielums"},image:{image:"Attēls",insert:"Ievietot attēlu",resizeFull:"Pilns izmērts",resizeHalf:"Samazināt 50%",resizeQuarter:"Samazināt 25%",floatLeft:"Līdzināt pa kreisi",floatRight:"Līdzināt pa labi",floatNone:"Nelīdzināt",shapeRounded:"Forma: apaļām malām",shapeCircle:"Forma: aplis",shapeThumbnail:"Forma: rāmītis",shapeNone:"Forma: orģināla",dragImageHere:"Ievēlciet attēlu šeit",dropImage:"Drop image or Text",selectFromFiles:"Izvēlēties failu",maximumFileSize:"Maksimālais faila izmērs",maximumFileSizeError:"Faila izmērs pārāk liels!",url:"Attēla URL",remove:"Dzēst attēlu",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Saite",insert:"Ievietot saiti",unlink:"Noņemt saiti",edit:"Rediģēt",textToDisplay:"Saites saturs",url:"Koks URL adresas yra susietas?",openInNewWindow:"Atvērt jaunā logā"},table:{table:"Tabula",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Ievietot līniju"},style:{style:"Stils",p:"Parasts",blockquote:"Citāts",pre:"Kods",h1:"Virsraksts h1",h2:"Virsraksts h2",h3:"Virsraksts h3",h4:"Virsraksts h4",h5:"Virsraksts h5",h6:"Virsraksts h6"},lists:{unordered:"Nenumurēts saraksts",ordered:"Numurēts saraksts"},options:{help:"Palīdzība",fullscreen:"Pa visu ekrānu",codeview:"HTML kods"},paragraph:{paragraph:"Paragrāfs",outdent:"Samazināt atkāpi",indent:"Palielināt atkāpi",left:"Līdzināt pa kreisi",center:"Centrēt",right:"Līdzināt pa labi",justify:"Līdzināt gar abām malām"},color:{recent:"Nesen izmantotās",more:"Citas krāsas",background:"Fona krāsa",foreground:"Fonta krāsa",transparent:"Caurspīdīgs",setTransparent:"Iestatīt caurspīdīgumu",reset:"Atjaunot",resetToDefault:"Atjaunot noklusējumu"},shortcut:{shortcuts:"Saīsnes",close:"Aizvērt",textFormatting:"Teksta formatēšana",action:"Darbība",paragraphFormatting:"Paragrāfa formatēšana",documentStyle:"Dokumenta stils",extraKeys:"Citas taustiņu kombinācijas"},help:{insertParagraph:"Ievietot Paragrāfu",undo:"Atcelt iepriekšējo darbību",redo:"Atkārtot atcelto darbību",tab:"Atkāpe",untab:"Samazināt atkāpi",bold:"Pārvērst tekstu treknrakstā",italic:"Pārvērst tekstu slīprakstā (kursīvā)",underline:"Pasvītrot tekstu",strikethrough:"Nosvītrot tekstu",removeFormat:"Notīrīt stilu no teksta",justifyLeft:"Līdzīnāt saturu pa kreisi",justifyCenter:"Centrēt saturu",justifyRight:"Līdzīnāt saturu pa labi",justifyFull:"Izlīdzināt saturu gar abām malām",insertUnorderedList:"Ievietot nenumurētu sarakstu",insertOrderedList:"Ievietot numurētu sarakstu",outdent:"Samazināt/noņemt atkāpi paragrāfam",indent:"Uzlikt atkāpi paragrāfam",formatPara:"Mainīt bloka tipu uz (p) Paragrāfu",formatH1:"Mainīt bloka tipu uz virsrakstu H1",formatH2:"Mainīt bloka tipu uz virsrakstu H2",formatH3:"Mainīt bloka tipu uz virsrakstu H3",formatH4:"Mainīt bloka tipu uz virsrakstu H4",formatH5:"Mainīt bloka tipu uz virsrakstu H5",formatH6:"Mainīt bloka tipu uz virsrakstu H6",insertHorizontalRule:"Ievietot horizontālu līniju","linkDialog.show":"Parādīt saites logu"},history:{undo:"Atsauks (undo)",redo:"Atkārtot (redo)"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var t})); +//# sourceMappingURL=summernote-lt-LV.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.min.js.map new file mode 100644 index 0000000..01bcfc7 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-lt-LV.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-lt-LV.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,cACNC,OAAQ,UACRC,UAAW,aACXC,MAAO,qBACPC,OAAQ,mBACRC,KAAM,QACNC,cAAe,aACfC,YAAa,aACbC,UAAW,cACXC,KAAM,iBAERC,MAAO,CACLA,MAAO,SACPC,OAAQ,kBACRC,WAAY,gBACZC,WAAY,gBACZC,cAAe,gBACfC,UAAW,qBACXC,WAAY,mBACZC,UAAW,aACXC,aAAc,sBACdC,YAAa,eACbC,eAAgB,iBAChBC,UAAW,kBACXC,cAAe,wBACfC,UAAW,qBACXC,gBAAiB,mBACjBC,gBAAiB,2BACjBC,qBAAsB,4BACtBC,IAAK,aACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,eACRgB,IAAK,aACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,QACNtB,OAAQ,iBACRuB,OAAQ,eACRC,KAAM,UACNC,cAAe,gBACfT,IAAK,iCACLU,gBAAiB,qBAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,mBAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,UACHC,WAAY,SACZC,IAAK,OACLC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,iBAENC,MAAO,CACLC,UAAW,sBACXC,QAAS,qBAEXC,QAAS,CACPC,KAAM,YACNC,WAAY,iBACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,mBACTC,OAAQ,oBACRC,KAAM,qBACNC,OAAQ,UACRC,MAAO,mBACPC,QAAS,2BAEXC,MAAO,CACLC,OAAQ,mBACRC,KAAM,eACNC,WAAY,aACZC,WAAY,cACZC,YAAa,cACbC,eAAgB,yBAChBC,MAAO,WACPC,eAAgB,wBAElBC,SAAU,CACRC,UAAW,UACXC,MAAO,UACPC,eAAgB,qBAChBC,OAAQ,UACRC,oBAAqB,wBACrBC,cAAe,kBACfC,UAAW,+BAEb1B,KAAM,CACJ2B,gBAAiB,qBACjBC,KAAM,6BACNC,KAAM,2BACNC,IAAK,SACLC,MAAO,mBACP5F,KAAM,8BACNC,OAAQ,uCACRC,UAAW,mBACXI,cAAe,mBACfuF,aAAc,0BACdC,YAAa,4BACbC,cAAe,iBACfC,aAAc,0BACdC,YAAa,mCACbC,oBAAqB,+BACrBC,kBAAmB,6BACnBlC,QAAS,qCACTC,OAAQ,2BACRkC,WAAY,qCACZC,SAAU,qCACVC,SAAU,qCACVC,SAAU,qCACVC,SAAU,qCACVC,SAAU,qCACVC,SAAU,qCACVC,qBAAsB,8BACtB,kBAAmB,uBAErBC,QAAS,CACPnB,KAAM,iBACNC,KAAM,mBAERmB,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUpH","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-lt-LV.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'lv-LV': {\n font: {\n bold: 'Treknraksts',\n italic: 'Kursīvs',\n underline: 'Pasvītrots',\n clear: 'Noņemt formatējumu',\n height: 'Līnijas augstums',\n name: 'Fonts',\n strikethrough: 'Nosvītrots',\n superscript: 'Augšraksts',\n subscript: 'Apakšraksts',\n size: 'Fonta lielums',\n },\n image: {\n image: 'Attēls',\n insert: 'Ievietot attēlu',\n resizeFull: 'Pilns izmērts',\n resizeHalf: 'Samazināt 50%',\n resizeQuarter: 'Samazināt 25%',\n floatLeft: 'Līdzināt pa kreisi',\n floatRight: 'Līdzināt pa labi',\n floatNone: 'Nelīdzināt',\n shapeRounded: 'Forma: apaļām malām',\n shapeCircle: 'Forma: aplis',\n shapeThumbnail: 'Forma: rāmītis',\n shapeNone: 'Forma: orģināla',\n dragImageHere: 'Ievēlciet attēlu šeit',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izvēlēties failu',\n maximumFileSize: 'Maksimālais faila izmērs',\n maximumFileSizeError: 'Faila izmērs pārāk liels!',\n url: 'Attēla URL',\n remove: 'Dzēst attēlu',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Saite',\n insert: 'Ievietot saiti',\n unlink: 'Noņemt saiti',\n edit: 'Rediģēt',\n textToDisplay: 'Saites saturs',\n url: 'Koks URL adresas yra susietas?',\n openInNewWindow: 'Atvērt jaunā logā',\n },\n table: {\n table: 'Tabula',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Ievietot līniju',\n },\n style: {\n style: 'Stils',\n p: 'Parasts',\n blockquote: 'Citāts',\n pre: 'Kods',\n h1: 'Virsraksts h1',\n h2: 'Virsraksts h2',\n h3: 'Virsraksts h3',\n h4: 'Virsraksts h4',\n h5: 'Virsraksts h5',\n h6: 'Virsraksts h6',\n },\n lists: {\n unordered: 'Nenumurēts saraksts',\n ordered: 'Numurēts saraksts',\n },\n options: {\n help: 'Palīdzība',\n fullscreen: 'Pa visu ekrānu',\n codeview: 'HTML kods',\n },\n paragraph: {\n paragraph: 'Paragrāfs',\n outdent: 'Samazināt atkāpi',\n indent: 'Palielināt atkāpi',\n left: 'Līdzināt pa kreisi',\n center: 'Centrēt',\n right: 'Līdzināt pa labi',\n justify: 'Līdzināt gar abām malām',\n },\n color: {\n recent: 'Nesen izmantotās',\n more: 'Citas krāsas',\n background: 'Fona krāsa',\n foreground: 'Fonta krāsa',\n transparent: 'Caurspīdīgs',\n setTransparent: 'Iestatīt caurspīdīgumu',\n reset: 'Atjaunot',\n resetToDefault: 'Atjaunot noklusējumu',\n },\n shortcut: {\n shortcuts: 'Saīsnes',\n close: 'Aizvērt',\n textFormatting: 'Teksta formatēšana',\n action: 'Darbība',\n paragraphFormatting: 'Paragrāfa formatēšana',\n documentStyle: 'Dokumenta stils',\n extraKeys: 'Citas taustiņu kombinācijas',\n },\n help: {\n insertParagraph: 'Ievietot Paragrāfu',\n undo: 'Atcelt iepriekšējo darbību',\n redo: 'Atkārtot atcelto darbību',\n tab: 'Atkāpe',\n untab: 'Samazināt atkāpi',\n bold: 'Pārvērst tekstu treknrakstā',\n italic: 'Pārvērst tekstu slīprakstā (kursīvā)',\n underline: 'Pasvītrot tekstu',\n strikethrough: 'Nosvītrot tekstu',\n removeFormat: 'Notīrīt stilu no teksta',\n justifyLeft: 'Līdzīnāt saturu pa kreisi',\n justifyCenter: 'Centrēt saturu',\n justifyRight: 'Līdzīnāt saturu pa labi',\n justifyFull: 'Izlīdzināt saturu gar abām malām',\n insertUnorderedList: 'Ievietot nenumurētu sarakstu',\n insertOrderedList: 'Ievietot numurētu sarakstu',\n outdent: 'Samazināt/noņemt atkāpi paragrāfam',\n indent: 'Uzlikt atkāpi paragrāfam',\n formatPara: 'Mainīt bloka tipu uz (p) Paragrāfu',\n formatH1: 'Mainīt bloka tipu uz virsrakstu H1',\n formatH2: 'Mainīt bloka tipu uz virsrakstu H2',\n formatH3: 'Mainīt bloka tipu uz virsrakstu H3',\n formatH4: 'Mainīt bloka tipu uz virsrakstu H4',\n formatH5: 'Mainīt bloka tipu uz virsrakstu H5',\n formatH6: 'Mainīt bloka tipu uz virsrakstu H6',\n insertHorizontalRule: 'Ievietot horizontālu līniju',\n 'linkDialog.show': 'Parādīt saites logu',\n },\n history: {\n undo: 'Atsauks (undo)',\n redo: 'Atkārtot (redo)',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","superscript","subscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.js b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.js new file mode 100644 index 0000000..07975c4 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +// Starsoft Mongolia LLC Temuujin Ariunbold +(function ($) { + $.extend($.summernote.lang, { + 'mn-MN': { + font: { + bold: 'Тод', + italic: 'Налуу', + underline: 'Доогуур зураас', + clear: 'Цэвэрлэх', + height: 'Өндөр', + name: 'Фонт', + superscript: 'Дээд илтгэгч', + subscript: 'Доод илтгэгч', + strikethrough: 'Дарах', + size: 'Хэмжээ' + }, + image: { + image: 'Зураг', + insert: 'Оруулах', + resizeFull: 'Хэмжээ бүтэн', + resizeHalf: 'Хэмжээ 1/2', + resizeQuarter: 'Хэмжээ 1/4', + floatLeft: 'Зүүн талд байрлуулах', + floatRight: 'Баруун талд байрлуулах', + floatNone: 'Анхдагч байрлалд аваачих', + shapeRounded: 'Хүрээ: Дугуй', + shapeCircle: 'Хүрээ: Тойрог', + shapeThumbnail: 'Хүрээ: Хураангуй', + shapeNone: 'Хүрээгүй', + dragImageHere: 'Зургийг энд чирч авчирна уу', + dropImage: 'Drop image or Text', + selectFromFiles: 'Файлуудаас сонгоно уу', + maximumFileSize: 'Файлын дээд хэмжээ', + maximumFileSizeError: 'Файлын дээд хэмжээ хэтэрсэн', + url: 'Зургийн URL', + remove: 'Зургийг устгах', + original: 'Original' + }, + video: { + video: 'Видео', + videoLink: 'Видео холбоос', + insert: 'Видео оруулах', + url: 'Видео URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion болон Youku)' + }, + link: { + link: 'Холбоос', + insert: 'Холбоос оруулах', + unlink: 'Холбоос арилгах', + edit: 'Засварлах', + textToDisplay: 'Харуулах бичвэр', + url: 'Энэ холбоос хаашаа очих вэ?', + openInNewWindow: 'Шинэ цонхонд нээх' + }, + table: { + table: 'Хүснэгт', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Хэвтээ шугам оруулах' + }, + style: { + style: 'Хэв маяг', + p: 'p', + blockquote: 'Иш татах', + pre: 'Эх сурвалж', + h1: 'Гарчиг 1', + h2: 'Гарчиг 2', + h3: 'Гарчиг 3', + h4: 'Гарчиг 4', + h5: 'Гарчиг 5', + h6: 'Гарчиг 6' + }, + lists: { + unordered: 'Эрэмбэлэгдээгүй', + ordered: 'Эрэмбэлэгдсэн' + }, + options: { + help: 'Тусламж', + fullscreen: 'Дэлгэцийг дүүргэх', + codeview: 'HTML-Code харуулах' + }, + paragraph: { + paragraph: 'Хэсэг', + outdent: 'Догол мөр хасах', + indent: 'Догол мөр нэмэх', + left: 'Зүүн тийш эгнүүлэх', + center: 'Төвд эгнүүлэх', + right: 'Баруун тийш эгнүүлэх', + justify: 'Мөрийг тэгшлэх' + }, + color: { + recent: 'Сүүлд хэрэглэсэн өнгө', + more: 'Өөр өнгөнүүд', + background: 'Дэвсгэр өнгө', + foreground: 'Үсгийн өнгө', + transparent: 'Тунгалаг', + setTransparent: 'Тунгалаг болгох', + reset: 'Анхдагч өнгөөр тохируулах', + resetToDefault: 'Хэвд нь оруулах' + }, + shortcut: { + shortcuts: 'Богино холбоос', + close: 'Хаалт', + textFormatting: 'Бичвэрийг хэлбэржүүлэх', + action: 'Үйлдэл', + paragraphFormatting: 'Догол мөрийг хэлбэржүүлэх', + documentStyle: 'Бичиг баримтын хэв загвар', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Буцаах', + redo: 'Дахин хийх' + }, + specialChar: { + specialChar: 'Тусгай тэмдэгт', + select: 'Тусгай тэмдэгт сонгох' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-mn-MN.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.js.map new file mode 100644 index 0000000..992f59f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-mn-MN.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-mn-MN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","// Starsoft Mongolia LLC Temuujin Ariunbold\n\n(function($) {\n $.extend($.summernote.lang, {\n 'mn-MN': {\n font: {\n bold: 'Тод',\n italic: 'Налуу',\n underline: 'Доогуур зураас',\n clear: 'Цэвэрлэх',\n height: 'Өндөр',\n name: 'Фонт',\n superscript: 'Дээд илтгэгч',\n subscript: 'Доод илтгэгч',\n strikethrough: 'Дарах',\n size: 'Хэмжээ',\n },\n image: {\n image: 'Зураг',\n insert: 'Оруулах',\n resizeFull: 'Хэмжээ бүтэн',\n resizeHalf: 'Хэмжээ 1/2',\n resizeQuarter: 'Хэмжээ 1/4',\n floatLeft: 'Зүүн талд байрлуулах',\n floatRight: 'Баруун талд байрлуулах',\n floatNone: 'Анхдагч байрлалд аваачих',\n shapeRounded: 'Хүрээ: Дугуй',\n shapeCircle: 'Хүрээ: Тойрог',\n shapeThumbnail: 'Хүрээ: Хураангуй',\n shapeNone: 'Хүрээгүй',\n dragImageHere: 'Зургийг энд чирч авчирна уу',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Файлуудаас сонгоно уу',\n maximumFileSize: 'Файлын дээд хэмжээ',\n maximumFileSizeError: 'Файлын дээд хэмжээ хэтэрсэн',\n url: 'Зургийн URL',\n remove: 'Зургийг устгах',\n original: 'Original',\n },\n video: {\n video: 'Видео',\n videoLink: 'Видео холбоос',\n insert: 'Видео оруулах',\n url: 'Видео URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion болон Youku)',\n },\n link: {\n link: 'Холбоос',\n insert: 'Холбоос оруулах',\n unlink: 'Холбоос арилгах',\n edit: 'Засварлах',\n textToDisplay: 'Харуулах бичвэр',\n url: 'Энэ холбоос хаашаа очих вэ?',\n openInNewWindow: 'Шинэ цонхонд нээх',\n },\n table: {\n table: 'Хүснэгт',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Хэвтээ шугам оруулах',\n },\n style: {\n style: 'Хэв маяг',\n p: 'p',\n blockquote: 'Иш татах',\n pre: 'Эх сурвалж',\n h1: 'Гарчиг 1',\n h2: 'Гарчиг 2',\n h3: 'Гарчиг 3',\n h4: 'Гарчиг 4',\n h5: 'Гарчиг 5',\n h6: 'Гарчиг 6',\n },\n lists: {\n unordered: 'Эрэмбэлэгдээгүй',\n ordered: 'Эрэмбэлэгдсэн',\n },\n options: {\n help: 'Тусламж',\n fullscreen: 'Дэлгэцийг дүүргэх',\n codeview: 'HTML-Code харуулах',\n },\n paragraph: {\n paragraph: 'Хэсэг',\n outdent: 'Догол мөр хасах',\n indent: 'Догол мөр нэмэх',\n left: 'Зүүн тийш эгнүүлэх',\n center: 'Төвд эгнүүлэх',\n right: 'Баруун тийш эгнүүлэх',\n justify: 'Мөрийг тэгшлэх',\n },\n color: {\n recent: 'Сүүлд хэрэглэсэн өнгө',\n more: 'Өөр өнгөнүүд',\n background: 'Дэвсгэр өнгө',\n foreground: 'Үсгийн өнгө',\n transparent: 'Тунгалаг',\n setTransparent: 'Тунгалаг болгох',\n reset: 'Анхдагч өнгөөр тохируулах',\n resetToDefault: 'Хэвд нь оруулах',\n },\n shortcut: {\n shortcuts: 'Богино холбоос',\n close: 'Хаалт',\n textFormatting: 'Бичвэрийг хэлбэржүүлэх',\n action: 'Үйлдэл',\n paragraphFormatting: 'Догол мөрийг хэлбэржүүлэх',\n documentStyle: 'Бичиг баримтын хэв загвар',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Буцаах',\n redo: 'Дахин хийх',\n },\n specialChar: {\n specialChar: 'Тусгай тэмдэгт',\n select: 'Тусгай тэмдэгт сонгох',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","superscript","subscript","strikethrough","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.min.js new file mode 100644 index 0000000..a131d8c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"mn-MN":{font:{bold:"Тод",italic:"Налуу",underline:"Доогуур зураас",clear:"Цэвэрлэх",height:"Өндөр",name:"Фонт",superscript:"Дээд илтгэгч",subscript:"Доод илтгэгч",strikethrough:"Дарах",size:"Хэмжээ"},image:{image:"Зураг",insert:"Оруулах",resizeFull:"Хэмжээ бүтэн",resizeHalf:"Хэмжээ 1/2",resizeQuarter:"Хэмжээ 1/4",floatLeft:"Зүүн талд байрлуулах",floatRight:"Баруун талд байрлуулах",floatNone:"Анхдагч байрлалд аваачих",shapeRounded:"Хүрээ: Дугуй",shapeCircle:"Хүрээ: Тойрог",shapeThumbnail:"Хүрээ: Хураангуй",shapeNone:"Хүрээгүй",dragImageHere:"Зургийг энд чирч авчирна уу",dropImage:"Drop image or Text",selectFromFiles:"Файлуудаас сонгоно уу",maximumFileSize:"Файлын дээд хэмжээ",maximumFileSizeError:"Файлын дээд хэмжээ хэтэрсэн",url:"Зургийн URL",remove:"Зургийг устгах",original:"Original"},video:{video:"Видео",videoLink:"Видео холбоос",insert:"Видео оруулах",url:"Видео URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion болон Youku)"},link:{link:"Холбоос",insert:"Холбоос оруулах",unlink:"Холбоос арилгах",edit:"Засварлах",textToDisplay:"Харуулах бичвэр",url:"Энэ холбоос хаашаа очих вэ?",openInNewWindow:"Шинэ цонхонд нээх"},table:{table:"Хүснэгт",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Хэвтээ шугам оруулах"},style:{style:"Хэв маяг",p:"p",blockquote:"Иш татах",pre:"Эх сурвалж",h1:"Гарчиг 1",h2:"Гарчиг 2",h3:"Гарчиг 3",h4:"Гарчиг 4",h5:"Гарчиг 5",h6:"Гарчиг 6"},lists:{unordered:"Эрэмбэлэгдээгүй",ordered:"Эрэмбэлэгдсэн"},options:{help:"Тусламж",fullscreen:"Дэлгэцийг дүүргэх",codeview:"HTML-Code харуулах"},paragraph:{paragraph:"Хэсэг",outdent:"Догол мөр хасах",indent:"Догол мөр нэмэх",left:"Зүүн тийш эгнүүлэх",center:"Төвд эгнүүлэх",right:"Баруун тийш эгнүүлэх",justify:"Мөрийг тэгшлэх"},color:{recent:"Сүүлд хэрэглэсэн өнгө",more:"Өөр өнгөнүүд",background:"Дэвсгэр өнгө",foreground:"Үсгийн өнгө",transparent:"Тунгалаг",setTransparent:"Тунгалаг болгох",reset:"Анхдагч өнгөөр тохируулах",resetToDefault:"Хэвд нь оруулах"},shortcut:{shortcuts:"Богино холбоос",close:"Хаалт",textFormatting:"Бичвэрийг хэлбэржүүлэх",action:"Үйлдэл",paragraphFormatting:"Догол мөрийг хэлбэржүүлэх",documentStyle:"Бичиг баримтын хэв загвар",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Буцаах",redo:"Дахин хийх"},specialChar:{specialChar:"Тусгай тэмдэгт",select:"Тусгай тэмдэгт сонгох"}}}),{};var e})); +//# sourceMappingURL=summernote-mn-MN.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.min.js.map new file mode 100644 index 0000000..7632309 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-mn-MN.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-mn-MN.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCRUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,MACNC,OAAQ,QACRC,UAAW,iBACXC,MAAO,WACPC,OAAQ,QACRC,KAAM,OACNC,YAAa,eACbC,UAAW,eACXC,cAAe,QACfC,KAAM,UAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,UACRC,WAAY,eACZC,WAAY,aACZC,cAAe,aACfC,UAAW,uBACXC,WAAY,yBACZC,UAAW,2BACXC,aAAc,eACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,WACXC,cAAe,8BACfC,UAAW,qBACXC,gBAAiB,wBACjBC,gBAAiB,qBACjBC,qBAAsB,8BACtBC,IAAK,cACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,gBACXpB,OAAQ,gBACRgB,IAAK,aACLK,UAAW,8DAEbC,KAAM,CACJA,KAAM,UACNtB,OAAQ,kBACRuB,OAAQ,kBACRC,KAAM,YACNC,cAAe,kBACfT,IAAK,8BACLU,gBAAiB,qBAEnBC,MAAO,CACLA,MAAO,UACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,wBAEVoC,MAAO,CACLA,MAAO,WACPC,EAAG,IACHC,WAAY,WACZC,IAAK,aACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,kBACXC,QAAS,iBAEXC,QAAS,CACPC,KAAM,UACNC,WAAY,oBACZC,SAAU,sBAEZC,UAAW,CACTA,UAAW,QACXC,QAAS,kBACTC,OAAQ,kBACRC,KAAM,qBACNC,OAAQ,gBACRC,MAAO,uBACPC,QAAS,kBAEXC,MAAO,CACLC,OAAQ,wBACRC,KAAM,eACNC,WAAY,eACZC,WAAY,cACZC,YAAa,WACbC,eAAgB,kBAChBC,MAAO,4BACPC,eAAgB,mBAElBC,SAAU,CACRC,UAAW,iBACXC,MAAO,QACPC,eAAgB,yBAChBC,OAAQ,SACRC,oBAAqB,4BACrBC,cAAe,4BACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,SACNC,KAAM,cAERC,YAAa,CACXA,YAAa,iBACbC,OAAQ,4B,GD9IhB,ICRUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-mn-MN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","// Starsoft Mongolia LLC Temuujin Ariunbold\n\n(function($) {\n $.extend($.summernote.lang, {\n 'mn-MN': {\n font: {\n bold: 'Тод',\n italic: 'Налуу',\n underline: 'Доогуур зураас',\n clear: 'Цэвэрлэх',\n height: 'Өндөр',\n name: 'Фонт',\n superscript: 'Дээд илтгэгч',\n subscript: 'Доод илтгэгч',\n strikethrough: 'Дарах',\n size: 'Хэмжээ',\n },\n image: {\n image: 'Зураг',\n insert: 'Оруулах',\n resizeFull: 'Хэмжээ бүтэн',\n resizeHalf: 'Хэмжээ 1/2',\n resizeQuarter: 'Хэмжээ 1/4',\n floatLeft: 'Зүүн талд байрлуулах',\n floatRight: 'Баруун талд байрлуулах',\n floatNone: 'Анхдагч байрлалд аваачих',\n shapeRounded: 'Хүрээ: Дугуй',\n shapeCircle: 'Хүрээ: Тойрог',\n shapeThumbnail: 'Хүрээ: Хураангуй',\n shapeNone: 'Хүрээгүй',\n dragImageHere: 'Зургийг энд чирч авчирна уу',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Файлуудаас сонгоно уу',\n maximumFileSize: 'Файлын дээд хэмжээ',\n maximumFileSizeError: 'Файлын дээд хэмжээ хэтэрсэн',\n url: 'Зургийн URL',\n remove: 'Зургийг устгах',\n original: 'Original',\n },\n video: {\n video: 'Видео',\n videoLink: 'Видео холбоос',\n insert: 'Видео оруулах',\n url: 'Видео URL?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion болон Youku)',\n },\n link: {\n link: 'Холбоос',\n insert: 'Холбоос оруулах',\n unlink: 'Холбоос арилгах',\n edit: 'Засварлах',\n textToDisplay: 'Харуулах бичвэр',\n url: 'Энэ холбоос хаашаа очих вэ?',\n openInNewWindow: 'Шинэ цонхонд нээх',\n },\n table: {\n table: 'Хүснэгт',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Хэвтээ шугам оруулах',\n },\n style: {\n style: 'Хэв маяг',\n p: 'p',\n blockquote: 'Иш татах',\n pre: 'Эх сурвалж',\n h1: 'Гарчиг 1',\n h2: 'Гарчиг 2',\n h3: 'Гарчиг 3',\n h4: 'Гарчиг 4',\n h5: 'Гарчиг 5',\n h6: 'Гарчиг 6',\n },\n lists: {\n unordered: 'Эрэмбэлэгдээгүй',\n ordered: 'Эрэмбэлэгдсэн',\n },\n options: {\n help: 'Тусламж',\n fullscreen: 'Дэлгэцийг дүүргэх',\n codeview: 'HTML-Code харуулах',\n },\n paragraph: {\n paragraph: 'Хэсэг',\n outdent: 'Догол мөр хасах',\n indent: 'Догол мөр нэмэх',\n left: 'Зүүн тийш эгнүүлэх',\n center: 'Төвд эгнүүлэх',\n right: 'Баруун тийш эгнүүлэх',\n justify: 'Мөрийг тэгшлэх',\n },\n color: {\n recent: 'Сүүлд хэрэглэсэн өнгө',\n more: 'Өөр өнгөнүүд',\n background: 'Дэвсгэр өнгө',\n foreground: 'Үсгийн өнгө',\n transparent: 'Тунгалаг',\n setTransparent: 'Тунгалаг болгох',\n reset: 'Анхдагч өнгөөр тохируулах',\n resetToDefault: 'Хэвд нь оруулах',\n },\n shortcut: {\n shortcuts: 'Богино холбоос',\n close: 'Хаалт',\n textFormatting: 'Бичвэрийг хэлбэржүүлэх',\n action: 'Үйлдэл',\n paragraphFormatting: 'Догол мөрийг хэлбэржүүлэх',\n documentStyle: 'Бичиг баримтын хэв загвар',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Буцаах',\n redo: 'Дахин хийх',\n },\n specialChar: {\n specialChar: 'Тусгай тэмдэгт',\n select: 'Тусгай тэмдэгт сонгох',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","superscript","subscript","strikethrough","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.js b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.js new file mode 100644 index 0000000..170d6ce --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.js @@ -0,0 +1,183 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'nb-NO': { + font: { + bold: 'Fet', + italic: 'Kursiv', + underline: 'Understrek', + clear: 'Fjern formatering', + height: 'Linjehøyde', + name: 'Skrifttype', + strikethrough: 'Gjennomstrek', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Skriftstørrelse' + }, + image: { + image: 'Bilde', + insert: 'Sett inn bilde', + resizeFull: 'Sett full størrelse', + resizeHalf: 'Sett halv størrelse', + resizeQuarter: 'Sett kvart størrelse', + floatLeft: 'Flyt til venstre', + floatRight: 'Flyt til høyre', + floatNone: 'Fjern flyt', + shapeRounded: 'Form: Rundet', + shapeCircle: 'Form: Sirkel', + shapeThumbnail: 'Form: Miniatyr', + shapeNone: 'Form: Ingen', + dragImageHere: 'Dra et bilde hit', + dropImage: 'Drop image or Text', + selectFromFiles: 'Velg fra filer', + maximumFileSize: 'Max filstørrelse', + maximumFileSizeError: 'Maks filstørrelse overskredet.', + url: 'Bilde-URL', + remove: 'Fjern bilde', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Videolenke', + insert: 'Sett inn video', + url: 'Video-URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Lenke', + insert: 'Sett inn lenke', + unlink: 'Fjern lenke', + edit: 'Rediger', + textToDisplay: 'Visningstekst', + url: 'Til hvilken URL skal denne lenken peke?', + openInNewWindow: 'Åpne i nytt vindu' + }, + table: { + table: 'Tabell', + addRowAbove: 'Legg til rad over', + addRowBelow: 'Legg til rad under', + addColLeft: 'Legg til kolonne på venstre side', + addColRight: 'Legg til kolonne på høyre side', + delRow: 'Slett rad', + delCol: 'Slett kolonne', + delTable: 'Slett tabell' + }, + hr: { + insert: 'Sett inn horisontal linje' + }, + style: { + style: 'Stil', + p: 'Paragraf', + blockquote: 'Sitat', + pre: 'Kode', + h1: 'Overskrift 1', + h2: 'Overskrift 2', + h3: 'Overskrift 3', + h4: 'Overskrift 4', + h5: 'Overskrift 5', + h6: 'Overskrift 6' + }, + lists: { + unordered: 'Punktliste', + ordered: 'Nummerert liste' + }, + options: { + help: 'Hjelp', + fullscreen: 'Fullskjerm', + codeview: 'HTML-visning' + }, + paragraph: { + paragraph: 'Avsnitt', + outdent: 'Tilbakerykk', + indent: 'Innrykk', + left: 'Venstrejustert', + center: 'Midtstilt', + right: 'Høyrejustert', + justify: 'Blokkjustert' + }, + color: { + recent: 'Nylig valgt farge', + more: 'Flere farger', + background: 'Bakgrunnsfarge', + foreground: 'Skriftfarge', + transparent: 'Gjennomsiktig', + setTransparent: 'Sett gjennomsiktig', + reset: 'Nullstill', + resetToDefault: 'Nullstill til standard' + }, + shortcut: { + shortcuts: 'Hurtigtaster', + close: 'Lukk', + textFormatting: 'Tekstformatering', + action: 'Handling', + paragraphFormatting: 'Avsnittsformatering', + documentStyle: 'Dokumentstil' + }, + help: { + 'insertParagraph': 'Sett inn avsnitt', + 'undo': 'Angre siste handling', + 'redo': 'Gjør om siste handling', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Angi en fet stil', + 'italic': 'Angi en kursiv stil', + 'underline': 'Sett en understreket stil', + 'strikethrough': 'Sett en gjennomgående sti', + 'removeFormat': 'Tøm formattering', + 'justifyLeft': 'Angi venstrejustering', + 'justifyCenter': 'Angi sentrert justering', + 'justifyRight': 'Angi høyre justering', + 'justifyFull': 'Angi full justering', + 'insertUnorderedList': 'Bytt uordnet liste', + 'insertOrderedList': 'Bytt sortert liste', + 'outdent': 'Utrykk på valgt avsnitt', + 'indent': 'Innrykk på valgt avsnitt', + 'formatPara': 'Endre gjeldende blokkformat til et avsnitt (P-kode)', + 'formatH1': 'Endre gjeldende blokkformat til H1', + 'formatH2': 'Endre gjeldende blokkformat til H2', + 'formatH3': 'Endre gjeldende blokkformat til H3', + 'formatH4': 'Endre gjeldende blokkformat til H4', + 'formatH5': 'Endre gjeldende blokkformat til H5', + 'formatH6': 'Endre gjeldende blokkformat til H6', + 'insertHorizontalRule': 'Sett inn horisontal deler', + 'linkDialog.show': 'Vis koblingsdialog' + }, + history: { + undo: 'Angre', + redo: 'Gjør om' + }, + specialChar: { + specialChar: 'SPESIELLE TEGN', + select: 'Velg spesielle tegn' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-nb-NO.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.js.map new file mode 100644 index 0000000..c742f9a --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-nb-NO.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-nb-NO.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'nb-NO': {\n font: {\n bold: 'Fet',\n italic: 'Kursiv',\n underline: 'Understrek',\n clear: 'Fjern formatering',\n height: 'Linjehøyde',\n name: 'Skrifttype',\n strikethrough: 'Gjennomstrek',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Skriftstørrelse',\n },\n image: {\n image: 'Bilde',\n insert: 'Sett inn bilde',\n resizeFull: 'Sett full størrelse',\n resizeHalf: 'Sett halv størrelse',\n resizeQuarter: 'Sett kvart størrelse',\n floatLeft: 'Flyt til venstre',\n floatRight: 'Flyt til høyre',\n floatNone: 'Fjern flyt',\n shapeRounded: 'Form: Rundet',\n shapeCircle: 'Form: Sirkel',\n shapeThumbnail: 'Form: Miniatyr',\n shapeNone: 'Form: Ingen',\n dragImageHere: 'Dra et bilde hit',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Velg fra filer',\n maximumFileSize: 'Max filstørrelse',\n maximumFileSizeError: 'Maks filstørrelse overskredet.',\n url: 'Bilde-URL',\n remove: 'Fjern bilde',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Videolenke',\n insert: 'Sett inn video',\n url: 'Video-URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)',\n },\n link: {\n link: 'Lenke',\n insert: 'Sett inn lenke',\n unlink: 'Fjern lenke',\n edit: 'Rediger',\n textToDisplay: 'Visningstekst',\n url: 'Til hvilken URL skal denne lenken peke?',\n openInNewWindow: 'Åpne i nytt vindu',\n },\n table: {\n table: 'Tabell',\n addRowAbove: 'Legg til rad over',\n addRowBelow: 'Legg til rad under',\n addColLeft: 'Legg til kolonne på venstre side',\n addColRight: 'Legg til kolonne på høyre side',\n delRow: 'Slett rad',\n delCol: 'Slett kolonne',\n delTable: 'Slett tabell',\n },\n hr: {\n insert: 'Sett inn horisontal linje',\n },\n style: {\n style: 'Stil',\n p: 'Paragraf',\n blockquote: 'Sitat',\n pre: 'Kode',\n h1: 'Overskrift 1',\n h2: 'Overskrift 2',\n h3: 'Overskrift 3',\n h4: 'Overskrift 4',\n h5: 'Overskrift 5',\n h6: 'Overskrift 6',\n },\n lists: {\n unordered: 'Punktliste',\n ordered: 'Nummerert liste',\n },\n options: {\n help: 'Hjelp',\n fullscreen: 'Fullskjerm',\n codeview: 'HTML-visning',\n },\n paragraph: {\n paragraph: 'Avsnitt',\n outdent: 'Tilbakerykk',\n indent: 'Innrykk',\n left: 'Venstrejustert',\n center: 'Midtstilt',\n right: 'Høyrejustert',\n justify: 'Blokkjustert',\n },\n color: {\n recent: 'Nylig valgt farge',\n more: 'Flere farger',\n background: 'Bakgrunnsfarge',\n foreground: 'Skriftfarge',\n transparent: 'Gjennomsiktig',\n setTransparent: 'Sett gjennomsiktig',\n reset: 'Nullstill',\n resetToDefault: 'Nullstill til standard',\n },\n shortcut: {\n shortcuts: 'Hurtigtaster',\n close: 'Lukk',\n textFormatting: 'Tekstformatering',\n action: 'Handling',\n paragraphFormatting: 'Avsnittsformatering',\n documentStyle: 'Dokumentstil',\n },\n help: {\n 'insertParagraph': 'Sett inn avsnitt',\n 'undo': 'Angre siste handling',\n 'redo': 'Gjør om siste handling',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Angi en fet stil',\n 'italic': 'Angi en kursiv stil',\n 'underline': 'Sett en understreket stil',\n 'strikethrough': 'Sett en gjennomgående sti',\n 'removeFormat': 'Tøm formattering',\n 'justifyLeft': 'Angi venstrejustering',\n 'justifyCenter': 'Angi sentrert justering',\n 'justifyRight': 'Angi høyre justering',\n 'justifyFull': 'Angi full justering',\n 'insertUnorderedList': 'Bytt uordnet liste',\n 'insertOrderedList': 'Bytt sortert liste',\n 'outdent': 'Utrykk på valgt avsnitt',\n 'indent': 'Innrykk på valgt avsnitt',\n 'formatPara': 'Endre gjeldende blokkformat til et avsnitt (P-kode)',\n 'formatH1': 'Endre gjeldende blokkformat til H1',\n 'formatH2': 'Endre gjeldende blokkformat til H2',\n 'formatH3': 'Endre gjeldende blokkformat til H3',\n 'formatH4': 'Endre gjeldende blokkformat til H4',\n 'formatH5': 'Endre gjeldende blokkformat til H5',\n 'formatH6': 'Endre gjeldende blokkformat til H6',\n 'insertHorizontalRule': 'Sett inn horisontal deler',\n 'linkDialog.show': 'Vis koblingsdialog',\n },\n history: {\n undo: 'Angre',\n redo: 'Gjør om',\n },\n specialChar: {\n specialChar: 'SPESIELLE TEGN',\n select: 'Velg spesielle tegn',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.min.js new file mode 100644 index 0000000..2bf50a9 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"nb-NO":{font:{bold:"Fet",italic:"Kursiv",underline:"Understrek",clear:"Fjern formatering",height:"Linjehøyde",name:"Skrifttype",strikethrough:"Gjennomstrek",subscript:"Subscript",superscript:"Superscript",size:"Skriftstørrelse"},image:{image:"Bilde",insert:"Sett inn bilde",resizeFull:"Sett full størrelse",resizeHalf:"Sett halv størrelse",resizeQuarter:"Sett kvart størrelse",floatLeft:"Flyt til venstre",floatRight:"Flyt til høyre",floatNone:"Fjern flyt",shapeRounded:"Form: Rundet",shapeCircle:"Form: Sirkel",shapeThumbnail:"Form: Miniatyr",shapeNone:"Form: Ingen",dragImageHere:"Dra et bilde hit",dropImage:"Drop image or Text",selectFromFiles:"Velg fra filer",maximumFileSize:"Max filstørrelse",maximumFileSizeError:"Maks filstørrelse overskredet.",url:"Bilde-URL",remove:"Fjern bilde",original:"Original"},video:{video:"Video",videoLink:"Videolenke",insert:"Sett inn video",url:"Video-URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Lenke",insert:"Sett inn lenke",unlink:"Fjern lenke",edit:"Rediger",textToDisplay:"Visningstekst",url:"Til hvilken URL skal denne lenken peke?",openInNewWindow:"Åpne i nytt vindu"},table:{table:"Tabell",addRowAbove:"Legg til rad over",addRowBelow:"Legg til rad under",addColLeft:"Legg til kolonne på venstre side",addColRight:"Legg til kolonne på høyre side",delRow:"Slett rad",delCol:"Slett kolonne",delTable:"Slett tabell"},hr:{insert:"Sett inn horisontal linje"},style:{style:"Stil",p:"Paragraf",blockquote:"Sitat",pre:"Kode",h1:"Overskrift 1",h2:"Overskrift 2",h3:"Overskrift 3",h4:"Overskrift 4",h5:"Overskrift 5",h6:"Overskrift 6"},lists:{unordered:"Punktliste",ordered:"Nummerert liste"},options:{help:"Hjelp",fullscreen:"Fullskjerm",codeview:"HTML-visning"},paragraph:{paragraph:"Avsnitt",outdent:"Tilbakerykk",indent:"Innrykk",left:"Venstrejustert",center:"Midtstilt",right:"Høyrejustert",justify:"Blokkjustert"},color:{recent:"Nylig valgt farge",more:"Flere farger",background:"Bakgrunnsfarge",foreground:"Skriftfarge",transparent:"Gjennomsiktig",setTransparent:"Sett gjennomsiktig",reset:"Nullstill",resetToDefault:"Nullstill til standard"},shortcut:{shortcuts:"Hurtigtaster",close:"Lukk",textFormatting:"Tekstformatering",action:"Handling",paragraphFormatting:"Avsnittsformatering",documentStyle:"Dokumentstil"},help:{insertParagraph:"Sett inn avsnitt",undo:"Angre siste handling",redo:"Gjør om siste handling",tab:"Tab",untab:"Untab",bold:"Angi en fet stil",italic:"Angi en kursiv stil",underline:"Sett en understreket stil",strikethrough:"Sett en gjennomgående sti",removeFormat:"Tøm formattering",justifyLeft:"Angi venstrejustering",justifyCenter:"Angi sentrert justering",justifyRight:"Angi høyre justering",justifyFull:"Angi full justering",insertUnorderedList:"Bytt uordnet liste",insertOrderedList:"Bytt sortert liste",outdent:"Utrykk på valgt avsnitt",indent:"Innrykk på valgt avsnitt",formatPara:"Endre gjeldende blokkformat til et avsnitt (P-kode)",formatH1:"Endre gjeldende blokkformat til H1",formatH2:"Endre gjeldende blokkformat til H2",formatH3:"Endre gjeldende blokkformat til H3",formatH4:"Endre gjeldende blokkformat til H4",formatH5:"Endre gjeldende blokkformat til H5",formatH6:"Endre gjeldende blokkformat til H6",insertHorizontalRule:"Sett inn horisontal deler","linkDialog.show":"Vis koblingsdialog"},history:{undo:"Angre",redo:"Gjør om"},specialChar:{specialChar:"SPESIELLE TEGN",select:"Velg spesielle tegn"}}}),{};var e})); +//# sourceMappingURL=summernote-nb-NO.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.min.js.map new file mode 100644 index 0000000..cadd401 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nb-NO.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-nb-NO.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EAyJPC,QAxJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,MACNC,OAAQ,SACRC,UAAW,aACXC,MAAO,oBACPC,OAAQ,aACRC,KAAM,aACNC,cAAe,eACfC,UAAW,YACXC,YAAa,cACbC,KAAM,mBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,iBACRC,WAAY,sBACZC,WAAY,sBACZC,cAAe,uBACfC,UAAW,mBACXC,WAAY,iBACZC,UAAW,aACXC,aAAc,eACdC,YAAa,eACbC,eAAgB,iBAChBC,UAAW,cACXC,cAAe,mBACfC,UAAW,qBACXC,gBAAiB,iBACjBC,gBAAiB,mBACjBC,qBAAsB,iCACtBC,IAAK,YACLC,OAAQ,cACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,iBACRgB,IAAK,YACLK,UAAW,8DAEbC,KAAM,CACJA,KAAM,QACNtB,OAAQ,iBACRuB,OAAQ,cACRC,KAAM,UACNC,cAAe,gBACfT,IAAK,0CACLU,gBAAiB,qBAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,oBACbC,YAAa,qBACbC,WAAY,mCACZC,YAAa,iCACbC,OAAQ,YACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,6BAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,WACHC,WAAY,QACZC,IAAK,OACLC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,eACJC,GAAI,gBAENC,MAAO,CACLC,UAAW,aACXC,QAAS,mBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,aACZC,SAAU,gBAEZC,UAAW,CACTA,UAAW,UACXC,QAAS,cACTC,OAAQ,UACRC,KAAM,iBACNC,OAAQ,YACRC,MAAO,eACPC,QAAS,gBAEXC,MAAO,CACLC,OAAQ,oBACRC,KAAM,eACNC,WAAY,iBACZC,WAAY,cACZC,YAAa,gBACbC,eAAgB,qBAChBC,MAAO,YACPC,eAAgB,0BAElBC,SAAU,CACRC,UAAW,eACXC,MAAO,OACPC,eAAgB,mBAChBC,OAAQ,WACRC,oBAAqB,sBACrBC,cAAe,gBAEjBzB,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,uBACR,KAAQ,yBACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,sBACV,UAAa,4BACb,cAAiB,4BACjB,aAAgB,mBAChB,YAAe,wBACf,cAAiB,0BACjB,aAAgB,uBAChB,YAAe,sBACf,oBAAuB,qBACvB,kBAAqB,qBACrB,QAAW,0BACX,OAAU,2BACV,WAAc,sDACd,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,qBAAwB,4BACxB,kBAAmB,sBAErB0B,QAAS,CACPC,KAAM,QACNC,KAAM,WAERC,YAAa,CACXA,YAAa,iBACbC,OAAQ,0B,GD3IhB,ICVUjG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-nb-NO.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'nb-NO': {\n font: {\n bold: 'Fet',\n italic: 'Kursiv',\n underline: 'Understrek',\n clear: 'Fjern formatering',\n height: 'Linjehøyde',\n name: 'Skrifttype',\n strikethrough: 'Gjennomstrek',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Skriftstørrelse',\n },\n image: {\n image: 'Bilde',\n insert: 'Sett inn bilde',\n resizeFull: 'Sett full størrelse',\n resizeHalf: 'Sett halv størrelse',\n resizeQuarter: 'Sett kvart størrelse',\n floatLeft: 'Flyt til venstre',\n floatRight: 'Flyt til høyre',\n floatNone: 'Fjern flyt',\n shapeRounded: 'Form: Rundet',\n shapeCircle: 'Form: Sirkel',\n shapeThumbnail: 'Form: Miniatyr',\n shapeNone: 'Form: Ingen',\n dragImageHere: 'Dra et bilde hit',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Velg fra filer',\n maximumFileSize: 'Max filstørrelse',\n maximumFileSizeError: 'Maks filstørrelse overskredet.',\n url: 'Bilde-URL',\n remove: 'Fjern bilde',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Videolenke',\n insert: 'Sett inn video',\n url: 'Video-URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)',\n },\n link: {\n link: 'Lenke',\n insert: 'Sett inn lenke',\n unlink: 'Fjern lenke',\n edit: 'Rediger',\n textToDisplay: 'Visningstekst',\n url: 'Til hvilken URL skal denne lenken peke?',\n openInNewWindow: 'Åpne i nytt vindu',\n },\n table: {\n table: 'Tabell',\n addRowAbove: 'Legg til rad over',\n addRowBelow: 'Legg til rad under',\n addColLeft: 'Legg til kolonne på venstre side',\n addColRight: 'Legg til kolonne på høyre side',\n delRow: 'Slett rad',\n delCol: 'Slett kolonne',\n delTable: 'Slett tabell',\n },\n hr: {\n insert: 'Sett inn horisontal linje',\n },\n style: {\n style: 'Stil',\n p: 'Paragraf',\n blockquote: 'Sitat',\n pre: 'Kode',\n h1: 'Overskrift 1',\n h2: 'Overskrift 2',\n h3: 'Overskrift 3',\n h4: 'Overskrift 4',\n h5: 'Overskrift 5',\n h6: 'Overskrift 6',\n },\n lists: {\n unordered: 'Punktliste',\n ordered: 'Nummerert liste',\n },\n options: {\n help: 'Hjelp',\n fullscreen: 'Fullskjerm',\n codeview: 'HTML-visning',\n },\n paragraph: {\n paragraph: 'Avsnitt',\n outdent: 'Tilbakerykk',\n indent: 'Innrykk',\n left: 'Venstrejustert',\n center: 'Midtstilt',\n right: 'Høyrejustert',\n justify: 'Blokkjustert',\n },\n color: {\n recent: 'Nylig valgt farge',\n more: 'Flere farger',\n background: 'Bakgrunnsfarge',\n foreground: 'Skriftfarge',\n transparent: 'Gjennomsiktig',\n setTransparent: 'Sett gjennomsiktig',\n reset: 'Nullstill',\n resetToDefault: 'Nullstill til standard',\n },\n shortcut: {\n shortcuts: 'Hurtigtaster',\n close: 'Lukk',\n textFormatting: 'Tekstformatering',\n action: 'Handling',\n paragraphFormatting: 'Avsnittsformatering',\n documentStyle: 'Dokumentstil',\n },\n help: {\n 'insertParagraph': 'Sett inn avsnitt',\n 'undo': 'Angre siste handling',\n 'redo': 'Gjør om siste handling',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Angi en fet stil',\n 'italic': 'Angi en kursiv stil',\n 'underline': 'Sett en understreket stil',\n 'strikethrough': 'Sett en gjennomgående sti',\n 'removeFormat': 'Tøm formattering',\n 'justifyLeft': 'Angi venstrejustering',\n 'justifyCenter': 'Angi sentrert justering',\n 'justifyRight': 'Angi høyre justering',\n 'justifyFull': 'Angi full justering',\n 'insertUnorderedList': 'Bytt uordnet liste',\n 'insertOrderedList': 'Bytt sortert liste',\n 'outdent': 'Utrykk på valgt avsnitt',\n 'indent': 'Innrykk på valgt avsnitt',\n 'formatPara': 'Endre gjeldende blokkformat til et avsnitt (P-kode)',\n 'formatH1': 'Endre gjeldende blokkformat til H1',\n 'formatH2': 'Endre gjeldende blokkformat til H2',\n 'formatH3': 'Endre gjeldende blokkformat til H3',\n 'formatH4': 'Endre gjeldende blokkformat til H4',\n 'formatH5': 'Endre gjeldende blokkformat til H5',\n 'formatH6': 'Endre gjeldende blokkformat til H6',\n 'insertHorizontalRule': 'Sett inn horisontal deler',\n 'linkDialog.show': 'Vis koblingsdialog',\n },\n history: {\n undo: 'Angre',\n redo: 'Gjør om',\n },\n specialChar: {\n specialChar: 'SPESIELLE TEGN',\n select: 'Velg spesielle tegn',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.js b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.js new file mode 100644 index 0000000..6507a6e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'nl-NL': { + font: { + bold: 'Vet', + italic: 'Cursief', + underline: 'Onderstrepen', + clear: 'Stijl verwijderen', + height: 'Regelhoogte', + name: 'Lettertype', + strikethrough: 'Doorhalen', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Tekstgrootte' + }, + image: { + image: 'Afbeelding', + insert: 'Afbeelding invoegen', + resizeFull: 'Volledige breedte', + resizeHalf: 'Halve breedte', + resizeQuarter: 'Kwart breedte', + floatLeft: 'Links uitlijnen', + floatRight: 'Rechts uitlijnen', + floatNone: 'Geen uitlijning', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Sleep hier een afbeelding naar toe', + dropImage: 'Drop image or Text', + selectFromFiles: 'Selecteer een bestand', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL van de afbeelding', + remove: 'Verwijder afbeelding', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video link', + insert: 'Video invoegen', + url: 'URL van de video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)' + }, + link: { + link: 'Link', + insert: 'Link invoegen', + unlink: 'Link verwijderen', + edit: 'Wijzigen', + textToDisplay: 'Tekst van link', + url: 'Naar welke URL moet deze link verwijzen?', + openInNewWindow: 'Open in nieuw venster' + }, + table: { + table: 'Tabel', + addRowAbove: 'Rij hierboven invoegen', + addRowBelow: 'Rij hieronder invoegen', + addColLeft: 'Kolom links toevoegen', + addColRight: 'Kolom rechts toevoegen', + delRow: 'Verwijder rij', + delCol: 'Verwijder kolom', + delTable: 'Verwijder tabel' + }, + hr: { + insert: 'Horizontale lijn invoegen' + }, + style: { + style: 'Stijl', + p: 'Normaal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Kop 1', + h2: 'Kop 2', + h3: 'Kop 3', + h4: 'Kop 4', + h5: 'Kop 5', + h6: 'Kop 6' + }, + lists: { + unordered: 'Ongeordende lijst', + ordered: 'Geordende lijst' + }, + options: { + help: 'Help', + fullscreen: 'Volledig scherm', + codeview: 'Bekijk Code' + }, + paragraph: { + paragraph: 'Paragraaf', + outdent: 'Inspringen verkleinen', + indent: 'Inspringen vergroten', + left: 'Links uitlijnen', + center: 'Centreren', + right: 'Rechts uitlijnen', + justify: 'Uitvullen' + }, + color: { + recent: 'Recente kleur', + more: 'Meer kleuren', + background: 'Achtergrond kleur', + foreground: 'Tekst kleur', + transparent: 'Transparant', + setTransparent: 'Transparant', + reset: 'Standaard', + resetToDefault: 'Standaard kleur' + }, + shortcut: { + shortcuts: 'Toetsencombinaties', + close: 'sluiten', + textFormatting: 'Tekststijlen', + action: 'Acties', + paragraphFormatting: 'Paragraafstijlen', + documentStyle: 'Documentstijlen', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Alinea invoegen', + 'undo': 'Laatste handeling ongedaan maken', + 'redo': 'Laatste handeling opnieuw uitvoeren', + 'tab': 'Tab', + 'untab': 'Herstel tab', + 'bold': 'Stel stijl in als vet', + 'italic': 'Stel stijl in als cursief', + 'underline': 'Stel stijl in als onderstreept', + 'strikethrough': 'Stel stijl in als doorgestreept', + 'removeFormat': 'Verwijder stijl', + 'justifyLeft': 'Lijn links uit', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Lijn rechts uit', + 'justifyFull': 'Lijn uit op volledige breedte', + 'insertUnorderedList': 'Zet ongeordende lijstweergave aan', + 'insertOrderedList': 'Zet geordende lijstweergave aan', + 'outdent': 'Verwijder inspringing huidige alinea', + 'indent': 'Inspringen op huidige alinea', + 'formatPara': 'Wijzig formattering huidig blok in alinea(P tag)', + 'formatH1': 'Formatteer huidig blok als H1', + 'formatH2': 'Formatteer huidig blok als H2', + 'formatH3': 'Formatteer huidig blok als H3', + 'formatH4': 'Formatteer huidig blok als H4', + 'formatH5': 'Formatteer huidig blok als H5', + 'formatH6': 'Formatteer huidig blok als H6', + 'insertHorizontalRule': 'Invoegen horizontale lijn', + 'linkDialog.show': 'Toon Link Dialoogvenster' + }, + history: { + undo: 'Ongedaan maken', + redo: 'Opnieuw doorvoeren' + }, + specialChar: { + specialChar: 'SPECIALE TEKENS', + select: 'Selecteer Speciale Tekens' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-nl-NL.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.js.map new file mode 100644 index 0000000..5b151dd --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-nl-NL.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-nl-NL.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'nl-NL': {\n font: {\n bold: 'Vet',\n italic: 'Cursief',\n underline: 'Onderstrepen',\n clear: 'Stijl verwijderen',\n height: 'Regelhoogte',\n name: 'Lettertype',\n strikethrough: 'Doorhalen',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Tekstgrootte',\n },\n image: {\n image: 'Afbeelding',\n insert: 'Afbeelding invoegen',\n resizeFull: 'Volledige breedte',\n resizeHalf: 'Halve breedte',\n resizeQuarter: 'Kwart breedte',\n floatLeft: 'Links uitlijnen',\n floatRight: 'Rechts uitlijnen',\n floatNone: 'Geen uitlijning',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Sleep hier een afbeelding naar toe',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Selecteer een bestand',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL van de afbeelding',\n remove: 'Verwijder afbeelding',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video link',\n insert: 'Video invoegen',\n url: 'URL van de video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link invoegen',\n unlink: 'Link verwijderen',\n edit: 'Wijzigen',\n textToDisplay: 'Tekst van link',\n url: 'Naar welke URL moet deze link verwijzen?',\n openInNewWindow: 'Open in nieuw venster',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Rij hierboven invoegen',\n addRowBelow: 'Rij hieronder invoegen',\n addColLeft: 'Kolom links toevoegen',\n addColRight: 'Kolom rechts toevoegen',\n delRow: 'Verwijder rij',\n delCol: 'Verwijder kolom',\n delTable: 'Verwijder tabel',\n },\n hr: {\n insert: 'Horizontale lijn invoegen',\n },\n style: {\n style: 'Stijl',\n p: 'Normaal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Kop 1',\n h2: 'Kop 2',\n h3: 'Kop 3',\n h4: 'Kop 4',\n h5: 'Kop 5',\n h6: 'Kop 6',\n },\n lists: {\n unordered: 'Ongeordende lijst',\n ordered: 'Geordende lijst',\n },\n options: {\n help: 'Help',\n fullscreen: 'Volledig scherm',\n codeview: 'Bekijk Code',\n },\n paragraph: {\n paragraph: 'Paragraaf',\n outdent: 'Inspringen verkleinen',\n indent: 'Inspringen vergroten',\n left: 'Links uitlijnen',\n center: 'Centreren',\n right: 'Rechts uitlijnen',\n justify: 'Uitvullen',\n },\n color: {\n recent: 'Recente kleur',\n more: 'Meer kleuren',\n background: 'Achtergrond kleur',\n foreground: 'Tekst kleur',\n transparent: 'Transparant',\n setTransparent: 'Transparant',\n reset: 'Standaard',\n resetToDefault: 'Standaard kleur',\n },\n shortcut: {\n shortcuts: 'Toetsencombinaties',\n close: 'sluiten',\n textFormatting: 'Tekststijlen',\n action: 'Acties',\n paragraphFormatting: 'Paragraafstijlen',\n documentStyle: 'Documentstijlen',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Alinea invoegen',\n 'undo': 'Laatste handeling ongedaan maken',\n 'redo': 'Laatste handeling opnieuw uitvoeren',\n 'tab': 'Tab',\n 'untab': 'Herstel tab',\n 'bold': 'Stel stijl in als vet',\n 'italic': 'Stel stijl in als cursief',\n 'underline': 'Stel stijl in als onderstreept',\n 'strikethrough': 'Stel stijl in als doorgestreept',\n 'removeFormat': 'Verwijder stijl',\n 'justifyLeft': 'Lijn links uit',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Lijn rechts uit',\n 'justifyFull': 'Lijn uit op volledige breedte',\n 'insertUnorderedList': 'Zet ongeordende lijstweergave aan',\n 'insertOrderedList': 'Zet geordende lijstweergave aan',\n 'outdent': 'Verwijder inspringing huidige alinea',\n 'indent': 'Inspringen op huidige alinea',\n 'formatPara': 'Wijzig formattering huidig blok in alinea(P tag)',\n 'formatH1': 'Formatteer huidig blok als H1',\n 'formatH2': 'Formatteer huidig blok als H2',\n 'formatH3': 'Formatteer huidig blok als H3',\n 'formatH4': 'Formatteer huidig blok als H4',\n 'formatH5': 'Formatteer huidig blok als H5',\n 'formatH6': 'Formatteer huidig blok als H6',\n 'insertHorizontalRule': 'Invoegen horizontale lijn',\n 'linkDialog.show': 'Toon Link Dialoogvenster',\n },\n history: {\n undo: 'Ongedaan maken',\n redo: 'Opnieuw doorvoeren',\n },\n specialChar: {\n specialChar: 'SPECIALE TEKENS',\n select: 'Selecteer Speciale Tekens',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.min.js new file mode 100644 index 0000000..3813380 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var n=i();for(var t in n)("object"==typeof exports?exports:e)[t]=n[t]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"nl-NL":{font:{bold:"Vet",italic:"Cursief",underline:"Onderstrepen",clear:"Stijl verwijderen",height:"Regelhoogte",name:"Lettertype",strikethrough:"Doorhalen",subscript:"Subscript",superscript:"Superscript",size:"Tekstgrootte"},image:{image:"Afbeelding",insert:"Afbeelding invoegen",resizeFull:"Volledige breedte",resizeHalf:"Halve breedte",resizeQuarter:"Kwart breedte",floatLeft:"Links uitlijnen",floatRight:"Rechts uitlijnen",floatNone:"Geen uitlijning",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Sleep hier een afbeelding naar toe",dropImage:"Drop image or Text",selectFromFiles:"Selecteer een bestand",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL van de afbeelding",remove:"Verwijder afbeelding",original:"Original"},video:{video:"Video",videoLink:"Video link",insert:"Video invoegen",url:"URL van de video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)"},link:{link:"Link",insert:"Link invoegen",unlink:"Link verwijderen",edit:"Wijzigen",textToDisplay:"Tekst van link",url:"Naar welke URL moet deze link verwijzen?",openInNewWindow:"Open in nieuw venster"},table:{table:"Tabel",addRowAbove:"Rij hierboven invoegen",addRowBelow:"Rij hieronder invoegen",addColLeft:"Kolom links toevoegen",addColRight:"Kolom rechts toevoegen",delRow:"Verwijder rij",delCol:"Verwijder kolom",delTable:"Verwijder tabel"},hr:{insert:"Horizontale lijn invoegen"},style:{style:"Stijl",p:"Normaal",blockquote:"Quote",pre:"Code",h1:"Kop 1",h2:"Kop 2",h3:"Kop 3",h4:"Kop 4",h5:"Kop 5",h6:"Kop 6"},lists:{unordered:"Ongeordende lijst",ordered:"Geordende lijst"},options:{help:"Help",fullscreen:"Volledig scherm",codeview:"Bekijk Code"},paragraph:{paragraph:"Paragraaf",outdent:"Inspringen verkleinen",indent:"Inspringen vergroten",left:"Links uitlijnen",center:"Centreren",right:"Rechts uitlijnen",justify:"Uitvullen"},color:{recent:"Recente kleur",more:"Meer kleuren",background:"Achtergrond kleur",foreground:"Tekst kleur",transparent:"Transparant",setTransparent:"Transparant",reset:"Standaard",resetToDefault:"Standaard kleur"},shortcut:{shortcuts:"Toetsencombinaties",close:"sluiten",textFormatting:"Tekststijlen",action:"Acties",paragraphFormatting:"Paragraafstijlen",documentStyle:"Documentstijlen",extraKeys:"Extra keys"},help:{insertParagraph:"Alinea invoegen",undo:"Laatste handeling ongedaan maken",redo:"Laatste handeling opnieuw uitvoeren",tab:"Tab",untab:"Herstel tab",bold:"Stel stijl in als vet",italic:"Stel stijl in als cursief",underline:"Stel stijl in als onderstreept",strikethrough:"Stel stijl in als doorgestreept",removeFormat:"Verwijder stijl",justifyLeft:"Lijn links uit",justifyCenter:"Set center align",justifyRight:"Lijn rechts uit",justifyFull:"Lijn uit op volledige breedte",insertUnorderedList:"Zet ongeordende lijstweergave aan",insertOrderedList:"Zet geordende lijstweergave aan",outdent:"Verwijder inspringing huidige alinea",indent:"Inspringen op huidige alinea",formatPara:"Wijzig formattering huidig blok in alinea(P tag)",formatH1:"Formatteer huidig blok als H1",formatH2:"Formatteer huidig blok als H2",formatH3:"Formatteer huidig blok als H3",formatH4:"Formatteer huidig blok als H4",formatH5:"Formatteer huidig blok als H5",formatH6:"Formatteer huidig blok als H6",insertHorizontalRule:"Invoegen horizontale lijn","linkDialog.show":"Toon Link Dialoogvenster"},history:{undo:"Ongedaan maken",redo:"Opnieuw doorvoeren"},specialChar:{specialChar:"SPECIALE TEKENS",select:"Selecteer Speciale Tekens"}}}),{};var e})); +//# sourceMappingURL=summernote-nl-NL.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.min.js.map new file mode 100644 index 0000000..2062e0e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-nl-NL.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-nl-NL.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,MACNC,OAAQ,UACRC,UAAW,eACXC,MAAO,oBACPC,OAAQ,cACRC,KAAM,aACNC,cAAe,YACfC,UAAW,YACXC,YAAa,cACbC,KAAM,gBAERC,MAAO,CACLA,MAAO,aACPC,OAAQ,sBACRC,WAAY,oBACZC,WAAY,gBACZC,cAAe,gBACfC,UAAW,kBACXC,WAAY,mBACZC,UAAW,kBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,qCACfC,UAAW,qBACXC,gBAAiB,wBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,wBACLC,OAAQ,uBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,iBACRgB,IAAK,mBACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,gBACRuB,OAAQ,mBACRC,KAAM,WACNC,cAAe,iBACfT,IAAK,2CACLU,gBAAiB,yBAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,yBACbC,YAAa,yBACbC,WAAY,wBACZC,YAAa,yBACbC,OAAQ,gBACRC,OAAQ,kBACRC,SAAU,mBAEZC,GAAI,CACFnC,OAAQ,6BAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,UACHC,WAAY,QACZC,IAAK,OACLC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SAENC,MAAO,CACLC,UAAW,oBACXC,QAAS,mBAEXC,QAAS,CACPC,KAAM,OACNC,WAAY,kBACZC,SAAU,eAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,wBACTC,OAAQ,uBACRC,KAAM,kBACNC,OAAQ,YACRC,MAAO,mBACPC,QAAS,aAEXC,MAAO,CACLC,OAAQ,gBACRC,KAAM,eACNC,WAAY,oBACZC,WAAY,cACZC,YAAa,cACbC,eAAgB,cAChBC,MAAO,YACPC,eAAgB,mBAElBC,SAAU,CACRC,UAAW,qBACXC,MAAO,UACPC,eAAgB,eAChBC,OAAQ,SACRC,oBAAqB,mBACrBC,cAAe,kBACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,kBACnB,KAAQ,mCACR,KAAQ,sCACR,IAAO,MACP,MAAS,cACT,KAAQ,wBACR,OAAU,4BACV,UAAa,iCACb,cAAiB,kCACjB,aAAgB,kBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,gCACf,oBAAuB,oCACvB,kBAAqB,kCACrB,QAAW,uCACX,OAAU,+BACV,WAAc,mDACd,SAAY,gCACZ,SAAY,gCACZ,SAAY,gCACZ,SAAY,gCACZ,SAAY,gCACZ,SAAY,gCACZ,qBAAwB,4BACxB,kBAAmB,4BAErB2B,QAAS,CACPC,KAAM,iBACNC,KAAM,sBAERC,YAAa,CACXA,YAAa,kBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-nl-NL.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'nl-NL': {\n font: {\n bold: 'Vet',\n italic: 'Cursief',\n underline: 'Onderstrepen',\n clear: 'Stijl verwijderen',\n height: 'Regelhoogte',\n name: 'Lettertype',\n strikethrough: 'Doorhalen',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Tekstgrootte',\n },\n image: {\n image: 'Afbeelding',\n insert: 'Afbeelding invoegen',\n resizeFull: 'Volledige breedte',\n resizeHalf: 'Halve breedte',\n resizeQuarter: 'Kwart breedte',\n floatLeft: 'Links uitlijnen',\n floatRight: 'Rechts uitlijnen',\n floatNone: 'Geen uitlijning',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Sleep hier een afbeelding naar toe',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Selecteer een bestand',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL van de afbeelding',\n remove: 'Verwijder afbeelding',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video link',\n insert: 'Video invoegen',\n url: 'URL van de video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Link invoegen',\n unlink: 'Link verwijderen',\n edit: 'Wijzigen',\n textToDisplay: 'Tekst van link',\n url: 'Naar welke URL moet deze link verwijzen?',\n openInNewWindow: 'Open in nieuw venster',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Rij hierboven invoegen',\n addRowBelow: 'Rij hieronder invoegen',\n addColLeft: 'Kolom links toevoegen',\n addColRight: 'Kolom rechts toevoegen',\n delRow: 'Verwijder rij',\n delCol: 'Verwijder kolom',\n delTable: 'Verwijder tabel',\n },\n hr: {\n insert: 'Horizontale lijn invoegen',\n },\n style: {\n style: 'Stijl',\n p: 'Normaal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Kop 1',\n h2: 'Kop 2',\n h3: 'Kop 3',\n h4: 'Kop 4',\n h5: 'Kop 5',\n h6: 'Kop 6',\n },\n lists: {\n unordered: 'Ongeordende lijst',\n ordered: 'Geordende lijst',\n },\n options: {\n help: 'Help',\n fullscreen: 'Volledig scherm',\n codeview: 'Bekijk Code',\n },\n paragraph: {\n paragraph: 'Paragraaf',\n outdent: 'Inspringen verkleinen',\n indent: 'Inspringen vergroten',\n left: 'Links uitlijnen',\n center: 'Centreren',\n right: 'Rechts uitlijnen',\n justify: 'Uitvullen',\n },\n color: {\n recent: 'Recente kleur',\n more: 'Meer kleuren',\n background: 'Achtergrond kleur',\n foreground: 'Tekst kleur',\n transparent: 'Transparant',\n setTransparent: 'Transparant',\n reset: 'Standaard',\n resetToDefault: 'Standaard kleur',\n },\n shortcut: {\n shortcuts: 'Toetsencombinaties',\n close: 'sluiten',\n textFormatting: 'Tekststijlen',\n action: 'Acties',\n paragraphFormatting: 'Paragraafstijlen',\n documentStyle: 'Documentstijlen',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Alinea invoegen',\n 'undo': 'Laatste handeling ongedaan maken',\n 'redo': 'Laatste handeling opnieuw uitvoeren',\n 'tab': 'Tab',\n 'untab': 'Herstel tab',\n 'bold': 'Stel stijl in als vet',\n 'italic': 'Stel stijl in als cursief',\n 'underline': 'Stel stijl in als onderstreept',\n 'strikethrough': 'Stel stijl in als doorgestreept',\n 'removeFormat': 'Verwijder stijl',\n 'justifyLeft': 'Lijn links uit',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Lijn rechts uit',\n 'justifyFull': 'Lijn uit op volledige breedte',\n 'insertUnorderedList': 'Zet ongeordende lijstweergave aan',\n 'insertOrderedList': 'Zet geordende lijstweergave aan',\n 'outdent': 'Verwijder inspringing huidige alinea',\n 'indent': 'Inspringen op huidige alinea',\n 'formatPara': 'Wijzig formattering huidig blok in alinea(P tag)',\n 'formatH1': 'Formatteer huidig blok als H1',\n 'formatH2': 'Formatteer huidig blok als H2',\n 'formatH3': 'Formatteer huidig blok als H3',\n 'formatH4': 'Formatteer huidig blok als H4',\n 'formatH5': 'Formatteer huidig blok als H5',\n 'formatH6': 'Formatteer huidig blok als H6',\n 'insertHorizontalRule': 'Invoegen horizontale lijn',\n 'linkDialog.show': 'Toon Link Dialoogvenster',\n },\n history: {\n undo: 'Ongedaan maken',\n redo: 'Opnieuw doorvoeren',\n },\n specialChar: {\n specialChar: 'SPECIALE TEKENS',\n select: 'Selecteer Speciale Tekens',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.js b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.js new file mode 100644 index 0000000..5a494d5 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'pl-PL': { + font: { + bold: 'Pogrubienie', + italic: 'Pochylenie', + underline: 'Podkreślenie', + clear: 'Usuń formatowanie', + height: 'Interlinia', + name: 'Czcionka', + strikethrough: 'Przekreślenie', + subscript: 'Indeks dolny', + superscript: 'Indeks górny', + size: 'Rozmiar' + }, + image: { + image: 'Grafika', + insert: 'Wstaw grafikę', + resizeFull: 'Zmień rozmiar na 100%', + resizeHalf: 'Zmień rozmiar na 50%', + resizeQuarter: 'Zmień rozmiar na 25%', + floatLeft: 'Po lewej', + floatRight: 'Po prawej', + floatNone: 'Równo z tekstem', + shapeRounded: 'Kształt: zaokrąglone', + shapeCircle: 'Kształt: okrąg', + shapeThumbnail: 'Kształt: miniatura', + shapeNone: 'Kształt: brak', + dragImageHere: 'Przeciągnij grafikę lub tekst tutaj', + dropImage: 'Przeciągnij grafikę lub tekst', + selectFromFiles: 'Wybierz z dysku', + maximumFileSize: 'Limit wielkości pliku', + maximumFileSizeError: 'Przekroczono limit wielkości pliku.', + url: 'Adres URL grafiki', + remove: 'Usuń grafikę', + original: 'Oryginał' + }, + video: { + video: 'Wideo', + videoLink: 'Adres wideo', + insert: 'Wstaw wideo', + url: 'Adres wideo', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)' + }, + link: { + link: 'Odnośnik', + insert: 'Wstaw odnośnik', + unlink: 'Usuń odnośnik', + edit: 'Edytuj', + textToDisplay: 'Tekst do wyświetlenia', + url: 'Na jaki adres URL powinien przenosić ten odnośnik?', + openInNewWindow: 'Otwórz w nowym oknie' + }, + table: { + table: 'Tabela', + addRowAbove: 'Dodaj wiersz powyżej', + addRowBelow: 'Dodaj wiersz poniżej', + addColLeft: 'Dodaj kolumnę po lewej', + addColRight: 'Dodaj kolumnę po prawej', + delRow: 'Usuń wiersz', + delCol: 'Usuń kolumnę', + delTable: 'Usuń tabelę' + }, + hr: { + insert: 'Wstaw poziomą linię' + }, + style: { + style: 'Styl', + p: 'pny', + blockquote: 'Cytat', + pre: 'Kod', + h1: 'Nagłówek 1', + h2: 'Nagłówek 2', + h3: 'Nagłówek 3', + h4: 'Nagłówek 4', + h5: 'Nagłówek 5', + h6: 'Nagłówek 6' + }, + lists: { + unordered: 'Lista wypunktowana', + ordered: 'Lista numerowana' + }, + options: { + help: 'Pomoc', + fullscreen: 'Pełny ekran', + codeview: 'Źródło' + }, + paragraph: { + paragraph: 'Akapit', + outdent: 'Zmniejsz wcięcie', + indent: 'Zwiększ wcięcie', + left: 'Wyrównaj do lewej', + center: 'Wyrównaj do środka', + right: 'Wyrównaj do prawej', + justify: 'Wyrównaj do lewej i prawej' + }, + color: { + recent: 'Ostani kolor', + more: 'Więcej kolorów', + background: 'Tło', + foreground: 'Czcionka', + transparent: 'Przeźroczysty', + setTransparent: 'Przeźroczyste', + reset: 'Zresetuj', + resetToDefault: 'Domyślne' + }, + shortcut: { + shortcuts: 'Skróty klawiaturowe', + close: 'Zamknij', + textFormatting: 'Formatowanie tekstu', + action: 'Akcja', + paragraphFormatting: 'Formatowanie akapitu', + documentStyle: 'Styl dokumentu', + extraKeys: 'Dodatkowe klawisze' + }, + help: { + 'insertParagraph': 'Wstaw paragraf', + 'undo': 'Cofnij poprzednią operację', + 'redo': 'Przywróć poprzednią operację', + 'tab': 'Tabulacja', + 'untab': 'Usuń tabulację', + 'bold': 'Pogrubienie', + 'italic': 'Kursywa', + 'underline': 'Podkreślenie', + 'strikethrough': 'Przekreślenie', + 'removeFormat': 'Usuń formatowanie', + 'justifyLeft': 'Wyrównaj do lewej', + 'justifyCenter': 'Wyrównaj do środka', + 'justifyRight': 'Wyrównaj do prawej', + 'justifyFull': 'Justyfikacja', + 'insertUnorderedList': 'Nienumerowana lista', + 'insertOrderedList': 'Wypunktowana lista', + 'outdent': 'Zmniejsz wcięcie paragrafu', + 'indent': 'Zwiększ wcięcie paragrafu', + 'formatPara': 'Zamień format bloku na paragraf (tag P)', + 'formatH1': 'Zamień format bloku na H1', + 'formatH2': 'Zamień format bloku na H2', + 'formatH3': 'Zamień format bloku na H3', + 'formatH4': 'Zamień format bloku na H4', + 'formatH5': 'Zamień format bloku na H5', + 'formatH6': 'Zamień format bloku na H6', + 'insertHorizontalRule': 'Wstaw poziomą linię', + 'linkDialog.show': 'Pokaż dialog linkowania' + }, + history: { + undo: 'Cofnij', + redo: 'Ponów' + }, + specialChar: { + specialChar: 'ZNAKI SPECJALNE', + select: 'Wybierz Znak specjalny' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-pl-PL.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.js.map new file mode 100644 index 0000000..8f4ff71 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-pl-PL.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-pl-PL.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'pl-PL': {\n font: {\n bold: 'Pogrubienie',\n italic: 'Pochylenie',\n underline: 'Podkreślenie',\n clear: 'Usuń formatowanie',\n height: 'Interlinia',\n name: 'Czcionka',\n strikethrough: 'Przekreślenie',\n subscript: 'Indeks dolny',\n superscript: 'Indeks górny',\n size: 'Rozmiar',\n },\n image: {\n image: 'Grafika',\n insert: 'Wstaw grafikę',\n resizeFull: 'Zmień rozmiar na 100%',\n resizeHalf: 'Zmień rozmiar na 50%',\n resizeQuarter: 'Zmień rozmiar na 25%',\n floatLeft: 'Po lewej',\n floatRight: 'Po prawej',\n floatNone: 'Równo z tekstem',\n shapeRounded: 'Kształt: zaokrąglone',\n shapeCircle: 'Kształt: okrąg',\n shapeThumbnail: 'Kształt: miniatura',\n shapeNone: 'Kształt: brak',\n dragImageHere: 'Przeciągnij grafikę lub tekst tutaj',\n dropImage: 'Przeciągnij grafikę lub tekst',\n selectFromFiles: 'Wybierz z dysku',\n maximumFileSize: 'Limit wielkości pliku',\n maximumFileSizeError: 'Przekroczono limit wielkości pliku.',\n url: 'Adres URL grafiki',\n remove: 'Usuń grafikę',\n original: 'Oryginał',\n },\n video: {\n video: 'Wideo',\n videoLink: 'Adres wideo',\n insert: 'Wstaw wideo',\n url: 'Adres wideo',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)',\n },\n link: {\n link: 'Odnośnik',\n insert: 'Wstaw odnośnik',\n unlink: 'Usuń odnośnik',\n edit: 'Edytuj',\n textToDisplay: 'Tekst do wyświetlenia',\n url: 'Na jaki adres URL powinien przenosić ten odnośnik?',\n openInNewWindow: 'Otwórz w nowym oknie',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Dodaj wiersz powyżej',\n addRowBelow: 'Dodaj wiersz poniżej',\n addColLeft: 'Dodaj kolumnę po lewej',\n addColRight: 'Dodaj kolumnę po prawej',\n delRow: 'Usuń wiersz',\n delCol: 'Usuń kolumnę',\n delTable: 'Usuń tabelę',\n },\n hr: {\n insert: 'Wstaw poziomą linię',\n },\n style: {\n style: 'Styl',\n p: 'pny',\n blockquote: 'Cytat',\n pre: 'Kod',\n h1: 'Nagłówek 1',\n h2: 'Nagłówek 2',\n h3: 'Nagłówek 3',\n h4: 'Nagłówek 4',\n h5: 'Nagłówek 5',\n h6: 'Nagłówek 6',\n },\n lists: {\n unordered: 'Lista wypunktowana',\n ordered: 'Lista numerowana',\n },\n options: {\n help: 'Pomoc',\n fullscreen: 'Pełny ekran',\n codeview: 'Źródło',\n },\n paragraph: {\n paragraph: 'Akapit',\n outdent: 'Zmniejsz wcięcie',\n indent: 'Zwiększ wcięcie',\n left: 'Wyrównaj do lewej',\n center: 'Wyrównaj do środka',\n right: 'Wyrównaj do prawej',\n justify: 'Wyrównaj do lewej i prawej',\n },\n color: {\n recent: 'Ostani kolor',\n more: 'Więcej kolorów',\n background: 'Tło',\n foreground: 'Czcionka',\n transparent: 'Przeźroczysty',\n setTransparent: 'Przeźroczyste',\n reset: 'Zresetuj',\n resetToDefault: 'Domyślne',\n },\n shortcut: {\n shortcuts: 'Skróty klawiaturowe',\n close: 'Zamknij',\n textFormatting: 'Formatowanie tekstu',\n action: 'Akcja',\n paragraphFormatting: 'Formatowanie akapitu',\n documentStyle: 'Styl dokumentu',\n extraKeys: 'Dodatkowe klawisze',\n },\n help: {\n 'insertParagraph': 'Wstaw paragraf',\n 'undo': 'Cofnij poprzednią operację',\n 'redo': 'Przywróć poprzednią operację',\n 'tab': 'Tabulacja',\n 'untab': 'Usuń tabulację',\n 'bold': 'Pogrubienie',\n 'italic': 'Kursywa',\n 'underline': 'Podkreślenie',\n 'strikethrough': 'Przekreślenie',\n 'removeFormat': 'Usuń formatowanie',\n 'justifyLeft': 'Wyrównaj do lewej',\n 'justifyCenter': 'Wyrównaj do środka',\n 'justifyRight': 'Wyrównaj do prawej',\n 'justifyFull': 'Justyfikacja',\n 'insertUnorderedList': 'Nienumerowana lista',\n 'insertOrderedList': 'Wypunktowana lista',\n 'outdent': 'Zmniejsz wcięcie paragrafu',\n 'indent': 'Zwiększ wcięcie paragrafu',\n 'formatPara': 'Zamień format bloku na paragraf (tag P)',\n 'formatH1': 'Zamień format bloku na H1',\n 'formatH2': 'Zamień format bloku na H2',\n 'formatH3': 'Zamień format bloku na H3',\n 'formatH4': 'Zamień format bloku na H4',\n 'formatH5': 'Zamień format bloku na H5',\n 'formatH6': 'Zamień format bloku na H6',\n 'insertHorizontalRule': 'Wstaw poziomą linię',\n 'linkDialog.show': 'Pokaż dialog linkowania',\n },\n history: {\n undo: 'Cofnij',\n redo: 'Ponów',\n },\n specialChar: {\n specialChar: 'ZNAKI SPECJALNE',\n select: 'Wybierz Znak specjalny',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.min.js new file mode 100644 index 0000000..c64e644 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var o=a();for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"pl-PL":{font:{bold:"Pogrubienie",italic:"Pochylenie",underline:"Podkreślenie",clear:"Usuń formatowanie",height:"Interlinia",name:"Czcionka",strikethrough:"Przekreślenie",subscript:"Indeks dolny",superscript:"Indeks górny",size:"Rozmiar"},image:{image:"Grafika",insert:"Wstaw grafikę",resizeFull:"Zmień rozmiar na 100%",resizeHalf:"Zmień rozmiar na 50%",resizeQuarter:"Zmień rozmiar na 25%",floatLeft:"Po lewej",floatRight:"Po prawej",floatNone:"Równo z tekstem",shapeRounded:"Kształt: zaokrąglone",shapeCircle:"Kształt: okrąg",shapeThumbnail:"Kształt: miniatura",shapeNone:"Kształt: brak",dragImageHere:"Przeciągnij grafikę lub tekst tutaj",dropImage:"Przeciągnij grafikę lub tekst",selectFromFiles:"Wybierz z dysku",maximumFileSize:"Limit wielkości pliku",maximumFileSizeError:"Przekroczono limit wielkości pliku.",url:"Adres URL grafiki",remove:"Usuń grafikę",original:"Oryginał"},video:{video:"Wideo",videoLink:"Adres wideo",insert:"Wstaw wideo",url:"Adres wideo",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)"},link:{link:"Odnośnik",insert:"Wstaw odnośnik",unlink:"Usuń odnośnik",edit:"Edytuj",textToDisplay:"Tekst do wyświetlenia",url:"Na jaki adres URL powinien przenosić ten odnośnik?",openInNewWindow:"Otwórz w nowym oknie"},table:{table:"Tabela",addRowAbove:"Dodaj wiersz powyżej",addRowBelow:"Dodaj wiersz poniżej",addColLeft:"Dodaj kolumnę po lewej",addColRight:"Dodaj kolumnę po prawej",delRow:"Usuń wiersz",delCol:"Usuń kolumnę",delTable:"Usuń tabelę"},hr:{insert:"Wstaw poziomą linię"},style:{style:"Styl",p:"pny",blockquote:"Cytat",pre:"Kod",h1:"Nagłówek 1",h2:"Nagłówek 2",h3:"Nagłówek 3",h4:"Nagłówek 4",h5:"Nagłówek 5",h6:"Nagłówek 6"},lists:{unordered:"Lista wypunktowana",ordered:"Lista numerowana"},options:{help:"Pomoc",fullscreen:"Pełny ekran",codeview:"Źródło"},paragraph:{paragraph:"Akapit",outdent:"Zmniejsz wcięcie",indent:"Zwiększ wcięcie",left:"Wyrównaj do lewej",center:"Wyrównaj do środka",right:"Wyrównaj do prawej",justify:"Wyrównaj do lewej i prawej"},color:{recent:"Ostani kolor",more:"Więcej kolorów",background:"Tło",foreground:"Czcionka",transparent:"Przeźroczysty",setTransparent:"Przeźroczyste",reset:"Zresetuj",resetToDefault:"Domyślne"},shortcut:{shortcuts:"Skróty klawiaturowe",close:"Zamknij",textFormatting:"Formatowanie tekstu",action:"Akcja",paragraphFormatting:"Formatowanie akapitu",documentStyle:"Styl dokumentu",extraKeys:"Dodatkowe klawisze"},help:{insertParagraph:"Wstaw paragraf",undo:"Cofnij poprzednią operację",redo:"Przywróć poprzednią operację",tab:"Tabulacja",untab:"Usuń tabulację",bold:"Pogrubienie",italic:"Kursywa",underline:"Podkreślenie",strikethrough:"Przekreślenie",removeFormat:"Usuń formatowanie",justifyLeft:"Wyrównaj do lewej",justifyCenter:"Wyrównaj do środka",justifyRight:"Wyrównaj do prawej",justifyFull:"Justyfikacja",insertUnorderedList:"Nienumerowana lista",insertOrderedList:"Wypunktowana lista",outdent:"Zmniejsz wcięcie paragrafu",indent:"Zwiększ wcięcie paragrafu",formatPara:"Zamień format bloku na paragraf (tag P)",formatH1:"Zamień format bloku na H1",formatH2:"Zamień format bloku na H2",formatH3:"Zamień format bloku na H3",formatH4:"Zamień format bloku na H4",formatH5:"Zamień format bloku na H5",formatH6:"Zamień format bloku na H6",insertHorizontalRule:"Wstaw poziomą linię","linkDialog.show":"Pokaż dialog linkowania"},history:{undo:"Cofnij",redo:"Ponów"},specialChar:{specialChar:"ZNAKI SPECJALNE",select:"Wybierz Znak specjalny"}}}),{};var e})); +//# sourceMappingURL=summernote-pl-PL.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.min.js.map new file mode 100644 index 0000000..0bea433 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pl-PL.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-pl-PL.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,cACNC,OAAQ,aACRC,UAAW,eACXC,MAAO,oBACPC,OAAQ,aACRC,KAAM,WACNC,cAAe,gBACfC,UAAW,eACXC,YAAa,eACbC,KAAM,WAERC,MAAO,CACLA,MAAO,UACPC,OAAQ,gBACRC,WAAY,wBACZC,WAAY,uBACZC,cAAe,uBACfC,UAAW,WACXC,WAAY,YACZC,UAAW,kBACXC,aAAc,uBACdC,YAAa,iBACbC,eAAgB,qBAChBC,UAAW,gBACXC,cAAe,sCACfC,UAAW,gCACXC,gBAAiB,kBACjBC,gBAAiB,wBACjBC,qBAAsB,sCACtBC,IAAK,oBACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,cACXpB,OAAQ,cACRgB,IAAK,cACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,WACNtB,OAAQ,iBACRuB,OAAQ,gBACRC,KAAM,SACNC,cAAe,wBACfT,IAAK,qDACLU,gBAAiB,wBAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,uBACbC,YAAa,uBACbC,WAAY,yBACZC,YAAa,0BACbC,OAAQ,cACRC,OAAQ,eACRC,SAAU,eAEZC,GAAI,CACFnC,OAAQ,uBAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,MACHC,WAAY,QACZC,IAAK,MACLC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,cAENC,MAAO,CACLC,UAAW,qBACXC,QAAS,oBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,cACZC,SAAU,UAEZC,UAAW,CACTA,UAAW,SACXC,QAAS,mBACTC,OAAQ,kBACRC,KAAM,oBACNC,OAAQ,qBACRC,MAAO,qBACPC,QAAS,8BAEXC,MAAO,CACLC,OAAQ,eACRC,KAAM,iBACNC,WAAY,MACZC,WAAY,WACZC,YAAa,gBACbC,eAAgB,gBAChBC,MAAO,WACPC,eAAgB,YAElBC,SAAU,CACRC,UAAW,sBACXC,MAAO,UACPC,eAAgB,sBAChBC,OAAQ,QACRC,oBAAqB,uBACrBC,cAAe,iBACfC,UAAW,sBAEb1B,KAAM,CACJ,gBAAmB,iBACnB,KAAQ,6BACR,KAAQ,+BACR,IAAO,YACP,MAAS,iBACT,KAAQ,cACR,OAAU,UACV,UAAa,eACb,cAAiB,gBACjB,aAAgB,oBAChB,YAAe,oBACf,cAAiB,qBACjB,aAAgB,qBAChB,YAAe,eACf,oBAAuB,sBACvB,kBAAqB,qBACrB,QAAW,6BACX,OAAU,4BACV,WAAc,0CACd,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,SAAY,4BACZ,qBAAwB,sBACxB,kBAAmB,2BAErB2B,QAAS,CACPC,KAAM,SACNC,KAAM,SAERC,YAAa,CACXA,YAAa,kBACbC,OAAQ,6B,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-pl-PL.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'pl-PL': {\n font: {\n bold: 'Pogrubienie',\n italic: 'Pochylenie',\n underline: 'Podkreślenie',\n clear: 'Usuń formatowanie',\n height: 'Interlinia',\n name: 'Czcionka',\n strikethrough: 'Przekreślenie',\n subscript: 'Indeks dolny',\n superscript: 'Indeks górny',\n size: 'Rozmiar',\n },\n image: {\n image: 'Grafika',\n insert: 'Wstaw grafikę',\n resizeFull: 'Zmień rozmiar na 100%',\n resizeHalf: 'Zmień rozmiar na 50%',\n resizeQuarter: 'Zmień rozmiar na 25%',\n floatLeft: 'Po lewej',\n floatRight: 'Po prawej',\n floatNone: 'Równo z tekstem',\n shapeRounded: 'Kształt: zaokrąglone',\n shapeCircle: 'Kształt: okrąg',\n shapeThumbnail: 'Kształt: miniatura',\n shapeNone: 'Kształt: brak',\n dragImageHere: 'Przeciągnij grafikę lub tekst tutaj',\n dropImage: 'Przeciągnij grafikę lub tekst',\n selectFromFiles: 'Wybierz z dysku',\n maximumFileSize: 'Limit wielkości pliku',\n maximumFileSizeError: 'Przekroczono limit wielkości pliku.',\n url: 'Adres URL grafiki',\n remove: 'Usuń grafikę',\n original: 'Oryginał',\n },\n video: {\n video: 'Wideo',\n videoLink: 'Adres wideo',\n insert: 'Wstaw wideo',\n url: 'Adres wideo',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)',\n },\n link: {\n link: 'Odnośnik',\n insert: 'Wstaw odnośnik',\n unlink: 'Usuń odnośnik',\n edit: 'Edytuj',\n textToDisplay: 'Tekst do wyświetlenia',\n url: 'Na jaki adres URL powinien przenosić ten odnośnik?',\n openInNewWindow: 'Otwórz w nowym oknie',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Dodaj wiersz powyżej',\n addRowBelow: 'Dodaj wiersz poniżej',\n addColLeft: 'Dodaj kolumnę po lewej',\n addColRight: 'Dodaj kolumnę po prawej',\n delRow: 'Usuń wiersz',\n delCol: 'Usuń kolumnę',\n delTable: 'Usuń tabelę',\n },\n hr: {\n insert: 'Wstaw poziomą linię',\n },\n style: {\n style: 'Styl',\n p: 'pny',\n blockquote: 'Cytat',\n pre: 'Kod',\n h1: 'Nagłówek 1',\n h2: 'Nagłówek 2',\n h3: 'Nagłówek 3',\n h4: 'Nagłówek 4',\n h5: 'Nagłówek 5',\n h6: 'Nagłówek 6',\n },\n lists: {\n unordered: 'Lista wypunktowana',\n ordered: 'Lista numerowana',\n },\n options: {\n help: 'Pomoc',\n fullscreen: 'Pełny ekran',\n codeview: 'Źródło',\n },\n paragraph: {\n paragraph: 'Akapit',\n outdent: 'Zmniejsz wcięcie',\n indent: 'Zwiększ wcięcie',\n left: 'Wyrównaj do lewej',\n center: 'Wyrównaj do środka',\n right: 'Wyrównaj do prawej',\n justify: 'Wyrównaj do lewej i prawej',\n },\n color: {\n recent: 'Ostani kolor',\n more: 'Więcej kolorów',\n background: 'Tło',\n foreground: 'Czcionka',\n transparent: 'Przeźroczysty',\n setTransparent: 'Przeźroczyste',\n reset: 'Zresetuj',\n resetToDefault: 'Domyślne',\n },\n shortcut: {\n shortcuts: 'Skróty klawiaturowe',\n close: 'Zamknij',\n textFormatting: 'Formatowanie tekstu',\n action: 'Akcja',\n paragraphFormatting: 'Formatowanie akapitu',\n documentStyle: 'Styl dokumentu',\n extraKeys: 'Dodatkowe klawisze',\n },\n help: {\n 'insertParagraph': 'Wstaw paragraf',\n 'undo': 'Cofnij poprzednią operację',\n 'redo': 'Przywróć poprzednią operację',\n 'tab': 'Tabulacja',\n 'untab': 'Usuń tabulację',\n 'bold': 'Pogrubienie',\n 'italic': 'Kursywa',\n 'underline': 'Podkreślenie',\n 'strikethrough': 'Przekreślenie',\n 'removeFormat': 'Usuń formatowanie',\n 'justifyLeft': 'Wyrównaj do lewej',\n 'justifyCenter': 'Wyrównaj do środka',\n 'justifyRight': 'Wyrównaj do prawej',\n 'justifyFull': 'Justyfikacja',\n 'insertUnorderedList': 'Nienumerowana lista',\n 'insertOrderedList': 'Wypunktowana lista',\n 'outdent': 'Zmniejsz wcięcie paragrafu',\n 'indent': 'Zwiększ wcięcie paragrafu',\n 'formatPara': 'Zamień format bloku na paragraf (tag P)',\n 'formatH1': 'Zamień format bloku na H1',\n 'formatH2': 'Zamień format bloku na H2',\n 'formatH3': 'Zamień format bloku na H3',\n 'formatH4': 'Zamień format bloku na H4',\n 'formatH5': 'Zamień format bloku na H5',\n 'formatH6': 'Zamień format bloku na H6',\n 'insertHorizontalRule': 'Wstaw poziomą linię',\n 'linkDialog.show': 'Pokaż dialog linkowania',\n },\n history: {\n undo: 'Cofnij',\n redo: 'Ponów',\n },\n specialChar: {\n specialChar: 'ZNAKI SPECJALNE',\n select: 'Wybierz Znak specjalny',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.js b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.js new file mode 100644 index 0000000..bec2b4f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'pt-BR': { + font: { + bold: 'Negrito', + italic: 'Itálico', + underline: 'Sublinhado', + clear: 'Remover estilo da fonte', + height: 'Altura da linha', + name: 'Fonte', + strikethrough: 'Riscado', + subscript: 'Subscrito', + superscript: 'Sobrescrito', + size: 'Tamanho da fonte' + }, + image: { + image: 'Imagem', + insert: 'Inserir imagem', + resizeFull: 'Redimensionar Completamente', + resizeHalf: 'Redimensionar pela Metade', + resizeQuarter: 'Redimensionar a um Quarto', + floatLeft: 'Flutuar para Esquerda', + floatRight: 'Flutuar para Direita', + floatNone: 'Não Flutuar', + shapeRounded: 'Forma: Arredondado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Miniatura', + shapeNone: 'Forma: Nenhum', + dragImageHere: 'Arraste Imagem ou Texto para cá', + dropImage: 'Solte Imagem ou Texto', + selectFromFiles: 'Selecione a partir dos arquivos', + maximumFileSize: 'Tamanho máximo do arquivo', + maximumFileSizeError: 'Tamanho máximo do arquivo excedido.', + url: 'URL da imagem', + remove: 'Remover Imagem', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Link para vídeo', + insert: 'Inserir vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Link', + insert: 'Inserir link', + unlink: 'Remover link', + edit: 'Editar', + textToDisplay: 'Texto para exibir', + url: 'Para qual URL este link leva?', + openInNewWindow: 'Abrir em uma nova janela' + }, + table: { + table: 'Tabela', + addRowAbove: 'Adicionar linha acima', + addRowBelow: 'Adicionar linha abaixo', + addColLeft: 'Adicionar coluna à esquerda', + addColRight: 'Adicionar coluna à direita', + delRow: 'Excluir linha', + delCol: 'Excluir coluna', + delTable: 'Excluir tabela' + }, + hr: { + insert: 'Linha horizontal' + }, + style: { + style: 'Estilo', + p: 'Normal', + blockquote: 'Citação', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista com marcadores', + ordered: 'Lista numerada' + }, + options: { + help: 'Ajuda', + fullscreen: 'Tela cheia', + codeview: 'Ver código-fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menor tabulação', + indent: 'Maior tabulação', + left: 'Alinhar à esquerda', + center: 'Alinhar ao centro', + right: 'Alinha à direita', + justify: 'Justificado' + }, + color: { + recent: 'Cor recente', + more: 'Mais cores', + background: 'Fundo', + foreground: 'Fonte', + transparent: 'Transparente', + setTransparent: 'Fundo transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar padrão', + cpSelect: 'Selecionar' + }, + shortcut: { + shortcuts: 'Atalhos do teclado', + close: 'Fechar', + textFormatting: 'Formatação de texto', + action: 'Ação', + paragraphFormatting: 'Formatação de parágrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Inserir Parágrafo', + 'undo': 'Desfazer o último comando', + 'redo': 'Refazer o último comando', + 'tab': 'Tab', + 'untab': 'Desfazer tab', + 'bold': 'Colocar em negrito', + 'italic': 'Colocar em itálico', + 'underline': 'Sublinhado', + 'strikethrough': 'Tachado', + 'removeFormat': 'Remover estilo', + 'justifyLeft': 'Alinhar à esquerda', + 'justifyCenter': 'Centralizar', + 'justifyRight': 'Alinhar à esquerda', + 'justifyFull': 'Justificar', + 'insertUnorderedList': 'Lista não ordenada', + 'insertOrderedList': 'Lista ordenada', + 'outdent': 'Recuar parágrafo atual', + 'indent': 'Avançar parágrafo atual', + 'formatPara': 'Alterar formato do bloco para parágrafo(tag P)', + 'formatH1': 'Alterar formato do bloco para H1', + 'formatH2': 'Alterar formato do bloco para H2', + 'formatH3': 'Alterar formato do bloco para H3', + 'formatH4': 'Alterar formato do bloco para H4', + 'formatH5': 'Alterar formato do bloco para H5', + 'formatH6': 'Alterar formato do bloco para H6', + 'insertHorizontalRule': 'Inserir Régua horizontal', + 'linkDialog.show': 'Inserir um Hiperlink' + }, + history: { + undo: 'Desfazer', + redo: 'Refazer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIAIS', + select: 'Selecionar Caracteres Especiais' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-pt-BR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.js.map new file mode 100644 index 0000000..17fee75 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-pt-BR.js","mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;ACVA,CAAC,UAASA,CAAT,EAAY;AACXA,EAAAA,CAAC,CAACC,MAAF,CAASD,CAAC,CAACE,UAAF,CAAaC,IAAtB,EAA4B;AAC1B,aAAS;AACPC,MAAAA,IAAI,EAAE;AACJC,QAAAA,IAAI,EAAE,SADF;AAEJC,QAAAA,MAAM,EAAE,SAFJ;AAGJC,QAAAA,SAAS,EAAE,YAHP;AAIJC,QAAAA,KAAK,EAAE,yBAJH;AAKJC,QAAAA,MAAM,EAAE,iBALJ;AAMJC,QAAAA,IAAI,EAAE,OANF;AAOJC,QAAAA,aAAa,EAAE,SAPX;AAQJC,QAAAA,SAAS,EAAE,WARP;AASJC,QAAAA,WAAW,EAAE,aATT;AAUJC,QAAAA,IAAI,EAAE;AAVF,OADC;AAaPC,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE,QADF;AAELC,QAAAA,MAAM,EAAE,gBAFH;AAGLC,QAAAA,UAAU,EAAE,6BAHP;AAILC,QAAAA,UAAU,EAAE,2BAJP;AAKLC,QAAAA,aAAa,EAAE,2BALV;AAMLC,QAAAA,SAAS,EAAE,uBANN;AAOLC,QAAAA,UAAU,EAAE,sBAPP;AAQLC,QAAAA,SAAS,EAAE,aARN;AASLC,QAAAA,YAAY,EAAE,oBATT;AAULC,QAAAA,WAAW,EAAE,gBAVR;AAWLC,QAAAA,cAAc,EAAE,kBAXX;AAYLC,QAAAA,SAAS,EAAE,eAZN;AAaLC,QAAAA,aAAa,EAAE,iCAbV;AAcLC,QAAAA,SAAS,EAAE,uBAdN;AAeLC,QAAAA,eAAe,EAAE,iCAfZ;AAgBLC,QAAAA,eAAe,EAAE,2BAhBZ;AAiBLC,QAAAA,oBAAoB,EAAE,qCAjBjB;AAkBLC,QAAAA,GAAG,EAAE,eAlBA;AAmBLC,QAAAA,MAAM,EAAE,gBAnBH;AAoBLC,QAAAA,QAAQ,EAAE;AApBL,OAbA;AAmCPC,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE,OADF;AAELC,QAAAA,SAAS,EAAE,iBAFN;AAGLpB,QAAAA,MAAM,EAAE,eAHH;AAILgB,QAAAA,GAAG,EAAE,eAJA;AAKLK,QAAAA,SAAS,EAAE;AALN,OAnCA;AA0CPC,MAAAA,IAAI,EAAE;AACJA,QAAAA,IAAI,EAAE,MADF;AAEJtB,QAAAA,MAAM,EAAE,cAFJ;AAGJuB,QAAAA,MAAM,EAAE,cAHJ;AAIJC,QAAAA,IAAI,EAAE,QAJF;AAKJC,QAAAA,aAAa,EAAE,mBALX;AAMJT,QAAAA,GAAG,EAAE,+BAND;AAOJU,QAAAA,eAAe,EAAE;AAPb,OA1CC;AAmDPC,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE,QADF;AAELC,QAAAA,WAAW,EAAE,uBAFR;AAGLC,QAAAA,WAAW,EAAE,wBAHR;AAILC,QAAAA,UAAU,EAAE,6BAJP;AAKLC,QAAAA,WAAW,EAAE,4BALR;AAMLC,QAAAA,MAAM,EAAE,eANH;AAOLC,QAAAA,MAAM,EAAE,gBAPH;AAQLC,QAAAA,QAAQ,EAAE;AARL,OAnDA;AA6DPC,MAAAA,EAAE,EAAE;AACFnC,QAAAA,MAAM,EAAE;AADN,OA7DG;AAgEPoC,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE,QADF;AAELC,QAAAA,CAAC,EAAE,QAFE;AAGLC,QAAAA,UAAU,EAAE,SAHP;AAILC,QAAAA,GAAG,EAAE,QAJA;AAKLC,QAAAA,EAAE,EAAE,UALC;AAMLC,QAAAA,EAAE,EAAE,UANC;AAOLC,QAAAA,EAAE,EAAE,UAPC;AAQLC,QAAAA,EAAE,EAAE,UARC;AASLC,QAAAA,EAAE,EAAE,UATC;AAULC,QAAAA,EAAE,EAAE;AAVC,OAhEA;AA4EPC,MAAAA,KAAK,EAAE;AACLC,QAAAA,SAAS,EAAE,sBADN;AAELC,QAAAA,OAAO,EAAE;AAFJ,OA5EA;AAgFPC,MAAAA,OAAO,EAAE;AACPC,QAAAA,IAAI,EAAE,OADC;AAEPC,QAAAA,UAAU,EAAE,YAFL;AAGPC,QAAAA,QAAQ,EAAE;AAHH,OAhFF;AAqFPC,MAAAA,SAAS,EAAE;AACTA,QAAAA,SAAS,EAAE,WADF;AAETC,QAAAA,OAAO,EAAE,iBAFA;AAGTC,QAAAA,MAAM,EAAE,iBAHC;AAITC,QAAAA,IAAI,EAAE,oBAJG;AAKTC,QAAAA,MAAM,EAAE,mBALC;AAMTC,QAAAA,KAAK,EAAE,kBANE;AAOTC,QAAAA,OAAO,EAAE;AAPA,OArFJ;AA8FPC,MAAAA,KAAK,EAAE;AACLC,QAAAA,MAAM,EAAE,aADH;AAELC,QAAAA,IAAI,EAAE,YAFD;AAGLC,QAAAA,UAAU,EAAE,OAHP;AAILC,QAAAA,UAAU,EAAE,OAJP;AAKLC,QAAAA,WAAW,EAAE,cALR;AAMLC,QAAAA,cAAc,EAAE,oBANX;AAOLC,QAAAA,KAAK,EAAE,WAPF;AAQLC,QAAAA,cAAc,EAAE,kBARX;AASLC,QAAAA,QAAQ,EAAE;AATL,OA9FA;AAyGPC,MAAAA,QAAQ,EAAE;AACRC,QAAAA,SAAS,EAAE,oBADH;AAERC,QAAAA,KAAK,EAAE,QAFC;AAGRC,QAAAA,cAAc,EAAE,qBAHR;AAIRC,QAAAA,MAAM,EAAE,MAJA;AAKRC,QAAAA,mBAAmB,EAAE,yBALb;AAMRC,QAAAA,aAAa,EAAE,qBANP;AAORC,QAAAA,SAAS,EAAE;AAPH,OAzGH;AAkHP3B,MAAAA,IAAI,EAAE;AACJ,2BAAmB,mBADf;AAEJ,gBAAQ,2BAFJ;AAGJ,gBAAQ,0BAHJ;AAIJ,eAAO,KAJH;AAKJ,iBAAS,cALL;AAMJ,gBAAQ,oBANJ;AAOJ,kBAAU,oBAPN;AAQJ,qBAAa,YART;AASJ,yBAAiB,SATb;AAUJ,wBAAgB,gBAVZ;AAWJ,uBAAe,oBAXX;AAYJ,yBAAiB,aAZb;AAaJ,wBAAgB,oBAbZ;AAcJ,uBAAe,YAdX;AAeJ,+BAAuB,oBAfnB;AAgBJ,6BAAqB,gBAhBjB;AAiBJ,mBAAW,wBAjBP;AAkBJ,kBAAU,yBAlBN;AAmBJ,sBAAc,gDAnBV;AAoBJ,oBAAY,kCApBR;AAqBJ,oBAAY,kCArBR;AAsBJ,oBAAY,kCAtBR;AAuBJ,oBAAY,kCAvBR;AAwBJ,oBAAY,kCAxBR;AAyBJ,oBAAY,kCAzBR;AA0BJ,gCAAwB,0BA1BpB;AA2BJ,2BAAmB;AA3Bf,OAlHC;AA+IP4B,MAAAA,OAAO,EAAE;AACPC,QAAAA,IAAI,EAAE,UADC;AAEPC,QAAAA,IAAI,EAAE;AAFC,OA/IF;AAmJPC,MAAAA,WAAW,EAAE;AACXA,QAAAA,WAAW,EAAE,sBADF;AAEXC,QAAAA,MAAM,EAAE;AAFG;AAnJN;AADiB,GAA5B;AA0JD,CA3JD,EA2JGC,MA3JH","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-pt-BR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'pt-BR': {\n font: {\n bold: 'Negrito',\n italic: 'Itálico',\n underline: 'Sublinhado',\n clear: 'Remover estilo da fonte',\n height: 'Altura da linha',\n name: 'Fonte',\n strikethrough: 'Riscado',\n subscript: 'Subscrito',\n superscript: 'Sobrescrito',\n size: 'Tamanho da fonte',\n },\n image: {\n image: 'Imagem',\n insert: 'Inserir imagem',\n resizeFull: 'Redimensionar Completamente',\n resizeHalf: 'Redimensionar pela Metade',\n resizeQuarter: 'Redimensionar a um Quarto',\n floatLeft: 'Flutuar para Esquerda',\n floatRight: 'Flutuar para Direita',\n floatNone: 'Não Flutuar',\n shapeRounded: 'Forma: Arredondado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Miniatura',\n shapeNone: 'Forma: Nenhum',\n dragImageHere: 'Arraste Imagem ou Texto para cá',\n dropImage: 'Solte Imagem ou Texto',\n selectFromFiles: 'Selecione a partir dos arquivos',\n maximumFileSize: 'Tamanho máximo do arquivo',\n maximumFileSizeError: 'Tamanho máximo do arquivo excedido.',\n url: 'URL da imagem',\n remove: 'Remover Imagem',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Link para vídeo',\n insert: 'Inserir vídeo',\n url: 'URL do vídeo?',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Inserir link',\n unlink: 'Remover link',\n edit: 'Editar',\n textToDisplay: 'Texto para exibir',\n url: 'Para qual URL este link leva?',\n openInNewWindow: 'Abrir em uma nova janela',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Adicionar linha acima',\n addRowBelow: 'Adicionar linha abaixo',\n addColLeft: 'Adicionar coluna à esquerda',\n addColRight: 'Adicionar coluna à direita',\n delRow: 'Excluir linha',\n delCol: 'Excluir coluna',\n delTable: 'Excluir tabela',\n },\n hr: {\n insert: 'Linha horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Normal',\n blockquote: 'Citação',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista com marcadores',\n ordered: 'Lista numerada',\n },\n options: {\n help: 'Ajuda',\n fullscreen: 'Tela cheia',\n codeview: 'Ver código-fonte',\n },\n paragraph: {\n paragraph: 'Parágrafo',\n outdent: 'Menor tabulação',\n indent: 'Maior tabulação',\n left: 'Alinhar à esquerda',\n center: 'Alinhar ao centro',\n right: 'Alinha à direita',\n justify: 'Justificado',\n },\n color: {\n recent: 'Cor recente',\n more: 'Mais cores',\n background: 'Fundo',\n foreground: 'Fonte',\n transparent: 'Transparente',\n setTransparent: 'Fundo transparente',\n reset: 'Restaurar',\n resetToDefault: 'Restaurar padrão',\n cpSelect: 'Selecionar',\n },\n shortcut: {\n shortcuts: 'Atalhos do teclado',\n close: 'Fechar',\n textFormatting: 'Formatação de texto',\n action: 'Ação',\n paragraphFormatting: 'Formatação de parágrafo',\n documentStyle: 'Estilo de documento',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Inserir Parágrafo',\n 'undo': 'Desfazer o último comando',\n 'redo': 'Refazer o último comando',\n 'tab': 'Tab',\n 'untab': 'Desfazer tab',\n 'bold': 'Colocar em negrito',\n 'italic': 'Colocar em itálico',\n 'underline': 'Sublinhado',\n 'strikethrough': 'Tachado',\n 'removeFormat': 'Remover estilo',\n 'justifyLeft': 'Alinhar à esquerda',\n 'justifyCenter': 'Centralizar',\n 'justifyRight': 'Alinhar à esquerda',\n 'justifyFull': 'Justificar',\n 'insertUnorderedList': 'Lista não ordenada',\n 'insertOrderedList': 'Lista ordenada',\n 'outdent': 'Recuar parágrafo atual',\n 'indent': 'Avançar parágrafo atual',\n 'formatPara': 'Alterar formato do bloco para parágrafo(tag P)',\n 'formatH1': 'Alterar formato do bloco para H1',\n 'formatH2': 'Alterar formato do bloco para H2',\n 'formatH3': 'Alterar formato do bloco para H3',\n 'formatH4': 'Alterar formato do bloco para H4',\n 'formatH5': 'Alterar formato do bloco para H5',\n 'formatH6': 'Alterar formato do bloco para H6',\n 'insertHorizontalRule': 'Inserir Régua horizontal',\n 'linkDialog.show': 'Inserir um Hiperlink',\n },\n history: {\n undo: 'Desfazer',\n redo: 'Refazer',\n },\n specialChar: {\n specialChar: 'CARACTERES ESPECIAIS',\n select: 'Selecionar Caracteres Especiais',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.min.js new file mode 100644 index 0000000..00b2ae4 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"pt-BR":{font:{bold:"Negrito",italic:"Itálico",underline:"Sublinhado",clear:"Remover estilo da fonte",height:"Altura da linha",name:"Fonte",strikethrough:"Riscado",subscript:"Subscrito",superscript:"Sobrescrito",size:"Tamanho da fonte"},image:{image:"Imagem",insert:"Inserir imagem",resizeFull:"Redimensionar Completamente",resizeHalf:"Redimensionar pela Metade",resizeQuarter:"Redimensionar a um Quarto",floatLeft:"Flutuar para Esquerda",floatRight:"Flutuar para Direita",floatNone:"Não Flutuar",shapeRounded:"Forma: Arredondado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Miniatura",shapeNone:"Forma: Nenhum",dragImageHere:"Arraste Imagem ou Texto para cá",dropImage:"Solte Imagem ou Texto",selectFromFiles:"Selecione a partir dos arquivos",maximumFileSize:"Tamanho máximo do arquivo",maximumFileSizeError:"Tamanho máximo do arquivo excedido.",url:"URL da imagem",remove:"Remover Imagem",original:"Original"},video:{video:"Vídeo",videoLink:"Link para vídeo",insert:"Inserir vídeo",url:"URL do vídeo?",providers:"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Link",insert:"Inserir link",unlink:"Remover link",edit:"Editar",textToDisplay:"Texto para exibir",url:"Para qual URL este link leva?",openInNewWindow:"Abrir em uma nova janela"},table:{table:"Tabela",addRowAbove:"Adicionar linha acima",addRowBelow:"Adicionar linha abaixo",addColLeft:"Adicionar coluna à esquerda",addColRight:"Adicionar coluna à direita",delRow:"Excluir linha",delCol:"Excluir coluna",delTable:"Excluir tabela"},hr:{insert:"Linha horizontal"},style:{style:"Estilo",p:"Normal",blockquote:"Citação",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista com marcadores",ordered:"Lista numerada"},options:{help:"Ajuda",fullscreen:"Tela cheia",codeview:"Ver código-fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menor tabulação",indent:"Maior tabulação",left:"Alinhar à esquerda",center:"Alinhar ao centro",right:"Alinha à direita",justify:"Justificado"},color:{recent:"Cor recente",more:"Mais cores",background:"Fundo",foreground:"Fonte",transparent:"Transparente",setTransparent:"Fundo transparente",reset:"Restaurar",resetToDefault:"Restaurar padrão",cpSelect:"Selecionar"},shortcut:{shortcuts:"Atalhos do teclado",close:"Fechar",textFormatting:"Formatação de texto",action:"Ação",paragraphFormatting:"Formatação de parágrafo",documentStyle:"Estilo de documento",extraKeys:"Extra keys"},help:{insertParagraph:"Inserir Parágrafo",undo:"Desfazer o último comando",redo:"Refazer o último comando",tab:"Tab",untab:"Desfazer tab",bold:"Colocar em negrito",italic:"Colocar em itálico",underline:"Sublinhado",strikethrough:"Tachado",removeFormat:"Remover estilo",justifyLeft:"Alinhar à esquerda",justifyCenter:"Centralizar",justifyRight:"Alinhar à esquerda",justifyFull:"Justificar",insertUnorderedList:"Lista não ordenada",insertOrderedList:"Lista ordenada",outdent:"Recuar parágrafo atual",indent:"Avançar parágrafo atual",formatPara:"Alterar formato do bloco para parágrafo(tag P)",formatH1:"Alterar formato do bloco para H1",formatH2:"Alterar formato do bloco para H2",formatH3:"Alterar formato do bloco para H3",formatH4:"Alterar formato do bloco para H4",formatH5:"Alterar formato do bloco para H5",formatH6:"Alterar formato do bloco para H6",insertHorizontalRule:"Inserir Régua horizontal","linkDialog.show":"Inserir um Hiperlink"},history:{undo:"Desfazer",redo:"Refazer"},specialChar:{specialChar:"CARACTERES ESPECIAIS",select:"Selecionar Caracteres Especiais"}}}),{};var e})); +//# sourceMappingURL=summernote-pt-BR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.min.js.map new file mode 100644 index 0000000..88f830f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-BR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-pt-BR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,UACNC,OAAQ,UACRC,UAAW,aACXC,MAAO,0BACPC,OAAQ,kBACRC,KAAM,QACNC,cAAe,UACfC,UAAW,YACXC,YAAa,cACbC,KAAM,oBAERC,MAAO,CACLA,MAAO,SACPC,OAAQ,iBACRC,WAAY,8BACZC,WAAY,4BACZC,cAAe,4BACfC,UAAW,wBACXC,WAAY,uBACZC,UAAW,cACXC,aAAc,qBACdC,YAAa,iBACbC,eAAgB,mBAChBC,UAAW,gBACXC,cAAe,kCACfC,UAAW,wBACXC,gBAAiB,kCACjBC,gBAAiB,4BACjBC,qBAAsB,sCACtBC,IAAK,gBACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,kBACXpB,OAAQ,gBACRgB,IAAK,gBACLK,UAAW,yEAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,eACRuB,OAAQ,eACRC,KAAM,SACNC,cAAe,oBACfT,IAAK,gCACLU,gBAAiB,4BAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,wBACbC,YAAa,yBACbC,WAAY,8BACZC,YAAa,6BACbC,OAAQ,gBACRC,OAAQ,iBACRC,SAAU,kBAEZC,GAAI,CACFnC,OAAQ,oBAEVoC,MAAO,CACLA,MAAO,SACPC,EAAG,SACHC,WAAY,UACZC,IAAK,SACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,uBACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,aACZC,SAAU,oBAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,kBACTC,OAAQ,kBACRC,KAAM,qBACNC,OAAQ,oBACRC,MAAO,mBACPC,QAAS,eAEXC,MAAO,CACLC,OAAQ,cACRC,KAAM,aACNC,WAAY,QACZC,WAAY,QACZC,YAAa,eACbC,eAAgB,qBAChBC,MAAO,YACPC,eAAgB,mBAChBC,SAAU,cAEZC,SAAU,CACRC,UAAW,qBACXC,MAAO,SACPC,eAAgB,sBAChBC,OAAQ,OACRC,oBAAqB,0BACrBC,cAAe,sBACfC,UAAW,cAEb3B,KAAM,CACJ,gBAAmB,oBACnB,KAAQ,4BACR,KAAQ,2BACR,IAAO,MACP,MAAS,eACT,KAAQ,qBACR,OAAU,qBACV,UAAa,aACb,cAAiB,UACjB,aAAgB,iBAChB,YAAe,qBACf,cAAiB,cACjB,aAAgB,qBAChB,YAAe,aACf,oBAAuB,qBACvB,kBAAqB,iBACrB,QAAW,yBACX,OAAU,0BACV,WAAc,iDACd,SAAY,mCACZ,SAAY,mCACZ,SAAY,mCACZ,SAAY,mCACZ,SAAY,mCACZ,SAAY,mCACZ,qBAAwB,2BACxB,kBAAmB,wBAErB4B,QAAS,CACPC,KAAM,WACNC,KAAM,WAERC,YAAa,CACXA,YAAa,uBACbC,OAAQ,sC,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-pt-BR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'pt-BR': {\n font: {\n bold: 'Negrito',\n italic: 'Itálico',\n underline: 'Sublinhado',\n clear: 'Remover estilo da fonte',\n height: 'Altura da linha',\n name: 'Fonte',\n strikethrough: 'Riscado',\n subscript: 'Subscrito',\n superscript: 'Sobrescrito',\n size: 'Tamanho da fonte',\n },\n image: {\n image: 'Imagem',\n insert: 'Inserir imagem',\n resizeFull: 'Redimensionar Completamente',\n resizeHalf: 'Redimensionar pela Metade',\n resizeQuarter: 'Redimensionar a um Quarto',\n floatLeft: 'Flutuar para Esquerda',\n floatRight: 'Flutuar para Direita',\n floatNone: 'Não Flutuar',\n shapeRounded: 'Forma: Arredondado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Miniatura',\n shapeNone: 'Forma: Nenhum',\n dragImageHere: 'Arraste Imagem ou Texto para cá',\n dropImage: 'Solte Imagem ou Texto',\n selectFromFiles: 'Selecione a partir dos arquivos',\n maximumFileSize: 'Tamanho máximo do arquivo',\n maximumFileSizeError: 'Tamanho máximo do arquivo excedido.',\n url: 'URL da imagem',\n remove: 'Remover Imagem',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Link para vídeo',\n insert: 'Inserir vídeo',\n url: 'URL do vídeo?',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Inserir link',\n unlink: 'Remover link',\n edit: 'Editar',\n textToDisplay: 'Texto para exibir',\n url: 'Para qual URL este link leva?',\n openInNewWindow: 'Abrir em uma nova janela',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Adicionar linha acima',\n addRowBelow: 'Adicionar linha abaixo',\n addColLeft: 'Adicionar coluna à esquerda',\n addColRight: 'Adicionar coluna à direita',\n delRow: 'Excluir linha',\n delCol: 'Excluir coluna',\n delTable: 'Excluir tabela',\n },\n hr: {\n insert: 'Linha horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Normal',\n blockquote: 'Citação',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista com marcadores',\n ordered: 'Lista numerada',\n },\n options: {\n help: 'Ajuda',\n fullscreen: 'Tela cheia',\n codeview: 'Ver código-fonte',\n },\n paragraph: {\n paragraph: 'Parágrafo',\n outdent: 'Menor tabulação',\n indent: 'Maior tabulação',\n left: 'Alinhar à esquerda',\n center: 'Alinhar ao centro',\n right: 'Alinha à direita',\n justify: 'Justificado',\n },\n color: {\n recent: 'Cor recente',\n more: 'Mais cores',\n background: 'Fundo',\n foreground: 'Fonte',\n transparent: 'Transparente',\n setTransparent: 'Fundo transparente',\n reset: 'Restaurar',\n resetToDefault: 'Restaurar padrão',\n cpSelect: 'Selecionar',\n },\n shortcut: {\n shortcuts: 'Atalhos do teclado',\n close: 'Fechar',\n textFormatting: 'Formatação de texto',\n action: 'Ação',\n paragraphFormatting: 'Formatação de parágrafo',\n documentStyle: 'Estilo de documento',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Inserir Parágrafo',\n 'undo': 'Desfazer o último comando',\n 'redo': 'Refazer o último comando',\n 'tab': 'Tab',\n 'untab': 'Desfazer tab',\n 'bold': 'Colocar em negrito',\n 'italic': 'Colocar em itálico',\n 'underline': 'Sublinhado',\n 'strikethrough': 'Tachado',\n 'removeFormat': 'Remover estilo',\n 'justifyLeft': 'Alinhar à esquerda',\n 'justifyCenter': 'Centralizar',\n 'justifyRight': 'Alinhar à esquerda',\n 'justifyFull': 'Justificar',\n 'insertUnorderedList': 'Lista não ordenada',\n 'insertOrderedList': 'Lista ordenada',\n 'outdent': 'Recuar parágrafo atual',\n 'indent': 'Avançar parágrafo atual',\n 'formatPara': 'Alterar formato do bloco para parágrafo(tag P)',\n 'formatH1': 'Alterar formato do bloco para H1',\n 'formatH2': 'Alterar formato do bloco para H2',\n 'formatH3': 'Alterar formato do bloco para H3',\n 'formatH4': 'Alterar formato do bloco para H4',\n 'formatH5': 'Alterar formato do bloco para H5',\n 'formatH6': 'Alterar formato do bloco para H6',\n 'insertHorizontalRule': 'Inserir Régua horizontal',\n 'linkDialog.show': 'Inserir um Hiperlink',\n },\n history: {\n undo: 'Desfazer',\n redo: 'Refazer',\n },\n specialChar: {\n specialChar: 'CARACTERES ESPECIAIS',\n select: 'Selecionar Caracteres Especiais',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.js b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.js new file mode 100644 index 0000000..93f1cfc --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'pt-PT': { + font: { + bold: 'Negrito', + italic: 'Itálico', + underline: 'Sublinhado', + clear: 'Remover estilo da fonte', + height: 'Altura da linha', + name: 'Fonte', + strikethrough: 'Riscado', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Tamanho da fonte' + }, + image: { + image: 'Imagem', + insert: 'Inserir imagem', + resizeFull: 'Redimensionar Completo', + resizeHalf: 'Redimensionar Metade', + resizeQuarter: 'Redimensionar Um Quarto', + floatLeft: 'Float Esquerda', + floatRight: 'Float Direita', + floatNone: 'Sem Float', + shapeRounded: 'Forma: Arredondado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Minhatura', + shapeNone: 'Forma: Nenhum', + dragImageHere: 'Arraste uma imagem para aqui', + dropImage: 'Arraste uma imagem ou texto', + selectFromFiles: 'Selecione a partir dos arquivos', + maximumFileSize: 'Tamanho máximo do fixeiro', + maximumFileSizeError: 'Tamanho máximo do fixeiro é maior que o permitido.', + url: 'Endereço da imagem', + remove: 'Remover Imagem', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Link para vídeo', + insert: 'Inserir vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Link', + insert: 'Inserir ligação', + unlink: 'Remover ligação', + edit: 'Editar', + textToDisplay: 'Texto para exibir', + url: 'Que endereço esta licação leva?', + openInNewWindow: 'Abrir numa nova janela' + }, + table: { + table: 'Tabela', + addRowAbove: 'Adicionar linha acima', + addRowBelow: 'Adicionar linha abaixo', + addColLeft: 'Adicionar coluna à Esquerda', + addColRight: 'Adicionar coluna à Esquerda', + delRow: 'Excluir linha', + delCol: 'Excluir coluna', + delTable: 'Excluir tabela' + }, + hr: { + insert: 'Inserir linha horizontal' + }, + style: { + style: 'Estilo', + p: 'Parágrafo', + blockquote: 'Citação', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista com marcadores', + ordered: 'Lista numerada' + }, + options: { + help: 'Ajuda', + fullscreen: 'Janela Completa', + codeview: 'Ver código-fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menor tabulação', + indent: 'Maior tabulação', + left: 'Alinhar à esquerda', + center: 'Alinhar ao centro', + right: 'Alinha à direita', + justify: 'Justificado' + }, + color: { + recent: 'Cor recente', + more: 'Mais cores', + background: 'Fundo', + foreground: 'Fonte', + transparent: 'Transparente', + setTransparent: 'Fundo transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar padrão', + cpSelect: 'Selecionar' + }, + shortcut: { + shortcuts: 'Atalhos do teclado', + close: 'Fechar', + textFormatting: 'Formatação de texto', + action: 'Ação', + paragraphFormatting: 'Formatação de parágrafo', + documentStyle: 'Estilo de documento' + }, + help: { + 'insertParagraph': 'Inserir Parágrafo', + 'undo': 'Desfazer o último comando', + 'redo': 'Refazer o último comando', + 'tab': 'Maior tabulação', + 'untab': 'Menor tabulação', + 'bold': 'Colocar em negrito', + 'italic': 'Colocar em itálico', + 'underline': 'Colocar em sublinhado', + 'strikethrough': 'Colocar em riscado', + 'removeFormat': 'Limpar o estilo', + 'justifyLeft': 'Definir alinhado à esquerda', + 'justifyCenter': 'Definir alinhado ao centro', + 'justifyRight': 'Definir alinhado à direita', + 'justifyFull': 'Definir justificado', + 'insertUnorderedList': 'Alternar lista não ordenada', + 'insertOrderedList': 'Alternar lista ordenada', + 'outdent': 'Recuar parágrafo atual', + 'indent': 'Avançar parágrafo atual', + 'formatPara': 'Alterar formato do bloco para parágrafo', + 'formatH1': 'Alterar formato do bloco para Título 1', + 'formatH2': 'Alterar formato do bloco para Título 2', + 'formatH3': 'Alterar formato do bloco para Título 3', + 'formatH4': 'Alterar formato do bloco para Título 4', + 'formatH5': 'Alterar formato do bloco para Título 5', + 'formatH6': 'Alterar formato do bloco para Título 6', + 'insertHorizontalRule': 'Inserir linha horizontal', + 'linkDialog.show': 'Inserir uma ligração' + }, + history: { + undo: 'Desfazer', + redo: 'Refazer' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-pt-PT.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.js.map new file mode 100644 index 0000000..2c29aa9 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-pt-PT.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-pt-PT.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'pt-PT': {\n font: {\n bold: 'Negrito',\n italic: 'Itálico',\n underline: 'Sublinhado',\n clear: 'Remover estilo da fonte',\n height: 'Altura da linha',\n name: 'Fonte',\n strikethrough: 'Riscado',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Tamanho da fonte',\n },\n image: {\n image: 'Imagem',\n insert: 'Inserir imagem',\n resizeFull: 'Redimensionar Completo',\n resizeHalf: 'Redimensionar Metade',\n resizeQuarter: 'Redimensionar Um Quarto',\n floatLeft: 'Float Esquerda',\n floatRight: 'Float Direita',\n floatNone: 'Sem Float',\n shapeRounded: 'Forma: Arredondado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Minhatura',\n shapeNone: 'Forma: Nenhum',\n dragImageHere: 'Arraste uma imagem para aqui',\n dropImage: 'Arraste uma imagem ou texto',\n selectFromFiles: 'Selecione a partir dos arquivos',\n maximumFileSize: 'Tamanho máximo do fixeiro',\n maximumFileSizeError: 'Tamanho máximo do fixeiro é maior que o permitido.',\n url: 'Endereço da imagem',\n remove: 'Remover Imagem',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Link para vídeo',\n insert: 'Inserir vídeo',\n url: 'URL do vídeo?',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Inserir ligação',\n unlink: 'Remover ligação',\n edit: 'Editar',\n textToDisplay: 'Texto para exibir',\n url: 'Que endereço esta licação leva?',\n openInNewWindow: 'Abrir numa nova janela',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Adicionar linha acima',\n addRowBelow: 'Adicionar linha abaixo',\n addColLeft: 'Adicionar coluna à Esquerda',\n addColRight: 'Adicionar coluna à Esquerda',\n delRow: 'Excluir linha',\n delCol: 'Excluir coluna',\n delTable: 'Excluir tabela',\n },\n hr: {\n insert: 'Inserir linha horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Parágrafo',\n blockquote: 'Citação',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista com marcadores',\n ordered: 'Lista numerada',\n },\n options: {\n help: 'Ajuda',\n fullscreen: 'Janela Completa',\n codeview: 'Ver código-fonte',\n },\n paragraph: {\n paragraph: 'Parágrafo',\n outdent: 'Menor tabulação',\n indent: 'Maior tabulação',\n left: 'Alinhar à esquerda',\n center: 'Alinhar ao centro',\n right: 'Alinha à direita',\n justify: 'Justificado',\n },\n color: {\n recent: 'Cor recente',\n more: 'Mais cores',\n background: 'Fundo',\n foreground: 'Fonte',\n transparent: 'Transparente',\n setTransparent: 'Fundo transparente',\n reset: 'Restaurar',\n resetToDefault: 'Restaurar padrão',\n cpSelect: 'Selecionar',\n },\n shortcut: {\n shortcuts: 'Atalhos do teclado',\n close: 'Fechar',\n textFormatting: 'Formatação de texto',\n action: 'Ação',\n paragraphFormatting: 'Formatação de parágrafo',\n documentStyle: 'Estilo de documento',\n },\n help: {\n 'insertParagraph': 'Inserir Parágrafo',\n 'undo': 'Desfazer o último comando',\n 'redo': 'Refazer o último comando',\n 'tab': 'Maior tabulação',\n 'untab': 'Menor tabulação',\n 'bold': 'Colocar em negrito',\n 'italic': 'Colocar em itálico',\n 'underline': 'Colocar em sublinhado',\n 'strikethrough': 'Colocar em riscado',\n 'removeFormat': 'Limpar o estilo',\n 'justifyLeft': 'Definir alinhado à esquerda',\n 'justifyCenter': 'Definir alinhado ao centro',\n 'justifyRight': 'Definir alinhado à direita',\n 'justifyFull': 'Definir justificado',\n 'insertUnorderedList': 'Alternar lista não ordenada',\n 'insertOrderedList': 'Alternar lista ordenada',\n 'outdent': 'Recuar parágrafo atual',\n 'indent': 'Avançar parágrafo atual',\n 'formatPara': 'Alterar formato do bloco para parágrafo',\n 'formatH1': 'Alterar formato do bloco para Título 1',\n 'formatH2': 'Alterar formato do bloco para Título 2',\n 'formatH3': 'Alterar formato do bloco para Título 3',\n 'formatH4': 'Alterar formato do bloco para Título 4',\n 'formatH5': 'Alterar formato do bloco para Título 5',\n 'formatH6': 'Alterar formato do bloco para Título 6',\n 'insertHorizontalRule': 'Inserir linha horizontal',\n 'linkDialog.show': 'Inserir uma ligração',\n },\n history: {\n undo: 'Desfazer',\n redo: 'Refazer',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.min.js new file mode 100644 index 0000000..28ebdfe --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(a,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o=e();for(var r in o)("object"==typeof exports?exports:a)[r]=o[r]}}(self,(function(){return(a=jQuery).extend(a.summernote.lang,{"pt-PT":{font:{bold:"Negrito",italic:"Itálico",underline:"Sublinhado",clear:"Remover estilo da fonte",height:"Altura da linha",name:"Fonte",strikethrough:"Riscado",subscript:"Subscript",superscript:"Superscript",size:"Tamanho da fonte"},image:{image:"Imagem",insert:"Inserir imagem",resizeFull:"Redimensionar Completo",resizeHalf:"Redimensionar Metade",resizeQuarter:"Redimensionar Um Quarto",floatLeft:"Float Esquerda",floatRight:"Float Direita",floatNone:"Sem Float",shapeRounded:"Forma: Arredondado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Minhatura",shapeNone:"Forma: Nenhum",dragImageHere:"Arraste uma imagem para aqui",dropImage:"Arraste uma imagem ou texto",selectFromFiles:"Selecione a partir dos arquivos",maximumFileSize:"Tamanho máximo do fixeiro",maximumFileSizeError:"Tamanho máximo do fixeiro é maior que o permitido.",url:"Endereço da imagem",remove:"Remover Imagem",original:"Original"},video:{video:"Vídeo",videoLink:"Link para vídeo",insert:"Inserir vídeo",url:"URL do vídeo?",providers:"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Link",insert:"Inserir ligação",unlink:"Remover ligação",edit:"Editar",textToDisplay:"Texto para exibir",url:"Que endereço esta licação leva?",openInNewWindow:"Abrir numa nova janela"},table:{table:"Tabela",addRowAbove:"Adicionar linha acima",addRowBelow:"Adicionar linha abaixo",addColLeft:"Adicionar coluna à Esquerda",addColRight:"Adicionar coluna à Esquerda",delRow:"Excluir linha",delCol:"Excluir coluna",delTable:"Excluir tabela"},hr:{insert:"Inserir linha horizontal"},style:{style:"Estilo",p:"Parágrafo",blockquote:"Citação",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista com marcadores",ordered:"Lista numerada"},options:{help:"Ajuda",fullscreen:"Janela Completa",codeview:"Ver código-fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menor tabulação",indent:"Maior tabulação",left:"Alinhar à esquerda",center:"Alinhar ao centro",right:"Alinha à direita",justify:"Justificado"},color:{recent:"Cor recente",more:"Mais cores",background:"Fundo",foreground:"Fonte",transparent:"Transparente",setTransparent:"Fundo transparente",reset:"Restaurar",resetToDefault:"Restaurar padrão",cpSelect:"Selecionar"},shortcut:{shortcuts:"Atalhos do teclado",close:"Fechar",textFormatting:"Formatação de texto",action:"Ação",paragraphFormatting:"Formatação de parágrafo",documentStyle:"Estilo de documento"},help:{insertParagraph:"Inserir Parágrafo",undo:"Desfazer o último comando",redo:"Refazer o último comando",tab:"Maior tabulação",untab:"Menor tabulação",bold:"Colocar em negrito",italic:"Colocar em itálico",underline:"Colocar em sublinhado",strikethrough:"Colocar em riscado",removeFormat:"Limpar o estilo",justifyLeft:"Definir alinhado à esquerda",justifyCenter:"Definir alinhado ao centro",justifyRight:"Definir alinhado à direita",justifyFull:"Definir justificado",insertUnorderedList:"Alternar lista não ordenada",insertOrderedList:"Alternar lista ordenada",outdent:"Recuar parágrafo atual",indent:"Avançar parágrafo atual",formatPara:"Alterar formato do bloco para parágrafo",formatH1:"Alterar formato do bloco para Título 1",formatH2:"Alterar formato do bloco para Título 2",formatH3:"Alterar formato do bloco para Título 3",formatH4:"Alterar formato do bloco para Título 4",formatH5:"Alterar formato do bloco para Título 5",formatH6:"Alterar formato do bloco para Título 6",insertHorizontalRule:"Inserir linha horizontal","linkDialog.show":"Inserir uma ligração"},history:{undo:"Desfazer",redo:"Refazer"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var a})); +//# sourceMappingURL=summernote-pt-PT.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.min.js.map new file mode 100644 index 0000000..0957dd7 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-pt-PT.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-pt-PT.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,UACNC,OAAQ,UACRC,UAAW,aACXC,MAAO,0BACPC,OAAQ,kBACRC,KAAM,QACNC,cAAe,UACfC,UAAW,YACXC,YAAa,cACbC,KAAM,oBAERC,MAAO,CACLA,MAAO,SACPC,OAAQ,iBACRC,WAAY,yBACZC,WAAY,uBACZC,cAAe,0BACfC,UAAW,iBACXC,WAAY,gBACZC,UAAW,YACXC,aAAc,qBACdC,YAAa,iBACbC,eAAgB,mBAChBC,UAAW,gBACXC,cAAe,+BACfC,UAAW,8BACXC,gBAAiB,kCACjBC,gBAAiB,4BACjBC,qBAAsB,qDACtBC,IAAK,qBACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,kBACXpB,OAAQ,gBACRgB,IAAK,gBACLK,UAAW,yEAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,kBACRuB,OAAQ,kBACRC,KAAM,SACNC,cAAe,oBACfT,IAAK,kCACLU,gBAAiB,0BAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,wBACbC,YAAa,yBACbC,WAAY,8BACZC,YAAa,8BACbC,OAAQ,gBACRC,OAAQ,iBACRC,SAAU,kBAEZC,GAAI,CACFnC,OAAQ,4BAEVoC,MAAO,CACLA,MAAO,SACPC,EAAG,YACHC,WAAY,UACZC,IAAK,SACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,uBACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,kBACZC,SAAU,oBAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,kBACTC,OAAQ,kBACRC,KAAM,qBACNC,OAAQ,oBACRC,MAAO,mBACPC,QAAS,eAEXC,MAAO,CACLC,OAAQ,cACRC,KAAM,aACNC,WAAY,QACZC,WAAY,QACZC,YAAa,eACbC,eAAgB,qBAChBC,MAAO,YACPC,eAAgB,mBAChBC,SAAU,cAEZC,SAAU,CACRC,UAAW,qBACXC,MAAO,SACPC,eAAgB,sBAChBC,OAAQ,OACRC,oBAAqB,0BACrBC,cAAe,uBAEjB1B,KAAM,CACJ,gBAAmB,oBACnB,KAAQ,4BACR,KAAQ,2BACR,IAAO,kBACP,MAAS,kBACT,KAAQ,qBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,qBACjB,aAAgB,kBAChB,YAAe,8BACf,cAAiB,6BACjB,aAAgB,6BAChB,YAAe,sBACf,oBAAuB,8BACvB,kBAAqB,0BACrB,QAAW,yBACX,OAAU,0BACV,WAAc,0CACd,SAAY,yCACZ,SAAY,yCACZ,SAAY,yCACZ,SAAY,yCACZ,SAAY,yCACZ,SAAY,yCACZ,qBAAwB,2BACxB,kBAAmB,wBAErB2B,QAAS,CACPC,KAAM,WACNC,KAAM,WAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-pt-PT.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'pt-PT': {\n font: {\n bold: 'Negrito',\n italic: 'Itálico',\n underline: 'Sublinhado',\n clear: 'Remover estilo da fonte',\n height: 'Altura da linha',\n name: 'Fonte',\n strikethrough: 'Riscado',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Tamanho da fonte',\n },\n image: {\n image: 'Imagem',\n insert: 'Inserir imagem',\n resizeFull: 'Redimensionar Completo',\n resizeHalf: 'Redimensionar Metade',\n resizeQuarter: 'Redimensionar Um Quarto',\n floatLeft: 'Float Esquerda',\n floatRight: 'Float Direita',\n floatNone: 'Sem Float',\n shapeRounded: 'Forma: Arredondado',\n shapeCircle: 'Forma: Círculo',\n shapeThumbnail: 'Forma: Minhatura',\n shapeNone: 'Forma: Nenhum',\n dragImageHere: 'Arraste uma imagem para aqui',\n dropImage: 'Arraste uma imagem ou texto',\n selectFromFiles: 'Selecione a partir dos arquivos',\n maximumFileSize: 'Tamanho máximo do fixeiro',\n maximumFileSizeError: 'Tamanho máximo do fixeiro é maior que o permitido.',\n url: 'Endereço da imagem',\n remove: 'Remover Imagem',\n original: 'Original',\n },\n video: {\n video: 'Vídeo',\n videoLink: 'Link para vídeo',\n insert: 'Inserir vídeo',\n url: 'URL do vídeo?',\n providers: '(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Inserir ligação',\n unlink: 'Remover ligação',\n edit: 'Editar',\n textToDisplay: 'Texto para exibir',\n url: 'Que endereço esta licação leva?',\n openInNewWindow: 'Abrir numa nova janela',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Adicionar linha acima',\n addRowBelow: 'Adicionar linha abaixo',\n addColLeft: 'Adicionar coluna à Esquerda',\n addColRight: 'Adicionar coluna à Esquerda',\n delRow: 'Excluir linha',\n delCol: 'Excluir coluna',\n delTable: 'Excluir tabela',\n },\n hr: {\n insert: 'Inserir linha horizontal',\n },\n style: {\n style: 'Estilo',\n p: 'Parágrafo',\n blockquote: 'Citação',\n pre: 'Código',\n h1: 'Título 1',\n h2: 'Título 2',\n h3: 'Título 3',\n h4: 'Título 4',\n h5: 'Título 5',\n h6: 'Título 6',\n },\n lists: {\n unordered: 'Lista com marcadores',\n ordered: 'Lista numerada',\n },\n options: {\n help: 'Ajuda',\n fullscreen: 'Janela Completa',\n codeview: 'Ver código-fonte',\n },\n paragraph: {\n paragraph: 'Parágrafo',\n outdent: 'Menor tabulação',\n indent: 'Maior tabulação',\n left: 'Alinhar à esquerda',\n center: 'Alinhar ao centro',\n right: 'Alinha à direita',\n justify: 'Justificado',\n },\n color: {\n recent: 'Cor recente',\n more: 'Mais cores',\n background: 'Fundo',\n foreground: 'Fonte',\n transparent: 'Transparente',\n setTransparent: 'Fundo transparente',\n reset: 'Restaurar',\n resetToDefault: 'Restaurar padrão',\n cpSelect: 'Selecionar',\n },\n shortcut: {\n shortcuts: 'Atalhos do teclado',\n close: 'Fechar',\n textFormatting: 'Formatação de texto',\n action: 'Ação',\n paragraphFormatting: 'Formatação de parágrafo',\n documentStyle: 'Estilo de documento',\n },\n help: {\n 'insertParagraph': 'Inserir Parágrafo',\n 'undo': 'Desfazer o último comando',\n 'redo': 'Refazer o último comando',\n 'tab': 'Maior tabulação',\n 'untab': 'Menor tabulação',\n 'bold': 'Colocar em negrito',\n 'italic': 'Colocar em itálico',\n 'underline': 'Colocar em sublinhado',\n 'strikethrough': 'Colocar em riscado',\n 'removeFormat': 'Limpar o estilo',\n 'justifyLeft': 'Definir alinhado à esquerda',\n 'justifyCenter': 'Definir alinhado ao centro',\n 'justifyRight': 'Definir alinhado à direita',\n 'justifyFull': 'Definir justificado',\n 'insertUnorderedList': 'Alternar lista não ordenada',\n 'insertOrderedList': 'Alternar lista ordenada',\n 'outdent': 'Recuar parágrafo atual',\n 'indent': 'Avançar parágrafo atual',\n 'formatPara': 'Alterar formato do bloco para parágrafo',\n 'formatH1': 'Alterar formato do bloco para Título 1',\n 'formatH2': 'Alterar formato do bloco para Título 2',\n 'formatH3': 'Alterar formato do bloco para Título 3',\n 'formatH4': 'Alterar formato do bloco para Título 4',\n 'formatH5': 'Alterar formato do bloco para Título 5',\n 'formatH6': 'Alterar formato do bloco para Título 6',\n 'insertHorizontalRule': 'Inserir linha horizontal',\n 'linkDialog.show': 'Inserir uma ligração',\n },\n history: {\n undo: 'Desfazer',\n redo: 'Refazer',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.js b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.js new file mode 100644 index 0000000..4b25717 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'ro-RO': { + font: { + bold: 'Îngroșat', + italic: 'Înclinat', + underline: 'Subliniat', + clear: 'Înlătură formatare font', + height: 'Înălțime rând', + name: 'Familie de fonturi', + strikethrough: 'Tăiat', + subscript: 'Indice', + superscript: 'Exponent', + size: 'Dimensiune font' + }, + image: { + image: 'Imagine', + insert: 'Inserează imagine', + resizeFull: 'Redimensionează complet', + resizeHalf: 'Redimensionează 1/2', + resizeQuarter: 'Redimensionează 1/4', + floatLeft: 'Aliniere la stânga', + floatRight: 'Aliniere la dreapta', + floatNone: 'Fară aliniere', + shapeRounded: 'Formă: Rotund', + shapeCircle: 'Formă: Cerc', + shapeThumbnail: 'Formă: Pictogramă', + shapeNone: 'Formă: Nici una', + dragImageHere: 'Trage o imagine sau un text aici', + dropImage: 'Eliberează imaginea sau textul', + selectFromFiles: 'Alege din fişiere', + maximumFileSize: 'Dimensiune maximă fișier', + maximumFileSizeError: 'Dimensiune maximă fișier depășită.', + url: 'URL imagine', + remove: 'Șterge imagine', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Link video', + insert: 'Inserează video', + url: 'URL video?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)' + }, + link: { + link: 'Link', + insert: 'Inserează link', + unlink: 'Înlătură link', + edit: 'Editează', + textToDisplay: 'Text ce va fi afişat', + url: 'La ce adresă URL trebuie să conducă acest link?', + openInNewWindow: 'Deschidere în fereastră nouă' + }, + table: { + table: 'Tabel', + addRowAbove: 'Adaugă rând deasupra', + addRowBelow: 'Adaugă rând dedesubt', + addColLeft: 'Adaugă coloană stânga', + addColRight: 'Adaugă coloană dreapta', + delRow: 'Șterge rând', + delCol: 'Șterge coloană', + delTable: 'Șterge tabel' + }, + hr: { + insert: 'Inserează o linie orizontală' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Preformatat', + h1: 'Titlu 1', + h2: 'Titlu 2', + h3: 'Titlu 3', + h4: 'Titlu 4', + h5: 'Titlu 5', + h6: 'Titlu 6' + }, + lists: { + unordered: 'Listă neordonată', + ordered: 'Listă ordonată' + }, + options: { + help: 'Ajutor', + fullscreen: 'Măreşte', + codeview: 'Sursă' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Creşte identarea', + indent: 'Scade identarea', + left: 'Aliniere la stânga', + center: 'Aliniere centrală', + right: 'Aliniere la dreapta', + justify: 'Aliniere în bloc' + }, + color: { + recent: 'Culoare recentă', + more: 'Mai multe culori', + background: 'Culoarea fundalului', + foreground: 'Culoarea textului', + transparent: 'Transparent', + setTransparent: 'Setează transparent', + reset: 'Resetează', + resetToDefault: 'Revino la iniţial' + }, + shortcut: { + shortcuts: 'Scurtături tastatură', + close: 'Închide', + textFormatting: 'Formatare text', + action: 'Acţiuni', + paragraphFormatting: 'Formatare paragraf', + documentStyle: 'Stil paragraf', + extraKeys: 'Taste extra' + }, + help: { + 'insertParagraph': 'Inserează paragraf', + 'undo': 'Revine la starea anterioară', + 'redo': 'Revine la starea ulterioară', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Setează stil îngroșat', + 'italic': 'Setează stil înclinat', + 'underline': 'Setează stil subliniat', + 'strikethrough': 'Setează stil tăiat', + 'removeFormat': 'Înlătură formatare', + 'justifyLeft': 'Setează aliniere stânga', + 'justifyCenter': 'Setează aliniere centru', + 'justifyRight': 'Setează aliniere dreapta', + 'justifyFull': 'Setează aliniere bloc', + 'insertUnorderedList': 'Comutare listă neordinată', + 'insertOrderedList': 'Comutare listă ordonată', + 'outdent': 'Înlătură indentare paragraf curent', + 'indent': 'Adaugă indentare paragraf curent', + 'formatPara': 'Schimbă formatarea selecției în paragraf', + 'formatH1': 'Schimbă formatarea selecției în H1', + 'formatH2': 'Schimbă formatarea selecției în H2', + 'formatH3': 'Schimbă formatarea selecției în H3', + 'formatH4': 'Schimbă formatarea selecției în H4', + 'formatH5': 'Schimbă formatarea selecției în H5', + 'formatH6': 'Schimbă formatarea selecției în H6', + 'insertHorizontalRule': 'Adaugă linie orizontală', + 'linkDialog.show': 'Inserează link' + }, + history: { + undo: 'Starea anterioară', + redo: 'Starea ulterioară' + }, + specialChar: { + specialChar: 'CARACTERE SPECIALE', + select: 'Alege caractere speciale' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-ro-RO.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.js.map new file mode 100644 index 0000000..78e87c7 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ro-RO.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ro-RO.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ro-RO': {\n font: {\n bold: 'Îngroșat',\n italic: 'Înclinat',\n underline: 'Subliniat',\n clear: 'Înlătură formatare font',\n height: 'Înălțime rând',\n name: 'Familie de fonturi',\n strikethrough: 'Tăiat',\n subscript: 'Indice',\n superscript: 'Exponent',\n size: 'Dimensiune font',\n },\n image: {\n image: 'Imagine',\n insert: 'Inserează imagine',\n resizeFull: 'Redimensionează complet',\n resizeHalf: 'Redimensionează 1/2',\n resizeQuarter: 'Redimensionează 1/4',\n floatLeft: 'Aliniere la stânga',\n floatRight: 'Aliniere la dreapta',\n floatNone: 'Fară aliniere',\n shapeRounded: 'Formă: Rotund',\n shapeCircle: 'Formă: Cerc',\n shapeThumbnail: 'Formă: Pictogramă',\n shapeNone: 'Formă: Nici una',\n dragImageHere: 'Trage o imagine sau un text aici',\n dropImage: 'Eliberează imaginea sau textul',\n selectFromFiles: 'Alege din fişiere',\n maximumFileSize: 'Dimensiune maximă fișier',\n maximumFileSizeError: 'Dimensiune maximă fișier depășită.',\n url: 'URL imagine',\n remove: 'Șterge imagine',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Link video',\n insert: 'Inserează video',\n url: 'URL video?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Inserează link',\n unlink: 'Înlătură link',\n edit: 'Editează',\n textToDisplay: 'Text ce va fi afişat',\n url: 'La ce adresă URL trebuie să conducă acest link?',\n openInNewWindow: 'Deschidere în fereastră nouă',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Adaugă rând deasupra',\n addRowBelow: 'Adaugă rând dedesubt',\n addColLeft: 'Adaugă coloană stânga',\n addColRight: 'Adaugă coloană dreapta',\n delRow: 'Șterge rând',\n delCol: 'Șterge coloană',\n delTable: 'Șterge tabel',\n },\n hr: {\n insert: 'Inserează o linie orizontală',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'Citat',\n pre: 'Preformatat',\n h1: 'Titlu 1',\n h2: 'Titlu 2',\n h3: 'Titlu 3',\n h4: 'Titlu 4',\n h5: 'Titlu 5',\n h6: 'Titlu 6',\n },\n lists: {\n unordered: 'Listă neordonată',\n ordered: 'Listă ordonată',\n },\n options: {\n help: 'Ajutor',\n fullscreen: 'Măreşte',\n codeview: 'Sursă',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Creşte identarea',\n indent: 'Scade identarea',\n left: 'Aliniere la stânga',\n center: 'Aliniere centrală',\n right: 'Aliniere la dreapta',\n justify: 'Aliniere în bloc',\n },\n color: {\n recent: 'Culoare recentă',\n more: 'Mai multe culori',\n background: 'Culoarea fundalului',\n foreground: 'Culoarea textului',\n transparent: 'Transparent',\n setTransparent: 'Setează transparent',\n reset: 'Resetează',\n resetToDefault: 'Revino la iniţial',\n },\n shortcut: {\n shortcuts: 'Scurtături tastatură',\n close: 'Închide',\n textFormatting: 'Formatare text',\n action: 'Acţiuni',\n paragraphFormatting: 'Formatare paragraf',\n documentStyle: 'Stil paragraf',\n extraKeys: 'Taste extra',\n },\n help: {\n 'insertParagraph': 'Inserează paragraf',\n 'undo': 'Revine la starea anterioară',\n 'redo': 'Revine la starea ulterioară',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Setează stil îngroșat',\n 'italic': 'Setează stil înclinat',\n 'underline': 'Setează stil subliniat',\n 'strikethrough': 'Setează stil tăiat',\n 'removeFormat': 'Înlătură formatare',\n 'justifyLeft': 'Setează aliniere stânga',\n 'justifyCenter': 'Setează aliniere centru',\n 'justifyRight': 'Setează aliniere dreapta',\n 'justifyFull': 'Setează aliniere bloc',\n 'insertUnorderedList': 'Comutare listă neordinată',\n 'insertOrderedList': 'Comutare listă ordonată',\n 'outdent': 'Înlătură indentare paragraf curent',\n 'indent': 'Adaugă indentare paragraf curent',\n 'formatPara': 'Schimbă formatarea selecției în paragraf',\n 'formatH1': 'Schimbă formatarea selecției în H1',\n 'formatH2': 'Schimbă formatarea selecției în H2',\n 'formatH3': 'Schimbă formatarea selecției în H3',\n 'formatH4': 'Schimbă formatarea selecției în H4',\n 'formatH5': 'Schimbă formatarea selecției în H5',\n 'formatH6': 'Schimbă formatarea selecției în H6',\n 'insertHorizontalRule': 'Adaugă linie orizontală',\n 'linkDialog.show': 'Inserează link',\n },\n history: {\n undo: 'Starea anterioară',\n redo: 'Starea ulterioară',\n },\n specialChar: {\n specialChar: 'CARACTERE SPECIALE',\n select: 'Alege caractere speciale',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.min.js new file mode 100644 index 0000000..73f0486 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"ro-RO":{font:{bold:"Îngroșat",italic:"Înclinat",underline:"Subliniat",clear:"Înlătură formatare font",height:"Înălțime rând",name:"Familie de fonturi",strikethrough:"Tăiat",subscript:"Indice",superscript:"Exponent",size:"Dimensiune font"},image:{image:"Imagine",insert:"Inserează imagine",resizeFull:"Redimensionează complet",resizeHalf:"Redimensionează 1/2",resizeQuarter:"Redimensionează 1/4",floatLeft:"Aliniere la stânga",floatRight:"Aliniere la dreapta",floatNone:"Fară aliniere",shapeRounded:"Formă: Rotund",shapeCircle:"Formă: Cerc",shapeThumbnail:"Formă: Pictogramă",shapeNone:"Formă: Nici una",dragImageHere:"Trage o imagine sau un text aici",dropImage:"Eliberează imaginea sau textul",selectFromFiles:"Alege din fişiere",maximumFileSize:"Dimensiune maximă fișier",maximumFileSizeError:"Dimensiune maximă fișier depășită.",url:"URL imagine",remove:"Șterge imagine",original:"Original"},video:{video:"Video",videoLink:"Link video",insert:"Inserează video",url:"URL video?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)"},link:{link:"Link",insert:"Inserează link",unlink:"Înlătură link",edit:"Editează",textToDisplay:"Text ce va fi afişat",url:"La ce adresă URL trebuie să conducă acest link?",openInNewWindow:"Deschidere în fereastră nouă"},table:{table:"Tabel",addRowAbove:"Adaugă rând deasupra",addRowBelow:"Adaugă rând dedesubt",addColLeft:"Adaugă coloană stânga",addColRight:"Adaugă coloană dreapta",delRow:"Șterge rând",delCol:"Șterge coloană",delTable:"Șterge tabel"},hr:{insert:"Inserează o linie orizontală"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Preformatat",h1:"Titlu 1",h2:"Titlu 2",h3:"Titlu 3",h4:"Titlu 4",h5:"Titlu 5",h6:"Titlu 6"},lists:{unordered:"Listă neordonată",ordered:"Listă ordonată"},options:{help:"Ajutor",fullscreen:"Măreşte",codeview:"Sursă"},paragraph:{paragraph:"Paragraf",outdent:"Creşte identarea",indent:"Scade identarea",left:"Aliniere la stânga",center:"Aliniere centrală",right:"Aliniere la dreapta",justify:"Aliniere în bloc"},color:{recent:"Culoare recentă",more:"Mai multe culori",background:"Culoarea fundalului",foreground:"Culoarea textului",transparent:"Transparent",setTransparent:"Setează transparent",reset:"Resetează",resetToDefault:"Revino la iniţial"},shortcut:{shortcuts:"Scurtături tastatură",close:"Închide",textFormatting:"Formatare text",action:"Acţiuni",paragraphFormatting:"Formatare paragraf",documentStyle:"Stil paragraf",extraKeys:"Taste extra"},help:{insertParagraph:"Inserează paragraf",undo:"Revine la starea anterioară",redo:"Revine la starea ulterioară",tab:"Tab",untab:"Untab",bold:"Setează stil îngroșat",italic:"Setează stil înclinat",underline:"Setează stil subliniat",strikethrough:"Setează stil tăiat",removeFormat:"Înlătură formatare",justifyLeft:"Setează aliniere stânga",justifyCenter:"Setează aliniere centru",justifyRight:"Setează aliniere dreapta",justifyFull:"Setează aliniere bloc",insertUnorderedList:"Comutare listă neordinată",insertOrderedList:"Comutare listă ordonată",outdent:"Înlătură indentare paragraf curent",indent:"Adaugă indentare paragraf curent",formatPara:"Schimbă formatarea selecției în paragraf",formatH1:"Schimbă formatarea selecției în H1",formatH2:"Schimbă formatarea selecției în H2",formatH3:"Schimbă formatarea selecției în H3",formatH4:"Schimbă formatarea selecției în H4",formatH5:"Schimbă formatarea selecției în H5",formatH6:"Schimbă formatarea selecției în H6",insertHorizontalRule:"Adaugă linie orizontală","linkDialog.show":"Inserează link"},history:{undo:"Starea anterioară",redo:"Starea ulterioară"},specialChar:{specialChar:"CARACTERE SPECIALE",select:"Alege caractere speciale"}}}),{};var e})); +//# sourceMappingURL=summernote-ro-RO.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.min.js.map new file mode 100644 index 0000000..3c73743 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ro-RO.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ro-RO.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,WACNC,OAAQ,WACRC,UAAW,YACXC,MAAO,0BACPC,OAAQ,gBACRC,KAAM,qBACNC,cAAe,QACfC,UAAW,SACXC,YAAa,WACbC,KAAM,mBAERC,MAAO,CACLA,MAAO,UACPC,OAAQ,oBACRC,WAAY,0BACZC,WAAY,sBACZC,cAAe,sBACfC,UAAW,qBACXC,WAAY,sBACZC,UAAW,gBACXC,aAAc,gBACdC,YAAa,cACbC,eAAgB,oBAChBC,UAAW,kBACXC,cAAe,mCACfC,UAAW,iCACXC,gBAAiB,oBACjBC,gBAAiB,2BACjBC,qBAAsB,qCACtBC,IAAK,cACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXpB,OAAQ,kBACRgB,IAAK,aACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,iBACRuB,OAAQ,gBACRC,KAAM,WACNC,cAAe,uBACfT,IAAK,kDACLU,gBAAiB,gCAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,uBACbC,YAAa,uBACbC,WAAY,wBACZC,YAAa,yBACbC,OAAQ,cACRC,OAAQ,iBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,gCAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,IACHC,WAAY,QACZC,IAAK,cACLC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,UACJC,GAAI,WAENC,MAAO,CACLC,UAAW,mBACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,SACNC,WAAY,UACZC,SAAU,SAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,mBACTC,OAAQ,kBACRC,KAAM,qBACNC,OAAQ,oBACRC,MAAO,sBACPC,QAAS,oBAEXC,MAAO,CACLC,OAAQ,kBACRC,KAAM,oBACNC,WAAY,sBACZC,WAAY,oBACZC,YAAa,cACbC,eAAgB,sBAChBC,MAAO,YACPC,eAAgB,qBAElBC,SAAU,CACRC,UAAW,uBACXC,MAAO,UACPC,eAAgB,iBAChBC,OAAQ,UACRC,oBAAqB,qBACrBC,cAAe,gBACfC,UAAW,eAEb1B,KAAM,CACJ,gBAAmB,qBACnB,KAAQ,8BACR,KAAQ,8BACR,IAAO,MACP,MAAS,QACT,KAAQ,wBACR,OAAU,wBACV,UAAa,yBACb,cAAiB,qBACjB,aAAgB,qBAChB,YAAe,0BACf,cAAiB,0BACjB,aAAgB,2BAChB,YAAe,wBACf,oBAAuB,4BACvB,kBAAqB,0BACrB,QAAW,qCACX,OAAU,mCACV,WAAc,2CACd,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,SAAY,qCACZ,qBAAwB,0BACxB,kBAAmB,kBAErB2B,QAAS,CACPC,KAAM,oBACNC,KAAM,qBAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,+B,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ro-RO.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ro-RO': {\n font: {\n bold: 'Îngroșat',\n italic: 'Înclinat',\n underline: 'Subliniat',\n clear: 'Înlătură formatare font',\n height: 'Înălțime rând',\n name: 'Familie de fonturi',\n strikethrough: 'Tăiat',\n subscript: 'Indice',\n superscript: 'Exponent',\n size: 'Dimensiune font',\n },\n image: {\n image: 'Imagine',\n insert: 'Inserează imagine',\n resizeFull: 'Redimensionează complet',\n resizeHalf: 'Redimensionează 1/2',\n resizeQuarter: 'Redimensionează 1/4',\n floatLeft: 'Aliniere la stânga',\n floatRight: 'Aliniere la dreapta',\n floatNone: 'Fară aliniere',\n shapeRounded: 'Formă: Rotund',\n shapeCircle: 'Formă: Cerc',\n shapeThumbnail: 'Formă: Pictogramă',\n shapeNone: 'Formă: Nici una',\n dragImageHere: 'Trage o imagine sau un text aici',\n dropImage: 'Eliberează imaginea sau textul',\n selectFromFiles: 'Alege din fişiere',\n maximumFileSize: 'Dimensiune maximă fișier',\n maximumFileSizeError: 'Dimensiune maximă fișier depășită.',\n url: 'URL imagine',\n remove: 'Șterge imagine',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Link video',\n insert: 'Inserează video',\n url: 'URL video?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Inserează link',\n unlink: 'Înlătură link',\n edit: 'Editează',\n textToDisplay: 'Text ce va fi afişat',\n url: 'La ce adresă URL trebuie să conducă acest link?',\n openInNewWindow: 'Deschidere în fereastră nouă',\n },\n table: {\n table: 'Tabel',\n addRowAbove: 'Adaugă rând deasupra',\n addRowBelow: 'Adaugă rând dedesubt',\n addColLeft: 'Adaugă coloană stânga',\n addColRight: 'Adaugă coloană dreapta',\n delRow: 'Șterge rând',\n delCol: 'Șterge coloană',\n delTable: 'Șterge tabel',\n },\n hr: {\n insert: 'Inserează o linie orizontală',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'Citat',\n pre: 'Preformatat',\n h1: 'Titlu 1',\n h2: 'Titlu 2',\n h3: 'Titlu 3',\n h4: 'Titlu 4',\n h5: 'Titlu 5',\n h6: 'Titlu 6',\n },\n lists: {\n unordered: 'Listă neordonată',\n ordered: 'Listă ordonată',\n },\n options: {\n help: 'Ajutor',\n fullscreen: 'Măreşte',\n codeview: 'Sursă',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Creşte identarea',\n indent: 'Scade identarea',\n left: 'Aliniere la stânga',\n center: 'Aliniere centrală',\n right: 'Aliniere la dreapta',\n justify: 'Aliniere în bloc',\n },\n color: {\n recent: 'Culoare recentă',\n more: 'Mai multe culori',\n background: 'Culoarea fundalului',\n foreground: 'Culoarea textului',\n transparent: 'Transparent',\n setTransparent: 'Setează transparent',\n reset: 'Resetează',\n resetToDefault: 'Revino la iniţial',\n },\n shortcut: {\n shortcuts: 'Scurtături tastatură',\n close: 'Închide',\n textFormatting: 'Formatare text',\n action: 'Acţiuni',\n paragraphFormatting: 'Formatare paragraf',\n documentStyle: 'Stil paragraf',\n extraKeys: 'Taste extra',\n },\n help: {\n 'insertParagraph': 'Inserează paragraf',\n 'undo': 'Revine la starea anterioară',\n 'redo': 'Revine la starea ulterioară',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Setează stil îngroșat',\n 'italic': 'Setează stil înclinat',\n 'underline': 'Setează stil subliniat',\n 'strikethrough': 'Setează stil tăiat',\n 'removeFormat': 'Înlătură formatare',\n 'justifyLeft': 'Setează aliniere stânga',\n 'justifyCenter': 'Setează aliniere centru',\n 'justifyRight': 'Setează aliniere dreapta',\n 'justifyFull': 'Setează aliniere bloc',\n 'insertUnorderedList': 'Comutare listă neordinată',\n 'insertOrderedList': 'Comutare listă ordonată',\n 'outdent': 'Înlătură indentare paragraf curent',\n 'indent': 'Adaugă indentare paragraf curent',\n 'formatPara': 'Schimbă formatarea selecției în paragraf',\n 'formatH1': 'Schimbă formatarea selecției în H1',\n 'formatH2': 'Schimbă formatarea selecției în H2',\n 'formatH3': 'Schimbă formatarea selecției în H3',\n 'formatH4': 'Schimbă formatarea selecției în H4',\n 'formatH5': 'Schimbă formatarea selecției în H5',\n 'formatH6': 'Schimbă formatarea selecției în H6',\n 'insertHorizontalRule': 'Adaugă linie orizontală',\n 'linkDialog.show': 'Inserează link',\n },\n history: {\n undo: 'Starea anterioară',\n redo: 'Starea ulterioară',\n },\n specialChar: {\n specialChar: 'CARACTERE SPECIALE',\n select: 'Alege caractere speciale',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.js b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.js new file mode 100644 index 0000000..a5293e3 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'ru-RU': { + font: { + bold: 'Полужирный', + italic: 'Курсив', + underline: 'Подчёркнутый', + clear: 'Убрать стили шрифта', + height: 'Высота линии', + name: 'Шрифт', + strikethrough: 'Зачёркнутый', + subscript: 'Нижний индекс', + superscript: 'Верхний индекс', + size: 'Размер шрифта' + }, + image: { + image: 'Картинка', + insert: 'Вставить картинку', + resizeFull: 'Восстановить размер', + resizeHalf: 'Уменьшить до 50%', + resizeQuarter: 'Уменьшить до 25%', + floatLeft: 'Расположить слева', + floatRight: 'Расположить справа', + floatNone: 'Расположение по-умолчанию', + shapeRounded: 'Форма: Закругленная', + shapeCircle: 'Форма: Круг', + shapeThumbnail: 'Форма: Миниатюра', + shapeNone: 'Форма: Нет', + dragImageHere: 'Перетащите сюда картинку', + dropImage: 'Перетащите картинку', + selectFromFiles: 'Выбрать из файлов', + maximumFileSize: 'Максимальный размер файла', + maximumFileSizeError: 'Превышен максимальный размер файла', + url: 'URL картинки', + remove: 'Удалить картинку', + original: 'Оригинал' + }, + video: { + video: 'Видео', + videoLink: 'Ссылка на видео', + insert: 'Вставить видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Ссылка', + insert: 'Вставить ссылку', + unlink: 'Убрать ссылку', + edit: 'Редактировать', + textToDisplay: 'Отображаемый текст', + url: 'URL для перехода', + openInNewWindow: 'Открывать в новом окне', + useProtocol: 'Использовать протокол по умолчанию' + }, + table: { + table: 'Таблица', + addRowAbove: 'Добавить строку выше', + addRowBelow: 'Добавить строку ниже', + addColLeft: 'Добавить столбец слева', + addColRight: 'Добавить столбец справа', + delRow: 'Удалить строку', + delCol: 'Удалить столбец', + delTable: 'Удалить таблицу' + }, + hr: { + insert: 'Вставить горизонтальную линию' + }, + style: { + style: 'Стиль', + p: 'Нормальный', + blockquote: 'Цитата', + pre: 'Код', + h1: 'Заголовок 1', + h2: 'Заголовок 2', + h3: 'Заголовок 3', + h4: 'Заголовок 4', + h5: 'Заголовок 5', + h6: 'Заголовок 6' + }, + lists: { + unordered: 'Маркированный список', + ordered: 'Нумерованный список' + }, + options: { + help: 'Помощь', + fullscreen: 'На весь экран', + codeview: 'Исходный код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Уменьшить отступ', + indent: 'Увеличить отступ', + left: 'Выровнять по левому краю', + center: 'Выровнять по центру', + right: 'Выровнять по правому краю', + justify: 'Растянуть по ширине' + }, + color: { + recent: 'Последний цвет', + more: 'Еще цвета', + background: 'Цвет фона', + foreground: 'Цвет шрифта', + transparent: 'Прозрачный', + setTransparent: 'Сделать прозрачным', + reset: 'Сброс', + resetToDefault: 'Восстановить умолчания' + }, + shortcut: { + shortcuts: 'Сочетания клавиш', + close: 'Закрыть', + textFormatting: 'Форматирование текста', + action: 'Действие', + paragraphFormatting: 'Форматирование параграфа', + documentStyle: 'Стиль документа', + extraKeys: 'Дополнительные комбинации' + }, + help: { + 'insertParagraph': 'Новый параграф', + 'undo': 'Отменить последнюю команду', + 'redo': 'Повторить последнюю команду', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Установить стиль "Жирный"', + 'italic': 'Установить стиль "Наклонный"', + 'underline': 'Установить стиль "Подчеркнутый"', + 'strikethrough': 'Установить стиль "Зачеркнутый"', + 'removeFormat': 'Сборсить стили', + 'justifyLeft': 'Выровнять по левому краю', + 'justifyCenter': 'Выровнять по центру', + 'justifyRight': 'Выровнять по правому краю', + 'justifyFull': 'Растянуть на всю ширину', + 'insertUnorderedList': 'Включить/отключить маркированный список', + 'insertOrderedList': 'Включить/отключить нумерованный список', + 'outdent': 'Убрать отступ в текущем параграфе', + 'indent': 'Вставить отступ в текущем параграфе', + 'formatPara': 'Форматировать текущий блок как параграф (тег P)', + 'formatH1': 'Форматировать текущий блок как H1', + 'formatH2': 'Форматировать текущий блок как H2', + 'formatH3': 'Форматировать текущий блок как H3', + 'formatH4': 'Форматировать текущий блок как H4', + 'formatH5': 'Форматировать текущий блок как H5', + 'formatH6': 'Форматировать текущий блок как H6', + 'insertHorizontalRule': 'Вставить горизонтальную черту', + 'linkDialog.show': 'Показать диалог "Ссылка"' + }, + history: { + undo: 'Отменить', + redo: 'Повтор' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-ru-RU.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.js.map new file mode 100644 index 0000000..f9e2bc4 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ru-RU.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ru-RU.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ru-RU': {\n font: {\n bold: 'Полужирный',\n italic: 'Курсив',\n underline: 'Подчёркнутый',\n clear: 'Убрать стили шрифта',\n height: 'Высота линии',\n name: 'Шрифт',\n strikethrough: 'Зачёркнутый',\n subscript: 'Нижний индекс',\n superscript: 'Верхний индекс',\n size: 'Размер шрифта',\n },\n image: {\n image: 'Картинка',\n insert: 'Вставить картинку',\n resizeFull: 'Восстановить размер',\n resizeHalf: 'Уменьшить до 50%',\n resizeQuarter: 'Уменьшить до 25%',\n floatLeft: 'Расположить слева',\n floatRight: 'Расположить справа',\n floatNone: 'Расположение по-умолчанию',\n shapeRounded: 'Форма: Закругленная',\n shapeCircle: 'Форма: Круг',\n shapeThumbnail: 'Форма: Миниатюра',\n shapeNone: 'Форма: Нет',\n dragImageHere: 'Перетащите сюда картинку',\n dropImage: 'Перетащите картинку',\n selectFromFiles: 'Выбрать из файлов',\n maximumFileSize: 'Максимальный размер файла',\n maximumFileSizeError: 'Превышен максимальный размер файла',\n url: 'URL картинки',\n remove: 'Удалить картинку',\n original: 'Оригинал',\n },\n video: {\n video: 'Видео',\n videoLink: 'Ссылка на видео',\n insert: 'Вставить видео',\n url: 'URL видео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)',\n },\n link: {\n link: 'Ссылка',\n insert: 'Вставить ссылку',\n unlink: 'Убрать ссылку',\n edit: 'Редактировать',\n textToDisplay: 'Отображаемый текст',\n url: 'URL для перехода',\n openInNewWindow: 'Открывать в новом окне',\n useProtocol: 'Использовать протокол по умолчанию',\n },\n table: {\n table: 'Таблица',\n addRowAbove: 'Добавить строку выше',\n addRowBelow: 'Добавить строку ниже',\n addColLeft: 'Добавить столбец слева',\n addColRight: 'Добавить столбец справа',\n delRow: 'Удалить строку',\n delCol: 'Удалить столбец',\n delTable: 'Удалить таблицу',\n },\n hr: {\n insert: 'Вставить горизонтальную линию',\n },\n style: {\n style: 'Стиль',\n p: 'Нормальный',\n blockquote: 'Цитата',\n pre: 'Код',\n h1: 'Заголовок 1',\n h2: 'Заголовок 2',\n h3: 'Заголовок 3',\n h4: 'Заголовок 4',\n h5: 'Заголовок 5',\n h6: 'Заголовок 6',\n },\n lists: {\n unordered: 'Маркированный список',\n ordered: 'Нумерованный список',\n },\n options: {\n help: 'Помощь',\n fullscreen: 'На весь экран',\n codeview: 'Исходный код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Уменьшить отступ',\n indent: 'Увеличить отступ',\n left: 'Выровнять по левому краю',\n center: 'Выровнять по центру',\n right: 'Выровнять по правому краю',\n justify: 'Растянуть по ширине',\n },\n color: {\n recent: 'Последний цвет',\n more: 'Еще цвета',\n background: 'Цвет фона',\n foreground: 'Цвет шрифта',\n transparent: 'Прозрачный',\n setTransparent: 'Сделать прозрачным',\n reset: 'Сброс',\n resetToDefault: 'Восстановить умолчания',\n },\n shortcut: {\n shortcuts: 'Сочетания клавиш',\n close: 'Закрыть',\n textFormatting: 'Форматирование текста',\n action: 'Действие',\n paragraphFormatting: 'Форматирование параграфа',\n documentStyle: 'Стиль документа',\n extraKeys: 'Дополнительные комбинации',\n },\n help: {\n 'insertParagraph': 'Новый параграф',\n 'undo': 'Отменить последнюю команду',\n 'redo': 'Повторить последнюю команду',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Установить стиль \"Жирный\"',\n 'italic': 'Установить стиль \"Наклонный\"',\n 'underline': 'Установить стиль \"Подчеркнутый\"',\n 'strikethrough': 'Установить стиль \"Зачеркнутый\"',\n 'removeFormat': 'Сборсить стили',\n 'justifyLeft': 'Выровнять по левому краю',\n 'justifyCenter': 'Выровнять по центру',\n 'justifyRight': 'Выровнять по правому краю',\n 'justifyFull': 'Растянуть на всю ширину',\n 'insertUnorderedList': 'Включить/отключить маркированный список',\n 'insertOrderedList': 'Включить/отключить нумерованный список',\n 'outdent': 'Убрать отступ в текущем параграфе',\n 'indent': 'Вставить отступ в текущем параграфе',\n 'formatPara': 'Форматировать текущий блок как параграф (тег P)',\n 'formatH1': 'Форматировать текущий блок как H1',\n 'formatH2': 'Форматировать текущий блок как H2',\n 'formatH3': 'Форматировать текущий блок как H3',\n 'formatH4': 'Форматировать текущий блок как H4',\n 'formatH5': 'Форматировать текущий блок как H5',\n 'formatH6': 'Форматировать текущий блок как H6',\n 'insertHorizontalRule': 'Вставить горизонтальную черту',\n 'linkDialog.show': 'Показать диалог \"Ссылка\"',\n },\n history: {\n undo: 'Отменить',\n redo: 'Повтор',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.min.js new file mode 100644 index 0000000..2ba8a33 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"ru-RU":{font:{bold:"Полужирный",italic:"Курсив",underline:"Подчёркнутый",clear:"Убрать стили шрифта",height:"Высота линии",name:"Шрифт",strikethrough:"Зачёркнутый",subscript:"Нижний индекс",superscript:"Верхний индекс",size:"Размер шрифта"},image:{image:"Картинка",insert:"Вставить картинку",resizeFull:"Восстановить размер",resizeHalf:"Уменьшить до 50%",resizeQuarter:"Уменьшить до 25%",floatLeft:"Расположить слева",floatRight:"Расположить справа",floatNone:"Расположение по-умолчанию",shapeRounded:"Форма: Закругленная",shapeCircle:"Форма: Круг",shapeThumbnail:"Форма: Миниатюра",shapeNone:"Форма: Нет",dragImageHere:"Перетащите сюда картинку",dropImage:"Перетащите картинку",selectFromFiles:"Выбрать из файлов",maximumFileSize:"Максимальный размер файла",maximumFileSizeError:"Превышен максимальный размер файла",url:"URL картинки",remove:"Удалить картинку",original:"Оригинал"},video:{video:"Видео",videoLink:"Ссылка на видео",insert:"Вставить видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Ссылка",insert:"Вставить ссылку",unlink:"Убрать ссылку",edit:"Редактировать",textToDisplay:"Отображаемый текст",url:"URL для перехода",openInNewWindow:"Открывать в новом окне",useProtocol:"Использовать протокол по умолчанию"},table:{table:"Таблица",addRowAbove:"Добавить строку выше",addRowBelow:"Добавить строку ниже",addColLeft:"Добавить столбец слева",addColRight:"Добавить столбец справа",delRow:"Удалить строку",delCol:"Удалить столбец",delTable:"Удалить таблицу"},hr:{insert:"Вставить горизонтальную линию"},style:{style:"Стиль",p:"Нормальный",blockquote:"Цитата",pre:"Код",h1:"Заголовок 1",h2:"Заголовок 2",h3:"Заголовок 3",h4:"Заголовок 4",h5:"Заголовок 5",h6:"Заголовок 6"},lists:{unordered:"Маркированный список",ordered:"Нумерованный список"},options:{help:"Помощь",fullscreen:"На весь экран",codeview:"Исходный код"},paragraph:{paragraph:"Параграф",outdent:"Уменьшить отступ",indent:"Увеличить отступ",left:"Выровнять по левому краю",center:"Выровнять по центру",right:"Выровнять по правому краю",justify:"Растянуть по ширине"},color:{recent:"Последний цвет",more:"Еще цвета",background:"Цвет фона",foreground:"Цвет шрифта",transparent:"Прозрачный",setTransparent:"Сделать прозрачным",reset:"Сброс",resetToDefault:"Восстановить умолчания"},shortcut:{shortcuts:"Сочетания клавиш",close:"Закрыть",textFormatting:"Форматирование текста",action:"Действие",paragraphFormatting:"Форматирование параграфа",documentStyle:"Стиль документа",extraKeys:"Дополнительные комбинации"},help:{insertParagraph:"Новый параграф",undo:"Отменить последнюю команду",redo:"Повторить последнюю команду",tab:"Tab",untab:"Untab",bold:'Установить стиль "Жирный"',italic:'Установить стиль "Наклонный"',underline:'Установить стиль "Подчеркнутый"',strikethrough:'Установить стиль "Зачеркнутый"',removeFormat:"Сборсить стили",justifyLeft:"Выровнять по левому краю",justifyCenter:"Выровнять по центру",justifyRight:"Выровнять по правому краю",justifyFull:"Растянуть на всю ширину",insertUnorderedList:"Включить/отключить маркированный список",insertOrderedList:"Включить/отключить нумерованный список",outdent:"Убрать отступ в текущем параграфе",indent:"Вставить отступ в текущем параграфе",formatPara:"Форматировать текущий блок как параграф (тег P)",formatH1:"Форматировать текущий блок как H1",formatH2:"Форматировать текущий блок как H2",formatH3:"Форматировать текущий блок как H3",formatH4:"Форматировать текущий блок как H4",formatH5:"Форматировать текущий блок как H5",formatH6:"Форматировать текущий блок как H6",insertHorizontalRule:"Вставить горизонтальную черту","linkDialog.show":'Показать диалог "Ссылка"'},history:{undo:"Отменить",redo:"Повтор"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-ru-RU.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.min.js.map new file mode 100644 index 0000000..e322043 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ru-RU.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ru-RU.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,aACNC,OAAQ,SACRC,UAAW,eACXC,MAAO,sBACPC,OAAQ,eACRC,KAAM,QACNC,cAAe,cACfC,UAAW,gBACXC,YAAa,iBACbC,KAAM,iBAERC,MAAO,CACLA,MAAO,WACPC,OAAQ,oBACRC,WAAY,sBACZC,WAAY,mBACZC,cAAe,mBACfC,UAAW,oBACXC,WAAY,qBACZC,UAAW,4BACXC,aAAc,sBACdC,YAAa,cACbC,eAAgB,mBAChBC,UAAW,aACXC,cAAe,2BACfC,UAAW,sBACXC,gBAAiB,oBACjBC,gBAAiB,4BACjBC,qBAAsB,qCACtBC,IAAK,eACLC,OAAQ,mBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,kBACXpB,OAAQ,iBACRgB,IAAK,YACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,SACNtB,OAAQ,kBACRuB,OAAQ,gBACRC,KAAM,gBACNC,cAAe,qBACfT,IAAK,mBACLU,gBAAiB,yBACjBC,YAAa,sCAEfC,MAAO,CACLA,MAAO,UACPC,YAAa,uBACbC,YAAa,uBACbC,WAAY,yBACZC,YAAa,0BACbC,OAAQ,iBACRC,OAAQ,kBACRC,SAAU,mBAEZC,GAAI,CACFpC,OAAQ,iCAEVqC,MAAO,CACLA,MAAO,QACPC,EAAG,aACHC,WAAY,SACZC,IAAK,MACLC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eAENC,MAAO,CACLC,UAAW,uBACXC,QAAS,uBAEXC,QAAS,CACPC,KAAM,SACNC,WAAY,gBACZC,SAAU,gBAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,mBACTC,OAAQ,mBACRC,KAAM,2BACNC,OAAQ,sBACRC,MAAO,4BACPC,QAAS,uBAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,YACNC,WAAY,YACZC,WAAY,cACZC,YAAa,aACbC,eAAgB,qBAChBC,MAAO,QACPC,eAAgB,0BAElBC,SAAU,CACRC,UAAW,mBACXC,MAAO,UACPC,eAAgB,wBAChBC,OAAQ,WACRC,oBAAqB,2BACrBC,cAAe,kBACfC,UAAW,6BAEb1B,KAAM,CACJ,gBAAmB,iBACnB,KAAQ,6BACR,KAAQ,8BACR,IAAO,MACP,MAAS,QACT,KAAQ,4BACR,OAAU,+BACV,UAAa,kCACb,cAAiB,iCACjB,aAAgB,iBAChB,YAAe,2BACf,cAAiB,sBACjB,aAAgB,4BAChB,YAAe,0BACf,oBAAuB,0CACvB,kBAAqB,yCACrB,QAAW,oCACX,OAAU,sCACV,WAAc,kDACd,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,qBAAwB,gCACxB,kBAAmB,4BAErB2B,QAAS,CACPC,KAAM,WACNC,KAAM,UAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ru-RU.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ru-RU': {\n font: {\n bold: 'Полужирный',\n italic: 'Курсив',\n underline: 'Подчёркнутый',\n clear: 'Убрать стили шрифта',\n height: 'Высота линии',\n name: 'Шрифт',\n strikethrough: 'Зачёркнутый',\n subscript: 'Нижний индекс',\n superscript: 'Верхний индекс',\n size: 'Размер шрифта',\n },\n image: {\n image: 'Картинка',\n insert: 'Вставить картинку',\n resizeFull: 'Восстановить размер',\n resizeHalf: 'Уменьшить до 50%',\n resizeQuarter: 'Уменьшить до 25%',\n floatLeft: 'Расположить слева',\n floatRight: 'Расположить справа',\n floatNone: 'Расположение по-умолчанию',\n shapeRounded: 'Форма: Закругленная',\n shapeCircle: 'Форма: Круг',\n shapeThumbnail: 'Форма: Миниатюра',\n shapeNone: 'Форма: Нет',\n dragImageHere: 'Перетащите сюда картинку',\n dropImage: 'Перетащите картинку',\n selectFromFiles: 'Выбрать из файлов',\n maximumFileSize: 'Максимальный размер файла',\n maximumFileSizeError: 'Превышен максимальный размер файла',\n url: 'URL картинки',\n remove: 'Удалить картинку',\n original: 'Оригинал',\n },\n video: {\n video: 'Видео',\n videoLink: 'Ссылка на видео',\n insert: 'Вставить видео',\n url: 'URL видео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)',\n },\n link: {\n link: 'Ссылка',\n insert: 'Вставить ссылку',\n unlink: 'Убрать ссылку',\n edit: 'Редактировать',\n textToDisplay: 'Отображаемый текст',\n url: 'URL для перехода',\n openInNewWindow: 'Открывать в новом окне',\n useProtocol: 'Использовать протокол по умолчанию',\n },\n table: {\n table: 'Таблица',\n addRowAbove: 'Добавить строку выше',\n addRowBelow: 'Добавить строку ниже',\n addColLeft: 'Добавить столбец слева',\n addColRight: 'Добавить столбец справа',\n delRow: 'Удалить строку',\n delCol: 'Удалить столбец',\n delTable: 'Удалить таблицу',\n },\n hr: {\n insert: 'Вставить горизонтальную линию',\n },\n style: {\n style: 'Стиль',\n p: 'Нормальный',\n blockquote: 'Цитата',\n pre: 'Код',\n h1: 'Заголовок 1',\n h2: 'Заголовок 2',\n h3: 'Заголовок 3',\n h4: 'Заголовок 4',\n h5: 'Заголовок 5',\n h6: 'Заголовок 6',\n },\n lists: {\n unordered: 'Маркированный список',\n ordered: 'Нумерованный список',\n },\n options: {\n help: 'Помощь',\n fullscreen: 'На весь экран',\n codeview: 'Исходный код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Уменьшить отступ',\n indent: 'Увеличить отступ',\n left: 'Выровнять по левому краю',\n center: 'Выровнять по центру',\n right: 'Выровнять по правому краю',\n justify: 'Растянуть по ширине',\n },\n color: {\n recent: 'Последний цвет',\n more: 'Еще цвета',\n background: 'Цвет фона',\n foreground: 'Цвет шрифта',\n transparent: 'Прозрачный',\n setTransparent: 'Сделать прозрачным',\n reset: 'Сброс',\n resetToDefault: 'Восстановить умолчания',\n },\n shortcut: {\n shortcuts: 'Сочетания клавиш',\n close: 'Закрыть',\n textFormatting: 'Форматирование текста',\n action: 'Действие',\n paragraphFormatting: 'Форматирование параграфа',\n documentStyle: 'Стиль документа',\n extraKeys: 'Дополнительные комбинации',\n },\n help: {\n 'insertParagraph': 'Новый параграф',\n 'undo': 'Отменить последнюю команду',\n 'redo': 'Повторить последнюю команду',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Установить стиль \"Жирный\"',\n 'italic': 'Установить стиль \"Наклонный\"',\n 'underline': 'Установить стиль \"Подчеркнутый\"',\n 'strikethrough': 'Установить стиль \"Зачеркнутый\"',\n 'removeFormat': 'Сборсить стили',\n 'justifyLeft': 'Выровнять по левому краю',\n 'justifyCenter': 'Выровнять по центру',\n 'justifyRight': 'Выровнять по правому краю',\n 'justifyFull': 'Растянуть на всю ширину',\n 'insertUnorderedList': 'Включить/отключить маркированный список',\n 'insertOrderedList': 'Включить/отключить нумерованный список',\n 'outdent': 'Убрать отступ в текущем параграфе',\n 'indent': 'Вставить отступ в текущем параграфе',\n 'formatPara': 'Форматировать текущий блок как параграф (тег P)',\n 'formatH1': 'Форматировать текущий блок как H1',\n 'formatH2': 'Форматировать текущий блок как H2',\n 'formatH3': 'Форматировать текущий блок как H3',\n 'formatH4': 'Форматировать текущий блок как H4',\n 'formatH5': 'Форматировать текущий блок как H5',\n 'formatH6': 'Форматировать текущий блок как H6',\n 'insertHorizontalRule': 'Вставить горизонтальную черту',\n 'linkDialog.show': 'Показать диалог \"Ссылка\"',\n },\n history: {\n undo: 'Отменить',\n redo: 'Повтор',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.js b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.js new file mode 100644 index 0000000..46ebb4f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'sk-SK': { + font: { + bold: 'Tučné', + italic: 'Kurzíva', + underline: 'Podčiarknutie', + clear: 'Odstrániť štýl písma', + height: 'Výška riadku', + name: 'Názov', + strikethrough: 'Prečiarknuté', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Veľkosť písma' + }, + image: { + image: 'Obrázok', + insert: 'Vložiť obrázok', + resizeFull: 'Pôvodná veľkosť', + resizeHalf: 'Polovičná veľkosť', + resizeQuarter: 'Štvrtinová veľkosť', + floatLeft: 'Umiestniť doľava', + floatRight: 'Umiestniť doprava', + floatNone: 'Bez zarovnania', + shapeRounded: 'Tvar: Zaoblené', + shapeCircle: 'Tvar: Kruh', + shapeThumbnail: 'Tvar: Náhľad', + shapeNone: 'Tvar: Žiadne', + dragImageHere: 'Pretiahnuť sem obrázok', + dropImage: 'Pretiahnuť sem obrázok alebo text', + selectFromFiles: 'Vybrať súbor', + maximumFileSize: 'Maximálna veľkosť súboru', + maximumFileSizeError: 'Maximálna veľkosť súboru bola prekročená.', + url: 'URL obrázku', + removeMedia: 'Odstrániť obrázok', + original: 'Originál' + }, + video: { + video: 'Video', + videoLink: 'Odkaz videa', + insert: 'Vložiť video', + url: 'URL videa?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)' + }, + link: { + link: 'Odkaz', + insert: 'Vytvoriť odkaz', + unlink: 'Zrušiť odkaz', + edit: 'Upraviť', + textToDisplay: 'Zobrazovaný text', + url: 'Na akú URL adresu má tento odkaz viesť?', + openInNewWindow: 'Otvoriť v novom okne', + useProtocol: 'Použiť predvolený protokol' + }, + table: { + table: 'Tabuľka', + addRowAbove: 'Pridať riadok nad', + addRowBelow: 'Pridať riadok pod', + addColLeft: 'Pridať stĺpec vľavo', + addColRight: 'Pridať stĺpec vpravo', + delRow: 'Odstrániť riadok', + delCol: 'Odstrániť stĺpec', + delTable: 'Odstrániť tabuľku' + }, + hr: { + insert: 'Vložit vodorovnú čiaru' + }, + style: { + style: 'Štýl', + p: 'Normálny', + blockquote: 'Citácia', + pre: 'Kód', + h1: 'Nadpis 1', + h2: 'Nadpis 2', + h3: 'Nadpis 3', + h4: 'Nadpis 4', + h5: 'Nadpis 5', + h6: 'Nadpis 6' + }, + lists: { + unordered: 'Odrážkový zoznam', + ordered: 'Číselný zoznam' + }, + options: { + help: 'Pomoc', + fullscreen: 'Celá obrazovka', + codeview: 'HTML kód' + }, + paragraph: { + paragraph: 'Odsek', + outdent: 'Zväčšiť odsadenie', + indent: 'Zmenšiť odsadenie', + left: 'Zarovnať doľava', + center: 'Zarovnať na stred', + right: 'Zarovnať doprava', + justify: 'Zarovnať obojstranne' + }, + color: { + recent: 'Aktuálna farba', + more: 'Dalšie farby', + background: 'Farba pozadia', + foreground: 'Farba písma', + transparent: 'Priehľadnosť', + setTransparent: 'Nastaviť priehľadnosť', + reset: 'Obnoviť', + resetToDefault: 'Obnoviť prednastavené' + }, + shortcut: { + shortcuts: 'Klávesové skratky', + close: 'Zavrieť', + textFormatting: 'Formátovanie textu', + action: 'Akcia', + paragraphFormatting: 'Formátovanie odseku', + documentStyle: 'Štýl dokumentu', + extraKeys: 'Ďalšie kombinácie' + }, + help: { + 'insertParagraph': 'Vložiť odsek', + 'undo': 'Vrátiť posledný krok', + 'redo': 'Obnoviť posledný krok', + 'tab': 'Odsadiť', + 'untab': 'Zmenšiť odsadenie', + 'bold': 'Tučné', + 'italic': 'Kurzívu', + 'underline': 'Podčiarknutie', + 'strikethrough': 'Preškrknutý text', + 'removeFormat': 'Odstrániť formátovanie', + 'justifyLeft': 'Odsadenie zľava', + 'justifyCenter': 'Vycentrovať', + 'justifyRight': 'Odsadenie zprava', + 'justifyFull': 'Zarovnať do bloku', + 'insertUnorderedList': 'Odrážkový zoznam', + 'insertOrderedList': 'Číselný zoznam', + 'outdent': 'Zrušiť odsadenie aktuálneho odseku', + 'indent': 'Odsadiť aktuálny odsek', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Vložiť horizontálne pravidlo', + 'linkDialog.show': 'Dialóg na zadanie odkazu' + }, + history: { + undo: 'Krok vzad', + redo: 'Krok dopredu' + }, + specialChar: { + specialChar: 'ŠPECIÁLNE ZNAKY', + select: 'Vybrať špeciálne znaky' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-sk-SK.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.js.map new file mode 100644 index 0000000..c5aa18d --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sk-SK.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sk-SK.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sk-SK': {\n font: {\n bold: 'Tučné',\n italic: 'Kurzíva',\n underline: 'Podčiarknutie',\n clear: 'Odstrániť štýl písma',\n height: 'Výška riadku',\n name: 'Názov',\n strikethrough: 'Prečiarknuté',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Veľkosť písma',\n },\n image: {\n image: 'Obrázok',\n insert: 'Vložiť obrázok',\n resizeFull: 'Pôvodná veľkosť',\n resizeHalf: 'Polovičná veľkosť',\n resizeQuarter: 'Štvrtinová veľkosť',\n floatLeft: 'Umiestniť doľava',\n floatRight: 'Umiestniť doprava',\n floatNone: 'Bez zarovnania',\n shapeRounded: 'Tvar: Zaoblené',\n shapeCircle: 'Tvar: Kruh',\n shapeThumbnail: 'Tvar: Náhľad',\n shapeNone: 'Tvar: Žiadne',\n dragImageHere: 'Pretiahnuť sem obrázok',\n dropImage: 'Pretiahnuť sem obrázok alebo text',\n selectFromFiles: 'Vybrať súbor',\n maximumFileSize: 'Maximálna veľkosť súboru',\n maximumFileSizeError: 'Maximálna veľkosť súboru bola prekročená.',\n url: 'URL obrázku',\n removeMedia: 'Odstrániť obrázok',\n original: 'Originál',\n },\n video: {\n video: 'Video',\n videoLink: 'Odkaz videa',\n insert: 'Vložiť video',\n url: 'URL videa?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)',\n },\n link: {\n link: 'Odkaz',\n insert: 'Vytvoriť odkaz',\n unlink: 'Zrušiť odkaz',\n edit: 'Upraviť',\n textToDisplay: 'Zobrazovaný text',\n url: 'Na akú URL adresu má tento odkaz viesť?',\n openInNewWindow: 'Otvoriť v novom okne',\n useProtocol: 'Použiť predvolený protokol',\n },\n table: {\n table: 'Tabuľka',\n addRowAbove: 'Pridať riadok nad',\n addRowBelow: 'Pridať riadok pod',\n addColLeft: 'Pridať stĺpec vľavo',\n addColRight: 'Pridať stĺpec vpravo',\n delRow: 'Odstrániť riadok',\n delCol: 'Odstrániť stĺpec',\n delTable: 'Odstrániť tabuľku',\n },\n hr: {\n insert: 'Vložit vodorovnú čiaru',\n },\n style: {\n style: 'Štýl',\n p: 'Normálny',\n blockquote: 'Citácia',\n pre: 'Kód',\n h1: 'Nadpis 1',\n h2: 'Nadpis 2',\n h3: 'Nadpis 3',\n h4: 'Nadpis 4',\n h5: 'Nadpis 5',\n h6: 'Nadpis 6',\n },\n lists: {\n unordered: 'Odrážkový zoznam',\n ordered: 'Číselný zoznam',\n },\n options: {\n help: 'Pomoc',\n fullscreen: 'Celá obrazovka',\n codeview: 'HTML kód',\n },\n paragraph: {\n paragraph: 'Odsek',\n outdent: 'Zväčšiť odsadenie',\n indent: 'Zmenšiť odsadenie',\n left: 'Zarovnať doľava',\n center: 'Zarovnať na stred',\n right: 'Zarovnať doprava',\n justify: 'Zarovnať obojstranne',\n },\n color: {\n recent: 'Aktuálna farba',\n more: 'Dalšie farby',\n background: 'Farba pozadia',\n foreground: 'Farba písma',\n transparent: 'Priehľadnosť',\n setTransparent: 'Nastaviť priehľadnosť',\n reset: 'Obnoviť',\n resetToDefault: 'Obnoviť prednastavené',\n },\n shortcut: {\n shortcuts: 'Klávesové skratky',\n close: 'Zavrieť',\n textFormatting: 'Formátovanie textu',\n action: 'Akcia',\n paragraphFormatting: 'Formátovanie odseku',\n documentStyle: 'Štýl dokumentu',\n extraKeys: 'Ďalšie kombinácie',\n },\n help: {\n 'insertParagraph': 'Vložiť odsek',\n 'undo': 'Vrátiť posledný krok',\n 'redo': 'Obnoviť posledný krok',\n 'tab': 'Odsadiť',\n 'untab': 'Zmenšiť odsadenie',\n 'bold': 'Tučné',\n 'italic': 'Kurzívu',\n 'underline': 'Podčiarknutie',\n 'strikethrough': 'Preškrknutý text',\n 'removeFormat': 'Odstrániť formátovanie',\n 'justifyLeft': 'Odsadenie zľava',\n 'justifyCenter': 'Vycentrovať',\n 'justifyRight': 'Odsadenie zprava',\n 'justifyFull': 'Zarovnať do bloku',\n 'insertUnorderedList': 'Odrážkový zoznam',\n 'insertOrderedList': 'Číselný zoznam',\n 'outdent': 'Zrušiť odsadenie aktuálneho odseku',\n 'indent': 'Odsadiť aktuálny odsek',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Vložiť horizontálne pravidlo',\n 'linkDialog.show': 'Dialóg na zadanie odkazu',\n },\n history: {\n undo: 'Krok vzad',\n redo: 'Krok dopredu',\n },\n specialChar: {\n specialChar: 'ŠPECIÁLNE ZNAKY',\n select: 'Vybrať špeciálne znaky',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","removeMedia","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.min.js new file mode 100644 index 0000000..19c0ef0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var o=a();for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"sk-SK":{font:{bold:"Tučné",italic:"Kurzíva",underline:"Podčiarknutie",clear:"Odstrániť štýl písma",height:"Výška riadku",name:"Názov",strikethrough:"Prečiarknuté",subscript:"Subscript",superscript:"Superscript",size:"Veľkosť písma"},image:{image:"Obrázok",insert:"Vložiť obrázok",resizeFull:"Pôvodná veľkosť",resizeHalf:"Polovičná veľkosť",resizeQuarter:"Štvrtinová veľkosť",floatLeft:"Umiestniť doľava",floatRight:"Umiestniť doprava",floatNone:"Bez zarovnania",shapeRounded:"Tvar: Zaoblené",shapeCircle:"Tvar: Kruh",shapeThumbnail:"Tvar: Náhľad",shapeNone:"Tvar: Žiadne",dragImageHere:"Pretiahnuť sem obrázok",dropImage:"Pretiahnuť sem obrázok alebo text",selectFromFiles:"Vybrať súbor",maximumFileSize:"Maximálna veľkosť súboru",maximumFileSizeError:"Maximálna veľkosť súboru bola prekročená.",url:"URL obrázku",removeMedia:"Odstrániť obrázok",original:"Originál"},video:{video:"Video",videoLink:"Odkaz videa",insert:"Vložiť video",url:"URL videa?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)"},link:{link:"Odkaz",insert:"Vytvoriť odkaz",unlink:"Zrušiť odkaz",edit:"Upraviť",textToDisplay:"Zobrazovaný text",url:"Na akú URL adresu má tento odkaz viesť?",openInNewWindow:"Otvoriť v novom okne",useProtocol:"Použiť predvolený protokol"},table:{table:"Tabuľka",addRowAbove:"Pridať riadok nad",addRowBelow:"Pridať riadok pod",addColLeft:"Pridať stĺpec vľavo",addColRight:"Pridať stĺpec vpravo",delRow:"Odstrániť riadok",delCol:"Odstrániť stĺpec",delTable:"Odstrániť tabuľku"},hr:{insert:"Vložit vodorovnú čiaru"},style:{style:"Štýl",p:"Normálny",blockquote:"Citácia",pre:"Kód",h1:"Nadpis 1",h2:"Nadpis 2",h3:"Nadpis 3",h4:"Nadpis 4",h5:"Nadpis 5",h6:"Nadpis 6"},lists:{unordered:"Odrážkový zoznam",ordered:"Číselný zoznam"},options:{help:"Pomoc",fullscreen:"Celá obrazovka",codeview:"HTML kód"},paragraph:{paragraph:"Odsek",outdent:"Zväčšiť odsadenie",indent:"Zmenšiť odsadenie",left:"Zarovnať doľava",center:"Zarovnať na stred",right:"Zarovnať doprava",justify:"Zarovnať obojstranne"},color:{recent:"Aktuálna farba",more:"Dalšie farby",background:"Farba pozadia",foreground:"Farba písma",transparent:"Priehľadnosť",setTransparent:"Nastaviť priehľadnosť",reset:"Obnoviť",resetToDefault:"Obnoviť prednastavené"},shortcut:{shortcuts:"Klávesové skratky",close:"Zavrieť",textFormatting:"Formátovanie textu",action:"Akcia",paragraphFormatting:"Formátovanie odseku",documentStyle:"Štýl dokumentu",extraKeys:"Ďalšie kombinácie"},help:{insertParagraph:"Vložiť odsek",undo:"Vrátiť posledný krok",redo:"Obnoviť posledný krok",tab:"Odsadiť",untab:"Zmenšiť odsadenie",bold:"Tučné",italic:"Kurzívu",underline:"Podčiarknutie",strikethrough:"Preškrknutý text",removeFormat:"Odstrániť formátovanie",justifyLeft:"Odsadenie zľava",justifyCenter:"Vycentrovať",justifyRight:"Odsadenie zprava",justifyFull:"Zarovnať do bloku",insertUnorderedList:"Odrážkový zoznam",insertOrderedList:"Číselný zoznam",outdent:"Zrušiť odsadenie aktuálneho odseku",indent:"Odsadiť aktuálny odsek",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Vložiť horizontálne pravidlo","linkDialog.show":"Dialóg na zadanie odkazu"},history:{undo:"Krok vzad",redo:"Krok dopredu"},specialChar:{specialChar:"ŠPECIÁLNE ZNAKY",select:"Vybrať špeciálne znaky"}}}),{};var e})); +//# sourceMappingURL=summernote-sk-SK.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.min.js.map new file mode 100644 index 0000000..14cbd19 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sk-SK.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sk-SK.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,UACRC,UAAW,gBACXC,MAAO,uBACPC,OAAQ,eACRC,KAAM,QACNC,cAAe,eACfC,UAAW,YACXC,YAAa,cACbC,KAAM,iBAERC,MAAO,CACLA,MAAO,UACPC,OAAQ,iBACRC,WAAY,kBACZC,WAAY,oBACZC,cAAe,qBACfC,UAAW,mBACXC,WAAY,oBACZC,UAAW,iBACXC,aAAc,iBACdC,YAAa,aACbC,eAAgB,eAChBC,UAAW,eACXC,cAAe,yBACfC,UAAW,oCACXC,gBAAiB,eACjBC,gBAAiB,2BACjBC,qBAAsB,4CACtBC,IAAK,cACLC,YAAa,oBACbC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,cACXpB,OAAQ,eACRgB,IAAK,aACLK,UAAW,8DAEbC,KAAM,CACJA,KAAM,QACNtB,OAAQ,iBACRuB,OAAQ,eACRC,KAAM,UACNC,cAAe,mBACfT,IAAK,0CACLU,gBAAiB,uBACjBC,YAAa,8BAEfC,MAAO,CACLA,MAAO,UACPC,YAAa,oBACbC,YAAa,oBACbC,WAAY,sBACZC,YAAa,uBACbC,OAAQ,mBACRC,OAAQ,mBACRC,SAAU,qBAEZC,GAAI,CACFpC,OAAQ,0BAEVqC,MAAO,CACLA,MAAO,OACPC,EAAG,WACHC,WAAY,UACZC,IAAK,MACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,mBACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,iBACZC,SAAU,YAEZC,UAAW,CACTA,UAAW,QACXC,QAAS,oBACTC,OAAQ,oBACRC,KAAM,kBACNC,OAAQ,oBACRC,MAAO,mBACPC,QAAS,wBAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,eACNC,WAAY,gBACZC,WAAY,cACZC,YAAa,eACbC,eAAgB,wBAChBC,MAAO,UACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,oBACXC,MAAO,UACPC,eAAgB,qBAChBC,OAAQ,QACRC,oBAAqB,sBACrBC,cAAe,iBACfC,UAAW,qBAEb1B,KAAM,CACJ,gBAAmB,eACnB,KAAQ,uBACR,KAAQ,wBACR,IAAO,UACP,MAAS,oBACT,KAAQ,QACR,OAAU,UACV,UAAa,gBACb,cAAiB,mBACjB,aAAgB,yBAChB,YAAe,kBACf,cAAiB,cACjB,aAAgB,mBAChB,YAAe,oBACf,oBAAuB,mBACvB,kBAAqB,iBACrB,QAAW,qCACX,OAAU,yBACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,+BACxB,kBAAmB,4BAErB2B,QAAS,CACPC,KAAM,YACNC,KAAM,gBAERC,YAAa,CACXA,YAAa,kBACbC,OAAQ,6B,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sk-SK.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sk-SK': {\n font: {\n bold: 'Tučné',\n italic: 'Kurzíva',\n underline: 'Podčiarknutie',\n clear: 'Odstrániť štýl písma',\n height: 'Výška riadku',\n name: 'Názov',\n strikethrough: 'Prečiarknuté',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Veľkosť písma',\n },\n image: {\n image: 'Obrázok',\n insert: 'Vložiť obrázok',\n resizeFull: 'Pôvodná veľkosť',\n resizeHalf: 'Polovičná veľkosť',\n resizeQuarter: 'Štvrtinová veľkosť',\n floatLeft: 'Umiestniť doľava',\n floatRight: 'Umiestniť doprava',\n floatNone: 'Bez zarovnania',\n shapeRounded: 'Tvar: Zaoblené',\n shapeCircle: 'Tvar: Kruh',\n shapeThumbnail: 'Tvar: Náhľad',\n shapeNone: 'Tvar: Žiadne',\n dragImageHere: 'Pretiahnuť sem obrázok',\n dropImage: 'Pretiahnuť sem obrázok alebo text',\n selectFromFiles: 'Vybrať súbor',\n maximumFileSize: 'Maximálna veľkosť súboru',\n maximumFileSizeError: 'Maximálna veľkosť súboru bola prekročená.',\n url: 'URL obrázku',\n removeMedia: 'Odstrániť obrázok',\n original: 'Originál',\n },\n video: {\n video: 'Video',\n videoLink: 'Odkaz videa',\n insert: 'Vložiť video',\n url: 'URL videa?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)',\n },\n link: {\n link: 'Odkaz',\n insert: 'Vytvoriť odkaz',\n unlink: 'Zrušiť odkaz',\n edit: 'Upraviť',\n textToDisplay: 'Zobrazovaný text',\n url: 'Na akú URL adresu má tento odkaz viesť?',\n openInNewWindow: 'Otvoriť v novom okne',\n useProtocol: 'Použiť predvolený protokol',\n },\n table: {\n table: 'Tabuľka',\n addRowAbove: 'Pridať riadok nad',\n addRowBelow: 'Pridať riadok pod',\n addColLeft: 'Pridať stĺpec vľavo',\n addColRight: 'Pridať stĺpec vpravo',\n delRow: 'Odstrániť riadok',\n delCol: 'Odstrániť stĺpec',\n delTable: 'Odstrániť tabuľku',\n },\n hr: {\n insert: 'Vložit vodorovnú čiaru',\n },\n style: {\n style: 'Štýl',\n p: 'Normálny',\n blockquote: 'Citácia',\n pre: 'Kód',\n h1: 'Nadpis 1',\n h2: 'Nadpis 2',\n h3: 'Nadpis 3',\n h4: 'Nadpis 4',\n h5: 'Nadpis 5',\n h6: 'Nadpis 6',\n },\n lists: {\n unordered: 'Odrážkový zoznam',\n ordered: 'Číselný zoznam',\n },\n options: {\n help: 'Pomoc',\n fullscreen: 'Celá obrazovka',\n codeview: 'HTML kód',\n },\n paragraph: {\n paragraph: 'Odsek',\n outdent: 'Zväčšiť odsadenie',\n indent: 'Zmenšiť odsadenie',\n left: 'Zarovnať doľava',\n center: 'Zarovnať na stred',\n right: 'Zarovnať doprava',\n justify: 'Zarovnať obojstranne',\n },\n color: {\n recent: 'Aktuálna farba',\n more: 'Dalšie farby',\n background: 'Farba pozadia',\n foreground: 'Farba písma',\n transparent: 'Priehľadnosť',\n setTransparent: 'Nastaviť priehľadnosť',\n reset: 'Obnoviť',\n resetToDefault: 'Obnoviť prednastavené',\n },\n shortcut: {\n shortcuts: 'Klávesové skratky',\n close: 'Zavrieť',\n textFormatting: 'Formátovanie textu',\n action: 'Akcia',\n paragraphFormatting: 'Formátovanie odseku',\n documentStyle: 'Štýl dokumentu',\n extraKeys: 'Ďalšie kombinácie',\n },\n help: {\n 'insertParagraph': 'Vložiť odsek',\n 'undo': 'Vrátiť posledný krok',\n 'redo': 'Obnoviť posledný krok',\n 'tab': 'Odsadiť',\n 'untab': 'Zmenšiť odsadenie',\n 'bold': 'Tučné',\n 'italic': 'Kurzívu',\n 'underline': 'Podčiarknutie',\n 'strikethrough': 'Preškrknutý text',\n 'removeFormat': 'Odstrániť formátovanie',\n 'justifyLeft': 'Odsadenie zľava',\n 'justifyCenter': 'Vycentrovať',\n 'justifyRight': 'Odsadenie zprava',\n 'justifyFull': 'Zarovnať do bloku',\n 'insertUnorderedList': 'Odrážkový zoznam',\n 'insertOrderedList': 'Číselný zoznam',\n 'outdent': 'Zrušiť odsadenie aktuálneho odseku',\n 'indent': 'Odsadiť aktuálny odsek',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Vložiť horizontálne pravidlo',\n 'linkDialog.show': 'Dialóg na zadanie odkazu',\n },\n history: {\n undo: 'Krok vzad',\n redo: 'Krok dopredu',\n },\n specialChar: {\n specialChar: 'ŠPECIÁLNE ZNAKY',\n select: 'Vybrať špeciálne znaky',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","removeMedia","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.js b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.js new file mode 100644 index 0000000..606a20e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'sl-SI': { + font: { + bold: 'Krepko', + italic: 'Ležeče', + underline: 'Podčrtano', + clear: 'Počisti oblikovanje izbire', + height: 'Razmik med vrsticami', + name: 'Pisava', + strikethrough: 'Prečrtano', + subscript: 'Podpisano', + superscript: 'Nadpisano', + size: 'Velikost pisave' + }, + image: { + image: 'Slika', + insert: 'Vstavi sliko', + resizeFull: 'Razširi na polno velikost', + resizeHalf: 'Razširi na polovico velikosti', + resizeQuarter: 'Razširi na četrtino velikosti', + floatLeft: 'Leva poravnava', + floatRight: 'Desna poravnava', + floatNone: 'Brez poravnave', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Sem povlecite sliko', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izberi sliko za nalaganje', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL naslov slike', + remove: 'Odstrani sliko', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video povezava', + insert: 'Vstavi video', + url: 'Povezava do videa', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)' + }, + link: { + link: 'Povezava', + insert: 'Vstavi povezavo', + unlink: 'Odstrani povezavo', + edit: 'Uredi', + textToDisplay: 'Prikazano besedilo', + url: 'Povezava', + openInNewWindow: 'Odpri v novem oknu' + }, + table: { + table: 'Tabela', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Vstavi horizontalno črto' + }, + style: { + style: 'Slogi', + p: 'Navadno besedilo', + blockquote: 'Citat', + pre: 'Koda', + h1: 'Naslov 1', + h2: 'Naslov 2', + h3: 'Naslov 3', + h4: 'Naslov 4', + h5: 'Naslov 5', + h6: 'Naslov 6' + }, + lists: { + unordered: 'Označen seznam', + ordered: 'Oštevilčen seznam' + }, + options: { + help: 'Pomoč', + fullscreen: 'Celozaslonski način', + codeview: 'Pregled HTML kode' + }, + paragraph: { + paragraph: 'Slogi odstavka', + outdent: 'Zmanjšaj odmik', + indent: 'Povečaj odmik', + left: 'Leva poravnava', + center: 'Desna poravnava', + right: 'Sredinska poravnava', + justify: 'Obojestranska poravnava' + }, + color: { + recent: 'Uporabi zadnjo barvo', + more: 'Več barv', + background: 'Barva ozadja', + foreground: 'Barva besedila', + transparent: 'Brez barve', + setTransparent: 'Brez barve', + reset: 'Ponastavi', + resetToDefault: 'Ponastavi na privzeto' + }, + shortcut: { + shortcuts: 'Bljižnice', + close: 'Zapri', + textFormatting: 'Oblikovanje besedila', + action: 'Dejanja', + paragraphFormatting: 'Oblikovanje odstavka', + documentStyle: 'Oblikovanje naslova', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Razveljavi', + redo: 'Uveljavi' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-sl-SI.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.js.map new file mode 100644 index 0000000..0a10d11 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sl-SI.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sl-SI.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sl-SI': {\n font: {\n bold: 'Krepko',\n italic: 'Ležeče',\n underline: 'Podčrtano',\n clear: 'Počisti oblikovanje izbire',\n height: 'Razmik med vrsticami',\n name: 'Pisava',\n strikethrough: 'Prečrtano',\n subscript: 'Podpisano',\n superscript: 'Nadpisano',\n size: 'Velikost pisave',\n },\n image: {\n image: 'Slika',\n insert: 'Vstavi sliko',\n resizeFull: 'Razširi na polno velikost',\n resizeHalf: 'Razširi na polovico velikosti',\n resizeQuarter: 'Razširi na četrtino velikosti',\n floatLeft: 'Leva poravnava',\n floatRight: 'Desna poravnava',\n floatNone: 'Brez poravnave',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Sem povlecite sliko',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izberi sliko za nalaganje',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL naslov slike',\n remove: 'Odstrani sliko',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video povezava',\n insert: 'Vstavi video',\n url: 'Povezava do videa',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)',\n },\n link: {\n link: 'Povezava',\n insert: 'Vstavi povezavo',\n unlink: 'Odstrani povezavo',\n edit: 'Uredi',\n textToDisplay: 'Prikazano besedilo',\n url: 'Povezava',\n openInNewWindow: 'Odpri v novem oknu',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Vstavi horizontalno črto',\n },\n style: {\n style: 'Slogi',\n p: 'Navadno besedilo',\n blockquote: 'Citat',\n pre: 'Koda',\n h1: 'Naslov 1',\n h2: 'Naslov 2',\n h3: 'Naslov 3',\n h4: 'Naslov 4',\n h5: 'Naslov 5',\n h6: 'Naslov 6',\n },\n lists: {\n unordered: 'Označen seznam',\n ordered: 'Oštevilčen seznam',\n },\n options: {\n help: 'Pomoč',\n fullscreen: 'Celozaslonski način',\n codeview: 'Pregled HTML kode',\n },\n paragraph: {\n paragraph: 'Slogi odstavka',\n outdent: 'Zmanjšaj odmik',\n indent: 'Povečaj odmik',\n left: 'Leva poravnava',\n center: 'Desna poravnava',\n right: 'Sredinska poravnava',\n justify: 'Obojestranska poravnava',\n },\n color: {\n recent: 'Uporabi zadnjo barvo',\n more: 'Več barv',\n background: 'Barva ozadja',\n foreground: 'Barva besedila',\n transparent: 'Brez barve',\n setTransparent: 'Brez barve',\n reset: 'Ponastavi',\n resetToDefault: 'Ponastavi na privzeto',\n },\n shortcut: {\n shortcuts: 'Bljižnice',\n close: 'Zapri',\n textFormatting: 'Oblikovanje besedila',\n action: 'Dejanja',\n paragraphFormatting: 'Oblikovanje odstavka',\n documentStyle: 'Oblikovanje naslova',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Razveljavi',\n redo: 'Uveljavi',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.min.js new file mode 100644 index 0000000..510c18f --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var o=a();for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"sl-SI":{font:{bold:"Krepko",italic:"Ležeče",underline:"Podčrtano",clear:"Počisti oblikovanje izbire",height:"Razmik med vrsticami",name:"Pisava",strikethrough:"Prečrtano",subscript:"Podpisano",superscript:"Nadpisano",size:"Velikost pisave"},image:{image:"Slika",insert:"Vstavi sliko",resizeFull:"Razširi na polno velikost",resizeHalf:"Razširi na polovico velikosti",resizeQuarter:"Razširi na četrtino velikosti",floatLeft:"Leva poravnava",floatRight:"Desna poravnava",floatNone:"Brez poravnave",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Sem povlecite sliko",dropImage:"Drop image or Text",selectFromFiles:"Izberi sliko za nalaganje",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL naslov slike",remove:"Odstrani sliko",original:"Original"},video:{video:"Video",videoLink:"Video povezava",insert:"Vstavi video",url:"Povezava do videa",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)"},link:{link:"Povezava",insert:"Vstavi povezavo",unlink:"Odstrani povezavo",edit:"Uredi",textToDisplay:"Prikazano besedilo",url:"Povezava",openInNewWindow:"Odpri v novem oknu"},table:{table:"Tabela",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Vstavi horizontalno črto"},style:{style:"Slogi",p:"Navadno besedilo",blockquote:"Citat",pre:"Koda",h1:"Naslov 1",h2:"Naslov 2",h3:"Naslov 3",h4:"Naslov 4",h5:"Naslov 5",h6:"Naslov 6"},lists:{unordered:"Označen seznam",ordered:"Oštevilčen seznam"},options:{help:"Pomoč",fullscreen:"Celozaslonski način",codeview:"Pregled HTML kode"},paragraph:{paragraph:"Slogi odstavka",outdent:"Zmanjšaj odmik",indent:"Povečaj odmik",left:"Leva poravnava",center:"Desna poravnava",right:"Sredinska poravnava",justify:"Obojestranska poravnava"},color:{recent:"Uporabi zadnjo barvo",more:"Več barv",background:"Barva ozadja",foreground:"Barva besedila",transparent:"Brez barve",setTransparent:"Brez barve",reset:"Ponastavi",resetToDefault:"Ponastavi na privzeto"},shortcut:{shortcuts:"Bljižnice",close:"Zapri",textFormatting:"Oblikovanje besedila",action:"Dejanja",paragraphFormatting:"Oblikovanje odstavka",documentStyle:"Oblikovanje naslova",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Razveljavi",redo:"Uveljavi"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-sl-SI.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.min.js.map new file mode 100644 index 0000000..07e1fce --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sl-SI.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sl-SI.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,SACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,6BACPC,OAAQ,uBACRC,KAAM,SACNC,cAAe,YACfC,UAAW,YACXC,YAAa,YACbC,KAAM,mBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,eACRC,WAAY,4BACZC,WAAY,gCACZC,cAAe,gCACfC,UAAW,iBACXC,WAAY,kBACZC,UAAW,iBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,sBACfC,UAAW,qBACXC,gBAAiB,4BACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,mBACLC,OAAQ,iBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,iBACXpB,OAAQ,eACRgB,IAAK,oBACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,WACNtB,OAAQ,kBACRuB,OAAQ,oBACRC,KAAM,QACNC,cAAe,qBACfT,IAAK,WACLU,gBAAiB,sBAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,4BAEVoC,MAAO,CACLA,MAAO,QACPC,EAAG,mBACHC,WAAY,QACZC,IAAK,OACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,iBACXC,QAAS,qBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,sBACZC,SAAU,qBAEZC,UAAW,CACTA,UAAW,iBACXC,QAAS,iBACTC,OAAQ,gBACRC,KAAM,iBACNC,OAAQ,kBACRC,MAAO,sBACPC,QAAS,2BAEXC,MAAO,CACLC,OAAQ,uBACRC,KAAM,WACNC,WAAY,eACZC,WAAY,iBACZC,YAAa,aACbC,eAAgB,aAChBC,MAAO,YACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,YACXC,MAAO,QACPC,eAAgB,uBAChBC,OAAQ,UACRC,oBAAqB,uBACrBC,cAAe,sBACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,aACNC,KAAM,YAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sl-SI.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sl-SI': {\n font: {\n bold: 'Krepko',\n italic: 'Ležeče',\n underline: 'Podčrtano',\n clear: 'Počisti oblikovanje izbire',\n height: 'Razmik med vrsticami',\n name: 'Pisava',\n strikethrough: 'Prečrtano',\n subscript: 'Podpisano',\n superscript: 'Nadpisano',\n size: 'Velikost pisave',\n },\n image: {\n image: 'Slika',\n insert: 'Vstavi sliko',\n resizeFull: 'Razširi na polno velikost',\n resizeHalf: 'Razširi na polovico velikosti',\n resizeQuarter: 'Razširi na četrtino velikosti',\n floatLeft: 'Leva poravnava',\n floatRight: 'Desna poravnava',\n floatNone: 'Brez poravnave',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Sem povlecite sliko',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izberi sliko za nalaganje',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL naslov slike',\n remove: 'Odstrani sliko',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video povezava',\n insert: 'Vstavi video',\n url: 'Povezava do videa',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)',\n },\n link: {\n link: 'Povezava',\n insert: 'Vstavi povezavo',\n unlink: 'Odstrani povezavo',\n edit: 'Uredi',\n textToDisplay: 'Prikazano besedilo',\n url: 'Povezava',\n openInNewWindow: 'Odpri v novem oknu',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Vstavi horizontalno črto',\n },\n style: {\n style: 'Slogi',\n p: 'Navadno besedilo',\n blockquote: 'Citat',\n pre: 'Koda',\n h1: 'Naslov 1',\n h2: 'Naslov 2',\n h3: 'Naslov 3',\n h4: 'Naslov 4',\n h5: 'Naslov 5',\n h6: 'Naslov 6',\n },\n lists: {\n unordered: 'Označen seznam',\n ordered: 'Oštevilčen seznam',\n },\n options: {\n help: 'Pomoč',\n fullscreen: 'Celozaslonski način',\n codeview: 'Pregled HTML kode',\n },\n paragraph: {\n paragraph: 'Slogi odstavka',\n outdent: 'Zmanjšaj odmik',\n indent: 'Povečaj odmik',\n left: 'Leva poravnava',\n center: 'Desna poravnava',\n right: 'Sredinska poravnava',\n justify: 'Obojestranska poravnava',\n },\n color: {\n recent: 'Uporabi zadnjo barvo',\n more: 'Več barv',\n background: 'Barva ozadja',\n foreground: 'Barva besedila',\n transparent: 'Brez barve',\n setTransparent: 'Brez barve',\n reset: 'Ponastavi',\n resetToDefault: 'Ponastavi na privzeto',\n },\n shortcut: {\n shortcuts: 'Bljižnice',\n close: 'Zapri',\n textFormatting: 'Oblikovanje besedila',\n action: 'Dejanja',\n paragraphFormatting: 'Oblikovanje odstavka',\n documentStyle: 'Oblikovanje naslova',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Razveljavi',\n redo: 'Uveljavi',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.js b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.js new file mode 100644 index 0000000..609dd51 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'sr-RS': { + font: { + bold: 'Podebljano', + italic: 'Kurziv', + underline: 'Podvučeno', + clear: 'Ukloni stilove fonta', + height: 'Visina linije', + name: 'Font Family', + strikethrough: 'Precrtano', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Veličina fonta' + }, + image: { + image: 'Slika', + insert: 'Umetni sliku', + resizeFull: 'Puna veličina', + resizeHalf: 'Umanji na 50%', + resizeQuarter: 'Umanji na 25%', + floatLeft: 'Uz levu ivicu', + floatRight: 'Uz desnu ivicu', + floatNone: 'Bez ravnanja', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Prevuci sliku ovde', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izaberi iz datoteke', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Adresa slike', + remove: 'Ukloni sliku', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Veza ka videu', + insert: 'Umetni video', + url: 'URL video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)' + }, + link: { + link: 'Veza', + insert: 'Umetni vezu', + unlink: 'Ukloni vezu', + edit: 'Uredi', + textToDisplay: 'Tekst za prikaz', + url: 'Internet adresa', + openInNewWindow: 'Otvori u novom prozoru' + }, + table: { + table: 'Tabela', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Umetni horizontalnu liniju' + }, + style: { + style: 'Stil', + p: 'pni', + blockquote: 'Citat', + pre: 'Kod', + h1: 'Zaglavlje 1', + h2: 'Zaglavlje 2', + h3: 'Zaglavlje 3', + h4: 'Zaglavlje 4', + h5: 'Zaglavlje 5', + h6: 'Zaglavlje 6' + }, + lists: { + unordered: 'Obična lista', + ordered: 'Numerisana lista' + }, + options: { + help: 'Pomoć', + fullscreen: 'Preko celog ekrana', + codeview: 'Izvorni kod' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Smanji uvlačenje', + indent: 'Povečaj uvlačenje', + left: 'Poravnaj u levo', + center: 'Centrirano', + right: 'Poravnaj u desno', + justify: 'Poravnaj obostrano' + }, + color: { + recent: 'Poslednja boja', + more: 'Više boja', + background: 'Boja pozadine', + foreground: 'Boja teksta', + transparent: 'Providna', + setTransparent: 'Providna', + reset: 'Opoziv', + resetToDefault: 'Podrazumevana' + }, + shortcut: { + shortcuts: 'Prečice sa tastature', + close: 'Zatvori', + textFormatting: 'Formatiranje teksta', + action: 'Akcija', + paragraphFormatting: 'Formatiranje paragrafa', + documentStyle: 'Stil dokumenta', + extraKeys: 'Dodatne kombinacije' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Poništi', + redo: 'Ponovi' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-sr-RS-Latin.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.js.map new file mode 100644 index 0000000..28ef4b6 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sr-RS-Latin.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sr-RS-Latin.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sr-RS': {\n font: {\n bold: 'Podebljano',\n italic: 'Kurziv',\n underline: 'Podvučeno',\n clear: 'Ukloni stilove fonta',\n height: 'Visina linije',\n name: 'Font Family',\n strikethrough: 'Precrtano',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Veličina fonta',\n },\n image: {\n image: 'Slika',\n insert: 'Umetni sliku',\n resizeFull: 'Puna veličina',\n resizeHalf: 'Umanji na 50%',\n resizeQuarter: 'Umanji na 25%',\n floatLeft: 'Uz levu ivicu',\n floatRight: 'Uz desnu ivicu',\n floatNone: 'Bez ravnanja',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Prevuci sliku ovde',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izaberi iz datoteke',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Adresa slike',\n remove: 'Ukloni sliku',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Veza ka videu',\n insert: 'Umetni video',\n url: 'URL video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)',\n },\n link: {\n link: 'Veza',\n insert: 'Umetni vezu',\n unlink: 'Ukloni vezu',\n edit: 'Uredi',\n textToDisplay: 'Tekst za prikaz',\n url: 'Internet adresa',\n openInNewWindow: 'Otvori u novom prozoru',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Umetni horizontalnu liniju',\n },\n style: {\n style: 'Stil',\n p: 'pni',\n blockquote: 'Citat',\n pre: 'Kod',\n h1: 'Zaglavlje 1',\n h2: 'Zaglavlje 2',\n h3: 'Zaglavlje 3',\n h4: 'Zaglavlje 4',\n h5: 'Zaglavlje 5',\n h6: 'Zaglavlje 6',\n },\n lists: {\n unordered: 'Obična lista',\n ordered: 'Numerisana lista',\n },\n options: {\n help: 'Pomoć',\n fullscreen: 'Preko celog ekrana',\n codeview: 'Izvorni kod',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Smanji uvlačenje',\n indent: 'Povečaj uvlačenje',\n left: 'Poravnaj u levo',\n center: 'Centrirano',\n right: 'Poravnaj u desno',\n justify: 'Poravnaj obostrano',\n },\n color: {\n recent: 'Poslednja boja',\n more: 'Više boja',\n background: 'Boja pozadine',\n foreground: 'Boja teksta',\n transparent: 'Providna',\n setTransparent: 'Providna',\n reset: 'Opoziv',\n resetToDefault: 'Podrazumevana',\n },\n shortcut: {\n shortcuts: 'Prečice sa tastature',\n close: 'Zatvori',\n textFormatting: 'Formatiranje teksta',\n action: 'Akcija',\n paragraphFormatting: 'Formatiranje paragrafa',\n documentStyle: 'Stil dokumenta',\n extraKeys: 'Dodatne kombinacije',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Poništi',\n redo: 'Ponovi',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.min.js new file mode 100644 index 0000000..42ba997 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var t=a();for(var r in t)("object"==typeof exports?exports:e)[r]=t[r]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"sr-RS":{font:{bold:"Podebljano",italic:"Kurziv",underline:"Podvučeno",clear:"Ukloni stilove fonta",height:"Visina linije",name:"Font Family",strikethrough:"Precrtano",subscript:"Subscript",superscript:"Superscript",size:"Veličina fonta"},image:{image:"Slika",insert:"Umetni sliku",resizeFull:"Puna veličina",resizeHalf:"Umanji na 50%",resizeQuarter:"Umanji na 25%",floatLeft:"Uz levu ivicu",floatRight:"Uz desnu ivicu",floatNone:"Bez ravnanja",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Prevuci sliku ovde",dropImage:"Drop image or Text",selectFromFiles:"Izaberi iz datoteke",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Adresa slike",remove:"Ukloni sliku",original:"Original"},video:{video:"Video",videoLink:"Veza ka videu",insert:"Umetni video",url:"URL video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)"},link:{link:"Veza",insert:"Umetni vezu",unlink:"Ukloni vezu",edit:"Uredi",textToDisplay:"Tekst za prikaz",url:"Internet adresa",openInNewWindow:"Otvori u novom prozoru"},table:{table:"Tabela",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Umetni horizontalnu liniju"},style:{style:"Stil",p:"pni",blockquote:"Citat",pre:"Kod",h1:"Zaglavlje 1",h2:"Zaglavlje 2",h3:"Zaglavlje 3",h4:"Zaglavlje 4",h5:"Zaglavlje 5",h6:"Zaglavlje 6"},lists:{unordered:"Obična lista",ordered:"Numerisana lista"},options:{help:"Pomoć",fullscreen:"Preko celog ekrana",codeview:"Izvorni kod"},paragraph:{paragraph:"Paragraf",outdent:"Smanji uvlačenje",indent:"Povečaj uvlačenje",left:"Poravnaj u levo",center:"Centrirano",right:"Poravnaj u desno",justify:"Poravnaj obostrano"},color:{recent:"Poslednja boja",more:"Više boja",background:"Boja pozadine",foreground:"Boja teksta",transparent:"Providna",setTransparent:"Providna",reset:"Opoziv",resetToDefault:"Podrazumevana"},shortcut:{shortcuts:"Prečice sa tastature",close:"Zatvori",textFormatting:"Formatiranje teksta",action:"Akcija",paragraphFormatting:"Formatiranje paragrafa",documentStyle:"Stil dokumenta",extraKeys:"Dodatne kombinacije"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Poništi",redo:"Ponovi"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-sr-RS-Latin.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.min.js.map new file mode 100644 index 0000000..5cade9a --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS-Latin.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sr-RS-Latin.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,aACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,uBACPC,OAAQ,gBACRC,KAAM,cACNC,cAAe,YACfC,UAAW,YACXC,YAAa,cACbC,KAAM,kBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,eACRC,WAAY,gBACZC,WAAY,gBACZC,cAAe,gBACfC,UAAW,gBACXC,WAAY,iBACZC,UAAW,eACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,qBACfC,UAAW,qBACXC,gBAAiB,sBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,eACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,gBACXpB,OAAQ,eACRgB,IAAK,YACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,cACRuB,OAAQ,cACRC,KAAM,QACNC,cAAe,kBACfT,IAAK,kBACLU,gBAAiB,0BAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,8BAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,MACHC,WAAY,QACZC,IAAK,MACLC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eAENC,MAAO,CACLC,UAAW,eACXC,QAAS,oBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,qBACZC,SAAU,eAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,mBACTC,OAAQ,oBACRC,KAAM,kBACNC,OAAQ,aACRC,MAAO,mBACPC,QAAS,sBAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,YACNC,WAAY,gBACZC,WAAY,cACZC,YAAa,WACbC,eAAgB,WAChBC,MAAO,SACPC,eAAgB,iBAElBC,SAAU,CACRC,UAAW,uBACXC,MAAO,UACPC,eAAgB,sBAChBC,OAAQ,SACRC,oBAAqB,yBACrBC,cAAe,iBACfC,UAAW,uBAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,UACNC,KAAM,UAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sr-RS-Latin.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sr-RS': {\n font: {\n bold: 'Podebljano',\n italic: 'Kurziv',\n underline: 'Podvučeno',\n clear: 'Ukloni stilove fonta',\n height: 'Visina linije',\n name: 'Font Family',\n strikethrough: 'Precrtano',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Veličina fonta',\n },\n image: {\n image: 'Slika',\n insert: 'Umetni sliku',\n resizeFull: 'Puna veličina',\n resizeHalf: 'Umanji na 50%',\n resizeQuarter: 'Umanji na 25%',\n floatLeft: 'Uz levu ivicu',\n floatRight: 'Uz desnu ivicu',\n floatNone: 'Bez ravnanja',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Prevuci sliku ovde',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Izaberi iz datoteke',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Adresa slike',\n remove: 'Ukloni sliku',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Veza ka videu',\n insert: 'Umetni video',\n url: 'URL video',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)',\n },\n link: {\n link: 'Veza',\n insert: 'Umetni vezu',\n unlink: 'Ukloni vezu',\n edit: 'Uredi',\n textToDisplay: 'Tekst za prikaz',\n url: 'Internet adresa',\n openInNewWindow: 'Otvori u novom prozoru',\n },\n table: {\n table: 'Tabela',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Umetni horizontalnu liniju',\n },\n style: {\n style: 'Stil',\n p: 'pni',\n blockquote: 'Citat',\n pre: 'Kod',\n h1: 'Zaglavlje 1',\n h2: 'Zaglavlje 2',\n h3: 'Zaglavlje 3',\n h4: 'Zaglavlje 4',\n h5: 'Zaglavlje 5',\n h6: 'Zaglavlje 6',\n },\n lists: {\n unordered: 'Obična lista',\n ordered: 'Numerisana lista',\n },\n options: {\n help: 'Pomoć',\n fullscreen: 'Preko celog ekrana',\n codeview: 'Izvorni kod',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Smanji uvlačenje',\n indent: 'Povečaj uvlačenje',\n left: 'Poravnaj u levo',\n center: 'Centrirano',\n right: 'Poravnaj u desno',\n justify: 'Poravnaj obostrano',\n },\n color: {\n recent: 'Poslednja boja',\n more: 'Više boja',\n background: 'Boja pozadine',\n foreground: 'Boja teksta',\n transparent: 'Providna',\n setTransparent: 'Providna',\n reset: 'Opoziv',\n resetToDefault: 'Podrazumevana',\n },\n shortcut: {\n shortcuts: 'Prečice sa tastature',\n close: 'Zatvori',\n textFormatting: 'Formatiranje teksta',\n action: 'Akcija',\n paragraphFormatting: 'Formatiranje paragrafa',\n documentStyle: 'Stil dokumenta',\n extraKeys: 'Dodatne kombinacije',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Poništi',\n redo: 'Ponovi',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.js b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.js new file mode 100644 index 0000000..d85d797 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'sr-RS': { + font: { + bold: 'Подебљано', + italic: 'Курзив', + underline: 'Подвучено', + clear: 'Уклони стилове фонта', + height: 'Висина линије', + name: 'Font Family', + strikethrough: 'Прецртано', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Величина фонта' + }, + image: { + image: 'Слика', + insert: 'Уметни слику', + resizeFull: 'Пуна величина', + resizeHalf: 'Умањи на 50%', + resizeQuarter: 'Умањи на 25%', + floatLeft: 'Уз леву ивицу', + floatRight: 'Уз десну ивицу', + floatNone: 'Без равнања', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Превуци слику овде', + dropImage: 'Drop image or Text', + selectFromFiles: 'Изабери из датотеке', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Адреса слике', + remove: 'Уклони слику', + original: 'Original' + }, + video: { + video: 'Видео', + videoLink: 'Веза ка видеу', + insert: 'Уметни видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Веза', + insert: 'Уметни везу', + unlink: 'Уклони везу', + edit: 'Уреди', + textToDisplay: 'Текст за приказ', + url: 'Интернет адреса', + openInNewWindow: 'Отвори у новом прозору' + }, + table: { + table: 'Табела', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Уметни хоризонталну линију' + }, + style: { + style: 'Стил', + p: 'Нормални', + blockquote: 'Цитат', + pre: 'Код', + h1: 'Заглавље 1', + h2: 'Заглавље 2', + h3: 'Заглавље 3', + h4: 'Заглавље 4', + h5: 'Заглавље 5', + h6: 'Заглавље 6' + }, + lists: { + unordered: 'Обична листа', + ordered: 'Нумерисана листа' + }, + options: { + help: 'Помоћ', + fullscreen: 'Преко целог екрана', + codeview: 'Изворни код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Смањи увлачење', + indent: 'Повечај увлачење', + left: 'Поравнај у лево', + center: 'Центрирано', + right: 'Поравнај у десно', + justify: 'Поравнај обострано' + }, + color: { + recent: 'Последња боја', + more: 'Више боја', + background: 'Боја позадине', + foreground: 'Боја текста', + transparent: 'Провидна', + setTransparent: 'Провидна', + reset: 'Опозив', + resetToDefault: 'Подразумевана' + }, + shortcut: { + shortcuts: 'Пречице са тастатуре', + close: 'Затвори', + textFormatting: 'Форматирање текста', + action: 'Акција', + paragraphFormatting: 'Форматирање параграфа', + documentStyle: 'Стил документа', + extraKeys: 'Додатне комбинације' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Поништи', + redo: 'Понови' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-sr-RS.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.js.map new file mode 100644 index 0000000..2ccf0d6 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sr-RS.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sr-RS.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sr-RS': {\n font: {\n bold: 'Подебљано',\n italic: 'Курзив',\n underline: 'Подвучено',\n clear: 'Уклони стилове фонта',\n height: 'Висина линије',\n name: 'Font Family',\n strikethrough: 'Прецртано',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Величина фонта',\n },\n image: {\n image: 'Слика',\n insert: 'Уметни слику',\n resizeFull: 'Пуна величина',\n resizeHalf: 'Умањи на 50%',\n resizeQuarter: 'Умањи на 25%',\n floatLeft: 'Уз леву ивицу',\n floatRight: 'Уз десну ивицу',\n floatNone: 'Без равнања',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Превуци слику овде',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Изабери из датотеке',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Адреса слике',\n remove: 'Уклони слику',\n original: 'Original',\n },\n video: {\n video: 'Видео',\n videoLink: 'Веза ка видеу',\n insert: 'Уметни видео',\n url: 'URL видео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)',\n },\n link: {\n link: 'Веза',\n insert: 'Уметни везу',\n unlink: 'Уклони везу',\n edit: 'Уреди',\n textToDisplay: 'Текст за приказ',\n url: 'Интернет адреса',\n openInNewWindow: 'Отвори у новом прозору',\n },\n table: {\n table: 'Табела',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Уметни хоризонталну линију',\n },\n style: {\n style: 'Стил',\n p: 'Нормални',\n blockquote: 'Цитат',\n pre: 'Код',\n h1: 'Заглавље 1',\n h2: 'Заглавље 2',\n h3: 'Заглавље 3',\n h4: 'Заглавље 4',\n h5: 'Заглавље 5',\n h6: 'Заглавље 6',\n },\n lists: {\n unordered: 'Обична листа',\n ordered: 'Нумерисана листа',\n },\n options: {\n help: 'Помоћ',\n fullscreen: 'Преко целог екрана',\n codeview: 'Изворни код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Смањи увлачење',\n indent: 'Повечај увлачење',\n left: 'Поравнај у лево',\n center: 'Центрирано',\n right: 'Поравнај у десно',\n justify: 'Поравнај обострано',\n },\n color: {\n recent: 'Последња боја',\n more: 'Више боја',\n background: 'Боја позадине',\n foreground: 'Боја текста',\n transparent: 'Провидна',\n setTransparent: 'Провидна',\n reset: 'Опозив',\n resetToDefault: 'Подразумевана',\n },\n shortcut: {\n shortcuts: 'Пречице са тастатуре',\n close: 'Затвори',\n textFormatting: 'Форматирање текста',\n action: 'Акција',\n paragraphFormatting: 'Форматирање параграфа',\n documentStyle: 'Стил документа',\n extraKeys: 'Додатне комбинације',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Поништи',\n redo: 'Понови',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.min.js new file mode 100644 index 0000000..83ba117 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"sr-RS":{font:{bold:"Подебљано",italic:"Курзив",underline:"Подвучено",clear:"Уклони стилове фонта",height:"Висина линије",name:"Font Family",strikethrough:"Прецртано",subscript:"Subscript",superscript:"Superscript",size:"Величина фонта"},image:{image:"Слика",insert:"Уметни слику",resizeFull:"Пуна величина",resizeHalf:"Умањи на 50%",resizeQuarter:"Умањи на 25%",floatLeft:"Уз леву ивицу",floatRight:"Уз десну ивицу",floatNone:"Без равнања",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Превуци слику овде",dropImage:"Drop image or Text",selectFromFiles:"Изабери из датотеке",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Адреса слике",remove:"Уклони слику",original:"Original"},video:{video:"Видео",videoLink:"Веза ка видеу",insert:"Уметни видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Веза",insert:"Уметни везу",unlink:"Уклони везу",edit:"Уреди",textToDisplay:"Текст за приказ",url:"Интернет адреса",openInNewWindow:"Отвори у новом прозору"},table:{table:"Табела",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Уметни хоризонталну линију"},style:{style:"Стил",p:"Нормални",blockquote:"Цитат",pre:"Код",h1:"Заглавље 1",h2:"Заглавље 2",h3:"Заглавље 3",h4:"Заглавље 4",h5:"Заглавље 5",h6:"Заглавље 6"},lists:{unordered:"Обична листа",ordered:"Нумерисана листа"},options:{help:"Помоћ",fullscreen:"Преко целог екрана",codeview:"Изворни код"},paragraph:{paragraph:"Параграф",outdent:"Смањи увлачење",indent:"Повечај увлачење",left:"Поравнај у лево",center:"Центрирано",right:"Поравнај у десно",justify:"Поравнај обострано"},color:{recent:"Последња боја",more:"Више боја",background:"Боја позадине",foreground:"Боја текста",transparent:"Провидна",setTransparent:"Провидна",reset:"Опозив",resetToDefault:"Подразумевана"},shortcut:{shortcuts:"Пречице са тастатуре",close:"Затвори",textFormatting:"Форматирање текста",action:"Акција",paragraphFormatting:"Форматирање параграфа",documentStyle:"Стил документа",extraKeys:"Додатне комбинације"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Поништи",redo:"Понови"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-sr-RS.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.min.js.map new file mode 100644 index 0000000..26a3268 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sr-RS.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sr-RS.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,YACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,uBACPC,OAAQ,gBACRC,KAAM,cACNC,cAAe,YACfC,UAAW,YACXC,YAAa,cACbC,KAAM,kBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,eACRC,WAAY,gBACZC,WAAY,eACZC,cAAe,eACfC,UAAW,gBACXC,WAAY,iBACZC,UAAW,cACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,qBACfC,UAAW,qBACXC,gBAAiB,sBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,eACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,gBACXpB,OAAQ,eACRgB,IAAK,YACLK,UAAW,4DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,cACRuB,OAAQ,cACRC,KAAM,QACNC,cAAe,kBACfT,IAAK,kBACLU,gBAAiB,0BAEnBC,MAAO,CACLA,MAAO,SACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,8BAEVoC,MAAO,CACLA,MAAO,OACPC,EAAG,WACHC,WAAY,QACZC,IAAK,MACLC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,cAENC,MAAO,CACLC,UAAW,eACXC,QAAS,oBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,qBACZC,SAAU,eAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,iBACTC,OAAQ,mBACRC,KAAM,kBACNC,OAAQ,aACRC,MAAO,mBACPC,QAAS,sBAEXC,MAAO,CACLC,OAAQ,gBACRC,KAAM,YACNC,WAAY,gBACZC,WAAY,cACZC,YAAa,WACbC,eAAgB,WAChBC,MAAO,SACPC,eAAgB,iBAElBC,SAAU,CACRC,UAAW,uBACXC,MAAO,UACPC,eAAgB,qBAChBC,OAAQ,SACRC,oBAAqB,wBACrBC,cAAe,iBACfC,UAAW,uBAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,UACNC,KAAM,UAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sr-RS.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sr-RS': {\n font: {\n bold: 'Подебљано',\n italic: 'Курзив',\n underline: 'Подвучено',\n clear: 'Уклони стилове фонта',\n height: 'Висина линије',\n name: 'Font Family',\n strikethrough: 'Прецртано',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Величина фонта',\n },\n image: {\n image: 'Слика',\n insert: 'Уметни слику',\n resizeFull: 'Пуна величина',\n resizeHalf: 'Умањи на 50%',\n resizeQuarter: 'Умањи на 25%',\n floatLeft: 'Уз леву ивицу',\n floatRight: 'Уз десну ивицу',\n floatNone: 'Без равнања',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Превуци слику овде',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Изабери из датотеке',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Адреса слике',\n remove: 'Уклони слику',\n original: 'Original',\n },\n video: {\n video: 'Видео',\n videoLink: 'Веза ка видеу',\n insert: 'Уметни видео',\n url: 'URL видео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)',\n },\n link: {\n link: 'Веза',\n insert: 'Уметни везу',\n unlink: 'Уклони везу',\n edit: 'Уреди',\n textToDisplay: 'Текст за приказ',\n url: 'Интернет адреса',\n openInNewWindow: 'Отвори у новом прозору',\n },\n table: {\n table: 'Табела',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Уметни хоризонталну линију',\n },\n style: {\n style: 'Стил',\n p: 'Нормални',\n blockquote: 'Цитат',\n pre: 'Код',\n h1: 'Заглавље 1',\n h2: 'Заглавље 2',\n h3: 'Заглавље 3',\n h4: 'Заглавље 4',\n h5: 'Заглавље 5',\n h6: 'Заглавље 6',\n },\n lists: {\n unordered: 'Обична листа',\n ordered: 'Нумерисана листа',\n },\n options: {\n help: 'Помоћ',\n fullscreen: 'Преко целог екрана',\n codeview: 'Изворни код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Смањи увлачење',\n indent: 'Повечај увлачење',\n left: 'Поравнај у лево',\n center: 'Центрирано',\n right: 'Поравнај у десно',\n justify: 'Поравнај обострано',\n },\n color: {\n recent: 'Последња боја',\n more: 'Више боја',\n background: 'Боја позадине',\n foreground: 'Боја текста',\n transparent: 'Провидна',\n setTransparent: 'Провидна',\n reset: 'Опозив',\n resetToDefault: 'Подразумевана',\n },\n shortcut: {\n shortcuts: 'Пречице са тастатуре',\n close: 'Затвори',\n textFormatting: 'Форматирање текста',\n action: 'Акција',\n paragraphFormatting: 'Форматирање параграфа',\n documentStyle: 'Стил документа',\n extraKeys: 'Додатне комбинације',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Поништи',\n redo: 'Понови',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.js b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.js new file mode 100644 index 0000000..2f1a17e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'sv-SE': { + font: { + bold: 'Fet', + italic: 'Kursiv', + underline: 'Understruken', + clear: 'Radera formatering', + height: 'Radavstånd', + name: 'Teckensnitt', + strikethrough: 'Genomstruken', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Teckenstorlek' + }, + image: { + image: 'Bild', + insert: 'Infoga bild', + resizeFull: 'Full storlek', + resizeHalf: 'Halv storlek', + resizeQuarter: 'En fjärdedel i storlek', + floatLeft: 'Vänsterjusterad', + floatRight: 'Högerjusterad', + floatNone: 'Ingen justering', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Dra en bild hit', + dropImage: 'Drop image or Text', + selectFromFiles: 'Välj från filer', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Länk till bild', + remove: 'Ta bort bild', + original: 'Original' + }, + video: { + video: 'Filmklipp', + videoLink: 'Länk till filmklipp', + insert: 'Infoga filmklipp', + url: 'Länk till filmklipp', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Länk', + insert: 'Infoga länk', + unlink: 'Ta bort länk', + edit: 'Redigera', + textToDisplay: 'Visningstext', + url: 'Till vilken URL ska denna länk peka?', + openInNewWindow: 'Öppna i ett nytt fönster', + useProtocol: 'Använd standardprotokoll' + }, + table: { + table: 'Tabell', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Infoga horisontell linje' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Kod', + h1: 'Rubrik 1', + h2: 'Rubrik 2', + h3: 'Rubrik 3', + h4: 'Rubrik 4', + h5: 'Rubrik 5', + h6: 'Rubrik 6' + }, + lists: { + unordered: 'Punktlista', + ordered: 'Numrerad lista' + }, + options: { + help: 'Hjälp', + fullscreen: 'Fullskärm', + codeview: 'HTML-visning' + }, + paragraph: { + paragraph: 'Justera text', + outdent: 'Minska indrag', + indent: 'Öka indrag', + left: 'Vänsterjusterad', + center: 'Centrerad', + right: 'Högerjusterad', + justify: 'Justera text' + }, + color: { + recent: 'Senast använda färg', + more: 'Fler färger', + background: 'Bakgrundsfärg', + foreground: 'Teckenfärg', + transparent: 'Genomskinlig', + setTransparent: 'Gör genomskinlig', + reset: 'Nollställ', + resetToDefault: 'Återställ till standard' + }, + shortcut: { + shortcuts: 'Kortkommandon', + close: 'Stäng', + textFormatting: 'Textformatering', + action: 'Funktion', + paragraphFormatting: 'Avsnittsformatering', + documentStyle: 'Dokumentstil', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Ångra', + redo: 'Gör om' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-sv-SE.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.js.map new file mode 100644 index 0000000..4e71291 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sv-SE.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sv-SE.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sv-SE': {\n font: {\n bold: 'Fet',\n italic: 'Kursiv',\n underline: 'Understruken',\n clear: 'Radera formatering',\n height: 'Radavstånd',\n name: 'Teckensnitt',\n strikethrough: 'Genomstruken',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Teckenstorlek',\n },\n image: {\n image: 'Bild',\n insert: 'Infoga bild',\n resizeFull: 'Full storlek',\n resizeHalf: 'Halv storlek',\n resizeQuarter: 'En fjärdedel i storlek',\n floatLeft: 'Vänsterjusterad',\n floatRight: 'Högerjusterad',\n floatNone: 'Ingen justering',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Dra en bild hit',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Välj från filer',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Länk till bild',\n remove: 'Ta bort bild',\n original: 'Original',\n },\n video: {\n video: 'Filmklipp',\n videoLink: 'Länk till filmklipp',\n insert: 'Infoga filmklipp',\n url: 'Länk till filmklipp',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)',\n },\n link: {\n link: 'Länk',\n insert: 'Infoga länk',\n unlink: 'Ta bort länk',\n edit: 'Redigera',\n textToDisplay: 'Visningstext',\n url: 'Till vilken URL ska denna länk peka?',\n openInNewWindow: 'Öppna i ett nytt fönster',\n useProtocol: 'Använd standardprotokoll',\n },\n table: {\n table: 'Tabell',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Infoga horisontell linje',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'Citat',\n pre: 'Kod',\n h1: 'Rubrik 1',\n h2: 'Rubrik 2',\n h3: 'Rubrik 3',\n h4: 'Rubrik 4',\n h5: 'Rubrik 5',\n h6: 'Rubrik 6',\n },\n lists: {\n unordered: 'Punktlista',\n ordered: 'Numrerad lista',\n },\n options: {\n help: 'Hjälp',\n fullscreen: 'Fullskärm',\n codeview: 'HTML-visning',\n },\n paragraph: {\n paragraph: 'Justera text',\n outdent: 'Minska indrag',\n indent: 'Öka indrag',\n left: 'Vänsterjusterad',\n center: 'Centrerad',\n right: 'Högerjusterad',\n justify: 'Justera text',\n },\n color: {\n recent: 'Senast använda färg',\n more: 'Fler färger',\n background: 'Bakgrundsfärg',\n foreground: 'Teckenfärg',\n transparent: 'Genomskinlig',\n setTransparent: 'Gör genomskinlig',\n reset: 'Nollställ',\n resetToDefault: 'Återställ till standard',\n },\n shortcut: {\n shortcuts: 'Kortkommandon',\n close: 'Stäng',\n textFormatting: 'Textformatering',\n action: 'Funktion',\n paragraphFormatting: 'Avsnittsformatering',\n documentStyle: 'Dokumentstil',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Ångra',\n redo: 'Gör om',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.min.js new file mode 100644 index 0000000..ab1f194 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"sv-SE":{font:{bold:"Fet",italic:"Kursiv",underline:"Understruken",clear:"Radera formatering",height:"Radavstånd",name:"Teckensnitt",strikethrough:"Genomstruken",subscript:"Subscript",superscript:"Superscript",size:"Teckenstorlek"},image:{image:"Bild",insert:"Infoga bild",resizeFull:"Full storlek",resizeHalf:"Halv storlek",resizeQuarter:"En fjärdedel i storlek",floatLeft:"Vänsterjusterad",floatRight:"Högerjusterad",floatNone:"Ingen justering",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Dra en bild hit",dropImage:"Drop image or Text",selectFromFiles:"Välj från filer",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Länk till bild",remove:"Ta bort bild",original:"Original"},video:{video:"Filmklipp",videoLink:"Länk till filmklipp",insert:"Infoga filmklipp",url:"Länk till filmklipp",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Länk",insert:"Infoga länk",unlink:"Ta bort länk",edit:"Redigera",textToDisplay:"Visningstext",url:"Till vilken URL ska denna länk peka?",openInNewWindow:"Öppna i ett nytt fönster",useProtocol:"Använd standardprotokoll"},table:{table:"Tabell",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Infoga horisontell linje"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Kod",h1:"Rubrik 1",h2:"Rubrik 2",h3:"Rubrik 3",h4:"Rubrik 4",h5:"Rubrik 5",h6:"Rubrik 6"},lists:{unordered:"Punktlista",ordered:"Numrerad lista"},options:{help:"Hjälp",fullscreen:"Fullskärm",codeview:"HTML-visning"},paragraph:{paragraph:"Justera text",outdent:"Minska indrag",indent:"Öka indrag",left:"Vänsterjusterad",center:"Centrerad",right:"Högerjusterad",justify:"Justera text"},color:{recent:"Senast använda färg",more:"Fler färger",background:"Bakgrundsfärg",foreground:"Teckenfärg",transparent:"Genomskinlig",setTransparent:"Gör genomskinlig",reset:"Nollställ",resetToDefault:"Återställ till standard"},shortcut:{shortcuts:"Kortkommandon",close:"Stäng",textFormatting:"Textformatering",action:"Funktion",paragraphFormatting:"Avsnittsformatering",documentStyle:"Dokumentstil",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Ångra",redo:"Gör om"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-sv-SE.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.min.js.map new file mode 100644 index 0000000..2e775b2 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-sv-SE.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-sv-SE.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,MACNC,OAAQ,SACRC,UAAW,eACXC,MAAO,qBACPC,OAAQ,aACRC,KAAM,cACNC,cAAe,eACfC,UAAW,YACXC,YAAa,cACbC,KAAM,iBAERC,MAAO,CACLA,MAAO,OACPC,OAAQ,cACRC,WAAY,eACZC,WAAY,eACZC,cAAe,yBACfC,UAAW,kBACXC,WAAY,gBACZC,UAAW,kBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,kBACfC,UAAW,qBACXC,gBAAiB,kBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,iBACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,YACPC,UAAW,sBACXpB,OAAQ,mBACRgB,IAAK,sBACLK,UAAW,8DAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,cACRuB,OAAQ,eACRC,KAAM,WACNC,cAAe,eACfT,IAAK,uCACLU,gBAAiB,2BACjBC,YAAa,4BAEfC,MAAO,CACLA,MAAO,SACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFpC,OAAQ,4BAEVqC,MAAO,CACLA,MAAO,OACPC,EAAG,IACHC,WAAY,QACZC,IAAK,MACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,aACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,YACZC,SAAU,gBAEZC,UAAW,CACTA,UAAW,eACXC,QAAS,gBACTC,OAAQ,aACRC,KAAM,kBACNC,OAAQ,YACRC,MAAO,gBACPC,QAAS,gBAEXC,MAAO,CACLC,OAAQ,sBACRC,KAAM,cACNC,WAAY,gBACZC,WAAY,aACZC,YAAa,eACbC,eAAgB,mBAChBC,MAAO,YACPC,eAAgB,2BAElBC,SAAU,CACRC,UAAW,gBACXC,MAAO,QACPC,eAAgB,kBAChBC,OAAQ,WACRC,oBAAqB,sBACrBC,cAAe,eACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,QACNC,KAAM,UAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-sv-SE.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'sv-SE': {\n font: {\n bold: 'Fet',\n italic: 'Kursiv',\n underline: 'Understruken',\n clear: 'Radera formatering',\n height: 'Radavstånd',\n name: 'Teckensnitt',\n strikethrough: 'Genomstruken',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Teckenstorlek',\n },\n image: {\n image: 'Bild',\n insert: 'Infoga bild',\n resizeFull: 'Full storlek',\n resizeHalf: 'Halv storlek',\n resizeQuarter: 'En fjärdedel i storlek',\n floatLeft: 'Vänsterjusterad',\n floatRight: 'Högerjusterad',\n floatNone: 'Ingen justering',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Dra en bild hit',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Välj från filer',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Länk till bild',\n remove: 'Ta bort bild',\n original: 'Original',\n },\n video: {\n video: 'Filmklipp',\n videoLink: 'Länk till filmklipp',\n insert: 'Infoga filmklipp',\n url: 'Länk till filmklipp',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)',\n },\n link: {\n link: 'Länk',\n insert: 'Infoga länk',\n unlink: 'Ta bort länk',\n edit: 'Redigera',\n textToDisplay: 'Visningstext',\n url: 'Till vilken URL ska denna länk peka?',\n openInNewWindow: 'Öppna i ett nytt fönster',\n useProtocol: 'Använd standardprotokoll',\n },\n table: {\n table: 'Tabell',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Infoga horisontell linje',\n },\n style: {\n style: 'Stil',\n p: 'p',\n blockquote: 'Citat',\n pre: 'Kod',\n h1: 'Rubrik 1',\n h2: 'Rubrik 2',\n h3: 'Rubrik 3',\n h4: 'Rubrik 4',\n h5: 'Rubrik 5',\n h6: 'Rubrik 6',\n },\n lists: {\n unordered: 'Punktlista',\n ordered: 'Numrerad lista',\n },\n options: {\n help: 'Hjälp',\n fullscreen: 'Fullskärm',\n codeview: 'HTML-visning',\n },\n paragraph: {\n paragraph: 'Justera text',\n outdent: 'Minska indrag',\n indent: 'Öka indrag',\n left: 'Vänsterjusterad',\n center: 'Centrerad',\n right: 'Högerjusterad',\n justify: 'Justera text',\n },\n color: {\n recent: 'Senast använda färg',\n more: 'Fler färger',\n background: 'Bakgrundsfärg',\n foreground: 'Teckenfärg',\n transparent: 'Genomskinlig',\n setTransparent: 'Gör genomskinlig',\n reset: 'Nollställ',\n resetToDefault: 'Återställ till standard',\n },\n shortcut: {\n shortcuts: 'Kortkommandon',\n close: 'Stäng',\n textFormatting: 'Textformatering',\n action: 'Funktion',\n paragraphFormatting: 'Avsnittsformatering',\n documentStyle: 'Dokumentstil',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Ångra',\n redo: 'Gör om',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.js b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.js new file mode 100644 index 0000000..397a3b1 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'ta-IN': { + font: { + bold: 'தடித்த', + italic: 'சாய்வு', + underline: 'அடிக்கோடு', + clear: 'நீக்கு', + height: 'வரி உயரம்', + name: 'எழுத்துரு பெயர்', + strikethrough: 'குறுக்குக் கோடு', + size: 'எழுத்துரு அளவு', + superscript: 'மேல் ஒட்டு', + subscript: 'கீழ் ஒட்டு' + }, + image: { + image: 'படம்', + insert: 'படத்தை செருகு', + resizeFull: 'முழு அளவை', + resizeHalf: 'அரை அளவை', + resizeQuarter: 'கால் அளவை', + floatLeft: 'இடப்பக்கமாக வை', + floatRight: 'வலப்பக்கமாக வை', + floatNone: 'இயல்புநிலையில் வை', + shapeRounded: 'வட்டமான வடிவம்', + shapeCircle: 'வட்ட வடிவம்', + shapeThumbnail: 'சிறு வடிவம்', + shapeNone: 'வடிவத்தை நீக்கு', + dragImageHere: 'படத்தை இங்கே இழுத்துவை', + dropImage: 'படத்தை விடு', + selectFromFiles: 'கோப்புகளை தேர்வு செய்', + maximumFileSize: 'அதிகபட்ச கோப்பு அளவு', + maximumFileSizeError: 'கோப்பு அதிகபட்ச அளவை மீறிவிட்டது', + url: 'இணையதள முகவரி', + remove: 'படத்தை நீக்கு', + original: 'Original' + }, + video: { + video: 'காணொளி', + videoLink: 'காணொளி இணைப்பு', + insert: 'காணொளியை செருகு', + url: 'இணையதள முகவரி', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'இணைப்பு', + insert: 'இணைப்பை செருகு', + unlink: 'இணைப்பை நீக்கு', + edit: 'இணைப்பை தொகு', + textToDisplay: 'காட்சி வாசகம்', + url: 'இணையதள முகவரி', + openInNewWindow: 'புதிய சாளரத்தில் திறக்க' + }, + table: { + table: 'அட்டவணை', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'கிடைமட்ட கோடு' + }, + style: { + style: 'தொகுப்பு', + p: 'பத்தி', + blockquote: 'மேற்கோள்', + pre: 'குறியீடு', + h1: 'தலைப்பு 1', + h2: 'தலைப்பு 2', + h3: 'தலைப்பு 3', + h4: 'தலைப்பு 4', + h5: 'தலைப்பு 5', + h6: 'தலைப்பு 6' + }, + lists: { + unordered: 'வரிசையிடாத', + ordered: 'வரிசையிட்ட' + }, + options: { + help: 'உதவி', + fullscreen: 'முழுத்திரை', + codeview: 'நிரலாக்க காட்சி' + }, + paragraph: { + paragraph: 'பத்தி', + outdent: 'வெளித்தள்ளு', + indent: 'உள்ளே தள்ளு', + left: 'இடது சீரமைப்பு', + center: 'நடு சீரமைப்பு', + right: 'வலது சீரமைப்பு', + justify: 'இருபுற சீரமைப்பு' + }, + color: { + recent: 'அண்மை நிறம்', + more: 'மேலும்', + background: 'பின்புல நிறம்', + foreground: 'முன்புற நிறம்', + transparent: 'தெளிமையான', + setTransparent: 'தெளிமையாக்கு', + reset: 'மீட்டமைக்க', + resetToDefault: 'இயல்புநிலைக்கு மீட்டமை' + }, + shortcut: { + shortcuts: 'குறுக்குவழி', + close: 'மூடு', + textFormatting: 'எழுத்து வடிவமைப்பு', + action: 'செயல்படுத்து', + paragraphFormatting: 'பத்தி வடிவமைப்பு', + documentStyle: 'ஆவண பாணி', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'மீளமை', + redo: 'மீண்டும்' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-ta-IN.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.js.map new file mode 100644 index 0000000..f24ff75 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ta-IN.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ta-IN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ta-IN': {\n font: {\n bold: 'தடித்த',\n italic: 'சாய்வு',\n underline: 'அடிக்கோடு',\n clear: 'நீக்கு',\n height: 'வரி உயரம்',\n name: 'எழுத்துரு பெயர்',\n strikethrough: 'குறுக்குக் கோடு',\n size: 'எழுத்துரு அளவு',\n superscript: 'மேல் ஒட்டு',\n subscript: 'கீழ் ஒட்டு',\n },\n image: {\n image: 'படம்',\n insert: 'படத்தை செருகு',\n resizeFull: 'முழு அளவை',\n resizeHalf: 'அரை அளவை',\n resizeQuarter: 'கால் அளவை',\n floatLeft: 'இடப்பக்கமாக வை',\n floatRight: 'வலப்பக்கமாக வை',\n floatNone: 'இயல்புநிலையில் வை',\n shapeRounded: 'வட்டமான வடிவம்',\n shapeCircle: 'வட்ட வடிவம்',\n shapeThumbnail: 'சிறு வடிவம்',\n shapeNone: 'வடிவத்தை நீக்கு',\n dragImageHere: 'படத்தை இங்கே இழுத்துவை',\n dropImage: 'படத்தை விடு',\n selectFromFiles: 'கோப்புகளை தேர்வு செய்',\n maximumFileSize: 'அதிகபட்ச கோப்பு அளவு',\n maximumFileSizeError: 'கோப்பு அதிகபட்ச அளவை மீறிவிட்டது',\n url: 'இணையதள முகவரி',\n remove: 'படத்தை நீக்கு',\n original: 'Original',\n },\n video: {\n video: 'காணொளி',\n videoLink: 'காணொளி இணைப்பு',\n insert: 'காணொளியை செருகு',\n url: 'இணையதள முகவரி',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'இணைப்பு',\n insert: 'இணைப்பை செருகு',\n unlink: 'இணைப்பை நீக்கு',\n edit: 'இணைப்பை தொகு',\n textToDisplay: 'காட்சி வாசகம்',\n url: 'இணையதள முகவரி',\n openInNewWindow: 'புதிய சாளரத்தில் திறக்க',\n },\n table: {\n table: 'அட்டவணை',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'கிடைமட்ட கோடு',\n },\n style: {\n style: 'தொகுப்பு',\n p: 'பத்தி',\n blockquote: 'மேற்கோள்',\n pre: 'குறியீடு',\n h1: 'தலைப்பு 1',\n h2: 'தலைப்பு 2',\n h3: 'தலைப்பு 3',\n h4: 'தலைப்பு 4',\n h5: 'தலைப்பு 5',\n h6: 'தலைப்பு 6',\n },\n lists: {\n unordered: 'வரிசையிடாத',\n ordered: 'வரிசையிட்ட',\n },\n options: {\n help: 'உதவி',\n fullscreen: 'முழுத்திரை',\n codeview: 'நிரலாக்க காட்சி',\n },\n paragraph: {\n paragraph: 'பத்தி',\n outdent: 'வெளித்தள்ளு',\n indent: 'உள்ளே தள்ளு',\n left: 'இடது சீரமைப்பு',\n center: 'நடு சீரமைப்பு',\n right: 'வலது சீரமைப்பு',\n justify: 'இருபுற சீரமைப்பு',\n },\n color: {\n recent: 'அண்மை நிறம்',\n more: 'மேலும்',\n background: 'பின்புல நிறம்',\n foreground: 'முன்புற நிறம்',\n transparent: 'தெளிமையான',\n setTransparent: 'தெளிமையாக்கு',\n reset: 'மீட்டமைக்க',\n resetToDefault: 'இயல்புநிலைக்கு மீட்டமை',\n },\n shortcut: {\n shortcuts: 'குறுக்குவழி',\n close: 'மூடு',\n textFormatting: 'எழுத்து வடிவமைப்பு',\n action: 'செயல்படுத்து',\n paragraphFormatting: 'பத்தி வடிவமைப்பு',\n documentStyle: 'ஆவண பாணி',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'மீளமை',\n redo: 'மீண்டும்',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","size","superscript","subscript","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.min.js new file mode 100644 index 0000000..bb123f5 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"ta-IN":{font:{bold:"தடித்த",italic:"சாய்வு",underline:"அடிக்கோடு",clear:"நீக்கு",height:"வரி உயரம்",name:"எழுத்துரு பெயர்",strikethrough:"குறுக்குக் கோடு",size:"எழுத்துரு அளவு",superscript:"மேல் ஒட்டு",subscript:"கீழ் ஒட்டு"},image:{image:"படம்",insert:"படத்தை செருகு",resizeFull:"முழு அளவை",resizeHalf:"அரை அளவை",resizeQuarter:"கால் அளவை",floatLeft:"இடப்பக்கமாக வை",floatRight:"வலப்பக்கமாக வை",floatNone:"இயல்புநிலையில் வை",shapeRounded:"வட்டமான வடிவம்",shapeCircle:"வட்ட வடிவம்",shapeThumbnail:"சிறு வடிவம்",shapeNone:"வடிவத்தை நீக்கு",dragImageHere:"படத்தை இங்கே இழுத்துவை",dropImage:"படத்தை விடு",selectFromFiles:"கோப்புகளை தேர்வு செய்",maximumFileSize:"அதிகபட்ச கோப்பு அளவு",maximumFileSizeError:"கோப்பு அதிகபட்ச அளவை மீறிவிட்டது",url:"இணையதள முகவரி",remove:"படத்தை நீக்கு",original:"Original"},video:{video:"காணொளி",videoLink:"காணொளி இணைப்பு",insert:"காணொளியை செருகு",url:"இணையதள முகவரி",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"இணைப்பு",insert:"இணைப்பை செருகு",unlink:"இணைப்பை நீக்கு",edit:"இணைப்பை தொகு",textToDisplay:"காட்சி வாசகம்",url:"இணையதள முகவரி",openInNewWindow:"புதிய சாளரத்தில் திறக்க"},table:{table:"அட்டவணை",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"கிடைமட்ட கோடு"},style:{style:"தொகுப்பு",p:"பத்தி",blockquote:"மேற்கோள்",pre:"குறியீடு",h1:"தலைப்பு 1",h2:"தலைப்பு 2",h3:"தலைப்பு 3",h4:"தலைப்பு 4",h5:"தலைப்பு 5",h6:"தலைப்பு 6"},lists:{unordered:"வரிசையிடாத",ordered:"வரிசையிட்ட"},options:{help:"உதவி",fullscreen:"முழுத்திரை",codeview:"நிரலாக்க காட்சி"},paragraph:{paragraph:"பத்தி",outdent:"வெளித்தள்ளு",indent:"உள்ளே தள்ளு",left:"இடது சீரமைப்பு",center:"நடு சீரமைப்பு",right:"வலது சீரமைப்பு",justify:"இருபுற சீரமைப்பு"},color:{recent:"அண்மை நிறம்",more:"மேலும்",background:"பின்புல நிறம்",foreground:"முன்புற நிறம்",transparent:"தெளிமையான",setTransparent:"தெளிமையாக்கு",reset:"மீட்டமைக்க",resetToDefault:"இயல்புநிலைக்கு மீட்டமை"},shortcut:{shortcuts:"குறுக்குவழி",close:"மூடு",textFormatting:"எழுத்து வடிவமைப்பு",action:"செயல்படுத்து",paragraphFormatting:"பத்தி வடிவமைப்பு",documentStyle:"ஆவண பாணி",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"மீளமை",redo:"மீண்டும்"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-ta-IN.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.min.js.map new file mode 100644 index 0000000..01dda66 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-ta-IN.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-ta-IN.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,SACNC,OAAQ,SACRC,UAAW,aACXC,MAAO,SACPC,OAAQ,aACRC,KAAM,kBACNC,cAAe,mBACfC,KAAM,iBACNC,YAAa,aACbC,UAAW,cAEbC,MAAO,CACLA,MAAO,OACPC,OAAQ,gBACRC,WAAY,YACZC,WAAY,WACZC,cAAe,YACfC,UAAW,iBACXC,WAAY,iBACZC,UAAW,oBACXC,aAAc,iBACdC,YAAa,cACbC,eAAgB,cAChBC,UAAW,kBACXC,cAAe,yBACfC,UAAW,cACXC,gBAAiB,yBACjBC,gBAAiB,wBACjBC,qBAAsB,oCACtBC,IAAK,gBACLC,OAAQ,gBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,UACPC,UAAW,kBACXpB,OAAQ,kBACRgB,IAAK,gBACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,UACNtB,OAAQ,iBACRuB,OAAQ,iBACRC,KAAM,gBACNC,cAAe,gBACfT,IAAK,gBACLU,gBAAiB,2BAEnBC,MAAO,CACLA,MAAO,UACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFnC,OAAQ,kBAEVoC,MAAO,CACLA,MAAO,WACPC,EAAG,QACHC,WAAY,YACZC,IAAK,WACLC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,YACJC,GAAI,aAENC,MAAO,CACLC,UAAW,aACXC,QAAS,cAEXC,QAAS,CACPC,KAAM,OACNC,WAAY,aACZC,SAAU,mBAEZC,UAAW,CACTA,UAAW,QACXC,QAAS,cACTC,OAAQ,cACRC,KAAM,iBACNC,OAAQ,gBACRC,MAAO,iBACPC,QAAS,oBAEXC,MAAO,CACLC,OAAQ,cACRC,KAAM,SACNC,WAAY,gBACZC,WAAY,gBACZC,YAAa,YACbC,eAAgB,eAChBC,MAAO,aACPC,eAAgB,0BAElBC,SAAU,CACRC,UAAW,cACXC,MAAO,OACPC,eAAgB,qBAChBC,OAAQ,eACRC,oBAAqB,mBACrBC,cAAe,WACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,QACNC,KAAM,YAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-ta-IN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'ta-IN': {\n font: {\n bold: 'தடித்த',\n italic: 'சாய்வு',\n underline: 'அடிக்கோடு',\n clear: 'நீக்கு',\n height: 'வரி உயரம்',\n name: 'எழுத்துரு பெயர்',\n strikethrough: 'குறுக்குக் கோடு',\n size: 'எழுத்துரு அளவு',\n superscript: 'மேல் ஒட்டு',\n subscript: 'கீழ் ஒட்டு',\n },\n image: {\n image: 'படம்',\n insert: 'படத்தை செருகு',\n resizeFull: 'முழு அளவை',\n resizeHalf: 'அரை அளவை',\n resizeQuarter: 'கால் அளவை',\n floatLeft: 'இடப்பக்கமாக வை',\n floatRight: 'வலப்பக்கமாக வை',\n floatNone: 'இயல்புநிலையில் வை',\n shapeRounded: 'வட்டமான வடிவம்',\n shapeCircle: 'வட்ட வடிவம்',\n shapeThumbnail: 'சிறு வடிவம்',\n shapeNone: 'வடிவத்தை நீக்கு',\n dragImageHere: 'படத்தை இங்கே இழுத்துவை',\n dropImage: 'படத்தை விடு',\n selectFromFiles: 'கோப்புகளை தேர்வு செய்',\n maximumFileSize: 'அதிகபட்ச கோப்பு அளவு',\n maximumFileSizeError: 'கோப்பு அதிகபட்ச அளவை மீறிவிட்டது',\n url: 'இணையதள முகவரி',\n remove: 'படத்தை நீக்கு',\n original: 'Original',\n },\n video: {\n video: 'காணொளி',\n videoLink: 'காணொளி இணைப்பு',\n insert: 'காணொளியை செருகு',\n url: 'இணையதள முகவரி',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'இணைப்பு',\n insert: 'இணைப்பை செருகு',\n unlink: 'இணைப்பை நீக்கு',\n edit: 'இணைப்பை தொகு',\n textToDisplay: 'காட்சி வாசகம்',\n url: 'இணையதள முகவரி',\n openInNewWindow: 'புதிய சாளரத்தில் திறக்க',\n },\n table: {\n table: 'அட்டவணை',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'கிடைமட்ட கோடு',\n },\n style: {\n style: 'தொகுப்பு',\n p: 'பத்தி',\n blockquote: 'மேற்கோள்',\n pre: 'குறியீடு',\n h1: 'தலைப்பு 1',\n h2: 'தலைப்பு 2',\n h3: 'தலைப்பு 3',\n h4: 'தலைப்பு 4',\n h5: 'தலைப்பு 5',\n h6: 'தலைப்பு 6',\n },\n lists: {\n unordered: 'வரிசையிடாத',\n ordered: 'வரிசையிட்ட',\n },\n options: {\n help: 'உதவி',\n fullscreen: 'முழுத்திரை',\n codeview: 'நிரலாக்க காட்சி',\n },\n paragraph: {\n paragraph: 'பத்தி',\n outdent: 'வெளித்தள்ளு',\n indent: 'உள்ளே தள்ளு',\n left: 'இடது சீரமைப்பு',\n center: 'நடு சீரமைப்பு',\n right: 'வலது சீரமைப்பு',\n justify: 'இருபுற சீரமைப்பு',\n },\n color: {\n recent: 'அண்மை நிறம்',\n more: 'மேலும்',\n background: 'பின்புல நிறம்',\n foreground: 'முன்புற நிறம்',\n transparent: 'தெளிமையான',\n setTransparent: 'தெளிமையாக்கு',\n reset: 'மீட்டமைக்க',\n resetToDefault: 'இயல்புநிலைக்கு மீட்டமை',\n },\n shortcut: {\n shortcuts: 'குறுக்குவழி',\n close: 'மூடு',\n textFormatting: 'எழுத்து வடிவமைப்பு',\n action: 'செயல்படுத்து',\n paragraphFormatting: 'பத்தி வடிவமைப்பு',\n documentStyle: 'ஆவண பாணி',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'மீளமை',\n redo: 'மீண்டும்',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","size","superscript","subscript","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.js b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.js new file mode 100644 index 0000000..f59cad5 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'th-TH': { + font: { + bold: 'ตัวหนา', + italic: 'ตัวเอียง', + underline: 'ขีดเส้นใต้', + clear: 'ล้างรูปแบบตัวอักษร', + height: 'ความสูงบรรทัด', + name: 'แบบตัวอักษร', + strikethrough: 'ขีดฆ่า', + subscript: 'ตัวห้อย', + superscript: 'ตัวยก', + size: 'ขนาดตัวอักษร' + }, + image: { + image: 'รูปภาพ', + insert: 'แทรกรูปภาพ', + resizeFull: 'ปรับขนาดเท่าจริง', + resizeHalf: 'ปรับขนาดลง 50%', + resizeQuarter: 'ปรับขนาดลง 25%', + floatLeft: 'ชิดซ้าย', + floatRight: 'ชิดขวา', + floatNone: 'ไม่จัดตำแหน่ง', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'ลากรูปภาพที่ต้องการไว้ที่นี่', + dropImage: 'วางรูปภาพหรือข้อความ', + selectFromFiles: 'เลือกไฟล์รูปภาพ', + maximumFileSize: 'ขนาดไฟล์ใหญ่สุด', + maximumFileSizeError: 'ไฟล์เกินขนาดที่กำหนด', + url: 'ที่อยู่ URL ของรูปภาพ', + remove: 'ลบรูปภาพ', + original: 'Original' + }, + video: { + video: 'วีดีโอ', + videoLink: 'ลิงก์ของวีดีโอ', + insert: 'แทรกวีดีโอ', + url: 'ที่อยู่ URL ของวีดีโอ', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)' + }, + link: { + link: 'ตัวเชื่อมโยง', + insert: 'แทรกตัวเชื่อมโยง', + unlink: 'ยกเลิกตัวเชื่อมโยง', + edit: 'แก้ไข', + textToDisplay: 'ข้อความที่ให้แสดง', + url: 'ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?', + openInNewWindow: 'เปิดในหน้าต่างใหม่' + }, + table: { + table: 'ตาราง', + addRowAbove: 'เพิ่มแถวด้านบน', + addRowBelow: 'เพิ่มแถวด้านล่าง', + addColLeft: 'เพิ่มคอลัมน์ด้านซ้าย', + addColRight: 'เพิ่มคอลัมน์ด้านขวา', + delRow: 'ลบแถว', + delCol: 'ลบคอลัมน์', + delTable: 'ลบตาราง' + }, + hr: { + insert: 'แทรกเส้นคั่น' + }, + style: { + style: 'รูปแบบ', + p: 'ปกติ', + blockquote: 'ข้อความ', + pre: 'โค้ด', + h1: 'หัวข้อ 1', + h2: 'หัวข้อ 2', + h3: 'หัวข้อ 3', + h4: 'หัวข้อ 4', + h5: 'หัวข้อ 5', + h6: 'หัวข้อ 6' + }, + lists: { + unordered: 'รายการแบบไม่มีลำดับ', + ordered: 'รายการแบบมีลำดับ' + }, + options: { + help: 'ช่วยเหลือ', + fullscreen: 'ขยายเต็มหน้าจอ', + codeview: 'ซอร์สโค้ด' + }, + paragraph: { + paragraph: 'ย่อหน้า', + outdent: 'เยื้องซ้าย', + indent: 'เยื้องขวา', + left: 'จัดหน้าชิดซ้าย', + center: 'จัดหน้ากึ่งกลาง', + right: 'จัดหน้าชิดขวา', + justify: 'จัดบรรทัดเสมอกัน' + }, + color: { + recent: 'สีที่ใช้ล่าสุด', + more: 'สีอื่นๆ', + background: 'สีพื้นหลัง', + foreground: 'สีพื้นหน้า', + transparent: 'โปร่งแสง', + setTransparent: 'ตั้งค่าความโปร่งแสง', + reset: 'คืนค่า', + resetToDefault: 'คืนค่ามาตรฐาน' + }, + shortcut: { + shortcuts: 'แป้นลัด', + close: 'ปิด', + textFormatting: 'การจัดรูปแบบข้อความ', + action: 'การกระทำ', + paragraphFormatting: 'การจัดรูปแบบย่อหน้า', + documentStyle: 'รูปแบบของเอกสาร', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'ทำตัวหนา', + 'italic': 'ทำตัวเอียง', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H1', + 'formatH2': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H2', + 'formatH3': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H3', + 'formatH4': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H4', + 'formatH5': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H5', + 'formatH6': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'เปิดหน้าแก้ไข Link' + }, + history: { + undo: 'ยกเลิกการกระทำ', + redo: 'ทำซ้ำการกระทำ' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-th-TH.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.js.map new file mode 100644 index 0000000..1ff4ac3 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-th-TH.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-th-TH.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'th-TH': {\n font: {\n bold: 'ตัวหนา',\n italic: 'ตัวเอียง',\n underline: 'ขีดเส้นใต้',\n clear: 'ล้างรูปแบบตัวอักษร',\n height: 'ความสูงบรรทัด',\n name: 'แบบตัวอักษร',\n strikethrough: 'ขีดฆ่า',\n subscript: 'ตัวห้อย',\n superscript: 'ตัวยก',\n size: 'ขนาดตัวอักษร',\n },\n image: {\n image: 'รูปภาพ',\n insert: 'แทรกรูปภาพ',\n resizeFull: 'ปรับขนาดเท่าจริง',\n resizeHalf: 'ปรับขนาดลง 50%',\n resizeQuarter: 'ปรับขนาดลง 25%',\n floatLeft: 'ชิดซ้าย',\n floatRight: 'ชิดขวา',\n floatNone: 'ไม่จัดตำแหน่ง',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'ลากรูปภาพที่ต้องการไว้ที่นี่',\n dropImage: 'วางรูปภาพหรือข้อความ',\n selectFromFiles: 'เลือกไฟล์รูปภาพ',\n maximumFileSize: 'ขนาดไฟล์ใหญ่สุด',\n maximumFileSizeError: 'ไฟล์เกินขนาดที่กำหนด',\n url: 'ที่อยู่ URL ของรูปภาพ',\n remove: 'ลบรูปภาพ',\n original: 'Original',\n },\n video: {\n video: 'วีดีโอ',\n videoLink: 'ลิงก์ของวีดีโอ',\n insert: 'แทรกวีดีโอ',\n url: 'ที่อยู่ URL ของวีดีโอ',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)',\n },\n link: {\n link: 'ตัวเชื่อมโยง',\n insert: 'แทรกตัวเชื่อมโยง',\n unlink: 'ยกเลิกตัวเชื่อมโยง',\n edit: 'แก้ไข',\n textToDisplay: 'ข้อความที่ให้แสดง',\n url: 'ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?',\n openInNewWindow: 'เปิดในหน้าต่างใหม่',\n },\n table: {\n table: 'ตาราง',\n addRowAbove: 'เพิ่มแถวด้านบน',\n addRowBelow: 'เพิ่มแถวด้านล่าง',\n addColLeft: 'เพิ่มคอลัมน์ด้านซ้าย',\n addColRight: 'เพิ่มคอลัมน์ด้านขวา',\n delRow: 'ลบแถว',\n delCol: 'ลบคอลัมน์',\n delTable: 'ลบตาราง',\n },\n hr: {\n insert: 'แทรกเส้นคั่น',\n },\n style: {\n style: 'รูปแบบ',\n p: 'ปกติ',\n blockquote: 'ข้อความ',\n pre: 'โค้ด',\n h1: 'หัวข้อ 1',\n h2: 'หัวข้อ 2',\n h3: 'หัวข้อ 3',\n h4: 'หัวข้อ 4',\n h5: 'หัวข้อ 5',\n h6: 'หัวข้อ 6',\n },\n lists: {\n unordered: 'รายการแบบไม่มีลำดับ',\n ordered: 'รายการแบบมีลำดับ',\n },\n options: {\n help: 'ช่วยเหลือ',\n fullscreen: 'ขยายเต็มหน้าจอ',\n codeview: 'ซอร์สโค้ด',\n },\n paragraph: {\n paragraph: 'ย่อหน้า',\n outdent: 'เยื้องซ้าย',\n indent: 'เยื้องขวา',\n left: 'จัดหน้าชิดซ้าย',\n center: 'จัดหน้ากึ่งกลาง',\n right: 'จัดหน้าชิดขวา',\n justify: 'จัดบรรทัดเสมอกัน',\n },\n color: {\n recent: 'สีที่ใช้ล่าสุด',\n more: 'สีอื่นๆ',\n background: 'สีพื้นหลัง',\n foreground: 'สีพื้นหน้า',\n transparent: 'โปร่งแสง',\n setTransparent: 'ตั้งค่าความโปร่งแสง',\n reset: 'คืนค่า',\n resetToDefault: 'คืนค่ามาตรฐาน',\n },\n shortcut: {\n shortcuts: 'แป้นลัด',\n close: 'ปิด',\n textFormatting: 'การจัดรูปแบบข้อความ',\n action: 'การกระทำ',\n paragraphFormatting: 'การจัดรูปแบบย่อหน้า',\n documentStyle: 'รูปแบบของเอกสาร',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'ทำตัวหนา',\n 'italic': 'ทำตัวเอียง',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H1',\n 'formatH2': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H2',\n 'formatH3': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H3',\n 'formatH4': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H4',\n 'formatH5': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H5',\n 'formatH6': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'เปิดหน้าแก้ไข Link',\n },\n history: {\n undo: 'ยกเลิกการกระทำ',\n redo: 'ทำซ้ำการกระทำ',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.min.js new file mode 100644 index 0000000..a93ec28 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"th-TH":{font:{bold:"ตัวหนา",italic:"ตัวเอียง",underline:"ขีดเส้นใต้",clear:"ล้างรูปแบบตัวอักษร",height:"ความสูงบรรทัด",name:"แบบตัวอักษร",strikethrough:"ขีดฆ่า",subscript:"ตัวห้อย",superscript:"ตัวยก",size:"ขนาดตัวอักษร"},image:{image:"รูปภาพ",insert:"แทรกรูปภาพ",resizeFull:"ปรับขนาดเท่าจริง",resizeHalf:"ปรับขนาดลง 50%",resizeQuarter:"ปรับขนาดลง 25%",floatLeft:"ชิดซ้าย",floatRight:"ชิดขวา",floatNone:"ไม่จัดตำแหน่ง",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"ลากรูปภาพที่ต้องการไว้ที่นี่",dropImage:"วางรูปภาพหรือข้อความ",selectFromFiles:"เลือกไฟล์รูปภาพ",maximumFileSize:"ขนาดไฟล์ใหญ่สุด",maximumFileSizeError:"ไฟล์เกินขนาดที่กำหนด",url:"ที่อยู่ URL ของรูปภาพ",remove:"ลบรูปภาพ",original:"Original"},video:{video:"วีดีโอ",videoLink:"ลิงก์ของวีดีโอ",insert:"แทรกวีดีโอ",url:"ที่อยู่ URL ของวีดีโอ",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)"},link:{link:"ตัวเชื่อมโยง",insert:"แทรกตัวเชื่อมโยง",unlink:"ยกเลิกตัวเชื่อมโยง",edit:"แก้ไข",textToDisplay:"ข้อความที่ให้แสดง",url:"ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?",openInNewWindow:"เปิดในหน้าต่างใหม่"},table:{table:"ตาราง",addRowAbove:"เพิ่มแถวด้านบน",addRowBelow:"เพิ่มแถวด้านล่าง",addColLeft:"เพิ่มคอลัมน์ด้านซ้าย",addColRight:"เพิ่มคอลัมน์ด้านขวา",delRow:"ลบแถว",delCol:"ลบคอลัมน์",delTable:"ลบตาราง"},hr:{insert:"แทรกเส้นคั่น"},style:{style:"รูปแบบ",p:"ปกติ",blockquote:"ข้อความ",pre:"โค้ด",h1:"หัวข้อ 1",h2:"หัวข้อ 2",h3:"หัวข้อ 3",h4:"หัวข้อ 4",h5:"หัวข้อ 5",h6:"หัวข้อ 6"},lists:{unordered:"รายการแบบไม่มีลำดับ",ordered:"รายการแบบมีลำดับ"},options:{help:"ช่วยเหลือ",fullscreen:"ขยายเต็มหน้าจอ",codeview:"ซอร์สโค้ด"},paragraph:{paragraph:"ย่อหน้า",outdent:"เยื้องซ้าย",indent:"เยื้องขวา",left:"จัดหน้าชิดซ้าย",center:"จัดหน้ากึ่งกลาง",right:"จัดหน้าชิดขวา",justify:"จัดบรรทัดเสมอกัน"},color:{recent:"สีที่ใช้ล่าสุด",more:"สีอื่นๆ",background:"สีพื้นหลัง",foreground:"สีพื้นหน้า",transparent:"โปร่งแสง",setTransparent:"ตั้งค่าความโปร่งแสง",reset:"คืนค่า",resetToDefault:"คืนค่ามาตรฐาน"},shortcut:{shortcuts:"แป้นลัด",close:"ปิด",textFormatting:"การจัดรูปแบบข้อความ",action:"การกระทำ",paragraphFormatting:"การจัดรูปแบบย่อหน้า",documentStyle:"รูปแบบของเอกสาร",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"ทำตัวหนา",italic:"ทำตัวเอียง",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H1",formatH2:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H2",formatH3:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H3",formatH4:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H4",formatH5:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H5",formatH6:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"เปิดหน้าแก้ไข Link"},history:{undo:"ยกเลิกการกระทำ",redo:"ทำซ้ำการกระทำ"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-th-TH.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.min.js.map new file mode 100644 index 0000000..c1f328e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-th-TH.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-th-TH.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,SACNC,OAAQ,WACRC,UAAW,aACXC,MAAO,qBACPC,OAAQ,gBACRC,KAAM,cACNC,cAAe,SACfC,UAAW,UACXC,YAAa,QACbC,KAAM,gBAERC,MAAO,CACLA,MAAO,SACPC,OAAQ,aACRC,WAAY,mBACZC,WAAY,iBACZC,cAAe,iBACfC,UAAW,UACXC,WAAY,SACZC,UAAW,gBACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,+BACfC,UAAW,uBACXC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,qBAAsB,uBACtBC,IAAK,wBACLC,OAAQ,WACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,SACPC,UAAW,iBACXpB,OAAQ,aACRgB,IAAK,wBACLK,UAAW,6DAEbC,KAAM,CACJA,KAAM,eACNtB,OAAQ,mBACRuB,OAAQ,qBACRC,KAAM,QACNC,cAAe,oBACfT,IAAK,8CACLU,gBAAiB,sBAEnBC,MAAO,CACLA,MAAO,QACPC,YAAa,iBACbC,YAAa,mBACbC,WAAY,uBACZC,YAAa,sBACbC,OAAQ,QACRC,OAAQ,YACRC,SAAU,WAEZC,GAAI,CACFnC,OAAQ,gBAEVoC,MAAO,CACLA,MAAO,SACPC,EAAG,OACHC,WAAY,UACZC,IAAK,OACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,sBACXC,QAAS,oBAEXC,QAAS,CACPC,KAAM,YACNC,WAAY,iBACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,UACXC,QAAS,aACTC,OAAQ,YACRC,KAAM,iBACNC,OAAQ,kBACRC,MAAO,gBACPC,QAAS,oBAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,UACNC,WAAY,aACZC,WAAY,aACZC,YAAa,WACbC,eAAgB,sBAChBC,MAAO,SACPC,eAAgB,iBAElBC,SAAU,CACRC,UAAW,UACXC,MAAO,MACPC,eAAgB,sBAChBC,OAAQ,WACRC,oBAAqB,sBACrBC,cAAe,kBACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,WACR,OAAU,aACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,SAAY,oCACZ,qBAAwB,yBACxB,kBAAmB,sBAErB2B,QAAS,CACPC,KAAM,iBACNC,KAAM,iBAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-th-TH.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'th-TH': {\n font: {\n bold: 'ตัวหนา',\n italic: 'ตัวเอียง',\n underline: 'ขีดเส้นใต้',\n clear: 'ล้างรูปแบบตัวอักษร',\n height: 'ความสูงบรรทัด',\n name: 'แบบตัวอักษร',\n strikethrough: 'ขีดฆ่า',\n subscript: 'ตัวห้อย',\n superscript: 'ตัวยก',\n size: 'ขนาดตัวอักษร',\n },\n image: {\n image: 'รูปภาพ',\n insert: 'แทรกรูปภาพ',\n resizeFull: 'ปรับขนาดเท่าจริง',\n resizeHalf: 'ปรับขนาดลง 50%',\n resizeQuarter: 'ปรับขนาดลง 25%',\n floatLeft: 'ชิดซ้าย',\n floatRight: 'ชิดขวา',\n floatNone: 'ไม่จัดตำแหน่ง',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'ลากรูปภาพที่ต้องการไว้ที่นี่',\n dropImage: 'วางรูปภาพหรือข้อความ',\n selectFromFiles: 'เลือกไฟล์รูปภาพ',\n maximumFileSize: 'ขนาดไฟล์ใหญ่สุด',\n maximumFileSizeError: 'ไฟล์เกินขนาดที่กำหนด',\n url: 'ที่อยู่ URL ของรูปภาพ',\n remove: 'ลบรูปภาพ',\n original: 'Original',\n },\n video: {\n video: 'วีดีโอ',\n videoLink: 'ลิงก์ของวีดีโอ',\n insert: 'แทรกวีดีโอ',\n url: 'ที่อยู่ URL ของวีดีโอ',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)',\n },\n link: {\n link: 'ตัวเชื่อมโยง',\n insert: 'แทรกตัวเชื่อมโยง',\n unlink: 'ยกเลิกตัวเชื่อมโยง',\n edit: 'แก้ไข',\n textToDisplay: 'ข้อความที่ให้แสดง',\n url: 'ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?',\n openInNewWindow: 'เปิดในหน้าต่างใหม่',\n },\n table: {\n table: 'ตาราง',\n addRowAbove: 'เพิ่มแถวด้านบน',\n addRowBelow: 'เพิ่มแถวด้านล่าง',\n addColLeft: 'เพิ่มคอลัมน์ด้านซ้าย',\n addColRight: 'เพิ่มคอลัมน์ด้านขวา',\n delRow: 'ลบแถว',\n delCol: 'ลบคอลัมน์',\n delTable: 'ลบตาราง',\n },\n hr: {\n insert: 'แทรกเส้นคั่น',\n },\n style: {\n style: 'รูปแบบ',\n p: 'ปกติ',\n blockquote: 'ข้อความ',\n pre: 'โค้ด',\n h1: 'หัวข้อ 1',\n h2: 'หัวข้อ 2',\n h3: 'หัวข้อ 3',\n h4: 'หัวข้อ 4',\n h5: 'หัวข้อ 5',\n h6: 'หัวข้อ 6',\n },\n lists: {\n unordered: 'รายการแบบไม่มีลำดับ',\n ordered: 'รายการแบบมีลำดับ',\n },\n options: {\n help: 'ช่วยเหลือ',\n fullscreen: 'ขยายเต็มหน้าจอ',\n codeview: 'ซอร์สโค้ด',\n },\n paragraph: {\n paragraph: 'ย่อหน้า',\n outdent: 'เยื้องซ้าย',\n indent: 'เยื้องขวา',\n left: 'จัดหน้าชิดซ้าย',\n center: 'จัดหน้ากึ่งกลาง',\n right: 'จัดหน้าชิดขวา',\n justify: 'จัดบรรทัดเสมอกัน',\n },\n color: {\n recent: 'สีที่ใช้ล่าสุด',\n more: 'สีอื่นๆ',\n background: 'สีพื้นหลัง',\n foreground: 'สีพื้นหน้า',\n transparent: 'โปร่งแสง',\n setTransparent: 'ตั้งค่าความโปร่งแสง',\n reset: 'คืนค่า',\n resetToDefault: 'คืนค่ามาตรฐาน',\n },\n shortcut: {\n shortcuts: 'แป้นลัด',\n close: 'ปิด',\n textFormatting: 'การจัดรูปแบบข้อความ',\n action: 'การกระทำ',\n paragraphFormatting: 'การจัดรูปแบบย่อหน้า',\n documentStyle: 'รูปแบบของเอกสาร',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'ทำตัวหนา',\n 'italic': 'ทำตัวเอียง',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H1',\n 'formatH2': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H2',\n 'formatH3': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H3',\n 'formatH4': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H4',\n 'formatH5': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H5',\n 'formatH6': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'เปิดหน้าแก้ไข Link',\n },\n history: {\n undo: 'ยกเลิกการกระทำ',\n redo: 'ทำซ้ำการกระทำ',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.js b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.js new file mode 100644 index 0000000..360efbb --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.js @@ -0,0 +1,186 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'tr-TR': { + font: { + bold: 'Kalın', + italic: 'İtalik', + underline: 'Altı çizili', + clear: 'Temizle', + height: 'Satır yüksekliği', + name: 'Yazı Tipi', + strikethrough: 'Üstü çizili', + subscript: 'Alt Simge', + superscript: 'Üst Simge', + size: 'Yazı tipi boyutu' + }, + image: { + image: 'Resim', + insert: 'Resim ekle', + resizeFull: 'Orjinal boyut', + resizeHalf: '1/2 boyut', + resizeQuarter: '1/4 boyut', + floatLeft: 'Sola hizala', + floatRight: 'Sağa hizala', + floatNone: 'Hizalamayı kaldır', + shapeRounded: 'Şekil: Yuvarlatılmış Köşe', + shapeCircle: 'Şekil: Daire', + shapeThumbnail: 'Şekil: K.Resim', + shapeNone: 'Şekil: Yok', + dragImageHere: 'Buraya sürükleyin', + dropImage: 'Resim veya metni bırakın', + selectFromFiles: 'Dosya seçin', + maximumFileSize: 'Maksimum dosya boyutu', + maximumFileSizeError: 'Maksimum dosya boyutu aşıldı.', + url: 'Resim bağlantısı', + remove: 'Resimi Kaldır', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video bağlantısı', + insert: 'Video ekle', + url: 'Video bağlantısı?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)' + }, + link: { + link: 'Bağlantı', + insert: 'Bağlantı ekle', + unlink: 'Bağlantıyı kaldır', + edit: 'Bağlantıyı düzenle', + textToDisplay: 'Görüntülemek için', + url: 'Bağlantı adresi?', + openInNewWindow: 'Yeni pencerede aç', + useProtocol: "Varsayılan protokolü kullan" + }, + table: { + table: 'Tablo', + addRowAbove: 'Yukarı satır ekle', + addRowBelow: 'Aşağı satır ekle', + addColLeft: 'Sola sütun ekle', + addColRight: 'Sağa sütun ekle', + delRow: 'Satırı sil', + delCol: 'Sütunu sil', + delTable: 'Tabloyu sil' + }, + hr: { + insert: 'Yatay çizgi ekle' + }, + style: { + style: 'Biçim', + p: 'p', + blockquote: 'Alıntı', + pre: 'Önbiçimli', + h1: 'Başlık 1', + h2: 'Başlık 2', + h3: 'Başlık 3', + h4: 'Başlık 4', + h5: 'Başlık 5', + h6: 'Başlık 6' + }, + lists: { + unordered: 'Madde işaretli liste', + ordered: 'Numaralı liste' + }, + options: { + help: 'Yardım', + fullscreen: 'Tam ekran', + codeview: 'HTML Kodu' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Girintiyi artır', + indent: 'Girintiyi azalt', + left: 'Sola hizala', + center: 'Ortaya hizala', + right: 'Sağa hizala', + justify: 'Yasla' + }, + color: { + recent: 'Son renk', + more: 'Daha fazla renk', + background: 'Arka plan rengi', + foreground: 'Yazı rengi', + transparent: 'Seffaflık', + setTransparent: 'Şeffaflığı ayarla', + reset: 'Sıfırla', + resetToDefault: 'Varsayılanlara sıfırla', + cpSelect: 'Seç' + }, + shortcut: { + shortcuts: 'Kısayollar', + close: 'Kapat', + textFormatting: 'Yazı biçimlendirme', + action: 'Eylem', + paragraphFormatting: 'Paragraf biçimlendirme', + documentStyle: 'Biçim', + extraKeys: 'İlave anahtarlar' + }, + help: { + 'insertParagraph': 'Paragraf ekler', + 'undo': 'Son komudu geri alır', + 'redo': 'Son komudu yineler', + 'tab': 'Girintiyi artırır', + 'untab': 'Girintiyi azaltır', + 'bold': 'Kalın yazma stilini ayarlar', + 'italic': 'İtalik yazma stilini ayarlar', + 'underline': 'Altı çizgili yazma stilini ayarlar', + 'strikethrough': 'Üstü çizgili yazma stilini ayarlar', + 'removeFormat': 'Biçimlendirmeyi temizler', + 'justifyLeft': 'Yazıyı sola hizalar', + 'justifyCenter': 'Yazıyı ortalar', + 'justifyRight': 'Yazıyı sağa hizalar', + 'justifyFull': 'Yazıyı her iki tarafa yazlar', + 'insertUnorderedList': 'Madde işaretli liste ekler', + 'insertOrderedList': 'Numaralı liste ekler', + 'outdent': 'Aktif paragrafın girintisini azaltır', + 'indent': 'Aktif paragrafın girintisini artırır', + 'formatPara': 'Aktif bloğun biçimini paragraf (p) olarak değiştirir', + 'formatH1': 'Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir', + 'formatH2': 'Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir', + 'formatH3': 'Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir', + 'formatH4': 'Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir', + 'formatH5': 'Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir', + 'formatH6': 'Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir', + 'insertHorizontalRule': 'Yatay çizgi ekler', + 'linkDialog.show': 'Bağlantı ayar kutusunu gösterir' + }, + history: { + undo: 'Geri al', + redo: 'Yinele' + }, + specialChar: { + specialChar: 'ÖZEL KARAKTERLER', + select: 'Özel Karakterleri seçin' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-tr-TR.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.js.map new file mode 100644 index 0000000..3ecff62 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-tr-TR.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-tr-TR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'tr-TR': {\n font: {\n bold: 'Kalın',\n italic: 'İtalik',\n underline: 'Altı çizili',\n clear: 'Temizle',\n height: 'Satır yüksekliği',\n name: 'Yazı Tipi',\n strikethrough: 'Üstü çizili',\n subscript: 'Alt Simge',\n superscript: 'Üst Simge',\n size: 'Yazı tipi boyutu',\n },\n image: {\n image: 'Resim',\n insert: 'Resim ekle',\n resizeFull: 'Orjinal boyut',\n resizeHalf: '1/2 boyut',\n resizeQuarter: '1/4 boyut',\n floatLeft: 'Sola hizala',\n floatRight: 'Sağa hizala',\n floatNone: 'Hizalamayı kaldır',\n shapeRounded: 'Şekil: Yuvarlatılmış Köşe',\n shapeCircle: 'Şekil: Daire',\n shapeThumbnail: 'Şekil: K.Resim',\n shapeNone: 'Şekil: Yok',\n dragImageHere: 'Buraya sürükleyin',\n dropImage: 'Resim veya metni bırakın',\n selectFromFiles: 'Dosya seçin',\n maximumFileSize: 'Maksimum dosya boyutu',\n maximumFileSizeError: 'Maksimum dosya boyutu aşıldı.',\n url: 'Resim bağlantısı',\n remove: 'Resimi Kaldır',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video bağlantısı',\n insert: 'Video ekle',\n url: 'Video bağlantısı?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)',\n },\n link: {\n link: 'Bağlantı',\n insert: 'Bağlantı ekle',\n unlink: 'Bağlantıyı kaldır',\n edit: 'Bağlantıyı düzenle',\n textToDisplay: 'Görüntülemek için',\n url: 'Bağlantı adresi?',\n openInNewWindow: 'Yeni pencerede aç',\n useProtocol: \"Varsayılan protokolü kullan\",\n },\n table: {\n table: 'Tablo',\n addRowAbove: 'Yukarı satır ekle',\n addRowBelow: 'Aşağı satır ekle',\n addColLeft: 'Sola sütun ekle',\n addColRight: 'Sağa sütun ekle',\n delRow: 'Satırı sil',\n delCol: 'Sütunu sil',\n delTable: 'Tabloyu sil',\n },\n hr: {\n insert: 'Yatay çizgi ekle',\n },\n style: {\n style: 'Biçim',\n p: 'p',\n blockquote: 'Alıntı',\n pre: 'Önbiçimli',\n h1: 'Başlık 1',\n h2: 'Başlık 2',\n h3: 'Başlık 3',\n h4: 'Başlık 4',\n h5: 'Başlık 5',\n h6: 'Başlık 6',\n },\n lists: {\n unordered: 'Madde işaretli liste',\n ordered: 'Numaralı liste',\n },\n options: {\n help: 'Yardım',\n fullscreen: 'Tam ekran',\n codeview: 'HTML Kodu',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Girintiyi artır',\n indent: 'Girintiyi azalt',\n left: 'Sola hizala',\n center: 'Ortaya hizala',\n right: 'Sağa hizala',\n justify: 'Yasla',\n },\n color: {\n recent: 'Son renk',\n more: 'Daha fazla renk',\n background: 'Arka plan rengi',\n foreground: 'Yazı rengi',\n transparent: 'Seffaflık',\n setTransparent: 'Şeffaflığı ayarla',\n reset: 'Sıfırla',\n resetToDefault: 'Varsayılanlara sıfırla',\n cpSelect: 'Seç',\n },\n shortcut: {\n shortcuts: 'Kısayollar',\n close: 'Kapat',\n textFormatting: 'Yazı biçimlendirme',\n action: 'Eylem',\n paragraphFormatting: 'Paragraf biçimlendirme',\n documentStyle: 'Biçim',\n extraKeys: 'İlave anahtarlar',\n },\n help: {\n 'insertParagraph': 'Paragraf ekler',\n 'undo': 'Son komudu geri alır',\n 'redo': 'Son komudu yineler',\n 'tab': 'Girintiyi artırır',\n 'untab': 'Girintiyi azaltır',\n 'bold': 'Kalın yazma stilini ayarlar',\n 'italic': 'İtalik yazma stilini ayarlar',\n 'underline': 'Altı çizgili yazma stilini ayarlar',\n 'strikethrough': 'Üstü çizgili yazma stilini ayarlar',\n 'removeFormat': 'Biçimlendirmeyi temizler',\n 'justifyLeft': 'Yazıyı sola hizalar',\n 'justifyCenter': 'Yazıyı ortalar',\n 'justifyRight': 'Yazıyı sağa hizalar',\n 'justifyFull': 'Yazıyı her iki tarafa yazlar',\n 'insertUnorderedList': 'Madde işaretli liste ekler',\n 'insertOrderedList': 'Numaralı liste ekler',\n 'outdent': 'Aktif paragrafın girintisini azaltır',\n 'indent': 'Aktif paragrafın girintisini artırır',\n 'formatPara': 'Aktif bloğun biçimini paragraf (p) olarak değiştirir',\n 'formatH1': 'Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir',\n 'formatH2': 'Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir',\n 'formatH3': 'Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir',\n 'formatH4': 'Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir',\n 'formatH5': 'Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir',\n 'formatH6': 'Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir',\n 'insertHorizontalRule': 'Yatay çizgi ekler',\n 'linkDialog.show': 'Bağlantı ayar kutusunu gösterir',\n },\n history: {\n undo: 'Geri al',\n redo: 'Yinele',\n },\n specialChar: {\n specialChar: 'ÖZEL KARAKTERLER',\n select: 'Özel Karakterleri seçin',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.min.js new file mode 100644 index 0000000..4cb7f51 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(a,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var e=i();for(var r in e)("object"==typeof exports?exports:a)[r]=e[r]}}(self,(function(){return(a=jQuery).extend(a.summernote.lang,{"tr-TR":{font:{bold:"Kalın",italic:"İtalik",underline:"Altı çizili",clear:"Temizle",height:"Satır yüksekliği",name:"Yazı Tipi",strikethrough:"Üstü çizili",subscript:"Alt Simge",superscript:"Üst Simge",size:"Yazı tipi boyutu"},image:{image:"Resim",insert:"Resim ekle",resizeFull:"Orjinal boyut",resizeHalf:"1/2 boyut",resizeQuarter:"1/4 boyut",floatLeft:"Sola hizala",floatRight:"Sağa hizala",floatNone:"Hizalamayı kaldır",shapeRounded:"Şekil: Yuvarlatılmış Köşe",shapeCircle:"Şekil: Daire",shapeThumbnail:"Şekil: K.Resim",shapeNone:"Şekil: Yok",dragImageHere:"Buraya sürükleyin",dropImage:"Resim veya metni bırakın",selectFromFiles:"Dosya seçin",maximumFileSize:"Maksimum dosya boyutu",maximumFileSizeError:"Maksimum dosya boyutu aşıldı.",url:"Resim bağlantısı",remove:"Resimi Kaldır",original:"Original"},video:{video:"Video",videoLink:"Video bağlantısı",insert:"Video ekle",url:"Video bağlantısı?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)"},link:{link:"Bağlantı",insert:"Bağlantı ekle",unlink:"Bağlantıyı kaldır",edit:"Bağlantıyı düzenle",textToDisplay:"Görüntülemek için",url:"Bağlantı adresi?",openInNewWindow:"Yeni pencerede aç",useProtocol:"Varsayılan protokolü kullan"},table:{table:"Tablo",addRowAbove:"Yukarı satır ekle",addRowBelow:"Aşağı satır ekle",addColLeft:"Sola sütun ekle",addColRight:"Sağa sütun ekle",delRow:"Satırı sil",delCol:"Sütunu sil",delTable:"Tabloyu sil"},hr:{insert:"Yatay çizgi ekle"},style:{style:"Biçim",p:"p",blockquote:"Alıntı",pre:"Önbiçimli",h1:"Başlık 1",h2:"Başlık 2",h3:"Başlık 3",h4:"Başlık 4",h5:"Başlık 5",h6:"Başlık 6"},lists:{unordered:"Madde işaretli liste",ordered:"Numaralı liste"},options:{help:"Yardım",fullscreen:"Tam ekran",codeview:"HTML Kodu"},paragraph:{paragraph:"Paragraf",outdent:"Girintiyi artır",indent:"Girintiyi azalt",left:"Sola hizala",center:"Ortaya hizala",right:"Sağa hizala",justify:"Yasla"},color:{recent:"Son renk",more:"Daha fazla renk",background:"Arka plan rengi",foreground:"Yazı rengi",transparent:"Seffaflık",setTransparent:"Şeffaflığı ayarla",reset:"Sıfırla",resetToDefault:"Varsayılanlara sıfırla",cpSelect:"Seç"},shortcut:{shortcuts:"Kısayollar",close:"Kapat",textFormatting:"Yazı biçimlendirme",action:"Eylem",paragraphFormatting:"Paragraf biçimlendirme",documentStyle:"Biçim",extraKeys:"İlave anahtarlar"},help:{insertParagraph:"Paragraf ekler",undo:"Son komudu geri alır",redo:"Son komudu yineler",tab:"Girintiyi artırır",untab:"Girintiyi azaltır",bold:"Kalın yazma stilini ayarlar",italic:"İtalik yazma stilini ayarlar",underline:"Altı çizgili yazma stilini ayarlar",strikethrough:"Üstü çizgili yazma stilini ayarlar",removeFormat:"Biçimlendirmeyi temizler",justifyLeft:"Yazıyı sola hizalar",justifyCenter:"Yazıyı ortalar",justifyRight:"Yazıyı sağa hizalar",justifyFull:"Yazıyı her iki tarafa yazlar",insertUnorderedList:"Madde işaretli liste ekler",insertOrderedList:"Numaralı liste ekler",outdent:"Aktif paragrafın girintisini azaltır",indent:"Aktif paragrafın girintisini artırır",formatPara:"Aktif bloğun biçimini paragraf (p) olarak değiştirir",formatH1:"Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir",formatH2:"Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir",formatH3:"Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir",formatH4:"Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir",formatH5:"Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir",formatH6:"Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir",insertHorizontalRule:"Yatay çizgi ekler","linkDialog.show":"Bağlantı ayar kutusunu gösterir"},history:{undo:"Geri al",redo:"Yinele"},specialChar:{specialChar:"ÖZEL KARAKTERLER",select:"Özel Karakterleri seçin"}}}),{};var a})); +//# sourceMappingURL=summernote-tr-TR.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.min.js.map new file mode 100644 index 0000000..e86de78 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-tr-TR.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-tr-TR.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA4JPC,QA3JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,SACRC,UAAW,cACXC,MAAO,UACPC,OAAQ,mBACRC,KAAM,YACNC,cAAe,cACfC,UAAW,YACXC,YAAa,YACbC,KAAM,oBAERC,MAAO,CACLA,MAAO,QACPC,OAAQ,aACRC,WAAY,gBACZC,WAAY,YACZC,cAAe,YACfC,UAAW,cACXC,WAAY,cACZC,UAAW,oBACXC,aAAc,4BACdC,YAAa,eACbC,eAAgB,iBAChBC,UAAW,aACXC,cAAe,oBACfC,UAAW,2BACXC,gBAAiB,cACjBC,gBAAiB,wBACjBC,qBAAsB,gCACtBC,IAAK,mBACLC,OAAQ,gBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,mBACXpB,OAAQ,aACRgB,IAAK,oBACLK,UAAW,6DAEbC,KAAM,CACJA,KAAM,WACNtB,OAAQ,gBACRuB,OAAQ,oBACRC,KAAM,qBACNC,cAAe,oBACfT,IAAK,mBACLU,gBAAiB,oBACjBC,YAAa,+BAEfC,MAAO,CACLA,MAAO,QACPC,YAAa,oBACbC,YAAa,mBACbC,WAAY,kBACZC,YAAa,kBACbC,OAAQ,aACRC,OAAQ,aACRC,SAAU,eAEZC,GAAI,CACFpC,OAAQ,oBAEVqC,MAAO,CACLA,MAAO,QACPC,EAAG,IACHC,WAAY,SACZC,IAAK,YACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,uBACXC,QAAS,kBAEXC,QAAS,CACPC,KAAM,SACNC,WAAY,YACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,kBACTC,OAAQ,kBACRC,KAAM,cACNC,OAAQ,gBACRC,MAAO,cACPC,QAAS,SAEXC,MAAO,CACLC,OAAQ,WACRC,KAAM,kBACNC,WAAY,kBACZC,WAAY,aACZC,YAAa,YACbC,eAAgB,oBAChBC,MAAO,UACPC,eAAgB,yBAChBC,SAAU,OAEZC,SAAU,CACRC,UAAW,aACXC,MAAO,QACPC,eAAgB,qBAChBC,OAAQ,QACRC,oBAAqB,yBACrBC,cAAe,QACfC,UAAW,oBAEb3B,KAAM,CACJ,gBAAmB,iBACnB,KAAQ,uBACR,KAAQ,qBACR,IAAO,oBACP,MAAS,oBACT,KAAQ,8BACR,OAAU,+BACV,UAAa,qCACb,cAAiB,qCACjB,aAAgB,2BAChB,YAAe,sBACf,cAAiB,iBACjB,aAAgB,sBAChB,YAAe,+BACf,oBAAuB,6BACvB,kBAAqB,uBACrB,QAAW,uCACX,OAAU,uCACV,WAAc,uDACd,SAAY,wDACZ,SAAY,wDACZ,SAAY,wDACZ,SAAY,wDACZ,SAAY,wDACZ,SAAY,wDACZ,qBAAwB,oBACxB,kBAAmB,mCAErB4B,QAAS,CACPC,KAAM,UACNC,KAAM,UAERC,YAAa,CACXA,YAAa,mBACbC,OAAQ,8B,GD9IhB,ICVUpG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-tr-TR.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'tr-TR': {\n font: {\n bold: 'Kalın',\n italic: 'İtalik',\n underline: 'Altı çizili',\n clear: 'Temizle',\n height: 'Satır yüksekliği',\n name: 'Yazı Tipi',\n strikethrough: 'Üstü çizili',\n subscript: 'Alt Simge',\n superscript: 'Üst Simge',\n size: 'Yazı tipi boyutu',\n },\n image: {\n image: 'Resim',\n insert: 'Resim ekle',\n resizeFull: 'Orjinal boyut',\n resizeHalf: '1/2 boyut',\n resizeQuarter: '1/4 boyut',\n floatLeft: 'Sola hizala',\n floatRight: 'Sağa hizala',\n floatNone: 'Hizalamayı kaldır',\n shapeRounded: 'Şekil: Yuvarlatılmış Köşe',\n shapeCircle: 'Şekil: Daire',\n shapeThumbnail: 'Şekil: K.Resim',\n shapeNone: 'Şekil: Yok',\n dragImageHere: 'Buraya sürükleyin',\n dropImage: 'Resim veya metni bırakın',\n selectFromFiles: 'Dosya seçin',\n maximumFileSize: 'Maksimum dosya boyutu',\n maximumFileSizeError: 'Maksimum dosya boyutu aşıldı.',\n url: 'Resim bağlantısı',\n remove: 'Resimi Kaldır',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video bağlantısı',\n insert: 'Video ekle',\n url: 'Video bağlantısı?',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)',\n },\n link: {\n link: 'Bağlantı',\n insert: 'Bağlantı ekle',\n unlink: 'Bağlantıyı kaldır',\n edit: 'Bağlantıyı düzenle',\n textToDisplay: 'Görüntülemek için',\n url: 'Bağlantı adresi?',\n openInNewWindow: 'Yeni pencerede aç',\n useProtocol: \"Varsayılan protokolü kullan\",\n },\n table: {\n table: 'Tablo',\n addRowAbove: 'Yukarı satır ekle',\n addRowBelow: 'Aşağı satır ekle',\n addColLeft: 'Sola sütun ekle',\n addColRight: 'Sağa sütun ekle',\n delRow: 'Satırı sil',\n delCol: 'Sütunu sil',\n delTable: 'Tabloyu sil',\n },\n hr: {\n insert: 'Yatay çizgi ekle',\n },\n style: {\n style: 'Biçim',\n p: 'p',\n blockquote: 'Alıntı',\n pre: 'Önbiçimli',\n h1: 'Başlık 1',\n h2: 'Başlık 2',\n h3: 'Başlık 3',\n h4: 'Başlık 4',\n h5: 'Başlık 5',\n h6: 'Başlık 6',\n },\n lists: {\n unordered: 'Madde işaretli liste',\n ordered: 'Numaralı liste',\n },\n options: {\n help: 'Yardım',\n fullscreen: 'Tam ekran',\n codeview: 'HTML Kodu',\n },\n paragraph: {\n paragraph: 'Paragraf',\n outdent: 'Girintiyi artır',\n indent: 'Girintiyi azalt',\n left: 'Sola hizala',\n center: 'Ortaya hizala',\n right: 'Sağa hizala',\n justify: 'Yasla',\n },\n color: {\n recent: 'Son renk',\n more: 'Daha fazla renk',\n background: 'Arka plan rengi',\n foreground: 'Yazı rengi',\n transparent: 'Seffaflık',\n setTransparent: 'Şeffaflığı ayarla',\n reset: 'Sıfırla',\n resetToDefault: 'Varsayılanlara sıfırla',\n cpSelect: 'Seç',\n },\n shortcut: {\n shortcuts: 'Kısayollar',\n close: 'Kapat',\n textFormatting: 'Yazı biçimlendirme',\n action: 'Eylem',\n paragraphFormatting: 'Paragraf biçimlendirme',\n documentStyle: 'Biçim',\n extraKeys: 'İlave anahtarlar',\n },\n help: {\n 'insertParagraph': 'Paragraf ekler',\n 'undo': 'Son komudu geri alır',\n 'redo': 'Son komudu yineler',\n 'tab': 'Girintiyi artırır',\n 'untab': 'Girintiyi azaltır',\n 'bold': 'Kalın yazma stilini ayarlar',\n 'italic': 'İtalik yazma stilini ayarlar',\n 'underline': 'Altı çizgili yazma stilini ayarlar',\n 'strikethrough': 'Üstü çizgili yazma stilini ayarlar',\n 'removeFormat': 'Biçimlendirmeyi temizler',\n 'justifyLeft': 'Yazıyı sola hizalar',\n 'justifyCenter': 'Yazıyı ortalar',\n 'justifyRight': 'Yazıyı sağa hizalar',\n 'justifyFull': 'Yazıyı her iki tarafa yazlar',\n 'insertUnorderedList': 'Madde işaretli liste ekler',\n 'insertOrderedList': 'Numaralı liste ekler',\n 'outdent': 'Aktif paragrafın girintisini azaltır',\n 'indent': 'Aktif paragrafın girintisini artırır',\n 'formatPara': 'Aktif bloğun biçimini paragraf (p) olarak değiştirir',\n 'formatH1': 'Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir',\n 'formatH2': 'Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir',\n 'formatH3': 'Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir',\n 'formatH4': 'Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir',\n 'formatH5': 'Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir',\n 'formatH6': 'Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir',\n 'insertHorizontalRule': 'Yatay çizgi ekler',\n 'linkDialog.show': 'Bağlantı ayar kutusunu gösterir',\n },\n history: {\n undo: 'Geri al',\n redo: 'Yinele',\n },\n specialChar: {\n specialChar: 'ÖZEL KARAKTERLER',\n select: 'Özel Karakterleri seçin',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.js b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.js new file mode 100644 index 0000000..63a33ae --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.js @@ -0,0 +1,185 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'uk-UA': { + font: { + bold: 'Напівжирний', + italic: 'Курсив', + underline: 'Підкреслений', + clear: 'Прибрати стилі шрифту', + height: 'Висота лінії', + name: 'Шрифт', + strikethrough: 'Закреслений', + subscript: 'Нижній індекс', + superscript: 'Верхній індекс', + size: 'Розмір шрифту' + }, + image: { + image: 'Картинка', + insert: 'Вставити картинку', + resizeFull: 'Відновити розмір', + resizeHalf: 'Зменшити до 50%', + resizeQuarter: 'Зменшити до 25%', + floatLeft: 'Розташувати ліворуч', + floatRight: 'Розташувати праворуч', + floatNone: 'Початкове розташування', + shapeRounded: 'Форма: Заокруглена', + shapeCircle: 'Форма: Коло', + shapeThumbnail: 'Форма: Мініатюра', + shapeNone: 'Форма: Немає', + dragImageHere: 'Перетягніть сюди картинку', + dropImage: 'Перетягніть картинку', + selectFromFiles: 'Вибрати з файлів', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL картинки', + remove: 'Видалити картинку', + original: 'Original' + }, + video: { + video: 'Відео', + videoLink: 'Посилання на відео', + insert: 'Вставити відео', + url: 'URL відео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)' + }, + link: { + link: 'Посилання', + insert: 'Вставити посилання', + unlink: 'Прибрати посилання', + edit: 'Редагувати', + textToDisplay: 'Текст, що відображається', + url: 'URL для переходу', + openInNewWindow: 'Відкривати у новому вікні', + useProtocol: 'Використовувати протокол за замовчуванням' + }, + table: { + table: 'Таблиця', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Вставити горизонтальну лінію' + }, + style: { + style: 'Стиль', + p: 'Нормальний', + blockquote: 'Цитата', + pre: 'Код', + h1: 'Заголовок 1', + h2: 'Заголовок 2', + h3: 'Заголовок 3', + h4: 'Заголовок 4', + h5: 'Заголовок 5', + h6: 'Заголовок 6' + }, + lists: { + unordered: 'Маркований список', + ordered: 'Нумерований список' + }, + options: { + help: 'Допомога', + fullscreen: 'На весь екран', + codeview: 'Початковий код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Зменшити відступ', + indent: 'Збільшити відступ', + left: 'Вирівняти по лівому краю', + center: 'Вирівняти по центру', + right: 'Вирівняти по правому краю', + justify: 'Розтягнути по ширині' + }, + color: { + recent: 'Останній колір', + more: 'Ще кольори', + background: 'Колір фону', + foreground: 'Колір шрифту', + transparent: 'Прозорий', + setTransparent: 'Зробити прозорим', + reset: 'Відновити', + resetToDefault: 'Відновити початкові' + }, + shortcut: { + shortcuts: 'Комбінації клавіш', + close: 'Закрити', + textFormatting: 'Форматування тексту', + action: 'Дія', + paragraphFormatting: 'Форматування параграфу', + documentStyle: 'Стиль документу', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Відмінити', + redo: 'Повторити' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-uk-UA.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.js.map new file mode 100644 index 0000000..c8c56fe --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-uk-UA.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-uk-UA.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'uk-UA': {\n font: {\n bold: 'Напівжирний',\n italic: 'Курсив',\n underline: 'Підкреслений',\n clear: 'Прибрати стилі шрифту',\n height: 'Висота лінії',\n name: 'Шрифт',\n strikethrough: 'Закреслений',\n subscript: 'Нижній індекс',\n superscript: 'Верхній індекс',\n size: 'Розмір шрифту',\n },\n image: {\n image: 'Картинка',\n insert: 'Вставити картинку',\n resizeFull: 'Відновити розмір',\n resizeHalf: 'Зменшити до 50%',\n resizeQuarter: 'Зменшити до 25%',\n floatLeft: 'Розташувати ліворуч',\n floatRight: 'Розташувати праворуч',\n floatNone: 'Початкове розташування',\n shapeRounded: 'Форма: Заокруглена',\n shapeCircle: 'Форма: Коло',\n shapeThumbnail: 'Форма: Мініатюра',\n shapeNone: 'Форма: Немає',\n dragImageHere: 'Перетягніть сюди картинку',\n dropImage: 'Перетягніть картинку',\n selectFromFiles: 'Вибрати з файлів',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL картинки',\n remove: 'Видалити картинку',\n original: 'Original',\n },\n video: {\n video: 'Відео',\n videoLink: 'Посилання на відео',\n insert: 'Вставити відео',\n url: 'URL відео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)',\n },\n link: {\n link: 'Посилання',\n insert: 'Вставити посилання',\n unlink: 'Прибрати посилання',\n edit: 'Редагувати',\n textToDisplay: 'Текст, що відображається',\n url: 'URL для переходу',\n openInNewWindow: 'Відкривати у новому вікні',\n useProtocol: 'Використовувати протокол за замовчуванням',\n },\n table: {\n table: 'Таблиця',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Вставити горизонтальну лінію',\n },\n style: {\n style: 'Стиль',\n p: 'Нормальний',\n blockquote: 'Цитата',\n pre: 'Код',\n h1: 'Заголовок 1',\n h2: 'Заголовок 2',\n h3: 'Заголовок 3',\n h4: 'Заголовок 4',\n h5: 'Заголовок 5',\n h6: 'Заголовок 6',\n },\n lists: {\n unordered: 'Маркований список',\n ordered: 'Нумерований список',\n },\n options: {\n help: 'Допомога',\n fullscreen: 'На весь екран',\n codeview: 'Початковий код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Зменшити відступ',\n indent: 'Збільшити відступ',\n left: 'Вирівняти по лівому краю',\n center: 'Вирівняти по центру',\n right: 'Вирівняти по правому краю',\n justify: 'Розтягнути по ширині',\n },\n color: {\n recent: 'Останній колір',\n more: 'Ще кольори',\n background: 'Колір фону',\n foreground: 'Колір шрифту',\n transparent: 'Прозорий',\n setTransparent: 'Зробити прозорим',\n reset: 'Відновити',\n resetToDefault: 'Відновити початкові',\n },\n shortcut: {\n shortcuts: 'Комбінації клавіш',\n close: 'Закрити',\n textFormatting: 'Форматування тексту',\n action: 'Дія',\n paragraphFormatting: 'Форматування параграфу',\n documentStyle: 'Стиль документу',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Відмінити',\n redo: 'Повторити',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.min.js new file mode 100644 index 0000000..8b4cd12 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"uk-UA":{font:{bold:"Напівжирний",italic:"Курсив",underline:"Підкреслений",clear:"Прибрати стилі шрифту",height:"Висота лінії",name:"Шрифт",strikethrough:"Закреслений",subscript:"Нижній індекс",superscript:"Верхній індекс",size:"Розмір шрифту"},image:{image:"Картинка",insert:"Вставити картинку",resizeFull:"Відновити розмір",resizeHalf:"Зменшити до 50%",resizeQuarter:"Зменшити до 25%",floatLeft:"Розташувати ліворуч",floatRight:"Розташувати праворуч",floatNone:"Початкове розташування",shapeRounded:"Форма: Заокруглена",shapeCircle:"Форма: Коло",shapeThumbnail:"Форма: Мініатюра",shapeNone:"Форма: Немає",dragImageHere:"Перетягніть сюди картинку",dropImage:"Перетягніть картинку",selectFromFiles:"Вибрати з файлів",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL картинки",remove:"Видалити картинку",original:"Original"},video:{video:"Відео",videoLink:"Посилання на відео",insert:"Вставити відео",url:"URL відео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)"},link:{link:"Посилання",insert:"Вставити посилання",unlink:"Прибрати посилання",edit:"Редагувати",textToDisplay:"Текст, що відображається",url:"URL для переходу",openInNewWindow:"Відкривати у новому вікні",useProtocol:"Використовувати протокол за замовчуванням"},table:{table:"Таблиця",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Вставити горизонтальну лінію"},style:{style:"Стиль",p:"Нормальний",blockquote:"Цитата",pre:"Код",h1:"Заголовок 1",h2:"Заголовок 2",h3:"Заголовок 3",h4:"Заголовок 4",h5:"Заголовок 5",h6:"Заголовок 6"},lists:{unordered:"Маркований список",ordered:"Нумерований список"},options:{help:"Допомога",fullscreen:"На весь екран",codeview:"Початковий код"},paragraph:{paragraph:"Параграф",outdent:"Зменшити відступ",indent:"Збільшити відступ",left:"Вирівняти по лівому краю",center:"Вирівняти по центру",right:"Вирівняти по правому краю",justify:"Розтягнути по ширині"},color:{recent:"Останній колір",more:"Ще кольори",background:"Колір фону",foreground:"Колір шрифту",transparent:"Прозорий",setTransparent:"Зробити прозорим",reset:"Відновити",resetToDefault:"Відновити початкові"},shortcut:{shortcuts:"Комбінації клавіш",close:"Закрити",textFormatting:"Форматування тексту",action:"Дія",paragraphFormatting:"Форматування параграфу",documentStyle:"Стиль документу",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Відмінити",redo:"Повторити"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-uk-UA.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.min.js.map new file mode 100644 index 0000000..89c4bbd --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uk-UA.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-uk-UA.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA2JPC,QA1JCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,cACNC,OAAQ,SACRC,UAAW,eACXC,MAAO,wBACPC,OAAQ,eACRC,KAAM,QACNC,cAAe,cACfC,UAAW,gBACXC,YAAa,iBACbC,KAAM,iBAERC,MAAO,CACLA,MAAO,WACPC,OAAQ,oBACRC,WAAY,mBACZC,WAAY,kBACZC,cAAe,kBACfC,UAAW,sBACXC,WAAY,uBACZC,UAAW,yBACXC,aAAc,qBACdC,YAAa,cACbC,eAAgB,mBAChBC,UAAW,eACXC,cAAe,4BACfC,UAAW,uBACXC,gBAAiB,mBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,eACLC,OAAQ,oBACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,qBACXpB,OAAQ,iBACRgB,IAAK,YACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,YACNtB,OAAQ,qBACRuB,OAAQ,qBACRC,KAAM,aACNC,cAAe,2BACfT,IAAK,mBACLU,gBAAiB,4BACjBC,YAAa,6CAEfC,MAAO,CACLA,MAAO,UACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFpC,OAAQ,gCAEVqC,MAAO,CACLA,MAAO,QACPC,EAAG,aACHC,WAAY,SACZC,IAAK,MACLC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eAENC,MAAO,CACLC,UAAW,oBACXC,QAAS,sBAEXC,QAAS,CACPC,KAAM,WACNC,WAAY,gBACZC,SAAU,kBAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,mBACTC,OAAQ,oBACRC,KAAM,2BACNC,OAAQ,sBACRC,MAAO,4BACPC,QAAS,wBAEXC,MAAO,CACLC,OAAQ,iBACRC,KAAM,aACNC,WAAY,aACZC,WAAY,eACZC,YAAa,WACbC,eAAgB,mBAChBC,MAAO,YACPC,eAAgB,uBAElBC,SAAU,CACRC,UAAW,oBACXC,MAAO,UACPC,eAAgB,sBAChBC,OAAQ,MACRC,oBAAqB,yBACrBC,cAAe,kBACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,YACNC,KAAM,aAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD7IhB,ICVUnG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-uk-UA.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'uk-UA': {\n font: {\n bold: 'Напівжирний',\n italic: 'Курсив',\n underline: 'Підкреслений',\n clear: 'Прибрати стилі шрифту',\n height: 'Висота лінії',\n name: 'Шрифт',\n strikethrough: 'Закреслений',\n subscript: 'Нижній індекс',\n superscript: 'Верхній індекс',\n size: 'Розмір шрифту',\n },\n image: {\n image: 'Картинка',\n insert: 'Вставити картинку',\n resizeFull: 'Відновити розмір',\n resizeHalf: 'Зменшити до 50%',\n resizeQuarter: 'Зменшити до 25%',\n floatLeft: 'Розташувати ліворуч',\n floatRight: 'Розташувати праворуч',\n floatNone: 'Початкове розташування',\n shapeRounded: 'Форма: Заокруглена',\n shapeCircle: 'Форма: Коло',\n shapeThumbnail: 'Форма: Мініатюра',\n shapeNone: 'Форма: Немає',\n dragImageHere: 'Перетягніть сюди картинку',\n dropImage: 'Перетягніть картинку',\n selectFromFiles: 'Вибрати з файлів',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL картинки',\n remove: 'Видалити картинку',\n original: 'Original',\n },\n video: {\n video: 'Відео',\n videoLink: 'Посилання на відео',\n insert: 'Вставити відео',\n url: 'URL відео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)',\n },\n link: {\n link: 'Посилання',\n insert: 'Вставити посилання',\n unlink: 'Прибрати посилання',\n edit: 'Редагувати',\n textToDisplay: 'Текст, що відображається',\n url: 'URL для переходу',\n openInNewWindow: 'Відкривати у новому вікні',\n useProtocol: 'Використовувати протокол за замовчуванням',\n },\n table: {\n table: 'Таблиця',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Вставити горизонтальну лінію',\n },\n style: {\n style: 'Стиль',\n p: 'Нормальний',\n blockquote: 'Цитата',\n pre: 'Код',\n h1: 'Заголовок 1',\n h2: 'Заголовок 2',\n h3: 'Заголовок 3',\n h4: 'Заголовок 4',\n h5: 'Заголовок 5',\n h6: 'Заголовок 6',\n },\n lists: {\n unordered: 'Маркований список',\n ordered: 'Нумерований список',\n },\n options: {\n help: 'Допомога',\n fullscreen: 'На весь екран',\n codeview: 'Початковий код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Зменшити відступ',\n indent: 'Збільшити відступ',\n left: 'Вирівняти по лівому краю',\n center: 'Вирівняти по центру',\n right: 'Вирівняти по правому краю',\n justify: 'Розтягнути по ширині',\n },\n color: {\n recent: 'Останній колір',\n more: 'Ще кольори',\n background: 'Колір фону',\n foreground: 'Колір шрифту',\n transparent: 'Прозорий',\n setTransparent: 'Зробити прозорим',\n reset: 'Відновити',\n resetToDefault: 'Відновити початкові',\n },\n shortcut: {\n shortcuts: 'Комбінації клавіш',\n close: 'Закрити',\n textFormatting: 'Форматування тексту',\n action: 'Дія',\n paragraphFormatting: 'Форматування параграфу',\n documentStyle: 'Стиль документу',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Відмінити',\n redo: 'Повторити',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.js b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.js new file mode 100644 index 0000000..4ebcd55 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.js @@ -0,0 +1,141 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'uz-UZ': { + font: { + bold: 'қалин', + italic: 'Курсив', + underline: 'Белгиланган', + clear: 'Ҳарф турларини олиб ташлаш', + height: 'Чизиқ баландлиги', + name: 'Ҳарф', + strikethrough: 'Ўчирилган', + subscript: 'Пастки индекс', + superscript: 'Юқори индекс', + size: 'ҳарф ҳажми' + }, + image: { + image: 'Расм', + insert: 'расмни қўйиш', + resizeFull: 'Ҳажмни тиклаш', + resizeHalf: '50% гача кичрайтириш', + resizeQuarter: '25% гача кичрайтириш', + floatLeft: 'Чапда жойлаштириш', + floatRight: 'Ўнгда жойлаштириш', + floatNone: 'Стандарт бўйича жойлашув', + shapeRounded: 'Шакли: Юмалоқ', + shapeCircle: 'Шакли: Доира', + shapeThumbnail: 'Шакли: Миниатюра', + shapeNone: 'Шакли: Йўқ', + dragImageHere: 'Суратни кўчириб ўтинг', + dropImage: 'Суратни кўчириб ўтинг', + selectFromFiles: 'Файллардан бирини танлаш', + url: 'суратлар URL и', + remove: 'Суратни ўчириш' + }, + video: { + video: 'Видео', + videoLink: 'Видеога ҳавола', + insert: 'Видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Ҳавола', + insert: 'Ҳаволани қўйиш', + unlink: 'Ҳаволани олиб ташлаш', + edit: 'Таҳрир қилиш', + textToDisplay: 'Кўринадиган матн', + url: 'URL ўтиш учун', + openInNewWindow: 'Янги дарчада очиш' + }, + table: { + table: 'Жадвал' + }, + hr: { + insert: 'Горизонтал чизиқни қўйиш' + }, + style: { + style: 'Услуб', + p: 'Яхши', + blockquote: 'Жумла', + pre: 'Код', + h1: 'Сарлавҳа 1', + h2: 'Сарлавҳа 2', + h3: 'Сарлавҳа 3', + h4: 'Сарлавҳа 4', + h5: 'Сарлавҳа 5', + h6: 'Сарлавҳа 6' + }, + lists: { + unordered: 'Белгиланган рўйҳат', + ordered: 'Рақамланган рўйҳат' + }, + options: { + help: 'Ёрдам', + fullscreen: 'Бутун экран бўйича', + codeview: 'Бошланғич код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Орқага қайтишни камайтириш', + indent: 'Орқага қайтишни кўпайтириш', + left: 'Чап қирғоққа тўғрилаш', + center: 'Марказга тўғрилаш', + right: 'Ўнг қирғоққа тўғрилаш', + justify: 'Эни бўйлаб чўзиш' + }, + color: { + recent: 'Охирги ранг', + more: 'Яна ранглар', + background: 'Фон ранги', + foreground: 'Ҳарф ранги', + transparent: 'Шаффоф', + setTransparent: 'Шаффофдай қилиш', + reset: 'Бекор қилиш', + resetToDefault: 'Стандартга оид тиклаш' + }, + shortcut: { + shortcuts: 'Клавишларнинг ҳамохҳанглиги', + close: 'Ёпиқ', + textFormatting: 'Матнни ', + action: 'Ҳаркат', + paragraphFormatting: 'Параграфни форматлаш', + documentStyle: 'Ҳужжатнинг тури', + extraKeys: 'Қўшимча имкониятлар' + }, + history: { + undo: 'Бекор қилиш', + redo: 'Қайтариш' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-uz-UZ.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.js.map new file mode 100644 index 0000000..f98a32a --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-uz-UZ.js","mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;ACVA,CAAC,UAASA,CAAT,EAAY;AACXA,EAAAA,CAAC,CAACC,MAAF,CAASD,CAAC,CAACE,UAAF,CAAaC,IAAtB,EAA4B;AAC1B,aAAS;AACPC,MAAAA,IAAI,EAAE;AACJC,QAAAA,IAAI,EAAE,OADF;AAEJC,QAAAA,MAAM,EAAE,QAFJ;AAGJC,QAAAA,SAAS,EAAE,aAHP;AAIJC,QAAAA,KAAK,EAAE,4BAJH;AAKJC,QAAAA,MAAM,EAAE,kBALJ;AAMJC,QAAAA,IAAI,EAAE,MANF;AAOJC,QAAAA,aAAa,EAAE,WAPX;AAQJC,QAAAA,SAAS,EAAE,eARP;AASJC,QAAAA,WAAW,EAAE,cATT;AAUJC,QAAAA,IAAI,EAAE;AAVF,OADC;AAaPC,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE,MADF;AAELC,QAAAA,MAAM,EAAE,cAFH;AAGLC,QAAAA,UAAU,EAAE,eAHP;AAILC,QAAAA,UAAU,EAAE,sBAJP;AAKLC,QAAAA,aAAa,EAAE,sBALV;AAMLC,QAAAA,SAAS,EAAE,mBANN;AAOLC,QAAAA,UAAU,EAAE,mBAPP;AAQLC,QAAAA,SAAS,EAAE,0BARN;AASLC,QAAAA,YAAY,EAAE,eATT;AAULC,QAAAA,WAAW,EAAE,cAVR;AAWLC,QAAAA,cAAc,EAAE,kBAXX;AAYLC,QAAAA,SAAS,EAAE,YAZN;AAaLC,QAAAA,aAAa,EAAE,uBAbV;AAcLC,QAAAA,SAAS,EAAE,uBAdN;AAeLC,QAAAA,eAAe,EAAE,0BAfZ;AAgBLC,QAAAA,GAAG,EAAE,gBAhBA;AAiBLC,QAAAA,MAAM,EAAE;AAjBH,OAbA;AAgCPC,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE,OADF;AAELC,QAAAA,SAAS,EAAE,gBAFN;AAGLjB,QAAAA,MAAM,EAAE,OAHH;AAILc,QAAAA,GAAG,EAAE,WAJA;AAKLI,QAAAA,SAAS,EAAE;AALN,OAhCA;AAuCPC,MAAAA,IAAI,EAAE;AACJA,QAAAA,IAAI,EAAE,QADF;AAEJnB,QAAAA,MAAM,EAAE,gBAFJ;AAGJoB,QAAAA,MAAM,EAAE,sBAHJ;AAIJC,QAAAA,IAAI,EAAE,cAJF;AAKJC,QAAAA,aAAa,EAAE,kBALX;AAMJR,QAAAA,GAAG,EAAE,eAND;AAOJS,QAAAA,eAAe,EAAE;AAPb,OAvCC;AAgDPC,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE;AADF,OAhDA;AAmDPC,MAAAA,EAAE,EAAE;AACFzB,QAAAA,MAAM,EAAE;AADN,OAnDG;AAsDP0B,MAAAA,KAAK,EAAE;AACLA,QAAAA,KAAK,EAAE,OADF;AAELC,QAAAA,CAAC,EAAE,MAFE;AAGLC,QAAAA,UAAU,EAAE,OAHP;AAILC,QAAAA,GAAG,EAAE,KAJA;AAKLC,QAAAA,EAAE,EAAE,YALC;AAMLC,QAAAA,EAAE,EAAE,aANC;AAOLC,QAAAA,EAAE,EAAE,aAPC;AAQLC,QAAAA,EAAE,EAAE,aARC;AASLC,QAAAA,EAAE,EAAE,aATC;AAULC,QAAAA,EAAE,EAAE;AAVC,OAtDA;AAkEPC,MAAAA,KAAK,EAAE;AACLC,QAAAA,SAAS,EAAE,oBADN;AAELC,QAAAA,OAAO,EAAE;AAFJ,OAlEA;AAsEPC,MAAAA,OAAO,EAAE;AACPC,QAAAA,IAAI,EAAE,OADC;AAEPC,QAAAA,UAAU,EAAE,oBAFL;AAGPC,QAAAA,QAAQ,EAAE;AAHH,OAtEF;AA2EPC,MAAAA,SAAS,EAAE;AACTA,QAAAA,SAAS,EAAE,UADF;AAETC,QAAAA,OAAO,EAAE,4BAFA;AAGTC,QAAAA,MAAM,EAAE,4BAHC;AAITC,QAAAA,IAAI,EAAE,uBAJG;AAKTC,QAAAA,MAAM,EAAE,mBALC;AAMTC,QAAAA,KAAK,EAAE,uBANE;AAOTC,QAAAA,OAAO,EAAE;AAPA,OA3EJ;AAoFPC,MAAAA,KAAK,EAAE;AACLC,QAAAA,MAAM,EAAE,aADH;AAELC,QAAAA,IAAI,EAAE,aAFD;AAGLC,QAAAA,UAAU,EAAE,YAHP;AAILC,QAAAA,UAAU,EAAE,YAJP;AAKLC,QAAAA,WAAW,EAAE,QALR;AAMLC,QAAAA,cAAc,EAAE,iBANX;AAOLC,QAAAA,KAAK,EAAE,aAPF;AAQLC,QAAAA,cAAc,EAAE;AARX,OApFA;AA8FPC,MAAAA,QAAQ,EAAE;AACRC,QAAAA,SAAS,EAAE,6BADH;AAERC,QAAAA,KAAK,EAAE,MAFC;AAGRC,QAAAA,cAAc,EAAE,SAHR;AAIRC,QAAAA,MAAM,EAAE,QAJA;AAKRC,QAAAA,mBAAmB,EAAE,sBALb;AAMRC,QAAAA,aAAa,EAAE,iBANP;AAORC,QAAAA,SAAS,EAAE;AAPH,OA9FH;AAuGPC,MAAAA,OAAO,EAAE;AACPC,QAAAA,IAAI,EAAE,aADC;AAEPC,QAAAA,IAAI,EAAE;AAFC;AAvGF;AADiB,GAA5B;AA8GD,CA/GD,EA+GGC,MA/GH","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-uz-UZ.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'uz-UZ': {\n font: {\n bold: 'қалин',\n italic: 'Курсив',\n underline: 'Белгиланган',\n clear: 'Ҳарф турларини олиб ташлаш',\n height: 'Чизиқ баландлиги',\n name: 'Ҳарф',\n strikethrough: 'Ўчирилган',\n subscript: 'Пастки индекс',\n superscript: 'Юқори индекс',\n size: 'ҳарф ҳажми',\n },\n image: {\n image: 'Расм',\n insert: 'расмни қўйиш',\n resizeFull: 'Ҳажмни тиклаш',\n resizeHalf: '50% гача кичрайтириш',\n resizeQuarter: '25% гача кичрайтириш',\n floatLeft: 'Чапда жойлаштириш',\n floatRight: 'Ўнгда жойлаштириш',\n floatNone: 'Стандарт бўйича жойлашув',\n shapeRounded: 'Шакли: Юмалоқ',\n shapeCircle: 'Шакли: Доира',\n shapeThumbnail: 'Шакли: Миниатюра',\n shapeNone: 'Шакли: Йўқ',\n dragImageHere: 'Суратни кўчириб ўтинг',\n dropImage: 'Суратни кўчириб ўтинг',\n selectFromFiles: 'Файллардан бирини танлаш',\n url: 'суратлар URL и',\n remove: 'Суратни ўчириш',\n },\n video: {\n video: 'Видео',\n videoLink: 'Видеога ҳавола',\n insert: 'Видео',\n url: 'URL видео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)',\n },\n link: {\n link: 'Ҳавола',\n insert: 'Ҳаволани қўйиш',\n unlink: 'Ҳаволани олиб ташлаш',\n edit: 'Таҳрир қилиш',\n textToDisplay: 'Кўринадиган матн',\n url: 'URL ўтиш учун',\n openInNewWindow: 'Янги дарчада очиш',\n },\n table: {\n table: 'Жадвал',\n },\n hr: {\n insert: 'Горизонтал чизиқни қўйиш',\n },\n style: {\n style: 'Услуб',\n p: 'Яхши',\n blockquote: 'Жумла',\n pre: 'Код',\n h1: 'Сарлавҳа 1',\n h2: 'Сарлавҳа 2',\n h3: 'Сарлавҳа 3',\n h4: 'Сарлавҳа 4',\n h5: 'Сарлавҳа 5',\n h6: 'Сарлавҳа 6',\n },\n lists: {\n unordered: 'Белгиланган рўйҳат',\n ordered: 'Рақамланган рўйҳат',\n },\n options: {\n help: 'Ёрдам',\n fullscreen: 'Бутун экран бўйича',\n codeview: 'Бошланғич код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Орқага қайтишни камайтириш',\n indent: 'Орқага қайтишни кўпайтириш',\n left: 'Чап қирғоққа тўғрилаш',\n center: 'Марказга тўғрилаш',\n right: 'Ўнг қирғоққа тўғрилаш',\n justify: 'Эни бўйлаб чўзиш',\n },\n color: {\n recent: 'Охирги ранг',\n more: 'Яна ранглар',\n background: 'Фон ранги',\n foreground: 'Ҳарф ранги',\n transparent: 'Шаффоф',\n setTransparent: 'Шаффофдай қилиш',\n reset: 'Бекор қилиш',\n resetToDefault: 'Стандартга оид тиклаш',\n },\n shortcut: {\n shortcuts: 'Клавишларнинг ҳамохҳанглиги',\n close: 'Ёпиқ',\n textFormatting: 'Матнни ',\n action: 'Ҳаркат',\n paragraphFormatting: 'Параграфни форматлаш',\n documentStyle: 'Ҳужжатнинг тури',\n extraKeys: 'Қўшимча имкониятлар',\n },\n history: {\n undo: 'Бекор қилиш',\n redo: 'Қайтариш',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","url","remove","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.min.js new file mode 100644 index 0000000..c07fd9b --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"uz-UZ":{font:{bold:"қалин",italic:"Курсив",underline:"Белгиланган",clear:"Ҳарф турларини олиб ташлаш",height:"Чизиқ баландлиги",name:"Ҳарф",strikethrough:"Ўчирилган",subscript:"Пастки индекс",superscript:"Юқори индекс",size:"ҳарф ҳажми"},image:{image:"Расм",insert:"расмни қўйиш",resizeFull:"Ҳажмни тиклаш",resizeHalf:"50% гача кичрайтириш",resizeQuarter:"25% гача кичрайтириш",floatLeft:"Чапда жойлаштириш",floatRight:"Ўнгда жойлаштириш",floatNone:"Стандарт бўйича жойлашув",shapeRounded:"Шакли: Юмалоқ",shapeCircle:"Шакли: Доира",shapeThumbnail:"Шакли: Миниатюра",shapeNone:"Шакли: Йўқ",dragImageHere:"Суратни кўчириб ўтинг",dropImage:"Суратни кўчириб ўтинг",selectFromFiles:"Файллардан бирини танлаш",url:"суратлар URL и",remove:"Суратни ўчириш"},video:{video:"Видео",videoLink:"Видеога ҳавола",insert:"Видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Ҳавола",insert:"Ҳаволани қўйиш",unlink:"Ҳаволани олиб ташлаш",edit:"Таҳрир қилиш",textToDisplay:"Кўринадиган матн",url:"URL ўтиш учун",openInNewWindow:"Янги дарчада очиш"},table:{table:"Жадвал"},hr:{insert:"Горизонтал чизиқни қўйиш"},style:{style:"Услуб",p:"Яхши",blockquote:"Жумла",pre:"Код",h1:"Сарлавҳа 1",h2:"Сарлавҳа 2",h3:"Сарлавҳа 3",h4:"Сарлавҳа 4",h5:"Сарлавҳа 5",h6:"Сарлавҳа 6"},lists:{unordered:"Белгиланган рўйҳат",ordered:"Рақамланган рўйҳат"},options:{help:"Ёрдам",fullscreen:"Бутун экран бўйича",codeview:"Бошланғич код"},paragraph:{paragraph:"Параграф",outdent:"Орқага қайтишни камайтириш",indent:"Орқага қайтишни кўпайтириш",left:"Чап қирғоққа тўғрилаш",center:"Марказга тўғрилаш",right:"Ўнг қирғоққа тўғрилаш",justify:"Эни бўйлаб чўзиш"},color:{recent:"Охирги ранг",more:"Яна ранглар",background:"Фон ранги",foreground:"Ҳарф ранги",transparent:"Шаффоф",setTransparent:"Шаффофдай қилиш",reset:"Бекор қилиш",resetToDefault:"Стандартга оид тиклаш"},shortcut:{shortcuts:"Клавишларнинг ҳамохҳанглиги",close:"Ёпиқ",textFormatting:"Матнни ",action:"Ҳаркат",paragraphFormatting:"Параграфни форматлаш",documentStyle:"Ҳужжатнинг тури",extraKeys:"Қўшимча имкониятлар"},history:{undo:"Бекор қилиш",redo:"Қайтариш"}}}),{};var e})); +//# sourceMappingURL=summernote-uz-UZ.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.min.js.map new file mode 100644 index 0000000..c5a1c04 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-uz-UZ.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-uz-UZ.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA+GPC,QA9GCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,QACNC,OAAQ,SACRC,UAAW,cACXC,MAAO,6BACPC,OAAQ,mBACRC,KAAM,OACNC,cAAe,YACfC,UAAW,gBACXC,YAAa,eACbC,KAAM,cAERC,MAAO,CACLA,MAAO,OACPC,OAAQ,eACRC,WAAY,gBACZC,WAAY,uBACZC,cAAe,uBACfC,UAAW,oBACXC,WAAY,oBACZC,UAAW,2BACXC,aAAc,gBACdC,YAAa,eACbC,eAAgB,mBAChBC,UAAW,aACXC,cAAe,wBACfC,UAAW,wBACXC,gBAAiB,2BACjBC,IAAK,iBACLC,OAAQ,kBAEVC,MAAO,CACLA,MAAO,QACPC,UAAW,iBACXjB,OAAQ,QACRc,IAAK,YACLI,UAAW,4DAEbC,KAAM,CACJA,KAAM,SACNnB,OAAQ,iBACRoB,OAAQ,uBACRC,KAAM,eACNC,cAAe,mBACfR,IAAK,gBACLS,gBAAiB,qBAEnBC,MAAO,CACLA,MAAO,UAETC,GAAI,CACFzB,OAAQ,4BAEV0B,MAAO,CACLA,MAAO,QACPC,EAAG,OACHC,WAAY,QACZC,IAAK,MACLC,GAAI,aACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eAENC,MAAO,CACLC,UAAW,qBACXC,QAAS,sBAEXC,QAAS,CACPC,KAAM,QACNC,WAAY,qBACZC,SAAU,iBAEZC,UAAW,CACTA,UAAW,WACXC,QAAS,6BACTC,OAAQ,6BACRC,KAAM,wBACNC,OAAQ,oBACRC,MAAO,wBACPC,QAAS,oBAEXC,MAAO,CACLC,OAAQ,cACRC,KAAM,cACNC,WAAY,aACZC,WAAY,aACZC,YAAa,SACbC,eAAgB,kBAChBC,MAAO,cACPC,eAAgB,yBAElBC,SAAU,CACRC,UAAW,8BACXC,MAAO,OACPC,eAAgB,UAChBC,OAAQ,SACRC,oBAAqB,uBACrBC,cAAe,kBACfC,UAAW,uBAEbC,QAAS,CACPC,KAAM,cACNC,KAAM,e,GDjGd,ICVUtF","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-uz-UZ.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'uz-UZ': {\n font: {\n bold: 'қалин',\n italic: 'Курсив',\n underline: 'Белгиланган',\n clear: 'Ҳарф турларини олиб ташлаш',\n height: 'Чизиқ баландлиги',\n name: 'Ҳарф',\n strikethrough: 'Ўчирилган',\n subscript: 'Пастки индекс',\n superscript: 'Юқори индекс',\n size: 'ҳарф ҳажми',\n },\n image: {\n image: 'Расм',\n insert: 'расмни қўйиш',\n resizeFull: 'Ҳажмни тиклаш',\n resizeHalf: '50% гача кичрайтириш',\n resizeQuarter: '25% гача кичрайтириш',\n floatLeft: 'Чапда жойлаштириш',\n floatRight: 'Ўнгда жойлаштириш',\n floatNone: 'Стандарт бўйича жойлашув',\n shapeRounded: 'Шакли: Юмалоқ',\n shapeCircle: 'Шакли: Доира',\n shapeThumbnail: 'Шакли: Миниатюра',\n shapeNone: 'Шакли: Йўқ',\n dragImageHere: 'Суратни кўчириб ўтинг',\n dropImage: 'Суратни кўчириб ўтинг',\n selectFromFiles: 'Файллардан бирини танлаш',\n url: 'суратлар URL и',\n remove: 'Суратни ўчириш',\n },\n video: {\n video: 'Видео',\n videoLink: 'Видеога ҳавола',\n insert: 'Видео',\n url: 'URL видео',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)',\n },\n link: {\n link: 'Ҳавола',\n insert: 'Ҳаволани қўйиш',\n unlink: 'Ҳаволани олиб ташлаш',\n edit: 'Таҳрир қилиш',\n textToDisplay: 'Кўринадиган матн',\n url: 'URL ўтиш учун',\n openInNewWindow: 'Янги дарчада очиш',\n },\n table: {\n table: 'Жадвал',\n },\n hr: {\n insert: 'Горизонтал чизиқни қўйиш',\n },\n style: {\n style: 'Услуб',\n p: 'Яхши',\n blockquote: 'Жумла',\n pre: 'Код',\n h1: 'Сарлавҳа 1',\n h2: 'Сарлавҳа 2',\n h3: 'Сарлавҳа 3',\n h4: 'Сарлавҳа 4',\n h5: 'Сарлавҳа 5',\n h6: 'Сарлавҳа 6',\n },\n lists: {\n unordered: 'Белгиланган рўйҳат',\n ordered: 'Рақамланган рўйҳат',\n },\n options: {\n help: 'Ёрдам',\n fullscreen: 'Бутун экран бўйича',\n codeview: 'Бошланғич код',\n },\n paragraph: {\n paragraph: 'Параграф',\n outdent: 'Орқага қайтишни камайтириш',\n indent: 'Орқага қайтишни кўпайтириш',\n left: 'Чап қирғоққа тўғрилаш',\n center: 'Марказга тўғрилаш',\n right: 'Ўнг қирғоққа тўғрилаш',\n justify: 'Эни бўйлаб чўзиш',\n },\n color: {\n recent: 'Охирги ранг',\n more: 'Яна ранглар',\n background: 'Фон ранги',\n foreground: 'Ҳарф ранги',\n transparent: 'Шаффоф',\n setTransparent: 'Шаффофдай қилиш',\n reset: 'Бекор қилиш',\n resetToDefault: 'Стандартга оид тиклаш',\n },\n shortcut: {\n shortcuts: 'Клавишларнинг ҳамохҳанглиги',\n close: 'Ёпиқ',\n textFormatting: 'Матнни ',\n action: 'Ҳаркат',\n paragraphFormatting: 'Параграфни форматлаш',\n documentStyle: 'Ҳужжатнинг тури',\n extraKeys: 'Қўшимча имкониятлар',\n },\n history: {\n undo: 'Бекор қилиш',\n redo: 'Қайтариш',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","url","remove","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.js b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.js new file mode 100644 index 0000000..e45f537 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'vi-VN': { + font: { + bold: 'In Đậm', + italic: 'In Nghiêng', + underline: 'Gạch dưới', + clear: 'Bỏ định dạng', + height: 'Chiều cao dòng', + name: 'Phông chữ', + strikethrough: 'Gạch ngang', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Cỡ chữ' + }, + image: { + image: 'Hình ảnh', + insert: 'Chèn', + resizeFull: '100%', + resizeHalf: '50%', + resizeQuarter: '25%', + floatLeft: 'Trôi về trái', + floatRight: 'Trôi về phải', + floatNone: 'Không trôi', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Thả Ảnh ở vùng này', + dropImage: 'Drop image or Text', + selectFromFiles: 'Chọn từ File', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL', + remove: 'Xóa', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Link đến Video', + insert: 'Chèn Video', + url: 'URL', + providers: '(Hỗ trợ YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)' + }, + link: { + link: 'Link', + insert: 'Chèn Link', + unlink: 'Gỡ Link', + edit: 'Sửa', + textToDisplay: 'Văn bản hiển thị', + url: 'URL', + openInNewWindow: 'Mở ở Cửa sổ mới' + }, + table: { + table: 'Bảng', + addRowAbove: 'Chèn dòng phía trên', + addRowBelow: 'Chèn dòng phía dưới', + addColLeft: 'Chèn cột bên trái', + addColRight: 'Chèn cột bên phải', + delRow: 'Xóa dòng', + delCol: 'Xóa cột', + delTable: 'Xóa bảng' + }, + hr: { + insert: 'Chèn' + }, + style: { + style: 'Kiểu chữ', + p: 'Chữ thường', + blockquote: 'Đoạn trích', + pre: 'Mã Code', + h1: 'H1', + h2: 'H2', + h3: 'H3', + h4: 'H4', + h5: 'H5', + h6: 'H6' + }, + lists: { + unordered: 'Liệt kê danh sách', + ordered: 'Liệt kê theo thứ tự' + }, + options: { + help: 'Trợ giúp', + fullscreen: 'Toàn Màn hình', + codeview: 'Xem Code' + }, + paragraph: { + paragraph: 'Canh lề', + outdent: 'Dịch sang trái', + indent: 'Dịch sang phải', + left: 'Canh trái', + center: 'Canh giữa', + right: 'Canh phải', + justify: 'Canh đều' + }, + color: { + recent: 'Màu chữ', + more: 'Mở rộng', + background: 'Màu nền', + foreground: 'Màu chữ', + transparent: 'trong suốt', + setTransparent: 'Nền trong suốt', + reset: 'Thiết lập lại', + resetToDefault: 'Trở lại ban đầu' + }, + shortcut: { + shortcuts: 'Phím tắt', + close: 'Đóng', + textFormatting: 'Định dạng Văn bản', + action: 'Hành động', + paragraphFormatting: 'Định dạng', + documentStyle: 'Kiểu văn bản', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Chèn đo văn', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Lùi lại', + redo: 'Làm lại' + }, + specialChar: { + specialChar: 'KÝ TỰ ĐẶC BIỆT', + select: 'Chọn ký tự đặc biệt' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-vi-VN.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.js.map new file mode 100644 index 0000000..87eae8c --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-vi-VN.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-vi-VN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'vi-VN': {\n font: {\n bold: 'In Đậm',\n italic: 'In Nghiêng',\n underline: 'Gạch dưới',\n clear: 'Bỏ định dạng',\n height: 'Chiều cao dòng',\n name: 'Phông chữ',\n strikethrough: 'Gạch ngang',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Cỡ chữ',\n },\n image: {\n image: 'Hình ảnh',\n insert: 'Chèn',\n resizeFull: '100%',\n resizeHalf: '50%',\n resizeQuarter: '25%',\n floatLeft: 'Trôi về trái',\n floatRight: 'Trôi về phải',\n floatNone: 'Không trôi',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Thả Ảnh ở vùng này',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Chọn từ File',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL',\n remove: 'Xóa',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Link đến Video',\n insert: 'Chèn Video',\n url: 'URL',\n providers: '(Hỗ trợ YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Chèn Link',\n unlink: 'Gỡ Link',\n edit: 'Sửa',\n textToDisplay: 'Văn bản hiển thị',\n url: 'URL',\n openInNewWindow: 'Mở ở Cửa sổ mới',\n },\n table: {\n table: 'Bảng',\n addRowAbove: 'Chèn dòng phía trên',\n addRowBelow: 'Chèn dòng phía dưới',\n addColLeft: 'Chèn cột bên trái',\n addColRight: 'Chèn cột bên phải',\n delRow: 'Xóa dòng',\n delCol: 'Xóa cột',\n delTable: 'Xóa bảng',\n },\n hr: {\n insert: 'Chèn',\n },\n style: {\n style: 'Kiểu chữ',\n p: 'Chữ thường',\n blockquote: 'Đoạn trích',\n pre: 'Mã Code',\n h1: 'H1',\n h2: 'H2',\n h3: 'H3',\n h4: 'H4',\n h5: 'H5',\n h6: 'H6',\n },\n lists: {\n unordered: 'Liệt kê danh sách',\n ordered: 'Liệt kê theo thứ tự',\n },\n options: {\n help: 'Trợ giúp',\n fullscreen: 'Toàn Màn hình',\n codeview: 'Xem Code',\n },\n paragraph: {\n paragraph: 'Canh lề',\n outdent: 'Dịch sang trái',\n indent: 'Dịch sang phải',\n left: 'Canh trái',\n center: 'Canh giữa',\n right: 'Canh phải',\n justify: 'Canh đều',\n },\n color: {\n recent: 'Màu chữ',\n more: 'Mở rộng',\n background: 'Màu nền',\n foreground: 'Màu chữ',\n transparent: 'trong suốt',\n setTransparent: 'Nền trong suốt',\n reset: 'Thiết lập lại',\n resetToDefault: 'Trở lại ban đầu',\n },\n shortcut: {\n shortcuts: 'Phím tắt',\n close: 'Đóng',\n textFormatting: 'Định dạng Văn bản',\n action: 'Hành động',\n paragraphFormatting: 'Định dạng',\n documentStyle: 'Kiểu văn bản',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Chèn đo văn',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Lùi lại',\n redo: 'Làm lại',\n },\n specialChar: {\n specialChar: 'KÝ TỰ ĐẶC BIỆT',\n select: 'Chọn ký tự đặc biệt',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.min.js new file mode 100644 index 0000000..9d9c898 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"vi-VN":{font:{bold:"In Đậm",italic:"In Nghiêng",underline:"Gạch dưới",clear:"Bỏ định dạng",height:"Chiều cao dòng",name:"Phông chữ",strikethrough:"Gạch ngang",subscript:"Subscript",superscript:"Superscript",size:"Cỡ chữ"},image:{image:"Hình ảnh",insert:"Chèn",resizeFull:"100%",resizeHalf:"50%",resizeQuarter:"25%",floatLeft:"Trôi về trái",floatRight:"Trôi về phải",floatNone:"Không trôi",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Thả Ảnh ở vùng này",dropImage:"Drop image or Text",selectFromFiles:"Chọn từ File",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL",remove:"Xóa",original:"Original"},video:{video:"Video",videoLink:"Link đến Video",insert:"Chèn Video",url:"URL",providers:"(Hỗ trợ YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)"},link:{link:"Link",insert:"Chèn Link",unlink:"Gỡ Link",edit:"Sửa",textToDisplay:"Văn bản hiển thị",url:"URL",openInNewWindow:"Mở ở Cửa sổ mới"},table:{table:"Bảng",addRowAbove:"Chèn dòng phía trên",addRowBelow:"Chèn dòng phía dưới",addColLeft:"Chèn cột bên trái",addColRight:"Chèn cột bên phải",delRow:"Xóa dòng",delCol:"Xóa cột",delTable:"Xóa bảng"},hr:{insert:"Chèn"},style:{style:"Kiểu chữ",p:"Chữ thường",blockquote:"Đoạn trích",pre:"Mã Code",h1:"H1",h2:"H2",h3:"H3",h4:"H4",h5:"H5",h6:"H6"},lists:{unordered:"Liệt kê danh sách",ordered:"Liệt kê theo thứ tự"},options:{help:"Trợ giúp",fullscreen:"Toàn Màn hình",codeview:"Xem Code"},paragraph:{paragraph:"Canh lề",outdent:"Dịch sang trái",indent:"Dịch sang phải",left:"Canh trái",center:"Canh giữa",right:"Canh phải",justify:"Canh đều"},color:{recent:"Màu chữ",more:"Mở rộng",background:"Màu nền",foreground:"Màu chữ",transparent:"trong suốt",setTransparent:"Nền trong suốt",reset:"Thiết lập lại",resetToDefault:"Trở lại ban đầu"},shortcut:{shortcuts:"Phím tắt",close:"Đóng",textFormatting:"Định dạng Văn bản",action:"Hành động",paragraphFormatting:"Định dạng",documentStyle:"Kiểu văn bản",extraKeys:"Extra keys"},help:{insertParagraph:"Chèn đo văn",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Lùi lại",redo:"Làm lại"},specialChar:{specialChar:"KÝ TỰ ĐẶC BIỆT",select:"Chọn ký tự đặc biệt"}}}),{};var e})); +//# sourceMappingURL=summernote-vi-VN.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.min.js.map new file mode 100644 index 0000000..2cac5b4 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-vi-VN.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-vi-VN.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,SACNC,OAAQ,aACRC,UAAW,YACXC,MAAO,eACPC,OAAQ,iBACRC,KAAM,YACNC,cAAe,aACfC,UAAW,YACXC,YAAa,cACbC,KAAM,UAERC,MAAO,CACLA,MAAO,WACPC,OAAQ,OACRC,WAAY,OACZC,WAAY,MACZC,cAAe,MACfC,UAAW,eACXC,WAAY,eACZC,UAAW,aACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,qBACfC,UAAW,qBACXC,gBAAiB,eACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,MACLC,OAAQ,MACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,iBACXpB,OAAQ,aACRgB,IAAK,MACLK,UAAW,kEAEbC,KAAM,CACJA,KAAM,OACNtB,OAAQ,YACRuB,OAAQ,UACRC,KAAM,MACNC,cAAe,mBACfT,IAAK,MACLU,gBAAiB,mBAEnBC,MAAO,CACLA,MAAO,OACPC,YAAa,sBACbC,YAAa,sBACbC,WAAY,oBACZC,YAAa,oBACbC,OAAQ,WACRC,OAAQ,UACRC,SAAU,YAEZC,GAAI,CACFnC,OAAQ,QAEVoC,MAAO,CACLA,MAAO,WACPC,EAAG,aACHC,WAAY,aACZC,IAAK,UACLC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAENC,MAAO,CACLC,UAAW,oBACXC,QAAS,uBAEXC,QAAS,CACPC,KAAM,WACNC,WAAY,gBACZC,SAAU,YAEZC,UAAW,CACTA,UAAW,UACXC,QAAS,iBACTC,OAAQ,iBACRC,KAAM,YACNC,OAAQ,YACRC,MAAO,YACPC,QAAS,YAEXC,MAAO,CACLC,OAAQ,UACRC,KAAM,UACNC,WAAY,UACZC,WAAY,UACZC,YAAa,aACbC,eAAgB,iBAChBC,MAAO,gBACPC,eAAgB,mBAElBC,SAAU,CACRC,UAAW,WACXC,MAAO,OACPC,eAAgB,oBAChBC,OAAQ,YACRC,oBAAqB,YACrBC,cAAe,eACfC,UAAW,cAEb1B,KAAM,CACJ,gBAAmB,cACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,UACNC,KAAM,WAERC,YAAa,CACXA,YAAa,iBACbC,OAAQ,0B,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-vi-VN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'vi-VN': {\n font: {\n bold: 'In Đậm',\n italic: 'In Nghiêng',\n underline: 'Gạch dưới',\n clear: 'Bỏ định dạng',\n height: 'Chiều cao dòng',\n name: 'Phông chữ',\n strikethrough: 'Gạch ngang',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Cỡ chữ',\n },\n image: {\n image: 'Hình ảnh',\n insert: 'Chèn',\n resizeFull: '100%',\n resizeHalf: '50%',\n resizeQuarter: '25%',\n floatLeft: 'Trôi về trái',\n floatRight: 'Trôi về phải',\n floatNone: 'Không trôi',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Thả Ảnh ở vùng này',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Chọn từ File',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'URL',\n remove: 'Xóa',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Link đến Video',\n insert: 'Chèn Video',\n url: 'URL',\n providers: '(Hỗ trợ YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Chèn Link',\n unlink: 'Gỡ Link',\n edit: 'Sửa',\n textToDisplay: 'Văn bản hiển thị',\n url: 'URL',\n openInNewWindow: 'Mở ở Cửa sổ mới',\n },\n table: {\n table: 'Bảng',\n addRowAbove: 'Chèn dòng phía trên',\n addRowBelow: 'Chèn dòng phía dưới',\n addColLeft: 'Chèn cột bên trái',\n addColRight: 'Chèn cột bên phải',\n delRow: 'Xóa dòng',\n delCol: 'Xóa cột',\n delTable: 'Xóa bảng',\n },\n hr: {\n insert: 'Chèn',\n },\n style: {\n style: 'Kiểu chữ',\n p: 'Chữ thường',\n blockquote: 'Đoạn trích',\n pre: 'Mã Code',\n h1: 'H1',\n h2: 'H2',\n h3: 'H3',\n h4: 'H4',\n h5: 'H5',\n h6: 'H6',\n },\n lists: {\n unordered: 'Liệt kê danh sách',\n ordered: 'Liệt kê theo thứ tự',\n },\n options: {\n help: 'Trợ giúp',\n fullscreen: 'Toàn Màn hình',\n codeview: 'Xem Code',\n },\n paragraph: {\n paragraph: 'Canh lề',\n outdent: 'Dịch sang trái',\n indent: 'Dịch sang phải',\n left: 'Canh trái',\n center: 'Canh giữa',\n right: 'Canh phải',\n justify: 'Canh đều',\n },\n color: {\n recent: 'Màu chữ',\n more: 'Mở rộng',\n background: 'Màu nền',\n foreground: 'Màu chữ',\n transparent: 'trong suốt',\n setTransparent: 'Nền trong suốt',\n reset: 'Thiết lập lại',\n resetToDefault: 'Trở lại ban đầu',\n },\n shortcut: {\n shortcuts: 'Phím tắt',\n close: 'Đóng',\n textFormatting: 'Định dạng Văn bản',\n action: 'Hành động',\n paragraphFormatting: 'Định dạng',\n documentStyle: 'Kiểu văn bản',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Chèn đo văn',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Lùi lại',\n redo: 'Làm lại',\n },\n specialChar: {\n specialChar: 'KÝ TỰ ĐẶC BIỆT',\n select: 'Chọn ký tự đặc biệt',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.js b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.js new file mode 100644 index 0000000..931b062 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'zh-CN': { + font: { + bold: '粗体', + italic: '斜体', + underline: '下划线', + clear: '清除格式', + height: '行高', + name: '字体', + strikethrough: '删除线', + subscript: '下标', + superscript: '上标', + size: '字号' + }, + image: { + image: '图片', + insert: '插入图片', + resizeFull: '缩放至 100%', + resizeHalf: '缩放至 50%', + resizeQuarter: '缩放至 25%', + floatLeft: '靠左浮动', + floatRight: '靠右浮动', + floatNone: '取消浮动', + shapeRounded: '形状: 圆角', + shapeCircle: '形状: 圆', + shapeThumbnail: '形状: 缩略图', + shapeNone: '形状: 无', + dragImageHere: '将图片拖拽至此处', + dropImage: '拖拽图片或文本', + selectFromFiles: '从本地上传', + maximumFileSize: '文件大小最大值', + maximumFileSizeError: '文件大小超出最大值。', + url: '图片地址', + remove: '移除图片', + original: '原始图片' + }, + video: { + video: '视频', + videoLink: '视频链接', + insert: '插入视频', + url: '视频地址', + providers: '(优酷, 腾讯, Instagram, DailyMotion, Youtube等)' + }, + link: { + link: '链接', + insert: '插入链接', + unlink: '去除链接', + edit: '编辑链接', + textToDisplay: '显示文本', + url: '链接地址', + openInNewWindow: '在新窗口打开' + }, + table: { + table: '表格', + addRowAbove: '在上方插入行', + addRowBelow: '在下方插入行', + addColLeft: '在左侧插入列', + addColRight: '在右侧插入列', + delRow: '删除行', + delCol: '删除列', + delTable: '删除表格' + }, + hr: { + insert: '水平线' + }, + style: { + style: '样式', + p: '普通', + blockquote: '引用', + pre: '代码', + h1: '标题 1', + h2: '标题 2', + h3: '标题 3', + h4: '标题 4', + h5: '标题 5', + h6: '标题 6' + }, + lists: { + unordered: '无序列表', + ordered: '有序列表' + }, + options: { + help: '帮助', + fullscreen: '全屏', + codeview: '源代码' + }, + paragraph: { + paragraph: '段落', + outdent: '减少缩进', + indent: '增加缩进', + left: '左对齐', + center: '居中对齐', + right: '右对齐', + justify: '两端对齐' + }, + color: { + recent: '最近使用', + more: '更多', + background: '背景', + foreground: '前景', + transparent: '透明', + setTransparent: '透明', + reset: '重置', + resetToDefault: '默认' + }, + shortcut: { + shortcuts: '快捷键', + close: '关闭', + textFormatting: '文本格式', + action: '动作', + paragraphFormatting: '段落格式', + documentStyle: '文档样式', + extraKeys: '额外按键' + }, + help: { + insertParagraph: '插入段落', + undo: '撤销', + redo: '重做', + tab: '增加缩进', + untab: '减少缩进', + bold: '粗体', + italic: '斜体', + underline: '下划线', + strikethrough: '删除线', + removeFormat: '清除格式', + justifyLeft: '左对齐', + justifyCenter: '居中对齐', + justifyRight: '右对齐', + justifyFull: '两端对齐', + insertUnorderedList: '无序列表', + insertOrderedList: '有序列表', + outdent: '减少缩进', + indent: '增加缩进', + formatPara: '设置选中内容样式为 普通', + formatH1: '设置选中内容样式为 标题1', + formatH2: '设置选中内容样式为 标题2', + formatH3: '设置选中内容样式为 标题3', + formatH4: '设置选中内容样式为 标题4', + formatH5: '设置选中内容样式为 标题5', + formatH6: '设置选中内容样式为 标题6', + insertHorizontalRule: '插入水平线', + 'linkDialog.show': '显示链接对话框' + }, + history: { + undo: '撤销', + redo: '重做' + }, + specialChar: { + specialChar: '特殊字符', + select: '选取特殊字符' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-zh-CN.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.js.map new file mode 100644 index 0000000..f606487 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-zh-CN.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-zh-CN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'zh-CN': {\n font: {\n bold: '粗体',\n italic: '斜体',\n underline: '下划线',\n clear: '清除格式',\n height: '行高',\n name: '字体',\n strikethrough: '删除线',\n subscript: '下标',\n superscript: '上标',\n size: '字号',\n },\n image: {\n image: '图片',\n insert: '插入图片',\n resizeFull: '缩放至 100%',\n resizeHalf: '缩放至 50%',\n resizeQuarter: '缩放至 25%',\n floatLeft: '靠左浮动',\n floatRight: '靠右浮动',\n floatNone: '取消浮动',\n shapeRounded: '形状: 圆角',\n shapeCircle: '形状: 圆',\n shapeThumbnail: '形状: 缩略图',\n shapeNone: '形状: 无',\n dragImageHere: '将图片拖拽至此处',\n dropImage: '拖拽图片或文本',\n selectFromFiles: '从本地上传',\n maximumFileSize: '文件大小最大值',\n maximumFileSizeError: '文件大小超出最大值。',\n url: '图片地址',\n remove: '移除图片',\n original: '原始图片',\n },\n video: {\n video: '视频',\n videoLink: '视频链接',\n insert: '插入视频',\n url: '视频地址',\n providers: '(优酷, 腾讯, Instagram, DailyMotion, Youtube等)',\n },\n link: {\n link: '链接',\n insert: '插入链接',\n unlink: '去除链接',\n edit: '编辑链接',\n textToDisplay: '显示文本',\n url: '链接地址',\n openInNewWindow: '在新窗口打开',\n },\n table: {\n table: '表格',\n addRowAbove: '在上方插入行',\n addRowBelow: '在下方插入行',\n addColLeft: '在左侧插入列',\n addColRight: '在右侧插入列',\n delRow: '删除行',\n delCol: '删除列',\n delTable: '删除表格',\n },\n hr: {\n insert: '水平线',\n },\n style: {\n style: '样式',\n p: '普通',\n blockquote: '引用',\n pre: '代码',\n h1: '标题 1',\n h2: '标题 2',\n h3: '标题 3',\n h4: '标题 4',\n h5: '标题 5',\n h6: '标题 6',\n },\n lists: {\n unordered: '无序列表',\n ordered: '有序列表',\n },\n options: {\n help: '帮助',\n fullscreen: '全屏',\n codeview: '源代码',\n },\n paragraph: {\n paragraph: '段落',\n outdent: '减少缩进',\n indent: '增加缩进',\n left: '左对齐',\n center: '居中对齐',\n right: '右对齐',\n justify: '两端对齐',\n },\n color: {\n recent: '最近使用',\n more: '更多',\n background: '背景',\n foreground: '前景',\n transparent: '透明',\n setTransparent: '透明',\n reset: '重置',\n resetToDefault: '默认',\n },\n shortcut: {\n shortcuts: '快捷键',\n close: '关闭',\n textFormatting: '文本格式',\n action: '动作',\n paragraphFormatting: '段落格式',\n documentStyle: '文档样式',\n extraKeys: '额外按键',\n },\n help: {\n insertParagraph: '插入段落',\n undo: '撤销',\n redo: '重做',\n tab: '增加缩进',\n untab: '减少缩进',\n bold: '粗体',\n italic: '斜体',\n underline: '下划线',\n strikethrough: '删除线',\n removeFormat: '清除格式',\n justifyLeft: '左对齐',\n justifyCenter: '居中对齐',\n justifyRight: '右对齐',\n justifyFull: '两端对齐',\n insertUnorderedList: '无序列表',\n insertOrderedList: '有序列表',\n outdent: '减少缩进',\n indent: '增加缩进',\n formatPara: '设置选中内容样式为 普通',\n formatH1: '设置选中内容样式为 标题1',\n formatH2: '设置选中内容样式为 标题2',\n formatH3: '设置选中内容样式为 标题3',\n formatH4: '设置选中内容样式为 标题4',\n formatH5: '设置选中内容样式为 标题5',\n formatH6: '设置选中内容样式为 标题6',\n insertHorizontalRule: '插入水平线',\n 'linkDialog.show': '显示链接对话框',\n },\n history: {\n undo: '撤销',\n redo: '重做',\n },\n specialChar: {\n specialChar: '特殊字符',\n select: '选取特殊字符',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.min.js new file mode 100644 index 0000000..69102f0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",dropImage:"拖拽图片或文本",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片",original:"原始图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(优酷, 腾讯, Instagram, DailyMotion, Youtube等)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格",addRowAbove:"在上方插入行",addRowBelow:"在下方插入行",addColLeft:"在左侧插入列",addColRight:"在右侧插入列",delRow:"删除行",delCol:"删除列",delTable:"删除表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},help:{insertParagraph:"插入段落",undo:"撤销",redo:"重做",tab:"增加缩进",untab:"减少缩进",bold:"粗体",italic:"斜体",underline:"下划线",strikethrough:"删除线",removeFormat:"清除格式",justifyLeft:"左对齐",justifyCenter:"居中对齐",justifyRight:"右对齐",justifyFull:"两端对齐",insertUnorderedList:"无序列表",insertOrderedList:"有序列表",outdent:"减少缩进",indent:"增加缩进",formatPara:"设置选中内容样式为 普通",formatH1:"设置选中内容样式为 标题1",formatH2:"设置选中内容样式为 标题2",formatH3:"设置选中内容样式为 标题3",formatH4:"设置选中内容样式为 标题4",formatH5:"设置选中内容样式为 标题5",formatH6:"设置选中内容样式为 标题6",insertHorizontalRule:"插入水平线","linkDialog.show":"显示链接对话框"},history:{undo:"撤销",redo:"重做"},specialChar:{specialChar:"特殊字符",select:"选取特殊字符"}}}),{};var e})); +//# sourceMappingURL=summernote-zh-CN.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.min.js.map new file mode 100644 index 0000000..b4aa2dd --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-CN.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-zh-CN.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,KACNC,OAAQ,KACRC,UAAW,MACXC,MAAO,OACPC,OAAQ,KACRC,KAAM,KACNC,cAAe,MACfC,UAAW,KACXC,YAAa,KACbC,KAAM,MAERC,MAAO,CACLA,MAAO,KACPC,OAAQ,OACRC,WAAY,WACZC,WAAY,UACZC,cAAe,UACfC,UAAW,OACXC,WAAY,OACZC,UAAW,OACXC,aAAc,SACdC,YAAa,QACbC,eAAgB,UAChBC,UAAW,QACXC,cAAe,WACfC,UAAW,UACXC,gBAAiB,QACjBC,gBAAiB,UACjBC,qBAAsB,aACtBC,IAAK,OACLC,OAAQ,OACRC,SAAU,QAEZC,MAAO,CACLA,MAAO,KACPC,UAAW,OACXpB,OAAQ,OACRgB,IAAK,OACLK,UAAW,8CAEbC,KAAM,CACJA,KAAM,KACNtB,OAAQ,OACRuB,OAAQ,OACRC,KAAM,OACNC,cAAe,OACfT,IAAK,OACLU,gBAAiB,UAEnBC,MAAO,CACLA,MAAO,KACPC,YAAa,SACbC,YAAa,SACbC,WAAY,SACZC,YAAa,SACbC,OAAQ,MACRC,OAAQ,MACRC,SAAU,QAEZC,GAAI,CACFnC,OAAQ,OAEVoC,MAAO,CACLA,MAAO,KACPC,EAAG,KACHC,WAAY,KACZC,IAAK,KACLC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,QAENC,MAAO,CACLC,UAAW,OACXC,QAAS,QAEXC,QAAS,CACPC,KAAM,KACNC,WAAY,KACZC,SAAU,OAEZC,UAAW,CACTA,UAAW,KACXC,QAAS,OACTC,OAAQ,OACRC,KAAM,MACNC,OAAQ,OACRC,MAAO,MACPC,QAAS,QAEXC,MAAO,CACLC,OAAQ,OACRC,KAAM,KACNC,WAAY,KACZC,WAAY,KACZC,YAAa,KACbC,eAAgB,KAChBC,MAAO,KACPC,eAAgB,MAElBC,SAAU,CACRC,UAAW,MACXC,MAAO,KACPC,eAAgB,OAChBC,OAAQ,KACRC,oBAAqB,OACrBC,cAAe,OACfC,UAAW,QAEb1B,KAAM,CACJ2B,gBAAiB,OACjBC,KAAM,KACNC,KAAM,KACNC,IAAK,OACLC,MAAO,OACP5F,KAAM,KACNC,OAAQ,KACRC,UAAW,MACXI,cAAe,MACfuF,aAAc,OACdC,YAAa,MACbC,cAAe,OACfC,aAAc,MACdC,YAAa,OACbC,oBAAqB,OACrBC,kBAAmB,OACnBlC,QAAS,OACTC,OAAQ,OACRkC,WAAY,eACZC,SAAU,gBACVC,SAAU,gBACVC,SAAU,gBACVC,SAAU,gBACVC,SAAU,gBACVC,SAAU,gBACVC,qBAAsB,QACtB,kBAAmB,WAErBC,QAAS,CACPnB,KAAM,KACNC,KAAM,MAERmB,YAAa,CACXA,YAAa,OACbC,OAAQ,a,GD5IhB,ICVUpH","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-zh-CN.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'zh-CN': {\n font: {\n bold: '粗体',\n italic: '斜体',\n underline: '下划线',\n clear: '清除格式',\n height: '行高',\n name: '字体',\n strikethrough: '删除线',\n subscript: '下标',\n superscript: '上标',\n size: '字号',\n },\n image: {\n image: '图片',\n insert: '插入图片',\n resizeFull: '缩放至 100%',\n resizeHalf: '缩放至 50%',\n resizeQuarter: '缩放至 25%',\n floatLeft: '靠左浮动',\n floatRight: '靠右浮动',\n floatNone: '取消浮动',\n shapeRounded: '形状: 圆角',\n shapeCircle: '形状: 圆',\n shapeThumbnail: '形状: 缩略图',\n shapeNone: '形状: 无',\n dragImageHere: '将图片拖拽至此处',\n dropImage: '拖拽图片或文本',\n selectFromFiles: '从本地上传',\n maximumFileSize: '文件大小最大值',\n maximumFileSizeError: '文件大小超出最大值。',\n url: '图片地址',\n remove: '移除图片',\n original: '原始图片',\n },\n video: {\n video: '视频',\n videoLink: '视频链接',\n insert: '插入视频',\n url: '视频地址',\n providers: '(优酷, 腾讯, Instagram, DailyMotion, Youtube等)',\n },\n link: {\n link: '链接',\n insert: '插入链接',\n unlink: '去除链接',\n edit: '编辑链接',\n textToDisplay: '显示文本',\n url: '链接地址',\n openInNewWindow: '在新窗口打开',\n },\n table: {\n table: '表格',\n addRowAbove: '在上方插入行',\n addRowBelow: '在下方插入行',\n addColLeft: '在左侧插入列',\n addColRight: '在右侧插入列',\n delRow: '删除行',\n delCol: '删除列',\n delTable: '删除表格',\n },\n hr: {\n insert: '水平线',\n },\n style: {\n style: '样式',\n p: '普通',\n blockquote: '引用',\n pre: '代码',\n h1: '标题 1',\n h2: '标题 2',\n h3: '标题 3',\n h4: '标题 4',\n h5: '标题 5',\n h6: '标题 6',\n },\n lists: {\n unordered: '无序列表',\n ordered: '有序列表',\n },\n options: {\n help: '帮助',\n fullscreen: '全屏',\n codeview: '源代码',\n },\n paragraph: {\n paragraph: '段落',\n outdent: '减少缩进',\n indent: '增加缩进',\n left: '左对齐',\n center: '居中对齐',\n right: '右对齐',\n justify: '两端对齐',\n },\n color: {\n recent: '最近使用',\n more: '更多',\n background: '背景',\n foreground: '前景',\n transparent: '透明',\n setTransparent: '透明',\n reset: '重置',\n resetToDefault: '默认',\n },\n shortcut: {\n shortcuts: '快捷键',\n close: '关闭',\n textFormatting: '文本格式',\n action: '动作',\n paragraphFormatting: '段落格式',\n documentStyle: '文档样式',\n extraKeys: '额外按键',\n },\n help: {\n insertParagraph: '插入段落',\n undo: '撤销',\n redo: '重做',\n tab: '增加缩进',\n untab: '减少缩进',\n bold: '粗体',\n italic: '斜体',\n underline: '下划线',\n strikethrough: '删除线',\n removeFormat: '清除格式',\n justifyLeft: '左对齐',\n justifyCenter: '居中对齐',\n justifyRight: '右对齐',\n justifyFull: '两端对齐',\n insertUnorderedList: '无序列表',\n insertOrderedList: '有序列表',\n outdent: '减少缩进',\n indent: '增加缩进',\n formatPara: '设置选中内容样式为 普通',\n formatH1: '设置选中内容样式为 标题1',\n formatH2: '设置选中内容样式为 标题2',\n formatH3: '设置选中内容样式为 标题3',\n formatH4: '设置选中内容样式为 标题4',\n formatH5: '设置选中内容样式为 标题5',\n formatH6: '设置选中内容样式为 标题6',\n insertHorizontalRule: '插入水平线',\n 'linkDialog.show': '显示链接对话框',\n },\n history: {\n undo: '撤销',\n redo: '重做',\n },\n specialChar: {\n specialChar: '特殊字符',\n select: '选取特殊字符',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","insertParagraph","undo","redo","tab","untab","removeFormat","justifyLeft","justifyCenter","justifyRight","justifyFull","insertUnorderedList","insertOrderedList","formatPara","formatH1","formatH2","formatH3","formatH4","formatH5","formatH6","insertHorizontalRule","history","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.js b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.js new file mode 100644 index 0000000..c982b77 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.js @@ -0,0 +1,184 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +var __webpack_exports__ = {}; +(function ($) { + $.extend($.summernote.lang, { + 'zh-TW': { + font: { + bold: '粗體', + italic: '斜體', + underline: '底線', + clear: '清除格式', + height: '行高', + name: '字體', + strikethrough: '刪除線', + subscript: '下標', + superscript: '上標', + size: '字號' + }, + image: { + image: '圖片', + insert: '插入圖片', + resizeFull: '縮放至100%', + resizeHalf: '縮放至 50%', + resizeQuarter: '縮放至 25%', + floatLeft: '靠左浮動', + floatRight: '靠右浮動', + floatNone: '取消浮動', + shapeRounded: '形狀: 圓角', + shapeCircle: '形狀: 圓', + shapeThumbnail: '形狀: 縮略圖', + shapeNone: '形狀: 無', + dragImageHere: '將圖片拖曳至此處', + dropImage: 'Drop image or Text', + selectFromFiles: '從本機上傳', + maximumFileSize: '文件大小最大值', + maximumFileSizeError: '文件大小超出最大值。', + url: '圖片網址', + remove: '移除圖片', + original: 'Original' + }, + video: { + video: '影片', + videoLink: '影片連結', + insert: '插入影片', + url: '影片網址', + providers: '(優酷, Instagram, DailyMotion, Youtube等)' + }, + link: { + link: '連結', + insert: '插入連結', + unlink: '取消連結', + edit: '編輯連結', + textToDisplay: '顯示文字', + url: '連結網址', + openInNewWindow: '在新視窗開啟' + }, + table: { + table: '表格', + addRowAbove: '上方插入列', + addRowBelow: '下方插入列', + addColLeft: '左方插入欄', + addColRight: '右方插入欄', + delRow: '刪除列', + delCol: '刪除欄', + delTable: '刪除表格' + }, + hr: { + insert: '水平線' + }, + style: { + style: '樣式', + p: '一般', + blockquote: '引用區塊', + pre: '程式碼區塊', + h1: '標題 1', + h2: '標題 2', + h3: '標題 3', + h4: '標題 4', + h5: '標題 5', + h6: '標題 6' + }, + lists: { + unordered: '項目清單', + ordered: '編號清單' + }, + options: { + help: '幫助', + fullscreen: '全螢幕', + codeview: '原始碼' + }, + paragraph: { + paragraph: '段落', + outdent: '取消縮排', + indent: '增加縮排', + left: '靠右對齊', + center: '靠中對齊', + right: '靠右對齊', + justify: '左右對齊' + }, + color: { + recent: '字型顏色', + more: '更多', + background: '背景', + foreground: '字體', + transparent: '透明', + setTransparent: '透明', + reset: '重設', + resetToDefault: '預設' + }, + shortcut: { + shortcuts: '快捷鍵', + close: '關閉', + textFormatting: '文字格式', + action: '動作', + paragraphFormatting: '段落格式', + documentStyle: '文件格式', + extraKeys: '額外按鍵' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: '復原', + redo: '取消復原' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=summernote-zh-TW.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.js.map new file mode 100644 index 0000000..5f6a67e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-zh-TW.js","mappings":"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","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-zh-TW.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'zh-TW': {\n font: {\n bold: '粗體',\n italic: '斜體',\n underline: '底線',\n clear: '清除格式',\n height: '行高',\n name: '字體',\n strikethrough: '刪除線',\n subscript: '下標',\n superscript: '上標',\n size: '字號',\n },\n image: {\n image: '圖片',\n insert: '插入圖片',\n resizeFull: '縮放至100%',\n resizeHalf: '縮放至 50%',\n resizeQuarter: '縮放至 25%',\n floatLeft: '靠左浮動',\n floatRight: '靠右浮動',\n floatNone: '取消浮動',\n shapeRounded: '形狀: 圓角',\n shapeCircle: '形狀: 圓',\n shapeThumbnail: '形狀: 縮略圖',\n shapeNone: '形狀: 無',\n dragImageHere: '將圖片拖曳至此處',\n dropImage: 'Drop image or Text',\n selectFromFiles: '從本機上傳',\n maximumFileSize: '文件大小最大值',\n maximumFileSizeError: '文件大小超出最大值。',\n url: '圖片網址',\n remove: '移除圖片',\n original: 'Original',\n },\n video: {\n video: '影片',\n videoLink: '影片連結',\n insert: '插入影片',\n url: '影片網址',\n providers: '(優酷, Instagram, DailyMotion, Youtube等)',\n },\n link: {\n link: '連結',\n insert: '插入連結',\n unlink: '取消連結',\n edit: '編輯連結',\n textToDisplay: '顯示文字',\n url: '連結網址',\n openInNewWindow: '在新視窗開啟',\n },\n table: {\n table: '表格',\n addRowAbove: '上方插入列',\n addRowBelow: '下方插入列',\n addColLeft: '左方插入欄',\n addColRight: '右方插入欄',\n delRow: '刪除列',\n delCol: '刪除欄',\n delTable: '刪除表格',\n },\n hr: {\n insert: '水平線',\n },\n style: {\n style: '樣式',\n p: '一般',\n blockquote: '引用區塊',\n pre: '程式碼區塊',\n h1: '標題 1',\n h2: '標題 2',\n h3: '標題 3',\n h4: '標題 4',\n h5: '標題 5',\n h6: '標題 6',\n },\n lists: {\n unordered: '項目清單',\n ordered: '編號清單',\n },\n options: {\n help: '幫助',\n fullscreen: '全螢幕',\n codeview: '原始碼',\n },\n paragraph: {\n paragraph: '段落',\n outdent: '取消縮排',\n indent: '增加縮排',\n left: '靠右對齊',\n center: '靠中對齊',\n right: '靠右對齊',\n justify: '左右對齊',\n },\n color: {\n recent: '字型顏色',\n more: '更多',\n background: '背景',\n foreground: '字體',\n transparent: '透明',\n setTransparent: '透明',\n reset: '重設',\n resetToDefault: '預設',\n },\n shortcut: {\n shortcuts: '快捷鍵',\n close: '關閉',\n textFormatting: '文字格式',\n action: '動作',\n paragraphFormatting: '段落格式',\n documentStyle: '文件格式',\n extraKeys: '額外按鍵',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: '復原',\n redo: '取消復原',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["$","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","jQuery"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.min.js b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.min.js new file mode 100644 index 0000000..a67207e --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(){return(e=jQuery).extend(e.summernote.lang,{"zh-TW":{font:{bold:"粗體",italic:"斜體",underline:"底線",clear:"清除格式",height:"行高",name:"字體",strikethrough:"刪除線",subscript:"下標",superscript:"上標",size:"字號"},image:{image:"圖片",insert:"插入圖片",resizeFull:"縮放至100%",resizeHalf:"縮放至 50%",resizeQuarter:"縮放至 25%",floatLeft:"靠左浮動",floatRight:"靠右浮動",floatNone:"取消浮動",shapeRounded:"形狀: 圓角",shapeCircle:"形狀: 圓",shapeThumbnail:"形狀: 縮略圖",shapeNone:"形狀: 無",dragImageHere:"將圖片拖曳至此處",dropImage:"Drop image or Text",selectFromFiles:"從本機上傳",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"圖片網址",remove:"移除圖片",original:"Original"},video:{video:"影片",videoLink:"影片連結",insert:"插入影片",url:"影片網址",providers:"(優酷, Instagram, DailyMotion, Youtube等)"},link:{link:"連結",insert:"插入連結",unlink:"取消連結",edit:"編輯連結",textToDisplay:"顯示文字",url:"連結網址",openInNewWindow:"在新視窗開啟"},table:{table:"表格",addRowAbove:"上方插入列",addRowBelow:"下方插入列",addColLeft:"左方插入欄",addColRight:"右方插入欄",delRow:"刪除列",delCol:"刪除欄",delTable:"刪除表格"},hr:{insert:"水平線"},style:{style:"樣式",p:"一般",blockquote:"引用區塊",pre:"程式碼區塊",h1:"標題 1",h2:"標題 2",h3:"標題 3",h4:"標題 4",h5:"標題 5",h6:"標題 6"},lists:{unordered:"項目清單",ordered:"編號清單"},options:{help:"幫助",fullscreen:"全螢幕",codeview:"原始碼"},paragraph:{paragraph:"段落",outdent:"取消縮排",indent:"增加縮排",left:"靠右對齊",center:"靠中對齊",right:"靠右對齊",justify:"左右對齊"},color:{recent:"字型顏色",more:"更多",background:"背景",foreground:"字體",transparent:"透明",setTransparent:"透明",reset:"重設",resetToDefault:"預設"},shortcut:{shortcuts:"快捷鍵",close:"關閉",textFormatting:"文字格式",action:"動作",paragraphFormatting:"段落格式",documentStyle:"文件格式",extraKeys:"額外按鍵"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"復原",redo:"取消復原"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}}),{};var e})); +//# sourceMappingURL=summernote-zh-TW.min.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.min.js.map b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.min.js.map new file mode 100644 index 0000000..73475c4 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/lang/summernote-zh-TW.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang/summernote-zh-TW.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,MAAM,WACT,OCVUC,EA0JPC,QAzJCC,OAAOF,EAAEG,WAAWC,KAAM,CAC1B,QAAS,CACPC,KAAM,CACJC,KAAM,KACNC,OAAQ,KACRC,UAAW,KACXC,MAAO,OACPC,OAAQ,KACRC,KAAM,KACNC,cAAe,MACfC,UAAW,KACXC,YAAa,KACbC,KAAM,MAERC,MAAO,CACLA,MAAO,KACPC,OAAQ,OACRC,WAAY,UACZC,WAAY,UACZC,cAAe,UACfC,UAAW,OACXC,WAAY,OACZC,UAAW,OACXC,aAAc,SACdC,YAAa,QACbC,eAAgB,UAChBC,UAAW,QACXC,cAAe,WACfC,UAAW,qBACXC,gBAAiB,QACjBC,gBAAiB,UACjBC,qBAAsB,aACtBC,IAAK,OACLC,OAAQ,OACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,KACPC,UAAW,OACXpB,OAAQ,OACRgB,IAAK,OACLK,UAAW,0CAEbC,KAAM,CACJA,KAAM,KACNtB,OAAQ,OACRuB,OAAQ,OACRC,KAAM,OACNC,cAAe,OACfT,IAAK,OACLU,gBAAiB,UAEnBC,MAAO,CACLA,MAAO,KACPC,YAAa,QACbC,YAAa,QACbC,WAAY,QACZC,YAAa,QACbC,OAAQ,MACRC,OAAQ,MACRC,SAAU,QAEZC,GAAI,CACFnC,OAAQ,OAEVoC,MAAO,CACLA,MAAO,KACPC,EAAG,KACHC,WAAY,OACZC,IAAK,QACLC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,OACJC,GAAI,QAENC,MAAO,CACLC,UAAW,OACXC,QAAS,QAEXC,QAAS,CACPC,KAAM,KACNC,WAAY,MACZC,SAAU,OAEZC,UAAW,CACTA,UAAW,KACXC,QAAS,OACTC,OAAQ,OACRC,KAAM,OACNC,OAAQ,OACRC,MAAO,OACPC,QAAS,QAEXC,MAAO,CACLC,OAAQ,OACRC,KAAM,KACNC,WAAY,KACZC,WAAY,KACZC,YAAa,KACbC,eAAgB,KAChBC,MAAO,KACPC,eAAgB,MAElBC,SAAU,CACRC,UAAW,MACXC,MAAO,KACPC,eAAgB,OAChBC,OAAQ,KACRC,oBAAqB,OACrBC,cAAe,OACfC,UAAW,QAEb1B,KAAM,CACJ,gBAAmB,mBACnB,KAAQ,0BACR,KAAQ,0BACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB2B,QAAS,CACPC,KAAM,KACNC,KAAM,QAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,gC,GD5IhB,ICVUlG","sources":["webpack://summernote/webpack/universalModuleDefinition","webpack://summernote/./src/lang/summernote-zh-TW.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","(function($) {\n $.extend($.summernote.lang, {\n 'zh-TW': {\n font: {\n bold: '粗體',\n italic: '斜體',\n underline: '底線',\n clear: '清除格式',\n height: '行高',\n name: '字體',\n strikethrough: '刪除線',\n subscript: '下標',\n superscript: '上標',\n size: '字號',\n },\n image: {\n image: '圖片',\n insert: '插入圖片',\n resizeFull: '縮放至100%',\n resizeHalf: '縮放至 50%',\n resizeQuarter: '縮放至 25%',\n floatLeft: '靠左浮動',\n floatRight: '靠右浮動',\n floatNone: '取消浮動',\n shapeRounded: '形狀: 圓角',\n shapeCircle: '形狀: 圓',\n shapeThumbnail: '形狀: 縮略圖',\n shapeNone: '形狀: 無',\n dragImageHere: '將圖片拖曳至此處',\n dropImage: 'Drop image or Text',\n selectFromFiles: '從本機上傳',\n maximumFileSize: '文件大小最大值',\n maximumFileSizeError: '文件大小超出最大值。',\n url: '圖片網址',\n remove: '移除圖片',\n original: 'Original',\n },\n video: {\n video: '影片',\n videoLink: '影片連結',\n insert: '插入影片',\n url: '影片網址',\n providers: '(優酷, Instagram, DailyMotion, Youtube等)',\n },\n link: {\n link: '連結',\n insert: '插入連結',\n unlink: '取消連結',\n edit: '編輯連結',\n textToDisplay: '顯示文字',\n url: '連結網址',\n openInNewWindow: '在新視窗開啟',\n },\n table: {\n table: '表格',\n addRowAbove: '上方插入列',\n addRowBelow: '下方插入列',\n addColLeft: '左方插入欄',\n addColRight: '右方插入欄',\n delRow: '刪除列',\n delCol: '刪除欄',\n delTable: '刪除表格',\n },\n hr: {\n insert: '水平線',\n },\n style: {\n style: '樣式',\n p: '一般',\n blockquote: '引用區塊',\n pre: '程式碼區塊',\n h1: '標題 1',\n h2: '標題 2',\n h3: '標題 3',\n h4: '標題 4',\n h5: '標題 5',\n h6: '標題 6',\n },\n lists: {\n unordered: '項目清單',\n ordered: '編號清單',\n },\n options: {\n help: '幫助',\n fullscreen: '全螢幕',\n codeview: '原始碼',\n },\n paragraph: {\n paragraph: '段落',\n outdent: '取消縮排',\n indent: '增加縮排',\n left: '靠右對齊',\n center: '靠中對齊',\n right: '靠右對齊',\n justify: '左右對齊',\n },\n color: {\n recent: '字型顏色',\n more: '更多',\n background: '背景',\n foreground: '字體',\n transparent: '透明',\n setTransparent: '透明',\n reset: '重設',\n resetToDefault: '預設',\n },\n shortcut: {\n shortcuts: '快捷鍵',\n close: '關閉',\n textFormatting: '文字格式',\n action: '動作',\n paragraphFormatting: '段落格式',\n documentStyle: '文件格式',\n extraKeys: '額外按鍵',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: '復原',\n redo: '取消復原',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n },\n });\n})(jQuery);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","$","jQuery","extend","summernote","lang","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","image","insert","resizeFull","resizeHalf","resizeQuarter","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","options","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select"],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/plugin/databasic/summernote-ext-databasic.css b/src/main/resources/static/plugins/summernote/plugin/databasic/summernote-ext-databasic.css new file mode 100644 index 0000000..6232dde --- /dev/null +++ b/src/main/resources/static/plugins/summernote/plugin/databasic/summernote-ext-databasic.css @@ -0,0 +1,16 @@ +.ext-databasic { + position: relative; + display: block; + min-height: 50px; + background-color: cyan; + text-align: center; + padding: 20px; + border: 1px solid white; + border-radius: 10px; +} + +.ext-databasic p { + color: white; + font-size: 1.2em; + margin: 0; +} diff --git a/src/main/resources/static/plugins/summernote/plugin/databasic/summernote-ext-databasic.js b/src/main/resources/static/plugins/summernote/plugin/databasic/summernote-ext-databasic.js new file mode 100644 index 0000000..749a867 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/plugin/databasic/summernote-ext-databasic.js @@ -0,0 +1,291 @@ +(function(factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function($) { + // pull in some summernote core functions + var ui = $.summernote.ui; + var dom = $.summernote.dom; + + // define the popover plugin + var DataBasicPlugin = function(context) { + var self = this; + var options = context.options; + var lang = options.langInfo; + + self.icon = ''; + + // add context menu button for dialog + context.memo('button.databasic', function() { + return ui.button({ + contents: self.icon, + tooltip: lang.databasic.insert, + click: context.createInvokeHandler('databasic.showDialog'), + }).render(); + }); + + // add popover edit button + context.memo('button.databasicDialog', function() { + return ui.button({ + contents: self.icon, + tooltip: lang.databasic.edit, + click: context.createInvokeHandler('databasic.showDialog'), + }).render(); + }); + + // add popover size buttons + context.memo('button.databasicSize100', function() { + return ui.button({ + contents: '100%', + tooltip: lang.image.resizeFull, + click: context.createInvokeHandler('editor.resize', '1'), + }).render(); + }); + context.memo('button.databasicSize50', function() { + return ui.button({ + contents: '50%', + tooltip: lang.image.resizeHalf, + click: context.createInvokeHandler('editor.resize', '0.5'), + }).render(); + }); + context.memo('button.databasicSize25', function() { + return ui.button({ + contents: '25%', + tooltip: lang.image.resizeQuarter, + click: context.createInvokeHandler('editor.resize', '0.25'), + }).render(); + }); + + self.events = { + 'summernote.init': function(we, e) { + // update existing containers + $('data.ext-databasic', e.editable).each(function() { self.setContent($(this)); }); + // TODO: make this an undo snapshot... + }, + 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function() { + self.update(); + }, + 'summernote.dialog.shown': function() { + self.hidePopover(); + }, + }; + + self.initialize = function() { + // create dialog markup + var $container = options.dialogsInBody ? $(document.body) : context.layoutInfo.editor; + + var body = '
      ' + + '' + + '' + + '
      '; + var footer = ''; + + self.$dialog = ui.dialog({ + title: lang.databasic.name, + fade: options.dialogsFade, + body: body, + footer: footer, + }).render().appendTo($container); + + // create popover + self.$popover = ui.popover({ + className: 'ext-databasic-popover', + }).render().appendTo('body'); + var $content = self.$popover.find('.popover-content'); + + context.invoke('buttons.build', $content, options.popover.databasic); + }; + + self.destroy = function() { + self.$popover.remove(); + self.$popover = null; + self.$dialog.remove(); + self.$dialog = null; + }; + + self.update = function() { + // Prevent focusing on editable when invoke('code') is executed + if (!context.invoke('editor.hasFocus')) { + self.hidePopover(); + return; + } + + var rng = context.invoke('editor.createRange'); + var visible = false; + + if (rng.isOnData()) { + var $data = $(rng.sc).closest('data.ext-databasic'); + + if ($data.length) { + var pos = dom.posFromPlaceholder($data[0]); + + self.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top, + }); + + // save editor target to let size buttons resize the container + context.invoke('editor.saveTarget', $data[0]); + + visible = true; + } + } + + // hide if not visible + if (!visible) { + self.hidePopover(); + } + }; + + self.hidePopover = function() { + self.$popover.hide(); + }; + + // define plugin dialog + self.getInfo = function() { + var rng = context.invoke('editor.createRange'); + + if (rng.isOnData()) { + var $data = $(rng.sc).closest('data.ext-databasic'); + + if ($data.length) { + // Get the first node on range(for edit). + return { + node: $data, + test: $data.attr('data-test'), + }; + } + } + + return {}; + }; + + self.setContent = function($node) { + $node.html('

      ' + self.icon + ' ' + lang.databasic.name + ': ' + + $node.attr('data-test') + '

      '); + }; + + self.updateNode = function(info) { + self.setContent(info.node + .attr('data-test', info.test)); + }; + + self.createNode = function(info) { + var $node = $(''); + + if ($node) { + // save node to info structure + info.node = $node; + // insert node into editor dom + context.invoke('editor.insertNode', $node[0]); + } + + return $node; + }; + + self.showDialog = function() { + var info = self.getInfo(); + var newNode = !info.node; + context.invoke('editor.saveRange'); + + self + .openDialog(info) + .then(function(dialogInfo) { + // [workaround] hide dialog before restore range for IE range focus + ui.hideDialog(self.$dialog); + context.invoke('editor.restoreRange'); + + // insert a new node + if (newNode) { + self.createNode(info); + } + + // update info with dialog info + $.extend(info, dialogInfo); + + self.updateNode(info); + }) + .fail(function() { + context.invoke('editor.restoreRange'); + }); + }; + + self.openDialog = function(info) { + return $.Deferred(function(deferred) { + var $inpTest = self.$dialog.find('.ext-databasic-test'); + var $saveBtn = self.$dialog.find('.ext-databasic-save'); + var onKeyup = function(event) { + if (event.keyCode === 13) { + $saveBtn.trigger('click'); + } + }; + + ui.onDialogShown(self.$dialog, function() { + context.triggerEvent('dialog.shown'); + + $inpTest.val(info.test).on('input', function() { + ui.toggleBtn($saveBtn, $inpTest.val()); + }).trigger('focus').on('keyup', onKeyup); + + $saveBtn + .text(info.node ? lang.databasic.edit : lang.databasic.insert) + .click(function(event) { + event.preventDefault(); + + deferred.resolve({ test: $inpTest.val() }); + }); + + // init save button + ui.toggleBtn($saveBtn, $inpTest.val()); + }); + + ui.onDialogHidden(self.$dialog, function() { + $inpTest.off('input keyup'); + $saveBtn.off('click'); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + ui.showDialog(self.$dialog); + }); + }; + }; + + // Extends summernote + $.extend(true, $.summernote, { + plugins: { + databasic: DataBasicPlugin, + }, + + options: { + popover: { + databasic: [ + ['databasic', ['databasicDialog', 'databasicSize100', 'databasicSize50', 'databasicSize25']], + ], + }, + }, + + // add localization texts + lang: { + 'en-US': { + databasic: { + name: 'Basic Data Container', + insert: 'insert basic data container', + edit: 'edit basic data container', + testLabel: 'test input', + }, + }, + }, + + }); +})); diff --git a/src/main/resources/static/plugins/summernote/plugin/hello/summernote-ext-hello.js b/src/main/resources/static/plugins/summernote/plugin/hello/summernote-ext-hello.js new file mode 100644 index 0000000..f95d302 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/plugin/hello/summernote-ext-hello.js @@ -0,0 +1,82 @@ +(function(factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function($) { + // Extends plugins for adding hello. + // - plugin is external module for customizing. + $.extend($.summernote.plugins, { + /** + * @param {Object} context - context object has status of editor. + */ + 'hello': function(context) { + var self = this; + + // ui has renders to build ui elements. + // - you can create a button with `ui.button` + var ui = $.summernote.ui; + + // add hello button + context.memo('button.hello', function() { + // create button + var button = ui.button({ + contents: ' Hello', + tooltip: 'hello', + click: function() { + self.$panel.show(); + self.$panel.hide(500); + // invoke insertText method with 'hello' on editor module. + context.invoke('editor.insertText', 'hello'); + }, + }); + + // create jQuery object from button instance. + var $hello = button.render(); + return $hello; + }); + + // This events will be attached when editor is initialized. + this.events = { + // This will be called after modules are initialized. + 'summernote.init': function(we, e) { + // eslint-disable-next-line + console.log('summernote initialized', we, e); + }, + // This will be called when user releases a key on editable. + 'summernote.keyup': function(we, e) { + // eslint-disable-next-line + console.log('summernote keyup', we, e); + }, + }; + + // This method will be called when editor is initialized by $('..').summernote(); + // You can create elements for plugin + this.initialize = function() { + this.$panel = $('
      ').css({ + position: 'absolute', + width: 100, + height: 100, + left: '50%', + top: '50%', + background: 'red', + }).hide(); + + this.$panel.appendTo('body'); + }; + + // This methods will be called when editor is destroyed by $('..').summernote('destroy'); + // You should remove elements on `initialize`. + this.destroy = function() { + this.$panel.remove(); + this.$panel = null; + }; + }, + }); +})); diff --git a/src/main/resources/static/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.js b/src/main/resources/static/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.js new file mode 100644 index 0000000..d80eb19 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.js @@ -0,0 +1,311 @@ +(function(factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function($) { + $.extend($.summernote.plugins, { + 'specialchars': function(context) { + var self = this; + var ui = $.summernote.ui; + + var $editor = context.layoutInfo.editor; + var options = context.options; + var lang = options.langInfo; + + var KEY = { + UP: 38, + DOWN: 40, + LEFT: 37, + RIGHT: 39, + ENTER: 13, + }; + var COLUMN_LENGTH = 12; + var COLUMN_WIDTH = 35; + + var currentColumn = 0; + var currentRow = 0; + var totalColumn = 0; + var totalRow = 0; + + // special characters data set + var specialCharDataSet = [ + '"', '&', '<', '>', '¡', '¢', + '£', '¤', '¥', '¦', '§', + '¨', '©', 'ª', '«', '¬', + '®', '¯', '°', '±', '²', + '³', '´', 'µ', '¶', '·', + '¸', '¹', 'º', '»', '¼', + '½', '¾', '¿', '×', '÷', + 'ƒ', 'ˆ', '˜', '–', '—', + '‘', '’', '‚', '“', '”', + '„', '†', '‡', '•', '…', + '‰', '′', '″', '‹', '›', + '‾', '⁄', '€', 'ℑ', '℘', + 'ℜ', '™', 'ℵ', '←', '↑', + '→', '↓', '↔', '↵', '⇐', + '⇑', '⇒', '⇓', '⇔', '∀', + '∂', '∃', '∅', '∇', '∈', + '∉', '∋', '∏', '∑', '−', + '∗', '√', '∝', '∞', '∠', + '∧', '∨', '∩', '∪', '∫', + '∴', '∼', '≅', '≈', '≠', + '≡', '≤', '≥', '⊂', '⊃', + '⊄', '⊆', '⊇', '⊕', '⊗', + '⊥', '⋅', '⌈', '⌉', '⌊', + '⌋', '◊', '♠', '♣', '♥', + '♦', + ]; + + context.memo('button.specialchars', function() { + return ui.button({ + contents: '', + tooltip: lang.specialChar.specialChar, + click: function() { + self.show(); + }, + }).render(); + }); + + /** + * Make Special Characters Table + * + * @member plugin.specialChar + * @private + * @return {jQuery} + */ + this.makeSpecialCharSetTable = function() { + var $table = $('
      '); + $.each(specialCharDataSet, function(idx, text) { + var $td = $('').addClass('note-specialchar-node'); + var $tr = (idx % COLUMN_LENGTH === 0) ? $('') : $table.find('tr').last(); + + var $button = ui.button({ + callback: function($node) { + $node.html(text); + $node.attr('title', text); + $node.attr('data-value', encodeURIComponent(text)); + $node.css({ + width: COLUMN_WIDTH, + 'margin-right': '2px', + 'margin-bottom': '2px', + }); + }, + }).render(); + + $td.append($button); + + $tr.append($td); + if (idx % COLUMN_LENGTH === 0) { + $table.append($tr); + } + }); + + totalRow = $table.find('tr').length; + totalColumn = COLUMN_LENGTH; + + return $table; + }; + + this.initialize = function() { + var $container = options.dialogsInBody ? $(document.body) : $editor; + + var body = '
      ' + this.makeSpecialCharSetTable()[0].outerHTML + '
      '; + + this.$dialog = ui.dialog({ + title: lang.specialChar.select, + body: body, + }).render().appendTo($container); + }; + + this.show = function() { + var text = context.invoke('editor.getSelectedText'); + context.invoke('editor.saveRange'); + this.showSpecialCharDialog(text).then(function(selectChar) { + context.invoke('editor.restoreRange'); + + // build node + var $node = $('').html(selectChar)[0]; + + if ($node) { + // insert video node + context.invoke('editor.insertNode', $node); + } + }).fail(function() { + context.invoke('editor.restoreRange'); + }); + }; + + /** + * show image dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showSpecialCharDialog = function(text) { + return $.Deferred(function(deferred) { + var $specialCharDialog = self.$dialog; + var $specialCharNode = $specialCharDialog.find('.note-specialchar-node'); + var $selectedNode = null; + var ARROW_KEYS = [KEY.UP, KEY.DOWN, KEY.LEFT, KEY.RIGHT]; + var ENTER_KEY = KEY.ENTER; + + function addActiveClass($target) { + if (!$target) { + return; + } + $target.find('button').addClass('active'); + $selectedNode = $target; + } + + function removeActiveClass($target) { + $target.find('button').removeClass('active'); + $selectedNode = null; + } + + // find next node + function findNextNode(row, column) { + var findNode = null; + $.each($specialCharNode, function(idx, $node) { + var findRow = Math.ceil((idx + 1) / COLUMN_LENGTH); + var findColumn = ((idx + 1) % COLUMN_LENGTH === 0) ? COLUMN_LENGTH : (idx + 1) % COLUMN_LENGTH; + if (findRow === row && findColumn === column) { + findNode = $node; + return false; + } + }); + return $(findNode); + } + + function arrowKeyHandler(keyCode) { + // left, right, up, down key + var $nextNode; + var lastRowColumnLength = $specialCharNode.length % totalColumn; + + if (KEY.LEFT === keyCode) { + if (currentColumn > 1) { + currentColumn = currentColumn - 1; + } else if (currentRow === 1 && currentColumn === 1) { + currentColumn = lastRowColumnLength; + currentRow = totalRow; + } else { + currentColumn = totalColumn; + currentRow = currentRow - 1; + } + } else if (KEY.RIGHT === keyCode) { + if (currentRow === totalRow && lastRowColumnLength === currentColumn) { + currentColumn = 1; + currentRow = 1; + } else if (currentColumn < totalColumn) { + currentColumn = currentColumn + 1; + } else { + currentColumn = 1; + currentRow = currentRow + 1; + } + } else if (KEY.UP === keyCode) { + if (currentRow === 1 && lastRowColumnLength < currentColumn) { + currentRow = totalRow - 1; + } else { + currentRow = currentRow - 1; + } + } else if (KEY.DOWN === keyCode) { + currentRow = currentRow + 1; + } + + if (currentRow === totalRow && currentColumn > lastRowColumnLength) { + currentRow = 1; + } else if (currentRow > totalRow) { + currentRow = 1; + } else if (currentRow < 1) { + currentRow = totalRow; + } + + $nextNode = findNextNode(currentRow, currentColumn); + + if ($nextNode) { + removeActiveClass($selectedNode); + addActiveClass($nextNode); + } + } + + function enterKeyHandler() { + if (!$selectedNode) { + return; + } + + deferred.resolve(decodeURIComponent($selectedNode.find('button').attr('data-value'))); + $specialCharDialog.modal('hide'); + } + + function keyDownEventHandler(event) { + event.preventDefault(); + var keyCode = event.keyCode; + if (keyCode === undefined || keyCode === null) { + return; + } + // check arrowKeys match + if (ARROW_KEYS.indexOf(keyCode) > -1) { + if ($selectedNode === null) { + addActiveClass($specialCharNode.eq(0)); + currentColumn = 1; + currentRow = 1; + return; + } + arrowKeyHandler(keyCode); + } else if (keyCode === ENTER_KEY) { + enterKeyHandler(); + } + return false; + } + + // remove class + removeActiveClass($specialCharNode); + + // find selected node + if (text) { + for (var i = 0; i < $specialCharNode.length; i++) { + var $checkNode = $($specialCharNode[i]); + if ($checkNode.text() === text) { + addActiveClass($checkNode); + currentRow = Math.ceil((i + 1) / COLUMN_LENGTH); + currentColumn = (i + 1) % COLUMN_LENGTH; + } + } + } + + ui.onDialogShown(self.$dialog, function() { + $(document).on('keydown', keyDownEventHandler); + + self.$dialog.find('button').tooltip(); + + $specialCharNode.on('click', function(event) { + event.preventDefault(); + deferred.resolve(decodeURIComponent($(event.currentTarget).find('button').attr('data-value'))); + ui.hideDialog(self.$dialog); + }); + }); + + ui.onDialogHidden(self.$dialog, function() { + $specialCharNode.off('click'); + + self.$dialog.find('button').tooltip(); + + $(document).off('keydown', keyDownEventHandler); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + ui.showDialog(self.$dialog); + }); + }; + }, + }); +})); diff --git a/src/main/resources/static/plugins/summernote/summernote-cleaner.js b/src/main/resources/static/plugins/summernote/summernote-cleaner.js new file mode 100644 index 0000000..da0f827 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/summernote-cleaner.js @@ -0,0 +1,247 @@ +/* https://github.com/DiemenDesign/summernote-cleaner */ +/* Version: 1.0.9 */ +(function(factory) { + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (typeof module === 'object'&&module.exports) { + module.exports = factory(require('jquery')); + } else { + factory(window.jQuery); + } +} +(function ($) { + $.extend(true, $.summernote.lang, { + 'en-US': { + cleaner: { + tooltip: 'Cleaner', + not: 'Text has been cleaned!', + limitText: 'Text', + limitHTML: 'HTML' + } + }, + 'de-DE': { + cleaner: { + tooltip: 'Bereinigen', + not: 'Inhalt wurde bereinigt!', + limitText: 'Text', + limitHTML: 'HTML' + } + }, + }); + $.extend( $.summernote.options, { + cleaner: { + action: 'both', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options. + icon: '', + keepHtml: true, + keepTagContents: ['span'], //Remove tags and keep the contents + badTags: ['applet', 'col', 'colgroup', 'embed', 'noframes', 'noscript', 'script', 'style', 'title', 'meta', 'link', 'head'], //Remove full tags with contents + badAttributes: ['bgcolor', 'border', 'height', 'cellpadding', 'cellspacing', 'lang', 'start', 'style', 'valign', 'width', 'data-(.*?)'], //Remove attributes from remaining tags + limitChars: 0, // 0|# 0 disables option + limitDisplay: 'both', // none|text|html|both + limitStop: false, // true/false + notTimeOut: 850, //time before status message is hidden in miliseconds + keepImages: true, + imagePlaceholder: 'https://via.placeholder.com/200' + } + }); + $.extend( $.summernote.plugins, { + 'cleaner': function (context) { + var self = this, + ui = $.summernote.ui, + $note = context.layoutInfo.note, + $editor = context.layoutInfo.editor, + options = context.options, + lang = options.langInfo; + if (options.cleaner.action == 'both' || options.cleaner.action == 'button') { + context.memo('button.cleaner', function () { + var button = ui.button({ + contents: options.cleaner.icon, + container: options.container, + tooltip: lang.cleaner.tooltip, + placement: options.placement, + click: function () { + if ($note.summernote('createRange').toString()) + $note.summernote('pasteHTML', $note.summernote('createRange').toString()); + else + $note.summernote('code', cleanPaste($note.summernote('code'), options.cleaner.badTags, options.cleaner.keepTagContents, options.cleaner.badAttributes, options.cleaner.keepImages, options.cleaner.imagePlaceholder, true)); + if ($editor.find('.note-status-output').length > 0) + $editor.find('.note-status-output').html(lang.cleaner.not); + } + }); + return button.render(); + }); + } + this.events = { + 'summernote.init': function () { + if (options.cleaner.limitChars != 0 || options.cleaner.limitDisplay != 'none'){ + var textLength = $editor.find(".note-editable").text().replace(/(<([^>]+)>)/ig, "").replace(/( )/," "); + var codeLength = $editor.find('.note-editable').html(); + var lengthStatus = ''; + if (textLength.length > options.cleaner.limitChars&&options.cleaner.limitChars > 0) + lengthStatus += 'note-text-danger">'; + else + lengthStatus += '">'; + if (options.cleaner.limitDisplay == 'text' || options.cleaner.limitDisplay == 'both') + lengthStatus += lang.cleaner.limitText + ': ' + textLength.length; + if (options.cleaner.limitDisplay == 'both') + lengthStatus += ' / '; + if (options.cleaner.limitDisplay == 'html' || options.cleaner.limitDisplay == 'both') + lengthStatus += lang.cleaner.limitHTML + ': ' + codeLength.length; + $editor.find('.note-status-output').html(']+)>)/ig, "").replace(/( )/, " "); + var codeLength = $editor.find('.note-editable').html(); + var lengthStatus = ''; + if (options.cleaner.limitStop == true && textLength.length >= options.cleaner.limitChars) { + var key = event.keyCode; + allowed_keys = [8, 37, 38, 39, 40, 46]; + if ($.inArray(key,allowed_keys) != -1){ + $editor.find('.cleanerLimit').removeClass('note-text-danger'); + return true; + } else { + $editor.find('.cleanerLimit').addClass('note-text-danger'); + event.preventDefault(); + event.stopPropagation(); + } + } else { + if (textLength.length > options.cleaner.limitChars && options.cleaner.limitChars > 0) + lengthStatus += 'note-text-danger">'; + else + lengthStatus += '">'; + if (options.cleaner.limitDisplay == 'text' || options.cleaner.limitDisplay == 'both') + lengthStatus += lang.cleaner.limitText + ': '+textLength.length; + if (options.cleaner.limitDisplay == 'both') + lengthStatus += ' / '; + if (options.cleaner.limitDisplay == 'html' || options.cleaner.limitDisplay == 'both') + lengthStatus += lang.cleaner.limitHTML + ': ' + codeLength.length; + $editor.find('.note-status-output').html(' 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./); + var ffox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; + var text; var isHtmlData = false; + if (msie) + text = window.clipboardData.getData("Text"); + else + { + var dataType = 'text/plain'; + /*only get the html data if its avaialble else use plain text*/ + if (options.cleaner.keepHtml && event.originalEvent.clipboardData.types.indexOf('text/html') > -1) { + dataType = 'text/html'; + isHtmlData = true; + } + text = event.originalEvent.clipboardData.getData(dataType); + } + if (text) { + /*clean the text first to prevent issues where code view wasn't updating correctly*/ + var cleanedContent = cleanPaste(text, options.cleaner.badTags, options.cleaner.keepTagContents, options.cleaner.badAttributes, options.cleaner.keepImages, options.cleaner.imagePlaceholder, isHtmlData); + if (msie || ffox) { + setTimeout(function () { + $note.summernote('pasteHTML', cleanedContent); + }, 1); + } else { + $note.summernote('pasteHTML', cleanedContent); + } + + if ($editor.find('.note-status-output').length > 0) { + $editor.find('.note-status-output').html(lang.cleaner.not); + /*now set a timeout to clear out the message */ + setTimeout(function(){ + if($editor.find('.note-status-output').html() == lang.cleaner.not){ + /*lets fade out the text, then clear it and show the control ready for next time */ + $editor.find('.note-status-output').fadeOut(function(){ + $(this).html(""); + $(this).fadeIn(); + }); + } + }, options.cleaner.notTimeOut) + } + } + } + } + } + var cleanPaste = function(input, badTags, keepTagContents, badAttributes, keepImages, imagePlaceholder, isHtmlData) { + if(isHtmlData) { + return cleanHtmlPaste(input, badTags, keepTagContents, badAttributes, keepImages, imagePlaceholder); + } else { + return cleanTextPaste(input); + } + }; + + var cleanTextPaste = function(input) { + var newLines = /(\r\n|\r|\n)/g; + /*lets only replace < and > as these are the culprit for HTML tag recognition */ + let inputEscapedHtml = input.replace('<', '<').replace('>', '>'); + var parsedInput = inputEscapedHtml.split(newLines); + if(parsedInput.length === 1) { return inputEscapedHtml; } + var output = ""; + /*for larger blocks of text (such as multiple paragraphs) match summernote markup */ + for (let contentIndex = 0; contentIndex < parsedInput.length; contentIndex++) { + const element = parsedInput[contentIndex]; + if(!newLines.test(element)) { + var line = element == '' ? '
      ' : element; + output += '

      ' + line + '

      ' + } + } + return output; + } + + var cleanHtmlPaste = function(input, badTags, keepTagContents, badAttributes, keepImages, imagePlaceholder) { + var stringStripper = /( class=(")?Mso[a-zA-Z]+(")?)/gmi; + /*remove MS office class crud*/ + var output = input.replace(stringStripper, ''); + var commentStripper = new RegExp('', 'gmi'); + output = output.replace(commentStripper, ''); + /*remove MS office comment if else crud */ + var commentIfStripper = new RegExp('\v]*>', 'gmi'); + output = output.replace(commentIfStripper, ''); + var tagStripper = new RegExp('<(/)*(\\?xml:|st1:|o:|v:)[^>\v]*>', 'gmi'); + if (!keepImages) { + output = output.replace(/ src="(.*?)"/gmi, ' src="' + imagePlaceholder + '"'); + } + output = output.replace(/ name="(.*?)"/gmi, ' data-title="$1" alt="$1"'); + /*remove MS office tag crud*/ + output = output.replace(tagStripper, ''); + for (var i = 0; i < badTags.length; i++) { + const badTag = badTags[i]; + /*remove the tag and its contents*/ + tagStripper = new RegExp('<' + badTag + '(.|\r|\n)*\v]*>', 'gmi'); + output = output.replace(tagStripper, ''); + /*remove tags with no ending tag or rogue ending tags*/ + var singletonTagStripper = new RegExp('\v]*>', 'gmi'); + output = output.replace(singletonTagStripper, ''); + } + for (var i = 0; i < keepTagContents.length; i++) { + /*remove tags only*/ + tagStripper = new RegExp('\v]*>', 'gmi'); + output = output.replace(tagStripper, ' '); + } + for (var i = 0; i < badAttributes.length; i++) { + const badAttribute = badAttributes[i]; + /*for attribute matching ensure we match a new line or some kind of space to prevents partial matching for attributes + (e.g. color would modify bgcolor tag to be just bg) */ + var attributeWithSpeechMarksStripper = new RegExp('(\s|\r\n|\r|\n| )' + badAttribute + '="[^"\v]*"', 'gmi'); + output = output.replace(attributeWithSpeechMarksStripper, ''); + var attributeWithApostropheStripper = new RegExp('(\s|\r\n|\r|\n| )' + badAttribute + "='[^'\v]*'", 'gmi'); + output = output.replace(attributeWithApostropheStripper, ''); + } + output = output.replace(/ align="(.*?)"/gi, ' class="text-$1"'); + output = output.replace(/ class="western"/gi, ''); + output = output.replace(/ class=""/gi, ''); + output = output.replace(/(.*?)<\/b>/gi, '$1'); + output = output.replace(/(.*?)<\/i>/gi, '$1'); + output = output.replace(/\s{2,}/g, ' ').trim(); + return output; + } + } + }); +})); \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/summernote-lite.css b/src/main/resources/static/plugins/summernote/summernote-lite.css new file mode 100644 index 0000000..5ba6dd0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/summernote-lite.css @@ -0,0 +1,1505 @@ +/*! + * + * Super simple WYSIWYG editor v0.8.19 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong and contributors + * Summernote may be freely distributed under the MIT license. + * + * Date: 2021-10-13T19:41Z + * + */ +@font-face { + font-family: "summernote"; + font-style: normal; + font-weight: 400; + font-display: auto; + src: url(/fonts/summernote.eot?#iefix) format("embedded-opentype"), url(/fonts/summernote.woff2) format("woff2"), url(/fonts/summernote.woff) format("woff"), url(/fonts/summernote.ttf) format("truetype"); +} +[class^=note-icon]:before, +[class*=" note-icon"]:before { + display: inline-block; + font-family: "summernote"; + font-style: normal; + font-size: inherit; + text-decoration: inherit; + text-rendering: auto; + text-transform: none; + vertical-align: middle; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + speak: none; +} + +.note-icon-fw { + text-align: center; + width: 1.25em; +} + +.note-icon-border { + border: solid 0.08em #eee; + border-radius: 0.1em; + padding: 0.2em 0.25em 0.15em; +} + +.note-icon-pull-left { + float: left; +} + +.note-icon-pull-right { + float: right; +} + +.note-icon.note-icon-pull-left { + margin-right: 0.3em; +} +.note-icon.note-icon-pull-right { + margin-left: 0.3em; +} + +.note-icon-align::before { + content: "\ea01"; +} + +.note-icon-align-center::before { + content: "\ea02"; +} + +.note-icon-align-indent::before { + content: "\ea03"; +} + +.note-icon-align-justify::before { + content: "\ea04"; +} + +.note-icon-align-left::before { + content: "\ea05"; +} + +.note-icon-align-outdent::before { + content: "\ea06"; +} + +.note-icon-align-right::before { + content: "\ea07"; +} + +.note-icon-arrow-circle-down::before { + content: "\ea08"; +} + +.note-icon-arrow-circle-left::before { + content: "\ea09"; +} + +.note-icon-arrow-circle-right::before { + content: "\ea0a"; +} + +.note-icon-arrow-circle-up::before { + content: "\ea0b"; +} + +.note-icon-arrows-alt::before { + content: "\ea0c"; +} + +.note-icon-arrows-h::before { + content: "\ea0d"; +} + +.note-icon-arrows-v::before { + content: "\ea0e"; +} + +.note-icon-bold::before { + content: "\ea0f"; +} + +.note-icon-caret::before { + content: "\ea10"; +} + +.note-icon-chain-broken::before { + content: "\ea11"; +} + +.note-icon-circle::before { + content: "\ea12"; +} + +.note-icon-close::before { + content: "\ea13"; +} + +.note-icon-code::before { + content: "\ea14"; +} + +.note-icon-col-after::before { + content: "\ea15"; +} + +.note-icon-col-before::before { + content: "\ea16"; +} + +.note-icon-col-remove::before { + content: "\ea17"; +} + +.note-icon-eraser::before { + content: "\ea18"; +} + +.note-icon-float-left::before { + content: "\ea19"; +} + +.note-icon-float-none::before { + content: "\ea1a"; +} + +.note-icon-float-right::before { + content: "\ea1b"; +} + +.note-icon-font::before { + content: "\ea1c"; +} + +.note-icon-frame::before { + content: "\ea1d"; +} + +.note-icon-italic::before { + content: "\ea1e"; +} + +.note-icon-link::before { + content: "\ea1f"; +} + +.note-icon-magic::before { + content: "\ea20"; +} + +.note-icon-menu-check::before { + content: "\ea21"; +} + +.note-icon-minus::before { + content: "\ea22"; +} + +.note-icon-orderedlist::before { + content: "\ea23"; +} + +.note-icon-pencil::before { + content: "\ea24"; +} + +.note-icon-picture::before { + content: "\ea25"; +} + +.note-icon-question::before { + content: "\ea26"; +} + +.note-icon-redo::before { + content: "\ea27"; +} + +.note-icon-rollback::before { + content: "\ea28"; +} + +.note-icon-row-above::before { + content: "\ea29"; +} + +.note-icon-row-below::before { + content: "\ea2a"; +} + +.note-icon-row-remove::before { + content: "\ea2b"; +} + +.note-icon-special-character::before { + content: "\ea2c"; +} + +.note-icon-square::before { + content: "\ea2d"; +} + +.note-icon-strikethrough::before { + content: "\ea2e"; +} + +.note-icon-subscript::before { + content: "\ea2f"; +} + +.note-icon-summernote::before { + content: "\ea30"; +} + +.note-icon-superscript::before { + content: "\ea31"; +} + +.note-icon-table::before { + content: "\ea32"; +} + +.note-icon-text-height::before { + content: "\ea33"; +} + +.note-icon-trash::before { + content: "\ea34"; +} + +.note-icon-underline::before { + content: "\ea35"; +} + +.note-icon-undo::before { + content: "\ea36"; +} + +.note-icon-unorderedlist::before { + content: "\ea37"; +} + +.note-icon-video::before { + content: "\ea38"; +} + +.note-frame { + -ms-box-sizing: border-box; + box-sizing: border-box; + color: #000; + font-family: sans-serif; + border-radius: 4px; +} + +.note-toolbar { + padding: 10px 5px; + border-bottom: 1px solid #e2e2e2; + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.note-btn-group { + position: relative; + display: inline-block; + margin-right: 8px; +} +.note-btn-group > .note-btn-group { + margin-right: 0; +} +.note-btn-group > .note-btn:first-child { + margin-left: 0; +} +.note-btn-group .note-btn + .note-btn, +.note-btn-group .note-btn + .note-btn-group, +.note-btn-group .note-btn-group + .note-btn, +.note-btn-group .note-btn-group + .note-btn-group { + margin-left: -1px; +} +.note-btn-group > .note-btn:not(:first-child), +.note-btn-group > .note-btn-group:not(:first-child) > .note-btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.note-btn-group > .note-btn:not(:last-child):not(.dropdown-toggle), +.note-btn-group > .note-btn-group:not(:last-child) > .note-btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.note-btn-group.open > .note-dropdown { + display: block; +} + +.note-btn { + display: inline-block; + font-weight: 400; + margin-bottom: 0; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid #dae0e5; + white-space: nowrap; + outline: 0; + color: #333; + background-color: #fff; + border-color: #dae0e5; + padding: 5px 10px; + font-size: 14px; + line-height: 1.4; + border-radius: 3px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.note-btn:focus, .note-btn.focus { + color: #333; + background-color: #ebebeb; + border-color: #dae0e5; +} +.note-btn:hover { + color: #333; + background-color: #ebebeb; + border-color: #dae0e5; +} +.note-btn.disabled:focus, .note-btn.disabled.focus, .note-btn[disabled]:focus, .note-btn[disabled].focus, fieldset[disabled] .note-btn:focus, fieldset[disabled] .note-btn.focus { + background-color: #fff; + border-color: #dae0e5; +} +.note-btn:hover, .note-btn:focus, .note-btn.focus { + color: #333; + text-decoration: none; + border: 1px solid #dae0e5; + background-color: #ebebeb; + outline: 0; + border-radius: 1px; +} +.note-btn:active, .note-btn.active { + outline: 0; + background-image: none; + color: #333; + text-decoration: none; + border: 1px solid #dae0e5; + background-color: #ebebeb; + outline: 0; + border-radius: 1px; + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.note-btn.disabled, .note-btn[disabled], fieldset[disabled] .note-btn { + cursor: not-allowed; + -webkit-opacity: 0.65; + -khtml-opacity: 0.65; + -moz-opacity: 0.65; + opacity: 0.65; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=65); + filter: alpha(opacity=65); + box-shadow: none; +} +.note-btn > span.note-icon-caret:first-child { + margin-left: -1px; +} +.note-btn > span.note-icon-caret:nth-child(2) { + padding-left: 3px; + margin-right: -5px; +} + +.note-btn-primary { + background: #fa6362; + color: #fff; +} +.note-btn-primary:hover, .note-btn-primary:focus, .note-btn-primary.focus { + color: #fff; + text-decoration: none; + border: 1px solid #dae0e5; + background-color: #fa6362; + border-radius: 1px; +} + +.note-btn-block { + display: block; + width: 100%; +} + +.note-btn-block + .note-btn-block { + margin-top: 5px; +} + +input[type=submit].note-btn-block, +input[type=reset].note-btn-block, +input[type=button].note-btn-block { + width: 100%; +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.close { + float: right; + font-size: 21px; + line-height: 1; + color: #000; + opacity: 0.2; +} + +.close:hover { + -webkit-opacity: 1; + -khtml-opacity: 1; + -moz-opacity: 1; + -ms-filter: alpha(opacity=100); + filter: alpha(opacity=100); + opacity: 1; +} + +.note-dropdown { + position: relative; +} + +.note-color .dropdown-toggle { + width: 30px; + padding-left: 5px; +} + +.note-dropdown-menu { + display: none; + min-width: 100px; + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + text-align: left; + background: #fff; + border: 1px solid #e2e2e2; + padding: 5px; + background-clip: padding-box; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06); +} +.note-dropdown-menu > *:last-child { + margin-right: 0; +} + +.note-btn-group.open .note-dropdown-menu { + display: block; +} + +.note-dropdown-item { + display: block; +} +.note-dropdown-item:hover { + background-color: #ebebeb; +} + +a.note-dropdown-item, +a.note-dropdown-item:hover { + margin: 5px 0; + color: #000; + text-decoration: none; +} + +.note-modal { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 1050; + -webkit-opacity: 1; + -khtml-opacity: 1; + -moz-opacity: 1; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100); + filter: alpha(opacity=100); + display: none; +} +.note-modal.open { + display: block; +} + +.note-modal-content { + position: relative; + width: auto; + margin: 30px 20px; + border: 1px solid rgba(0, 0, 0, 0.2); + background: #fff; + background-clip: border-box; + outline: 0; + border-radius: 5px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); +} + +.note-modal-header { + padding: 10px 20px; + border: 1px solid #ededef; +} + +.note-modal-body { + position: relative; + padding: 20px 30px; +} +.note-modal-body kbd { + border-radius: 2px; + background-color: #000; + color: #fff; + padding: 3px 5px; + font-weight: 700; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.note-modal-footer { + height: 40px; + padding: 10px; + text-align: center; +} + +.note-modal-footer a { + color: #337ab7; + text-decoration: none; +} + +.note-modal-footer a:hover, +.note-modal-footer a:focus { + color: #23527c; + text-decoration: underline; +} + +.note-modal-footer .note-btn { + float: right; +} + +.note-modal-title { + font-size: 20px; + color: #42515f; + margin: 0; + line-height: 1.4; +} + +.note-modal-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 1040; + background: #000; + -webkit-opacity: 0.5; + -khtml-opacity: 0.5; + -moz-opacity: 0.5; + opacity: 0.5; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50); + filter: alpha(opacity=50); + display: none; +} +.note-modal-backdrop.open { + display: block; +} + +@media (min-width: 768px) { + .note-modal-content { + width: 600px; + margin: 30px auto; + } +} +@media (min-width: 992px) { + .note-modal-content-large { + width: 900px; + } +} +.note-modal .note-help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +.note-modal .note-nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.note-modal .note-nav-link { + display: block; + padding: 0.5rem 1rem; + color: #007bff; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +.note-modal .note-nav-link:focus, +.note-modal .note-nav-link:hover { + color: #0056b3; + text-decoration: none; +} +.note-modal .note-nav-link.disabled { + color: #868e96; +} +.note-modal .note-nav-tabs { + border-bottom: 1px solid #ddd; +} +.note-modal .note-nav-tabs .note-nav-item { + margin-bottom: -1px; +} +.note-modal .note-nav-tabs .note-nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.note-modal .note-nav-tabs .note-nav-link:focus, +.note-modal .note-nav-tabs .note-nav-link:hover { + border-color: #e9ecef #e9ecef #ddd; +} +.note-modal .note-nav-tabs .note-nav-link.disabled { + color: #868e96; + background-color: transparent; + border-color: transparent; +} +.note-modal .note-nav-tabs .note-nav-item.show .note-nav-link { + color: #495057; + background-color: #fff; + border-color: #ddd #ddd #fff; +} +.note-modal .note-tab-content { + margin: 15px auto; +} +.note-modal .note-tab-content > .note-tab-pane:target ~ .note-tab-pane:last-child, +.note-modal .note-tab-content > .note-tab-pane { + display: none; +} +.note-modal .note-tab-content > :last-child, +.note-modal .note-tab-content > .note-tab-pane:target { + display: block; +} + +.note-form-group { + padding-bottom: 20px; +} + +.note-form-group:last-child { + padding-bottom: 0; +} + +.note-form-label { + display: block; + width: 100%; + font-size: 16px; + color: #42515f; + margin-bottom: 10px; + font-weight: 700; +} + +.note-input { + width: 100%; + display: block; + border: 1px solid #ededef; + background: #fff; + outline: 0; + padding: 6px 4px; + font-size: 14px; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.note-input::-webkit-input-placeholder { + color: #eeeeee; +} + +.note-input:-moz-placeholder { + /* Firefox 18- */ + color: #eeeeee; +} + +.note-input::-moz-placeholder { + /* Firefox 19+ */ + color: #eeeeee; +} + +.note-input:-ms-input-placeholder { + color: #eeeeee; +} + +.note-tooltip { + position: absolute; + z-index: 1070; + display: block; + font-size: 13px; + transition: opacity 0.15s; + -webkit-opacity: 0; + -khtml-opacity: 0; + -moz-opacity: 0; + opacity: 0; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0); + filter: alpha(opacity=0); +} +.note-tooltip.in { + -webkit-opacity: 0.9; + -khtml-opacity: 0.9; + -moz-opacity: 0.9; + opacity: 0.9; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=90); + filter: alpha(opacity=90); +} +.note-tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.note-tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.note-tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.note-tooltip.left { + margin-left: -3px; + padding: 0 5px; +} + +.note-tooltip.bottom .note-tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.note-tooltip.top .note-tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.note-tooltip.right .note-tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.note-tooltip.left .note-tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} + +.note-tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.note-tooltip-content { + max-width: 200px; + font-family: sans-serif; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; +} + +.note-popover { + position: absolute; + z-index: 1060; + display: block; + font-size: 13px; + font-family: sans-serif; + display: none; + background: #ffffff; + border: 1px solid rgba(0, 0, 0, 0.2); + border: 1px solid #ccc; +} +.note-popover.in { + display: block; +} +.note-popover.top { + margin-top: -10px; + padding: 5px 0; +} +.note-popover.right { + margin-left: 10px; + padding: 0 5px; +} +.note-popover.bottom { + margin-top: 10px; + padding: 5px 0; +} +.note-popover.left { + margin-left: -10px; + padding: 0 5px; +} + +.note-popover.bottom .note-popover-arrow { + top: -11px; + left: 20px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); +} +.note-popover.bottom .note-popover-arrow::after { + top: 1px; + margin-left: -10px; + content: "\0020"; + border-top-width: 0; + border-bottom-color: #fff; +} +.note-popover.top .note-popover-arrow { + bottom: -11px; + left: 20px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); +} +.note-popover.top .note-popover-arrow::after { + bottom: 1px; + margin-left: -10px; + content: "\0020"; + border-bottom-width: 0; + border-top-color: #fff; +} +.note-popover.right .note-popover-arrow { + top: 50%; + left: -11px; + margin-top: -10px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.note-popover.right .note-popover-arrow::after { + left: 1px; + margin-top: -10px; + content: "\0020"; + border-left-width: 0; + border-right-color: #fff; +} +.note-popover.left .note-popover-arrow { + top: 50%; + right: -11px; + margin-top: -10px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.note-popover.left .note-popover-arrow::after { + right: 1px; + margin-top: -10px; + content: "\0020"; + border-right-width: 0; + border-left-color: #fff; +} + +.note-popover-arrow { + position: absolute; + width: 0; + height: 0; + border: 11px solid transparent; +} +.note-popover-arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + content: "\0020"; + border-width: 10px; +} + +.note-popover-content { + /*max-width: $popover-max-width;*/ + padding: 3px 8px; + color: #000; + text-align: center; + background-color: #ffffff; + min-width: 100px; + min-height: 30px; +} + +/* Theme Variables + ------------------------------------------ */ +/* Layout + ------------------------------------------ */ +.note-editor { + position: relative; +} +.note-editor .note-dropzone { + position: absolute; + display: none; + z-index: 100; + color: lightskyblue; + background-color: #fff; + opacity: 0.95; +} +.note-editor .note-dropzone .note-dropzone-message { + display: table-cell; + vertical-align: middle; + text-align: center; + font-size: 28px; + font-weight: 700; +} +.note-editor .note-dropzone.hover { + color: #098ddf; +} +.note-editor.dragover .note-dropzone { + display: table; +} +.note-editor .note-editing-area { + position: relative; +} +.note-editor .note-editing-area .note-editable { + outline: none; +} +.note-editor .note-editing-area .note-editable sup { + vertical-align: super; +} +.note-editor .note-editing-area .note-editable sub { + vertical-align: sub; +} +.note-editor .note-editing-area .note-editable img.note-float-left { + margin-right: 10px; +} +.note-editor .note-editing-area .note-editable img.note-float-right { + margin-left: 10px; +} + +/* Frame mode layout + ------------------------------------------ */ +.note-editor.note-frame, +.note-editor.note-airframe { + border: 1px solid #00000032; +} +.note-editor.note-frame.codeview .note-editing-area .note-editable, +.note-editor.note-airframe.codeview .note-editing-area .note-editable { + display: none; +} +.note-editor.note-frame.codeview .note-editing-area .note-codable, +.note-editor.note-airframe.codeview .note-editing-area .note-codable { + display: block; +} +.note-editor.note-frame .note-editing-area, +.note-editor.note-airframe .note-editing-area { + overflow: hidden; +} +.note-editor.note-frame .note-editing-area .note-editable, +.note-editor.note-airframe .note-editing-area .note-editable { + padding: 10px; + overflow: auto; + word-wrap: break-word; +} +.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false], +.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false] { + background-color: #8080801d; +} +.note-editor.note-frame .note-editing-area .note-codable, +.note-editor.note-airframe .note-editing-area .note-codable { + display: none; + width: 100%; + padding: 10px; + border: none; + box-shadow: none; + font-family: Menlo, Monaco, monospace, sans-serif; + font-size: 14px; + color: #ccc; + background-color: #222; + resize: none; + outline: none; + -ms-box-sizing: border-box; + box-sizing: border-box; + border-radius: 0; + margin-bottom: 0; +} +.note-editor.note-frame.fullscreen, +.note-editor.note-airframe.fullscreen { + position: fixed; + top: 0; + left: 0; + width: 100% !important; + z-index: 1050; +} +.note-editor.note-frame.fullscreen .note-resizebar, +.note-editor.note-airframe.fullscreen .note-resizebar { + display: none; +} +.note-editor.note-frame .note-status-output, +.note-editor.note-airframe .note-status-output { + display: block; + width: 100%; + font-size: 14px; + line-height: 1.42857143; + height: 20px; + margin-bottom: 0; + color: #000; + border: 0; + border-top: 1px solid #e2e2e2; +} +.note-editor.note-frame .note-status-output:empty, +.note-editor.note-airframe .note-status-output:empty { + height: 0; + border-top: 0 solid transparent; +} +.note-editor.note-frame .note-status-output .pull-right, +.note-editor.note-airframe .note-status-output .pull-right { + float: right !important; +} +.note-editor.note-frame .note-status-output .text-muted, +.note-editor.note-airframe .note-status-output .text-muted { + color: #777; +} +.note-editor.note-frame .note-status-output .text-primary, +.note-editor.note-airframe .note-status-output .text-primary { + color: #286090; +} +.note-editor.note-frame .note-status-output .text-success, +.note-editor.note-airframe .note-status-output .text-success { + color: #3c763d; +} +.note-editor.note-frame .note-status-output .text-info, +.note-editor.note-airframe .note-status-output .text-info { + color: #31708f; +} +.note-editor.note-frame .note-status-output .text-warning, +.note-editor.note-airframe .note-status-output .text-warning { + color: #8a6d3b; +} +.note-editor.note-frame .note-status-output .text-danger, +.note-editor.note-airframe .note-status-output .text-danger { + color: #a94442; +} +.note-editor.note-frame .note-status-output .alert, +.note-editor.note-airframe .note-status-output .alert { + margin: -7px 0 0 0; + padding: 7px 10px 2px 10px; + border-radius: 0; + color: #000; + background-color: #f5f5f5; +} +.note-editor.note-frame .note-status-output .alert .note-icon, +.note-editor.note-airframe .note-status-output .alert .note-icon { + margin-right: 5px; +} +.note-editor.note-frame .note-status-output .alert-success, +.note-editor.note-airframe .note-status-output .alert-success { + color: #3c763d !important; + background-color: #dff0d8 !important; +} +.note-editor.note-frame .note-status-output .alert-info, +.note-editor.note-airframe .note-status-output .alert-info { + color: #31708f !important; + background-color: #d9edf7 !important; +} +.note-editor.note-frame .note-status-output .alert-warning, +.note-editor.note-airframe .note-status-output .alert-warning { + color: #8a6d3b !important; + background-color: #fcf8e3 !important; +} +.note-editor.note-frame .note-status-output .alert-danger, +.note-editor.note-airframe .note-status-output .alert-danger { + color: #a94442 !important; + background-color: #f2dede !important; +} +.note-editor.note-frame .note-statusbar, +.note-editor.note-airframe .note-statusbar { + background-color: #8080801d; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-top: 1px solid #00000032; +} +.note-editor.note-frame .note-statusbar .note-resizebar, +.note-editor.note-airframe .note-statusbar .note-resizebar { + padding-top: 1px; + height: 9px; + width: 100%; + cursor: ns-resize; +} +.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar, +.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar { + width: 20px; + margin: 1px auto; + border-top: 1px solid #00000032; +} +.note-editor.note-frame .note-statusbar.locked .note-resizebar, +.note-editor.note-airframe .note-statusbar.locked .note-resizebar { + cursor: default; +} +.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar, +.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar { + display: none; +} +.note-editor.note-frame .note-placeholder, +.note-editor.note-airframe .note-placeholder { + padding: 10px; +} + +.note-editor.note-airframe { + border: 0; +} +.note-editor.note-airframe .note-editing-area .note-editable { + padding: 0; +} + +/* Popover + ------------------------------------------ */ +.note-popover.popover { + display: none; + max-width: none; +} +.note-popover.popover .popover-content a { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle; +} +.note-popover.popover .arrow { + left: 20px !important; +} + +/* Popover and Toolbar (Button container) + ------------------------------------------ */ +.note-toolbar { + position: relative; +} + +.note-popover .popover-content, .note-editor .note-toolbar { + margin: 0; + padding: 0 0 5px 5px; +} +.note-popover .popover-content > .note-btn-group, .note-editor .note-toolbar > .note-btn-group { + margin-top: 5px; + margin-left: 0; + margin-right: 5px; +} +.note-popover .popover-content .note-btn-group .note-table, .note-editor .note-toolbar .note-btn-group .note-table { + min-width: 0; + padding: 5px; +} +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker { + font-size: 18px; +} +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher { + position: absolute !important; + z-index: 3; + width: 10em; + height: 10em; + cursor: pointer; +} +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted { + position: relative !important; + z-index: 1; + width: 5em; + height: 5em; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat; +} +.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted, .note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted { + position: absolute !important; + z-index: 2; + width: 1em; + height: 1em; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat; +} +.note-popover .popover-content .note-style .dropdown-style blockquote, .note-popover .popover-content .note-style .dropdown-style pre, .note-editor .note-toolbar .note-style .dropdown-style blockquote, .note-editor .note-toolbar .note-style .dropdown-style pre { + margin: 0; + padding: 5px 10px; +} +.note-popover .popover-content .note-style .dropdown-style h1, .note-popover .popover-content .note-style .dropdown-style h2, .note-popover .popover-content .note-style .dropdown-style h3, .note-popover .popover-content .note-style .dropdown-style h4, .note-popover .popover-content .note-style .dropdown-style h5, .note-popover .popover-content .note-style .dropdown-style h6, .note-popover .popover-content .note-style .dropdown-style p, .note-editor .note-toolbar .note-style .dropdown-style h1, .note-editor .note-toolbar .note-style .dropdown-style h2, .note-editor .note-toolbar .note-style .dropdown-style h3, .note-editor .note-toolbar .note-style .dropdown-style h4, .note-editor .note-toolbar .note-style .dropdown-style h5, .note-editor .note-toolbar .note-style .dropdown-style h6, .note-editor .note-toolbar .note-style .dropdown-style p { + margin: 0; + padding: 0; +} +.note-popover .popover-content .note-color-all .note-dropdown-menu, .note-editor .note-toolbar .note-color-all .note-dropdown-menu { + min-width: 337px; +} +.note-popover .popover-content .note-color .dropdown-toggle, .note-editor .note-toolbar .note-color .dropdown-toggle { + width: 20px; + padding-left: 5px; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette { + display: inline-block; + margin: 0; + width: 160px; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child { + margin: 0 5px; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title { + font-size: 12px; + margin: 2px 7px; + text-align: center; + border-bottom: 1px solid #eee; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset, +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset, +.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select { + font-size: 11px; + margin: 3px; + padding: 0 3px; + cursor: pointer; + width: 100%; + border-radius: 5px; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover, +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover, +.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover { + background: #eee; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row { + height: 20px; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn { + display: none; +} +.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn, .note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn { + border: 1px solid #eee; +} +.note-popover .popover-content .note-para .note-dropdown-menu, .note-editor .note-toolbar .note-para .note-dropdown-menu { + min-width: 228px; + padding: 5px; +} +.note-popover .popover-content .note-para .note-dropdown-menu > div + div, .note-editor .note-toolbar .note-para .note-dropdown-menu > div + div { + margin-left: 5px; +} +.note-popover .popover-content .note-dropdown-menu, .note-editor .note-toolbar .note-dropdown-menu { + min-width: 160px; +} +.note-popover .popover-content .note-dropdown-menu.right, .note-editor .note-toolbar .note-dropdown-menu.right { + right: 0; + left: auto; +} +.note-popover .popover-content .note-dropdown-menu.right::before, .note-editor .note-toolbar .note-dropdown-menu.right::before { + right: 9px; + left: auto !important; +} +.note-popover .popover-content .note-dropdown-menu.right::after, .note-editor .note-toolbar .note-dropdown-menu.right::after { + right: 10px; + left: auto !important; +} +.note-popover .popover-content .note-dropdown-menu.note-check a i, .note-editor .note-toolbar .note-dropdown-menu.note-check a i { + color: deepskyblue; + visibility: hidden; +} +.note-popover .popover-content .note-dropdown-menu.note-check a.checked i, .note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i { + visibility: visible; +} +.note-popover .popover-content .note-fontsize-10, .note-editor .note-toolbar .note-fontsize-10 { + font-size: 10px; +} +.note-popover .popover-content .note-color-palette, .note-editor .note-toolbar .note-color-palette { + line-height: 1; +} +.note-popover .popover-content .note-color-palette div .note-color-btn, .note-editor .note-toolbar .note-color-palette div .note-color-btn { + width: 20px; + height: 20px; + padding: 0; + margin: 0; + border: 0; + border-radius: 0; +} +.note-popover .popover-content .note-color-palette div .note-color-btn:hover, .note-editor .note-toolbar .note-color-palette div .note-color-btn:hover { + transform: scale(1.2); + transition: all 0.2s; +} + +/* Dialog + ------------------------------------------ */ +.note-modal .modal-dialog { + outline: 0; + border-radius: 5px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); +} +.note-modal .form-group { + margin-left: 0; + margin-right: 0; +} +.note-modal .note-modal-form { + margin: 0; +} +.note-modal .note-image-dialog .note-dropzone { + min-height: 100px; + font-size: 30px; + line-height: 4; + color: lightgray; + text-align: center; + border: 4px dashed lightgray; + margin-bottom: 10px; +} +@-moz-document url-prefix() { + .note-modal .note-image-input { + height: auto; + } +} + +/* Placeholder + ------------------------------------------ */ +.note-placeholder { + position: absolute; + display: none; + color: gray; +} + +/* Handle + ------------------------------------------ */ +.note-handle .note-control-selection { + position: absolute; + display: none; + border: 1px solid #000; +} +.note-handle .note-control-selection > div { + position: absolute; +} +.note-handle .note-control-selection .note-control-selection-bg { + width: 100%; + height: 100%; + background-color: #000; + -webkit-opacity: 0.3; + -khtml-opacity: 0.3; + -moz-opacity: 0.3; + opacity: 0.3; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=30); + filter: alpha(opacity=30); +} +.note-handle .note-control-selection .note-control-handle, .note-handle .note-control-selection .note-control-sizing, .note-handle .note-control-selection .note-control-holder { + width: 7px; + height: 7px; + border: 1px solid #000; +} +.note-handle .note-control-selection .note-control-sizing { + background-color: #000; +} +.note-handle .note-control-selection .note-control-nw { + top: -5px; + left: -5px; + border-right: none; + border-bottom: none; +} +.note-handle .note-control-selection .note-control-ne { + top: -5px; + right: -5px; + border-bottom: none; + border-left: none; +} +.note-handle .note-control-selection .note-control-sw { + bottom: -5px; + left: -5px; + border-top: none; + border-right: none; +} +.note-handle .note-control-selection .note-control-se { + right: -5px; + bottom: -5px; + cursor: se-resize; +} +.note-handle .note-control-selection .note-control-se.note-control-holder { + cursor: default; + border-top: none; + border-left: none; +} +.note-handle .note-control-selection .note-control-selection-info { + right: 0; + bottom: 0; + padding: 5px; + margin: 5px; + color: #fff; + background-color: #000; + font-size: 12px; + border-radius: 5px; + -webkit-opacity: 0.7; + -khtml-opacity: 0.7; + -moz-opacity: 0.7; + opacity: 0.7; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70); + filter: alpha(opacity=70); +} + +.note-hint-popover { + min-width: 100px; + padding: 2px; +} +.note-hint-popover .popover-content { + padding: 3px; + max-height: 150px; + overflow: auto; +} +.note-hint-popover .popover-content .note-hint-group .note-hint-item { + display: block !important; + padding: 3px; +} +.note-hint-popover .popover-content .note-hint-group .note-hint-item.active, .note-hint-popover .popover-content .note-hint-group .note-hint-item:hover { + display: block; + clear: both; + font-weight: 400; + line-height: 1.4; + color: white; + white-space: nowrap; + text-decoration: none; + background-color: #428bca; + outline: 0; + cursor: pointer; +} + +/* Handle + ------------------------------------------ */ +html .note-fullscreen-body, body .note-fullscreen-body { + overflow: hidden !important; +} + +.note-editor .note-editing-area .note-editable table { + width: 100%; + border-collapse: collapse; +} +.note-editor .note-editing-area .note-editable table td, .note-editor .note-editing-area .note-editable table th { + border: 1px solid #ececec; + padding: 5px 3px; +} +.note-editor .note-editing-area .note-editable a { + background-color: inherit; + text-decoration: inherit; + font-family: inherit; + font-weight: inherit; + color: #337ab7; +} +.note-editor .note-editing-area .note-editable a:hover, +.note-editor .note-editing-area .note-editable a:focus { + color: #23527c; + text-decoration: underline; + outline: 0; +} +.note-editor .note-editing-area .note-editable figure { + margin: 0; +} + +/* Dialog + ------------------------------------------*/ +.note-modal .note-modal-body label { + margin-bottom: 2px; + padding: 2px 5px; + display: inline-block; +} +.note-modal .note-modal-body .help-list-item:hover { + background-color: #e0e0e0; +} +@-moz-document url-prefix() { + .note-modal .note-image-input { + height: auto; + } +} + +.help-list-item label { + margin-bottom: 5px; + display: inline-block; +} + +/*# sourceMappingURL=summernote-lite.css.map*/ \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/summernote-lite.css.map b/src/main/resources/static/plugins/summernote/summernote-lite.css.map new file mode 100644 index 0000000..d9cca72 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/summernote-lite.css.map @@ -0,0 +1 @@ +{"version":3,"file":"summernote-lite.css","mappings":";;;;;;;;;;;;AAMA;IACE;IACA;IACA;IACA;IACA;ACLF;ADSA;;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;ACPF;;ADYA;IACE;IACA;ACTF;;ADYA;IACE;IACA;IACA;ACTF;;ADYA;IACE;ACTF;;ADYA;IACE;ACTF;;ADaE;IACE;ACVJ;ADYE;IACE;ACVJ;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;ADgCA;IACE;AC7BF;;AC9QA;IC8GE,0BD7GoB;ICgHpB,sBDhHoB;IACpB;IACA,uBEKY;IFJZ;ADoRF;;AIxRA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;AJ2RF;;AKlSA;IACE;IACA;IACA;ALqSF;AKnSE;IACE;ALqSJ;AKlSE;IACE;ALoSJ;AKjSE;;;;IAIE;ALmSJ;AKhSE;;IAEI;IACA;ALkSN;AK/RE;;IAEE;IACA;ALiSJ;AK7RI;IACE;AL+RN;;AMjUA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;ICLA,WJqBmB;IIpBnB,sBJqBe;IIpBf,qBJqBmB;IIMnB;IACA,eJ3BU;II4BV,gBJxBY;IIyBZ,kBJnBmB;IDiGnB,yBItGqB;IJuGrB,sBIvGqB;IJwGrB,qBIxGqB;IJyGrB,iBIzGqB;AN4UvB;AOhVE;IAEE,WJeiB;IIdjB,yBJiBmB;IIhBnB,qBJeiB;AHkUrB;AO/UE;IACE,WJUiB;IITjB,yBJYmB;IIXnB,qBJUiB;AHuUrB;AO3UI;IAEE,sBJCW;IIAX,qBJCe;AH2UrB;AMxVE;IAGE,WHQiB;IGPjB;IACA;IACA,yBHQmB;IGPnB;IJyBF,kBIxBmB;AN0VrB;AMvVE;IAEE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;ANwVJ;AMrVE;IAGE,mBHHc;IDyBhB,qBIrBmB;IJsBnB,oBItBmB;IJuBnB,kBIvBmB;IJwBnB,aIxBmB;IJ0BnB;IACA;IAmCA,gBI7DsB;AN4VxB;AMzVE;IACE;AN2VJ;AMxVE;IACE;IACA;AN0VJ;;AMtVA;IACE;IACA;ANyVF;AMvVE;IAGE;IACA;IACA;IACA;IJrBF,kBIsBmB;ANyVrB;;AMpVA;IACE;IACA;ANuVF;;AMpVA;IACE;ANuVF;;AMhVE;;;IACE;ANqVJ;;AMjVA;IACE;IACA;IACA;IACA;IACA;ANoVF;;AMjVA;IACE;IACA;IACA;IACA;IACA;ANoVF;;AMjVA;IACE;IACC;IACE;IACE;IACI;IACD;ANoVV;;AQvcA;IACE;AR0cF;;AQtcE;IACE;IACA;ARycJ;;AQtcA;IACE;IACA;IACA;IACA;IACA;IACA,aL2ByB;IK1BzB;IACA;IACA,gBL8BkB;IK7BlB;IACA;IACA;INqFA,yCMpFoB;AR2ctB;AQzcE;IACE;AR2cJ;;AQvcA;IACE;AR0cF;;AQvcA;IACE;AR0cF;AQxcE;IACE,yBLRmB;AHkdvB;;AQtcA;;IAEE;IACA;IACA;ARycF;;ASvfA;IACE;IACA;IACA;IACA;IACA;IACA,aNyCc;IDmBd,kBO3DiB;IP4DjB,iBO5DiB;IP6DjB,eO7DiB;IP8DjB,UO9DiB;IPgEjB;IACA;IOhEA;AT+fF;AS7fE;IACE;AT+fJ;;AS3fA;IACE;IACA;IACA;IACA;IACA,gBNuDiB;IMtDjB;IACA;IACA;IPoFA,wCOnFoB;ATggBtB;;AS7fA;IACE;IACA;ATggBF;;AS7fA;IACE;IACA;ATggBF;AS7fE;IACE;IACA;IACA;IACA;IACA;IPoEF,0BADyB;IAIzB,sBAJyB;AFgc3B;;AS9fA;IACE;IACA;IACA;ATigBF;;AS7fA;IACE;IACA;ATggBF;;AS7fA;;IAEE;IACA;ATggBF;;AS7fA;IACE;ATggBF;;AS7fA;IACE;IACA;IACA;IACA;ATggBF;;AS7fA;IACE;IACA;IACA;IACA;IACA;IACA,aNpCyB;IMqCzB,gBNLkB;IDZlB,oBOkBiB;IPjBjB,mBOiBiB;IPhBjB,iBOgBiB;IPfjB,YOeiB;IPbjB;IACA;IOaA;ATqgBF;ASngBE;IACE;ATqgBJ;;AS/fA;IAEE;QACE;QACA;ITigBA;AACJ;AS9fA;IACE;QACE;ITggBA;AACJ;AS3fE;IACE;IACA;IACA;IACA;AT6fJ;AS1fE;IAEE;IAEI;IACJ;IACA;IACA;AT4fJ;ASzfE;IACE;IACA;IACA;IACA;IACA;IACA;AT2fJ;ASxfE;;IAEE;IACA;AT0fJ;ASvfE;IACE;ATyfJ;AStfE;IACE;ATwfJ;ASrfE;IACE;ATufJ;ASpfE;IACE;IACA;IACA;ATsfJ;ASnfE;;IAEE;ATqfJ;ASlfE;IACE;IACA;IACA;ATofJ;ASjfE;IACE;IACA;IACA;ATmfJ;AShfE;IACE;ATkfJ;AS/eE;;IAEE;ATifJ;AS/eE;;IAEE;ATifJ;;AU5qBA;IACE;AV+qBF;;AU5qBA;IACE;AV+qBF;;AU5qBA;IACE;IACA;IACA;IACA;IACA;IACA;AV+qBF;;AU5qBA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IRsFA,0BADyB;IAIzB,sBAJyB;AF8lB3B;;AU9qBA;IACE,cPxBY;AHysBd;;AU9qBA;IAA+B;IAC7B,cP5BY;AH8sBd;;AU/qBA;IAAiC;IAC/B,cPhCY;AHmtBd;;AUhrBA;IACE,cPpCY;AHutBd;;AW7tBA;IACE;IACA,aR2Cc;IQ1Cd;IAGA;IAEA;IT0DA,kBSzDiB;IT0DjB,iBS1DiB;IT2DjB,eS3DiB;IT4DjB,US5DiB;IT8DjB;IACA;AFmqBF;AWhuBE;ITuDA,oBCXiB;IDYjB,mBCZiB;IDajB,iBCbiB;IDcjB,YCdiB;IDgBjB;IACA;AF2qBF;AWvuBE;IAAW;IAAmB;AX2uBhC;AW1uBE;IAAW;IAAmB;AX8uBhC;AW7uBE;IAAW;IAAmB;AXivBhC;AWhvBE;IAAW;IAAmB;AXovBhC;;AWhvBE;IACE;IACA;IACA;IACA;IACA,yBR8Be;AHqtBnB;AWhvBE;IACE;IACA;IACA;IACA;IACA,sBRsBe;AH4tBnB;AW/uBE;IACE;IACA;IACA;IACA;IACA,wBRce;AHmuBnB;AW/uBE;IACE;IACA;IACA;IACA;IACA,uBROe;AH0uBnB;;AW5uBA;IACE;IACA;IACA;IACA;IACA;AX+uBF;;AW5uBA;IACE,gBRTiB;IQUjB,uBRtDY;IQuDZ;IACA,WRXiB;IQYjB;IACA,sBRZiB;AH2vBnB;;AYjzBA;IACE;IACA,aT0Cc;ISzCd;IAGA;IACA,uBTCY;ISCZ;IACA,mBTiDc;IShDd;IACA;AZizBF;AY/yBE;IAAW;AZkzBb;AYjzBE;IAAW;IAAoB;AZqzBjC;AYpzBE;IAAW;IAAoB;AZwzBjC;AYvzBE;IAAW;IAAoB;AZ2zBjC;AY1zBE;IAAW;IAAoB;AZ8zBjC;;AY1zBE;IACE;IACA;IACA;IACA;IACA,4BT0CkC;ISzClC,wCTwCuB;AHqxB3B;AY3zBI;IACE;IACA;IACA;IACA;IACA;AZ6zBN;AYzzBE;IACE;IACA;IACA;IACA;IACA,yBTyBkC;ISxBlC,qCTuBuB;AHoyB3B;AYzzBI;IACE;IACA;IACA;IACA;IACA;AZ2zBN;AYvzBE;IACE;IACA;IACA;IACA;IACA,2BTQkC;ISPlC,uCTMuB;AHmzB3B;AYvzBI;IACE;IACA;IACA;IACA;IACA;AZyzBN;AYrzBE;IACE;IACA;IACA;IACA;IACA,0BTTkC;ISUlC,sCTXuB;AHk0B3B;AYrzBI;IACE;IACA;IACA;IACA;IACA;AZuzBN;;AYjzBA;IACE;IACA;IACA;IACA;AZozBF;AYlzBE;IACE;IACA;IACA;IACA;IACA;IACA;IAGA;IACA;AZkzBJ;;AY7yBA;IACE;IACA;IACA,WTxDc;ISyDd;IACA,yBT3Dc;IS4Dd;IACA;AZgzBF;;Aat6BA;6CAAA;AAQA;6CAAA;AAEA;IACE;Abm6BF;Aa95BE;IACE;IACA;IACA;IACA,mBANe;IAOf;IACA;Abg6BJ;Aa95BI;IACE;IACA;IACA;IACA;IACA;Abg6BN;Aa75BI;IACE,cAlBoB;Abi7B1B;Aa35BE;IACE;Ab65BJ;Aa15BE;IACE;Ab45BJ;Aa15BI;IACE;Ab45BN;Aa15BM;IACE;Ab45BR;Aaz5BM;IACE;Ab25BR;Aax5BM;IACE,kBAlDW;Ab48BnB;Aav5BM;IACE,iBAvDU;Abg9BlB;;Aan5BA;6CAAA;AAEA;;IAEE;Abs5BF;Aaj5BM;;IACE;Abo5BR;Aal5BM;;IACE;Abq5BR;Aah5BE;;IACE;Abm5BJ;Aah5BI;;IACE;IACA;IACA;Abm5BN;Aaj5BM;;IACE,2BA3FW;Ab++BnB;Aa/4BI;;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IXFJ,0BWKwB;IXFxB,sBWEwB;IXnExB,gBWoEqB;IACjB;Abq5BN;Aah5BE;;IACE;IACA;IACA;IACA;IACA;Abm5BJ;Aal5BI;;IACE;Abq5BN;Aah5BE;;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;Abm5BJ;Aah5BE;;IACE;IACA;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;IACA;IACA;IACA;IACA;Abm5BJ;Aah5BE;;IACE;Abm5BJ;Aah5BE;;IACE;IACA;Abm5BJ;Aah5BE;;IACE;IACA;Abm5BJ;Aah5BE;;IACE;IACA;Abm5BJ;Aah5BE;;IACE;IACA;Abm5BJ;Aa/4BE;;IACE,2BAhNe;IAiNf;IACA;IACA;Abk5BJ;Aaj5BI;;IACE;IACA;IACA;IACA;Abo5BN;Aan5BM;;IACE;IACA;IACA;Abs5BR;Aaj5BM;;IACE;Abo5BR;Aan5BQ;;IACE;Abs5BV;Aaj5BE;;IACE;Abo5BJ;;Aah5BA;IACE;Abm5BF;Aah5BI;IACE;Abk5BN;;Aa54BA;6CAAA;AAEA;IACE;IACA;Ab+4BF;Aa54BI;IACE;IACA;IACA;IACA;IACA;IACA;Ab84BN;Aa34BE;IACE;Ab64BJ;;Aaz4BA;6CAAA;AAEA;IACE;Ab44BF;;Aaz4BA;IACE;IACA;Ab44BF;Aa14BE;IACE;IACA;IACA;Ab44BJ;Aax4BI;IACE;IACA;Ab04BN;Aaz4BM;IACE;Ab24BR;Aa14BQ;IACE;IACA;IACA;IACA;IACA;Ab44BV;Aa14BQ;IACE;IACA;IACA;IACA;IACA;Ab44BV;Aa14BQ;IACE;IACA;IACA;IACA;IACA;Ab44BV;Aap4BM;IACE;IACA;Abs4BR;Aap4BM;IACE;IACA;Abs4BR;Aah4BI;IACE;Abk4BN;Aa73BI;IACE;IACA;Ab+3BN;Aa53BM;IACE;IACA;IACA;Ab83BR;Aa73BQ;IACE;Ab+3BV;Aa53BQ;IACE;IACA;IACA;IACA;Ab83BV;Aa33BQ;;;IAEE;IACA;IACA;IACA;IACA;IXhUR,kBWiUyB;Abg4B3B;Aa93BU;;;IACE;Abk4BZ;Aa93BQ;IACE;Abg4BV;Aa73BQ;IACE;Ab+3BV;Aa33BU;IACE;Ab63BZ;Aar3BI;IACE;IACA;Abu3BN;Aat3BM;IACE;Abw3BR;Aal3BE;IACE;Abo3BJ;Aah3BI;IACE;IACA;Abk3BN;Aaj3BM;IACE;IACA;Abm3BR;Aaj3BM;IACE;IACA;Abm3BR;Aa92BM;IACE;IACA;Abg3BR;Aa92BM;IACE;Abg3BR;Aa32BE;IACE;Ab62BJ;Aaz2BE;IACE;Ab22BJ;Aaz2BM;IACE;IACA;IACA;IACA;IACA;IACA;Ab22BR;Aaz2BM;IACE;IACA;Ab22BR;;Aar2BA;6CAAA;AAGE;IACE;IACA;IXnWF,wCWoWsB;Aby2BxB;Aav2BE;IACE;IACA;Aby2BJ;Aav2BE;IACE;Aby2BJ;Aat2BI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;Abw2BN;Aan2BE;IACE;QACE;Ibq2BF;AACJ;;Aaj2BA;6CAAA;AAEA;IACE;IACA;IACA;Abo2BF;;Aaj2BA;6CAAA;AAIE;IACE;IACA;IACA;Abk2BJ;Aaj2BI;IACE;Abm2BN;Aah2BI;IACE;IACA;IACA;IXjcJ,oBWkcqB;IXjcrB,mBWicqB;IXhcrB,iBWgcqB;IX/brB,YW+bqB;IX7brB;IACA;AFmyCF;Aap2BI;IACE;IACA;IACA;Abs2BN;Aa/1BI;IAEE;Abg2BN;Aa71BI;IACE;IACA;IACA;IACA;Ab+1BN;Aa51BI;IACE;IACA;IACA;IACA;Ab81BN;Aa31BI;IACE;IACA;IACA;IACA;Ab61BN;Aa11BI;IACE;IACA;IACA;Ab41BN;Aaz1BI;IACE;IACA;IACA;Ab21BN;Aax1BI;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IX9gBJ,kBW+gBqB;IX7frB,oBW8fqB;IX7frB,mBW6fqB;IX5frB,iBW4fqB;IX3frB,YW2fqB;IXzfrB;IACA;AFy1CF;;Aa51BA;IACE;IACA;Ab+1BF;Aa71BE;IACE;IACA;IACA;Ab+1BJ;Aa51BM;IACE;IACA;Ab81BR;Aa51BQ;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;Ab81BV;;Aav1BA;6CAAA;AAGE;IACE;Aby1BJ;;AA56CM;IACE;IACA;AA+6CR;AA76CS;IACC;IACA;AA+6CV;AA36CM;IACE;IACA;IACA;IACA;IACA;AA66CR;AA16CM;;IAEE;IACA;IACA;AA46CR;AAz6CM;IACE;AA26CR;;AAr6CA;4CAAA;AAII;IACE;IACA;IACA;AAs6CN;AAn6CK;IACC;AAq6CN;AAh6CE;IACE;QACE;IAk6CF;AACJ;;AA55CE;IACE;IACA;AA+5CJ","sources":["webpack://summernote/./src/styles/summernote/font.scss","webpack://summernote/./src/styles/lite/summernote-lite.scss","webpack://summernote/./src/styles/lite/scss/common.scss","webpack://summernote/./src/styles/summernote/elements.scss","webpack://summernote/./src/styles/lite/scss/variables.scss","webpack://summernote/./src/styles/lite/scss/toolbar.scss","webpack://summernote/./src/styles/lite/scss/btn-group.scss","webpack://summernote/./src/styles/lite/scss/buttons.scss","webpack://summernote/./src/styles/lite/scss/mixins/buttons.scss","webpack://summernote/./src/styles/lite/scss/dropdown.scss","webpack://summernote/./src/styles/lite/scss/modal.scss","webpack://summernote/./src/styles/lite/scss/form.scss","webpack://summernote/./src/styles/lite/scss/tooltip.scss","webpack://summernote/./src/styles/lite/scss/popover.scss","webpack://summernote/./src/styles/summernote/common.scss"],"sourcesContent":["// Variables\n\n$sni-css-prefix: note-icon !default;\n\n// Path\n\n@font-face {\n font-family: \"summernote\";\n font-style: normal;\n font-weight: 400;\n font-display: auto;\n src: url(\"./fonts/summernote.eot?#iefix\") format(\"embedded-opentype\"), url(\"./fonts/summernote.woff2\") format(\"woff2\"), url(\"./fonts/summernote.woff\") format(\"woff\"), url(\"./fonts/summernote.ttf\") format(\"truetype\");}\n\n// Core\n\n[class^=\"#{$sni-css-prefix}\"]:before,\n[class*=\" #{$sni-css-prefix}\"]:before {\n display: inline-block;\n font-family: \"summernote\";\n font-style: normal;\n font-size: inherit;\n text-decoration: inherit;\n text-rendering: auto;\n text-transform: none;\n vertical-align: middle;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n speak: none;\n}\n\n// Extras\n\n.#{$sni-css-prefix}-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.#{$sni-css-prefix}-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.#{$sni-css-prefix}-pull-left {\n float: left;\n}\n\n.#{$sni-css-prefix}-pull-right {\n float: right;\n}\n\n.#{$sni-css-prefix} {\n &.#{$sni-css-prefix}-pull-left {\n margin-right: 0.3em;\n }\n &.#{$sni-css-prefix}-pull-right {\n margin-left: 0.3em;\n }\n}\n\n// Functions\n\n@function char($character-code) {\n @if function-exists(\"selector-append\") {\n @return unquote(\"\\\"\\\\#{$character-code}\\\"\");\n }\n\n @if \"\\\\#{'x'}\" == \"\\\\x\" {\n @return str-slice(\"\\x\", 1, 1) + $character-code;\n }\n @else {\n @return #{\"\\\"\\\\\"}#{$character-code + \"\\\"\"};\n }\n}\n\n// Icons\n\n\n.note-icon-align::before {\n content: \"\\ea01\";\n}\n\n.note-icon-align-center::before {\n content: \"\\ea02\";\n}\n\n.note-icon-align-indent::before {\n content: \"\\ea03\";\n}\n\n.note-icon-align-justify::before {\n content: \"\\ea04\";\n}\n\n.note-icon-align-left::before {\n content: \"\\ea05\";\n}\n\n.note-icon-align-outdent::before {\n content: \"\\ea06\";\n}\n\n.note-icon-align-right::before {\n content: \"\\ea07\";\n}\n\n.note-icon-arrow-circle-down::before {\n content: \"\\ea08\";\n}\n\n.note-icon-arrow-circle-left::before {\n content: \"\\ea09\";\n}\n\n.note-icon-arrow-circle-right::before {\n content: \"\\ea0a\";\n}\n\n.note-icon-arrow-circle-up::before {\n content: \"\\ea0b\";\n}\n\n.note-icon-arrows-alt::before {\n content: \"\\ea0c\";\n}\n\n.note-icon-arrows-h::before {\n content: \"\\ea0d\";\n}\n\n.note-icon-arrows-v::before {\n content: \"\\ea0e\";\n}\n\n.note-icon-bold::before {\n content: \"\\ea0f\";\n}\n\n.note-icon-caret::before {\n content: \"\\ea10\";\n}\n\n.note-icon-chain-broken::before {\n content: \"\\ea11\";\n}\n\n.note-icon-circle::before {\n content: \"\\ea12\";\n}\n\n.note-icon-close::before {\n content: \"\\ea13\";\n}\n\n.note-icon-code::before {\n content: \"\\ea14\";\n}\n\n.note-icon-col-after::before {\n content: \"\\ea15\";\n}\n\n.note-icon-col-before::before {\n content: \"\\ea16\";\n}\n\n.note-icon-col-remove::before {\n content: \"\\ea17\";\n}\n\n.note-icon-eraser::before {\n content: \"\\ea18\";\n}\n\n.note-icon-float-left::before {\n content: \"\\ea19\";\n}\n\n.note-icon-float-none::before {\n content: \"\\ea1a\";\n}\n\n.note-icon-float-right::before {\n content: \"\\ea1b\";\n}\n\n.note-icon-font::before {\n content: \"\\ea1c\";\n}\n\n.note-icon-frame::before {\n content: \"\\ea1d\";\n}\n\n.note-icon-italic::before {\n content: \"\\ea1e\";\n}\n\n.note-icon-link::before {\n content: \"\\ea1f\";\n}\n\n.note-icon-magic::before {\n content: \"\\ea20\";\n}\n\n.note-icon-menu-check::before {\n content: \"\\ea21\";\n}\n\n.note-icon-minus::before {\n content: \"\\ea22\";\n}\n\n.note-icon-orderedlist::before {\n content: \"\\ea23\";\n}\n\n.note-icon-pencil::before {\n content: \"\\ea24\";\n}\n\n.note-icon-picture::before {\n content: \"\\ea25\";\n}\n\n.note-icon-question::before {\n content: \"\\ea26\";\n}\n\n.note-icon-redo::before {\n content: \"\\ea27\";\n}\n\n.note-icon-rollback::before {\n content: \"\\ea28\";\n}\n\n.note-icon-row-above::before {\n content: \"\\ea29\";\n}\n\n.note-icon-row-below::before {\n content: \"\\ea2a\";\n}\n\n.note-icon-row-remove::before {\n content: \"\\ea2b\";\n}\n\n.note-icon-special-character::before {\n content: \"\\ea2c\";\n}\n\n.note-icon-square::before {\n content: \"\\ea2d\";\n}\n\n.note-icon-strikethrough::before {\n content: \"\\ea2e\";\n}\n\n.note-icon-subscript::before {\n content: \"\\ea2f\";\n}\n\n.note-icon-summernote::before {\n content: \"\\ea30\";\n}\n\n.note-icon-superscript::before {\n content: \"\\ea31\";\n}\n\n.note-icon-table::before {\n content: \"\\ea32\";\n}\n\n.note-icon-text-height::before {\n content: \"\\ea33\";\n}\n\n.note-icon-trash::before {\n content: \"\\ea34\";\n}\n\n.note-icon-underline::before {\n content: \"\\ea35\";\n}\n\n.note-icon-undo::before {\n content: \"\\ea36\";\n}\n\n.note-icon-unorderedlist::before {\n content: \"\\ea37\";\n}\n\n.note-icon-video::before {\n content: \"\\ea38\";\n}\n\n","// Core variables and mixins\n@import '../summernote/font.scss';\n@import '../summernote/elements.scss';\n@import \"scss/variables.scss\";\n@import \"scss/mixins.scss\";\n\n@import \"scss/common.scss\";\n@import \"scss/toolbar.scss\";\n@import \"scss/btn-group.scss\";\n@import \"scss/buttons.scss\";\n@import \"scss/dropdown.scss\";\n@import \"scss/modal.scss\";\n@import \"scss/form.scss\";\n@import \"scss/tooltip.scss\";\n@import \"scss/popover.scss\";\n\n@import '../summernote/common.scss';\n\n.note-editor {\n .note-editing-area {\n .note-editable {\n table {\n width: 100%;\n border-collapse: collapse;\n\n td, th {\n border: 1px solid #ececec;\n padding: 5px 3px;\n }\n }\n\n a {\n background-color: inherit;\n text-decoration: inherit;\n font-family: inherit;\n font-weight: inherit;\n color: #337ab7;\n }\n\n a:hover,\n a:focus {\n color: #23527c;\n text-decoration: underline;\n outline: 0;\n }\n\n figure {\n margin: 0;\n }\n }\n }\n}\n\n/* Dialog\n ------------------------------------------*/\n.note-modal {\n .note-modal-body {\n label {\n margin-bottom: 2px;\n padding: 2px 5px;\n display: inline-block;\n }\n\n .help-list-item:hover {\n background-color: #e0e0e0;\n }\n }\n\n // [workaround] firefox fileinput\n @-moz-document url-prefix() {\n .note-image-input {\n height: auto;\n }\n }\n}\n\n\n.help-list-item {\n label {\n margin-bottom:5px;\n display:inline-block;\n }\n}\n",".note-frame {\n @include box-sizing(border-box);\n color: #000;\n font-family: $font-family;\n border-radius: 4px;\n}\n","@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear,\n left bottom,\n left top,\n color-stop(0, $start),\n color-stop(1, $stop));\n background: -ms-linear-gradient(bottom,\n $start,\n $stop);\n background: -moz-linear-gradient(center bottom,\n $start 0%,\n $stop 100%);\n background: -o-linear-gradient($stop,\n $start);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($stop)}', endColorstr='#{ie-hex-str($start)}', GradientType=0);\n}\n@mixin bw-gradient($color: #F5F5F5, $start: 0, $stop: 255) {\n background: $color;\n background: -webkit-gradient(linear,\n left bottom,\n left top,\n color-stop(0, rgb($start,$start,$start)),\n color-stop(1, rgb($stop,$stop,$stop)));\n background: -ms-linear-gradient(bottom,\n rgb($start,$start,$start) 0%,\n rgb($stop,$stop,$stop) 100%);\n background: -moz-linear-gradient(center bottom,\n rgb($start,$start,$start) 0%,\n rgb($stop,$stop,$stop) 100%);\n background: -o-linear-gradient(rgb($stop,$stop,$stop),\n rgb($start,$start,$start));\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(rgb($stop,$stop,$stop))}', endColorstr='#{ie-hex-str(rgb($start,$start,$start))}', GradientType=0);\n}\n@mixin bordered($top-color: #EEE, $right-color: #EEE, $bottom-color: #EEE, $left-color: #EEE) {\n border-top: solid 1px $top-color;\n border-left: solid 1px $left-color;\n border-right: solid 1px $right-color;\n border-bottom: solid 1px $bottom-color;\n}\n@mixin drop-shadow($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: 0.1) {\n -webkit-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);\n -moz-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);\n box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);\n}\n@mixin rounded($radius: 2px) {\n -webkit-border-radius: $radius;\n -moz-border-radius: $radius;\n border-radius: $radius;\n}\n@mixin border-radius($topright: 0, $bottomright: 0, $bottomleft: 0, $topleft: 0) {\n -webkit-border-top-right-radius: $topright;\n -webkit-border-bottom-right-radius: $bottomright;\n -webkit-border-bottom-left-radius: $bottomleft;\n -webkit-border-top-left-radius: $topleft;\n -moz-border-radius-topright: $topright;\n -moz-border-radius-bottomright: $bottomright;\n -moz-border-radius-bottomleft: $bottomleft;\n -moz-border-radius-topleft: $topleft;\n border-top-right-radius: $topright;\n border-bottom-right-radius: $bottomright;\n border-bottom-left-radius: $bottomleft;\n border-top-left-radius: $topleft;\n @include background-clip(padding-box);\n}\n@mixin opacity($opacity: 0.5) {\n -webkit-opacity: $opacity;\n -khtml-opacity: $opacity;\n -moz-opacity: $opacity;\n opacity: $opacity;\n $opperc: $opacity * 100;\n -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=#{$opperc});\n filter: alpha(opacity=$opperc);\n}\n@mixin transition-duration($duration: 0.2s) {\n -moz-transition-duration: $duration;\n -webkit-transition-duration: $duration;\n -o-transition-duration: $duration;\n transition-duration: $duration;\n}\n@mixin transform($arguments...) {\n -webkit-transform: $arguments;\n -moz-transform: $arguments;\n -o-transform: $arguments;\n -ms-transform: $arguments;\n transform: $arguments;\n}\n@mixin rotation($deg:5deg) {\n @include transform(rotate($deg));\n}\n@mixin scale($ratio:1.5) {\n @include transform(scale($ratio));\n}\n@mixin transition($duration:0.2s, $ease:ease-out) {\n -webkit-transition: all $duration $ease;\n -moz-transition: all $duration $ease;\n -o-transition: all $duration $ease;\n transition: all $duration $ease;\n}\n@mixin inner-shadow($horizontal:0, $vertical:1px, $blur:2px, $alpha: 0.4) {\n -webkit-box-shadow: inset $horizontal $vertical $blur rgba(0, 0, 0, $alpha);\n -moz-box-shadow: inset $horizontal $vertical $blur rgba(0, 0, 0, $alpha);\n box-shadow: inset $horizontal $vertical $blur rgba(0, 0, 0, $alpha);\n}\n@mixin box-shadow($arguments) {\n -webkit-box-shadow: $arguments;\n -moz-box-shadow: $arguments;\n box-shadow: $arguments;\n}\n@mixin box-sizing($sizing: border-box) {\n -ms-box-sizing: $sizing;\n -moz-box-sizing: $sizing;\n -webkit-box-sizing: $sizing;\n box-sizing: $sizing;\n}\n@mixin user-select($argument: none) {\n -webkit-user-select: $argument;\n -moz-user-select: $argument;\n -ms-user-select: $argument;\n user-select: $argument;\n}\n@mixin columns($colwidth: 250px, $colcount: 0, $colgap: 50px, $columnRuleColor: #EEE, $columnRuleStyle: solid, $columnRuleWidth: 1px) {\n -moz-column-width: $colwidth;\n -moz-column-count: $colcount;\n -moz-column-gap: $colgap;\n -moz-column-rule-color: $columnRuleColor;\n -moz-column-rule-style: $columnRuleStyle;\n -moz-column-rule-width: $columnRuleWidth;\n -webkit-column-width: $colwidth;\n -webkit-column-count: $colcount;\n -webkit-column-gap: $colgap;\n -webkit-column-rule-color: $columnRuleColor;\n -webkit-column-rule-style: $columnRuleStyle;\n -webkit-column-rule-width: $columnRuleWidth;\n column-width: $colwidth;\n column-count: $colcount;\n column-gap: $colgap;\n column-rule-color: $columnRuleColor;\n column-rule-style: $columnRuleStyle;\n column-rule-width: $columnRuleWidth;\n}\n@mixin translate($x:0, $y:0) {\n @include transform(translate($x, $y));\n}\n@mixin background-clip($argument: padding-box) {\n -moz-background-clip: $argument;\n -webkit-background-clip: $argument;\n background-clip: $argument;\n}\n","\n$gray-base: #000;\n$gray-darker: lighten($gray-base, 13.5%); // #222\n$gray-dark: lighten($gray-base, 20%); // #333\n$gray: lighten($gray-base, 33.5%); // #555\n$gray-light: lighten($gray-base, 46.7%); // #777\n$gray-lighter:lighten($gray-base, 93.5%); // #eee\n\n$font-family: sans-serif;\n$font-size: 14px;\n$font-size-large: ceil(($font-size * 1.25));\n$font-size-small: ceil(($font-size * 0.85));\n\n$line-height: 1.4;\n$line-height-computed: floor(($line-height * $font-size));\n\n$padding-base-vertical: 5px;\n$padding-base-horizontal: 10px;\n\n$border-radius-base: 3px;\n$btn-border-radius-base: $border-radius-base;\n\n$icon-font-path: \"../fonts/\";\n$icon-font-name: \"summernote\";\n$icon-font-svg-id: \"summernote\";\n\n$btn-font-weight: normal;\n$btn-default-color : #333;\n$btn-default-bg: #fff;\n$btn-default-border: #dae0e5;\n$btn-default-hover-bg: #ebebeb;\n$btn-default-active-bg: #f0f0f0;\n\n$input-bg: #fff;\n$input-bg-disabled: $gray-lighter;\n$input-color: $gray;\n$input-border: #ccc;\n\n$input-border-focus: #66afe9;\n$input-color-placeholder: #999;\n\n$cursor-disabled: not-allowed;\n\n$zindex-dropdown: 1000;\n$zindex-popover:1060;\n$zindex-tooltip:1070;\n$zindex-modal-background: 1040;\n$zindex-modal: 1050;\n\n$dropdown-color-bg: #fff;\n$dropdown-color-border: #e2e2e2;\n\n$tooltip-max-width:200px;\n$tooltip-color: #fff;\n$tooltip-bg: #000;\n$tooltip-opacity: .9;\n$tooltip-arrow-width: 5px;\n$tooltip-arrow-color: $tooltip-bg;\n\n$popover-bg: #ffffff;\n$popover-color: #000;\n$popover-max-width: 276px;\n$popover-border-color: rgba(0,0,0,.2);\n$popover-fallback-border-color: #ccc;\n$popover-title-bg: darken($popover-bg, 3%);\n$popover-arrow-width: 10px;\n$popover-arrow-color: $popover-bg;\n$popover-arrow-outer-width:($popover-arrow-width + 1);\n$popover-arrow-outer-color:fade-in($popover-border-color, .05);\n$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%);\n\n\n$modal-inner-padding: 15px;\n$modal-title-padding: 15px;\n$modal-title-line-height: $line-height;\n$modal-content-bg: #fff;\n$modal-content-border-color: rgba(0,0,0,.2);\n$modal-content-fallback-border-color: #999;\n$modal-backdrop-bg: #000;\n$modal-backdrop-opacity: .5;\n$modal-header-border-color: #e5e5e5;\n$modal-footer-border-color: $modal-header-border-color;\n",".note-toolbar {\n padding: 10px 5px;\n border-bottom: 1px solid #e2e2e2;\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n",".note-btn-group {\n position: relative;\n display: inline-block;\n margin-right: 8px;\n\n > .note-btn-group {\n margin-right: 0;\n }\n\n > .note-btn:first-child {\n margin-left: 0;\n }\n\n .note-btn + .note-btn,\n .note-btn + .note-btn-group,\n .note-btn-group + .note-btn,\n .note-btn-group + .note-btn-group {\n margin-left: -1px;\n }\n\n > .note-btn:not(:first-child),\n > .note-btn-group:not(:first-child) > .note-btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n > .note-btn:not(:last-child):not(.dropdown-toggle),\n > .note-btn-group:not(:last-child) > .note-btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &.open {\n > .note-dropdown {\n display: block;\n }\n }\n}\n",".note-btn {\n display: inline-block;\n font-weight: 400;\n margin-bottom: 0;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid $btn-default-border;\n white-space: nowrap;\n outline: 0;\n @include button-maker($btn-default-color, $btn-default-bg, $btn-default-hover-bg, $btn-default-active-bg, $btn-default-border);\n @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size, $line-height, $btn-border-radius-base);\n @include user-select(none);\n\n &:hover,\n &:focus,\n &.focus {\n color: $btn-default-color;\n text-decoration: none;\n border: 1px solid $btn-default-border;\n background-color: $btn-default-hover-bg;\n outline: 0;\n @include rounded(1px);\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n color: #333;\n text-decoration: none;\n border: 1px solid #dae0e5;\n background-color: #ebebeb;\n outline: 0;\n border-radius: 1px;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: $cursor-disabled;\n @include opacity(.65);\n @include box-shadow(none);\n }\n\n & > span.note-icon-caret:first-child {\n margin-left: -1px;\n }\n\n & > span.note-icon-caret:nth-child(2) {\n padding-left: 3px;\n margin-right: -5px;\n }\n}\n\n.note-btn-primary {\n background: #fa6362;\n color: #fff;\n\n &:hover,\n &:focus,\n &.focus {\n color: #fff;\n text-decoration: none;\n border: 1px solid $btn-default-border;\n background-color: #fa6362;\n @include rounded(1px);\n }\n\n}\n\n.note-btn-block {\n display: block;\n width: 100%;\n}\n\n.note-btn-block + .note-btn-block {\n margin-top:5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.note-btn-block {\n width: 100%;\n }\n}\n\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.close {\n float: right;\n font-size: 21px;\n line-height: 1;\n color: #000;\n opacity: .2;\n}\n\n.close:hover {\n -webkit-opacity: 1;\n -khtml-opacity: 1;\n -moz-opacity: 1;\n -ms-filter: alpha(opacity=100);\n filter: alpha(opacity=100);\n opacity: 1\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-maker($color, $background, $focusBackground, $activeBackground, $border) {\n color: $color;\n background-color: $background;\n border-color: $border;\n\n &:focus,\n &.focus {\n color: $color;\n background-color: $focusBackground;\n border-color: $border;\n }\n &:hover {\n color: $color;\n background-color: $focusBackground;\n border-color: $border;\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:focus,\n &.focus {\n background-color: $background;\n border-color: $border;\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {\n padding: $padding-vertical $padding-horizontal;\n font-size: $font-size;\n line-height: $line-height;\n border-radius: $border-radius;\n}\n",".note-dropdown {\n position: relative;\n\n}\n.note-color {\n .dropdown-toggle {\n width: 30px;\n padding-left: 5px;\n }\n}\n.note-dropdown-menu {\n display: none;\n min-width: 100px;\n position: absolute;\n top: 100%;\n left: 0;\n z-index : $zindex-dropdown;\n float: left;\n text-align:left;\n background: $dropdown-color-bg;\n border: 1px solid $dropdown-color-border;\n padding: 5px;\n background-clip: padding-box;\n @include box-shadow(0 1px 1px rgba(0,0,0,.06));\n\n > *:last-child {\n margin-right: 0;\n }\n}\n\n.note-btn-group.open .note-dropdown-menu {\n display: block;\n}\n\n.note-dropdown-item {\n display: block;\n\n &:hover {\n background-color: $btn-default-hover-bg;\n }\n}\n\na.note-dropdown-item,\na.note-dropdown-item:hover {\n margin: 5px 0;\n color: #000;\n text-decoration: none;\n}\n",".note-modal {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: $zindex-modal;\n @include opacity(1);\n display: none;\n\n &.open {\n display:block;\n }\n}\n\n.note-modal-content {\n position: relative;\n width: auto;\n margin: 30px 20px;\n border: 1px solid $modal-content-border-color;\n background: $modal-content-bg;\n background-clip: border-box;\n outline: 0;\n border-radius: 5px;\n @include box-shadow(0 3px 9px rgba(0,0,0,.5));\n}\n\n.note-modal-header {\n padding: 10px 20px;\n border: 1px solid #ededef;\n}\n\n.note-modal-body {\n position: relative;\n padding: 20px 30px;\n\n // shortcut text style\n kbd {\n border-radius: 2px;\n background-color: #000;\n color: #fff;\n padding: 3px 5px;\n font-weight: 700;\n @include box-sizing();\n }\n}\n\n.note-modal-footer {\n height: 40px;\n padding: 10px;\n text-align: center;\n\n}\n\n.note-modal-footer a {\n color: #337ab7;\n text-decoration: none\n}\n\n.note-modal-footer a:hover,\n.note-modal-footer a:focus {\n color: #23527c;\n text-decoration: underline\n}\n\n.note-modal-footer .note-btn {\n float: right\n}\n\n.note-modal-title {\n font-size: 20px;\n color: #42515f;\n margin: 0;\n line-height: 1.4;\n}\n\n.note-modal-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: $zindex-modal-background;\n background: $modal-backdrop-bg;\n @include opacity(0.5);\n display: none;\n\n &.open {\n display: block;\n }\n}\n\n\n// Scale up the modal\n@media (min-width: 768px) {\n // Automatically set modal's width for larger viewports\n .note-modal-content {\n width: 600px;\n margin: 30px auto;\n }\n}\n\n@media (min-width: 992px) {\n .note-modal-content-large {\n width: 900px;\n }\n}\n\n.note-modal {\n\n .note-help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n }\n\n .note-nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n }\n\n .note-nav-link {\n display: block;\n padding: 0.5rem 1rem;\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n }\n\n .note-nav-link:focus,\n .note-nav-link:hover {\n color: #0056b3;\n text-decoration: none;\n }\n\n .note-nav-link.disabled {\n color: #868e96;\n }\n\n .note-nav-tabs {\n border-bottom: 1px solid #ddd;\n }\n\n .note-nav-tabs .note-nav-item {\n margin-bottom: -1px;\n }\n\n .note-nav-tabs .note-nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n\n .note-nav-tabs .note-nav-link:focus,\n .note-nav-tabs .note-nav-link:hover {\n border-color: #e9ecef #e9ecef #ddd;\n }\n\n .note-nav-tabs .note-nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent;\n }\n\n .note-nav-tabs .note-nav-item.show .note-nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n }\n\n .note-tab-content {\n margin: 15px auto;\n }\n\n .note-tab-content > .note-tab-pane:target ~ .note-tab-pane:last-child,\n .note-tab-content > .note-tab-pane {\n display: none;\n }\n .note-tab-content > :last-child,\n .note-tab-content > .note-tab-pane:target {\n display: block;\n }\n}\n",".note-form-group {\n padding-bottom: 20px;\n}\n\n.note-form-group:last-child {\n padding-bottom: 0;\n}\n\n.note-form-label {\n display: block;\n width: 100%;\n font-size: 16px;\n color: #42515f;\n margin-bottom: 10px;\n font-weight: 700;\n}\n\n.note-input {\n width: 100%;\n display: block;\n border: 1px solid #ededef;\n background: #fff;\n outline: 0;\n padding: 6px 4px;\n font-size: 14px;\n @include box-sizing();\n}\n\n\n.note-input::-webkit-input-placeholder {\n color: $gray-lighter;\n}\n\n.note-input:-moz-placeholder { /* Firefox 18- */\n color: $gray-lighter;\n}\n\n.note-input::-moz-placeholder { /* Firefox 19+ */\n color: $gray-lighter;\n}\n\n.note-input:-ms-input-placeholder {\n color: $gray-lighter;\n}\n",".note-tooltip {\n position: absolute;\n z-index: $zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n font-size: 13px;\n\n transition: opacity .15s;\n @include opacity(0);\n\n &.in { @include opacity($tooltip-opacity); }\n &.top { margin-top: -3px; padding: $tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 $tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: $tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 $tooltip-arrow-width; }\n}\n\n.note-tooltip {\n &.bottom .note-tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -$tooltip-arrow-width;\n border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-bottom-color: $tooltip-arrow-color;\n }\n\n &.top .note-tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -$tooltip-arrow-width;\n border-width: $tooltip-arrow-width $tooltip-arrow-width 0;\n border-top-color: $tooltip-arrow-color;\n }\n\n &.right .note-tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -$tooltip-arrow-width;\n border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;\n border-right-color: $tooltip-arrow-color;\n }\n &.left .note-tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -$tooltip-arrow-width;\n border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-left-color: $tooltip-arrow-color;\n }\n}\n\n\n.note-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.note-tooltip-content {\n max-width: $tooltip-max-width;\n font-family: $font-family;\n padding: 3px 8px;\n color: $tooltip-color;\n text-align: center;\n background-color: $tooltip-bg;\n}\n",".note-popover {\n position: absolute;\n z-index: $zindex-popover;\n display: block;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n font-size: 13px;\n font-family: $font-family;\n\n display: none;\n background: $popover-bg;\n border: 1px solid $popover-border-color;\n border: 1px solid $popover-fallback-border-color;\n\n &.in { display: block; }\n &.top { margin-top: -10px; padding: $tooltip-arrow-width 0; }\n &.right { margin-left: 10px; padding: 0 $tooltip-arrow-width; }\n &.bottom { margin-top: 10px; padding: $tooltip-arrow-width 0; }\n &.left { margin-left: -10px; padding: 0 $tooltip-arrow-width; }\n}\n\n.note-popover {\n &.bottom .note-popover-arrow {\n top: -11px;\n left: 20px;\n margin-left: -$popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: $popover-arrow-outer-fallback-color;\n border-bottom-color: $popover-arrow-outer-color;\n\n &::after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n }\n }\n\n &.top .note-popover-arrow {\n bottom: -11px;\n left: 20px;\n margin-left: -$popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: $popover-arrow-outer-fallback-color;\n border-top-color: $popover-arrow-outer-color;\n\n &::after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-bottom-width: 0;\n border-top-color: #fff;\n }\n }\n\n &.right .note-popover-arrow {\n top: 50%;\n left: -11px;\n margin-top: -$popover-arrow-width;\n border-left-width: 0;\n border-right-color: $popover-arrow-outer-fallback-color;\n border-right-color: $popover-arrow-outer-color;\n\n &::after {\n left: 1px;\n margin-top: -10px;\n content: \" \";\n border-left-width: 0;\n border-right-color: #fff;\n }\n\n }\n &.left .note-popover-arrow {\n top: 50%;\n right: -11px;\n margin-top: -$popover-arrow-width;\n border-right-width: 0;\n border-left-color: $popover-arrow-outer-fallback-color;\n border-left-color: $popover-arrow-outer-color;\n\n &::after {\n right: 1px;\n margin-top: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n }\n }\n}\n\n\n.note-popover-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border: 11px solid transparent;\n\n &::after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n\n\n content : \" \";\n border-width: 10px;\n }\n\n}\n\n.note-popover-content {\n /*max-width: $popover-max-width;*/\n padding: 3px 8px;\n color: $popover-color;\n text-align: center;\n background-color: $popover-bg;\n min-width: 100px;\n min-height: 30px;\n}\n","@import \"elements.scss\";\n\n/* Theme Variables\n ------------------------------------------ */\n$border-color: #00000032;\n$background-color: #8080801d;\n\n$img-margin-left: 10px;\n$img-margin-right: 10px;\n\n/* Layout\n ------------------------------------------ */\n.note-editor {\n position: relative;\n\n // dropzone\n $dropzone-color: lightskyblue;\n $dropzone-active-color: darken($dropzone-color, 30);\n .note-dropzone {\n position: absolute;\n display: none;\n z-index: 100;\n color: $dropzone-color;\n background-color: #fff;\n opacity: 0.95;\n\n .note-dropzone-message {\n display: table-cell;\n vertical-align: middle;\n text-align: center;\n font-size: 28px;\n font-weight: 700;\n }\n\n &.hover {\n color: $dropzone-active-color;\n }\n }\n\n &.dragover .note-dropzone {\n display: table;\n }\n\n .note-editing-area {\n position: relative;\n\n .note-editable {\n outline: none;\n\n sup {\n vertical-align: super;\n }\n\n sub {\n vertical-align: sub;\n }\n\n img.note-float-left {\n margin-right: $img-margin-right;\n }\n\n img.note-float-right {\n margin-left: $img-margin-left;\n }\n }\n }\n}\n\n/* Frame mode layout\n ------------------------------------------ */\n.note-editor.note-frame,\n.note-editor.note-airframe {\n border: 1px solid $border-color;\n\n // codeview mode\n &.codeview {\n .note-editing-area {\n .note-editable {\n display: none;\n }\n .note-codable {\n display: block;\n }\n }\n }\n\n .note-editing-area {\n overflow: hidden;\n\n // editable\n .note-editable {\n padding: 10px;\n overflow: auto;\n word-wrap: break-word;\n\n &[contenteditable=\"false\"] {\n background-color: $background-color;\n }\n }\n\n // codeable\n .note-codable {\n display: none;\n width: 100%;\n padding: 10px;\n border: none;\n box-shadow: none;\n font-family: Menlo, Monaco, monospace, sans-serif;\n font-size: 14px;\n color: #ccc;\n background-color: #222;\n resize: none;\n outline: none;\n\n // override BS2 default style\n @include box-sizing(border-box);\n @include rounded(0);\n margin-bottom: 0;\n }\n }\n\n // fullscreen mode\n &.fullscreen {\n position: fixed;\n top: 0;\n left: 0;\n width: 100% !important;\n z-index: 1050; // bs3 modal-backdrop: 1030, bs2: 1040\n .note-resizebar {\n display: none;\n }\n }\n\n // Notifications\n .note-status-output {\n display: block;\n width: 100%;\n font-size: 14px;\n line-height: 1.42857143;\n height: 20px;\n margin-bottom: 0;\n color: #000;\n border: 0;\n border-top: 1px solid #e2e2e2;\n }\n\n .note-status-output:empty {\n height: 0;\n border-top: 0 solid transparent;\n }\n\n .note-status-output .pull-right {\n float: right !important;\n }\n\n .note-status-output .text-muted {\n color: #777;\n }\n\n .note-status-output .text-primary {\n color: #286090;\n }\n\n .note-status-output .text-success {\n color: #3c763d;\n }\n\n .note-status-output .text-info {\n color: #31708f;\n }\n\n .note-status-output .text-warning {\n color: #8a6d3b;\n }\n\n .note-status-output .text-danger {\n color: #a94442;\n }\n\n .note-status-output .alert {\n margin: -7px 0 0 0;\n padding: 7px 10px 2px 10px;\n border-radius: 0;\n color: #000;\n background-color: #f5f5f5;\n }\n\n .note-status-output .alert .note-icon {\n margin-right: 5px;\n }\n\n .note-status-output .alert-success {\n color: #3c763d !important;\n background-color: #dff0d8 !important;\n }\n\n .note-status-output .alert-info {\n color: #31708f !important;\n background-color: #d9edf7 !important;\n }\n\n .note-status-output .alert-warning {\n color: #8a6d3b !important;\n background-color: #fcf8e3 !important;\n }\n\n .note-status-output .alert-danger {\n color: #a94442 !important;\n background-color: #f2dede !important;\n }\n\n // statusbar\n .note-statusbar {\n background-color: $background-color;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-top: 1px solid $border-color;\n .note-resizebar {\n padding-top: 1px;\n height: 9px;\n width: 100%;\n cursor: ns-resize;\n .note-icon-bar {\n width: 20px;\n margin: 1px auto;\n border-top: 1px solid $border-color;\n }\n }\n\n &.locked {\n .note-resizebar {\n cursor: default;\n .note-icon-bar {\n display: none;\n }\n }\n }\n }\n .note-placeholder {\n padding: 10px;\n }\n}\n\n.note-editor.note-airframe {\n border: 0;\n\n .note-editing-area {\n .note-editable {\n padding: 0;\n }\n }\n}\n\n\n/* Popover\n ------------------------------------------ */\n.note-popover.popover {\n display: none;\n max-width: none;\n\n .popover-content {\n a {\n display: inline-block;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; // for FF\n vertical-align: middle; // for FF\n }\n }\n .arrow {\n left: 20px !important;\n }\n}\n\n/* Popover and Toolbar (Button container)\n ------------------------------------------ */\n.note-toolbar {\n position: relative;\n}\n\n.note-popover .popover-content, .note-editor .note-toolbar {\n margin: 0;\n padding: 0 0 5px 5px;\n\n & > .note-btn-group {\n margin-top: 5px;\n margin-left: 0;\n margin-right: 5px;\n }\n\n .note-btn-group {\n .note-table {\n min-width: 0;\n padding: 5px;\n .note-dimension-picker {\n font-size: 18px;\n .note-dimension-picker-mousecatcher {\n position: absolute !important;\n z-index: 3;\n width: 10em;\n height: 10em;\n cursor: pointer;\n }\n .note-dimension-picker-unhighlighted {\n position: relative !important;\n z-index: 1;\n width: 5em;\n height: 5em;\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;\n }\n .note-dimension-picker-highlighted {\n position: absolute !important;\n z-index: 2;\n width: 1em;\n height: 1em;\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;\n }\n }\n }\n }\n\n .note-style {\n .dropdown-style {\n blockquote, pre {\n margin: 0;\n padding: 5px 10px;\n }\n h1, h2, h3, h4, h5, h6, p {\n margin: 0;\n padding: 0;\n }\n }\n }\n\n .note-color-all {\n .note-dropdown-menu {\n min-width: 337px;\n }\n }\n\n .note-color {\n .dropdown-toggle {\n width: 20px;\n padding-left: 5px;\n }\n .note-dropdown-menu {\n .note-palette {\n display: inline-block;\n margin: 0;\n width: 160px;\n &:first-child {\n margin: 0 5px;\n }\n\n .note-palette-title {\n font-size: 12px;\n margin: 2px 7px;\n text-align: center;\n border-bottom: 1px solid #eee;\n }\n\n .note-color-reset,\n .note-color-select {\n font-size: 11px;\n margin: 3px;\n padding: 0 3px;\n cursor: pointer;\n width: 100%;\n @include rounded(5px);\n\n &:hover {\n background: #eee;\n }\n }\n\n .note-color-row {\n height: 20px;\n }\n\n .note-color-select-btn {\n display: none;\n }\n\n .note-holder-custom {\n .note-color-btn {\n border: 1px solid #eee;\n }\n }\n }\n }\n }\n\n .note-para {\n .note-dropdown-menu {\n min-width: 228px;\n padding: 5px;\n & > div + div {\n margin-left: 5px;\n }\n }\n }\n\n // dropdown-menu for toolbar and popover\n .note-dropdown-menu {\n min-width: 160px;\n\n // dropdown-menu right position\n // http://forrst.com/posts/Bootstrap_right_positioned_dropdown-2KB\n &.right {\n right: 0;\n left: auto;\n &::before {\n right: 9px;\n left: auto !important;\n }\n &::after {\n right: 10px;\n left: auto !important;\n }\n }\n // dropdown-menu for selectbox\n &.note-check {\n a i {\n color: deepskyblue;\n visibility: hidden;\n }\n a.checked i {\n visibility: visible;\n }\n }\n }\n\n .note-fontsize-10 {\n font-size: 10px;\n }\n\n // color palette for toolbar and popover\n .note-color-palette {\n line-height: 1;\n div {\n .note-color-btn {\n width: 20px;\n height: 20px;\n padding: 0;\n margin: 0;\n border: 0;\n border-radius: 0;\n }\n .note-color-btn:hover {\n transform: scale(1.2);\n transition: all 0.2s;\n }\n }\n }\n}\n\n/* Dialog\n ------------------------------------------ */\n.note-modal {\n .modal-dialog {\n outline: 0;\n border-radius: 5px;\n @include box-shadow(0 3px 9px rgba(0,0,0,.5));\n }\n .form-group { // overwrite BS's form-horizontal minus margins\n margin-left: 0;\n margin-right: 0;\n }\n .note-modal-form {\n margin: 0; // overwrite BS2's form margin bottom\n }\n .note-image-dialog {\n .note-dropzone {\n min-height: 100px;\n font-size: 30px;\n line-height: 4; // vertical-align\n color: lightgray;\n text-align: center;\n border: 4px dashed lightgray;\n margin-bottom: 10px;\n }\n }\n\n // [workaround] firefox fileinput\n @-moz-document url-prefix() {\n .note-image-input {\n height: auto;\n }\n }\n}\n\n/* Placeholder\n ------------------------------------------ */\n.note-placeholder {\n position: absolute;\n display: none;\n color: gray;\n}\n\n/* Handle\n ------------------------------------------ */\n.note-handle {\n // control selection\n .note-control-selection {\n position: absolute;\n display: none;\n border: 1px solid #000;\n & > div {\n position: absolute;\n }\n\n .note-control-selection-bg {\n width: 100%;\n height: 100%;\n background-color: #000;\n @include opacity(0.3);\n }\n\n .note-control-handle {\n width: 7px;\n height: 7px;\n border: 1px solid #000;\n }\n\n .note-control-holder {\n @extend .note-control-handle;\n }\n\n .note-control-sizing {\n @extend .note-control-handle;\n background-color: #000;\n }\n\n .note-control-nw {\n top: -5px;\n left: -5px;\n border-right: none;\n border-bottom: none;\n }\n\n .note-control-ne {\n top: -5px;\n right: -5px;\n border-bottom: none;\n border-left: none;\n }\n\n .note-control-sw {\n bottom: -5px;\n left: -5px;\n border-top: none;\n border-right: none;\n }\n\n .note-control-se {\n right: -5px;\n bottom: -5px;\n cursor: se-resize;\n }\n\n .note-control-se.note-control-holder {\n cursor: default;\n border-top: none;\n border-left: none;\n }\n\n .note-control-selection-info {\n right: 0;\n bottom: 0;\n padding: 5px;\n margin: 5px;\n color: #fff;\n background-color: #000;\n font-size: 12px;\n @include rounded(5px);\n @include opacity(0.7);\n }\n }\n}\n\n.note-hint-popover {\n min-width: 100px;\n padding: 2px;\n\n .popover-content {\n padding: 3px;\n max-height: 150px;\n overflow: auto;\n\n .note-hint-group {\n .note-hint-item {\n display: block !important;\n padding: 3px;\n\n &.active, &:hover {\n display: block;\n clear: both;\n font-weight: 400;\n line-height: 1.4;\n color: white;\n white-space: nowrap;\n text-decoration: none;\n background-color: #428bca;\n outline: 0;\n cursor: pointer;\n }\n }\n }\n }\n}\n\n/* Handle\n ------------------------------------------ */\nhtml, body {\n .note-fullscreen-body {\n overflow: hidden !important;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/summernote-lite.min.css b/src/main/resources/static/plugins/summernote/summernote-lite.min.css new file mode 100644 index 0000000..5c5827d --- /dev/null +++ b/src/main/resources/static/plugins/summernote/summernote-lite.min.css @@ -0,0 +1,2 @@ +@font-face{font-display:auto;font-family:summernote;font-style:normal;font-weight:400;src:url(/fonts/summernote.eot?#iefix) format("embedded-opentype"),url(/fonts/summernote.woff2) format("woff2"),url(/fonts/summernote.woff) format("woff"),url(/fonts/summernote.ttf) format("truetype")}[class*=" note-icon"]:before,[class^=note-icon]:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none;display:inline-block;font-family:summernote;font-size:inherit;font-style:normal;text-decoration:inherit;text-transform:none;vertical-align:middle}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align:before{content:"\ea01"}.note-icon-align-center:before{content:"\ea02"}.note-icon-align-indent:before{content:"\ea03"}.note-icon-align-justify:before{content:"\ea04"}.note-icon-align-left:before{content:"\ea05"}.note-icon-align-outdent:before{content:"\ea06"}.note-icon-align-right:before{content:"\ea07"}.note-icon-arrow-circle-down:before{content:"\ea08"}.note-icon-arrow-circle-left:before{content:"\ea09"}.note-icon-arrow-circle-right:before{content:"\ea0a"}.note-icon-arrow-circle-up:before{content:"\ea0b"}.note-icon-arrows-alt:before{content:"\ea0c"}.note-icon-arrows-h:before{content:"\ea0d"}.note-icon-arrows-v:before{content:"\ea0e"}.note-icon-bold:before{content:"\ea0f"}.note-icon-caret:before{content:"\ea10"}.note-icon-chain-broken:before{content:"\ea11"}.note-icon-circle:before{content:"\ea12"}.note-icon-close:before{content:"\ea13"}.note-icon-code:before{content:"\ea14"}.note-icon-col-after:before{content:"\ea15"}.note-icon-col-before:before{content:"\ea16"}.note-icon-col-remove:before{content:"\ea17"}.note-icon-eraser:before{content:"\ea18"}.note-icon-float-left:before{content:"\ea19"}.note-icon-float-none:before{content:"\ea1a"}.note-icon-float-right:before{content:"\ea1b"}.note-icon-font:before{content:"\ea1c"}.note-icon-frame:before{content:"\ea1d"}.note-icon-italic:before{content:"\ea1e"}.note-icon-link:before{content:"\ea1f"}.note-icon-magic:before{content:"\ea20"}.note-icon-menu-check:before{content:"\ea21"}.note-icon-minus:before{content:"\ea22"}.note-icon-orderedlist:before{content:"\ea23"}.note-icon-pencil:before{content:"\ea24"}.note-icon-picture:before{content:"\ea25"}.note-icon-question:before{content:"\ea26"}.note-icon-redo:before{content:"\ea27"}.note-icon-rollback:before{content:"\ea28"}.note-icon-row-above:before{content:"\ea29"}.note-icon-row-below:before{content:"\ea2a"}.note-icon-row-remove:before{content:"\ea2b"}.note-icon-special-character:before{content:"\ea2c"}.note-icon-square:before{content:"\ea2d"}.note-icon-strikethrough:before{content:"\ea2e"}.note-icon-subscript:before{content:"\ea2f"}.note-icon-summernote:before{content:"\ea30"}.note-icon-superscript:before{content:"\ea31"}.note-icon-table:before{content:"\ea32"}.note-icon-text-height:before{content:"\ea33"}.note-icon-trash:before{content:"\ea34"}.note-icon-underline:before{content:"\ea35"}.note-icon-undo:before{content:"\ea36"}.note-icon-unorderedlist:before{content:"\ea37"}.note-icon-video:before{content:"\ea38"}.note-frame{border-radius:4px;-ms-box-sizing:border-box;box-sizing:border-box;color:#000;font-family:sans-serif}.note-toolbar{background-color:#f5f5f5;border-bottom:1px solid;border-color:#ddd;border-top-left-radius:3px;border-top-right-radius:3px;color:#333;padding:10px 5px}.note-btn-group{display:inline-block;margin-right:8px;position:relative}.note-btn-group>.note-btn-group{margin-right:0}.note-btn-group>.note-btn:first-child{margin-left:0}.note-btn-group .note-btn+.note-btn,.note-btn-group .note-btn+.note-btn-group,.note-btn-group .note-btn-group+.note-btn,.note-btn-group .note-btn-group+.note-btn-group{margin-left:-1px}.note-btn-group>.note-btn-group:not(:first-child)>.note-btn,.note-btn-group>.note-btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.note-btn-group>.note-btn-group:not(:last-child)>.note-btn,.note-btn-group>.note-btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.note-btn-group.open>.note-dropdown{display:block}.note-btn{background-color:#fff;background-image:none;border:1px solid #dae0e5;border-radius:3px;color:#333;cursor:pointer;display:inline-block;font-size:14px;font-weight:400;line-height:1.4;margin-bottom:0;outline:0;padding:5px 10px;text-align:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.note-btn.focus,.note-btn:focus,.note-btn:hover{background-color:#ebebeb;border-color:#dae0e5;color:#333}.note-btn.disabled.focus,.note-btn.disabled:focus,.note-btn[disabled].focus,.note-btn[disabled]:focus,fieldset[disabled] .note-btn.focus,fieldset[disabled] .note-btn:focus{background-color:#fff;border-color:#dae0e5}.note-btn.active,.note-btn.focus,.note-btn:active,.note-btn:focus,.note-btn:hover{background-color:#ebebeb;border:1px solid #dae0e5;border-radius:1px;color:#333;outline:0;text-decoration:none}.note-btn.active,.note-btn:active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.note-btn.disabled,.note-btn[disabled],fieldset[disabled] .note-btn{box-shadow:none;cursor:not-allowed;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=65);filter:alpha(opacity=65);-webkit-opacity:.65;-khtml-opacity:.65;-moz-opacity:.65;opacity:.65}.note-btn>span.note-icon-caret:first-child{margin-left:-1px}.note-btn>span.note-icon-caret:nth-child(2){margin-right:-5px;padding-left:3px}.note-btn-primary{background:#fa6362;color:#fff}.note-btn-primary.focus,.note-btn-primary:focus,.note-btn-primary:hover{background-color:#fa6362;border:1px solid #dae0e5;border-radius:1px;color:#fff;text-decoration:none}.note-btn-block{display:block;width:100%}.note-btn-block+.note-btn-block{margin-top:5px}input[type=button].note-btn-block,input[type=reset].note-btn-block,input[type=submit].note-btn-block{width:100%}button.close{-webkit-appearance:none;background:transparent;border:0;cursor:pointer;padding:0}.close{color:#000;float:right;font-size:21px;line-height:1;opacity:.2}.close:hover{-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1}.note-dropdown{position:relative}.note-color .dropdown-toggle{padding-left:5px;width:30px}.note-dropdown-menu{background:#fff;background-clip:padding-box;border:1px solid #e2e2e2;box-shadow:0 1px 1px rgba(0,0,0,.06);display:none;float:left;left:0;min-width:100px;padding:5px;position:absolute;text-align:left;top:100%;z-index:1000}.note-dropdown-menu>:last-child{margin-right:0}.note-btn-group.open .note-dropdown-menu,.note-dropdown-item{display:block}.note-dropdown-item:hover{background-color:#ebebeb}a.note-dropdown-item,a.note-dropdown-item:hover{color:#000;margin:5px 0;text-decoration:none}.note-modal{bottom:0;display:none;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);filter:alpha(opacity=100);left:0;-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1;position:fixed;right:0;top:0;z-index:1050}.note-modal.open{display:block}.note-modal-content{background:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.2);border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5);margin:30px 20px;outline:0;position:relative;width:auto}.note-modal-header{border:1px solid #ededef;padding:10px 20px}.note-modal-body{padding:20px 30px;position:relative}.note-modal-body kbd{background-color:#000;border-radius:2px;-ms-box-sizing:border-box;box-sizing:border-box;color:#fff;font-weight:700;padding:3px 5px}.note-modal-footer{height:40px;padding:10px;text-align:center}.note-modal-footer a{color:#337ab7;text-decoration:none}.note-modal-footer a:focus,.note-modal-footer a:hover{color:#23527c;text-decoration:underline}.note-modal-footer .note-btn{float:right}.note-modal-title{color:#42515f;font-size:20px;line-height:1.4;margin:0}.note-modal-backdrop{background:#000;bottom:0;display:none;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);filter:alpha(opacity=50);left:0;-webkit-opacity:.5;-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;position:fixed;right:0;top:0;z-index:1040}.note-modal-backdrop.open{display:block}@media (min-width:768px){.note-modal-content{margin:30px auto;width:600px}}@media (min-width:992px){.note-modal-content-large{width:900px}}.note-modal .note-help-block{color:#737373;display:block;margin-bottom:10px;margin-top:5px}.note-modal .note-nav{display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.note-modal .note-nav-link{-webkit-text-decoration-skip:objects;background-color:transparent;color:#007bff;display:block;padding:.5rem 1rem;text-decoration:none}.note-modal .note-nav-link:focus,.note-modal .note-nav-link:hover{color:#0056b3;text-decoration:none}.note-modal .note-nav-link.disabled{color:#868e96}.note-modal .note-nav-tabs{border-bottom:1px solid #ddd}.note-modal .note-nav-tabs .note-nav-item{margin-bottom:-1px}.note-modal .note-nav-tabs .note-nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.note-modal .note-nav-tabs .note-nav-link:focus,.note-modal .note-nav-tabs .note-nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.note-modal .note-nav-tabs .note-nav-link.disabled{background-color:transparent;border-color:transparent;color:#868e96}.note-modal .note-nav-tabs .note-nav-item.show .note-nav-link{background-color:#fff;border-color:#ddd #ddd #fff;color:#495057}.note-modal .note-tab-content{margin:15px auto}.note-modal .note-tab-content>.note-tab-pane,.note-modal .note-tab-content>.note-tab-pane:target~.note-tab-pane:last-child{display:none}.note-modal .note-tab-content>.note-tab-pane:target,.note-modal .note-tab-content>:last-child{display:block}.note-form-group{padding-bottom:20px}.note-form-group:last-child{padding-bottom:0}.note-form-label{color:#42515f;display:block;font-size:16px;font-weight:700;margin-bottom:10px;width:100%}.note-input{background:#fff;border:1px solid #ededef;-ms-box-sizing:border-box;box-sizing:border-box;display:block;font-size:14px;outline:0;padding:6px 4px;width:100%}.note-input::-webkit-input-placeholder{color:#eee}.note-input:-moz-placeholder,.note-input::-moz-placeholder{color:#eee}.note-input:-ms-input-placeholder{color:#eee}.note-tooltip{display:block;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);filter:alpha(opacity=0);font-size:13px;-webkit-opacity:0;-khtml-opacity:0;-moz-opacity:0;opacity:0;position:absolute;transition:opacity .15s;z-index:1070}.note-tooltip.in{-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=90);filter:alpha(opacity=90);-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9}.note-tooltip.top{margin-top:-3px;padding:5px 0}.note-tooltip.right{margin-left:3px;padding:0 5px}.note-tooltip.bottom{margin-top:3px;padding:5px 0}.note-tooltip.left{margin-left:-3px;padding:0 5px}.note-tooltip.bottom .note-tooltip-arrow{border-bottom-color:#000;border-width:0 5px 5px;left:50%;margin-left:-5px;top:0}.note-tooltip.top .note-tooltip-arrow{border-top-color:#000;border-width:5px 5px 0;bottom:0;left:50%;margin-left:-5px}.note-tooltip.right .note-tooltip-arrow{border-right-color:#000;border-width:5px 5px 5px 0;left:0;margin-top:-5px;top:50%}.note-tooltip.left .note-tooltip-arrow{border-left-color:#000;border-width:5px 0 5px 5px;margin-top:-5px;right:0;top:50%}.note-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.note-tooltip-content{background-color:#000;color:#fff;font-family:sans-serif;max-width:200px;padding:3px 8px;text-align:center}.note-popover{background:#fff;border:1px solid #ccc;display:block;display:none;font-family:sans-serif;font-size:13px;position:absolute;z-index:1060}.note-popover.in{display:block}.note-popover.top{margin-top:-10px;padding:5px 0}.note-popover.right{margin-left:10px;padding:0 5px}.note-popover.bottom{margin-top:10px;padding:5px 0}.note-popover.left{margin-left:-10px;padding:0 5px}.note-popover.bottom .note-popover-arrow{border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0;left:20px;margin-left:-10px;top:-11px}.note-popover.bottom .note-popover-arrow:after{border-bottom-color:#fff;border-top-width:0;content:"\0020";margin-left:-10px;top:1px}.note-popover.top .note-popover-arrow{border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px;left:20px;margin-left:-10px}.note-popover.top .note-popover-arrow:after{border-bottom-width:0;border-top-color:#fff;bottom:1px;content:"\0020";margin-left:-10px}.note-popover.right .note-popover-arrow{border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25);left:-11px;margin-top:-10px;top:50%}.note-popover.right .note-popover-arrow:after{border-left-width:0;border-right-color:#fff;content:"\0020";left:1px;margin-top:-10px}.note-popover.left .note-popover-arrow{border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0;margin-top:-10px;right:-11px;top:50%}.note-popover.left .note-popover-arrow:after{border-left-color:#fff;border-right-width:0;content:"\0020";margin-top:-10px;right:1px}.note-popover-arrow{border:11px solid transparent;height:0;position:absolute;width:0}.note-popover-arrow:after{border:10px solid transparent;content:"\0020";display:block;height:0;position:absolute;width:0}.note-popover-content{background-color:#fff;color:#000;min-height:30px;min-width:100px;padding:3px 8px;text-align:center}.note-editor{position:relative}.note-editor .note-dropzone{background-color:#fff;color:#87cefa;display:none;opacity:.95;position:absolute;z-index:100}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:700;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-airframe,.note-editor.note-frame{border:1px solid #00000032}.note-editor.note-airframe.codeview .note-editing-area .note-editable,.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-airframe.codeview .note-editing-area .note-codable,.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-airframe .note-editing-area,.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-airframe .note-editing-area .note-editable,.note-editor.note-frame .note-editing-area .note-editable{word-wrap:break-word;overflow:auto;padding:10px}.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false],.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false]{background-color:#8080801d}.note-editor.note-airframe .note-editing-area .note-codable,.note-editor.note-frame .note-editing-area .note-codable{background-color:#222;border:none;border-radius:0;box-shadow:none;-ms-box-sizing:border-box;box-sizing:border-box;color:#ccc;display:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;margin-bottom:0;outline:none;padding:10px;resize:none;width:100%}.note-editor.note-airframe.fullscreen,.note-editor.note-frame.fullscreen{left:0;position:fixed;top:0;width:100%!important;z-index:1050}.note-editor.note-airframe.fullscreen .note-resizebar,.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-airframe .note-status-output,.note-editor.note-frame .note-status-output{border:0;border-top:1px solid #e2e2e2;color:#000;display:block;font-size:14px;height:20px;line-height:1.42857143;margin-bottom:0;width:100%}.note-editor.note-airframe .note-status-output:empty,.note-editor.note-frame .note-status-output:empty{border-top:0 solid transparent;height:0}.note-editor.note-airframe .note-status-output .pull-right,.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-airframe .note-status-output .text-muted,.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-airframe .note-status-output .text-primary,.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-airframe .note-status-output .text-success,.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-airframe .note-status-output .text-info,.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-airframe .note-status-output .text-warning,.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-airframe .note-status-output .text-danger,.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-airframe .note-status-output .alert,.note-editor.note-frame .note-status-output .alert{background-color:#f5f5f5;border-radius:0;color:#000;margin:-7px 0 0;padding:7px 10px 2px}.note-editor.note-airframe .note-status-output .alert .note-icon,.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-airframe .note-status-output .alert-success,.note-editor.note-frame .note-status-output .alert-success{background-color:#dff0d8!important;color:#3c763d!important}.note-editor.note-airframe .note-status-output .alert-info,.note-editor.note-frame .note-status-output .alert-info{background-color:#d9edf7!important;color:#31708f!important}.note-editor.note-airframe .note-status-output .alert-warning,.note-editor.note-frame .note-status-output .alert-warning{background-color:#fcf8e3!important;color:#8a6d3b!important}.note-editor.note-airframe .note-status-output .alert-danger,.note-editor.note-frame .note-status-output .alert-danger{background-color:#f2dede!important;color:#a94442!important}.note-editor.note-airframe .note-statusbar,.note-editor.note-frame .note-statusbar{background-color:#8080801d;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #00000032}.note-editor.note-airframe .note-statusbar .note-resizebar,.note-editor.note-frame .note-statusbar .note-resizebar{cursor:ns-resize;height:9px;padding-top:1px;width:100%}.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{border-top:1px solid #00000032;margin:1px auto;width:20px}.note-editor.note-airframe .note-statusbar.locked .note-resizebar,.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-airframe .note-placeholder,.note-editor.note-frame .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative}.note-editor .note-toolbar,.note-popover .popover-content{margin:0;padding:0 0 5px 5px}.note-editor .note-toolbar>.note-btn-group,.note-popover .popover-content>.note-btn-group{margin-left:0;margin-right:5px;margin-top:5px}.note-editor .note-toolbar .note-btn-group .note-table,.note-popover .popover-content .note-btn-group .note-table{min-width:0;padding:5px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{cursor:pointer;height:10em;position:absolute!important;width:10em;z-index:3}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat;height:5em;position:relative!important;width:5em;z-index:1}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat;height:1em;position:absolute!important;width:1em;z-index:2}.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre,.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p,.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p{margin:0;padding:0}.note-editor .note-toolbar .note-color-all .note-dropdown-menu,.note-popover .popover-content .note-color-all .note-dropdown-menu{min-width:337px}.note-editor .note-toolbar .note-color .dropdown-toggle,.note-popover .popover-content .note-color .dropdown-toggle{padding-left:5px;width:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title{border-bottom:1px solid #eee;font-size:12px;margin:2px 7px;text-align:center}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select{border-radius:5px;cursor:pointer;font-size:11px;margin:3px;padding:0 3px;width:100%}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-editor .note-toolbar .note-para .note-dropdown-menu,.note-popover .popover-content .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div,.note-popover .popover-content .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-editor .note-toolbar .note-dropdown-menu,.note-popover .popover-content .note-dropdown-menu{min-width:160px}.note-editor .note-toolbar .note-dropdown-menu.right,.note-popover .popover-content .note-dropdown-menu.right{left:auto;right:0}.note-editor .note-toolbar .note-dropdown-menu.right:before,.note-popover .popover-content .note-dropdown-menu.right:before{left:auto!important;right:9px}.note-editor .note-toolbar .note-dropdown-menu.right:after,.note-popover .popover-content .note-dropdown-menu.right:after{left:auto!important;right:10px}.note-editor .note-toolbar .note-dropdown-menu.note-check a i,.note-popover .popover-content .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i,.note-popover .popover-content .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-editor .note-toolbar .note-fontsize-10,.note-popover .popover-content .note-fontsize-10{font-size:10px}.note-editor .note-toolbar .note-color-palette,.note-popover .popover-content .note-color-palette{line-height:1}.note-editor .note-toolbar .note-color-palette div .note-color-btn,.note-popover .popover-content .note-color-palette div .note-color-btn{border:0;border-radius:0;height:20px;margin:0;padding:0;width:20px}.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover,.note-popover .popover-content .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{border:4px dashed #d3d3d3;color:#d3d3d3;font-size:30px;line-height:4;margin-bottom:10px;min-height:100px;text-align:center}.note-placeholder{color:gray;display:none;position:absolute}.note-handle .note-control-selection{border:1px solid #000;display:none;position:absolute}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{background-color:#000;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30);height:100%;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;width:100%}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-holder,.note-handle .note-control-selection .note-control-sizing{border:1px solid #000;height:7px;width:7px}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{border-bottom:none;border-right:none;left:-5px;top:-5px}.note-handle .note-control-selection .note-control-ne{border-bottom:none;border-left:none;right:-5px;top:-5px}.note-handle .note-control-selection .note-control-sw{border-right:none;border-top:none;bottom:-5px;left:-5px}.note-handle .note-control-selection .note-control-se{bottom:-5px;cursor:se-resize;right:-5px}.note-handle .note-control-selection .note-control-se.note-control-holder{border-left:none;border-top:none;cursor:default}.note-handle .note-control-selection .note-control-selection-info{background-color:#000;border-radius:5px;bottom:0;color:#fff;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70);font-size:12px;margin:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;padding:5px;right:0}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;overflow:auto;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{background-color:#428bca;clear:both;color:#fff;cursor:pointer;display:block;font-weight:400;line-height:1.4;outline:0;text-decoration:none;white-space:nowrap}body .note-fullscreen-body,html .note-fullscreen-body{overflow:hidden!important}.note-editor .note-editing-area .note-editable table{border-collapse:collapse;width:100%}.note-editor .note-editing-area .note-editable table td,.note-editor .note-editing-area .note-editable table th{border:1px solid #ececec;padding:5px 3px}.note-editor .note-editing-area .note-editable a{background-color:inherit;color:#337ab7;font-family:inherit;font-weight:inherit;text-decoration:inherit}.note-editor .note-editing-area .note-editable a:focus,.note-editor .note-editing-area .note-editable a:hover{color:#23527c;outline:0;text-decoration:underline}.note-editor .note-editing-area .note-editable figure{margin:0}.note-modal .note-modal-body label{display:inline-block;margin-bottom:2px;padding:2px 5px}.note-modal .note-modal-body .help-list-item:hover{background-color:#e0e0e0}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.help-list-item label{display:inline-block;margin-bottom:5px} +/*# sourceMappingURL=summernote-lite.min.css.map*/ \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/summernote-lite.min.css.map b/src/main/resources/static/plugins/summernote/summernote-lite.min.css.map new file mode 100644 index 0000000..1f982b0 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/summernote-lite.min.css.map @@ -0,0 +1 @@ +{"version":3,"file":"summernote-lite.min.css","mappings":"AAMA,WAIE,kBAHA,uBACA,kBACA,gBAEA,mMCLF,CDSA,uDAOE,oBAGA,kCACA,mCACA,WAVA,qBACA,uBAEA,kBADA,kBAEA,wBAEA,oBACA,qBCJF,CDYA,cACE,kBACA,YCTF,CDYA,kBACE,wBACA,mBACA,wBCTF,CDYA,qBACE,UCTF,CDYA,sBACE,WCTF,CDaE,+BACE,iBCVJ,CDYE,gCACE,gBCVJ,CDgCA,wBACE,eC7BF,CDgCA,+BACE,eC7BF,CDgCA,+BACE,eC7BF,CDgCA,gCACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,gCACE,eC7BF,CDgCA,8BACE,eC7BF,CDgCA,oCACE,eC7BF,CDgCA,oCACE,eC7BF,CDgCA,qCACE,eC7BF,CDgCA,kCACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,2BACE,eC7BF,CDgCA,2BACE,eC7BF,CDgCA,uBACE,eC7BF,CDgCA,wBACE,eC7BF,CDgCA,+BACE,eC7BF,CDgCA,yBACE,eC7BF,CDgCA,wBACE,eC7BF,CDgCA,uBACE,eC7BF,CDgCA,4BACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,yBACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,8BACE,eC7BF,CDgCA,uBACE,eC7BF,CDgCA,wBACE,eC7BF,CDgCA,yBACE,eC7BF,CDgCA,uBACE,eC7BF,CDgCA,wBACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,wBACE,eC7BF,CDgCA,8BACE,eC7BF,CDgCA,yBACE,eC7BF,CDgCA,0BACE,eC7BF,CDgCA,2BACE,eC7BF,CDgCA,uBACE,eC7BF,CDgCA,2BACE,eC7BF,CDgCA,4BACE,eC7BF,CDgCA,4BACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,oCACE,eC7BF,CDgCA,yBACE,eC7BF,CDgCA,gCACE,eC7BF,CDgCA,4BACE,eC7BF,CDgCA,6BACE,eC7BF,CDgCA,8BACE,eC7BF,CDgCA,wBACE,eC7BF,CDgCA,8BACE,eC7BF,CDgCA,wBACE,eC7BF,CDgCA,4BACE,eC7BF,CDgCA,uBACE,eC7BF,CDgCA,gCACE,eC7BF,CDgCA,wBACE,eC7BF,CC9QA,YAIE,kBC0GA,yBD7GoB,CCgHpB,qBDhHoB,CACpB,WACA,sBDqRF,CGxRA,cAIE,yBACA,0CACA,2BACA,4BAJA,WAFA,gBHiSF,CIlSA,gBAEE,qBACA,iBAFA,iBJuSF,CInSE,gCACE,cJqSJ,CIlSE,sCACE,aJoSJ,CIjSE,wKAIE,gBJmSJ,CIhSE,wGAGI,4BADA,wBJmSN,CI/RE,4HAGE,6BADA,yBJkSJ,CI7RI,oCACE,aJ+RN,CKjUA,UCOE,qBCqBe,CFpBf,sBCAA,wBCqBmB,CDSnB,iBCnBmB,CDbnB,UCqBmB,CFpBnB,eANA,qBCmCA,cC3BU,CFPV,gBCmCA,eCxBY,CFVZ,gBAQA,UCwBA,iBD/BA,kBAEA,0BH8GA,wBGtGqB,CHuGrB,qBGvGqB,CHwGrB,oBGxGqB,CHyGrB,gBGzGqB,CATrB,sBAKA,kBLgVF,CM1UE,gDAHE,wBCiBmB,CDhBnB,oBCeiB,CDjBjB,UNwVJ,CM3UI,4KAEE,qBCCW,CDAX,oBN4UN,CK7UE,kFALE,wBEQmB,CFTnB,yBH2BF,iBGxBmB,CALjB,UEQiB,CFJjB,UAHA,oBL0WJ,CKnWE,kCAGE,sBAQA,2CLwVJ,CKrVE,oEHkEA,eG7DsB,CAFpB,kBEHc,CL8BhB,+DACA,yBANA,mBGrBmB,CHsBnB,kBGtBmB,CHuBnB,gBGvBmB,CHwBnB,WFqUF,CKzVE,2CACE,gBL2VJ,CKxVE,4CAEE,kBADA,gBL2VJ,CKtVA,kBACE,mBACA,ULyVF,CKvVE,wEAME,yBADA,yBHpBF,iBGsBmB,CAJjB,WACA,oBL4VJ,CKpVA,gBACE,cACA,ULuVF,CKpVA,gCACE,cLuVF,CKhVE,qGACE,ULqVJ,CKjVA,aAKE,wBAFA,uBACA,SAFA,eADA,SLwVF,CKjVA,OAIE,WAHA,YACA,eACA,cAEA,ULoVF,CKjVA,aAIO,8BACI,0BAJT,kBACC,iBACE,eAGK,SLoVV,CQvcA,eACE,iBR0cF,CQtcE,6BAEE,iBADA,UR0cJ,CQtcA,oBASE,eD8BkB,CC3BlB,4BAFA,yBNuFA,oCMpFoB,CAZpB,aAMA,WAFA,OAHA,gBASA,YARA,kBAKA,gBAJA,SAEA,YRkdF,CQzcE,gCACE,cR2cJ,CQncA,6DACE,aR0cF,CQxcE,0BACE,wBR0cJ,CQtcA,gDAGE,WADA,aAEA,oBRycF,CSvfA,YAKE,SAGA,aP+DA,gEACA,0BOtEA,OPgEA,iBO3DiB,CP4DjB,gBO5DiB,CP6DjB,cO7DiB,CP8DjB,SO9DiB,CANjB,eAEA,QACA,MAEA,YTigBF,CS7fE,iBACE,aT+fJ,CS3fA,oBAKE,eFuDiB,CEtDjB,2BAFA,gCAIA,kBPoFA,mCOnFoB,CANpB,iBAIA,UANA,kBACA,UTugBF,CS7fA,mBAEE,yBADA,iBTigBF,CS7fA,iBAEE,kBADA,iBTigBF,CS7fE,qBAEE,sBADA,kBPwEF,yBADyB,CAIzB,qBAJyB,COrEvB,WAEA,gBADA,eTogBJ,CS9fA,mBACE,YACA,aACA,iBTigBF,CS7fA,qBACE,cACA,oBTggBF,CS7fA,sDAEE,cACA,yBTggBF,CS7fA,6BACE,WTggBF,CS7fA,kBAEE,cADA,eAGA,gBADA,QTigBF,CS7fA,qBAOE,eFLkB,CEElB,SAKA,aPdA,+DACA,yBOMA,OPZA,kBOkBiB,CPjBjB,iBOiBiB,CPhBjB,eOgBiB,CPfjB,UOeiB,CAPjB,eAEA,QAEA,MACA,YTwgBF,CSngBE,0BACE,aTqgBJ,CS/fA,yBAEE,oBAEE,iBADA,WTkgBA,CACJ,CS9fA,yBACE,0BACE,WTggBA,CACJ,CS3fE,6BAIE,cAHA,cAEA,mBADA,cT+fJ,CS1fE,sBAEE,aAEI,eAGJ,gBADA,gBADA,cT8fJ,CSzfE,2BAME,qCADA,6BAFA,cAFA,cACA,mBAEA,oBT6fJ,CSxfE,kEAEE,cACA,oBT0fJ,CSvfE,oCACE,aTyfJ,CStfE,2BACE,4BTwfJ,CSrfE,0CACE,kBTufJ,CSpfE,0CACE,6BACA,8BACA,8BTsfJ,CSnfE,gGAEE,iCTqfJ,CSlfE,mDAEE,6BACA,yBAFA,aTsfJ,CSjfE,8DAEE,sBACA,4BAFA,aTqfJ,CShfE,8BACE,gBTkfJ,CS/eE,2HAEE,YTifJ,CS/eE,8FAEE,aTifJ,CU5qBA,iBACE,mBV+qBF,CU5qBA,4BACE,gBV+qBF,CU5qBA,iBAIE,cAHA,cAEA,eAGA,gBADA,mBAHA,UVmrBF,CU5qBA,YAIE,gBADA,yBR0FA,yBADyB,CAIzB,qBAJyB,CQ1FzB,cAKA,eAFA,UACA,gBALA,UVyrBF,CU9qBA,uCACE,UVirBF,CU1qBA,2DACE,UVmrBF,CUhrBA,kCACE,UVmrBF,CW7tBA,cAGE,cToEA,8DACA,wBSlEA,eT4DA,iBSzDiB,CT0DjB,gBS1DiB,CT2DjB,cS3DiB,CT4DjB,SS5DiB,CARjB,kBAOA,wBANA,YXyuBF,CWhuBE,iBT4DA,+DACA,yBANA,kBKXiB,CLYjB,iBKZiB,CLajB,eKbiB,CLcjB,UF8qBF,CWvuBE,kBAAW,gBAAmB,aX2uBhC,CW1uBE,oBAAW,gBAAmB,aX8uBhC,CW7uBE,qBAAW,eAAmB,aXivBhC,CWhvBE,mBAAW,iBAAmB,aXovBhC,CWhvBE,yCAKE,wBJ8Be,CI/Bf,uBAFA,SACA,iBAFA,KXuvBJ,CWhvBE,sCAKE,qBJsBe,CIvBf,uBAHA,SACA,SACA,gBXovBJ,CW/uBE,wCAKE,uBJce,CIff,2BAFA,OACA,gBAFA,OXqvBJ,CW/uBE,uCAKE,sBJOe,CIRf,2BADA,gBADA,QADA,OXqvBJ,CW5uBA,oBAIE,yBACA,mBAFA,SAFA,kBACA,OXkvBF,CW5uBA,sBAME,qBJZiB,CIUjB,UJXiB,CISjB,sBJtDY,CIqDZ,eJTiB,CIWjB,gBAEA,iBXgvBF,CYjzBA,cAUE,eLiDc,CK/Cd,sBATA,cAMA,aAFA,sBLCY,CKFZ,eALA,kBACA,YZ2zBF,CY/yBE,iBAAW,aZkzBb,CYjzBE,kBAAW,iBAAoB,aZqzBjC,CYpzBE,oBAAW,iBAAoB,aZwzBjC,CYvzBE,qBAAW,gBAAoB,aZ2zBjC,CY1zBE,mBAAW,kBAAoB,aZ8zBjC,CY1zBE,yCAKE,wBL0CkC,CKzClC,mCLwCuB,CK1CvB,mBAFA,UACA,kBAFA,SZk0BJ,CY3zBI,+CAKE,yBADA,mBADA,gBADA,kBADA,OZi0BN,CYzzBE,sCAIE,sBACA,qBLyBkC,CKxBlC,gCLuBuB,CK5BvB,aACA,UACA,iBZ8zBJ,CYzzB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","sources":["webpack://summernote/./src/styles/summernote/font.scss","webpack://summernote/./src/styles/lite/summernote-lite.scss","webpack://summernote/./src/styles/lite/scss/common.scss","webpack://summernote/./src/styles/summernote/elements.scss","webpack://summernote/./src/styles/lite/scss/toolbar.scss","webpack://summernote/./src/styles/lite/scss/btn-group.scss","webpack://summernote/./src/styles/lite/scss/buttons.scss","webpack://summernote/./src/styles/lite/scss/mixins/buttons.scss","webpack://summernote/./src/styles/lite/scss/variables.scss","webpack://summernote/./src/styles/lite/scss/dropdown.scss","webpack://summernote/./src/styles/lite/scss/modal.scss","webpack://summernote/./src/styles/lite/scss/form.scss","webpack://summernote/./src/styles/lite/scss/tooltip.scss","webpack://summernote/./src/styles/lite/scss/popover.scss","webpack://summernote/./src/styles/summernote/common.scss"],"sourcesContent":["// Variables\n\n$sni-css-prefix: note-icon !default;\n\n// Path\n\n@font-face {\n font-family: \"summernote\";\n font-style: normal;\n font-weight: 400;\n font-display: auto;\n src: url(\"./fonts/summernote.eot?#iefix\") format(\"embedded-opentype\"), url(\"./fonts/summernote.woff2\") format(\"woff2\"), url(\"./fonts/summernote.woff\") format(\"woff\"), url(\"./fonts/summernote.ttf\") format(\"truetype\");}\n\n// Core\n\n[class^=\"#{$sni-css-prefix}\"]:before,\n[class*=\" #{$sni-css-prefix}\"]:before {\n display: inline-block;\n font-family: \"summernote\";\n font-style: normal;\n font-size: inherit;\n text-decoration: inherit;\n text-rendering: auto;\n text-transform: none;\n vertical-align: middle;\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n speak: none;\n}\n\n// Extras\n\n.#{$sni-css-prefix}-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.#{$sni-css-prefix}-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.#{$sni-css-prefix}-pull-left {\n float: left;\n}\n\n.#{$sni-css-prefix}-pull-right {\n float: right;\n}\n\n.#{$sni-css-prefix} {\n &.#{$sni-css-prefix}-pull-left {\n margin-right: 0.3em;\n }\n &.#{$sni-css-prefix}-pull-right {\n margin-left: 0.3em;\n }\n}\n\n// Functions\n\n@function char($character-code) {\n @if function-exists(\"selector-append\") {\n @return unquote(\"\\\"\\\\#{$character-code}\\\"\");\n }\n\n @if \"\\\\#{'x'}\" == \"\\\\x\" {\n @return str-slice(\"\\x\", 1, 1) + $character-code;\n }\n @else {\n @return #{\"\\\"\\\\\"}#{$character-code + \"\\\"\"};\n }\n}\n\n// Icons\n\n\n.note-icon-align::before {\n content: \"\\ea01\";\n}\n\n.note-icon-align-center::before {\n content: \"\\ea02\";\n}\n\n.note-icon-align-indent::before {\n content: \"\\ea03\";\n}\n\n.note-icon-align-justify::before {\n content: \"\\ea04\";\n}\n\n.note-icon-align-left::before {\n content: \"\\ea05\";\n}\n\n.note-icon-align-outdent::before {\n content: \"\\ea06\";\n}\n\n.note-icon-align-right::before {\n content: \"\\ea07\";\n}\n\n.note-icon-arrow-circle-down::before {\n content: \"\\ea08\";\n}\n\n.note-icon-arrow-circle-left::before {\n content: \"\\ea09\";\n}\n\n.note-icon-arrow-circle-right::before {\n content: \"\\ea0a\";\n}\n\n.note-icon-arrow-circle-up::before {\n content: \"\\ea0b\";\n}\n\n.note-icon-arrows-alt::before {\n content: \"\\ea0c\";\n}\n\n.note-icon-arrows-h::before {\n content: \"\\ea0d\";\n}\n\n.note-icon-arrows-v::before {\n content: \"\\ea0e\";\n}\n\n.note-icon-bold::before {\n content: \"\\ea0f\";\n}\n\n.note-icon-caret::before {\n content: \"\\ea10\";\n}\n\n.note-icon-chain-broken::before {\n content: \"\\ea11\";\n}\n\n.note-icon-circle::before {\n content: \"\\ea12\";\n}\n\n.note-icon-close::before {\n content: \"\\ea13\";\n}\n\n.note-icon-code::before {\n content: \"\\ea14\";\n}\n\n.note-icon-col-after::before {\n content: \"\\ea15\";\n}\n\n.note-icon-col-before::before {\n content: \"\\ea16\";\n}\n\n.note-icon-col-remove::before {\n content: \"\\ea17\";\n}\n\n.note-icon-eraser::before {\n content: \"\\ea18\";\n}\n\n.note-icon-float-left::before {\n content: \"\\ea19\";\n}\n\n.note-icon-float-none::before {\n content: \"\\ea1a\";\n}\n\n.note-icon-float-right::before {\n content: \"\\ea1b\";\n}\n\n.note-icon-font::before {\n content: \"\\ea1c\";\n}\n\n.note-icon-frame::before {\n content: \"\\ea1d\";\n}\n\n.note-icon-italic::before {\n content: \"\\ea1e\";\n}\n\n.note-icon-link::before {\n content: \"\\ea1f\";\n}\n\n.note-icon-magic::before {\n content: \"\\ea20\";\n}\n\n.note-icon-menu-check::before {\n content: \"\\ea21\";\n}\n\n.note-icon-minus::before {\n content: \"\\ea22\";\n}\n\n.note-icon-orderedlist::before {\n content: \"\\ea23\";\n}\n\n.note-icon-pencil::before {\n content: \"\\ea24\";\n}\n\n.note-icon-picture::before {\n content: \"\\ea25\";\n}\n\n.note-icon-question::before {\n content: \"\\ea26\";\n}\n\n.note-icon-redo::before {\n content: \"\\ea27\";\n}\n\n.note-icon-rollback::before {\n content: \"\\ea28\";\n}\n\n.note-icon-row-above::before {\n content: \"\\ea29\";\n}\n\n.note-icon-row-below::before {\n content: \"\\ea2a\";\n}\n\n.note-icon-row-remove::before {\n content: \"\\ea2b\";\n}\n\n.note-icon-special-character::before {\n content: \"\\ea2c\";\n}\n\n.note-icon-square::before {\n content: \"\\ea2d\";\n}\n\n.note-icon-strikethrough::before {\n content: \"\\ea2e\";\n}\n\n.note-icon-subscript::before {\n content: \"\\ea2f\";\n}\n\n.note-icon-summernote::before {\n content: \"\\ea30\";\n}\n\n.note-icon-superscript::before {\n content: \"\\ea31\";\n}\n\n.note-icon-table::before {\n content: \"\\ea32\";\n}\n\n.note-icon-text-height::before {\n content: \"\\ea33\";\n}\n\n.note-icon-trash::before {\n content: \"\\ea34\";\n}\n\n.note-icon-underline::before {\n content: \"\\ea35\";\n}\n\n.note-icon-undo::before {\n content: \"\\ea36\";\n}\n\n.note-icon-unorderedlist::before {\n content: \"\\ea37\";\n}\n\n.note-icon-video::before {\n content: \"\\ea38\";\n}\n\n","// Core variables and mixins\n@import '../summernote/font.scss';\n@import '../summernote/elements.scss';\n@import \"scss/variables.scss\";\n@import \"scss/mixins.scss\";\n\n@import \"scss/common.scss\";\n@import \"scss/toolbar.scss\";\n@import \"scss/btn-group.scss\";\n@import \"scss/buttons.scss\";\n@import \"scss/dropdown.scss\";\n@import \"scss/modal.scss\";\n@import \"scss/form.scss\";\n@import \"scss/tooltip.scss\";\n@import \"scss/popover.scss\";\n\n@import '../summernote/common.scss';\n\n.note-editor {\n .note-editing-area {\n .note-editable {\n table {\n width: 100%;\n border-collapse: collapse;\n\n td, th {\n border: 1px solid #ececec;\n padding: 5px 3px;\n }\n }\n\n a {\n background-color: inherit;\n text-decoration: inherit;\n font-family: inherit;\n font-weight: inherit;\n color: #337ab7;\n }\n\n a:hover,\n a:focus {\n color: #23527c;\n text-decoration: underline;\n outline: 0;\n }\n\n figure {\n margin: 0;\n }\n }\n }\n}\n\n/* Dialog\n ------------------------------------------*/\n.note-modal {\n .note-modal-body {\n label {\n margin-bottom: 2px;\n padding: 2px 5px;\n display: inline-block;\n }\n\n .help-list-item:hover {\n background-color: #e0e0e0;\n }\n }\n\n // [workaround] firefox fileinput\n @-moz-document url-prefix() {\n .note-image-input {\n height: auto;\n }\n }\n}\n\n\n.help-list-item {\n label {\n margin-bottom:5px;\n display:inline-block;\n }\n}\n",".note-frame {\n @include box-sizing(border-box);\n color: #000;\n font-family: $font-family;\n border-radius: 4px;\n}\n","@mixin gradient($color: #F5F5F5, $start: #EEE, $stop: #FFF) {\n background: $color;\n background: -webkit-gradient(linear,\n left bottom,\n left top,\n color-stop(0, $start),\n color-stop(1, $stop));\n background: -ms-linear-gradient(bottom,\n $start,\n $stop);\n background: -moz-linear-gradient(center bottom,\n $start 0%,\n $stop 100%);\n background: -o-linear-gradient($stop,\n $start);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($stop)}', endColorstr='#{ie-hex-str($start)}', GradientType=0);\n}\n@mixin bw-gradient($color: #F5F5F5, $start: 0, $stop: 255) {\n background: $color;\n background: -webkit-gradient(linear,\n left bottom,\n left top,\n color-stop(0, rgb($start,$start,$start)),\n color-stop(1, rgb($stop,$stop,$stop)));\n background: -ms-linear-gradient(bottom,\n rgb($start,$start,$start) 0%,\n rgb($stop,$stop,$stop) 100%);\n background: -moz-linear-gradient(center bottom,\n rgb($start,$start,$start) 0%,\n rgb($stop,$stop,$stop) 100%);\n background: -o-linear-gradient(rgb($stop,$stop,$stop),\n rgb($start,$start,$start));\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(rgb($stop,$stop,$stop))}', endColorstr='#{ie-hex-str(rgb($start,$start,$start))}', GradientType=0);\n}\n@mixin bordered($top-color: #EEE, $right-color: #EEE, $bottom-color: #EEE, $left-color: #EEE) {\n border-top: solid 1px $top-color;\n border-left: solid 1px $left-color;\n border-right: solid 1px $right-color;\n border-bottom: solid 1px $bottom-color;\n}\n@mixin drop-shadow($x-axis: 0, $y-axis: 1px, $blur: 2px, $alpha: 0.1) {\n -webkit-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);\n -moz-box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);\n box-shadow: $x-axis $y-axis $blur rgba(0, 0, 0, $alpha);\n}\n@mixin rounded($radius: 2px) {\n -webkit-border-radius: $radius;\n -moz-border-radius: $radius;\n border-radius: $radius;\n}\n@mixin border-radius($topright: 0, $bottomright: 0, $bottomleft: 0, $topleft: 0) {\n -webkit-border-top-right-radius: $topright;\n -webkit-border-bottom-right-radius: $bottomright;\n -webkit-border-bottom-left-radius: $bottomleft;\n -webkit-border-top-left-radius: $topleft;\n -moz-border-radius-topright: $topright;\n -moz-border-radius-bottomright: $bottomright;\n -moz-border-radius-bottomleft: $bottomleft;\n -moz-border-radius-topleft: $topleft;\n border-top-right-radius: $topright;\n border-bottom-right-radius: $bottomright;\n border-bottom-left-radius: $bottomleft;\n border-top-left-radius: $topleft;\n @include background-clip(padding-box);\n}\n@mixin opacity($opacity: 0.5) {\n -webkit-opacity: $opacity;\n -khtml-opacity: $opacity;\n -moz-opacity: $opacity;\n opacity: $opacity;\n $opperc: $opacity * 100;\n -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=#{$opperc});\n filter: alpha(opacity=$opperc);\n}\n@mixin transition-duration($duration: 0.2s) {\n -moz-transition-duration: $duration;\n -webkit-transition-duration: $duration;\n -o-transition-duration: $duration;\n transition-duration: $duration;\n}\n@mixin transform($arguments...) {\n -webkit-transform: $arguments;\n -moz-transform: $arguments;\n -o-transform: $arguments;\n -ms-transform: $arguments;\n transform: $arguments;\n}\n@mixin rotation($deg:5deg) {\n @include transform(rotate($deg));\n}\n@mixin scale($ratio:1.5) {\n @include transform(scale($ratio));\n}\n@mixin transition($duration:0.2s, $ease:ease-out) {\n -webkit-transition: all $duration $ease;\n -moz-transition: all $duration $ease;\n -o-transition: all $duration $ease;\n transition: all $duration $ease;\n}\n@mixin inner-shadow($horizontal:0, $vertical:1px, $blur:2px, $alpha: 0.4) {\n -webkit-box-shadow: inset $horizontal $vertical $blur rgba(0, 0, 0, $alpha);\n -moz-box-shadow: inset $horizontal $vertical $blur rgba(0, 0, 0, $alpha);\n box-shadow: inset $horizontal $vertical $blur rgba(0, 0, 0, $alpha);\n}\n@mixin box-shadow($arguments) {\n -webkit-box-shadow: $arguments;\n -moz-box-shadow: $arguments;\n box-shadow: $arguments;\n}\n@mixin box-sizing($sizing: border-box) {\n -ms-box-sizing: $sizing;\n -moz-box-sizing: $sizing;\n -webkit-box-sizing: $sizing;\n box-sizing: $sizing;\n}\n@mixin user-select($argument: none) {\n -webkit-user-select: $argument;\n -moz-user-select: $argument;\n -ms-user-select: $argument;\n user-select: $argument;\n}\n@mixin columns($colwidth: 250px, $colcount: 0, $colgap: 50px, $columnRuleColor: #EEE, $columnRuleStyle: solid, $columnRuleWidth: 1px) {\n -moz-column-width: $colwidth;\n -moz-column-count: $colcount;\n -moz-column-gap: $colgap;\n -moz-column-rule-color: $columnRuleColor;\n -moz-column-rule-style: $columnRuleStyle;\n -moz-column-rule-width: $columnRuleWidth;\n -webkit-column-width: $colwidth;\n -webkit-column-count: $colcount;\n -webkit-column-gap: $colgap;\n -webkit-column-rule-color: $columnRuleColor;\n -webkit-column-rule-style: $columnRuleStyle;\n -webkit-column-rule-width: $columnRuleWidth;\n column-width: $colwidth;\n column-count: $colcount;\n column-gap: $colgap;\n column-rule-color: $columnRuleColor;\n column-rule-style: $columnRuleStyle;\n column-rule-width: $columnRuleWidth;\n}\n@mixin translate($x:0, $y:0) {\n @include transform(translate($x, $y));\n}\n@mixin background-clip($argument: padding-box) {\n -moz-background-clip: $argument;\n -webkit-background-clip: $argument;\n background-clip: $argument;\n}\n",".note-toolbar {\n padding: 10px 5px;\n border-bottom: 1px solid #e2e2e2;\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n",".note-btn-group {\n position: relative;\n display: inline-block;\n margin-right: 8px;\n\n > .note-btn-group {\n margin-right: 0;\n }\n\n > .note-btn:first-child {\n margin-left: 0;\n }\n\n .note-btn + .note-btn,\n .note-btn + .note-btn-group,\n .note-btn-group + .note-btn,\n .note-btn-group + .note-btn-group {\n margin-left: -1px;\n }\n\n > .note-btn:not(:first-child),\n > .note-btn-group:not(:first-child) > .note-btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n > .note-btn:not(:last-child):not(.dropdown-toggle),\n > .note-btn-group:not(:last-child) > .note-btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &.open {\n > .note-dropdown {\n display: block;\n }\n }\n}\n",".note-btn {\n display: inline-block;\n font-weight: 400;\n margin-bottom: 0;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid $btn-default-border;\n white-space: nowrap;\n outline: 0;\n @include button-maker($btn-default-color, $btn-default-bg, $btn-default-hover-bg, $btn-default-active-bg, $btn-default-border);\n @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size, $line-height, $btn-border-radius-base);\n @include user-select(none);\n\n &:hover,\n &:focus,\n &.focus {\n color: $btn-default-color;\n text-decoration: none;\n border: 1px solid $btn-default-border;\n background-color: $btn-default-hover-bg;\n outline: 0;\n @include rounded(1px);\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n color: #333;\n text-decoration: none;\n border: 1px solid #dae0e5;\n background-color: #ebebeb;\n outline: 0;\n border-radius: 1px;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: $cursor-disabled;\n @include opacity(.65);\n @include box-shadow(none);\n }\n\n & > span.note-icon-caret:first-child {\n margin-left: -1px;\n }\n\n & > span.note-icon-caret:nth-child(2) {\n padding-left: 3px;\n margin-right: -5px;\n }\n}\n\n.note-btn-primary {\n background: #fa6362;\n color: #fff;\n\n &:hover,\n &:focus,\n &.focus {\n color: #fff;\n text-decoration: none;\n border: 1px solid $btn-default-border;\n background-color: #fa6362;\n @include rounded(1px);\n }\n\n}\n\n.note-btn-block {\n display: block;\n width: 100%;\n}\n\n.note-btn-block + .note-btn-block {\n margin-top:5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.note-btn-block {\n width: 100%;\n }\n}\n\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.close {\n float: right;\n font-size: 21px;\n line-height: 1;\n color: #000;\n opacity: .2;\n}\n\n.close:hover {\n -webkit-opacity: 1;\n -khtml-opacity: 1;\n -moz-opacity: 1;\n -ms-filter: alpha(opacity=100);\n filter: alpha(opacity=100);\n opacity: 1\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-maker($color, $background, $focusBackground, $activeBackground, $border) {\n color: $color;\n background-color: $background;\n border-color: $border;\n\n &:focus,\n &.focus {\n color: $color;\n background-color: $focusBackground;\n border-color: $border;\n }\n &:hover {\n color: $color;\n background-color: $focusBackground;\n border-color: $border;\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:focus,\n &.focus {\n background-color: $background;\n border-color: $border;\n }\n }\n}\n\n// Button sizes\n@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {\n padding: $padding-vertical $padding-horizontal;\n font-size: $font-size;\n line-height: $line-height;\n border-radius: $border-radius;\n}\n","\n$gray-base: #000;\n$gray-darker: lighten($gray-base, 13.5%); // #222\n$gray-dark: lighten($gray-base, 20%); // #333\n$gray: lighten($gray-base, 33.5%); // #555\n$gray-light: lighten($gray-base, 46.7%); // #777\n$gray-lighter:lighten($gray-base, 93.5%); // #eee\n\n$font-family: sans-serif;\n$font-size: 14px;\n$font-size-large: ceil(($font-size * 1.25));\n$font-size-small: ceil(($font-size * 0.85));\n\n$line-height: 1.4;\n$line-height-computed: floor(($line-height * $font-size));\n\n$padding-base-vertical: 5px;\n$padding-base-horizontal: 10px;\n\n$border-radius-base: 3px;\n$btn-border-radius-base: $border-radius-base;\n\n$icon-font-path: \"../fonts/\";\n$icon-font-name: \"summernote\";\n$icon-font-svg-id: \"summernote\";\n\n$btn-font-weight: normal;\n$btn-default-color : #333;\n$btn-default-bg: #fff;\n$btn-default-border: #dae0e5;\n$btn-default-hover-bg: #ebebeb;\n$btn-default-active-bg: #f0f0f0;\n\n$input-bg: #fff;\n$input-bg-disabled: $gray-lighter;\n$input-color: $gray;\n$input-border: #ccc;\n\n$input-border-focus: #66afe9;\n$input-color-placeholder: #999;\n\n$cursor-disabled: not-allowed;\n\n$zindex-dropdown: 1000;\n$zindex-popover:1060;\n$zindex-tooltip:1070;\n$zindex-modal-background: 1040;\n$zindex-modal: 1050;\n\n$dropdown-color-bg: #fff;\n$dropdown-color-border: #e2e2e2;\n\n$tooltip-max-width:200px;\n$tooltip-color: #fff;\n$tooltip-bg: #000;\n$tooltip-opacity: .9;\n$tooltip-arrow-width: 5px;\n$tooltip-arrow-color: $tooltip-bg;\n\n$popover-bg: #ffffff;\n$popover-color: #000;\n$popover-max-width: 276px;\n$popover-border-color: rgba(0,0,0,.2);\n$popover-fallback-border-color: #ccc;\n$popover-title-bg: darken($popover-bg, 3%);\n$popover-arrow-width: 10px;\n$popover-arrow-color: $popover-bg;\n$popover-arrow-outer-width:($popover-arrow-width + 1);\n$popover-arrow-outer-color:fade-in($popover-border-color, .05);\n$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%);\n\n\n$modal-inner-padding: 15px;\n$modal-title-padding: 15px;\n$modal-title-line-height: $line-height;\n$modal-content-bg: #fff;\n$modal-content-border-color: rgba(0,0,0,.2);\n$modal-content-fallback-border-color: #999;\n$modal-backdrop-bg: #000;\n$modal-backdrop-opacity: .5;\n$modal-header-border-color: #e5e5e5;\n$modal-footer-border-color: $modal-header-border-color;\n",".note-dropdown {\n position: relative;\n\n}\n.note-color {\n .dropdown-toggle {\n width: 30px;\n padding-left: 5px;\n }\n}\n.note-dropdown-menu {\n display: none;\n min-width: 100px;\n position: absolute;\n top: 100%;\n left: 0;\n z-index : $zindex-dropdown;\n float: left;\n text-align:left;\n background: $dropdown-color-bg;\n border: 1px solid $dropdown-color-border;\n padding: 5px;\n background-clip: padding-box;\n @include box-shadow(0 1px 1px rgba(0,0,0,.06));\n\n > *:last-child {\n margin-right: 0;\n }\n}\n\n.note-btn-group.open .note-dropdown-menu {\n display: block;\n}\n\n.note-dropdown-item {\n display: block;\n\n &:hover {\n background-color: $btn-default-hover-bg;\n }\n}\n\na.note-dropdown-item,\na.note-dropdown-item:hover {\n margin: 5px 0;\n color: #000;\n text-decoration: none;\n}\n",".note-modal {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: $zindex-modal;\n @include opacity(1);\n display: none;\n\n &.open {\n display:block;\n }\n}\n\n.note-modal-content {\n position: relative;\n width: auto;\n margin: 30px 20px;\n border: 1px solid $modal-content-border-color;\n background: $modal-content-bg;\n background-clip: border-box;\n outline: 0;\n border-radius: 5px;\n @include box-shadow(0 3px 9px rgba(0,0,0,.5));\n}\n\n.note-modal-header {\n padding: 10px 20px;\n border: 1px solid #ededef;\n}\n\n.note-modal-body {\n position: relative;\n padding: 20px 30px;\n\n // shortcut text style\n kbd {\n border-radius: 2px;\n background-color: #000;\n color: #fff;\n padding: 3px 5px;\n font-weight: 700;\n @include box-sizing();\n }\n}\n\n.note-modal-footer {\n height: 40px;\n padding: 10px;\n text-align: center;\n\n}\n\n.note-modal-footer a {\n color: #337ab7;\n text-decoration: none\n}\n\n.note-modal-footer a:hover,\n.note-modal-footer a:focus {\n color: #23527c;\n text-decoration: underline\n}\n\n.note-modal-footer .note-btn {\n float: right\n}\n\n.note-modal-title {\n font-size: 20px;\n color: #42515f;\n margin: 0;\n line-height: 1.4;\n}\n\n.note-modal-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: $zindex-modal-background;\n background: $modal-backdrop-bg;\n @include opacity(0.5);\n display: none;\n\n &.open {\n display: block;\n }\n}\n\n\n// Scale up the modal\n@media (min-width: 768px) {\n // Automatically set modal's width for larger viewports\n .note-modal-content {\n width: 600px;\n margin: 30px auto;\n }\n}\n\n@media (min-width: 992px) {\n .note-modal-content-large {\n width: 900px;\n }\n}\n\n.note-modal {\n\n .note-help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n }\n\n .note-nav {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n }\n\n .note-nav-link {\n display: block;\n padding: 0.5rem 1rem;\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n }\n\n .note-nav-link:focus,\n .note-nav-link:hover {\n color: #0056b3;\n text-decoration: none;\n }\n\n .note-nav-link.disabled {\n color: #868e96;\n }\n\n .note-nav-tabs {\n border-bottom: 1px solid #ddd;\n }\n\n .note-nav-tabs .note-nav-item {\n margin-bottom: -1px;\n }\n\n .note-nav-tabs .note-nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n\n .note-nav-tabs .note-nav-link:focus,\n .note-nav-tabs .note-nav-link:hover {\n border-color: #e9ecef #e9ecef #ddd;\n }\n\n .note-nav-tabs .note-nav-link.disabled {\n color: #868e96;\n background-color: transparent;\n border-color: transparent;\n }\n\n .note-nav-tabs .note-nav-item.show .note-nav-link {\n color: #495057;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n }\n\n .note-tab-content {\n margin: 15px auto;\n }\n\n .note-tab-content > .note-tab-pane:target ~ .note-tab-pane:last-child,\n .note-tab-content > .note-tab-pane {\n display: none;\n }\n .note-tab-content > :last-child,\n .note-tab-content > .note-tab-pane:target {\n display: block;\n }\n}\n",".note-form-group {\n padding-bottom: 20px;\n}\n\n.note-form-group:last-child {\n padding-bottom: 0;\n}\n\n.note-form-label {\n display: block;\n width: 100%;\n font-size: 16px;\n color: #42515f;\n margin-bottom: 10px;\n font-weight: 700;\n}\n\n.note-input {\n width: 100%;\n display: block;\n border: 1px solid #ededef;\n background: #fff;\n outline: 0;\n padding: 6px 4px;\n font-size: 14px;\n @include box-sizing();\n}\n\n\n.note-input::-webkit-input-placeholder {\n color: $gray-lighter;\n}\n\n.note-input:-moz-placeholder { /* Firefox 18- */\n color: $gray-lighter;\n}\n\n.note-input::-moz-placeholder { /* Firefox 19+ */\n color: $gray-lighter;\n}\n\n.note-input:-ms-input-placeholder {\n color: $gray-lighter;\n}\n",".note-tooltip {\n position: absolute;\n z-index: $zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n font-size: 13px;\n\n transition: opacity .15s;\n @include opacity(0);\n\n &.in { @include opacity($tooltip-opacity); }\n &.top { margin-top: -3px; padding: $tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 $tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: $tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 $tooltip-arrow-width; }\n}\n\n.note-tooltip {\n &.bottom .note-tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -$tooltip-arrow-width;\n border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-bottom-color: $tooltip-arrow-color;\n }\n\n &.top .note-tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -$tooltip-arrow-width;\n border-width: $tooltip-arrow-width $tooltip-arrow-width 0;\n border-top-color: $tooltip-arrow-color;\n }\n\n &.right .note-tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -$tooltip-arrow-width;\n border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;\n border-right-color: $tooltip-arrow-color;\n }\n &.left .note-tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -$tooltip-arrow-width;\n border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;\n border-left-color: $tooltip-arrow-color;\n }\n}\n\n\n.note-tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.note-tooltip-content {\n max-width: $tooltip-max-width;\n font-family: $font-family;\n padding: 3px 8px;\n color: $tooltip-color;\n text-align: center;\n background-color: $tooltip-bg;\n}\n",".note-popover {\n position: absolute;\n z-index: $zindex-popover;\n display: block;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n font-size: 13px;\n font-family: $font-family;\n\n display: none;\n background: $popover-bg;\n border: 1px solid $popover-border-color;\n border: 1px solid $popover-fallback-border-color;\n\n &.in { display: block; }\n &.top { margin-top: -10px; padding: $tooltip-arrow-width 0; }\n &.right { margin-left: 10px; padding: 0 $tooltip-arrow-width; }\n &.bottom { margin-top: 10px; padding: $tooltip-arrow-width 0; }\n &.left { margin-left: -10px; padding: 0 $tooltip-arrow-width; }\n}\n\n.note-popover {\n &.bottom .note-popover-arrow {\n top: -11px;\n left: 20px;\n margin-left: -$popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: $popover-arrow-outer-fallback-color;\n border-bottom-color: $popover-arrow-outer-color;\n\n &::after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n }\n }\n\n &.top .note-popover-arrow {\n bottom: -11px;\n left: 20px;\n margin-left: -$popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: $popover-arrow-outer-fallback-color;\n border-top-color: $popover-arrow-outer-color;\n\n &::after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-bottom-width: 0;\n border-top-color: #fff;\n }\n }\n\n &.right .note-popover-arrow {\n top: 50%;\n left: -11px;\n margin-top: -$popover-arrow-width;\n border-left-width: 0;\n border-right-color: $popover-arrow-outer-fallback-color;\n border-right-color: $popover-arrow-outer-color;\n\n &::after {\n left: 1px;\n margin-top: -10px;\n content: \" \";\n border-left-width: 0;\n border-right-color: #fff;\n }\n\n }\n &.left .note-popover-arrow {\n top: 50%;\n right: -11px;\n margin-top: -$popover-arrow-width;\n border-right-width: 0;\n border-left-color: $popover-arrow-outer-fallback-color;\n border-left-color: $popover-arrow-outer-color;\n\n &::after {\n right: 1px;\n margin-top: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n }\n }\n}\n\n\n.note-popover-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border: 11px solid transparent;\n\n &::after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n\n\n content : \" \";\n border-width: 10px;\n }\n\n}\n\n.note-popover-content {\n /*max-width: $popover-max-width;*/\n padding: 3px 8px;\n color: $popover-color;\n text-align: center;\n background-color: $popover-bg;\n min-width: 100px;\n min-height: 30px;\n}\n","@import \"elements.scss\";\n\n/* Theme Variables\n ------------------------------------------ */\n$border-color: #00000032;\n$background-color: #8080801d;\n\n$img-margin-left: 10px;\n$img-margin-right: 10px;\n\n/* Layout\n ------------------------------------------ */\n.note-editor {\n position: relative;\n\n // dropzone\n $dropzone-color: lightskyblue;\n $dropzone-active-color: darken($dropzone-color, 30);\n .note-dropzone {\n position: absolute;\n display: none;\n z-index: 100;\n color: $dropzone-color;\n background-color: #fff;\n opacity: 0.95;\n\n .note-dropzone-message {\n display: table-cell;\n vertical-align: middle;\n text-align: center;\n font-size: 28px;\n font-weight: 700;\n }\n\n &.hover {\n color: $dropzone-active-color;\n }\n }\n\n &.dragover .note-dropzone {\n display: table;\n }\n\n .note-editing-area {\n position: relative;\n\n .note-editable {\n outline: none;\n\n sup {\n vertical-align: super;\n }\n\n sub {\n vertical-align: sub;\n }\n\n img.note-float-left {\n margin-right: $img-margin-right;\n }\n\n img.note-float-right {\n margin-left: $img-margin-left;\n }\n }\n }\n}\n\n/* Frame mode layout\n ------------------------------------------ */\n.note-editor.note-frame,\n.note-editor.note-airframe {\n border: 1px solid $border-color;\n\n // codeview mode\n &.codeview {\n .note-editing-area {\n .note-editable {\n display: none;\n }\n .note-codable {\n display: block;\n }\n }\n }\n\n .note-editing-area {\n overflow: hidden;\n\n // editable\n .note-editable {\n padding: 10px;\n overflow: auto;\n word-wrap: break-word;\n\n &[contenteditable=\"false\"] {\n background-color: $background-color;\n }\n }\n\n // codeable\n .note-codable {\n display: none;\n width: 100%;\n padding: 10px;\n border: none;\n box-shadow: none;\n font-family: Menlo, Monaco, monospace, sans-serif;\n font-size: 14px;\n color: #ccc;\n background-color: #222;\n resize: none;\n outline: none;\n\n // override BS2 default style\n @include box-sizing(border-box);\n @include rounded(0);\n margin-bottom: 0;\n }\n }\n\n // fullscreen mode\n &.fullscreen {\n position: fixed;\n top: 0;\n left: 0;\n width: 100% !important;\n z-index: 1050; // bs3 modal-backdrop: 1030, bs2: 1040\n .note-resizebar {\n display: none;\n }\n }\n\n // Notifications\n .note-status-output {\n display: block;\n width: 100%;\n font-size: 14px;\n line-height: 1.42857143;\n height: 20px;\n margin-bottom: 0;\n color: #000;\n border: 0;\n border-top: 1px solid #e2e2e2;\n }\n\n .note-status-output:empty {\n height: 0;\n border-top: 0 solid transparent;\n }\n\n .note-status-output .pull-right {\n float: right !important;\n }\n\n .note-status-output .text-muted {\n color: #777;\n }\n\n .note-status-output .text-primary {\n color: #286090;\n }\n\n .note-status-output .text-success {\n color: #3c763d;\n }\n\n .note-status-output .text-info {\n color: #31708f;\n }\n\n .note-status-output .text-warning {\n color: #8a6d3b;\n }\n\n .note-status-output .text-danger {\n color: #a94442;\n }\n\n .note-status-output .alert {\n margin: -7px 0 0 0;\n padding: 7px 10px 2px 10px;\n border-radius: 0;\n color: #000;\n background-color: #f5f5f5;\n }\n\n .note-status-output .alert .note-icon {\n margin-right: 5px;\n }\n\n .note-status-output .alert-success {\n color: #3c763d !important;\n background-color: #dff0d8 !important;\n }\n\n .note-status-output .alert-info {\n color: #31708f !important;\n background-color: #d9edf7 !important;\n }\n\n .note-status-output .alert-warning {\n color: #8a6d3b !important;\n background-color: #fcf8e3 !important;\n }\n\n .note-status-output .alert-danger {\n color: #a94442 !important;\n background-color: #f2dede !important;\n }\n\n // statusbar\n .note-statusbar {\n background-color: $background-color;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n border-top: 1px solid $border-color;\n .note-resizebar {\n padding-top: 1px;\n height: 9px;\n width: 100%;\n cursor: ns-resize;\n .note-icon-bar {\n width: 20px;\n margin: 1px auto;\n border-top: 1px solid $border-color;\n }\n }\n\n &.locked {\n .note-resizebar {\n cursor: default;\n .note-icon-bar {\n display: none;\n }\n }\n }\n }\n .note-placeholder {\n padding: 10px;\n }\n}\n\n.note-editor.note-airframe {\n border: 0;\n\n .note-editing-area {\n .note-editable {\n padding: 0;\n }\n }\n}\n\n\n/* Popover\n ------------------------------------------ */\n.note-popover.popover {\n display: none;\n max-width: none;\n\n .popover-content {\n a {\n display: inline-block;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; // for FF\n vertical-align: middle; // for FF\n }\n }\n .arrow {\n left: 20px !important;\n }\n}\n\n/* Popover and Toolbar (Button container)\n ------------------------------------------ */\n.note-toolbar {\n position: relative;\n}\n\n.note-popover .popover-content, .note-editor .note-toolbar {\n margin: 0;\n padding: 0 0 5px 5px;\n\n & > .note-btn-group {\n margin-top: 5px;\n margin-left: 0;\n margin-right: 5px;\n }\n\n .note-btn-group {\n .note-table {\n min-width: 0;\n padding: 5px;\n .note-dimension-picker {\n font-size: 18px;\n .note-dimension-picker-mousecatcher {\n position: absolute !important;\n z-index: 3;\n width: 10em;\n height: 10em;\n cursor: pointer;\n }\n .note-dimension-picker-unhighlighted {\n position: relative !important;\n z-index: 1;\n width: 5em;\n height: 5em;\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;\n }\n .note-dimension-picker-highlighted {\n position: absolute !important;\n z-index: 2;\n width: 1em;\n height: 1em;\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC\") repeat;\n }\n }\n }\n }\n\n .note-style {\n .dropdown-style {\n blockquote, pre {\n margin: 0;\n padding: 5px 10px;\n }\n h1, h2, h3, h4, h5, h6, p {\n margin: 0;\n padding: 0;\n }\n }\n }\n\n .note-color-all {\n .note-dropdown-menu {\n min-width: 337px;\n }\n }\n\n .note-color {\n .dropdown-toggle {\n width: 20px;\n padding-left: 5px;\n }\n .note-dropdown-menu {\n .note-palette {\n display: inline-block;\n margin: 0;\n width: 160px;\n &:first-child {\n margin: 0 5px;\n }\n\n .note-palette-title {\n font-size: 12px;\n margin: 2px 7px;\n text-align: center;\n border-bottom: 1px solid #eee;\n }\n\n .note-color-reset,\n .note-color-select {\n font-size: 11px;\n margin: 3px;\n padding: 0 3px;\n cursor: pointer;\n width: 100%;\n @include rounded(5px);\n\n &:hover {\n background: #eee;\n }\n }\n\n .note-color-row {\n height: 20px;\n }\n\n .note-color-select-btn {\n display: none;\n }\n\n .note-holder-custom {\n .note-color-btn {\n border: 1px solid #eee;\n }\n }\n }\n }\n }\n\n .note-para {\n .note-dropdown-menu {\n min-width: 228px;\n padding: 5px;\n & > div + div {\n margin-left: 5px;\n }\n }\n }\n\n // dropdown-menu for toolbar and popover\n .note-dropdown-menu {\n min-width: 160px;\n\n // dropdown-menu right position\n // http://forrst.com/posts/Bootstrap_right_positioned_dropdown-2KB\n &.right {\n right: 0;\n left: auto;\n &::before {\n right: 9px;\n left: auto !important;\n }\n &::after {\n right: 10px;\n left: auto !important;\n }\n }\n // dropdown-menu for selectbox\n &.note-check {\n a i {\n color: deepskyblue;\n visibility: hidden;\n }\n a.checked i {\n visibility: visible;\n }\n }\n }\n\n .note-fontsize-10 {\n font-size: 10px;\n }\n\n // color palette for toolbar and popover\n .note-color-palette {\n line-height: 1;\n div {\n .note-color-btn {\n width: 20px;\n height: 20px;\n padding: 0;\n margin: 0;\n border: 0;\n border-radius: 0;\n }\n .note-color-btn:hover {\n transform: scale(1.2);\n transition: all 0.2s;\n }\n }\n }\n}\n\n/* Dialog\n ------------------------------------------ */\n.note-modal {\n .modal-dialog {\n outline: 0;\n border-radius: 5px;\n @include box-shadow(0 3px 9px rgba(0,0,0,.5));\n }\n .form-group { // overwrite BS's form-horizontal minus margins\n margin-left: 0;\n margin-right: 0;\n }\n .note-modal-form {\n margin: 0; // overwrite BS2's form margin bottom\n }\n .note-image-dialog {\n .note-dropzone {\n min-height: 100px;\n font-size: 30px;\n line-height: 4; // vertical-align\n color: lightgray;\n text-align: center;\n border: 4px dashed lightgray;\n margin-bottom: 10px;\n }\n }\n\n // [workaround] firefox fileinput\n @-moz-document url-prefix() {\n .note-image-input {\n height: auto;\n }\n }\n}\n\n/* Placeholder\n ------------------------------------------ */\n.note-placeholder {\n position: absolute;\n display: none;\n color: gray;\n}\n\n/* Handle\n ------------------------------------------ */\n.note-handle {\n // control selection\n .note-control-selection {\n position: absolute;\n display: none;\n border: 1px solid #000;\n & > div {\n position: absolute;\n }\n\n .note-control-selection-bg {\n width: 100%;\n height: 100%;\n background-color: #000;\n @include opacity(0.3);\n }\n\n .note-control-handle {\n width: 7px;\n height: 7px;\n border: 1px solid #000;\n }\n\n .note-control-holder {\n @extend .note-control-handle;\n }\n\n .note-control-sizing {\n @extend .note-control-handle;\n background-color: #000;\n }\n\n .note-control-nw {\n top: -5px;\n left: -5px;\n border-right: none;\n border-bottom: none;\n }\n\n .note-control-ne {\n top: -5px;\n right: -5px;\n border-bottom: none;\n border-left: none;\n }\n\n .note-control-sw {\n bottom: -5px;\n left: -5px;\n border-top: none;\n border-right: none;\n }\n\n .note-control-se {\n right: -5px;\n bottom: -5px;\n cursor: se-resize;\n }\n\n .note-control-se.note-control-holder {\n cursor: default;\n border-top: none;\n border-left: none;\n }\n\n .note-control-selection-info {\n right: 0;\n bottom: 0;\n padding: 5px;\n margin: 5px;\n color: #fff;\n background-color: #000;\n font-size: 12px;\n @include rounded(5px);\n @include opacity(0.7);\n }\n }\n}\n\n.note-hint-popover {\n min-width: 100px;\n padding: 2px;\n\n .popover-content {\n padding: 3px;\n max-height: 150px;\n overflow: auto;\n\n .note-hint-group {\n .note-hint-item {\n display: block !important;\n padding: 3px;\n\n &.active, &:hover {\n display: block;\n clear: both;\n font-weight: 400;\n line-height: 1.4;\n color: white;\n white-space: nowrap;\n text-decoration: none;\n background-color: #428bca;\n outline: 0;\n cursor: pointer;\n }\n }\n }\n }\n}\n\n/* Handle\n ------------------------------------------ */\nhtml, body {\n .note-fullscreen-body {\n overflow: hidden !important;\n }\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/summernote/summernote-lite.min.js b/src/main/resources/static/plugins/summernote/summernote-lite.min.js new file mode 100644 index 0000000..1e44918 --- /dev/null +++ b/src/main/resources/static/plugins/summernote/summernote-lite.min.js @@ -0,0 +1,3 @@ +/*! Summernote v0.8.19 | (c) 2013- Alan Hong and contributors | MIT license */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jQuery"));else if("function"==typeof define&&define.amd)define(["jQuery"],e);else{var o="object"==typeof exports?e(require("jQuery")):e(t.jQuery);for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(self,(function(t){return(()=>{"use strict";var e={9770:(t,e,o)=>{var n=o(1145),i=o.n(n);i().summernote=i().summernote||{lang:{}},i().extend(i().summernote.lang,{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",clear:"Remove Font Style",height:"Line Height",name:"Font Family",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",size:"Font Size",sizeunit:"Font Size Unit"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize full",resizeHalf:"Resize half",resizeQuarter:"Resize quarter",resizeNone:"Original size",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Remove float",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Drag image or text here",dropImage:"Drop image or Text",selectFromFiles:"Select from files",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Image URL",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL",providers:"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window",useProtocol:"Use default protocol"},table:{table:"Table",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",p:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"Background Color",foreground:"Text Color",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default",cpSelect:"Select"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style",extraKeys:"Extra keys"},help:{escape:"Escape",insertParagraph:"Insert Paragraph",undo:"Undo the last command",redo:"Redo the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Undo",redo:"Redo"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"},output:{noSelection:"No Selection Made!"}}})},1145:e=>{e.exports=t}},o={};function n(t){var i=o[t];if(void 0!==i)return i.exports;var r=o[t]={exports:{}};return e[t](r,r.exports,n),r.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{n.r(i);var t=n(1145),e=n.n(t),o=(n(9770),["sans-serif","serif","monospace","cursive","fantasy"]);function r(t){return-1===e().inArray(t.toLowerCase(),o)?"'".concat(t,"'"):t}var a,s=navigator.userAgent,l=/MSIE|Trident/i.test(s);if(l){var c=/MSIE (\d+[.]\d+)/.exec(s);c&&(a=parseFloat(c[1])),(c=/Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(s))&&(a=parseFloat(c[1]))}var u=/Edge\/\d+/.test(s),d="ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0,h=l?"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted":"input";const f={isMac:navigator.appVersion.indexOf("Mac")>-1,isMSIE:l,isEdge:u,isFF:!u&&/firefox/i.test(s),isPhantom:/PhantomJS/i.test(s),isWebkit:!u&&/webkit/i.test(s),isChrome:!u&&/chrome/i.test(s),isSafari:!u&&/safari/i.test(s)&&!/chrome/i.test(s),browserVersion:a,isSupportTouch:d,isFontInstalled:function(t){var e="Comic Sans MS"===t?"Courier New":"Comic Sans MS",o="mmmmmmmmmmwwwww",n=document.createElement("canvas").getContext("2d");n.font="200px '"+e+"'";var i=n.measureText(o).width;return n.font="200px "+r(t)+', "'+e+'"',i!==n.measureText(o).width},isW3CRangeSupport:!!document.createRange,inputEventName:h,genericFontFamilies:o,validFontName:r};var p=0;const v={eq:function(t){return function(e){return t===e}},eq2:function(t,e){return t===e},peq2:function(t){return function(e,o){return e[t]===o[t]}},ok:function(){return!0},fail:function(){return!1},self:function(t){return t},not:function(t){return function(){return!t.apply(t,arguments)}},and:function(t,e){return function(o){return t(o)&&e(o)}},invoke:function(t,e){return function(){return t[e].apply(t,arguments)}},resetUniqueId:function(){p=0},uniqueId:function(t){var e=++p+"";return t?t+e:e},rect2bnd:function(t){var o=e()(document);return{top:t.top+o.scrollTop(),left:t.left+o.scrollLeft(),width:t.right-t.left,height:t.bottom-t.top}},invertObject:function(t){var e={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[t[o]]=o);return e},namespaceToCamel:function(t,e){return(e=e||"")+t.split(".").map((function(t){return t.substring(0,1).toUpperCase()+t.substring(1)})).join("")},debounce:function(t,e,o){var n;return function(){var i=this,r=arguments,a=function(){n=null,o||t.apply(i,r)},s=o&&!n;clearTimeout(n),n=setTimeout(a,e),s&&t.apply(i,r)}},isValidUrl:function(t){return/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t)}};function m(t){return t[0]}function g(t){return t[t.length-1]}function b(t){return t.slice(1)}function k(t,e){if(t&&t.length&&e){if(t.indexOf)return-1!==t.indexOf(e);if(t.contains)return t.contains(e)}return!1}const y={head:m,last:g,initial:function(t){return t.slice(0,t.length-1)},tail:b,prev:function(t,e){if(t&&t.length&&e){var o=t.indexOf(e);return-1===o?null:t[o-1]}return null},next:function(t,e){if(t&&t.length&&e){var o=t.indexOf(e);return-1===o?null:t[o+1]}return null},find:function(t,e){for(var o=0,n=t.length;o";function O(t){return S(t)?t.nodeValue.length:t?t.childNodes.length:0}function j(t){var e=O(t);return 0===e||(!S(t)&&1===e&&t.innerHTML===M||!(!y.all(t.childNodes,S)||""!==t.innerHTML))}function U(t){T(t)||O(t)||(t.innerHTML=M)}function W(t,e){for(;t;){if(e(t))return t;if(C(t))break;t=t.parentNode}return null}function K(t,e){e=e||v.fail;var o=[];return W(t,(function(t){return C(t)||o.push(t),e(t)})),o}function V(t,e){e=e||v.fail;for(var o=[];t&&!e(t);)o.push(t),t=t.nextSibling;return o}function q(t,e){var o=e.nextSibling,n=e.parentNode;return o?n.insertBefore(t,o):n.appendChild(t),t}function _(t,o){return e().each(o,(function(e,o){t.appendChild(o)})),t}function G(t){return 0===t.offset}function Y(t){return t.offset===O(t.node)}function Z(t){return G(t)||Y(t)}function X(t,e){for(;t&&t!==e;){if(0!==J(t))return!1;t=t.parentNode}return!0}function Q(t,e){if(!e)return!1;for(;t&&t!==e;){if(J(t)!==O(t.parentNode)-1)return!1;t=t.parentNode}return!0}function J(t){for(var e=0;t=t.previousSibling;)e+=1;return e}function tt(t){return!!(t&&t.childNodes&&t.childNodes.length)}function et(t,e){var o,n;if(0===t.offset){if(C(t.node))return null;o=t.node.parentNode,n=J(t.node)}else tt(t.node)?n=O(o=t.node.childNodes[t.offset-1]):(o=t.node,n=e?0:t.offset-1);return{node:o,offset:n}}function ot(t,e){var o,n;if(O(t.node)===t.offset){if(C(t.node))return null;var i=it(t.node);i?(o=i,n=0):(o=t.node.parentNode,n=J(t.node)+1)}else tt(t.node)?(o=t.node.childNodes[t.offset],n=0):(o=t.node,n=e?O(t.node):t.offset+1);return{node:o,offset:n}}function nt(t,e){var o,n=0;if(j(t.node))return null===t.node?null:{node:o=t.node.nextSibling,offset:n=0};if(O(t.node)===t.offset){if(C(t.node))return null;o=t.node.parentNode,n=J(t.node)+1,C(o)&&(o=t.node.nextSibling,n=0)}else if(tt(t.node)){if(n=0,j(o=t.node.childNodes[t.offset]))return j(t.node.nextSibling)?null:{node:t.node.nextSibling,offset:n}}else if(o=t.node,n=e?O(t.node):t.offset+1,j(o))return null;return{node:o,offset:n}}function it(t){if(t.nextSibling&&t.parent===t.nextSibling.parent)return S(t.nextSibling)?t.nextSibling:it(t.nextSibling)}function rt(t,e){return t.node===e.node&&t.offset===e.offset}function at(t,e){var o=e&&e.isSkipPaddingBlankHTML,n=e&&e.isNotSplitEdgePoint,i=e&&e.isDiscardEmptySplits;if(i&&(o=!0),Z(t)&&(S(t.node)||n)){if(G(t))return t.node;if(Y(t))return t.node.nextSibling}if(S(t.node))return t.node.splitText(t.offset);var r=t.node.childNodes[t.offset],a=q(t.node.cloneNode(!1),t.node);return _(a,V(r)),o||(U(t.node),U(a)),i&&(j(t.node)&&ct(t.node),j(a))?(ct(a),t.node.nextSibling):a}function st(t,e,o){var n=K(e.node,v.eq(t));return n.length?1===n.length?at(e,o):n.reduce((function(t,n){return t===e.node&&(t=at(e,o)),at({node:n,offset:t?J(t):O(n)},o)})):null}function lt(t){return document.createElement(t)}function ct(t,e){if(t&&t.parentNode){if(t.removeNode)return t.removeNode(e);var o=t.parentNode;if(!e){for(var n=[],i=0,r=t.childNodes.length;i".concat(M,"

      "),makePredByNodeName:x,isEditable:C,isControlSizing:function(t){return t&&e()(t).hasClass("note-control-sizing")},isText:S,isElement:function(t){return t&&1===t.nodeType},isVoid:T,isPara:E,isPurePara:function(t){return E(t)&&!N(t)},isHeading:function(t){return t&&/^H[1-7]/.test(t.nodeName.toUpperCase())},isInline:R,isBlock:v.not(R),isBodyInline:function(t){return R(t)&&!W(t,E)},isBody:z,isParaInline:function(t){return R(t)&&!!W(t,E)},isPre:$,isList:L,isTable:I,isData:P,isCell:F,isBlockquote:D,isBodyContainer:H,isAnchor:B,isDiv:x("DIV"),isLi:N,isBR:x("BR"),isSpan:x("SPAN"),isB:x("B"),isU:x("U"),isS:x("S"),isI:x("I"),isImg:x("IMG"),isTextarea:ut,deepestChildIsEmpty:function(t){do{if(null===t.firstElementChild||""===t.firstElementChild.innerHTML)break}while(t=t.firstElementChild);return j(t)},isEmpty:j,isEmptyAnchor:v.and(B,j),isClosestSibling:function(t,e){return t.nextSibling===e||t.previousSibling===e},withClosestSiblings:function(t,e){e=e||v.ok;var o=[];return t.previousSibling&&e(t.previousSibling)&&o.push(t.previousSibling),o.push(t),t.nextSibling&&e(t.nextSibling)&&o.push(t.nextSibling),o},nodeLength:O,isLeftEdgePoint:G,isRightEdgePoint:Y,isEdgePoint:Z,isLeftEdgeOf:X,isRightEdgeOf:Q,isLeftEdgePointOf:function(t,e){return G(t)&&X(t.node,e)},isRightEdgePointOf:function(t,e){return Y(t)&&Q(t.node,e)},prevPoint:et,nextPoint:ot,nextPointWithEmptyNode:nt,isSamePoint:rt,isVisiblePoint:function(t){if(S(t.node)||!tt(t.node)||j(t.node))return!0;var e=t.node.childNodes[t.offset-1],o=t.node.childNodes[t.offset];return!((e&&!T(e)||o&&!T(o))&&!I(o))},prevPointUntil:function(t,e){for(;t;){if(e(t))return t;t=et(t)}return null},nextPointUntil:function(t,e){for(;t;){if(e(t))return t;t=ot(t)}return null},isCharPoint:function(t){if(!S(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return e&&" "!==e&&e!==w},isSpacePoint:function(t){if(!S(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return" "===e||e===w},walkPoint:function(t,e,o,n){for(var i=t;i&&(o(i),!rt(i,e));){i=nt(i,n&&t.node!==i.node&&e.node!==i.node)}},ancestor:W,singleChildAncestor:function(t,e){for(t=t.parentNode;t&&1===O(t);){if(e(t))return t;if(C(t))break;t=t.parentNode}return null},listAncestor:K,lastAncestor:function(t,e){var o=K(t);return y.last(o.filter(e))},listNext:V,listPrev:function(t,e){e=e||v.fail;for(var o=[];t&&!e(t);)o.push(t),t=t.previousSibling;return o},listDescendant:function(t,e){var o=[];return e=e||v.ok,function n(i){t!==i&&e(i)&&o.push(i);for(var r=0,a=i.childNodes.length;r-1)return n;return null},wrap:function(t,o){var n=t.parentNode,i=e()("<"+o+">")[0];return n.insertBefore(i,t),i.appendChild(t),i},insertAfter:q,appendChildNodes:_,position:J,hasChildren:tt,makeOffsetPath:function(t,e){return K(e,v.eq(t)).map(J).reverse()},fromOffsetPath:function(t,e){for(var o=t,n=0,i=e.length;n\s]*)(.*?)(\s*\/?>)/g,(function(t,e,o){o=o.toUpperCase();var n=/^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(o)&&!!e,i=/^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(o);return t+(n||i?"\n":"")}))).trim()}return o},value:dt,posFromPlaceholder:function(t){var o=e()(t),n=o.offset(),i=o.outerHeight(!0);return{left:n.left,top:n.top+i}},attachEvents:function(t,e){Object.keys(e).forEach((function(o){t.on(o,e[o])}))},detachEvents:function(t,e){Object.keys(e).forEach((function(o){t.off(o,e[o])}))},isCustomStyleTag:function(t){return t&&!S(t)&&y.contains(t.classList,"note-styletag")}};function ft(t,e){for(var o=0;o1,i=n&&y.head(o),r=n?y.last(o):y.head(o),a=this.modules[i||"editor"];return!i&&this[r]?this[r].apply(this,e):a&&a[r]&&a.shouldInitialize()?a[r].apply(a,e):void 0}}],n&&ft(o.prototype,n),i&&ft(o,i),t}();function vt(t,e){for(var o=0;o=0)break;n=a[o]}if(0!==o&&ht.isText(a[o-1])){var s=document.body.createTextRange(),l=null;s.moveToElementText(n||i),s.collapse(!n),l=n?n.nextSibling:i.firstChild;var c=t.duplicate();c.setEndPoint("StartToStart",s);for(var u=c.text.replace(/[\r\n]/g,"").length;u>l.nodeValue.length&&l.nextSibling;)u-=l.nodeValue.length,l=l.nextSibling;l.nodeValue;e&&l.nextSibling&&ht.isText(l.nextSibling)&&u===l.nodeValue.length&&(u-=l.nodeValue.length,l=l.nextSibling),i=l,o=u}return{cont:i,offset:o}}function gt(t){var e=document.body.createTextRange(),o=function t(e,o){var n,i;if(ht.isText(e)){var r=ht.listPrev(e,v.not(ht.isText)),a=y.last(r).previousSibling;n=a||e.parentNode,o+=y.sum(y.tail(r),ht.nodeLength),i=!a}else{if(n=e.childNodes[o]||e,ht.isText(n))return t(n,0);o=0,i=!1}return{node:n,collapseToStart:i,offset:o}}(t.node,t.offset);return e.moveToElementText(o.node),e.collapse(o.collapseToStart),e.moveStart("character",o.offset),e}e().fn.extend({summernote:function(){var t=e().type(y.head(arguments)),o="string"===t,n="object"===t,i=e().extend({},e().summernote.options,n?y.head(arguments):{});i.langInfo=e().extend(!0,{},e().summernote.lang["en-US"],e().summernote.lang[i.lang]),i.icons=e().extend(!0,{},e().summernote.options.icons,i.icons),i.tooltip="auto"===i.tooltip?!f.isSupportTouch:i.tooltip,this.each((function(t,o){var n=e()(o);if(!n.data("summernote")){var r=new pt(n,i);n.data("summernote",r),n.data("summernote").triggerEvent("init",r.layoutInfo)}}));var r=this.first();if(r.length){var a=r.data("summernote");if(o)return a.invoke.apply(a,y.from(arguments));i.focus&&a.invoke("editor.focus")}return this}});var bt=function(){function t(e,o,n,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sc=e,this.so=o,this.ec=n,this.eo=i,this.isOnEditable=this.makeIsOn(ht.isEditable),this.isOnList=this.makeIsOn(ht.isList),this.isOnAnchor=this.makeIsOn(ht.isAnchor),this.isOnCell=this.makeIsOn(ht.isCell),this.isOnData=this.makeIsOn(ht.isData)}var o,n,i;return o=t,n=[{key:"nativeRange",value:function(){if(f.isW3CRangeSupport){var t=document.createRange();return t.setStart(this.sc,this.so),t.setEnd(this.ec,this.eo),t}var e=gt({node:this.sc,offset:this.so});return e.setEndPoint("EndToEnd",gt({node:this.ec,offset:this.eo})),e}},{key:"getPoints",value:function(){return{sc:this.sc,so:this.so,ec:this.ec,eo:this.eo}}},{key:"getStartPoint",value:function(){return{node:this.sc,offset:this.so}}},{key:"getEndPoint",value:function(){return{node:this.ec,offset:this.eo}}},{key:"select",value:function(){var t=this.nativeRange();if(f.isW3CRangeSupport){var e=document.getSelection();e.rangeCount>0&&e.removeAllRanges(),e.addRange(t)}else t.select();return this}},{key:"scrollIntoView",value:function(t){var o=e()(t).height();return t.scrollTop+o0?o.so-1:0];if(e){var i=ht.listPrev(e,ht.isParaInline).reverse();if((i=i.concat(ht.listNext(e.nextSibling,ht.isParaInline))).length){var r=ht.wrap(y.head(i),"p");ht.appendChildNodes(r,y.tail(i))}}return this.normalize()}},{key:"insertNode",value:function(t){var e=this;(ht.isText(t)||ht.isInline(t))&&(e=this.wrapBodyInlineWithPara().deleteContents());var o=ht.splitPoint(e.getStartPoint(),ht.isInline(t));return o.rightNode?(o.rightNode.parentNode.insertBefore(t,o.rightNode),ht.isEmpty(o.rightNode)&&ht.isPara(t)&&o.rightNode.parentNode.removeChild(o.rightNode)):o.container.appendChild(t),t}},{key:"pasteHTML",value:function(t){t=e().trim(t);var o=e()("
      ").html(t)[0],n=y.from(o.childNodes),i=this,r=!1;return i.so>=0&&(n=n.reverse(),r=!0),n=n.map((function(t){return i.insertNode(t)})),r&&(n=n.reverse()),n}},{key:"toString",value:function(){var t=this.nativeRange();return f.isW3CRangeSupport?t.toString():t.text}},{key:"getWordRange",value:function(e){var o=this.getEndPoint();if(!ht.isCharPoint(o))return this;var n=ht.prevPointUntil(o,(function(t){return!ht.isCharPoint(t)}));return e&&(o=ht.nextPointUntil(o,(function(t){return!ht.isCharPoint(t)}))),new t(n.node,n.offset,o.node,o.offset)}},{key:"getWordsRange",value:function(e){var o=this.getEndPoint(),n=function(t){return!ht.isCharPoint(t)&&!ht.isSpacePoint(t)};if(n(o))return this;var i=ht.prevPointUntil(o,n);return e&&(o=ht.nextPointUntil(o,n)),new t(i.node,i.offset,o.node,o.offset)}},{key:"getWordsMatchRange",value:function(e){var o=this.getEndPoint(),n=ht.prevPointUntil(o,(function(n){if(!ht.isCharPoint(n)&&!ht.isSpacePoint(n))return!0;var i=new t(n.node,n.offset,o.node,o.offset),r=e.exec(i.toString());return r&&0===r.index})),i=new t(n.node,n.offset,o.node,o.offset),r=i.toString(),a=e.exec(r);return a&&a[0].length===r.length?i:null}},{key:"bookmark",value:function(t){return{s:{path:ht.makeOffsetPath(t,this.sc),offset:this.so},e:{path:ht.makeOffsetPath(t,this.ec),offset:this.eo}}}},{key:"paraBookmark",value:function(t){return{s:{path:y.tail(ht.makeOffsetPath(y.head(t),this.sc)),offset:this.so},e:{path:y.tail(ht.makeOffsetPath(y.last(t),this.ec)),offset:this.eo}}}},{key:"getClientRects",value:function(){return this.nativeRange().getClientRects()}}],n&&vt(o.prototype,n),i&&vt(o,i),t}();const kt={create:function(t,e,o,n){if(4===arguments.length)return new bt(t,e,o,n);if(2===arguments.length)return new bt(t,e,o=t,n=e);var i=this.createFromSelection();if(!i&&1===arguments.length){var r=arguments[0];return ht.isEditable(r)&&(r=r.lastChild),this.createFromBodyElement(r,ht.emptyPara===arguments[0].innerHTML)}return i},createFromBodyElement:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.createFromNode(t);return o.collapse(e)},createFromSelection:function(){var t,e,o,n;if(f.isW3CRangeSupport){var i=document.getSelection();if(!i||0===i.rangeCount)return null;if(ht.isBody(i.anchorNode))return null;var r=i.getRangeAt(0);t=r.startContainer,e=r.startOffset,o=r.endContainer,n=r.endOffset}else{var a=document.selection.createRange(),s=a.duplicate();s.collapse(!1);var l=a;l.collapse(!0);var c=mt(l,!0),u=mt(s,!1);ht.isText(c.node)&&ht.isLeftEdgePoint(c)&&ht.isTextNode(u.node)&&ht.isRightEdgePoint(u)&&u.node.nextSibling===c.node&&(c=u),t=c.cont,e=c.offset,o=u.cont,n=u.offset}return new bt(t,e,o,n)},createFromNode:function(t){var e=t,o=0,n=t,i=ht.nodeLength(n);return ht.isVoid(e)&&(o=ht.listPrev(e).length-1,e=e.parentNode),ht.isBR(n)?(i=ht.listPrev(n).length-1,n=n.parentNode):ht.isVoid(n)&&(i=ht.listPrev(n).length,n=n.parentNode),this.create(e,o,n,i)},createFromNodeBefore:function(t){return this.createFromNode(t).collapse(!0)},createFromNodeAfter:function(t){return this.createFromNode(t).collapse()},createFromBookmark:function(t,e){var o=ht.fromOffsetPath(t,e.s.path),n=e.s.offset,i=ht.fromOffsetPath(t,e.e.path),r=e.e.offset;return new bt(o,n,i,r)},createFromParaBookmark:function(t,e){var o=t.s.offset,n=t.e.offset,i=ht.fromOffsetPath(y.head(e),t.s.path),r=ht.fromOffsetPath(y.last(e),t.e.path);return new bt(i,o,r,n)}};var yt={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46,LEFT:37,UP:38,RIGHT:39,DOWN:40,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,B:66,E:69,I:73,J:74,K:75,L:76,R:82,S:83,U:85,V:86,Y:89,Z:90,SLASH:191,LEFTBRACKET:219,BACKSLASH:220,RIGHTBRACKET:221,HOME:36,END:35,PAGEUP:33,PAGEDOWN:34};const wt={isEdit:function(t){return y.contains([yt.BACKSPACE,yt.TAB,yt.ENTER,yt.SPACE,yt.DELETE],t)},isMove:function(t){return y.contains([yt.LEFT,yt.UP,yt.RIGHT,yt.DOWN],t)},isNavigation:function(t){return y.contains([yt.HOME,yt.END,yt.PAGEUP,yt.PAGEDOWN],t)},nameFromCode:v.invertObject(yt),code:yt};function Ct(t,e){for(var o=0;o0&&(this.stackOffset--,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"redo",value:function(){this.stack.length-1>this.stackOffset&&(this.stackOffset++,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"recordUndo",value:function(){this.stackOffset++,this.stack.length>this.stackOffset&&(this.stack=this.stack.slice(0,this.stackOffset)),this.stack.push(this.makeSnapshot()),this.stack.length>this.context.options.historyLimit&&(this.stack.shift(),this.stackOffset-=1)}}])&&Ct(e.prototype,o),n&&Ct(e,n),t}();function St(t,e){for(var o=0;o-1;n["list-style"]=i?"unordered":"ordered"}else n["list-style"]="none";var r=ht.ancestor(t.sc,ht.isPara);if(r&&r.style["line-height"])n["line-height"]=r.style.lineHeight;else{var a=parseInt(n["line-height"],10)/parseInt(n["font-size"],10);n["line-height"]=a.toFixed(1)}return n.anchor=t.isOnAnchor()&&ht.ancestor(t.sc,ht.isAnchor),n.ancestors=ht.listAncestor(t.sc,ht.isEditable),n.range=t,n}}],n&&St(o.prototype,n),i&&St(o,i),t}();function Et(t,e){for(var o=0;o25?e-25:""}))}))})),n.select()}},{key:"toggleList",value:function(t,o){var n=this,i=kt.create(o).wrapBodyInlineWithPara(),r=i.nodes(ht.isPara,{includeAncestor:!0}),a=i.paraBookmark(r),s=y.clusterBy(r,v.peq2("parentNode"));if(y.find(r,ht.isPurePara)){var l=[];e().each(s,(function(e,o){l=l.concat(n.wrapList(o,t))})),r=l}else{var c=i.nodes(ht.isList,{includeAncestor:!0}).filter((function(o){return!e().nodeName(o,t)}));c.length?e().each(c,(function(e,o){ht.replace(o,t)})):r=this.releaseList(s,!0)}kt.createFromParaBookmark(a,r).select()}},{key:"wrapList",value:function(t,e){var o=y.head(t),n=y.last(t),i=ht.isList(o.previousSibling)&&o.previousSibling,r=ht.isList(n.nextSibling)&&n.nextSibling,a=i||ht.insertAfter(ht.create(e||"UL"),n);return t=t.map((function(t){return ht.isPurePara(t)?ht.replace(t,"LI"):t})),ht.appendChildNodes(a,t),r&&(ht.appendChildNodes(a,y.from(r.childNodes)),ht.remove(r)),t}},{key:"releaseList",value:function(t,o){var n=this,i=[];return e().each(t,(function(t,r){var a=y.head(r),s=y.last(r),l=o?ht.lastAncestor(a,ht.isList):a.parentNode,c=l.parentNode;if("LI"===l.parentNode.nodeName)r.map((function(t){var e=n.findNextSiblings(t);c.nextSibling?c.parentNode.insertBefore(t,c.nextSibling):c.parentNode.appendChild(t),e.length&&(n.wrapList(e,l.nodeName),t.appendChild(e[0].parentNode))})),0===l.children.length&&c.removeChild(l),0===c.childNodes.length&&c.parentNode.removeChild(c);else{var u=l.childNodes.length>1?ht.splitTree(l,{node:s.parentNode,offset:ht.position(s)+1},{isSkipPaddingBlankHTML:!0}):null,d=ht.splitTree(l,{node:a.parentNode,offset:ht.position(a)},{isSkipPaddingBlankHTML:!0});r=o?ht.listDescendant(d,ht.isLi):y.from(d.childNodes).filter(ht.isLi),!o&&ht.isList(l.parentNode)||(r=r.map((function(t){return ht.replace(t,"P")}))),e().each(y.from(r).reverse(),(function(t,e){ht.insertAfter(e,l)}));var h=y.compact([l,d,u]);e().each(h,(function(t,o){var n=[o].concat(ht.listDescendant(o,ht.isList));e().each(n.reverse(),(function(t,e){ht.nodeLength(e)||ht.remove(e,!0)}))}))}i=i.concat(r)})),i}},{key:"appendToPrevious",value:function(t){return t.previousSibling?ht.appendChildNodes(t.previousSibling,[t]):this.wrapList([t],"LI")}},{key:"findList",value:function(t){return t?y.find(t.children,(function(t){return["OL","UL"].indexOf(t.nodeName)>-1})):null}},{key:"findNextSiblings",value:function(t){for(var e=[];t.nextSibling;)e.push(t.nextSibling),t=t.nextSibling;return e}}],n&&Et(o.prototype,n),i&&Et(o,i),t}();function Nt(t,e){for(var o=0;o1,i=e.rowSpan>1,a=t.rowIndex===r.rowPos&&e.cellIndex===r.colPos;l(t.rowIndex,o,t,e,i,n,!1);var s=e.attributes.rowSpan?parseInt(e.attributes.rowSpan.value,10):0;if(s>1)for(var c=1;c1)for(var p=1;p=o.cellIndex&&o.cellIndex<=e&&!n&&r.colPos++}function f(e){switch(o){case t.where.Column:if(e.isColSpan)return t.resultAction.SubtractSpanCount;break;case t.where.Row:if(!e.isVirtual&&e.isRowSpan)return t.resultAction.AddCell;if(e.isRowSpan)return t.resultAction.SubtractSpanCount}return t.resultAction.RemoveCell}function p(e){switch(o){case t.where.Column:if(e.isColSpan)return t.resultAction.SumSpanCount;if(e.isRowSpan&&e.isVirtual)return t.resultAction.Ignore;break;case t.where.Row:if(e.isRowSpan)return t.resultAction.SumSpanCount;if(e.isColSpan&&e.isVirtual)return t.resultAction.Ignore}return t.resultAction.AddCell}this.getActionList=function(){for(var e=o===t.where.Row?r.rowPos:-1,i=o===t.where.Column?r.colPos:-1,l=0,u=!0;u;){var d=e>=0?e:l,h=i>=0?i:l,v=a[d];if(!v)return u=!1,s;var m=v[h];if(!m)return u=!1,s;var g=t.resultAction.Ignore;switch(n){case t.requestAction.Add:g=p(m);break;case t.requestAction.Delete:g=f(m)}s.push(c(m,g,d,h)),l++}return s},e&&e.tagName&&("td"===e.tagName.toLowerCase()||"th"===e.tagName.toLowerCase())&&(r.colPos=e.cellIndex,e.parentElement&&e.parentElement.tagName&&"tr"===e.parentElement.tagName.toLowerCase()&&(r.rowPos=e.parentElement.rowIndex)),function(){for(var t=i.rows,e=0;e"),s=new Rt(n,Rt.where.Row,Rt.requestAction.Add,e()(i).closest("table")[0]).getActionList(),l=0;l"+ht.blank+"");break;case Rt.resultAction.SumSpanCount:if("top"===o&&(c.baseCell.parent?c.baseCell.closest("tr").rowIndex:0)<=i[0].rowIndex){var d=e()("
      ").append(e()(""+ht.blank+"").removeAttr("rowspan")).html();a.append(d);break}var h=parseInt(c.baseCell.rowSpan,10);h++,c.baseCell.setAttribute("rowSpan",h)}}if("top"===o)i.before(a);else{if(n.rowSpan>1){var f=i[0].rowIndex+(n.rowSpan-2);return void e()(e()(i).parent().find("tr")[f]).after(e()(a))}i.after(a)}}},{key:"addCol",value:function(t,o){var n=ht.ancestor(t.commonAncestor(),ht.isCell),i=e()(n).closest("tr");e()(i).siblings().push(i);for(var r=new Rt(n,Rt.where.Column,Rt.requestAction.Add,e()(i).closest("table")[0]).getActionList(),a=0;a"+ht.blank+""):e()(s.baseCell).before(""+ht.blank+"");break;case Rt.resultAction.SumSpanCount:if("right"===o){var c=parseInt(s.baseCell.colSpan,10);c++,s.baseCell.setAttribute("colSpan",c)}else e()(s.baseCell).before(""+ht.blank+"")}}}},{key:"recoverAttributes",value:function(t){var e="";if(!t)return e;for(var o=t.attributes||[],n=0;n1,d=u?parseInt(l.rowSpan,10):0;switch(a[s].action){case Rt.resultAction.Ignore:continue;case Rt.resultAction.AddCell:var h=n.next("tr")[0];if(!h)continue;var f=n[0].cells[i];u&&(d>2?(d--,h.insertBefore(f,h.cells[i]),h.cells[i].setAttribute("rowSpan",d),h.cells[i].innerHTML=""):2===d&&(h.insertBefore(f,h.cells[i]),h.cells[i].removeAttribute("rowSpan"),h.cells[i].innerHTML=""));continue;case Rt.resultAction.SubtractSpanCount:u&&(d>2?(d--,l.setAttribute("rowSpan",d),c.rowIndex!==r&&l.cellIndex===i&&(l.innerHTML="")):2===d&&(l.removeAttribute("rowSpan"),c.rowIndex!==r&&l.cellIndex===i&&(l.innerHTML="")));continue;case Rt.resultAction.RemoveCell:continue}}n.remove()}},{key:"deleteCol",value:function(t){for(var o=ht.ancestor(t.commonAncestor(),ht.isCell),n=e()(o).closest("tr"),i=n.children("td, th").index(e()(o)),r=new Rt(o,Rt.where.Column,Rt.requestAction.Delete,e()(n).closest("table")[0]).getActionList(),a=0;a1){var l=s.colSpan?parseInt(s.colSpan,10):0;l>2?(l--,s.setAttribute("colSpan",l),s.cellIndex===i&&(s.innerHTML="")):2===l&&(s.removeAttribute("colSpan"),s.cellIndex===i&&(s.innerHTML=""))}continue;case Rt.resultAction.RemoveCell:ht.remove(r[a].baseCell,!0);continue}}},{key:"createTable",value:function(t,o,n){for(var i,r=[],a=0;a"+ht.blank+"");i=r.join("");for(var s,l=[],c=0;c"+i+"");s=l.join("");var u=e()(""+s+"
      ");return n&&n.tableClassName&&u.addClass(n.tableClassName),u[0]}},{key:"deleteTable",value:function(t){var o=ht.ancestor(t.commonAncestor(),ht.isCell);e()(o).closest("table").remove()}}],n&&Pt(o.prototype,n),i&&Pt(o,i),t}();function At(t,e){for(var o=0;o0&&n.isLimited(l))){var c=s.toString()!==i;"string"==typeof o&&(o=o.trim()),n.options.onCreateLink?o=n.options.onCreateLink(o):a&&(o=/^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(o)?o:n.options.defaultProtocol+o);var u=[];if(c){var d=(s=s.deleteContents()).insertNode(e()(""+i+"")[0]);u.push(d)}else u=n.style.styleNodes(s,{nodeName:"A",expandClosestSibling:!0,onlyPartialContains:!0});e().each(u,(function(t,n){e()(n).attr("href",o),r?e()(n).attr("target","_blank"):e()(n).removeAttr("target")})),n.setLastRange(n.createRangeFromList(u).select())}})),this.color=this.wrapCommand((function(t){var e=t.foreColor,o=t.backColor;e&&document.execCommand("foreColor",!1,e),o&&document.execCommand("backColor",!1,o)})),this.foreColor=this.wrapCommand((function(t){document.execCommand("foreColor",!1,t)})),this.insertTable=this.wrapCommand((function(t){var e=t.split("x");n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0],e[1],n.options))})),this.removeMedia=this.wrapCommand((function(){var t=e()(n.restoreTarget()).parent();t.closest("figure").length?t.closest("figure").remove():t=e()(n.restoreTarget()).detach(),n.context.triggerEvent("media.delete",t,n.$editable)})),this.floatMe=this.wrapCommand((function(t){var o=e()(n.restoreTarget());o.toggleClass("note-float-left","left"===t),o.toggleClass("note-float-right","right"===t),o.css("float","none"===t?"":t)})),this.resize=this.wrapCommand((function(t){var o=e()(n.restoreTarget());0===(t=parseFloat(t))?o.css("width",""):o.css({width:100*t+"%",height:""})}))}var o,n,i;return o=t,n=[{key:"initialize",value:function(){var t=this;this.$editable.on("keydown",(function(e){if(e.keyCode===wt.code.ENTER&&t.context.triggerEvent("enter",e),t.context.triggerEvent("keydown",e),t.snapshot=t.history.makeSnapshot(),t.hasKeyShortCut=!1,e.isDefaultPrevented()||(t.options.shortcuts?t.hasKeyShortCut=t.handleKeyMap(e):t.preventDefaultEditableShortCuts(e)),t.isLimited(1,e)){var o=t.getLastRange();if(o.eo-o.so==0)return!1}t.setLastRange(),t.options.recordEveryKeystroke&&!1===t.hasKeyShortCut&&t.history.recordUndo()})).on("keyup",(function(e){t.setLastRange(),t.context.triggerEvent("keyup",e)})).on("focus",(function(e){t.setLastRange(),t.context.triggerEvent("focus",e)})).on("blur",(function(e){t.context.triggerEvent("blur",e)})).on("mousedown",(function(e){t.context.triggerEvent("mousedown",e)})).on("mouseup",(function(e){t.setLastRange(),t.history.recordUndo(),t.context.triggerEvent("mouseup",e)})).on("scroll",(function(e){t.context.triggerEvent("scroll",e)})).on("paste",(function(e){t.setLastRange(),t.context.triggerEvent("paste",e)})).on("input",(function(){t.isLimited(0)&&t.snapshot&&t.history.applySnapshot(t.snapshot)})),this.$editable.attr("spellcheck",this.options.spellCheck),this.$editable.attr("autocorrect",this.options.spellCheck),this.options.disableGrammar&&this.$editable.attr("data-gramm",!1),this.$editable.html(ht.html(this.$note)||ht.emptyPara),this.$editable.on(f.inputEventName,v.debounce((function(){t.context.triggerEvent("change",t.$editable.html(),t.$editable)}),10)),this.$editable.on("focusin",(function(e){t.context.triggerEvent("focusin",e)})).on("focusout",(function(e){t.context.triggerEvent("focusout",e)})),this.options.airMode?this.options.overrideContextMenu&&this.$editor.on("contextmenu",(function(e){return t.context.triggerEvent("contextmenu",e),!1})):(this.options.width&&this.$editor.outerWidth(this.options.width),this.options.height&&this.$editable.outerHeight(this.options.height),this.options.maxHeight&&this.$editable.css("max-height",this.options.maxHeight),this.options.minHeight&&this.$editable.css("min-height",this.options.minHeight)),this.history.recordUndo(),this.setLastRange()}},{key:"destroy",value:function(){this.$editable.off()}},{key:"handleKeyMap",value:function(t){var e=this.options.keyMap[f.isMac?"mac":"pc"],o=[];t.metaKey&&o.push("CMD"),t.ctrlKey&&!t.altKey&&o.push("CTRL"),t.shiftKey&&o.push("SHIFT");var n=wt.nameFromCode[t.keyCode];n&&o.push(n);var i=e[o.join("+")];if("TAB"!==n||this.options.tabDisable)if(i){if(!1!==this.context.invoke(i))return t.preventDefault(),!0}else wt.isEdit(t.keyCode)&&this.afterCommand();else this.afterCommand();return!1}},{key:"preventDefaultEditableShortCuts",value:function(t){(t.ctrlKey||t.metaKey)&&y.contains([66,73,85],t.keyCode)&&t.preventDefault()}},{key:"isLimited",value:function(t,e){return t=t||0,(void 0===e||!(wt.isMove(e.keyCode)||wt.isNavigation(e.keyCode)||e.ctrlKey||e.metaKey||y.contains([wt.code.BACKSPACE,wt.code.DELETE],e.keyCode)))&&this.options.maxTextLength>0&&this.$editable.text().length+t>this.options.maxTextLength}},{key:"createRange",value:function(){return this.focus(),this.setLastRange(),this.getLastRange()}},{key:"createRangeFromList",value:function(t){var e=kt.createFromNodeBefore(y.head(t)).getStartPoint(),o=kt.createFromNodeAfter(y.last(t)).getEndPoint();return kt.create(e.node,e.offset,o.node,o.offset)}},{key:"setLastRange",value:function(t){t?this.lastRange=t:(this.lastRange=kt.create(this.editable),0===e()(this.lastRange.sc).closest(".note-editable").length&&(this.lastRange=kt.createFromBodyElement(this.editable)))}},{key:"getLastRange",value:function(){return this.lastRange||this.setLastRange(),this.lastRange}},{key:"saveRange",value:function(t){t&&this.getLastRange().collapse().select()}},{key:"restoreRange",value:function(){this.lastRange&&(this.lastRange.select(),this.focus())}},{key:"saveTarget",value:function(t){this.$editable.data("target",t)}},{key:"clearTarget",value:function(){this.$editable.removeData("target")}},{key:"restoreTarget",value:function(){return this.$editable.data("target")}},{key:"currentStyle",value:function(){var t=kt.create();return t&&(t=t.normalize()),t?this.style.current(t):this.style.fromNode(this.$editable)}},{key:"styleFromNode",value:function(t){return this.style.fromNode(t)}},{key:"undo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.undo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"commit",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.commit(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"redo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.redo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"beforeCommand",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),document.execCommand("styleWithCSS",!1,this.options.styleWithCSS),this.focus()}},{key:"afterCommand",value:function(t){this.normalizeContent(),this.history.recordUndo(),t||this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"tab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t);else{if(0===this.options.tabSize)return!1;this.isLimited(this.options.tabSize)||(this.beforeCommand(),this.typing.insertTab(t,this.options.tabSize),this.afterCommand())}}},{key:"untab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t,!0);else if(0===this.options.tabSize)return!1}},{key:"wrapCommand",value:function(t){return function(){this.beforeCommand(),t.apply(this,arguments),this.afterCommand()}}},{key:"insertImage",value:function(t,o){var n,i=this;return(n=t,e().Deferred((function(t){var o=e()("");o.one("load",(function(){o.off("error abort"),t.resolve(o)})).one("error abort",(function(){o.off("load").detach(),t.reject(o)})).css({display:"none"}).appendTo(document.body).attr("src",n)})).promise()).then((function(t){i.beforeCommand(),"function"==typeof o?o(t):("string"==typeof o&&t.attr("data-filename",o),t.css("width",Math.min(i.$editable.width(),t.width()))),t.show(),i.getLastRange().insertNode(t[0]),i.setLastRange(kt.createFromNodeAfter(t[0]).select()),i.afterCommand()})).fail((function(t){i.context.triggerEvent("image.upload.error",t)}))}},{key:"insertImagesAsDataURL",value:function(t){var o=this;e().each(t,(function(t,n){var i=n.name;o.options.maximumImageFileSize&&o.options.maximumImageFileSize":t),o&&o.length&&(o[0].tagName.toUpperCase()!==t.toUpperCase()&&(o=o.find(t)),o&&o.length)){var n=this.createRange(),i=e()([n.sc,n.ec]).closest(t);i.removeClass();var r=o[0].className||"";r&&i.addClass(r)}}},{key:"formatPara",value:function(){this.formatBlock("P")}},{key:"fontStyling",value:function(t,o){var n=this.getLastRange();if(""!==n){var i=this.style.styleNodes(n);if(this.$editor.find(".note-status-output").html(""),e()(i).css(t,o),n.isCollapsed()){var r=y.head(i);r&&!ht.nodeLength(r)&&(r.innerHTML=ht.ZERO_WIDTH_NBSP_CHAR,kt.createFromNode(r.firstChild).select(),this.setLastRange(),this.$editable.data("bogus",r))}else this.setLastRange(this.createRangeFromList(i).select())}else{var a=e().now();this.$editor.find(".note-status-output").html('
      '+this.lang.output.noSelection+"
      "),setTimeout((function(){e()("#note-status-output-"+a).remove()}),5e3)}}},{key:"unlink",value:function(){var t=this.getLastRange();if(t.isOnAnchor()){var e=ht.ancestor(t.sc,ht.isAnchor);(t=kt.createFromNode(e)).select(),this.setLastRange(),this.beforeCommand(),document.execCommand("unlink"),this.afterCommand()}}},{key:"getLinkInfo",value:function(){var t=this.getLastRange().expand(ht.isAnchor),o=e()(y.head(t.nodes(ht.isAnchor))),n={range:t,text:t.toString(),url:o.length?o.attr("href"):""};return o.length&&(n.isNewWindow="_blank"===o.attr("target")),n}},{key:"addRow",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addRow(e,t),this.afterCommand())}},{key:"addCol",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addCol(e,t),this.afterCommand())}},{key:"deleteRow",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteRow(t),this.afterCommand())}},{key:"deleteCol",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteCol(t),this.afterCommand())}},{key:"deleteTable",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteTable(t),this.afterCommand())}},{key:"resizeTo",value:function(t,e,o){var n;if(o){var i=t.y/t.x,r=e.data("ratio");n={width:r>i?t.x:t.y/r,height:r>i?t.x*r:t.y}}else n={width:t.x,height:t.y};e.css(n)}},{key:"hasFocus",value:function(){return this.$editable.is(":focus")}},{key:"focus",value:function(){this.hasFocus()||this.$editable.focus()}},{key:"isEmpty",value:function(){return ht.isEmpty(this.$editable[0])||ht.emptyPara===this.$editable.html()}},{key:"empty",value:function(){this.context.invoke("code",ht.emptyPara)}},{key:"normalizeContent",value:function(){this.$editable[0].normalize()}}],n&&At(o.prototype,n),i&&At(o,i),t}();function Dt(t,e){for(var o=0;o1?o.items[1]:y.head(o.items);"file"===n.kind&&-1!==n.type.indexOf("image/")?(this.context.invoke("editor.insertImagesOrCallback",[n.getAsFile()]),t.preventDefault()):"string"===n.kind&&this.context.invoke("editor.isLimited",o.getData("Text").length)&&t.preventDefault()}else if(window.clipboardData){var i=window.clipboardData.getData("text");this.context.invoke("editor.isLimited",i.length)&&t.preventDefault()}setTimeout((function(){e.context.invoke("editor.afterCommand")}),10)}}])&&Dt(e.prototype,o),n&&Dt(e,n),t}();function Bt(t,e){for(var o=0;o','
      ',"
      "].join("")).prependTo(this.$editor)}var o,n,i;return o=t,n=[{key:"initialize",value:function(){this.options.disableDragAndDrop?(this.documentEventHandlers.onDrop=function(t){t.preventDefault()},this.$eventListener=this.$dropzone,this.$eventListener.on("drop",this.documentEventHandlers.onDrop)):this.attachDragAndDropEvent()}},{key:"attachDragAndDropEvent",value:function(){var t=this,o=e()(),n=this.$dropzone.find(".note-dropzone-message");this.documentEventHandlers.onDragenter=function(e){var i=t.context.invoke("codeview.isActivated"),r=t.$editor.width()>0&&t.$editor.height()>0;i||o.length||!r||(t.$editor.addClass("dragover"),t.$dropzone.width(t.$editor.width()),t.$dropzone.height(t.$editor.height()),n.text(t.lang.image.dragImageHere)),o=o.add(e.target)},this.documentEventHandlers.onDragleave=function(n){(o=o.not(n.target)).length&&"BODY"!==n.target.nodeName||(o=e()(),t.$editor.removeClass("dragover"))},this.documentEventHandlers.onDrop=function(){o=e()(),t.$editor.removeClass("dragover")},this.$eventListener.on("dragenter",this.documentEventHandlers.onDragenter).on("dragleave",this.documentEventHandlers.onDragleave).on("drop",this.documentEventHandlers.onDrop),this.$dropzone.on("dragenter",(function(){t.$dropzone.addClass("hover"),n.text(t.lang.image.dropImage)})).on("dragleave",(function(){t.$dropzone.removeClass("hover"),n.text(t.lang.image.dragImageHere)})),this.$dropzone.on("drop",(function(o){var n=o.originalEvent.dataTransfer;o.preventDefault(),n&&n.files&&n.files.length?(t.$editable.focus(),t.context.invoke("editor.insertImagesOrCallback",n.files)):e().each(n.types,(function(o,i){if(!(i.toLowerCase().indexOf("_moz_")>-1)){var r=n.getData(i);i.toLowerCase().indexOf("text")>-1?t.context.invoke("editor.pasteHTML",r):e()(r).each((function(e,o){t.context.invoke("editor.insertNode",o)}))}}))})).on("dragover",!1)}},{key:"destroy",value:function(){var t=this;Object.keys(this.documentEventHandlers).forEach((function(e){t.$eventListener.off(e.substr(2).toLowerCase(),t.documentEventHandlers[e])})),this.documentEventHandlers={}}}],n&&Bt(o.prototype,n),i&&Bt(o,i),t}();function Mt(t,e){var o="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!o){if(Array.isArray(t)||(o=function(t,e){if(!t)return;if("string"==typeof t)return Ot(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);"Object"===o&&t.constructor&&(o=t.constructor.name);if("Map"===o||"Set"===o)return Array.from(t);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return Ot(t,e)}(t))||e&&t&&"number"==typeof t.length){o&&(t=o);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,s=!1;return{s:function(){o=o.call(t)},n:function(){var t=o.next();return a=t.done,t},e:function(t){s=!0,r=t},f:function(){try{a||null==o.return||o.return()}finally{if(s)throw r}}}}function Ot(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,n=new Array(e);o.*?(?:<\/iframe>)?)/gi,(function(t){if(/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t))return"";var o,n=Mt(e);try{for(n.s();!(o=n.n()).done;){var i=o.value;if(new RegExp('src="(https?:)?//'+i.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+'/(.+)"').test(t))return t}}catch(t){n.e(t)}finally{n.f()}return""}))}return t}},{key:"activate",value:function(){var t=this,e=this.CodeMirrorConstructor;if(this.$codable.val(ht.html(this.$editable,this.options.prettifyHtml)),this.$codable.height(this.$editable.height()),this.context.invoke("toolbar.updateCodeview",!0),this.context.invoke("airPopover.updateCodeview",!0),this.$editor.addClass("codeview"),this.$codable.focus(),e){var o=e.fromTextArea(this.$codable[0],this.options.codemirror);if(this.options.codemirror.tern){var n=new e.TernServer(this.options.codemirror.tern);o.ternServer=n,o.on("cursorActivity",(function(t){n.updateArgHints(t)}))}o.on("blur",(function(e){t.context.triggerEvent("blur.codeview",o.getValue(),e)})),o.on("change",(function(){t.context.triggerEvent("change.codeview",o.getValue(),o)})),o.setSize(null,this.$editable.outerHeight()),this.$codable.data("cmEditor",o)}else this.$codable.on("blur",(function(e){t.context.triggerEvent("blur.codeview",t.$codable.val(),e)})),this.$codable.on("input",(function(){t.context.triggerEvent("change.codeview",t.$codable.val(),t.$codable)}))}},{key:"deactivate",value:function(){if(this.CodeMirrorConstructor){var t=this.$codable.data("cmEditor");this.$codable.val(t.getValue()),t.toTextArea()}var e=this.purify(ht.value(this.$codable,this.options.prettifyHtml)||ht.emptyPara),o=this.$editable.html()!==e;this.$editable.html(e),this.$editable.height(this.options.height?this.$codable.height():"auto"),this.$editor.removeClass("codeview"),o&&this.context.triggerEvent("change",this.$editable.html(),this.$editable),this.$editable.focus(),this.context.invoke("toolbar.updateCodeview",!1),this.context.invoke("airPopover.updateCodeview",!1)}},{key:"destroy",value:function(){this.isActivated()&&this.deactivate()}}],o&&jt(e.prototype,o),n&&jt(e,n),t}();function Wt(t,e){for(var o=0;o0?Math.max(i,t.options.minheight):i,i=t.options.maxHeight>0?Math.min(i,t.options.maxHeight):i,r=t.options.minheight>0?Math.max(r,t.options.minheight):r,r=t.options.maxHeight>0?Math.min(r,t.options.maxHeight):r,t.$editable.height(i),t.$codable.height(r)};t.$document.on("mousemove",i).one("mouseup",(function(){t.$document.off("mousemove",i)}))}))}},{key:"destroy",value:function(){this.$statusbar.off(),this.$statusbar.addClass("locked")}}])&&Wt(o.prototype,n),i&&Wt(o,i),t}();function Vt(t,e){for(var o=0;o','
      ','
      ','
      ','
      ','
      ','
      ',this.options.disableResizeImage?"":'
      ',"
      ","
      "].join("")).prependTo(this.$editingArea),this.$handle.on("mousedown",(function(e){if(ht.isControlSizing(e.target)){e.preventDefault(),e.stopPropagation();var o=t.$handle.find(".note-control-selection").data("target"),n=o.offset(),i=t.$document.scrollTop(),r=function(e){t.context.invoke("editor.resizeTo",{x:e.clientX-n.left,y:e.clientY-(n.top-i)},o,!e.shiftKey),t.update(o[0],e)};t.$document.on("mousemove",r).one("mouseup",(function(e){e.preventDefault(),t.$document.off("mousemove",r),t.context.invoke("editor.afterCommand")})),o.data("ratio")||o.data("ratio",o.height()/o.width())}})),this.$handle.on("wheel",(function(e){e.preventDefault(),t.update()}))}},{key:"destroy",value:function(){this.$handle.remove()}},{key:"update",value:function(t,o){if(this.context.isDisabled())return!1;var n=ht.isImg(t),i=this.$handle.find(".note-control-selection");if(this.context.invoke("imagePopover.update",t,o),n){var r=e()(t),a=r.position(),s={left:a.left+parseInt(r.css("marginLeft"),10),top:a.top+parseInt(r.css("marginTop"),10)},l={w:r.outerWidth(!1),h:r.outerHeight(!1)};i.css({display:"block",left:s.left,top:s.top,width:l.w,height:l.h}).data("target",r);var c=new Image;c.src=r.attr("src");var u=l.w+"x"+l.h+" ("+this.lang.image.original+": "+c.width+"x"+c.height+")";i.find(".note-control-selection-info").text(u),this.context.invoke("editor.saveTarget",t)}else this.hide();return n}},{key:"hide",value:function(){this.context.invoke("editor.clearTarget"),this.$handle.children().hide()}}],n&&_t(o.prototype,n),i&&_t(o,i),t}();function Yt(t,e){for(var o=0;o").html(i).attr("href",n)[0];this.context.options.linkTargetBlank&&e()(r).attr("target","_blank"),this.lastWordRange.insertNode(r),this.lastWordRange=null,this.context.invoke("editor.focus")}}}},{key:"handleKeydown",value:function(t){if(y.contains([wt.code.ENTER,wt.code.SPACE],t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWordRange=e}}},{key:"handleKeyup",value:function(t){y.contains([wt.code.ENTER,wt.code.SPACE],t.keyCode)&&this.replace()}}])&&Yt(o.prototype,n),i&&Yt(o,i),t}();function Qt(t,e){for(var o=0;o
      '),this.$placeholder.on("click",(function(){t.context.invoke("focus")})).html(this.options.placeholder).prependTo(this.$editingArea),this.update()}},{key:"destroy",value:function(){this.$placeholder.remove()}},{key:"update",value:function(){var t=!this.context.invoke("codeview.isActivated")&&this.context.invoke("editor.isEmpty");this.$placeholder.toggle(t)}}])&&oe(o.prototype,n),i&&oe(o,i),t}();function ie(t,e){for(var o=0;o','
      '+this.lang.color.background+"
      ","
      ",'","
      ",'
      \x3c!-- back colors --\x3e
      ',"
      ",'",'',"
      ",'
      ',"
      "].join(""):"")+(i?['
      ','
      '+this.lang.color.foreground+"
      ","
      ",'","
      ",'
      \x3c!-- fore colors --\x3e
      ',"
      ",'",'',"
      ",'
      ',"
      "].join(""):""),callback:function(t){t.find(".note-holder").each((function(t,o){var n=e()(o);n.append(r.ui.palette({colors:r.options.colors,colorsName:r.options.colorsName,eventName:n.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())}));var o=[["#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF"]];t.find(".note-holder-custom").each((function(t,n){var i=e()(n);i.append(r.ui.palette({colors:o,colorsName:o,eventName:i.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())})),t.find("input[type=color]").each((function(o,n){e()(n).change((function(){var o=t.find("#"+e()(this).data("event")).find(".note-color-btn").first(),n=this.value.toUpperCase();o.css("background-color",n).attr("aria-label",n).attr("data-value",n).attr("data-original-title",n),o.click()}))}))},click:function(o){o.stopPropagation();var n=e()("."+t).find(".note-dropdown-menu"),i=e()(o.target),a=i.data("event"),s=i.attr("data-value");if("openPalette"===a){var l=n.find("#"+s),c=e()(n.find("#"+l.data("event")).find(".note-color-row")[0]),u=c.find(".note-color-btn").last().detach(),d=l.val();u.css("background-color",d).attr("aria-label",d).attr("data-value",d).attr("data-original-title",d),c.prepend(u),l.click()}else{if(y.contains(["backColor","foreColor"],a)){var h="backColor"===a?"background-color":"color",f=i.closest(".note-color").find(".note-recent-color"),p=i.closest(".note-color").find(".note-current-color-button");f.css(h,s),p.attr("data-"+a,s)}r.context.invoke("editor."+a,s)}}})]}).render()}},{key:"addToolbarButtons",value:function(){var t=this;this.context.memo("button.style",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic),t.options),tooltip:t.lang.style.style,data:{toggle:"dropdown"}}),t.ui.dropdown({className:"dropdown-style",items:t.options.styleTags,title:t.lang.style.style,template:function(e){"string"==typeof e&&(e={tag:e,title:Object.prototype.hasOwnProperty.call(t.lang.style,e)?t.lang.style[e]:e});var o=e.tag,n=e.title;return"<"+o+(e.style?' style="'+e.style+'" ':"")+(e.className?' class="'+e.className+'"':"")+">"+n+""},click:t.context.createInvokeHandler("editor.formatBlock")})]).render()}));for(var o=function(e,o){var n=t.options.styleTags[e];t.context.memo("button.style."+n,(function(){return t.button({className:"note-btn-style-"+n,contents:'
      '+n.toUpperCase()+"
      ",tooltip:t.lang.style[n],click:t.context.createInvokeHandler("editor.formatBlock")}).render()}))},n=0,i=this.options.styleTags.length;n',t.options),tooltip:t.lang.font.name,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontname",checkClassName:t.options.icons.menuCheck,items:t.options.fontNames.filter(t.isFontInstalled.bind(t)),title:t.lang.font.name,template:function(t){return''+t+""},click:t.context.createInvokeHandlerAndUpdateState("editor.fontName")})]).render()})),this.context.memo("button.fontsize",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('',t.options),tooltip:t.lang.font.size,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsize",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizes,title:t.lang.font.size,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSize")})]).render()})),this.context.memo("button.fontsizeunit",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('',t.options),tooltip:t.lang.font.sizeunit,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsizeunit",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizeUnits,title:t.lang.font.sizeunit,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit")})]).render()})),this.context.memo("button.color",(function(){return t.colorPalette("note-color-all",t.lang.color.recent,!0,!0)})),this.context.memo("button.forecolor",(function(){return t.colorPalette("note-color-fore",t.lang.color.foreground,!1,!0)})),this.context.memo("button.backcolor",(function(){return t.colorPalette("note-color-back",t.lang.color.background,!0,!1)})),this.context.memo("button.ul",(function(){return t.button({contents:t.ui.icon(t.options.icons.unorderedlist),tooltip:t.lang.lists.unordered+t.representShortcut("insertUnorderedList"),click:t.context.createInvokeHandler("editor.insertUnorderedList")}).render()})),this.context.memo("button.ol",(function(){return t.button({contents:t.ui.icon(t.options.icons.orderedlist),tooltip:t.lang.lists.ordered+t.representShortcut("insertOrderedList"),click:t.context.createInvokeHandler("editor.insertOrderedList")}).render()}));var r=this.button({contents:this.ui.icon(this.options.icons.alignLeft),tooltip:this.lang.paragraph.left+this.representShortcut("justifyLeft"),click:this.context.createInvokeHandler("editor.justifyLeft")}),a=this.button({contents:this.ui.icon(this.options.icons.alignCenter),tooltip:this.lang.paragraph.center+this.representShortcut("justifyCenter"),click:this.context.createInvokeHandler("editor.justifyCenter")}),s=this.button({contents:this.ui.icon(this.options.icons.alignRight),tooltip:this.lang.paragraph.right+this.representShortcut("justifyRight"),click:this.context.createInvokeHandler("editor.justifyRight")}),l=this.button({contents:this.ui.icon(this.options.icons.alignJustify),tooltip:this.lang.paragraph.justify+this.representShortcut("justifyFull"),click:this.context.createInvokeHandler("editor.justifyFull")}),c=this.button({contents:this.ui.icon(this.options.icons.outdent),tooltip:this.lang.paragraph.outdent+this.representShortcut("outdent"),click:this.context.createInvokeHandler("editor.outdent")}),u=this.button({contents:this.ui.icon(this.options.icons.indent),tooltip:this.lang.paragraph.indent+this.representShortcut("indent"),click:this.context.createInvokeHandler("editor.indent")});this.context.memo("button.justifyLeft",v.invoke(r,"render")),this.context.memo("button.justifyCenter",v.invoke(a,"render")),this.context.memo("button.justifyRight",v.invoke(s,"render")),this.context.memo("button.justifyFull",v.invoke(l,"render")),this.context.memo("button.outdent",v.invoke(c,"render")),this.context.memo("button.indent",v.invoke(u,"render")),this.context.memo("button.paragraph",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft),t.options),tooltip:t.lang.paragraph.paragraph,data:{toggle:"dropdown"}}),t.ui.dropdown([t.ui.buttonGroup({className:"note-align",children:[r,a,s,l]}),t.ui.buttonGroup({className:"note-list",children:[c,u]})])]).render()})),this.context.memo("button.height",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight),t.options),tooltip:t.lang.font.height,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({items:t.options.lineHeights,checkClassName:t.options.icons.menuCheck,className:"dropdown-line-height",title:t.lang.font.height,click:t.context.createInvokeHandler("editor.lineHeight")})]).render()})),this.context.memo("button.table",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table),t.options),tooltip:t.lang.table.table,data:{toggle:"dropdown"}}),t.ui.dropdown({title:t.lang.table.table,className:"note-table",items:['
      ','
      ','
      ','
      ',"
      ",'
      1 x 1
      '].join("")})],{callback:function(e){e.find(".note-dimension-picker-mousecatcher").css({width:t.options.insertTableMaxSize.col+"em",height:t.options.insertTableMaxSize.row+"em"}).mouseup(t.context.createInvokeHandler("editor.insertTable")).on("mousemove",t.tableMoveHandler.bind(t))}}).render()})),this.context.memo("button.link",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.link+t.representShortcut("linkDialog.show"),click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.picture",(function(){return t.button({contents:t.ui.icon(t.options.icons.picture),tooltip:t.lang.image.image,click:t.context.createInvokeHandler("imageDialog.show")}).render()})),this.context.memo("button.video",(function(){return t.button({contents:t.ui.icon(t.options.icons.video),tooltip:t.lang.video.video,click:t.context.createInvokeHandler("videoDialog.show")}).render()})),this.context.memo("button.hr",(function(){return t.button({contents:t.ui.icon(t.options.icons.minus),tooltip:t.lang.hr.insert+t.representShortcut("insertHorizontalRule"),click:t.context.createInvokeHandler("editor.insertHorizontalRule")}).render()})),this.context.memo("button.fullscreen",(function(){return t.button({className:"btn-fullscreen note-codeview-keep",contents:t.ui.icon(t.options.icons.arrowsAlt),tooltip:t.lang.options.fullscreen,click:t.context.createInvokeHandler("fullscreen.toggle")}).render()})),this.context.memo("button.codeview",(function(){return t.button({className:"btn-codeview note-codeview-keep",contents:t.ui.icon(t.options.icons.code),tooltip:t.lang.options.codeview,click:t.context.createInvokeHandler("codeview.toggle")}).render()})),this.context.memo("button.redo",(function(){return t.button({contents:t.ui.icon(t.options.icons.redo),tooltip:t.lang.history.redo+t.representShortcut("redo"),click:t.context.createInvokeHandler("editor.redo")}).render()})),this.context.memo("button.undo",(function(){return t.button({contents:t.ui.icon(t.options.icons.undo),tooltip:t.lang.history.undo+t.representShortcut("undo"),click:t.context.createInvokeHandler("editor.undo")}).render()})),this.context.memo("button.help",(function(){return t.button({contents:t.ui.icon(t.options.icons.question),tooltip:t.lang.options.help,click:t.context.createInvokeHandler("helpDialog.show")}).render()}))}},{key:"addImagePopoverButtons",value:function(){var t=this;this.context.memo("button.resizeFull",(function(){return t.button({contents:'100%',tooltip:t.lang.image.resizeFull,click:t.context.createInvokeHandler("editor.resize","1")}).render()})),this.context.memo("button.resizeHalf",(function(){return t.button({contents:'50%',tooltip:t.lang.image.resizeHalf,click:t.context.createInvokeHandler("editor.resize","0.5")}).render()})),this.context.memo("button.resizeQuarter",(function(){return t.button({contents:'25%',tooltip:t.lang.image.resizeQuarter,click:t.context.createInvokeHandler("editor.resize","0.25")}).render()})),this.context.memo("button.resizeNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.resizeNone,click:t.context.createInvokeHandler("editor.resize","0")}).render()})),this.context.memo("button.floatLeft",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatLeft),tooltip:t.lang.image.floatLeft,click:t.context.createInvokeHandler("editor.floatMe","left")}).render()})),this.context.memo("button.floatRight",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatRight),tooltip:t.lang.image.floatRight,click:t.context.createInvokeHandler("editor.floatMe","right")}).render()})),this.context.memo("button.floatNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.floatNone,click:t.context.createInvokeHandler("editor.floatMe","none")}).render()})),this.context.memo("button.removeMedia",(function(){return t.button({contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.image.remove,click:t.context.createInvokeHandler("editor.removeMedia")}).render()}))}},{key:"addLinkPopoverButtons",value:function(){var t=this;this.context.memo("button.linkDialogShow",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.edit,click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.unlink",(function(){return t.button({contents:t.ui.icon(t.options.icons.unlink),tooltip:t.lang.link.unlink,click:t.context.createInvokeHandler("editor.unlink")}).render()}))}},{key:"addTablePopoverButtons",value:function(){var t=this;this.context.memo("button.addRowUp",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowAbove),tooltip:t.lang.table.addRowAbove,click:t.context.createInvokeHandler("editor.addRow","top")}).render()})),this.context.memo("button.addRowDown",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowBelow),tooltip:t.lang.table.addRowBelow,click:t.context.createInvokeHandler("editor.addRow","bottom")}).render()})),this.context.memo("button.addColLeft",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colBefore),tooltip:t.lang.table.addColLeft,click:t.context.createInvokeHandler("editor.addCol","left")}).render()})),this.context.memo("button.addColRight",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colAfter),tooltip:t.lang.table.addColRight,click:t.context.createInvokeHandler("editor.addCol","right")}).render()})),this.context.memo("button.deleteRow",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowRemove),tooltip:t.lang.table.delRow,click:t.context.createInvokeHandler("editor.deleteRow")}).render()})),this.context.memo("button.deleteCol",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colRemove),tooltip:t.lang.table.delCol,click:t.context.createInvokeHandler("editor.deleteCol")}).render()})),this.context.memo("button.deleteTable",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.table.delTable,click:t.context.createInvokeHandler("editor.deleteTable")}).render()}))}},{key:"build",value:function(t,e){for(var o=0,n=e.length;o3&&c3&&ul&&ac)&&(this.isFollowing=!1,this.$toolbar.css({position:"relative",top:0,width:"100%",zIndex:"auto"}),this.$editable.css({marginTop:""}))}},{key:"changeContainer",value:function(t){t?this.$toolbar.prependTo(this.$editor):this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.options.followingToolbar&&this.followScroll()}},{key:"updateFullscreen",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"),t),this.changeContainer(t)}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"),t),t?this.deactivate():this.activate()}},{key:"activate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!0)}},{key:"deactivate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!1)}}])&&ae(o.prototype,n),i&&ae(o,i),t}();function le(t,e){for(var o=0;o','"),''),"
      ",'
      ','"),''),"
      ",this.options.disableLinkTarget?"":e()("
      ").append(this.ui.checkbox({className:"sn-checkbox-open-in-new-window",text:this.lang.link.openInNewWindow,checked:!0}).render()).html(),e()("
      ").append(this.ui.checkbox({className:"sn-checkbox-use-protocol",text:this.lang.link.useProtocol,checked:!0}).render()).html()].join(""),n='');this.$dialog=this.ui.dialog({className:"link-dialog",title:this.lang.link.insert,fade:this.options.dialogsFade,body:o,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===wt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"toggleLinkBtn",value:function(t,e,o){this.ui.toggleBtn(t,e.val()&&o.val())}},{key:"showLinkDialog",value:function(t){var o=this;return e().Deferred((function(e){var n=o.$dialog.find(".note-link-text"),i=o.$dialog.find(".note-link-url"),r=o.$dialog.find(".note-link-btn"),a=o.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"),s=o.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]");o.ui.onDialogShown(o.$dialog,(function(){o.context.triggerEvent("dialog.shown"),!t.url&&v.isValidUrl(t.text)&&(t.url=t.text),n.on("input paste propertychange",(function(){t.text=n.val(),o.toggleLinkBtn(r,n,i)})).val(t.text),i.on("input paste propertychange",(function(){t.text||n.val(i.val()),o.toggleLinkBtn(r,n,i)})).val(t.url),f.isSupportTouch||i.trigger("focus"),o.toggleLinkBtn(r,n,i),o.bindEnterKey(i,r),o.bindEnterKey(n,r);var l=void 0!==t.isNewWindow?t.isNewWindow:o.context.options.linkTargetBlank;a.prop("checked",l);var c=!t.url&&o.context.options.useProtocol;s.prop("checked",c),r.one("click",(function(r){r.preventDefault(),e.resolve({range:t.range,url:i.val(),text:n.val(),isNewWindow:a.is(":checked"),checkProtocol:s.is(":checked")}),o.ui.hideDialog(o.$dialog)}))})),o.ui.onDialogHidden(o.$dialog,(function(){n.off(),i.off(),r.off(),"pending"===e.state()&&e.reject()})),o.ui.showDialog(o.$dialog)})).promise()}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getLinkInfo");this.context.invoke("editor.saveRange"),this.showLinkDialog(e).then((function(e){t.context.invoke("editor.restoreRange"),t.context.invoke("editor.createLink",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}}])&&le(o.prototype,n),i&&le(o,i),t}();function ue(t,e){for(var o=0;o ')}}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.link),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(){if(this.context.invoke("editor.hasFocus")){var t=this.context.invoke("editor.getLastRange");if(t.isCollapsed()&&t.isOnAnchor()){var o=ht.ancestor(t.sc,ht.isAnchor),n=e()(o).attr("href");this.$popover.find("a").attr("href",n).text(n);var i=ht.posFromPlaceholder(o),r=e()(this.options.container).offset();i.top-=r.top,i.left-=r.left,this.$popover.css({display:"block",left:i.left,top:i.top})}else this.hide()}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&ue(o.prototype,n),i&&ue(o,i),t}();function he(t,e){for(var o=0;o")}var n=this.options.dialogsInBody?this.$body:this.options.container,i=['
      ','",'',t,"
      ",'
      ','",'',"
      "].join(""),r='');this.$dialog=this.ui.dialog({title:this.lang.image.insert,fade:this.options.dialogsFade,body:i,footer:r}).render().appendTo(n)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===wt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showImageDialog().then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange"),"string"==typeof e?t.options.callbacks.onImageLinkInsert?t.context.triggerEvent("image.link.insert",e):t.context.invoke("editor.insertImage",e):t.context.invoke("editor.insertImagesOrCallback",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showImageDialog",value:function(){var t=this;return e().Deferred((function(e){var o=t.$dialog.find(".note-image-input"),n=t.$dialog.find(".note-image-url"),i=t.$dialog.find(".note-image-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),o.replaceWith(o.clone().on("change",(function(t){e.resolve(t.target.files||t.target.value)})).val("")),n.on("input paste propertychange",(function(){t.ui.toggleBtn(i,n.val())})).val(""),f.isSupportTouch||n.trigger("focus"),i.click((function(t){t.preventDefault(),e.resolve(n.val())})),t.bindEnterKey(n,i)})),t.ui.onDialogHidden(t.$dialog,(function(){o.off(),n.off(),i.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&he(o.prototype,n),i&&he(o,i),t}();function pe(t,e){for(var o=0;o','"),''),"
      "].join(""),o='');this.$dialog=this.ui.dialog({title:this.lang.video.insert,fade:this.options.dialogsFade,body:e,footer:o}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===wt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"createVideoNode",value:function(t){var o,n=t.match(/\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/),i=t.match(/(?:\.|\/\/)drive\.google\.com\/file\/d\/(.[a-zA-Z0-9_-]*)\/view/),r=t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/),a=t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/),s=t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/),l=t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/),c=t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/),u=t.match(/\/\/(.*)\/videos\/watch\/([^?]*)(?:\?(?:start=(\w*))?(?:&stop=(\w*))?(?:&loop=([10]))?(?:&autoplay=([10]))?(?:&muted=([10]))?)?/),d=t.match(/\/\/v\.qq\.com.*?vid=(.+)/),h=t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/),f=t.match(/^.+.(mp4|m4v)$/),p=t.match(/^.+.(ogg|ogv)$/),v=t.match(/^.+.(webm)$/),m=t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/);if(n&&11===n[1].length){var g=n[1],b=0;if(void 0!==n[2]){var k=n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/);if(k)for(var y=[3600,60,1],w=0,C=y.length;w").attr("frameborder",0).attr("src","//www.youtube.com/embed/"+g+(b>0?"?start="+b:"")).attr("width","640").attr("height","360")}else if(i&&i[0].length)o=e()("\n *
      \n *\n * */\n\n.aspect-ratio {\n height: 0;\n position: relative;\n}\n\n.aspect-ratio--16x9 { padding-bottom: 56.25%; }\n.aspect-ratio--9x16 { padding-bottom: 177.77%; }\n\n.aspect-ratio--4x3 { padding-bottom: 75%; }\n.aspect-ratio--3x4 { padding-bottom: 133.33%; }\n\n.aspect-ratio--6x4 { padding-bottom: 66.6%; }\n.aspect-ratio--4x6 { padding-bottom: 150%; }\n\n.aspect-ratio--8x5 { padding-bottom: 62.5%; }\n.aspect-ratio--5x8 { padding-bottom: 160%; }\n\n.aspect-ratio--7x5 { padding-bottom: 71.42%; }\n.aspect-ratio--5x7 { padding-bottom: 140%; }\n\n.aspect-ratio--1x1 { padding-bottom: 100%; }\n\n.aspect-ratio--object {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n}\n\n@media #{$breakpoint-not-small}{\n .aspect-ratio-ns {\n height: 0;\n position: relative;\n }\n .aspect-ratio--16x9-ns { padding-bottom: 56.25%; }\n .aspect-ratio--9x16-ns { padding-bottom: 177.77%; }\n .aspect-ratio--4x3-ns { padding-bottom: 75%; }\n .aspect-ratio--3x4-ns { padding-bottom: 133.33%; }\n .aspect-ratio--6x4-ns { padding-bottom: 66.6%; }\n .aspect-ratio--4x6-ns { padding-bottom: 150%; }\n .aspect-ratio--8x5-ns { padding-bottom: 62.5%; }\n .aspect-ratio--5x8-ns { padding-bottom: 160%; }\n .aspect-ratio--7x5-ns { padding-bottom: 71.42%; }\n .aspect-ratio--5x7-ns { padding-bottom: 140%; }\n .aspect-ratio--1x1-ns { padding-bottom: 100%; }\n .aspect-ratio--object-ns {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n }\n}\n\n@media #{$breakpoint-medium}{\n .aspect-ratio-m {\n height: 0;\n position: relative;\n }\n .aspect-ratio--16x9-m { padding-bottom: 56.25%; }\n .aspect-ratio--9x16-m { padding-bottom: 177.77%; }\n .aspect-ratio--4x3-m { padding-bottom: 75%; }\n .aspect-ratio--3x4-m { padding-bottom: 133.33%; }\n .aspect-ratio--6x4-m { padding-bottom: 66.6%; }\n .aspect-ratio--4x6-m { padding-bottom: 150%; }\n .aspect-ratio--8x5-m { padding-bottom: 62.5%; }\n .aspect-ratio--5x8-m { padding-bottom: 160%; }\n .aspect-ratio--7x5-m { padding-bottom: 71.42%; }\n .aspect-ratio--5x7-m { padding-bottom: 140%; }\n .aspect-ratio--1x1-m { padding-bottom: 100%; }\n .aspect-ratio--object-m {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n }\n}\n\n@media #{$breakpoint-large}{\n .aspect-ratio-l {\n height: 0;\n position: relative;\n }\n .aspect-ratio--16x9-l { padding-bottom: 56.25%; }\n .aspect-ratio--9x16-l { padding-bottom: 177.77%; }\n .aspect-ratio--4x3-l { padding-bottom: 75%; }\n .aspect-ratio--3x4-l { padding-bottom: 133.33%; }\n .aspect-ratio--6x4-l { padding-bottom: 66.6%; }\n .aspect-ratio--4x6-l { padding-bottom: 150%; }\n .aspect-ratio--8x5-l { padding-bottom: 62.5%; }\n .aspect-ratio--5x8-l { padding-bottom: 160%; }\n .aspect-ratio--7x5-l { padding-bottom: 71.42%; }\n .aspect-ratio--5x7-l { padding-bottom: 140%; }\n .aspect-ratio--1x1-l { padding-bottom: 100%; }\n .aspect-ratio--object-l {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 100;\n }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n IMAGES\n Docs: http://tachyons.io/docs/elements/images/\n\n*/\n\n/* Responsive images! */\n\nimg { max-width: 100%; }\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BACKGROUND SIZE\n Docs: http://tachyons.io/docs/themes/background-size/\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n/*\n Often used in combination with background image set as an inline style\n on an html element.\n*/\n\n .cover { background-size: cover!important; }\n .contain { background-size: contain!important; }\n\n@media #{$breakpoint-not-small} {\n .cover-ns { background-size: cover!important; }\n .contain-ns { background-size: contain!important; }\n}\n\n@media #{$breakpoint-medium} {\n .cover-m { background-size: cover!important; }\n .contain-m { background-size: contain!important; }\n}\n\n@media #{$breakpoint-large} {\n .cover-l { background-size: cover!important; }\n .contain-l { background-size: contain!important; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BACKGROUND POSITION\n\n Base:\n bg = background\n\n Modifiers:\n -center = center center\n -top = top center\n -right = center right\n -bottom = bottom center\n -left = center left\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n */\n\n.bg-center { \n background-repeat: no-repeat;\n background-position: center center; \n}\n\n.bg-top { \n background-repeat: no-repeat; \n background-position: top center; \n}\n\n.bg-right { \n background-repeat: no-repeat; \n background-position: center right; \n}\n\n.bg-bottom { \n background-repeat: no-repeat; \n background-position: bottom center; \n}\n\n.bg-left { \n background-repeat: no-repeat; \n background-position: center left; \n}\n\n@media #{$breakpoint-not-small} {\n .bg-center-ns { \n background-repeat: no-repeat;\n background-position: center center; \n }\n\n .bg-top-ns { \n background-repeat: no-repeat; \n background-position: top center; \n }\n\n .bg-right-ns { \n background-repeat: no-repeat; \n background-position: center right; \n }\n\n .bg-bottom-ns { \n background-repeat: no-repeat; \n background-position: bottom center; \n }\n\n .bg-left-ns { \n background-repeat: no-repeat; \n background-position: center left; \n }\n}\n\n@media #{$breakpoint-medium} {\n .bg-center-m { \n background-repeat: no-repeat;\n background-position: center center; \n }\n\n .bg-top-m { \n background-repeat: no-repeat; \n background-position: top center; \n }\n\n .bg-right-m { \n background-repeat: no-repeat; \n background-position: center right; \n }\n\n .bg-bottom-m { \n background-repeat: no-repeat; \n background-position: bottom center; \n }\n\n .bg-left-m { \n background-repeat: no-repeat; \n background-position: center left; \n }\n}\n\n@media #{$breakpoint-large} {\n .bg-center-l { \n background-repeat: no-repeat;\n background-position: center center; \n }\n\n .bg-top-l { \n background-repeat: no-repeat; \n background-position: top center; \n }\n\n .bg-right-l { \n background-repeat: no-repeat; \n background-position: center right; \n }\n\n .bg-bottom-l { \n background-repeat: no-repeat; \n background-position: bottom center; \n }\n\n .bg-left-l { \n background-repeat: no-repeat; \n background-position: center left; \n }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n OUTLINES\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.outline { outline: 1px solid; }\n.outline-transparent { outline: 1px solid transparent; }\n.outline-0 { outline: 0; }\n\n@media #{$breakpoint-not-small} {\n .outline-ns { outline: 1px solid; }\n .outline-transparent-ns { outline: 1px solid transparent; }\n .outline-0-ns { outline: 0; }\n}\n\n@media #{$breakpoint-medium} {\n .outline-m { outline: 1px solid; }\n .outline-transparent-m { outline: 1px solid transparent; }\n .outline-0-m { outline: 0; }\n}\n\n@media #{$breakpoint-large} {\n .outline-l { outline: 1px solid; }\n .outline-transparent-l { outline: 1px solid transparent; }\n .outline-0-l { outline: 0; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BORDERS\n Docs: http://tachyons.io/docs/themes/borders/\n\n Base:\n b = border\n\n Modifiers:\n a = all\n t = top\n r = right\n b = bottom\n l = left\n n = none\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n .ba { border-style: solid; border-width: 1px; }\n .bt { border-top-style: solid; border-top-width: 1px; }\n .br { border-right-style: solid; border-right-width: 1px; }\n .bb { border-bottom-style: solid; border-bottom-width: 1px; }\n .bl { border-left-style: solid; border-left-width: 1px; }\n .bn { border-style: none; border-width: 0; }\n\n\n@media #{$breakpoint-not-small} {\n .ba-ns { border-style: solid; border-width: 1px; }\n .bt-ns { border-top-style: solid; border-top-width: 1px; }\n .br-ns { border-right-style: solid; border-right-width: 1px; }\n .bb-ns { border-bottom-style: solid; border-bottom-width: 1px; }\n .bl-ns { border-left-style: solid; border-left-width: 1px; }\n .bn-ns { border-style: none; border-width: 0; }\n}\n\n@media #{$breakpoint-medium} {\n .ba-m { border-style: solid; border-width: 1px; }\n .bt-m { border-top-style: solid; border-top-width: 1px; }\n .br-m { border-right-style: solid; border-right-width: 1px; }\n .bb-m { border-bottom-style: solid; border-bottom-width: 1px; }\n .bl-m { border-left-style: solid; border-left-width: 1px; }\n .bn-m { border-style: none; border-width: 0; }\n}\n\n@media #{$breakpoint-large} {\n .ba-l { border-style: solid; border-width: 1px; }\n .bt-l { border-top-style: solid; border-top-width: 1px; }\n .br-l { border-right-style: solid; border-right-width: 1px; }\n .bb-l { border-bottom-style: solid; border-bottom-width: 1px; }\n .bl-l { border-left-style: solid; border-left-width: 1px; }\n .bn-l { border-style: none; border-width: 0; }\n}\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BORDER COLORS\n Docs: http://tachyons.io/docs/themes/borders/\n\n Border colors can be used to extend the base\n border classes ba,bt,bb,br,bl found in the _borders.css file.\n\n The base border class by default will set the color of the border\n to that of the current text color. These classes are for the cases\n where you desire for the text and border colors to be different.\n\n Base:\n b = border\n\n Modifiers:\n --color-name = each color variable name is also a border color name\n\n*/\n\n.b--black { border-color: $black; }\n.b--near-black { border-color: $near-black; }\n.b--dark-gray { border-color: $dark-gray; }\n.b--mid-gray { border-color: $mid-gray; }\n.b--gray { border-color: $gray; }\n.b--silver { border-color: $silver; }\n.b--light-silver { border-color: $light-silver; }\n.b--moon-gray { border-color: $moon-gray; }\n.b--light-gray { border-color: $light-gray; }\n.b--near-white { border-color: $near-white; }\n.b--white { border-color: $white; }\n\n.b--white-90 { border-color: $white-90; }\n.b--white-80 { border-color: $white-80; }\n.b--white-70 { border-color: $white-70; }\n.b--white-60 { border-color: $white-60; }\n.b--white-50 { border-color: $white-50; }\n.b--white-40 { border-color: $white-40; }\n.b--white-30 { border-color: $white-30; }\n.b--white-20 { border-color: $white-20; }\n.b--white-10 { border-color: $white-10; }\n.b--white-05 { border-color: $white-05; }\n.b--white-025 { border-color: $white-025; }\n.b--white-0125 { border-color: $white-0125; }\n\n.b--black-90 { border-color: $black-90; }\n.b--black-80 { border-color: $black-80; }\n.b--black-70 { border-color: $black-70; }\n.b--black-60 { border-color: $black-60; }\n.b--black-50 { border-color: $black-50; }\n.b--black-40 { border-color: $black-40; }\n.b--black-30 { border-color: $black-30; }\n.b--black-20 { border-color: $black-20; }\n.b--black-10 { border-color: $black-10; }\n.b--black-05 { border-color: $black-05; }\n.b--black-025 { border-color: $black-025; }\n.b--black-0125 { border-color: $black-0125; }\n\n.b--dark-red { border-color: $dark-red; }\n.b--red { border-color: $red; }\n.b--light-red { border-color: $light-red; }\n.b--orange { border-color: $orange; }\n.b--gold { border-color: $gold; }\n.b--yellow { border-color: $yellow; }\n.b--light-yellow { border-color: $light-yellow; }\n.b--purple { border-color: $purple; }\n.b--light-purple { border-color: $light-purple; }\n.b--dark-pink { border-color: $dark-pink; }\n.b--hot-pink { border-color: $hot-pink; }\n.b--pink { border-color: $pink; }\n.b--light-pink { border-color: $light-pink; }\n.b--dark-green { border-color: $dark-green; }\n.b--green { border-color: $green; }\n.b--light-green { border-color: $light-green; }\n.b--navy { border-color: $navy; }\n.b--dark-blue { border-color: $dark-blue; }\n.b--blue { border-color: $blue; }\n.b--light-blue { border-color: $light-blue; }\n.b--lightest-blue { border-color: $lightest-blue; }\n.b--washed-blue { border-color: $washed-blue; }\n.b--washed-green { border-color: $washed-green; }\n.b--washed-yellow { border-color: $washed-yellow; }\n.b--washed-red { border-color: $washed-red; }\n\n.b--transparent { border-color: $transparent; }\n.b--inherit { border-color: inherit; }\n","\n// Converted Variables\n\n$sans-serif: -apple-system, BlinkMacSystemFont, 'avenir next', avenir, helvetica, 'helvetica neue', ubuntu, roboto, noto, 'segoe ui', arial, sans-serif !default;\n$serif: georgia, serif !default;\n$code: consolas, monaco, monospace !default;\n$font-size-headline: 6rem !default;\n$font-size-subheadline: 5rem !default;\n$font-size-1: 3rem !default;\n$font-size-2: 2.25rem !default;\n$font-size-3: 1.5rem !default;\n$font-size-4: 1.25rem !default;\n$font-size-5: 1rem !default;\n$font-size-6: .875rem !default;\n$font-size-7: .75rem !default;\n$letter-spacing-tight: -.05em !default;\n$letter-spacing-1: .1em !default;\n$letter-spacing-2: .25em !default;\n$line-height-solid: 1 !default;\n$line-height-title: 1.25 !default;\n$line-height-copy: 1.5 !default;\n$measure: 30em !default;\n$measure-narrow: 20em !default;\n$measure-wide: 34em !default;\n$spacing-none: 0 !default;\n$spacing-extra-small: .25rem !default;\n$spacing-small: .5rem !default;\n$spacing-medium: 1rem !default;\n$spacing-large: 2rem !default;\n$spacing-extra-large: 4rem !default;\n$spacing-extra-extra-large: 8rem !default;\n$spacing-extra-extra-extra-large: 16rem !default;\n$spacing-copy-separator: 1.5em !default;\n$height-1: 1rem !default;\n$height-2: 2rem !default;\n$height-3: 4rem !default;\n$height-4: 8rem !default;\n$height-5: 16rem !default;\n$width-1: 1rem !default;\n$width-2: 2rem !default;\n$width-3: 4rem !default;\n$width-4: 8rem !default;\n$width-5: 16rem !default;\n$max-width-1: 1rem !default;\n$max-width-2: 2rem !default;\n$max-width-3: 4rem !default;\n$max-width-4: 8rem !default;\n$max-width-5: 16rem !default;\n$max-width-6: 32rem !default;\n$max-width-7: 48rem !default;\n$max-width-8: 64rem !default;\n$max-width-9: 96rem !default;\n$border-radius-none: 0 !default;\n$border-radius-1: .125rem !default;\n$border-radius-2: .25rem !default;\n$border-radius-3: .5rem !default;\n$border-radius-4: 1rem !default;\n$border-radius-circle: 100% !default;\n$border-radius-pill: 9999px !default;\n$border-width-none: 0 !default;\n$border-width-1: .125rem !default;\n$border-width-2: .25rem !default;\n$border-width-3: .5rem !default;\n$border-width-4: 1rem !default;\n$border-width-5: 2rem !default;\n$box-shadow-1: 0px 0px 4px 2px rgba( 0, 0, 0, 0.2 ) !default;\n$box-shadow-2: 0px 0px 8px 2px rgba( 0, 0, 0, 0.2 ) !default;\n$box-shadow-3: 2px 2px 4px 2px rgba( 0, 0, 0, 0.2 ) !default;\n$box-shadow-4: 2px 2px 8px 0px rgba( 0, 0, 0, 0.2 ) !default;\n$box-shadow-5: 4px 4px 8px 0px rgba( 0, 0, 0, 0.2 ) !default;\n$black: #000 !default;\n$near-black: #111 !default;\n$dark-gray: #333 !default;\n$mid-gray: #555 !default;\n$gray: #777 !default;\n$silver: #999 !default;\n$light-silver: #aaa !default;\n$moon-gray: #ccc !default;\n$light-gray: #eee !default;\n$near-white: #f4f4f4 !default;\n$white: #fff !default;\n$transparent: transparent !default;\n$black-90: rgba(0,0,0,.9) !default;\n$black-80: rgba(0,0,0,.8) !default;\n$black-70: rgba(0,0,0,.7) !default;\n$black-60: rgba(0,0,0,.6) !default;\n$black-50: rgba(0,0,0,.5) !default;\n$black-40: rgba(0,0,0,.4) !default;\n$black-30: rgba(0,0,0,.3) !default;\n$black-20: rgba(0,0,0,.2) !default;\n$black-10: rgba(0,0,0,.1) !default;\n$black-05: rgba(0,0,0,.05) !default;\n$black-025: rgba(0,0,0,.025) !default;\n$black-0125: rgba(0,0,0,.0125) !default;\n$white-90: rgba(255,255,255,.9) !default;\n$white-80: rgba(255,255,255,.8) !default;\n$white-70: rgba(255,255,255,.7) !default;\n$white-60: rgba(255,255,255,.6) !default;\n$white-50: rgba(255,255,255,.5) !default;\n$white-40: rgba(255,255,255,.4) !default;\n$white-30: rgba(255,255,255,.3) !default;\n$white-20: rgba(255,255,255,.2) !default;\n$white-10: rgba(255,255,255,.1) !default;\n$white-05: rgba(255,255,255,.05) !default;\n$white-025: rgba(255,255,255,.025) !default;\n$white-0125: rgba(255,255,255,.0125) !default;\n$dark-red: #e7040f !default;\n$red: #ff4136 !default;\n$light-red: #ff725c !default;\n$orange: #ff6300 !default;\n$gold: #ffb700 !default;\n$yellow: #ffd700 !default;\n$light-yellow: #fbf1a9 !default;\n$purple: #5e2ca5 !default;\n$light-purple: #a463f2 !default;\n$dark-pink: #d5008f !default;\n$hot-pink: #ff41b4 !default;\n$pink: #ff80cc !default;\n$light-pink: #ffa3d7 !default;\n$dark-green: #137752 !default;\n$green: #19a974 !default;\n$light-green: #9eebcf !default;\n$navy: #001b44 !default;\n$dark-blue: #00449e !default;\n$blue: #357edd !default;\n$light-blue: #96ccff !default;\n$lightest-blue: #cdecff !default;\n$washed-blue: #f6fffe !default;\n$washed-green: #e8fdf5 !default;\n$washed-yellow: #fffceb !default;\n$washed-red: #ffdfdf !default;\n\n// Custom Media Query Variables\n\n$breakpoint-not-small: 'screen and (min-width: 30em)' !default;\n$breakpoint-medium: 'screen and (min-width: 30em) and (max-width: 60em)' !default;\n$breakpoint-large: 'screen and (min-width: 60em)' !default;\n\n/*\n\n VARIABLES\n\n*/\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BORDER RADIUS\n Docs: http://tachyons.io/docs/themes/border-radius/\n\n Base:\n br = border-radius\n\n Modifiers:\n 0 = 0/none\n 1 = 1st step in scale\n 2 = 2nd step in scale\n 3 = 3rd step in scale\n 4 = 4th step in scale\n\n Literal values:\n -100 = 100%\n -pill = 9999px\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n .br0 { border-radius: $border-radius-none }\n .br1 { border-radius: $border-radius-1; }\n .br2 { border-radius: $border-radius-2; }\n .br3 { border-radius: $border-radius-3; }\n .br4 { border-radius: $border-radius-4; }\n .br-100 { border-radius: $border-radius-circle; }\n .br-pill { border-radius: $border-radius-pill; }\n .br--bottom {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .br--top {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n .br--right {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .br--left {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n@media #{$breakpoint-not-small} {\n .br0-ns { border-radius: $border-radius-none }\n .br1-ns { border-radius: $border-radius-1; }\n .br2-ns { border-radius: $border-radius-2; }\n .br3-ns { border-radius: $border-radius-3; }\n .br4-ns { border-radius: $border-radius-4; }\n .br-100-ns { border-radius: $border-radius-circle; }\n .br-pill-ns { border-radius: $border-radius-pill; }\n .br--bottom-ns {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .br--top-ns {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n .br--right-ns {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .br--left-ns {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n\n@media #{$breakpoint-medium} {\n .br0-m { border-radius: $border-radius-none }\n .br1-m { border-radius: $border-radius-1; }\n .br2-m { border-radius: $border-radius-2; }\n .br3-m { border-radius: $border-radius-3; }\n .br4-m { border-radius: $border-radius-4; }\n .br-100-m { border-radius: $border-radius-circle; }\n .br-pill-m { border-radius: $border-radius-pill; }\n .br--bottom-m {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .br--top-m {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n .br--right-m {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .br--left-m {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n\n@media #{$breakpoint-large} {\n .br0-l { border-radius: $border-radius-none }\n .br1-l { border-radius: $border-radius-1; }\n .br2-l { border-radius: $border-radius-2; }\n .br3-l { border-radius: $border-radius-3; }\n .br4-l { border-radius: $border-radius-4; }\n .br-100-l { border-radius: $border-radius-circle; }\n .br-pill-l { border-radius: $border-radius-pill; }\n .br--bottom-l {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .br--top-l {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n .br--right-l {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .br--left-l {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BORDER STYLES\n Docs: http://tachyons.io/docs/themes/borders/\n\n Depends on base border module in _borders.css\n\n Base:\n b = border-style\n\n Modifiers:\n --none = none\n --dotted = dotted\n --dashed = dashed\n --solid = solid\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n */\n\n.b--dotted { border-style: dotted; }\n.b--dashed { border-style: dashed; }\n.b--solid { border-style: solid; }\n.b--none { border-style: none; }\n\n@media #{$breakpoint-not-small} {\n .b--dotted-ns { border-style: dotted; }\n .b--dashed-ns { border-style: dashed; }\n .b--solid-ns { border-style: solid; }\n .b--none-ns { border-style: none; }\n}\n\n@media #{$breakpoint-medium} {\n .b--dotted-m { border-style: dotted; }\n .b--dashed-m { border-style: dashed; }\n .b--solid-m { border-style: solid; }\n .b--none-m { border-style: none; }\n}\n\n@media #{$breakpoint-large} {\n .b--dotted-l { border-style: dotted; }\n .b--dashed-l { border-style: dashed; }\n .b--solid-l { border-style: solid; }\n .b--none-l { border-style: none; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BORDER WIDTHS\n Docs: http://tachyons.io/docs/themes/borders/\n\n Base:\n bw = border-width\n\n Modifiers:\n 0 = 0 width border\n 1 = 1st step in border-width scale\n 2 = 2nd step in border-width scale\n 3 = 3rd step in border-width scale\n 4 = 4th step in border-width scale\n 5 = 5th step in border-width scale\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.bw0 { border-width: $border-width-none; }\n.bw1 { border-width: $border-width-1; }\n.bw2 { border-width: $border-width-2; }\n.bw3 { border-width: $border-width-3; }\n.bw4 { border-width: $border-width-4; }\n.bw5 { border-width: $border-width-5; }\n\n/* Resets */\n.bt-0 { border-top-width: $border-width-none }\n.br-0 { border-right-width: $border-width-none }\n.bb-0 { border-bottom-width: $border-width-none }\n.bl-0 { border-left-width: $border-width-none }\n\n@media #{$breakpoint-not-small} {\n .bw0-ns { border-width: $border-width-none; }\n .bw1-ns { border-width: $border-width-1; }\n .bw2-ns { border-width: $border-width-2; }\n .bw3-ns { border-width: $border-width-3; }\n .bw4-ns { border-width: $border-width-4; }\n .bw5-ns { border-width: $border-width-5; }\n .bt-0-ns { border-top-width: $border-width-none }\n .br-0-ns { border-right-width: $border-width-none }\n .bb-0-ns { border-bottom-width: $border-width-none }\n .bl-0-ns { border-left-width: $border-width-none }\n}\n\n@media #{$breakpoint-medium} {\n .bw0-m { border-width: $border-width-none; }\n .bw1-m { border-width: $border-width-1; }\n .bw2-m { border-width: $border-width-2; }\n .bw3-m { border-width: $border-width-3; }\n .bw4-m { border-width: $border-width-4; }\n .bw5-m { border-width: $border-width-5; }\n .bt-0-m { border-top-width: $border-width-none }\n .br-0-m { border-right-width: $border-width-none }\n .bb-0-m { border-bottom-width: $border-width-none }\n .bl-0-m { border-left-width: $border-width-none }\n}\n\n@media #{$breakpoint-large} {\n .bw0-l { border-width: $border-width-none; }\n .bw1-l { border-width: $border-width-1; }\n .bw2-l { border-width: $border-width-2; }\n .bw3-l { border-width: $border-width-3; }\n .bw4-l { border-width: $border-width-4; }\n .bw5-l { border-width: $border-width-5; }\n .bt-0-l { border-top-width: $border-width-none }\n .br-0-l { border-right-width: $border-width-none }\n .bb-0-l { border-bottom-width: $border-width-none }\n .bl-0-l { border-left-width: $border-width-none }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n BOX-SHADOW\n Docs: http://tachyons.io/docs/themes/box-shadow/\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n */\n\n.shadow-1 { box-shadow: $box-shadow-1; }\n.shadow-2 { box-shadow: $box-shadow-2; }\n.shadow-3 { box-shadow: $box-shadow-3; }\n.shadow-4 { box-shadow: $box-shadow-4; }\n.shadow-5 { box-shadow: $box-shadow-5; }\n\n@media #{$breakpoint-not-small} {\n .shadow-1-ns { box-shadow: $box-shadow-1; }\n .shadow-2-ns { box-shadow: $box-shadow-2; }\n .shadow-3-ns { box-shadow: $box-shadow-3; }\n .shadow-4-ns { box-shadow: $box-shadow-4; }\n .shadow-5-ns { box-shadow: $box-shadow-5; }\n}\n\n@media #{$breakpoint-medium} {\n .shadow-1-m { box-shadow: $box-shadow-1; }\n .shadow-2-m { box-shadow: $box-shadow-2; }\n .shadow-3-m { box-shadow: $box-shadow-3; }\n .shadow-4-m { box-shadow: $box-shadow-4; }\n .shadow-5-m { box-shadow: $box-shadow-5; }\n}\n\n@media #{$breakpoint-large} {\n .shadow-1-l { box-shadow: $box-shadow-1; }\n .shadow-2-l { box-shadow: $box-shadow-2; }\n .shadow-3-l { box-shadow: $box-shadow-3; }\n .shadow-4-l { box-shadow: $box-shadow-4; }\n .shadow-5-l { box-shadow: $box-shadow-5; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n CODE\n\n*/\n\n.pre {\n overflow-x: auto;\n overflow-y: hidden;\n overflow: scroll;\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n COORDINATES\n Docs: http://tachyons.io/docs/layout/position/\n\n Use in combination with the position module.\n\n Base:\n top\n bottom\n right\n left\n\n Modifiers:\n -0 = literal value 0\n -1 = literal value 1\n -2 = literal value 2\n --1 = literal value -1\n --2 = literal value -2\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.top-0 { top: 0; }\n.right-0 { right: 0; }\n.bottom-0 { bottom: 0; }\n.left-0 { left: 0; }\n\n.top-1 { top: 1rem; }\n.right-1 { right: 1rem; }\n.bottom-1 { bottom: 1rem; }\n.left-1 { left: 1rem; }\n\n.top-2 { top: 2rem; }\n.right-2 { right: 2rem; }\n.bottom-2 { bottom: 2rem; }\n.left-2 { left: 2rem; }\n\n.top--1 { top: -1rem; }\n.right--1 { right: -1rem; }\n.bottom--1 { bottom: -1rem; }\n.left--1 { left: -1rem; }\n\n.top--2 { top: -2rem; }\n.right--2 { right: -2rem; }\n.bottom--2 { bottom: -2rem; }\n.left--2 { left: -2rem; }\n\n\n.absolute--fill {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n@media #{$breakpoint-not-small} {\n .top-0-ns { top: 0; }\n .left-0-ns { left: 0; }\n .right-0-ns { right: 0; }\n .bottom-0-ns { bottom: 0; }\n .top-1-ns { top: 1rem; }\n .left-1-ns { left: 1rem; }\n .right-1-ns { right: 1rem; }\n .bottom-1-ns { bottom: 1rem; }\n .top-2-ns { top: 2rem; }\n .left-2-ns { left: 2rem; }\n .right-2-ns { right: 2rem; }\n .bottom-2-ns { bottom: 2rem; }\n .top--1-ns { top: -1rem; }\n .right--1-ns { right: -1rem; }\n .bottom--1-ns { bottom: -1rem; }\n .left--1-ns { left: -1rem; }\n .top--2-ns { top: -2rem; }\n .right--2-ns { right: -2rem; }\n .bottom--2-ns { bottom: -2rem; }\n .left--2-ns { left: -2rem; }\n .absolute--fill-ns {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n}\n\n@media #{$breakpoint-medium} {\n .top-0-m { top: 0; }\n .left-0-m { left: 0; }\n .right-0-m { right: 0; }\n .bottom-0-m { bottom: 0; }\n .top-1-m { top: 1rem; }\n .left-1-m { left: 1rem; }\n .right-1-m { right: 1rem; }\n .bottom-1-m { bottom: 1rem; }\n .top-2-m { top: 2rem; }\n .left-2-m { left: 2rem; }\n .right-2-m { right: 2rem; }\n .bottom-2-m { bottom: 2rem; }\n .top--1-m { top: -1rem; }\n .right--1-m { right: -1rem; }\n .bottom--1-m { bottom: -1rem; }\n .left--1-m { left: -1rem; }\n .top--2-m { top: -2rem; }\n .right--2-m { right: -2rem; }\n .bottom--2-m { bottom: -2rem; }\n .left--2-m { left: -2rem; }\n .absolute--fill-m {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n}\n\n@media #{$breakpoint-large} {\n .top-0-l { top: 0; }\n .left-0-l { left: 0; }\n .right-0-l { right: 0; }\n .bottom-0-l { bottom: 0; }\n .top-1-l { top: 1rem; }\n .left-1-l { left: 1rem; }\n .right-1-l { right: 1rem; }\n .bottom-1-l { bottom: 1rem; }\n .top-2-l { top: 2rem; }\n .left-2-l { left: 2rem; }\n .right-2-l { right: 2rem; }\n .bottom-2-l { bottom: 2rem; }\n .top--1-l { top: -1rem; }\n .right--1-l { right: -1rem; }\n .bottom--1-l { bottom: -1rem; }\n .left--1-l { left: -1rem; }\n .top--2-l { top: -2rem; }\n .right--2-l { right: -2rem; }\n .bottom--2-l { bottom: -2rem; }\n .left--2-l { left: -2rem; }\n .absolute--fill-l {\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n CLEARFIX\n http://tachyons.io/docs/layout/clearfix/\n\n*/\n\n/* Nicolas Gallaghers Clearfix solution\n Ref: http://nicolasgallagher.com/micro-clearfix-hack/ */\n\n.cf:before,\n.cf:after { content: \" \"; display: table; }\n.cf:after { clear: both; }\n.cf { *zoom: 1; }\n\n.cl { clear: left; }\n.cr { clear: right; }\n.cb { clear: both; }\n.cn { clear: none; }\n\n@media #{$breakpoint-not-small} {\n .cl-ns { clear: left; }\n .cr-ns { clear: right; }\n .cb-ns { clear: both; }\n .cn-ns { clear: none; }\n}\n\n@media #{$breakpoint-medium} {\n .cl-m { clear: left; }\n .cr-m { clear: right; }\n .cb-m { clear: both; }\n .cn-m { clear: none; }\n}\n\n@media #{$breakpoint-large} {\n .cl-l { clear: left; }\n .cr-l { clear: right; }\n .cb-l { clear: both; }\n .cn-l { clear: none; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n FLEXBOX\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.flex { display: flex; }\n.inline-flex { display: inline-flex; }\n\n/* 1. Fix for Chrome 44 bug.\n * https://code.google.com/p/chromium/issues/detail?id=506893 */\n.flex-auto {\n flex: 1 1 auto;\n min-width: 0; /* 1 */\n min-height: 0; /* 1 */\n}\n\n.flex-none { flex: none; }\n\n.flex-column { flex-direction: column; }\n.flex-row { flex-direction: row; }\n.flex-wrap { flex-wrap: wrap; }\n.flex-nowrap { flex-wrap: nowrap; }\n.flex-wrap-reverse { flex-wrap: wrap-reverse; }\n.flex-column-reverse { flex-direction: column-reverse; }\n.flex-row-reverse { flex-direction: row-reverse; }\n\n.items-start { align-items: flex-start; }\n.items-end { align-items: flex-end; }\n.items-center { align-items: center; }\n.items-baseline { align-items: baseline; }\n.items-stretch { align-items: stretch; }\n\n.self-start { align-self: flex-start; }\n.self-end { align-self: flex-end; }\n.self-center { align-self: center; }\n.self-baseline { align-self: baseline; }\n.self-stretch { align-self: stretch; }\n\n.justify-start { justify-content: flex-start; }\n.justify-end { justify-content: flex-end; }\n.justify-center { justify-content: center; }\n.justify-between { justify-content: space-between; }\n.justify-around { justify-content: space-around; }\n\n.content-start { align-content: flex-start; }\n.content-end { align-content: flex-end; }\n.content-center { align-content: center; }\n.content-between { align-content: space-between; }\n.content-around { align-content: space-around; }\n.content-stretch { align-content: stretch; }\n\n.order-0 { order: 0; }\n.order-1 { order: 1; }\n.order-2 { order: 2; }\n.order-3 { order: 3; }\n.order-4 { order: 4; }\n.order-5 { order: 5; }\n.order-6 { order: 6; }\n.order-7 { order: 7; }\n.order-8 { order: 8; }\n.order-last { order: 99999; }\n\n.flex-grow-0 { flex-grow: 0; }\n.flex-grow-1 { flex-grow: 1; }\n\n.flex-shrink-0 { flex-shrink: 0; }\n.flex-shrink-1 { flex-shrink: 1; }\n\n@media #{$breakpoint-not-small} {\n .flex-ns { display: flex; }\n .inline-flex-ns { display: inline-flex; }\n .flex-auto-ns {\n flex: 1 1 auto;\n min-width: 0; /* 1 */\n min-height: 0; /* 1 */\n }\n .flex-none-ns { flex: none; }\n .flex-column-ns { flex-direction: column; }\n .flex-row-ns { flex-direction: row; }\n .flex-wrap-ns { flex-wrap: wrap; }\n .flex-nowrap-ns { flex-wrap: nowrap; }\n .flex-wrap-reverse-ns { flex-wrap: wrap-reverse; }\n .flex-column-reverse-ns { flex-direction: column-reverse; }\n .flex-row-reverse-ns { flex-direction: row-reverse; }\n .items-start-ns { align-items: flex-start; }\n .items-end-ns { align-items: flex-end; }\n .items-center-ns { align-items: center; }\n .items-baseline-ns { align-items: baseline; }\n .items-stretch-ns { align-items: stretch; }\n\n .self-start-ns { align-self: flex-start; }\n .self-end-ns { align-self: flex-end; }\n .self-center-ns { align-self: center; }\n .self-baseline-ns { align-self: baseline; }\n .self-stretch-ns { align-self: stretch; }\n\n .justify-start-ns { justify-content: flex-start; }\n .justify-end-ns { justify-content: flex-end; }\n .justify-center-ns { justify-content: center; }\n .justify-between-ns { justify-content: space-between; }\n .justify-around-ns { justify-content: space-around; }\n\n .content-start-ns { align-content: flex-start; }\n .content-end-ns { align-content: flex-end; }\n .content-center-ns { align-content: center; }\n .content-between-ns { align-content: space-between; }\n .content-around-ns { align-content: space-around; }\n .content-stretch-ns { align-content: stretch; }\n\n .order-0-ns { order: 0; }\n .order-1-ns { order: 1; }\n .order-2-ns { order: 2; }\n .order-3-ns { order: 3; }\n .order-4-ns { order: 4; }\n .order-5-ns { order: 5; }\n .order-6-ns { order: 6; }\n .order-7-ns { order: 7; }\n .order-8-ns { order: 8; }\n .order-last-ns { order: 99999; }\n\n .flex-grow-0-ns { flex-grow: 0; }\n .flex-grow-1-ns { flex-grow: 1; }\n\n .flex-shrink-0-ns { flex-shrink: 0; }\n .flex-shrink-1-ns { flex-shrink: 1; }\n}\n@media #{$breakpoint-medium} {\n .flex-m { display: flex; }\n .inline-flex-m { display: inline-flex; }\n .flex-auto-m {\n flex: 1 1 auto;\n min-width: 0; /* 1 */\n min-height: 0; /* 1 */\n }\n .flex-none-m { flex: none; }\n .flex-column-m { flex-direction: column; }\n .flex-row-m { flex-direction: row; }\n .flex-wrap-m { flex-wrap: wrap; }\n .flex-nowrap-m { flex-wrap: nowrap; }\n .flex-wrap-reverse-m { flex-wrap: wrap-reverse; }\n .flex-column-reverse-m { flex-direction: column-reverse; }\n .flex-row-reverse-m { flex-direction: row-reverse; }\n .items-start-m { align-items: flex-start; }\n .items-end-m { align-items: flex-end; }\n .items-center-m { align-items: center; }\n .items-baseline-m { align-items: baseline; }\n .items-stretch-m { align-items: stretch; }\n\n .self-start-m { align-self: flex-start; }\n .self-end-m { align-self: flex-end; }\n .self-center-m { align-self: center; }\n .self-baseline-m { align-self: baseline; }\n .self-stretch-m { align-self: stretch; }\n\n .justify-start-m { justify-content: flex-start; }\n .justify-end-m { justify-content: flex-end; }\n .justify-center-m { justify-content: center; }\n .justify-between-m { justify-content: space-between; }\n .justify-around-m { justify-content: space-around; }\n\n .content-start-m { align-content: flex-start; }\n .content-end-m { align-content: flex-end; }\n .content-center-m { align-content: center; }\n .content-between-m { align-content: space-between; }\n .content-around-m { align-content: space-around; }\n .content-stretch-m { align-content: stretch; }\n\n .order-0-m { order: 0; }\n .order-1-m { order: 1; }\n .order-2-m { order: 2; }\n .order-3-m { order: 3; }\n .order-4-m { order: 4; }\n .order-5-m { order: 5; }\n .order-6-m { order: 6; }\n .order-7-m { order: 7; }\n .order-8-m { order: 8; }\n .order-last-m { order: 99999; }\n\n .flex-grow-0-m { flex-grow: 0; }\n .flex-grow-1-m { flex-grow: 1; }\n\n .flex-shrink-0-m { flex-shrink: 0; }\n .flex-shrink-1-m { flex-shrink: 1; }\n}\n\n@media #{$breakpoint-large} {\n .flex-l { display: flex; }\n .inline-flex-l { display: inline-flex; }\n .flex-auto-l {\n flex: 1 1 auto;\n min-width: 0; /* 1 */\n min-height: 0; /* 1 */\n }\n .flex-none-l { flex: none; }\n .flex-column-l { flex-direction: column; }\n .flex-row-l { flex-direction: row; }\n .flex-wrap-l { flex-wrap: wrap; }\n .flex-nowrap-l { flex-wrap: nowrap; }\n .flex-wrap-reverse-l { flex-wrap: wrap-reverse; }\n .flex-column-reverse-l { flex-direction: column-reverse; }\n .flex-row-reverse-l { flex-direction: row-reverse; }\n\n .items-start-l { align-items: flex-start; }\n .items-end-l { align-items: flex-end; }\n .items-center-l { align-items: center; }\n .items-baseline-l { align-items: baseline; }\n .items-stretch-l { align-items: stretch; }\n\n .self-start-l { align-self: flex-start; }\n .self-end-l { align-self: flex-end; }\n .self-center-l { align-self: center; }\n .self-baseline-l { align-self: baseline; }\n .self-stretch-l { align-self: stretch; }\n\n .justify-start-l { justify-content: flex-start; }\n .justify-end-l { justify-content: flex-end; }\n .justify-center-l { justify-content: center; }\n .justify-between-l { justify-content: space-between; }\n .justify-around-l { justify-content: space-around; }\n\n .content-start-l { align-content: flex-start; }\n .content-end-l { align-content: flex-end; }\n .content-center-l { align-content: center; }\n .content-between-l { align-content: space-between; }\n .content-around-l { align-content: space-around; }\n .content-stretch-l { align-content: stretch; }\n\n .order-0-l { order: 0; }\n .order-1-l { order: 1; }\n .order-2-l { order: 2; }\n .order-3-l { order: 3; }\n .order-4-l { order: 4; }\n .order-5-l { order: 5; }\n .order-6-l { order: 6; }\n .order-7-l { order: 7; }\n .order-8-l { order: 8; }\n .order-last-l { order: 99999; }\n\n .flex-grow-0-l { flex-grow: 0; }\n .flex-grow-1-l { flex-grow: 1; }\n\n .flex-shrink-0-l { flex-shrink: 0; }\n .flex-shrink-1-l { flex-shrink: 1; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n DISPLAY\n Docs: http://tachyons.io/docs/layout/display\n\n Base:\n d = display\n\n Modifiers:\n n = none\n b = block\n ib = inline-block\n it = inline-table\n t = table\n tc = table-cell\n tr = table-row\n tcol = table-column\n tcolg = table-column-group\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.dn { display: none; }\n.di { display: inline; }\n.db { display: block; }\n.dib { display: inline-block; }\n.dit { display: inline-table; }\n.dt { display: table; }\n.dtc { display: table-cell; }\n.dt-row { display: table-row; }\n.dt-row-group { display: table-row-group; }\n.dt-column { display: table-column; }\n.dt-column-group { display: table-column-group; }\n\n/*\n This will set table to full width and then\n all cells will be equal width\n*/\n.dt--fixed {\n table-layout: fixed;\n width: 100%;\n}\n\n@media #{$breakpoint-not-small} {\n .dn-ns { display: none; }\n .di-ns { display: inline; }\n .db-ns { display: block; }\n .dib-ns { display: inline-block; }\n .dit-ns { display: inline-table; }\n .dt-ns { display: table; }\n .dtc-ns { display: table-cell; }\n .dt-row-ns { display: table-row; }\n .dt-row-group-ns { display: table-row-group; }\n .dt-column-ns { display: table-column; }\n .dt-column-group-ns { display: table-column-group; }\n\n .dt--fixed-ns {\n table-layout: fixed;\n width: 100%;\n }\n}\n\n@media #{$breakpoint-medium} {\n .dn-m { display: none; }\n .di-m { display: inline; }\n .db-m { display: block; }\n .dib-m { display: inline-block; }\n .dit-m { display: inline-table; }\n .dt-m { display: table; }\n .dtc-m { display: table-cell; }\n .dt-row-m { display: table-row; }\n .dt-row-group-m { display: table-row-group; }\n .dt-column-m { display: table-column; }\n .dt-column-group-m { display: table-column-group; }\n\n .dt--fixed-m {\n table-layout: fixed;\n width: 100%;\n }\n}\n\n@media #{$breakpoint-large} {\n .dn-l { display: none; }\n .di-l { display: inline; }\n .db-l { display: block; }\n .dib-l { display: inline-block; }\n .dit-l { display: inline-table; }\n .dt-l { display: table; }\n .dtc-l { display: table-cell; }\n .dt-row-l { display: table-row; }\n .dt-row-group-l { display: table-row-group; }\n .dt-column-l { display: table-column; }\n .dt-column-group-l { display: table-column-group; }\n\n .dt--fixed-l {\n table-layout: fixed;\n width: 100%;\n }\n}\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n FLOATS\n http://tachyons.io/docs/layout/floats/\n\n 1. Floated elements are automatically rendered as block level elements.\n Setting floats to display inline will fix the double margin bug in\n ie6. You know... just in case.\n\n 2. Don't forget to clearfix your floats with .cf\n\n Base:\n f = float\n\n Modifiers:\n l = left\n r = right\n n = none\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n\n\n.fl { float: left; _display: inline; }\n.fr { float: right; _display: inline; }\n.fn { float: none; }\n\n@media #{$breakpoint-not-small} {\n .fl-ns { float: left; _display: inline; }\n .fr-ns { float: right; _display: inline; }\n .fn-ns { float: none; }\n}\n\n@media #{$breakpoint-medium} {\n .fl-m { float: left; _display: inline; }\n .fr-m { float: right; _display: inline; }\n .fn-m { float: none; }\n}\n\n@media #{$breakpoint-large} {\n .fl-l { float: left; _display: inline; }\n .fr-l { float: right; _display: inline; }\n .fn-l { float: none; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n FONT FAMILY GROUPS\n Docs: http://tachyons.io/docs/typography/font-family/\n\n*/\n\n\n.sans-serif {\n font-family: $sans-serif;\n}\n\n.serif {\n font-family: $serif;\n}\n\n.system-sans-serif {\n font-family: sans-serif;\n}\n\n.system-serif {\n font-family: serif;\n}\n\n\n/* Monospaced Typefaces (for code) */\n\n/* From http://cssfontstack.com */\ncode, .code {\n font-family: Consolas,\n monaco,\n monospace;\n}\n\n.courier {\n font-family: 'Courier Next',\n courier,\n monospace;\n}\n\n\n/* Sans-Serif Typefaces */\n\n.helvetica {\n font-family: 'helvetica neue', helvetica,\n sans-serif;\n}\n\n.avenir {\n font-family: 'avenir next', avenir,\n sans-serif;\n}\n\n\n/* Serif Typefaces */\n\n.athelas {\n font-family: athelas,\n georgia,\n serif;\n}\n\n.georgia {\n font-family: georgia,\n serif;\n}\n\n.times {\n font-family: times,\n serif;\n}\n\n.bodoni {\n font-family: \"Bodoni MT\",\n serif;\n}\n\n.calisto {\n font-family: \"Calisto MT\",\n serif;\n}\n\n.garamond {\n font-family: garamond,\n serif;\n}\n\n.baskerville {\n font-family: baskerville,\n serif;\n}\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n FONT STYLE\n Docs: http://tachyons.io/docs/typography/font-style/\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.i { font-style: italic; }\n.fs-normal { font-style: normal; }\n\n@media #{$breakpoint-not-small} {\n .i-ns { font-style: italic; }\n .fs-normal-ns { font-style: normal; }\n}\n\n@media #{$breakpoint-medium} {\n .i-m { font-style: italic; }\n .fs-normal-m { font-style: normal; }\n}\n\n@media #{$breakpoint-large} {\n .i-l { font-style: italic; }\n .fs-normal-l { font-style: normal; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n FONT WEIGHT\n Docs: http://tachyons.io/docs/typography/font-weight/\n\n Base\n fw = font-weight\n\n Modifiers:\n 1 = literal value 100\n 2 = literal value 200\n 3 = literal value 300\n 4 = literal value 400\n 5 = literal value 500\n 6 = literal value 600\n 7 = literal value 700\n 8 = literal value 800\n 9 = literal value 900\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.normal { font-weight: normal; }\n.b { font-weight: bold; }\n.fw1 { font-weight: 100; }\n.fw2 { font-weight: 200; }\n.fw3 { font-weight: 300; }\n.fw4 { font-weight: 400; }\n.fw5 { font-weight: 500; }\n.fw6 { font-weight: 600; }\n.fw7 { font-weight: 700; }\n.fw8 { font-weight: 800; }\n.fw9 { font-weight: 900; }\n\n\n@media #{$breakpoint-not-small} {\n .normal-ns { font-weight: normal; }\n .b-ns { font-weight: bold; }\n .fw1-ns { font-weight: 100; }\n .fw2-ns { font-weight: 200; }\n .fw3-ns { font-weight: 300; }\n .fw4-ns { font-weight: 400; }\n .fw5-ns { font-weight: 500; }\n .fw6-ns { font-weight: 600; }\n .fw7-ns { font-weight: 700; }\n .fw8-ns { font-weight: 800; }\n .fw9-ns { font-weight: 900; }\n}\n\n@media #{$breakpoint-medium} {\n .normal-m { font-weight: normal; }\n .b-m { font-weight: bold; }\n .fw1-m { font-weight: 100; }\n .fw2-m { font-weight: 200; }\n .fw3-m { font-weight: 300; }\n .fw4-m { font-weight: 400; }\n .fw5-m { font-weight: 500; }\n .fw6-m { font-weight: 600; }\n .fw7-m { font-weight: 700; }\n .fw8-m { font-weight: 800; }\n .fw9-m { font-weight: 900; }\n}\n\n@media #{$breakpoint-large} {\n .normal-l { font-weight: normal; }\n .b-l { font-weight: bold; }\n .fw1-l { font-weight: 100; }\n .fw2-l { font-weight: 200; }\n .fw3-l { font-weight: 300; }\n .fw4-l { font-weight: 400; }\n .fw5-l { font-weight: 500; }\n .fw6-l { font-weight: 600; }\n .fw7-l { font-weight: 700; }\n .fw8-l { font-weight: 800; }\n .fw9-l { font-weight: 900; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n FORMS\n \n*/\n\n.input-reset {\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n.button-reset::-moz-focus-inner,\n.input-reset::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n HEIGHTS\n Docs: http://tachyons.io/docs/layout/heights/\n\n Base:\n h = height\n min-h = min-height\n min-vh = min-height vertical screen height\n vh = vertical screen height\n\n Modifiers\n 1 = 1st step in height scale\n 2 = 2nd step in height scale\n 3 = 3rd step in height scale\n 4 = 4th step in height scale\n 5 = 5th step in height scale\n\n -25 = literal value 25%\n -50 = literal value 50%\n -75 = literal value 75%\n -100 = literal value 100%\n\n -auto = string value of auto\n -inherit = string value of inherit\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n/* Height Scale */\n\n.h1 { height: $height-1; }\n.h2 { height: $height-2; }\n.h3 { height: $height-3; }\n.h4 { height: $height-4; }\n.h5 { height: $height-5; }\n\n/* Height Percentages - Based off of height of parent */\n\n.h-25 { height: 25%; }\n.h-50 { height: 50%; }\n.h-75 { height: 75%; }\n.h-100 { height: 100%; }\n\n.min-h-100 { min-height: 100%; }\n\n/* Screen Height Percentage */\n\n.vh-25 { height: 25vh; }\n.vh-50 { height: 50vh; }\n.vh-75 { height: 75vh; }\n.vh-100 { height: 100vh; }\n\n.min-vh-100 { min-height: 100vh; }\n\n\n/* String Properties */\n\n.h-auto { height: auto; }\n.h-inherit { height: inherit; }\n\n@media #{$breakpoint-not-small} {\n .h1-ns { height: $height-1; }\n .h2-ns { height: $height-2; }\n .h3-ns { height: $height-3; }\n .h4-ns { height: $height-4; }\n .h5-ns { height: $height-5; }\n .h-25-ns { height: 25%; }\n .h-50-ns { height: 50%; }\n .h-75-ns { height: 75%; }\n .h-100-ns { height: 100%; }\n .min-h-100-ns { min-height: 100%; }\n .vh-25-ns { height: 25vh; }\n .vh-50-ns { height: 50vh; }\n .vh-75-ns { height: 75vh; }\n .vh-100-ns { height: 100vh; }\n .min-vh-100-ns { min-height: 100vh; }\n .h-auto-ns { height: auto; }\n .h-inherit-ns { height: inherit; }\n}\n\n@media #{$breakpoint-medium} {\n .h1-m { height: $height-1; }\n .h2-m { height: $height-2; }\n .h3-m { height: $height-3; }\n .h4-m { height: $height-4; }\n .h5-m { height: $height-5; }\n .h-25-m { height: 25%; }\n .h-50-m { height: 50%; }\n .h-75-m { height: 75%; }\n .h-100-m { height: 100%; }\n .min-h-100-m { min-height: 100%; }\n .vh-25-m { height: 25vh; }\n .vh-50-m { height: 50vh; }\n .vh-75-m { height: 75vh; }\n .vh-100-m { height: 100vh; }\n .min-vh-100-m { min-height: 100vh; }\n .h-auto-m { height: auto; }\n .h-inherit-m { height: inherit; }\n}\n\n@media #{$breakpoint-large} {\n .h1-l { height: $height-1; }\n .h2-l { height: $height-2; }\n .h3-l { height: $height-3; }\n .h4-l { height: $height-4; }\n .h5-l { height: $height-5; }\n .h-25-l { height: 25%; }\n .h-50-l { height: 50%; }\n .h-75-l { height: 75%; }\n .h-100-l { height: 100%; }\n .min-h-100-l { min-height: 100%; }\n .vh-25-l { height: 25vh; }\n .vh-50-l { height: 50vh; }\n .vh-75-l { height: 75vh; }\n .vh-100-l { height: 100vh; }\n .min-vh-100-l { min-height: 100vh; }\n .h-auto-l { height: auto; }\n .h-inherit-l { height: inherit; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n LETTER SPACING\n Docs: http://tachyons.io/docs/typography/tracking/\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.tracked { letter-spacing: $letter-spacing-1; }\n.tracked-tight { letter-spacing: $letter-spacing-tight; }\n.tracked-mega { letter-spacing: $letter-spacing-2; }\n\n@media #{$breakpoint-not-small} {\n .tracked-ns { letter-spacing: $letter-spacing-1; }\n .tracked-tight-ns { letter-spacing: $letter-spacing-tight; }\n .tracked-mega-ns { letter-spacing: $letter-spacing-2; }\n}\n\n@media #{$breakpoint-medium} {\n .tracked-m { letter-spacing: $letter-spacing-1; }\n .tracked-tight-m { letter-spacing: $letter-spacing-tight; }\n .tracked-mega-m { letter-spacing: $letter-spacing-2; }\n}\n\n@media #{$breakpoint-large} {\n .tracked-l { letter-spacing: $letter-spacing-1; }\n .tracked-tight-l { letter-spacing: $letter-spacing-tight; }\n .tracked-mega-l { letter-spacing: $letter-spacing-2; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n LINE HEIGHT / LEADING\n Docs: http://tachyons.io/docs/typography/line-height\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n .lh-solid { line-height: $line-height-solid; }\n .lh-title { line-height: $line-height-title; }\n .lh-copy { line-height: $line-height-copy; }\n\n@media #{$breakpoint-not-small} {\n .lh-solid-ns { line-height: $line-height-solid; }\n .lh-title-ns { line-height: $line-height-title; }\n .lh-copy-ns { line-height: $line-height-copy; }\n}\n\n@media #{$breakpoint-medium} {\n .lh-solid-m { line-height: $line-height-solid; }\n .lh-title-m { line-height: $line-height-title; }\n .lh-copy-m { line-height: $line-height-copy; }\n}\n\n@media #{$breakpoint-large} {\n .lh-solid-l { line-height: $line-height-solid; }\n .lh-title-l { line-height: $line-height-title; }\n .lh-copy-l { line-height: $line-height-copy; }\n}\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n LINKS\n Docs: http://tachyons.io/docs/elements/links/\n\n*/\n\n.link {\n text-decoration: none;\n transition: color .15s ease-in;\n}\n\n.link:link,\n.link:visited {\n transition: color .15s ease-in;\n}\n.link:hover {\n transition: color .15s ease-in;\n}\n.link:active {\n transition: color .15s ease-in;\n}\n.link:focus {\n transition: color .15s ease-in;\n outline: 1px dotted currentColor;\n}\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n LISTS\n http://tachyons.io/docs/elements/lists/\n\n*/\n\n.list { list-style-type: none; }\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n MAX WIDTHS\n Docs: http://tachyons.io/docs/layout/max-widths/\n\n Base:\n mw = max-width\n\n Modifiers\n 1 = 1st step in width scale\n 2 = 2nd step in width scale\n 3 = 3rd step in width scale\n 4 = 4th step in width scale\n 5 = 5th step in width scale\n 6 = 6st step in width scale\n 7 = 7nd step in width scale\n 8 = 8rd step in width scale\n 9 = 9th step in width scale\n\n -100 = literal value 100%\n\n -none = string value none\n\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n/* Max Width Percentages */\n\n.mw-100 { max-width: 100%; }\n\n/* Max Width Scale */\n\n.mw1 { max-width: $max-width-1; }\n.mw2 { max-width: $max-width-2; }\n.mw3 { max-width: $max-width-3; }\n.mw4 { max-width: $max-width-4; }\n.mw5 { max-width: $max-width-5; }\n.mw6 { max-width: $max-width-6; }\n.mw7 { max-width: $max-width-7; }\n.mw8 { max-width: $max-width-8; }\n.mw9 { max-width: $max-width-9; }\n\n/* Max Width String Properties */\n\n.mw-none { max-width: none; }\n\n@media #{$breakpoint-not-small} {\n .mw-100-ns { max-width: 100%; }\n\n .mw1-ns { max-width: $max-width-1; }\n .mw2-ns { max-width: $max-width-2; }\n .mw3-ns { max-width: $max-width-3; }\n .mw4-ns { max-width: $max-width-4; }\n .mw5-ns { max-width: $max-width-5; }\n .mw6-ns { max-width: $max-width-6; }\n .mw7-ns { max-width: $max-width-7; }\n .mw8-ns { max-width: $max-width-8; }\n .mw9-ns { max-width: $max-width-9; }\n\n .mw-none-ns { max-width: none; }\n}\n\n@media #{$breakpoint-medium} {\n .mw-100-m { max-width: 100%; }\n\n .mw1-m { max-width: $max-width-1; }\n .mw2-m { max-width: $max-width-2; }\n .mw3-m { max-width: $max-width-3; }\n .mw4-m { max-width: $max-width-4; }\n .mw5-m { max-width: $max-width-5; }\n .mw6-m { max-width: $max-width-6; }\n .mw7-m { max-width: $max-width-7; }\n .mw8-m { max-width: $max-width-8; }\n .mw9-m { max-width: $max-width-9; }\n\n .mw-none-m { max-width: none; }\n}\n\n@media #{$breakpoint-large} {\n .mw-100-l { max-width: 100%; }\n\n .mw1-l { max-width: $max-width-1; }\n .mw2-l { max-width: $max-width-2; }\n .mw3-l { max-width: $max-width-3; }\n .mw4-l { max-width: $max-width-4; }\n .mw5-l { max-width: $max-width-5; }\n .mw6-l { max-width: $max-width-6; }\n .mw7-l { max-width: $max-width-7; }\n .mw8-l { max-width: $max-width-8; }\n .mw9-l { max-width: $max-width-9; }\n\n .mw-none-l { max-width: none; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n WIDTHS\n Docs: http://tachyons.io/docs/layout/widths/\n\n Base:\n w = width\n\n Modifiers\n 1 = 1st step in width scale\n 2 = 2nd step in width scale\n 3 = 3rd step in width scale\n 4 = 4th step in width scale\n 5 = 5th step in width scale\n\n -10 = literal value 10%\n -20 = literal value 20%\n -25 = literal value 25%\n -30 = literal value 30%\n -33 = literal value 33%\n -34 = literal value 34%\n -40 = literal value 40%\n -50 = literal value 50%\n -60 = literal value 60%\n -70 = literal value 70%\n -75 = literal value 75%\n -80 = literal value 80%\n -90 = literal value 90%\n -100 = literal value 100%\n\n -third = 100% / 3 (Not supported in opera mini or IE8)\n -two-thirds = 100% / 1.5 (Not supported in opera mini or IE8)\n -auto = string value auto\n\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n */\n\n/* Width Scale */\n\n.w1 { width: $width-1; }\n.w2 { width: $width-2; }\n.w3 { width: $width-3; }\n.w4 { width: $width-4; }\n.w5 { width: $width-5; }\n\n.w-10 { width: 10%; }\n.w-20 { width: 20%; }\n.w-25 { width: 25%; }\n.w-30 { width: 30%; }\n.w-33 { width: 33%; }\n.w-34 { width: 34%; }\n.w-40 { width: 40%; }\n.w-50 { width: 50%; }\n.w-60 { width: 60%; }\n.w-70 { width: 70%; }\n.w-75 { width: 75%; }\n.w-80 { width: 80%; }\n.w-90 { width: 90%; }\n.w-100 { width: 100%; }\n\n.w-third { width: (100% / 3); }\n.w-two-thirds { width: (100% / 1.5); }\n.w-auto { width: auto; }\n\n@media #{$breakpoint-not-small} {\n .w1-ns { width: $width-1; }\n .w2-ns { width: $width-2; }\n .w3-ns { width: $width-3; }\n .w4-ns { width: $width-4; }\n .w5-ns { width: $width-5; }\n .w-10-ns { width: 10%; }\n .w-20-ns { width: 20%; }\n .w-25-ns { width: 25%; }\n .w-30-ns { width: 30%; }\n .w-33-ns { width: 33%; }\n .w-34-ns { width: 34%; }\n .w-40-ns { width: 40%; }\n .w-50-ns { width: 50%; }\n .w-60-ns { width: 60%; }\n .w-70-ns { width: 70%; }\n .w-75-ns { width: 75%; }\n .w-80-ns { width: 80%; }\n .w-90-ns { width: 90%; }\n .w-100-ns { width: 100%; }\n .w-third-ns { width: (100% / 3); }\n .w-two-thirds-ns { width: (100% / 1.5); }\n .w-auto-ns { width: auto; }\n}\n\n@media #{$breakpoint-medium} {\n .w1-m { width: $width-1; }\n .w2-m { width: $width-2; }\n .w3-m { width: $width-3; }\n .w4-m { width: $width-4; }\n .w5-m { width: $width-5; }\n .w-10-m { width: 10%; }\n .w-20-m { width: 20%; }\n .w-25-m { width: 25%; }\n .w-30-m { width: 30%; }\n .w-33-m { width: 33%; }\n .w-34-m { width: 34%; }\n .w-40-m { width: 40%; }\n .w-50-m { width: 50%; }\n .w-60-m { width: 60%; }\n .w-70-m { width: 70%; }\n .w-75-m { width: 75%; }\n .w-80-m { width: 80%; }\n .w-90-m { width: 90%; }\n .w-100-m { width: 100%; }\n .w-third-m { width: (100% / 3); }\n .w-two-thirds-m { width: (100% / 1.5); }\n .w-auto-m { width: auto; }\n}\n\n@media #{$breakpoint-large} {\n .w1-l { width: $width-1; }\n .w2-l { width: $width-2; }\n .w3-l { width: $width-3; }\n .w4-l { width: $width-4; }\n .w5-l { width: $width-5; }\n .w-10-l { width: 10%; }\n .w-20-l { width: 20%; }\n .w-25-l { width: 25%; }\n .w-30-l { width: 30%; }\n .w-33-l { width: 33%; }\n .w-34-l { width: 34%; }\n .w-40-l { width: 40%; }\n .w-50-l { width: 50%; }\n .w-60-l { width: 60%; }\n .w-70-l { width: 70%; }\n .w-75-l { width: 75%; }\n .w-80-l { width: 80%; }\n .w-90-l { width: 90%; }\n .w-100-l { width: 100%; }\n .w-third-l { width: (100% / 3); }\n .w-two-thirds-l { width: (100% / 1.5); }\n .w-auto-l { width: auto; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n OVERFLOW\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n */\n\n.overflow-visible { overflow: visible; }\n.overflow-hidden { overflow: hidden; }\n.overflow-scroll { overflow: scroll; }\n.overflow-auto { overflow: auto; }\n\n.overflow-x-visible { overflow-x: visible; }\n.overflow-x-hidden { overflow-x: hidden; }\n.overflow-x-scroll { overflow-x: scroll; }\n.overflow-x-auto { overflow-x: auto; }\n\n.overflow-y-visible { overflow-y: visible; }\n.overflow-y-hidden { overflow-y: hidden; }\n.overflow-y-scroll { overflow-y: scroll; }\n.overflow-y-auto { overflow-y: auto; }\n\n@media #{$breakpoint-not-small} {\n .overflow-visible-ns { overflow: visible; }\n .overflow-hidden-ns { overflow: hidden; }\n .overflow-scroll-ns { overflow: scroll; }\n .overflow-auto-ns { overflow: auto; }\n .overflow-x-visible-ns { overflow-x: visible; }\n .overflow-x-hidden-ns { overflow-x: hidden; }\n .overflow-x-scroll-ns { overflow-x: scroll; }\n .overflow-x-auto-ns { overflow-x: auto; }\n\n .overflow-y-visible-ns { overflow-y: visible; }\n .overflow-y-hidden-ns { overflow-y: hidden; }\n .overflow-y-scroll-ns { overflow-y: scroll; }\n .overflow-y-auto-ns { overflow-y: auto; }\n}\n\n@media #{$breakpoint-medium} {\n .overflow-visible-m { overflow: visible; }\n .overflow-hidden-m { overflow: hidden; }\n .overflow-scroll-m { overflow: scroll; }\n .overflow-auto-m { overflow: auto; }\n\n .overflow-x-visible-m { overflow-x: visible; }\n .overflow-x-hidden-m { overflow-x: hidden; }\n .overflow-x-scroll-m { overflow-x: scroll; }\n .overflow-x-auto-m { overflow-x: auto; }\n\n .overflow-y-visible-m { overflow-y: visible; }\n .overflow-y-hidden-m { overflow-y: hidden; }\n .overflow-y-scroll-m { overflow-y: scroll; }\n .overflow-y-auto-m { overflow-y: auto; }\n}\n\n@media #{$breakpoint-large} {\n .overflow-visible-l { overflow: visible; }\n .overflow-hidden-l { overflow: hidden; }\n .overflow-scroll-l { overflow: scroll; }\n .overflow-auto-l { overflow: auto; }\n\n .overflow-x-visible-l { overflow-x: visible; }\n .overflow-x-hidden-l { overflow-x: hidden; }\n .overflow-x-scroll-l { overflow-x: scroll; }\n .overflow-x-auto-l { overflow-x: auto; }\n\n .overflow-y-visible-l { overflow-y: visible; }\n .overflow-y-hidden-l { overflow-y: hidden; }\n .overflow-y-scroll-l { overflow-y: scroll; }\n .overflow-y-auto-l { overflow-y: auto; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n POSITIONING\n Docs: http://tachyons.io/docs/layout/position/\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.static { position: static; }\n.relative { position: relative; }\n.absolute { position: absolute; }\n.fixed { position: fixed; }\n\n@media #{$breakpoint-not-small} {\n .static-ns { position: static; }\n .relative-ns { position: relative; }\n .absolute-ns { position: absolute; }\n .fixed-ns { position: fixed; }\n}\n\n@media #{$breakpoint-medium} {\n .static-m { position: static; }\n .relative-m { position: relative; }\n .absolute-m { position: absolute; }\n .fixed-m { position: fixed; }\n}\n\n@media #{$breakpoint-large} {\n .static-l { position: static; }\n .relative-l { position: relative; }\n .absolute-l { position: absolute; }\n .fixed-l { position: fixed; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n OPACITY\n Docs: http://tachyons.io/docs/themes/opacity/\n\n*/\n\n.o-100 { opacity: 1; }\n.o-90 { opacity: .9; }\n.o-80 { opacity: .8; }\n.o-70 { opacity: .7; }\n.o-60 { opacity: .6; }\n.o-50 { opacity: .5; }\n.o-40 { opacity: .4; }\n.o-30 { opacity: .3; }\n.o-20 { opacity: .2; }\n.o-10 { opacity: .1; }\n.o-05 { opacity: .05; }\n.o-025 { opacity: .025; }\n.o-0 { opacity: 0; }\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n ROTATIONS\n\n*/\n\n.rotate-45 { transform: rotate(45deg); }\n.rotate-90 { transform: rotate(90deg); }\n.rotate-135 { transform: rotate(135deg); }\n.rotate-180 { transform: rotate(180deg); }\n.rotate-225 { transform: rotate(225deg); }\n.rotate-270 { transform: rotate(270deg); }\n.rotate-315 { transform: rotate(315deg); }\n\n@media #{$breakpoint-not-small}{\n .rotate-45-ns { transform: rotate(45deg); }\n .rotate-90-ns { transform: rotate(90deg); }\n .rotate-135-ns { transform: rotate(135deg); }\n .rotate-180-ns { transform: rotate(180deg); }\n .rotate-225-ns { transform: rotate(225deg); }\n .rotate-270-ns { transform: rotate(270deg); }\n .rotate-315-ns { transform: rotate(315deg); }\n}\n\n@media #{$breakpoint-medium}{\n .rotate-45-m { transform: rotate(45deg); }\n .rotate-90-m { transform: rotate(90deg); }\n .rotate-135-m { transform: rotate(135deg); }\n .rotate-180-m { transform: rotate(180deg); }\n .rotate-225-m { transform: rotate(225deg); }\n .rotate-270-m { transform: rotate(270deg); }\n .rotate-315-m { transform: rotate(315deg); }\n}\n\n@media #{$breakpoint-large}{\n .rotate-45-l { transform: rotate(45deg); }\n .rotate-90-l { transform: rotate(90deg); }\n .rotate-135-l { transform: rotate(135deg); }\n .rotate-180-l { transform: rotate(180deg); }\n .rotate-225-l { transform: rotate(225deg); }\n .rotate-270-l { transform: rotate(270deg); }\n .rotate-315-l { transform: rotate(315deg); }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n SKINS\n Docs: http://tachyons.io/docs/themes/skins/\n\n Classes for setting foreground and background colors on elements.\n If you haven't declared a border color, but set border on an element, it will\n be set to the current text color.\n\n*/\n\n/* Text colors */\n\n.black-90 { color: $black-90; }\n.black-80 { color: $black-80; }\n.black-70 { color: $black-70; }\n.black-60 { color: $black-60; }\n.black-50 { color: $black-50; }\n.black-40 { color: $black-40; }\n.black-30 { color: $black-30; }\n.black-20 { color: $black-20; }\n.black-10 { color: $black-10; }\n.black-05 { color: $black-05; }\n\n.white-90 { color: $white-90; }\n.white-80 { color: $white-80; }\n.white-70 { color: $white-70; }\n.white-60 { color: $white-60; }\n.white-50 { color: $white-50; }\n.white-40 { color: $white-40; }\n.white-30 { color: $white-30; }\n.white-20 { color: $white-20; }\n.white-10 { color: $white-10; }\n\n.black { color: $black; }\n.near-black { color: $near-black; }\n.dark-gray { color: $dark-gray; }\n.mid-gray { color: $mid-gray; }\n.gray { color: $gray; }\n.silver { color: $silver; }\n.light-silver { color: $light-silver; }\n.moon-gray { color: $moon-gray; }\n.light-gray { color: $light-gray; }\n.near-white { color: $near-white; }\n.white { color: $white; }\n\n.dark-red { color: $dark-red; }\n.red { color: $red; }\n.light-red { color: $light-red; }\n.orange { color: $orange; }\n.gold { color: $gold; }\n.yellow { color: $yellow; }\n.light-yellow { color: $light-yellow; }\n.purple { color: $purple; }\n.light-purple { color: $light-purple; }\n.dark-pink { color: $dark-pink; }\n.hot-pink { color: $hot-pink; }\n.pink { color: $pink; }\n.light-pink { color: $light-pink; }\n.dark-green { color: $dark-green; }\n.green { color: $green; }\n.light-green { color: $light-green; }\n.navy { color: $navy; }\n.dark-blue { color: $dark-blue; }\n.blue { color: $blue; }\n.light-blue { color: $light-blue; }\n.lightest-blue { color: $lightest-blue; }\n.washed-blue { color: $washed-blue; }\n.washed-green { color: $washed-green; }\n.washed-yellow { color: $washed-yellow; }\n.washed-red { color: $washed-red; }\n.color-inherit { color: inherit; }\n\n.bg-black-90 { background-color: $black-90; }\n.bg-black-80 { background-color: $black-80; }\n.bg-black-70 { background-color: $black-70; }\n.bg-black-60 { background-color: $black-60; }\n.bg-black-50 { background-color: $black-50; }\n.bg-black-40 { background-color: $black-40; }\n.bg-black-30 { background-color: $black-30; }\n.bg-black-20 { background-color: $black-20; }\n.bg-black-10 { background-color: $black-10; }\n.bg-black-05 { background-color: $black-05; }\n.bg-white-90 { background-color: $white-90; }\n.bg-white-80 { background-color: $white-80; }\n.bg-white-70 { background-color: $white-70; }\n.bg-white-60 { background-color: $white-60; }\n.bg-white-50 { background-color: $white-50; }\n.bg-white-40 { background-color: $white-40; }\n.bg-white-30 { background-color: $white-30; }\n.bg-white-20 { background-color: $white-20; }\n.bg-white-10 { background-color: $white-10; }\n\n\n\n/* Background colors */\n\n.bg-black { background-color: $black; }\n.bg-near-black { background-color: $near-black; }\n.bg-dark-gray { background-color: $dark-gray; }\n.bg-mid-gray { background-color: $mid-gray; }\n.bg-gray { background-color: $gray; }\n.bg-silver { background-color: $silver; }\n.bg-light-silver { background-color: $light-silver; }\n.bg-moon-gray { background-color: $moon-gray; }\n.bg-light-gray { background-color: $light-gray; }\n.bg-near-white { background-color: $near-white; }\n.bg-white { background-color: $white; }\n.bg-transparent { background-color: $transparent; }\n\n.bg-dark-red { background-color: $dark-red; }\n.bg-red { background-color: $red; }\n.bg-light-red { background-color: $light-red; }\n.bg-orange { background-color: $orange; }\n.bg-gold { background-color: $gold; }\n.bg-yellow { background-color: $yellow; }\n.bg-light-yellow { background-color: $light-yellow; }\n.bg-purple { background-color: $purple; }\n.bg-light-purple { background-color: $light-purple; }\n.bg-dark-pink { background-color: $dark-pink; }\n.bg-hot-pink { background-color: $hot-pink; }\n.bg-pink { background-color: $pink; }\n.bg-light-pink { background-color: $light-pink; }\n.bg-dark-green { background-color: $dark-green; }\n.bg-green { background-color: $green; }\n.bg-light-green { background-color: $light-green; }\n.bg-navy { background-color: $navy; }\n.bg-dark-blue { background-color: $dark-blue; }\n.bg-blue { background-color: $blue; }\n.bg-light-blue { background-color: $light-blue; }\n.bg-lightest-blue { background-color: $lightest-blue; }\n.bg-washed-blue { background-color: $washed-blue; }\n.bg-washed-green { background-color: $washed-green; }\n.bg-washed-yellow { background-color: $washed-yellow; }\n.bg-washed-red { background-color: $washed-red; }\n.bg-inherit { background-color: inherit; }\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n SKINS:PSEUDO\n\n Customize the color of an element when\n it is focused or hovered over.\n\n */\n\n.hover-black:hover,\n.hover-black:focus { color: $black; }\n.hover-near-black:hover,\n.hover-near-black:focus { color: $near-black; }\n.hover-dark-gray:hover,\n.hover-dark-gray:focus { color: $dark-gray; }\n.hover-mid-gray:hover,\n.hover-mid-gray:focus { color: $mid-gray; }\n.hover-gray:hover,\n.hover-gray:focus { color: $gray; }\n.hover-silver:hover,\n.hover-silver:focus { color: $silver; }\n.hover-light-silver:hover,\n.hover-light-silver:focus { color: $light-silver; }\n.hover-moon-gray:hover,\n.hover-moon-gray:focus { color: $moon-gray; }\n.hover-light-gray:hover,\n.hover-light-gray:focus { color: $light-gray; }\n.hover-near-white:hover,\n.hover-near-white:focus { color: $near-white; }\n.hover-white:hover,\n.hover-white:focus { color: $white; }\n\n.hover-black-90:hover,\n.hover-black-90:focus { color: $black-90; }\n.hover-black-80:hover,\n.hover-black-80:focus { color: $black-80; }\n.hover-black-70:hover,\n.hover-black-70:focus { color: $black-70; }\n.hover-black-60:hover,\n.hover-black-60:focus { color: $black-60; }\n.hover-black-50:hover,\n.hover-black-50:focus { color: $black-50; }\n.hover-black-40:hover,\n.hover-black-40:focus { color: $black-40; }\n.hover-black-30:hover,\n.hover-black-30:focus { color: $black-30; }\n.hover-black-20:hover,\n.hover-black-20:focus { color: $black-20; }\n.hover-black-10:hover,\n.hover-black-10:focus { color: $black-10; }\n.hover-white-90:hover,\n.hover-white-90:focus { color: $white-90; }\n.hover-white-80:hover,\n.hover-white-80:focus { color: $white-80; }\n.hover-white-70:hover,\n.hover-white-70:focus { color: $white-70; }\n.hover-white-60:hover,\n.hover-white-60:focus { color: $white-60; }\n.hover-white-50:hover,\n.hover-white-50:focus { color: $white-50; }\n.hover-white-40:hover,\n.hover-white-40:focus { color: $white-40; }\n.hover-white-30:hover,\n.hover-white-30:focus { color: $white-30; }\n.hover-white-20:hover,\n.hover-white-20:focus { color: $white-20; }\n.hover-white-10:hover,\n.hover-white-10:focus { color: $white-10; }\n.hover-inherit:hover,\n.hover-inherit:focus { color: inherit; }\n\n.hover-bg-black:hover,\n.hover-bg-black:focus { background-color: $black; }\n.hover-bg-near-black:hover,\n.hover-bg-near-black:focus { background-color: $near-black; }\n.hover-bg-dark-gray:hover,\n.hover-bg-dark-gray:focus { background-color: $dark-gray; }\n.hover-bg-mid-gray:hover,\n.hover-bg-mid-gray:focus { background-color: $mid-gray; }\n.hover-bg-gray:hover,\n.hover-bg-gray:focus { background-color: $gray; }\n.hover-bg-silver:hover,\n.hover-bg-silver:focus { background-color: $silver; }\n.hover-bg-light-silver:hover,\n.hover-bg-light-silver:focus { background-color: $light-silver; }\n.hover-bg-moon-gray:hover,\n.hover-bg-moon-gray:focus { background-color: $moon-gray; }\n.hover-bg-light-gray:hover,\n.hover-bg-light-gray:focus { background-color: $light-gray; }\n.hover-bg-near-white:hover,\n.hover-bg-near-white:focus { background-color: $near-white; }\n.hover-bg-white:hover,\n.hover-bg-white:focus { background-color: $white; }\n.hover-bg-transparent:hover,\n.hover-bg-transparent:focus { background-color: $transparent; }\n\n.hover-bg-black-90:hover,\n.hover-bg-black-90:focus { background-color: $black-90; }\n.hover-bg-black-80:hover,\n.hover-bg-black-80:focus { background-color: $black-80; }\n.hover-bg-black-70:hover,\n.hover-bg-black-70:focus { background-color: $black-70; }\n.hover-bg-black-60:hover,\n.hover-bg-black-60:focus { background-color: $black-60; }\n.hover-bg-black-50:hover,\n.hover-bg-black-50:focus { background-color: $black-50; }\n.hover-bg-black-40:hover,\n.hover-bg-black-40:focus { background-color: $black-40; }\n.hover-bg-black-30:hover,\n.hover-bg-black-30:focus { background-color: $black-30; }\n.hover-bg-black-20:hover,\n.hover-bg-black-20:focus { background-color: $black-20; }\n.hover-bg-black-10:hover,\n.hover-bg-black-10:focus { background-color: $black-10; }\n.hover-bg-white-90:hover,\n.hover-bg-white-90:focus { background-color: $white-90; }\n.hover-bg-white-80:hover,\n.hover-bg-white-80:focus { background-color: $white-80; }\n.hover-bg-white-70:hover,\n.hover-bg-white-70:focus { background-color: $white-70; }\n.hover-bg-white-60:hover,\n.hover-bg-white-60:focus { background-color: $white-60; }\n.hover-bg-white-50:hover,\n.hover-bg-white-50:focus { background-color: $white-50; }\n.hover-bg-white-40:hover,\n.hover-bg-white-40:focus { background-color: $white-40; }\n.hover-bg-white-30:hover,\n.hover-bg-white-30:focus { background-color: $white-30; }\n.hover-bg-white-20:hover,\n.hover-bg-white-20:focus { background-color: $white-20; }\n.hover-bg-white-10:hover,\n.hover-bg-white-10:focus { background-color: $white-10; }\n\n.hover-dark-red:hover,\n.hover-dark-red:focus { color: $dark-red; }\n.hover-red:hover,\n.hover-red:focus { color: $red; }\n.hover-light-red:hover,\n.hover-light-red:focus { color: $light-red; }\n.hover-orange:hover,\n.hover-orange:focus { color: $orange; }\n.hover-gold:hover,\n.hover-gold:focus { color: $gold; }\n.hover-yellow:hover,\n.hover-yellow:focus { color: $yellow; }\n.hover-light-yellow:hover,\n.hover-light-yellow:focus { color: $light-yellow; }\n.hover-purple:hover,\n.hover-purple:focus { color: $purple; }\n.hover-light-purple:hover,\n.hover-light-purple:focus { color: $light-purple; }\n.hover-dark-pink:hover,\n.hover-dark-pink:focus { color: $dark-pink; }\n.hover-hot-pink:hover,\n.hover-hot-pink:focus { color: $hot-pink; }\n.hover-pink:hover,\n.hover-pink:focus { color: $pink; }\n.hover-light-pink:hover,\n.hover-light-pink:focus { color: $light-pink; }\n.hover-dark-green:hover,\n.hover-dark-green:focus { color: $dark-green; }\n.hover-green:hover,\n.hover-green:focus { color: $green; }\n.hover-light-green:hover,\n.hover-light-green:focus { color: $light-green; }\n.hover-navy:hover,\n.hover-navy:focus { color: $navy; }\n.hover-dark-blue:hover,\n.hover-dark-blue:focus { color: $dark-blue; }\n.hover-blue:hover,\n.hover-blue:focus { color: $blue; }\n.hover-light-blue:hover,\n.hover-light-blue:focus { color: $light-blue; }\n.hover-lightest-blue:hover,\n.hover-lightest-blue:focus { color: $lightest-blue; }\n.hover-washed-blue:hover,\n.hover-washed-blue:focus { color: $washed-blue; }\n.hover-washed-green:hover,\n.hover-washed-green:focus { color: $washed-green; }\n.hover-washed-yellow:hover,\n.hover-washed-yellow:focus { color: $washed-yellow; }\n.hover-washed-red:hover,\n.hover-washed-red:focus { color: $washed-red; }\n\n.hover-bg-dark-red:hover,\n.hover-bg-dark-red:focus { background-color: $dark-red; }\n.hover-bg-red:hover,\n.hover-bg-red:focus { background-color: $red; }\n.hover-bg-light-red:hover,\n.hover-bg-light-red:focus { background-color: $light-red; }\n.hover-bg-orange:hover,\n.hover-bg-orange:focus { background-color: $orange; }\n.hover-bg-gold:hover,\n.hover-bg-gold:focus { background-color: $gold; }\n.hover-bg-yellow:hover,\n.hover-bg-yellow:focus { background-color: $yellow; }\n.hover-bg-light-yellow:hover,\n.hover-bg-light-yellow:focus { background-color: $light-yellow; }\n.hover-bg-purple:hover,\n.hover-bg-purple:focus { background-color: $purple; }\n.hover-bg-light-purple:hover,\n.hover-bg-light-purple:focus { background-color: $light-purple; }\n.hover-bg-dark-pink:hover,\n.hover-bg-dark-pink:focus { background-color: $dark-pink; }\n.hover-bg-hot-pink:hover,\n.hover-bg-hot-pink:focus { background-color: $hot-pink; }\n.hover-bg-pink:hover,\n.hover-bg-pink:focus { background-color: $pink; }\n.hover-bg-light-pink:hover,\n.hover-bg-light-pink:focus { background-color: $light-pink; }\n.hover-bg-dark-green:hover,\n.hover-bg-dark-green:focus { background-color: $dark-green; }\n.hover-bg-green:hover,\n.hover-bg-green:focus { background-color: $green; }\n.hover-bg-light-green:hover,\n.hover-bg-light-green:focus { background-color: $light-green; }\n.hover-bg-navy:hover,\n.hover-bg-navy:focus { background-color: $navy; }\n.hover-bg-dark-blue:hover,\n.hover-bg-dark-blue:focus { background-color: $dark-blue; }\n.hover-bg-blue:hover,\n.hover-bg-blue:focus { background-color: $blue; }\n.hover-bg-light-blue:hover,\n.hover-bg-light-blue:focus { background-color: $light-blue; }\n.hover-bg-lightest-blue:hover,\n.hover-bg-lightest-blue:focus { background-color: $lightest-blue; }\n.hover-bg-washed-blue:hover,\n.hover-bg-washed-blue:focus { background-color: $washed-blue; }\n.hover-bg-washed-green:hover,\n.hover-bg-washed-green:focus { background-color: $washed-green; }\n.hover-bg-washed-yellow:hover,\n.hover-bg-washed-yellow:focus { background-color: $washed-yellow; }\n.hover-bg-washed-red:hover,\n.hover-bg-washed-red:focus { background-color: $washed-red; }\n.hover-bg-inherit:hover,\n.hover-bg-inherit:focus { background-color: inherit; }\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/* Variables */\n\n/*\n SPACING\n Docs: http://tachyons.io/docs/layout/spacing/\n\n An eight step powers of two scale ranging from 0 to 16rem.\n\n Base:\n p = padding\n m = margin\n\n Modifiers:\n a = all\n h = horizontal\n v = vertical\n t = top\n r = right\n b = bottom\n l = left\n\n 0 = none\n 1 = 1st step in spacing scale\n 2 = 2nd step in spacing scale\n 3 = 3rd step in spacing scale\n 4 = 4th step in spacing scale\n 5 = 5th step in spacing scale\n 6 = 6th step in spacing scale\n 7 = 7th step in spacing scale\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n\n.pa0 { padding: $spacing-none; }\n.pa1 { padding: $spacing-extra-small; }\n.pa2 { padding: $spacing-small; }\n.pa3 { padding: $spacing-medium; }\n.pa4 { padding: $spacing-large; }\n.pa5 { padding: $spacing-extra-large; }\n.pa6 { padding: $spacing-extra-extra-large; }\n.pa7 { padding: $spacing-extra-extra-extra-large; }\n\n.pl0 { padding-left: $spacing-none; }\n.pl1 { padding-left: $spacing-extra-small; }\n.pl2 { padding-left: $spacing-small; }\n.pl3 { padding-left: $spacing-medium; }\n.pl4 { padding-left: $spacing-large; }\n.pl5 { padding-left: $spacing-extra-large; }\n.pl6 { padding-left: $spacing-extra-extra-large; }\n.pl7 { padding-left: $spacing-extra-extra-extra-large; }\n\n.pr0 { padding-right: $spacing-none; }\n.pr1 { padding-right: $spacing-extra-small; }\n.pr2 { padding-right: $spacing-small; }\n.pr3 { padding-right: $spacing-medium; }\n.pr4 { padding-right: $spacing-large; }\n.pr5 { padding-right: $spacing-extra-large; }\n.pr6 { padding-right: $spacing-extra-extra-large; }\n.pr7 { padding-right: $spacing-extra-extra-extra-large; }\n\n.pb0 { padding-bottom: $spacing-none; }\n.pb1 { padding-bottom: $spacing-extra-small; }\n.pb2 { padding-bottom: $spacing-small; }\n.pb3 { padding-bottom: $spacing-medium; }\n.pb4 { padding-bottom: $spacing-large; }\n.pb5 { padding-bottom: $spacing-extra-large; }\n.pb6 { padding-bottom: $spacing-extra-extra-large; }\n.pb7 { padding-bottom: $spacing-extra-extra-extra-large; }\n\n.pt0 { padding-top: $spacing-none; }\n.pt1 { padding-top: $spacing-extra-small; }\n.pt2 { padding-top: $spacing-small; }\n.pt3 { padding-top: $spacing-medium; }\n.pt4 { padding-top: $spacing-large; }\n.pt5 { padding-top: $spacing-extra-large; }\n.pt6 { padding-top: $spacing-extra-extra-large; }\n.pt7 { padding-top: $spacing-extra-extra-extra-large; }\n\n.pv0 {\n padding-top: $spacing-none;\n padding-bottom: $spacing-none;\n}\n.pv1 {\n padding-top: $spacing-extra-small;\n padding-bottom: $spacing-extra-small;\n}\n.pv2 {\n padding-top: $spacing-small;\n padding-bottom: $spacing-small;\n}\n.pv3 {\n padding-top: $spacing-medium;\n padding-bottom: $spacing-medium;\n}\n.pv4 {\n padding-top: $spacing-large;\n padding-bottom: $spacing-large;\n}\n.pv5 {\n padding-top: $spacing-extra-large;\n padding-bottom: $spacing-extra-large;\n}\n.pv6 {\n padding-top: $spacing-extra-extra-large;\n padding-bottom: $spacing-extra-extra-large;\n}\n\n.pv7 {\n padding-top: $spacing-extra-extra-extra-large;\n padding-bottom: $spacing-extra-extra-extra-large;\n}\n\n.ph0 {\n padding-left: $spacing-none;\n padding-right: $spacing-none;\n}\n\n.ph1 {\n padding-left: $spacing-extra-small;\n padding-right: $spacing-extra-small;\n}\n\n.ph2 {\n padding-left: $spacing-small;\n padding-right: $spacing-small;\n}\n\n.ph3 {\n padding-left: $spacing-medium;\n padding-right: $spacing-medium;\n}\n\n.ph4 {\n padding-left: $spacing-large;\n padding-right: $spacing-large;\n}\n\n.ph5 {\n padding-left: $spacing-extra-large;\n padding-right: $spacing-extra-large;\n}\n\n.ph6 {\n padding-left: $spacing-extra-extra-large;\n padding-right: $spacing-extra-extra-large;\n}\n\n.ph7 {\n padding-left: $spacing-extra-extra-extra-large;\n padding-right: $spacing-extra-extra-extra-large;\n}\n\n.ma0 { margin: $spacing-none; }\n.ma1 { margin: $spacing-extra-small; }\n.ma2 { margin: $spacing-small; }\n.ma3 { margin: $spacing-medium; }\n.ma4 { margin: $spacing-large; }\n.ma5 { margin: $spacing-extra-large; }\n.ma6 { margin: $spacing-extra-extra-large; }\n.ma7 { margin: $spacing-extra-extra-extra-large; }\n\n.ml0 { margin-left: $spacing-none; }\n.ml1 { margin-left: $spacing-extra-small; }\n.ml2 { margin-left: $spacing-small; }\n.ml3 { margin-left: $spacing-medium; }\n.ml4 { margin-left: $spacing-large; }\n.ml5 { margin-left: $spacing-extra-large; }\n.ml6 { margin-left: $spacing-extra-extra-large; }\n.ml7 { margin-left: $spacing-extra-extra-extra-large; }\n\n.mr0 { margin-right: $spacing-none; }\n.mr1 { margin-right: $spacing-extra-small; }\n.mr2 { margin-right: $spacing-small; }\n.mr3 { margin-right: $spacing-medium; }\n.mr4 { margin-right: $spacing-large; }\n.mr5 { margin-right: $spacing-extra-large; }\n.mr6 { margin-right: $spacing-extra-extra-large; }\n.mr7 { margin-right: $spacing-extra-extra-extra-large; }\n\n.mb0 { margin-bottom: $spacing-none; }\n.mb1 { margin-bottom: $spacing-extra-small; }\n.mb2 { margin-bottom: $spacing-small; }\n.mb3 { margin-bottom: $spacing-medium; }\n.mb4 { margin-bottom: $spacing-large; }\n.mb5 { margin-bottom: $spacing-extra-large; }\n.mb6 { margin-bottom: $spacing-extra-extra-large; }\n.mb7 { margin-bottom: $spacing-extra-extra-extra-large; }\n\n.mt0 { margin-top: $spacing-none; }\n.mt1 { margin-top: $spacing-extra-small; }\n.mt2 { margin-top: $spacing-small; }\n.mt3 { margin-top: $spacing-medium; }\n.mt4 { margin-top: $spacing-large; }\n.mt5 { margin-top: $spacing-extra-large; }\n.mt6 { margin-top: $spacing-extra-extra-large; }\n.mt7 { margin-top: $spacing-extra-extra-extra-large; }\n\n.mv0 {\n margin-top: $spacing-none;\n margin-bottom: $spacing-none;\n}\n.mv1 {\n margin-top: $spacing-extra-small;\n margin-bottom: $spacing-extra-small;\n}\n.mv2 {\n margin-top: $spacing-small;\n margin-bottom: $spacing-small;\n}\n.mv3 {\n margin-top: $spacing-medium;\n margin-bottom: $spacing-medium;\n}\n.mv4 {\n margin-top: $spacing-large;\n margin-bottom: $spacing-large;\n}\n.mv5 {\n margin-top: $spacing-extra-large;\n margin-bottom: $spacing-extra-large;\n}\n.mv6 {\n margin-top: $spacing-extra-extra-large;\n margin-bottom: $spacing-extra-extra-large;\n}\n.mv7 {\n margin-top: $spacing-extra-extra-extra-large;\n margin-bottom: $spacing-extra-extra-extra-large;\n}\n\n.mh0 {\n margin-left: $spacing-none;\n margin-right: $spacing-none;\n}\n.mh1 {\n margin-left: $spacing-extra-small;\n margin-right: $spacing-extra-small;\n}\n.mh2 {\n margin-left: $spacing-small;\n margin-right: $spacing-small;\n}\n.mh3 {\n margin-left: $spacing-medium;\n margin-right: $spacing-medium;\n}\n.mh4 {\n margin-left: $spacing-large;\n margin-right: $spacing-large;\n}\n.mh5 {\n margin-left: $spacing-extra-large;\n margin-right: $spacing-extra-large;\n}\n.mh6 {\n margin-left: $spacing-extra-extra-large;\n margin-right: $spacing-extra-extra-large;\n}\n.mh7 {\n margin-left: $spacing-extra-extra-extra-large;\n margin-right: $spacing-extra-extra-extra-large;\n}\n\n@media #{$breakpoint-not-small} {\n .pa0-ns { padding: $spacing-none; }\n .pa1-ns { padding: $spacing-extra-small; }\n .pa2-ns { padding: $spacing-small; }\n .pa3-ns { padding: $spacing-medium; }\n .pa4-ns { padding: $spacing-large; }\n .pa5-ns { padding: $spacing-extra-large; }\n .pa6-ns { padding: $spacing-extra-extra-large; }\n .pa7-ns { padding: $spacing-extra-extra-extra-large; }\n\n .pl0-ns { padding-left: $spacing-none; }\n .pl1-ns { padding-left: $spacing-extra-small; }\n .pl2-ns { padding-left: $spacing-small; }\n .pl3-ns { padding-left: $spacing-medium; }\n .pl4-ns { padding-left: $spacing-large; }\n .pl5-ns { padding-left: $spacing-extra-large; }\n .pl6-ns { padding-left: $spacing-extra-extra-large; }\n .pl7-ns { padding-left: $spacing-extra-extra-extra-large; }\n\n .pr0-ns { padding-right: $spacing-none; }\n .pr1-ns { padding-right: $spacing-extra-small; }\n .pr2-ns { padding-right: $spacing-small; }\n .pr3-ns { padding-right: $spacing-medium; }\n .pr4-ns { padding-right: $spacing-large; }\n .pr5-ns { padding-right: $spacing-extra-large; }\n .pr6-ns { padding-right: $spacing-extra-extra-large; }\n .pr7-ns { padding-right: $spacing-extra-extra-extra-large; }\n\n .pb0-ns { padding-bottom: $spacing-none; }\n .pb1-ns { padding-bottom: $spacing-extra-small; }\n .pb2-ns { padding-bottom: $spacing-small; }\n .pb3-ns { padding-bottom: $spacing-medium; }\n .pb4-ns { padding-bottom: $spacing-large; }\n .pb5-ns { padding-bottom: $spacing-extra-large; }\n .pb6-ns { padding-bottom: $spacing-extra-extra-large; }\n .pb7-ns { padding-bottom: $spacing-extra-extra-extra-large; }\n\n .pt0-ns { padding-top: $spacing-none; }\n .pt1-ns { padding-top: $spacing-extra-small; }\n .pt2-ns { padding-top: $spacing-small; }\n .pt3-ns { padding-top: $spacing-medium; }\n .pt4-ns { padding-top: $spacing-large; }\n .pt5-ns { padding-top: $spacing-extra-large; }\n .pt6-ns { padding-top: $spacing-extra-extra-large; }\n .pt7-ns { padding-top: $spacing-extra-extra-extra-large; }\n\n .pv0-ns {\n padding-top: $spacing-none;\n padding-bottom: $spacing-none;\n }\n .pv1-ns {\n padding-top: $spacing-extra-small;\n padding-bottom: $spacing-extra-small;\n }\n .pv2-ns {\n padding-top: $spacing-small;\n padding-bottom: $spacing-small;\n }\n .pv3-ns {\n padding-top: $spacing-medium;\n padding-bottom: $spacing-medium;\n }\n .pv4-ns {\n padding-top: $spacing-large;\n padding-bottom: $spacing-large;\n }\n .pv5-ns {\n padding-top: $spacing-extra-large;\n padding-bottom: $spacing-extra-large;\n }\n .pv6-ns {\n padding-top: $spacing-extra-extra-large;\n padding-bottom: $spacing-extra-extra-large;\n }\n .pv7-ns {\n padding-top: $spacing-extra-extra-extra-large;\n padding-bottom: $spacing-extra-extra-extra-large;\n }\n .ph0-ns {\n padding-left: $spacing-none;\n padding-right: $spacing-none;\n }\n .ph1-ns {\n padding-left: $spacing-extra-small;\n padding-right: $spacing-extra-small;\n }\n .ph2-ns {\n padding-left: $spacing-small;\n padding-right: $spacing-small;\n }\n .ph3-ns {\n padding-left: $spacing-medium;\n padding-right: $spacing-medium;\n }\n .ph4-ns {\n padding-left: $spacing-large;\n padding-right: $spacing-large;\n }\n .ph5-ns {\n padding-left: $spacing-extra-large;\n padding-right: $spacing-extra-large;\n }\n .ph6-ns {\n padding-left: $spacing-extra-extra-large;\n padding-right: $spacing-extra-extra-large;\n }\n .ph7-ns {\n padding-left: $spacing-extra-extra-extra-large;\n padding-right: $spacing-extra-extra-extra-large;\n }\n\n .ma0-ns { margin: $spacing-none; }\n .ma1-ns { margin: $spacing-extra-small; }\n .ma2-ns { margin: $spacing-small; }\n .ma3-ns { margin: $spacing-medium; }\n .ma4-ns { margin: $spacing-large; }\n .ma5-ns { margin: $spacing-extra-large; }\n .ma6-ns { margin: $spacing-extra-extra-large; }\n .ma7-ns { margin: $spacing-extra-extra-extra-large; }\n\n .ml0-ns { margin-left: $spacing-none; }\n .ml1-ns { margin-left: $spacing-extra-small; }\n .ml2-ns { margin-left: $spacing-small; }\n .ml3-ns { margin-left: $spacing-medium; }\n .ml4-ns { margin-left: $spacing-large; }\n .ml5-ns { margin-left: $spacing-extra-large; }\n .ml6-ns { margin-left: $spacing-extra-extra-large; }\n .ml7-ns { margin-left: $spacing-extra-extra-extra-large; }\n\n .mr0-ns { margin-right: $spacing-none; }\n .mr1-ns { margin-right: $spacing-extra-small; }\n .mr2-ns { margin-right: $spacing-small; }\n .mr3-ns { margin-right: $spacing-medium; }\n .mr4-ns { margin-right: $spacing-large; }\n .mr5-ns { margin-right: $spacing-extra-large; }\n .mr6-ns { margin-right: $spacing-extra-extra-large; }\n .mr7-ns { margin-right: $spacing-extra-extra-extra-large; }\n\n .mb0-ns { margin-bottom: $spacing-none; }\n .mb1-ns { margin-bottom: $spacing-extra-small; }\n .mb2-ns { margin-bottom: $spacing-small; }\n .mb3-ns { margin-bottom: $spacing-medium; }\n .mb4-ns { margin-bottom: $spacing-large; }\n .mb5-ns { margin-bottom: $spacing-extra-large; }\n .mb6-ns { margin-bottom: $spacing-extra-extra-large; }\n .mb7-ns { margin-bottom: $spacing-extra-extra-extra-large; }\n\n .mt0-ns { margin-top: $spacing-none; }\n .mt1-ns { margin-top: $spacing-extra-small; }\n .mt2-ns { margin-top: $spacing-small; }\n .mt3-ns { margin-top: $spacing-medium; }\n .mt4-ns { margin-top: $spacing-large; }\n .mt5-ns { margin-top: $spacing-extra-large; }\n .mt6-ns { margin-top: $spacing-extra-extra-large; }\n .mt7-ns { margin-top: $spacing-extra-extra-extra-large; }\n\n .mv0-ns {\n margin-top: $spacing-none;\n margin-bottom: $spacing-none;\n }\n .mv1-ns {\n margin-top: $spacing-extra-small;\n margin-bottom: $spacing-extra-small;\n }\n .mv2-ns {\n margin-top: $spacing-small;\n margin-bottom: $spacing-small;\n }\n .mv3-ns {\n margin-top: $spacing-medium;\n margin-bottom: $spacing-medium;\n }\n .mv4-ns {\n margin-top: $spacing-large;\n margin-bottom: $spacing-large;\n }\n .mv5-ns {\n margin-top: $spacing-extra-large;\n margin-bottom: $spacing-extra-large;\n }\n .mv6-ns {\n margin-top: $spacing-extra-extra-large;\n margin-bottom: $spacing-extra-extra-large;\n }\n .mv7-ns {\n margin-top: $spacing-extra-extra-extra-large;\n margin-bottom: $spacing-extra-extra-extra-large;\n }\n\n .mh0-ns {\n margin-left: $spacing-none;\n margin-right: $spacing-none;\n }\n .mh1-ns {\n margin-left: $spacing-extra-small;\n margin-right: $spacing-extra-small;\n }\n .mh2-ns {\n margin-left: $spacing-small;\n margin-right: $spacing-small;\n }\n .mh3-ns {\n margin-left: $spacing-medium;\n margin-right: $spacing-medium;\n }\n .mh4-ns {\n margin-left: $spacing-large;\n margin-right: $spacing-large;\n }\n .mh5-ns {\n margin-left: $spacing-extra-large;\n margin-right: $spacing-extra-large;\n }\n .mh6-ns {\n margin-left: $spacing-extra-extra-large;\n margin-right: $spacing-extra-extra-large;\n }\n .mh7-ns {\n margin-left: $spacing-extra-extra-extra-large;\n margin-right: $spacing-extra-extra-extra-large;\n }\n\n}\n\n@media #{$breakpoint-medium} {\n .pa0-m { padding: $spacing-none; }\n .pa1-m { padding: $spacing-extra-small; }\n .pa2-m { padding: $spacing-small; }\n .pa3-m { padding: $spacing-medium; }\n .pa4-m { padding: $spacing-large; }\n .pa5-m { padding: $spacing-extra-large; }\n .pa6-m { padding: $spacing-extra-extra-large; }\n .pa7-m { padding: $spacing-extra-extra-extra-large; }\n\n .pl0-m { padding-left: $spacing-none; }\n .pl1-m { padding-left: $spacing-extra-small; }\n .pl2-m { padding-left: $spacing-small; }\n .pl3-m { padding-left: $spacing-medium; }\n .pl4-m { padding-left: $spacing-large; }\n .pl5-m { padding-left: $spacing-extra-large; }\n .pl6-m { padding-left: $spacing-extra-extra-large; }\n .pl7-m { padding-left: $spacing-extra-extra-extra-large; }\n\n .pr0-m { padding-right: $spacing-none; }\n .pr1-m { padding-right: $spacing-extra-small; }\n .pr2-m { padding-right: $spacing-small; }\n .pr3-m { padding-right: $spacing-medium; }\n .pr4-m { padding-right: $spacing-large; }\n .pr5-m { padding-right: $spacing-extra-large; }\n .pr6-m { padding-right: $spacing-extra-extra-large; }\n .pr7-m { padding-right: $spacing-extra-extra-extra-large; }\n\n .pb0-m { padding-bottom: $spacing-none; }\n .pb1-m { padding-bottom: $spacing-extra-small; }\n .pb2-m { padding-bottom: $spacing-small; }\n .pb3-m { padding-bottom: $spacing-medium; }\n .pb4-m { padding-bottom: $spacing-large; }\n .pb5-m { padding-bottom: $spacing-extra-large; }\n .pb6-m { padding-bottom: $spacing-extra-extra-large; }\n .pb7-m { padding-bottom: $spacing-extra-extra-extra-large; }\n\n .pt0-m { padding-top: $spacing-none; }\n .pt1-m { padding-top: $spacing-extra-small; }\n .pt2-m { padding-top: $spacing-small; }\n .pt3-m { padding-top: $spacing-medium; }\n .pt4-m { padding-top: $spacing-large; }\n .pt5-m { padding-top: $spacing-extra-large; }\n .pt6-m { padding-top: $spacing-extra-extra-large; }\n .pt7-m { padding-top: $spacing-extra-extra-extra-large; }\n\n .pv0-m {\n padding-top: $spacing-none;\n padding-bottom: $spacing-none;\n }\n .pv1-m {\n padding-top: $spacing-extra-small;\n padding-bottom: $spacing-extra-small;\n }\n .pv2-m {\n padding-top: $spacing-small;\n padding-bottom: $spacing-small;\n }\n .pv3-m {\n padding-top: $spacing-medium;\n padding-bottom: $spacing-medium;\n }\n .pv4-m {\n padding-top: $spacing-large;\n padding-bottom: $spacing-large;\n }\n .pv5-m {\n padding-top: $spacing-extra-large;\n padding-bottom: $spacing-extra-large;\n }\n .pv6-m {\n padding-top: $spacing-extra-extra-large;\n padding-bottom: $spacing-extra-extra-large;\n }\n .pv7-m {\n padding-top: $spacing-extra-extra-extra-large;\n padding-bottom: $spacing-extra-extra-extra-large;\n }\n\n .ph0-m {\n padding-left: $spacing-none;\n padding-right: $spacing-none;\n }\n .ph1-m {\n padding-left: $spacing-extra-small;\n padding-right: $spacing-extra-small;\n }\n .ph2-m {\n padding-left: $spacing-small;\n padding-right: $spacing-small;\n }\n .ph3-m {\n padding-left: $spacing-medium;\n padding-right: $spacing-medium;\n }\n .ph4-m {\n padding-left: $spacing-large;\n padding-right: $spacing-large;\n }\n .ph5-m {\n padding-left: $spacing-extra-large;\n padding-right: $spacing-extra-large;\n }\n .ph6-m {\n padding-left: $spacing-extra-extra-large;\n padding-right: $spacing-extra-extra-large;\n }\n .ph7-m {\n padding-left: $spacing-extra-extra-extra-large;\n padding-right: $spacing-extra-extra-extra-large;\n }\n\n .ma0-m { margin: $spacing-none; }\n .ma1-m { margin: $spacing-extra-small; }\n .ma2-m { margin: $spacing-small; }\n .ma3-m { margin: $spacing-medium; }\n .ma4-m { margin: $spacing-large; }\n .ma5-m { margin: $spacing-extra-large; }\n .ma6-m { margin: $spacing-extra-extra-large; }\n .ma7-m { margin: $spacing-extra-extra-extra-large; }\n\n .ml0-m { margin-left: $spacing-none; }\n .ml1-m { margin-left: $spacing-extra-small; }\n .ml2-m { margin-left: $spacing-small; }\n .ml3-m { margin-left: $spacing-medium; }\n .ml4-m { margin-left: $spacing-large; }\n .ml5-m { margin-left: $spacing-extra-large; }\n .ml6-m { margin-left: $spacing-extra-extra-large; }\n .ml7-m { margin-left: $spacing-extra-extra-extra-large; }\n\n .mr0-m { margin-right: $spacing-none; }\n .mr1-m { margin-right: $spacing-extra-small; }\n .mr2-m { margin-right: $spacing-small; }\n .mr3-m { margin-right: $spacing-medium; }\n .mr4-m { margin-right: $spacing-large; }\n .mr5-m { margin-right: $spacing-extra-large; }\n .mr6-m { margin-right: $spacing-extra-extra-large; }\n .mr7-m { margin-right: $spacing-extra-extra-extra-large; }\n\n .mb0-m { margin-bottom: $spacing-none; }\n .mb1-m { margin-bottom: $spacing-extra-small; }\n .mb2-m { margin-bottom: $spacing-small; }\n .mb3-m { margin-bottom: $spacing-medium; }\n .mb4-m { margin-bottom: $spacing-large; }\n .mb5-m { margin-bottom: $spacing-extra-large; }\n .mb6-m { margin-bottom: $spacing-extra-extra-large; }\n .mb7-m { margin-bottom: $spacing-extra-extra-extra-large; }\n\n .mt0-m { margin-top: $spacing-none; }\n .mt1-m { margin-top: $spacing-extra-small; }\n .mt2-m { margin-top: $spacing-small; }\n .mt3-m { margin-top: $spacing-medium; }\n .mt4-m { margin-top: $spacing-large; }\n .mt5-m { margin-top: $spacing-extra-large; }\n .mt6-m { margin-top: $spacing-extra-extra-large; }\n .mt7-m { margin-top: $spacing-extra-extra-extra-large; }\n\n .mv0-m {\n margin-top: $spacing-none;\n margin-bottom: $spacing-none;\n }\n .mv1-m {\n margin-top: $spacing-extra-small;\n margin-bottom: $spacing-extra-small;\n }\n .mv2-m {\n margin-top: $spacing-small;\n margin-bottom: $spacing-small;\n }\n .mv3-m {\n margin-top: $spacing-medium;\n margin-bottom: $spacing-medium;\n }\n .mv4-m {\n margin-top: $spacing-large;\n margin-bottom: $spacing-large;\n }\n .mv5-m {\n margin-top: $spacing-extra-large;\n margin-bottom: $spacing-extra-large;\n }\n .mv6-m {\n margin-top: $spacing-extra-extra-large;\n margin-bottom: $spacing-extra-extra-large;\n }\n .mv7-m {\n margin-top: $spacing-extra-extra-extra-large;\n margin-bottom: $spacing-extra-extra-extra-large;\n }\n\n .mh0-m {\n margin-left: $spacing-none;\n margin-right: $spacing-none;\n }\n .mh1-m {\n margin-left: $spacing-extra-small;\n margin-right: $spacing-extra-small;\n }\n .mh2-m {\n margin-left: $spacing-small;\n margin-right: $spacing-small;\n }\n .mh3-m {\n margin-left: $spacing-medium;\n margin-right: $spacing-medium;\n }\n .mh4-m {\n margin-left: $spacing-large;\n margin-right: $spacing-large;\n }\n .mh5-m {\n margin-left: $spacing-extra-large;\n margin-right: $spacing-extra-large;\n }\n .mh6-m {\n margin-left: $spacing-extra-extra-large;\n margin-right: $spacing-extra-extra-large;\n }\n .mh7-m {\n margin-left: $spacing-extra-extra-extra-large;\n margin-right: $spacing-extra-extra-extra-large;\n }\n\n}\n\n@media #{$breakpoint-large} {\n .pa0-l { padding: $spacing-none; }\n .pa1-l { padding: $spacing-extra-small; }\n .pa2-l { padding: $spacing-small; }\n .pa3-l { padding: $spacing-medium; }\n .pa4-l { padding: $spacing-large; }\n .pa5-l { padding: $spacing-extra-large; }\n .pa6-l { padding: $spacing-extra-extra-large; }\n .pa7-l { padding: $spacing-extra-extra-extra-large; }\n\n .pl0-l { padding-left: $spacing-none; }\n .pl1-l { padding-left: $spacing-extra-small; }\n .pl2-l { padding-left: $spacing-small; }\n .pl3-l { padding-left: $spacing-medium; }\n .pl4-l { padding-left: $spacing-large; }\n .pl5-l { padding-left: $spacing-extra-large; }\n .pl6-l { padding-left: $spacing-extra-extra-large; }\n .pl7-l { padding-left: $spacing-extra-extra-extra-large; }\n\n .pr0-l { padding-right: $spacing-none; }\n .pr1-l { padding-right: $spacing-extra-small; }\n .pr2-l { padding-right: $spacing-small; }\n .pr3-l { padding-right: $spacing-medium; }\n .pr4-l { padding-right: $spacing-large; }\n .pr5-l { padding-right: $spacing-extra-large; }\n .pr6-l { padding-right: $spacing-extra-extra-large; }\n .pr7-l { padding-right: $spacing-extra-extra-extra-large; }\n\n .pb0-l { padding-bottom: $spacing-none; }\n .pb1-l { padding-bottom: $spacing-extra-small; }\n .pb2-l { padding-bottom: $spacing-small; }\n .pb3-l { padding-bottom: $spacing-medium; }\n .pb4-l { padding-bottom: $spacing-large; }\n .pb5-l { padding-bottom: $spacing-extra-large; }\n .pb6-l { padding-bottom: $spacing-extra-extra-large; }\n .pb7-l { padding-bottom: $spacing-extra-extra-extra-large; }\n\n .pt0-l { padding-top: $spacing-none; }\n .pt1-l { padding-top: $spacing-extra-small; }\n .pt2-l { padding-top: $spacing-small; }\n .pt3-l { padding-top: $spacing-medium; }\n .pt4-l { padding-top: $spacing-large; }\n .pt5-l { padding-top: $spacing-extra-large; }\n .pt6-l { padding-top: $spacing-extra-extra-large; }\n .pt7-l { padding-top: $spacing-extra-extra-extra-large; }\n\n .pv0-l {\n padding-top: $spacing-none;\n padding-bottom: $spacing-none;\n }\n .pv1-l {\n padding-top: $spacing-extra-small;\n padding-bottom: $spacing-extra-small;\n }\n .pv2-l {\n padding-top: $spacing-small;\n padding-bottom: $spacing-small;\n }\n .pv3-l {\n padding-top: $spacing-medium;\n padding-bottom: $spacing-medium;\n }\n .pv4-l {\n padding-top: $spacing-large;\n padding-bottom: $spacing-large;\n }\n .pv5-l {\n padding-top: $spacing-extra-large;\n padding-bottom: $spacing-extra-large;\n }\n .pv6-l {\n padding-top: $spacing-extra-extra-large;\n padding-bottom: $spacing-extra-extra-large;\n }\n .pv7-l {\n padding-top: $spacing-extra-extra-extra-large;\n padding-bottom: $spacing-extra-extra-extra-large;\n }\n\n .ph0-l {\n padding-left: $spacing-none;\n padding-right: $spacing-none;\n }\n .ph1-l {\n padding-left: $spacing-extra-small;\n padding-right: $spacing-extra-small;\n }\n .ph2-l {\n padding-left: $spacing-small;\n padding-right: $spacing-small;\n }\n .ph3-l {\n padding-left: $spacing-medium;\n padding-right: $spacing-medium;\n }\n .ph4-l {\n padding-left: $spacing-large;\n padding-right: $spacing-large;\n }\n .ph5-l {\n padding-left: $spacing-extra-large;\n padding-right: $spacing-extra-large;\n }\n .ph6-l {\n padding-left: $spacing-extra-extra-large;\n padding-right: $spacing-extra-extra-large;\n }\n .ph7-l {\n padding-left: $spacing-extra-extra-extra-large;\n padding-right: $spacing-extra-extra-extra-large;\n }\n\n .ma0-l { margin: $spacing-none; }\n .ma1-l { margin: $spacing-extra-small; }\n .ma2-l { margin: $spacing-small; }\n .ma3-l { margin: $spacing-medium; }\n .ma4-l { margin: $spacing-large; }\n .ma5-l { margin: $spacing-extra-large; }\n .ma6-l { margin: $spacing-extra-extra-large; }\n .ma7-l { margin: $spacing-extra-extra-extra-large; }\n\n .ml0-l { margin-left: $spacing-none; }\n .ml1-l { margin-left: $spacing-extra-small; }\n .ml2-l { margin-left: $spacing-small; }\n .ml3-l { margin-left: $spacing-medium; }\n .ml4-l { margin-left: $spacing-large; }\n .ml5-l { margin-left: $spacing-extra-large; }\n .ml6-l { margin-left: $spacing-extra-extra-large; }\n .ml7-l { margin-left: $spacing-extra-extra-extra-large; }\n\n .mr0-l { margin-right: $spacing-none; }\n .mr1-l { margin-right: $spacing-extra-small; }\n .mr2-l { margin-right: $spacing-small; }\n .mr3-l { margin-right: $spacing-medium; }\n .mr4-l { margin-right: $spacing-large; }\n .mr5-l { margin-right: $spacing-extra-large; }\n .mr6-l { margin-right: $spacing-extra-extra-large; }\n .mr7-l { margin-right: $spacing-extra-extra-extra-large; }\n\n .mb0-l { margin-bottom: $spacing-none; }\n .mb1-l { margin-bottom: $spacing-extra-small; }\n .mb2-l { margin-bottom: $spacing-small; }\n .mb3-l { margin-bottom: $spacing-medium; }\n .mb4-l { margin-bottom: $spacing-large; }\n .mb5-l { margin-bottom: $spacing-extra-large; }\n .mb6-l { margin-bottom: $spacing-extra-extra-large; }\n .mb7-l { margin-bottom: $spacing-extra-extra-extra-large; }\n\n .mt0-l { margin-top: $spacing-none; }\n .mt1-l { margin-top: $spacing-extra-small; }\n .mt2-l { margin-top: $spacing-small; }\n .mt3-l { margin-top: $spacing-medium; }\n .mt4-l { margin-top: $spacing-large; }\n .mt5-l { margin-top: $spacing-extra-large; }\n .mt6-l { margin-top: $spacing-extra-extra-large; }\n .mt7-l { margin-top: $spacing-extra-extra-extra-large; }\n\n .mv0-l {\n margin-top: $spacing-none;\n margin-bottom: $spacing-none;\n }\n .mv1-l {\n margin-top: $spacing-extra-small;\n margin-bottom: $spacing-extra-small;\n }\n .mv2-l {\n margin-top: $spacing-small;\n margin-bottom: $spacing-small;\n }\n .mv3-l {\n margin-top: $spacing-medium;\n margin-bottom: $spacing-medium;\n }\n .mv4-l {\n margin-top: $spacing-large;\n margin-bottom: $spacing-large;\n }\n .mv5-l {\n margin-top: $spacing-extra-large;\n margin-bottom: $spacing-extra-large;\n }\n .mv6-l {\n margin-top: $spacing-extra-extra-large;\n margin-bottom: $spacing-extra-extra-large;\n }\n .mv7-l {\n margin-top: $spacing-extra-extra-extra-large;\n margin-bottom: $spacing-extra-extra-extra-large;\n }\n\n .mh0-l {\n margin-left: $spacing-none;\n margin-right: $spacing-none;\n }\n .mh1-l {\n margin-left: $spacing-extra-small;\n margin-right: $spacing-extra-small;\n }\n .mh2-l {\n margin-left: $spacing-small;\n margin-right: $spacing-small;\n }\n .mh3-l {\n margin-left: $spacing-medium;\n margin-right: $spacing-medium;\n }\n .mh4-l {\n margin-left: $spacing-large;\n margin-right: $spacing-large;\n }\n .mh5-l {\n margin-left: $spacing-extra-large;\n margin-right: $spacing-extra-large;\n }\n .mh6-l {\n margin-left: $spacing-extra-extra-large;\n margin-right: $spacing-extra-extra-large;\n }\n .mh7-l {\n margin-left: $spacing-extra-extra-extra-large;\n margin-right: $spacing-extra-extra-extra-large;\n }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n NEGATIVE MARGINS\n\n Base:\n n = negative\n\n Modifiers:\n a = all\n t = top\n r = right\n b = bottom\n l = left\n\n 1 = 1st step in spacing scale\n 2 = 2nd step in spacing scale\n 3 = 3rd step in spacing scale\n 4 = 4th step in spacing scale\n 5 = 5th step in spacing scale\n 6 = 6th step in spacing scale\n 7 = 7th step in spacing scale\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n\n\n.na1 { margin: -$spacing-extra-small; }\n.na2 { margin: -$spacing-small; }\n.na3 { margin: -$spacing-medium; }\n.na4 { margin: -$spacing-large; }\n.na5 { margin: -$spacing-extra-large; }\n.na6 { margin: -$spacing-extra-extra-large; }\n.na7 { margin: -$spacing-extra-extra-extra-large; }\n\n.nl1 { margin-left: -$spacing-extra-small; }\n.nl2 { margin-left: -$spacing-small; }\n.nl3 { margin-left: -$spacing-medium; }\n.nl4 { margin-left: -$spacing-large; }\n.nl5 { margin-left: -$spacing-extra-large; }\n.nl6 { margin-left: -$spacing-extra-extra-large; }\n.nl7 { margin-left: -$spacing-extra-extra-extra-large; }\n\n.nr1 { margin-right: -$spacing-extra-small; }\n.nr2 { margin-right: -$spacing-small; }\n.nr3 { margin-right: -$spacing-medium; }\n.nr4 { margin-right: -$spacing-large; }\n.nr5 { margin-right: -$spacing-extra-large; }\n.nr6 { margin-right: -$spacing-extra-extra-large; }\n.nr7 { margin-right: -$spacing-extra-extra-extra-large; }\n\n.nb1 { margin-bottom: -$spacing-extra-small; }\n.nb2 { margin-bottom: -$spacing-small; }\n.nb3 { margin-bottom: -$spacing-medium; }\n.nb4 { margin-bottom: -$spacing-large; }\n.nb5 { margin-bottom: -$spacing-extra-large; }\n.nb6 { margin-bottom: -$spacing-extra-extra-large; }\n.nb7 { margin-bottom: -$spacing-extra-extra-extra-large; }\n\n.nt1 { margin-top: -$spacing-extra-small; }\n.nt2 { margin-top: -$spacing-small; }\n.nt3 { margin-top: -$spacing-medium; }\n.nt4 { margin-top: -$spacing-large; }\n.nt5 { margin-top: -$spacing-extra-large; }\n.nt6 { margin-top: -$spacing-extra-extra-large; }\n.nt7 { margin-top: -$spacing-extra-extra-extra-large; }\n\n@media #{$breakpoint-not-small} {\n\n .na1-ns { margin: -$spacing-extra-small; }\n .na2-ns { margin: -$spacing-small; }\n .na3-ns { margin: -$spacing-medium; }\n .na4-ns { margin: -$spacing-large; }\n .na5-ns { margin: -$spacing-extra-large; }\n .na6-ns { margin: -$spacing-extra-extra-large; }\n .na7-ns { margin: -$spacing-extra-extra-extra-large; }\n\n .nl1-ns { margin-left: -$spacing-extra-small; }\n .nl2-ns { margin-left: -$spacing-small; }\n .nl3-ns { margin-left: -$spacing-medium; }\n .nl4-ns { margin-left: -$spacing-large; }\n .nl5-ns { margin-left: -$spacing-extra-large; }\n .nl6-ns { margin-left: -$spacing-extra-extra-large; }\n .nl7-ns { margin-left: -$spacing-extra-extra-extra-large; }\n\n .nr1-ns { margin-right: -$spacing-extra-small; }\n .nr2-ns { margin-right: -$spacing-small; }\n .nr3-ns { margin-right: -$spacing-medium; }\n .nr4-ns { margin-right: -$spacing-large; }\n .nr5-ns { margin-right: -$spacing-extra-large; }\n .nr6-ns { margin-right: -$spacing-extra-extra-large; }\n .nr7-ns { margin-right: -$spacing-extra-extra-extra-large; }\n\n .nb1-ns { margin-bottom: -$spacing-extra-small; }\n .nb2-ns { margin-bottom: -$spacing-small; }\n .nb3-ns { margin-bottom: -$spacing-medium; }\n .nb4-ns { margin-bottom: -$spacing-large; }\n .nb5-ns { margin-bottom: -$spacing-extra-large; }\n .nb6-ns { margin-bottom: -$spacing-extra-extra-large; }\n .nb7-ns { margin-bottom: -$spacing-extra-extra-extra-large; }\n\n .nt1-ns { margin-top: -$spacing-extra-small; }\n .nt2-ns { margin-top: -$spacing-small; }\n .nt3-ns { margin-top: -$spacing-medium; }\n .nt4-ns { margin-top: -$spacing-large; }\n .nt5-ns { margin-top: -$spacing-extra-large; }\n .nt6-ns { margin-top: -$spacing-extra-extra-large; }\n .nt7-ns { margin-top: -$spacing-extra-extra-extra-large; }\n\n}\n\n@media #{$breakpoint-medium} {\n .na1-m { margin: -$spacing-extra-small; }\n .na2-m { margin: -$spacing-small; }\n .na3-m { margin: -$spacing-medium; }\n .na4-m { margin: -$spacing-large; }\n .na5-m { margin: -$spacing-extra-large; }\n .na6-m { margin: -$spacing-extra-extra-large; }\n .na7-m { margin: -$spacing-extra-extra-extra-large; }\n\n .nl1-m { margin-left: -$spacing-extra-small; }\n .nl2-m { margin-left: -$spacing-small; }\n .nl3-m { margin-left: -$spacing-medium; }\n .nl4-m { margin-left: -$spacing-large; }\n .nl5-m { margin-left: -$spacing-extra-large; }\n .nl6-m { margin-left: -$spacing-extra-extra-large; }\n .nl7-m { margin-left: -$spacing-extra-extra-extra-large; }\n\n .nr1-m { margin-right: -$spacing-extra-small; }\n .nr2-m { margin-right: -$spacing-small; }\n .nr3-m { margin-right: -$spacing-medium; }\n .nr4-m { margin-right: -$spacing-large; }\n .nr5-m { margin-right: -$spacing-extra-large; }\n .nr6-m { margin-right: -$spacing-extra-extra-large; }\n .nr7-m { margin-right: -$spacing-extra-extra-extra-large; }\n\n .nb1-m { margin-bottom: -$spacing-extra-small; }\n .nb2-m { margin-bottom: -$spacing-small; }\n .nb3-m { margin-bottom: -$spacing-medium; }\n .nb4-m { margin-bottom: -$spacing-large; }\n .nb5-m { margin-bottom: -$spacing-extra-large; }\n .nb6-m { margin-bottom: -$spacing-extra-extra-large; }\n .nb7-m { margin-bottom: -$spacing-extra-extra-extra-large; }\n\n .nt1-m { margin-top: -$spacing-extra-small; }\n .nt2-m { margin-top: -$spacing-small; }\n .nt3-m { margin-top: -$spacing-medium; }\n .nt4-m { margin-top: -$spacing-large; }\n .nt5-m { margin-top: -$spacing-extra-large; }\n .nt6-m { margin-top: -$spacing-extra-extra-large; }\n .nt7-m { margin-top: -$spacing-extra-extra-extra-large; }\n\n}\n\n@media #{$breakpoint-large} {\n .na1-l { margin: -$spacing-extra-small; }\n .na2-l { margin: -$spacing-small; }\n .na3-l { margin: -$spacing-medium; }\n .na4-l { margin: -$spacing-large; }\n .na5-l { margin: -$spacing-extra-large; }\n .na6-l { margin: -$spacing-extra-extra-large; }\n .na7-l { margin: -$spacing-extra-extra-extra-large; }\n\n .nl1-l { margin-left: -$spacing-extra-small; }\n .nl2-l { margin-left: -$spacing-small; }\n .nl3-l { margin-left: -$spacing-medium; }\n .nl4-l { margin-left: -$spacing-large; }\n .nl5-l { margin-left: -$spacing-extra-large; }\n .nl6-l { margin-left: -$spacing-extra-extra-large; }\n .nl7-l { margin-left: -$spacing-extra-extra-extra-large; }\n\n .nr1-l { margin-right: -$spacing-extra-small; }\n .nr2-l { margin-right: -$spacing-small; }\n .nr3-l { margin-right: -$spacing-medium; }\n .nr4-l { margin-right: -$spacing-large; }\n .nr5-l { margin-right: -$spacing-extra-large; }\n .nr6-l { margin-right: -$spacing-extra-extra-large; }\n .nr7-l { margin-right: -$spacing-extra-extra-extra-large; }\n\n .nb1-l { margin-bottom: -$spacing-extra-small; }\n .nb2-l { margin-bottom: -$spacing-small; }\n .nb3-l { margin-bottom: -$spacing-medium; }\n .nb4-l { margin-bottom: -$spacing-large; }\n .nb5-l { margin-bottom: -$spacing-extra-large; }\n .nb6-l { margin-bottom: -$spacing-extra-extra-large; }\n .nb7-l { margin-bottom: -$spacing-extra-extra-extra-large; }\n\n .nt1-l { margin-top: -$spacing-extra-small; }\n .nt2-l { margin-top: -$spacing-small; }\n .nt3-l { margin-top: -$spacing-medium; }\n .nt4-l { margin-top: -$spacing-large; }\n .nt5-l { margin-top: -$spacing-extra-large; }\n .nt6-l { margin-top: -$spacing-extra-extra-large; }\n .nt7-l { margin-top: -$spacing-extra-extra-extra-large; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n TABLES\n Docs: http://tachyons.io/docs/elements/tables/\n\n*/\n\n.collapse {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\n.striped--light-silver:nth-child(odd) {\n background-color: $light-silver;\n}\n\n.striped--moon-gray:nth-child(odd) {\n background-color: $moon-gray;\n}\n\n.striped--light-gray:nth-child(odd) {\n background-color: $light-gray;\n}\n\n.striped--near-white:nth-child(odd) {\n background-color: $near-white;\n}\n\n.stripe-light:nth-child(odd) {\n background-color: $white-10;\n}\n\n.stripe-dark:nth-child(odd) {\n background-color: $black-10;\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n TEXT DECORATION\n Docs: http://tachyons.io/docs/typography/text-decoration/\n\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.strike { text-decoration: line-through; }\n.underline { text-decoration: underline; }\n.no-underline { text-decoration: none; }\n\n\n@media #{$breakpoint-not-small} {\n .strike-ns { text-decoration: line-through; }\n .underline-ns { text-decoration: underline; }\n .no-underline-ns { text-decoration: none; }\n}\n\n@media #{$breakpoint-medium} {\n .strike-m { text-decoration: line-through; }\n .underline-m { text-decoration: underline; }\n .no-underline-m { text-decoration: none; }\n}\n\n@media #{$breakpoint-large} {\n .strike-l { text-decoration: line-through; }\n .underline-l { text-decoration: underline; }\n .no-underline-l { text-decoration: none; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n TEXT ALIGN\n Docs: http://tachyons.io/docs/typography/text-align/\n\n Base\n t = text-align\n\n Modifiers\n l = left\n r = right\n c = center\n j = justify\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.tl { text-align: left; }\n.tr { text-align: right; }\n.tc { text-align: center; }\n.tj { text-align: justify; }\n\n@media #{$breakpoint-not-small} {\n .tl-ns { text-align: left; }\n .tr-ns { text-align: right; }\n .tc-ns { text-align: center; }\n .tj-ns { text-align: justify; }\n}\n\n@media #{$breakpoint-medium} {\n .tl-m { text-align: left; }\n .tr-m { text-align: right; }\n .tc-m { text-align: center; }\n .tj-m { text-align: justify; }\n}\n\n@media #{$breakpoint-large} {\n .tl-l { text-align: left; }\n .tr-l { text-align: right; }\n .tc-l { text-align: center; }\n .tj-l { text-align: justify; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n TEXT TRANSFORM\n Docs: http://tachyons.io/docs/typography/text-transform/\n\n Base:\n tt = text-transform\n\n Modifiers\n c = capitalize\n l = lowercase\n u = uppercase\n n = none\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.ttc { text-transform: capitalize; }\n.ttl { text-transform: lowercase; }\n.ttu { text-transform: uppercase; }\n.ttn { text-transform: none; }\n\n@media #{$breakpoint-not-small} {\n .ttc-ns { text-transform: capitalize; }\n .ttl-ns { text-transform: lowercase; }\n .ttu-ns { text-transform: uppercase; }\n .ttn-ns { text-transform: none; }\n}\n\n@media #{$breakpoint-medium} {\n .ttc-m { text-transform: capitalize; }\n .ttl-m { text-transform: lowercase; }\n .ttu-m { text-transform: uppercase; }\n .ttn-m { text-transform: none; }\n}\n\n@media #{$breakpoint-large} {\n .ttc-l { text-transform: capitalize; }\n .ttl-l { text-transform: lowercase; }\n .ttu-l { text-transform: uppercase; }\n .ttn-l { text-transform: none; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n TYPE SCALE\n Docs: http://tachyons.io/docs/typography/scale/\n\n Base:\n f = font-size\n\n Modifiers\n 1 = 1st step in size scale\n 2 = 2nd step in size scale\n 3 = 3rd step in size scale\n 4 = 4th step in size scale\n 5 = 5th step in size scale\n 6 = 6th step in size scale\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n*/\n\n/*\n * For Hero/Marketing Titles\n *\n * These generally are too large for mobile\n * so be careful using them on smaller screens.\n * */\n\n.f-6,\n.f-headline {\n font-size: $font-size-headline;\n}\n.f-5,\n.f-subheadline {\n font-size: $font-size-subheadline;\n}\n\n\n/* Type Scale */\n\n\n.f1 { font-size: $font-size-1; }\n.f2 { font-size: $font-size-2; }\n.f3 { font-size: $font-size-3; }\n.f4 { font-size: $font-size-4; }\n.f5 { font-size: $font-size-5; }\n.f6 { font-size: $font-size-6; }\n.f7 { font-size: $font-size-7; }\n\n@media #{$breakpoint-not-small}{\n .f-6-ns,\n .f-headline-ns { font-size: $font-size-headline; }\n .f-5-ns,\n .f-subheadline-ns { font-size: $font-size-subheadline; }\n .f1-ns { font-size: $font-size-1; }\n .f2-ns { font-size: $font-size-2; }\n .f3-ns { font-size: $font-size-3; }\n .f4-ns { font-size: $font-size-4; }\n .f5-ns { font-size: $font-size-5; }\n .f6-ns { font-size: $font-size-6; }\n .f7-ns { font-size: $font-size-7; }\n}\n\n@media #{$breakpoint-medium} {\n .f-6-m,\n .f-headline-m { font-size: $font-size-headline; }\n .f-5-m,\n .f-subheadline-m { font-size: $font-size-subheadline; }\n .f1-m { font-size: $font-size-1; }\n .f2-m { font-size: $font-size-2; }\n .f3-m { font-size: $font-size-3; }\n .f4-m { font-size: $font-size-4; }\n .f5-m { font-size: $font-size-5; }\n .f6-m { font-size: $font-size-6; }\n .f7-m { font-size: $font-size-7; }\n}\n\n@media #{$breakpoint-large} {\n .f-6-l,\n .f-headline-l {\n font-size: $font-size-headline;\n }\n .f-5-l,\n .f-subheadline-l {\n font-size: $font-size-subheadline;\n }\n .f1-l { font-size: $font-size-1; }\n .f2-l { font-size: $font-size-2; }\n .f3-l { font-size: $font-size-3; }\n .f4-l { font-size: $font-size-4; }\n .f5-l { font-size: $font-size-5; }\n .f6-l { font-size: $font-size-6; }\n .f7-l { font-size: $font-size-7; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n TYPOGRAPHY\n http://tachyons.io/docs/typography/measure/\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n\n\n/* Measure is limited to ~66 characters */\n.measure {\n max-width: $measure;\n}\n\n/* Measure is limited to ~80 characters */\n.measure-wide {\n max-width: $measure-wide;\n}\n\n/* Measure is limited to ~45 characters */\n.measure-narrow {\n max-width: $measure-narrow;\n}\n\n/* Book paragraph style - paragraphs are indented with no vertical spacing. */\n.indent {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.small-caps {\n font-variant: small-caps;\n}\n\n/* Combine this class with a width to truncate text (or just leave as is to truncate at width of containing element. */\n\n.truncate {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n@media #{$breakpoint-not-small} {\n .measure-ns {\n max-width: $measure;\n }\n .measure-wide-ns {\n max-width: $measure-wide;\n }\n .measure-narrow-ns {\n max-width: $measure-narrow;\n }\n .indent-ns {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n }\n .small-caps-ns {\n font-variant: small-caps;\n }\n .truncate-ns {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n@media #{$breakpoint-medium} {\n .measure-m {\n max-width: $measure;\n }\n .measure-wide-m {\n max-width: $measure-wide;\n }\n .measure-narrow-m {\n max-width: $measure-narrow;\n }\n .indent-m {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n }\n .small-caps-m {\n font-variant: small-caps;\n }\n .truncate-m {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n@media #{$breakpoint-large} {\n .measure-l {\n max-width: $measure;\n }\n .measure-wide-l {\n max-width: $measure-wide;\n }\n .measure-narrow-l {\n max-width: $measure-narrow;\n }\n .indent-l {\n text-indent: 1em;\n margin-top: 0;\n margin-bottom: 0;\n }\n .small-caps-l {\n font-variant: small-caps;\n }\n .truncate-l {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n UTILITIES\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n/* Equivalent to .overflow-y-scroll */\n.overflow-container {\n overflow-y: scroll;\n}\n\n.center {\n margin-right: auto;\n margin-left: auto;\n}\n\n.mr-auto { margin-right: auto; }\n.ml-auto { margin-left: auto; }\n\n@media #{$breakpoint-not-small}{\n .center-ns {\n margin-right: auto;\n margin-left: auto;\n }\n .mr-auto-ns { margin-right: auto; }\n .ml-auto-ns { margin-left: auto; }\n}\n\n@media #{$breakpoint-medium}{\n .center-m {\n margin-right: auto;\n margin-left: auto;\n }\n .mr-auto-m { margin-right: auto; }\n .ml-auto-m { margin-left: auto; }\n}\n\n@media #{$breakpoint-large}{\n .center-l {\n margin-right: auto;\n margin-left: auto;\n }\n .mr-auto-l { margin-right: auto; }\n .ml-auto-l { margin-left: auto; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n VISIBILITY\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n\n/*\n Text that is hidden but accessible\n Ref: http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\n*/\n\n.clip {\n position: fixed !important;\n _position: absolute !important;\n clip: rect(1px 1px 1px 1px); /* IE6, IE7 */\n clip: rect(1px, 1px, 1px, 1px);\n}\n\n@media #{$breakpoint-not-small} {\n .clip-ns {\n position: fixed !important;\n _position: absolute !important;\n clip: rect(1px 1px 1px 1px); /* IE6, IE7 */\n clip: rect(1px, 1px, 1px, 1px);\n }\n}\n\n@media #{$breakpoint-medium} {\n .clip-m {\n position: fixed !important;\n _position: absolute !important;\n clip: rect(1px 1px 1px 1px); /* IE6, IE7 */\n clip: rect(1px, 1px, 1px, 1px);\n }\n}\n\n@media #{$breakpoint-large} {\n .clip-l {\n position: fixed !important;\n _position: absolute !important;\n clip: rect(1px 1px 1px 1px); /* IE6, IE7 */\n clip: rect(1px, 1px, 1px, 1px);\n }\n}\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n WHITE SPACE\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n\n.ws-normal { white-space: normal; }\n.nowrap { white-space: nowrap; }\n.pre { white-space: pre; }\n\n@media #{$breakpoint-not-small} {\n .ws-normal-ns { white-space: normal; }\n .nowrap-ns { white-space: nowrap; }\n .pre-ns { white-space: pre; }\n}\n\n@media #{$breakpoint-medium} {\n .ws-normal-m { white-space: normal; }\n .nowrap-m { white-space: nowrap; }\n .pre-m { white-space: pre; }\n}\n\n@media #{$breakpoint-large} {\n .ws-normal-l { white-space: normal; }\n .nowrap-l { white-space: nowrap; }\n .pre-l { white-space: pre; }\n}\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n VERTICAL ALIGN\n\n Media Query Extensions:\n -ns = not-small\n -m = medium\n -l = large\n\n*/\n\n.v-base { vertical-align: baseline; }\n.v-mid { vertical-align: middle; }\n.v-top { vertical-align: top; }\n.v-btm { vertical-align: bottom; }\n\n@media #{$breakpoint-not-small} {\n .v-base-ns { vertical-align: baseline; }\n .v-mid-ns { vertical-align: middle; }\n .v-top-ns { vertical-align: top; }\n .v-btm-ns { vertical-align: bottom; }\n}\n\n@media #{$breakpoint-medium} {\n .v-base-m { vertical-align: baseline; }\n .v-mid-m { vertical-align: middle; }\n .v-top-m { vertical-align: top; }\n .v-btm-m { vertical-align: bottom; }\n}\n\n@media #{$breakpoint-large} {\n .v-base-l { vertical-align: baseline; }\n .v-mid-l { vertical-align: middle; }\n .v-top-l { vertical-align: top; }\n .v-btm-l { vertical-align: bottom; }\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n HOVER EFFECTS\n Docs: http://tachyons.io/docs/themes/hovers/\n\n - Dim\n - Glow\n - Hide Child\n - Underline text\n - Grow\n - Pointer\n - Shadow\n\n*/\n\n/*\n\n Dim element on hover by adding the dim class.\n\n*/\n.dim {\n opacity: 1;\n transition: opacity .15s ease-in;\n}\n.dim:hover,\n.dim:focus {\n opacity: .5;\n transition: opacity .15s ease-in;\n}\n.dim:active {\n opacity: .8; transition: opacity .15s ease-out;\n}\n\n/*\n\n Animate opacity to 100% on hover by adding the glow class.\n\n*/\n.glow {\n transition: opacity .15s ease-in;\n}\n.glow:hover,\n.glow:focus {\n opacity: 1;\n transition: opacity .15s ease-in;\n}\n\n/*\n\n Hide child & reveal on hover:\n\n Put the hide-child class on a parent element and any nested element with the\n child class will be hidden and displayed on hover or focus.\n\n
      \n
      Hidden until hover or focus
      \n
      Hidden until hover or focus
      \n
      Hidden until hover or focus
      \n
      Hidden until hover or focus
      \n
      \n*/\n\n.hide-child .child {\n opacity: 0;\n transition: opacity .15s ease-in;\n}\n.hide-child:hover .child,\n.hide-child:focus .child,\n.hide-child:active .child {\n opacity: 1;\n transition: opacity .15s ease-in;\n}\n\n.underline-hover:hover,\n.underline-hover:focus {\n text-decoration: underline;\n}\n\n/* Can combine this with overflow-hidden to make background images grow on hover\n * even if you are using background-size: cover */\n\n.grow {\n -moz-osx-font-smoothing: grayscale;\n backface-visibility: hidden;\n transform: translateZ(0);\n transition: transform 0.25s ease-out;\n}\n\n.grow:hover,\n.grow:focus {\n transform: scale(1.05);\n}\n\n.grow:active {\n transform: scale(.90);\n}\n\n.grow-large {\n -moz-osx-font-smoothing: grayscale;\n backface-visibility: hidden;\n transform: translateZ(0);\n transition: transform .25s ease-in-out;\n}\n\n.grow-large:hover,\n.grow-large:focus {\n transform: scale(1.2);\n}\n\n.grow-large:active {\n transform: scale(.95);\n}\n\n/* Add pointer on hover */\n\n.pointer:hover {\n cursor: pointer;\n}\n\n/*\n Add shadow on hover.\n\n Performant box-shadow animation pattern from\n http://tobiasahlin.com/blog/how-to-animate-box-shadow/\n*/\n\n.shadow-hover {\n cursor: pointer;\n position: relative;\n transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);\n}\n\n.shadow-hover::after {\n content: '';\n box-shadow: 0px 0px 16px 2px rgba( 0, 0, 0, .2 );\n border-radius: inherit;\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n transition: opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);\n}\n\n.shadow-hover:hover::after,\n.shadow-hover:focus::after {\n opacity: 1;\n}\n\n/* Combine with classes in skins and skins-pseudo for\n * many different transition possibilities. */\n\n.bg-animate,\n.bg-animate:hover,\n.bg-animate:focus {\n transition: background-color .15s ease-in-out;\n}\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n Z-INDEX\n\n Base\n z = z-index\n\n Modifiers\n -0 = literal value 0\n -1 = literal value 1\n -2 = literal value 2\n -3 = literal value 3\n -4 = literal value 4\n -5 = literal value 5\n -999 = literal value 999\n -9999 = literal value 9999\n\n -max = largest accepted z-index value as integer\n\n -inherit = string value inherit\n -initial = string value initial\n -unset = string value unset\n\n MDN: https://developer.mozilla.org/en/docs/Web/CSS/z-index\n Spec: http://www.w3.org/TR/CSS2/zindex.html\n Articles:\n https://philipwalton.com/articles/what-no-one-told-you-about-z-index/\n\n Tips on extending:\n There might be a time worth using negative z-index values.\n Or if you are using tachyons with another project, you might need to\n adjust these values to suit your needs.\n\n*/\n\n.z-0 { z-index: 0; }\n.z-1 { z-index: 1; }\n.z-2 { z-index: 2; }\n.z-3 { z-index: 3; }\n.z-4 { z-index: 4; }\n.z-5 { z-index: 5; }\n\n.z-999 { z-index: 999; }\n.z-9999 { z-index: 9999; }\n\n.z-max {\n z-index: 2147483647;\n}\n\n.z-inherit { z-index: inherit; }\n.z-initial { z-index: initial; }\n.z-unset { z-index: unset; }\n\n","\n// Converted Variables\n\n\n// Custom Media Query Variables\n\n\n/*\n\n NESTED\n Tachyons module for styling nested elements\n that are generated by a cms.\n\n*/\n\n.nested-copy-line-height p,\n.nested-copy-line-height ul,\n.nested-copy-line-height ol {\n line-height: $line-height-copy;\n}\n\n.nested-headline-line-height h1,\n.nested-headline-line-height h2,\n.nested-headline-line-height h3,\n.nested-headline-line-height h4,\n.nested-headline-line-height h5,\n.nested-headline-line-height h6 {\n line-height: $line-height-title;\n}\n\n.nested-list-reset ul,\n.nested-list-reset ol {\n padding-left: 0;\n margin-left: 0;\n list-style-type: none;\n}\n\n.nested-copy-indent p+p {\n text-indent: $letter-spacing-1;\n margin-top: $spacing-none;\n margin-bottom: $spacing-none;\n}\n\n.nested-copy-seperator p+p {\n margin-top: $spacing-copy-separator;\n}\n\n.nested-img img {\n width: 100%;\n max-width: 100%;\n display: block;\n}\n\n.nested-links a {\n color: $blue;\n transition: color .15s ease-in;\n}\n\n.nested-links a:hover,\n.nested-links a:focus {\n color: $light-blue;\n transition: color .15s ease-in;\n}\n",".wrapper\n{\n width: 100%;\n max-width: 1460px;\n margin: 0 auto;\n padding: 0 20px;\n box-sizing: border-box;\n}\n\n.opblock-tag-section\n{\n display: flex;\n flex-direction: column;\n}\n\n.try-out.btn-group {\n padding: 0;\n display: flex;\n flex: 0.1 2 auto;\n}\n\n.try-out__btn {\n margin-left: 1.25rem;\n}\n\n.opblock-tag\n{\n display: flex;\n align-items: center;\n\n padding: 10px 20px 10px 10px;\n\n cursor: pointer;\n transition: all .2s;\n\n border-bottom: 1px solid rgba($opblock-tag-border-bottom-color, .3);\n\n &:hover\n {\n background: rgba($opblock-tag-background-color-hover,.02);\n }\n}\n\n@mixin method($color)\n{\n border-color: $color;\n background: rgba($color, .1);\n\n .opblock-summary-method\n {\n background: $color;\n }\n\n .opblock-summary\n {\n border-color: $color;\n }\n\n .tab-header .tab-item.active h4 span:after\n {\n background: $color;\n }\n}\n\n\n\n\n.opblock-tag\n{\n font-size: 24px;\n\n margin: 0 0 5px 0;\n\n @include text_headline();\n\n &.no-desc\n {\n span\n {\n flex: 1;\n }\n }\n\n svg\n {\n transition: all .4s;\n }\n\n small\n {\n font-size: 14px;\n font-weight: normal;\n\n flex: 2;\n\n padding: 0 10px;\n\n @include text_body();\n }\n\n >div\n {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1 1 150px;\n font-weight: 400;\n }\n\n @media (max-width: 640px) {\n small\n {\n flex: 1;\n }\n\n >div\n {\n flex: 1;\n }\n }\n\n .info__externaldocs\n {\n text-align: right;\n }\n}\n\n.parameter__type\n{\n font-size: 12px;\n\n padding: 5px 0;\n\n @include text_code();\n}\n\n.parameter-controls {\n margin-top: 0.75em;\n}\n\n.examples {\n &__title {\n display: block;\n font-size: 1.1em;\n font-weight: bold;\n margin-bottom: 0.75em;\n }\n\n &__section {\n margin-top: 1.5em;\n }\n &__section-header {\n font-weight: bold;\n font-size: .9rem;\n margin-bottom: .5rem;\n // color: #555;\n }\n}\n\n.examples-select {\n margin-bottom: .75em;\n display: inline-block;\n .examples-select-element {\n width: 100%;\n }\n &__section-label {\n font-weight: bold;\n font-size: .9rem;\n margin-right: .5rem;\n }\n}\n\n.example {\n &__section {\n margin-top: 1.5em;\n }\n &__section-header {\n font-weight: bold;\n font-size: .9rem;\n margin-bottom: .5rem;\n // color: #555;\n }\n}\n\n.view-line-link\n{\n position: relative;\n top: 3px;\n\n width: 20px;\n margin: 0 5px;\n\n cursor: pointer;\n transition: all .5s;\n}\n\n\n\n.opblock\n{\n margin: 0 0 15px 0;\n\n border: 1px solid $opblock-border-color;\n border-radius: 4px;\n box-shadow: 0 0 3px rgba($opblock-box-shadow-color,.19);\n\n .tab-header\n {\n display: flex;\n\n flex: 1;\n\n .tab-item\n {\n padding: 0 40px;\n\n cursor: pointer;\n\n &:first-of-type\n {\n padding: 0 40px 0 0;\n }\n &.active\n {\n h4\n {\n span\n {\n position: relative;\n\n\n &:after\n {\n position: absolute;\n bottom: -15px;\n left: 50%;\n\n width: 120%;\n height: 4px;\n\n content: '';\n transform: translateX(-50%);\n\n background: $opblock-tab-header-tab-item-active-h4-span-after-background-color;\n }\n }\n }\n }\n }\n }\n\n\n &.is-open\n {\n .opblock-summary\n {\n border-bottom: 1px solid $opblock-isopen-summary-border-bottom-color;\n }\n }\n\n .opblock-section-header\n {\n display: flex;\n align-items: center;\n\n padding: 8px 20px;\n\n min-height: 50px;\n\n background: rgba($opblock-isopen-section-header-background-color,.8);\n box-shadow: 0 1px 2px rgba($opblock-isopen-section-header-box-shadow-color,.1);\n\n >label\n {\n font-size: 12px;\n font-weight: bold;\n\n display: flex;\n align-items: center;\n\n margin: 0;\n margin-left: auto;\n\n @include text_headline();\n\n >span\n {\n padding: 0 10px 0 0;\n }\n }\n\n h4\n {\n font-size: 14px;\n\n flex: 1;\n\n margin: 0;\n\n @include text_headline();\n }\n }\n\n .opblock-summary-method\n {\n font-size: 14px;\n font-weight: bold;\n @media (max-width: 768px) {\n font-size: 12px;\n }\n\n min-width: 80px;\n padding: 6px 0;\n\n text-align: center;\n\n border-radius: 3px;\n background: $opblock-summary-method-background-color;\n text-shadow: 0 1px 0 rgba($opblock-summary-method-text-shadow-color,.1);\n\n @include text_headline($opblock-summary-method-font-color);\n }\n\n .opblock-summary-path,\n .opblock-summary-operation-id,\n .opblock-summary-path__deprecated\n {\n font-size: 16px;\n @media (max-width: 768px) {\n font-size: 12px;\n }\n\n\n display: flex;\n align-items: center;\n\n word-break: break-word;\n\n @include text_code();\n\n }\n\n .opblock-summary-path\n {\n flex-shrink: 1;\n }\n\n @media (max-width: 640px) {\n .opblock-summary-path\n {\n max-width: 100%;\n }\n }\n\n .opblock-summary-path__deprecated\n {\n text-decoration: line-through;\n }\n\n .opblock-summary-operation-id\n {\n font-size: 14px;\n }\n\n .opblock-summary-description\n {\n font-size: 13px;\n\n word-break: break-word;\n\n @include text_body();\n }\n\n .opblock-summary-path-description-wrapper\n {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n gap: 0px 10px;\n\n padding: 0 10px;\n\n width: 100%;\n }\n\n @media (max-width: 550px) {\n .opblock-summary-path-description-wrapper {\n flex-direction: column;\n align-items: flex-start;\n }\n }\n\n .opblock-summary\n {\n display: flex;\n align-items: center;\n\n padding: 5px;\n\n cursor: pointer;\n\n .view-line-link\n {\n position: relative;\n top: 2px;\n\n width: 0;\n margin: 0;\n\n cursor: pointer;\n transition: all .5s;\n }\n\n &:hover\n {\n .view-line-link\n {\n width: 18px;\n margin: 0 5px;\n\n &.copy-to-clipboard {\n width: 24px;\n }\n }\n }\n }\n\n\n\n &.opblock-post\n {\n @include method($_color-post);\n }\n\n &.opblock-put\n {\n @include method($_color-put);\n }\n\n &.opblock-delete\n {\n @include method($_color-delete);\n }\n\n &.opblock-get\n {\n @include method($_color-get);\n }\n\n &.opblock-patch\n {\n @include method($_color-patch);\n }\n\n &.opblock-head\n {\n @include method($_color-head);\n }\n\n &.opblock-options\n {\n @include method($_color-options);\n }\n\n &.opblock-deprecated\n {\n opacity: .6;\n\n @include method($_color-disabled);\n }\n\n .opblock-schemes\n {\n padding: 8px 20px;\n\n .schemes-title\n {\n padding: 0 10px 0 0;\n }\n }\n}\n\n.filter\n{\n .operation-filter-input\n {\n width: 100%;\n margin: 20px 0;\n padding: 10px 10px;\n\n border: 2px solid $operational-filter-input-border-color;\n }\n}\n\n.filter, .download-url-wrapper\n{\n .failed\n {\n color: red;\n }\n\n .loading\n {\n color: #aaa;\n }\n}\n\n.model-example {\n margin-top: 1em;\n}\n\n.tab\n{\n display: flex;\n\n padding: 0;\n\n list-style: none;\n\n li\n {\n font-size: 12px;\n\n min-width: 60px;\n padding: 0;\n\n cursor: pointer;\n\n @include text_headline();\n\n &:first-of-type\n {\n position: relative;\n\n padding-left: 0;\n padding-right: 12px;\n\n &:after\n {\n position: absolute;\n top: 0;\n right: 6px;\n\n width: 1px;\n height: 100%;\n\n content: '';\n\n background: rgba($tab-list-item-first-background-color,.2);\n }\n }\n\n &.active\n {\n font-weight: bold;\n }\n\n button.tablinks\n {\n background: none;\n border: 0;\n padding: 0;\n\n color: inherit;\n font-family: inherit;\n font-weight: inherit;\n }\n }\n}\n\n.opblock-description-wrapper,\n.opblock-external-docs-wrapper,\n.opblock-title_normal\n{\n font-size: 12px;\n\n margin: 0 0 5px 0;\n padding: 15px 20px;\n\n @include text_body();\n\n h4\n {\n font-size: 12px;\n\n margin: 0 0 5px 0;\n\n @include text_body();\n }\n\n p\n {\n font-size: 14px;\n\n margin: 0;\n\n @include text_body();\n }\n}\n\n.opblock-external-docs-wrapper {\n h4 {\n padding-left: 0px;\n }\n}\n\n.execute-wrapper\n{\n padding: 20px;\n\n text-align: right;\n\n .btn\n {\n width: 100%;\n padding: 8px 40px;\n }\n}\n\n.body-param-options\n{\n display: flex;\n flex-direction: column;\n\n .body-param-edit\n {\n padding: 10px 0;\n }\n\n label\n {\n padding: 8px 0;\n select\n {\n margin: 3px 0 0 0;\n }\n }\n}\n\n.responses-inner\n{\n padding: 20px;\n\n h5,\n h4\n {\n font-size: 12px;\n\n margin: 10px 0 5px 0;\n\n @include text_body();\n }\n\n .curl\n {\n overflow-y: auto;\n max-height: 400px;\n min-height: 6em;\n }\n}\n\n.response-col_status\n{\n font-size: 14px;\n\n @include text_body();\n\n .response-undocumented\n {\n font-size: 11px;\n\n @include text_code($response-col-status-undocumented-font-color);\n }\n}\n\n.response-col_links\n{\n padding-left: 2em;\n max-width: 40em;\n font-size: 14px;\n\n @include text_body();\n\n .response-undocumented\n {\n font-size: 11px;\n\n @include text_code($response-col-links-font-color);\n }\n\n .operation-link\n {\n margin-bottom: 1.5em;\n\n .description\n {\n margin-bottom: 0.5em;\n }\n }\n}\n\n.opblock-body\n{\n .opblock-loading-animation\n {\n display: block;\n margin: 3em;\n margin-left: auto;\n margin-right: auto;\n }\n}\n\n.opblock-body pre.microlight\n{\n font-size: 12px;\n\n margin: 0;\n padding: 10px;\n\n white-space: pre-wrap;\n word-wrap: break-word;\n word-break: break-all;\n word-break: break-word;\n hyphens: auto;\n\n border-radius: 4px;\n background: $opblock-body-background-color;\n\n overflow-wrap: break-word;\n @include text_code($opblock-body-font-color);\n\n // disabled to have syntax highliting with react-syntax-highlight\n // span\n // {\n // color: $opblock-body-font-color !important;\n // }\n\n .headerline\n {\n display: block;\n }\n}\n\n.highlight-code {\n position: relative;\n\n > .microlight {\n overflow-y: auto;\n max-height: 400px;\n min-height: 6em;\n\n code {\n white-space: pre-wrap !important;\n word-break: break-all;\n }\n }\n}\n.curl-command {\n position: relative;\n}\n\n.download-contents {\n position: absolute;\n bottom: 10px;\n right: 10px;\n background: #7d8293;\n text-align: center;\n padding: 5px;\n border: none;\n border-radius: 4px;\n font-family: sans-serif;\n font-weight: 600;\n color: white;\n font-size: 14px;\n height: 30px;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.scheme-container\n{\n margin: 0 0 20px 0;\n padding: 30px 0;\n\n background: $scheme-container-background-color;\n box-shadow: 0 1px 2px 0 rgba($scheme-container-box-shadow-color,.15);\n\n .schemes\n {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n flex-wrap: wrap;\n\n gap: 10px;\n\n /*\n This wraps the servers or schemes selector.\n This was added to make sure the Authorize button is always on the right\n and the servers or schemes selector is always on the left.\n */\n > .schemes-server-container\n {\n display: flex;\n flex-wrap: wrap;\n\n gap: 10px;\n\n > label\n {\n font-size: 12px;\n font-weight: bold;\n\n display: flex;\n flex-direction: column;\n\n margin: -20px 15px 0 0;\n\n @include text_headline();\n\n select\n {\n min-width: 130px;\n\n text-transform: uppercase;\n }\n }\n }\n\n /*\n This checks if the schemes-server-container is not present and\n aligns the authorize button to the right\n */\n &:not(:has(.schemes-server-container))\n {\n justify-content: flex-end;\n }\n\n /*\n Target Authorize Button in schemes wrapper\n This was added here to fix responsiveness issues with the authorize button\n within the schemes wrapper without affecting other instances of it's usage\n */\n .auth-wrapper\n {\n flex: none;\n justify-content: start;\n\n .authorize\n {\n padding-right: 20px;\n margin: 0;\n\n display: flex;\n\n flex-wrap: nowrap;\n }\n }\n }\n}\n\n.loading-container\n{\n padding: 40px 0 60px;\n margin-top: 1em;\n min-height: 1px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n\n .loading\n {\n position: relative;\n\n\n &:after\n {\n font-size: 10px;\n font-weight: bold;\n\n position: absolute;\n top: 50%;\n left: 50%;\n\n content: 'loading';\n transform: translate(-50%,-50%);\n text-transform: uppercase;\n\n @include text_headline();\n }\n\n &:before\n {\n position: absolute;\n top: 50%;\n left: 50%;\n\n display: block;\n\n width: 60px;\n height: 60px;\n margin: -30px -30px;\n\n content: '';\n animation: rotation 1s infinite linear, opacity .5s;\n\n opacity: 1;\n border: 2px solid rgba($loading-container-before-border-color, .1);\n border-top-color: rgba($loading-container-before-border-top-color, .6);\n border-radius: 100%;\n\n backface-visibility: hidden;\n\n @keyframes rotation\n {\n to\n {\n transform: rotate(360deg);\n }\n }\n }\n }\n}\n\n.response-controls {\n padding-top: 1em;\n display: flex;\n}\n\n.response-control-media-type {\n margin-right: 1em;\n\n &--accept-controller {\n select {\n border-color: $response-content-type-controls-accept-header-select-border-color;\n }\n }\n\n &__accept-message {\n color: $response-content-type-controls-accept-header-small-font-color;\n font-size: .7em;\n }\n\n &__title {\n display: block;\n margin-bottom: 0.2em;\n font-size: .7em;\n }\n}\n\n.response-control-examples {\n &__title {\n display: block;\n margin-bottom: 0.2em;\n font-size: .7em;\n }\n}\n\n@keyframes blinker\n{\n 50%\n {\n opacity: 0;\n }\n}\n\n.hidden\n{\n display: none;\n}\n\n.no-margin\n{\n height: auto;\n border: none;\n margin: 0;\n padding: 0;\n}\n\n.float-right\n{\n float: right;\n}\n\n.svg-assets\n{\n position: absolute;\n width: 0;\n height: 0;\n}\n\nsection\n{\n h3\n {\n @include text_headline();\n }\n}\n\na.nostyle {\n text-decoration: inherit;\n color: inherit;\n cursor: pointer;\n display: inline;\n\n &:visited {\n text-decoration: inherit;\n color: inherit;\n cursor: pointer;\n }\n}\n\n.fallback\n{\n padding: 1em;\n color: #aaa;\n}\n\n.version-pragma {\n height: 100%;\n padding: 5em 0px;\n\n &__message {\n display: flex;\n justify-content: center;\n height: 100%;\n font-size: 1.2em;\n text-align: center;\n line-height: 1.5em;\n\n padding: 0px .6em;\n\n > div {\n max-width: 55ch;\n flex: 1;\n }\n\n code {\n background-color: #dedede;\n padding: 4px 4px 2px;\n white-space: pre;\n }\n }\n}\n\n.opblock-link\n{\n font-weight: normal;\n\n &.shown\n {\n font-weight: bold;\n }\n}\n\nspan\n{\n &.token-string\n {\n color: #555;\n }\n\n &.token-not-formatted\n {\n color: #555;\n font-weight: bold;\n }\n}\n",".btn\n{\n font-size: 14px;\n font-weight: bold;\n\n padding: 5px 23px;\n\n transition: all .3s;\n\n border: 2px solid $btn-border-color;\n border-radius: 4px;\n background: transparent;\n box-shadow: 0 1px 2px rgba($btn-box-shadow-color,.1);\n\n @include text_headline();\n\n &.btn-sm\n {\n font-size: 12px;\n padding: 4px 23px;\n }\n\n &[disabled]\n {\n cursor: not-allowed;\n\n opacity: .3;\n }\n\n &:hover\n {\n box-shadow: 0 0 5px rgba($btn-box-shadow-color,.3);\n }\n\n &.cancel\n {\n border-color: $btn-cancel-border-color;\n background-color: $btn-cancel-background-color;\n @include text_headline($btn-cancel-font-color);\n }\n\n &.authorize\n {\n line-height: 1;\n\n display: inline;\n\n color: $btn-authorize-font-color;\n border-color: $btn-authorize-border-color;\n background-color: $btn-authorize-background-color;\n\n span\n {\n float: left;\n\n padding: 4px 20px 0 0;\n }\n\n svg\n {\n fill: $btn-authorize-svg-fill-color;\n }\n }\n\n &.execute\n {\n background-color: $btn-execute-background-color-alt;\n color: $btn-execute-font-color;\n border-color: $btn-execute-border-color;\n }\n}\n\n.btn-group\n{\n display: flex;\n\n padding: 30px;\n\n .btn\n {\n flex: 1;\n\n &:first-child\n {\n border-radius: 4px 0 0 4px;\n }\n\n &:last-child\n {\n border-radius: 0 4px 4px 0;\n }\n }\n}\n\n.authorization__btn\n{\n padding: 0 0 0 10px;\n\n border: none;\n background: none;\n\n .locked\n {\n opacity: 1;\n }\n\n .unlocked\n {\n opacity: .4;\n }\n}\n\n.opblock-summary-control,\n.models-control,\n.model-box-control\n{\n all: inherit;\n flex: 1;\n border-bottom: 0;\n padding: 0;\n cursor: pointer;\n\n &:focus {\n outline: auto;\n }\n}\n\n.expand-methods,\n.expand-operation\n{\n border: none;\n background: none;\n\n svg\n {\n width: 20px;\n height: 20px;\n }\n}\n\n.expand-methods\n{\n padding: 0 10px;\n\n &:hover\n {\n svg\n {\n fill: $expand-methods-svg-fill-color-hover;\n }\n }\n\n svg\n {\n transition: all .3s;\n\n fill: $expand-methods-svg-fill-color;\n }\n}\n\nbutton\n{\n cursor: pointer;\n\n &.invalid\n {\n @include invalidFormElement();\n }\n}\n\n.copy-to-clipboard\n{\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n bottom: 10px;\n right: 100px;\n width: 30px;\n height: 30px;\n background: #7d8293;\n border-radius: 4px;\n border: none;\n\n button\n {\n flex-grow: 1;\n flex-shrink: 1;\n border: none;\n height: 25px;\n background: url(\"data:image/svg+xml, \") center center no-repeat;\n }\n}\n\n.copy-to-clipboard:active\n{\n background: #5e626f;\n}\n\n.opblock-control-arrow\n{\n border: none;\n text-align: center;\n background: none;\n}\n\n// overrides for smaller copy button for curl command\n.curl-command .copy-to-clipboard\n{\n bottom: 5px;\n right: 10px;\n width: 20px;\n height: 20px;\n\n button\n {\n height: 18px;\n }\n}\n\n// overrides for copy to clipboard button\n.opblock .opblock-summary .view-line-link.copy-to-clipboard\n{\n height: 26px;\n position: unset;\n}\n","// - - - - - - - - - - - - - - - - - - -\n// - - _mixins.scss module\n// styles for the _mixins.scss module\n@function calculateRem($size)\n{\n $remSize: $size / 16px;\n @return $remSize * 1rem;\n}\n\n@mixin font-size($size)\n{\n font-size: $size;\n font-size: calculateRem($size);\n}\n\n%clearfix\n{\n &:before,\n &:after\n {\n display: table;\n\n content: ' ';\n }\n &:after\n {\n clear: both;\n }\n}\n\n@mixin size($width, $height: $width)\n{\n width: $width;\n height: $height;\n}\n\n$ease: (\n in-quad: cubic-bezier(.550, .085, .680, .530),\n in-cubic: cubic-bezier(.550, .055, .675, .190),\n in-quart: cubic-bezier(.895, .030, .685, .220),\n in-quint: cubic-bezier(.755, .050, .855, .060),\n in-sine: cubic-bezier(.470, .000, .745, .715),\n in-expo: cubic-bezier(.950, .050, .795, .035),\n in-circ: cubic-bezier(.600, .040, .980, .335),\n in-back: cubic-bezier(.600, -.280, .735, .045),\n out-quad: cubic-bezier(.250, .460, .450, .940),\n out-cubic: cubic-bezier(.215, .610, .355, 1.000),\n out-quart: cubic-bezier(.165, .840, .440, 1.000),\n out-quint: cubic-bezier(.230, 1.000, .320, 1.000),\n out-sine: cubic-bezier(.390, .575, .565, 1.000),\n out-expo: cubic-bezier(.190, 1.000, .220, 1.000),\n out-circ: cubic-bezier(.075, .820, .165, 1.000),\n out-back: cubic-bezier(.175, .885, .320, 1.275),\n in-out-quad: cubic-bezier(.455, .030, .515, .955),\n in-out-cubic: cubic-bezier(.645, .045, .355, 1.000),\n in-out-quart: cubic-bezier(.770, .000, .175, 1.000),\n in-out-quint: cubic-bezier(.860, .000, .070, 1.000),\n in-out-sine: cubic-bezier(.445, .050, .550, .950),\n in-out-expo: cubic-bezier(1.000, .000, .000, 1.000),\n in-out-circ: cubic-bezier(.785, .135, .150, .860),\n in-out-back: cubic-bezier(.680, -.550, .265, 1.550)\n);\n\n@function ease($key)\n{\n @if map-has-key($ease, $key)\n {\n @return map-get($ease, $key);\n }\n\n @warn 'Unkown \\'#{$key}\\' in $ease.';\n @return null;\n}\n\n\n@mixin ease($key)\n{\n transition-timing-function: ease($key);\n}\n\n@mixin text-truncate\n{\n overflow: hidden;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n@mixin aspect-ratio($width, $height)\n{\n position: relative;\n &:before\n {\n display: block;\n\n width: 100%;\n padding-top: ($height / $width) * 100%;\n\n content: '';\n }\n > iframe\n {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n}\n\n$browser-context: 16;\n\n@function em($pixels, $context: $browser-context)\n{\n @if (unitless($pixels))\n {\n $pixels: $pixels * 1px;\n }\n\n @if (unitless($context))\n {\n $context: $context * 1px;\n }\n\n @return $pixels / $context * 1em;\n}\n\n@mixin maxHeight($height)\n{\n @media (max-height: $height)\n {\n @content;\n }\n}\n\n\n@mixin breakpoint($class)\n{\n @if $class == tablet\n {\n @media (min-width: 768px) and (max-width: 1024px)\n {\n @content;\n }\n }\n\n @else if $class == mobile\n {\n @media (min-width: 320px) and (max-width : 736px)\n {\n @content;\n }\n }\n\n @else if $class == desktop\n {\n @media (min-width: 1400px)\n {\n @content;\n }\n }\n\n @else\n {\n @warn 'Breakpoint mixin supports: tablet, mobile, desktop';\n }\n}\n\n@mixin invalidFormElement() {\n animation: shake .4s 1;\n border-color: $_color-delete;\n background: lighten($_color-delete, 35%);\n}\n","select\n{\n font-size: 14px;\n font-weight: bold;\n\n padding: 5px 40px 5px 10px;\n\n border: 2px solid $form-select-border-color;\n border-radius: 4px;\n background: $form-select-background-color url('data:image/svg+xml, ') right 10px center no-repeat;\n background-size: 20px;\n box-shadow: 0 1px 2px 0 rgba($form-select-box-shadow-color, .25);\n\n @include text_headline();\n appearance: none;\n\n &[multiple]\n {\n margin: 5px 0;\n padding: 5px;\n\n background: $form-select-background-color;\n }\n\n &.invalid {\n @include invalidFormElement();\n }\n}\n\n.opblock-body select\n{\n min-width: 230px;\n @media (max-width: 768px)\n {\n min-width: 180px;\n }\n @media (max-width: 640px)\n {\n width: 100%;\n min-width: 100%;\n }\n}\n\nlabel\n{\n font-size: 12px;\n font-weight: bold;\n\n margin: 0 0 5px 0;\n\n @include text_headline();\n}\n\ninput[type=text],\ninput[type=password],\ninput[type=search],\ninput[type=email],\ninput[type=file]\n{\n line-height: 1;\n\n @media (max-width: 768px) {\n max-width: 175px;\n }\n}\n\n\ninput[type=text],\ninput[type=password],\ninput[type=search],\ninput[type=email],\ninput[type=file],\ntextarea\n{\n min-width: 100px;\n margin: 5px 0;\n padding: 8px 10px;\n\n border: 1px solid $form-input-border-color;\n border-radius: 4px;\n background: $form-input-background-color;\n\n\n &.invalid\n {\n @include invalidFormElement();\n }\n\n}\n\ninput,\ntextarea,\nselect {\n &[disabled] {\n // opacity: 0.85;\n background-color: #fafafa;\n color: #888;\n cursor: not-allowed;\n }\n}\n\nselect[disabled] {\n border-color: #888;\n}\n\ntextarea[disabled] {\n background-color: #41444e;\n color: #fff;\n}\n\n@keyframes shake\n{\n 10%,\n 90%\n {\n transform: translate3d(-1px, 0, 0);\n }\n\n 20%,\n 80%\n {\n transform: translate3d(2px, 0, 0);\n }\n\n 30%,\n 50%,\n 70%\n {\n transform: translate3d(-4px, 0, 0);\n }\n\n 40%,\n 60%\n {\n transform: translate3d(4px, 0, 0);\n }\n}\n\ntextarea\n{\n font-size: 12px;\n\n width: 100%;\n min-height: 280px;\n padding: 10px;\n\n border: none;\n border-radius: 4px;\n outline: none;\n background: rgba($form-textarea-background-color,.8);\n\n @include text_code();\n\n &:focus\n {\n border: 2px solid $form-textarea-focus-border-color;\n }\n\n &.curl\n {\n font-size: 12px;\n\n min-height: 100px;\n margin: 0;\n padding: 10px;\n\n resize: none;\n\n border-radius: 4px;\n background: $form-textarea-curl-background-color;\n\n @include text_code($form-textarea-curl-font-color);\n }\n}\n\n\n.checkbox\n{\n padding: 5px 0 10px;\n\n transition: opacity .5s;\n\n color: $form-checkbox-label-font-color;\n\n label\n {\n display: flex;\n }\n\n p\n {\n font-weight: normal !important;\n font-style: italic;\n\n margin: 0 !important;\n\n @include text_code();\n }\n\n input[type=checkbox]\n {\n display: none;\n\n & + label > .item\n {\n position: relative;\n top: 3px;\n\n display: inline-block;\n\n width: 16px;\n height: 16px;\n margin: 0 8px 0 0;\n padding: 5px;\n\n cursor: pointer;\n\n border-radius: 1px;\n background: $form-checkbox-background-color;\n box-shadow: 0 0 0 2px $form-checkbox-box-shadow-color;\n\n flex: none;\n\n &:active\n {\n transform: scale(.9);\n }\n }\n\n &:checked + label > .item\n {\n background: $form-checkbox-background-color url('data:image/svg+xml, ') center center no-repeat;\n }\n }\n}\n",".dialog-ux\n{\n position: fixed;\n z-index: 9999;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n .backdrop-ux\n {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n background: rgba($dialog-ux-backdrop-background-color,.8);\n }\n\n .modal-ux\n {\n position: absolute;\n z-index: 9999;\n top: 50%;\n left: 50%;\n\n width: 100%;\n min-width: 300px;\n max-width: 650px;\n\n transform: translate(-50%,-50%);\n\n border: 1px solid $dialog-ux-modal-border-color;\n border-radius: 4px;\n background: $dialog-ux-modal-background-color;\n box-shadow: 0 10px 30px 0 rgba($dialog-ux-modal-box-shadow-color,.20);\n }\n\n .modal-ux-content\n {\n overflow-y: auto;\n\n max-height: 540px;\n padding: 20px;\n\n p\n {\n font-size: 12px;\n\n margin: 0 0 5px 0;\n\n color: $dialog-ux-modal-content-font-color;\n\n @include text_body();\n }\n\n h4\n {\n font-size: 18px;\n font-weight: 600;\n\n margin: 15px 0 0 0;\n\n @include text_headline();\n }\n }\n\n .modal-ux-header\n {\n display: flex;\n\n padding: 12px 0;\n\n border-bottom: 1px solid $dialog-ux-modal-header-border-bottom-color;\n\n align-items: center;\n\n .close-modal\n {\n padding: 0 10px;\n\n border: none;\n background: none;\n\n appearance: none;\n }\n\n\n h3\n {\n font-size: 20px;\n font-weight: 600;\n\n margin: 0;\n padding: 0 20px;\n\n flex: 1;\n @include text_headline();\n }\n }\n}\n",".model\n{\n font-size: 12px;\n font-weight: 300;\n\n @include text_code();\n\n .deprecated\n {\n span,\n td\n {\n color: $model-deprecated-font-color !important;\n }\n\n > td:first-of-type {\n text-decoration: line-through;\n }\n }\n &-toggle\n {\n font-size: 10px;\n\n position: relative;\n top: 6px;\n\n display: inline-block;\n\n margin: auto .3em;\n\n cursor: pointer;\n transition: transform .15s ease-in;\n transform: rotate(90deg);\n transform-origin: 50% 50%;\n\n &.collapsed\n {\n transform: rotate(0deg);\n }\n\n &:after\n {\n display: block;\n\n width: 20px;\n height: 20px;\n\n content: '';\n\n background: url('data:image/svg+xml, ') center no-repeat;\n background-size: 100%;\n }\n }\n\n &-jump-to-path\n {\n position: relative;\n\n cursor: pointer;\n\n .view-line-link\n {\n position: absolute;\n top: -.4em;\n\n cursor: pointer;\n }\n }\n\n &-title\n {\n position: relative;\n\n &:hover .model-hint\n {\n visibility: visible;\n }\n }\n\n &-hint\n {\n position: absolute;\n top: -1.8em;\n\n visibility: hidden;\n\n padding: .1em .5em;\n\n white-space: nowrap;\n\n color: $model-hint-font-color;\n border-radius: 4px;\n background: rgba($model-hint-background-color,.7);\n }\n\n p\n {\n margin: 0 0 1em 0;\n }\n\n .property\n {\n color: #999;\n font-style: italic;\n\n &.primitive\n {\n color: #6b6b6b;\n }\n }\n\n .external-docs\n {\n color: #666;\n font-weight: normal;\n }\n}\n\ntable.model\n{\n tr\n {\n &.description\n {\n color: #666;\n font-weight: normal;\n \n td:first-child\n {\n font-weight: bold;\n }\n }\n\n &.property-row\n {\n &.required td:first-child\n {\n font-weight: bold;\n }\n\n td\n {\n vertical-align: top;\n\n &:first-child\n {\n padding-right: 0.2em;\n }\n }\n\n .star\n {\n color: red;\n }\n }\n\n &.extension\n {\n color: #777;\n\n td:last-child\n {\n vertical-align: top;\n }\n }\n\n &.external-docs\n {\n td:first-child\n {\n font-weight: bold;\n }\n }\n\n .renderedMarkdown p:first-child\n {\n margin-top: 0;\n } \n }\n}\n\nsection.models\n{\n margin: 30px 0;\n\n border: 1px solid rgba($section-models-border-color, .3);\n border-radius: 4px;\n\n .pointer\n {\n cursor: pointer;\n }\n\n &.is-open\n {\n padding: 0 0 20px;\n h4\n {\n margin: 0 0 5px 0;\n\n border-bottom: 1px solid rgba($section-models-isopen-h4-border-bottom-color, .3);\n }\n }\n h4\n {\n font-size: 16px;\n\n display: flex;\n align-items: center;\n\n margin: 0;\n padding: 10px 20px 10px 10px;\n\n cursor: pointer;\n transition: all .2s;\n\n @include text_headline($section-models-h4-font-color);\n\n svg\n {\n transition: all .4s;\n }\n\n span\n {\n flex: 1;\n }\n\n &:hover\n {\n background: rgba($section-models-h4-background-color-hover,.02);\n }\n }\n\n h5\n {\n font-size: 16px;\n\n margin: 0 0 10px 0;\n\n @include text_headline($section-models-h5-font-color);\n }\n\n .model-jump-to-path\n {\n position: relative;\n top: 5px;\n }\n\n .model-container\n {\n margin: 0 20px 15px;\n position: relative;\n\n transition: all .5s;\n\n border-radius: 4px;\n background: rgba($section-models-model-container-background-color,.05);\n\n &:hover\n {\n background: rgba($section-models-model-container-background-color,.07);\n }\n\n &:first-of-type\n {\n margin: 20px;\n }\n\n &:last-of-type\n {\n margin: 0 20px;\n }\n\n .models-jump-to-path {\n position: absolute;\n top: 8px;\n right: 5px;\n opacity: 0.65;\n }\n }\n\n .model-box\n {\n background: none;\n }\n}\n\n\n.model-box\n{\n padding: 10px;\n display: inline-block;\n\n border-radius: 4px;\n background: rgba($section-models-model-box-background-color,.1);\n\n .model-jump-to-path\n {\n position: relative;\n top: 4px;\n }\n\n &.deprecated\n {\n opacity: .5;\n }\n}\n\n\n.model-title\n{\n font-size: 16px;\n\n @include text_headline($section-models-model-title-font-color);\n\n img\n {\n margin-left: 1em;\n position: relative;\n bottom: 0px;\n }\n}\n\n.model-deprecated-warning\n{\n font-size: 16px;\n font-weight: 600;\n\n margin-right: 1em;\n\n @include text_headline($_color-delete);\n}\n\n\nspan\n{\n > span.model\n {\n .brace-close\n {\n padding: 0 0 0 10px;\n }\n }\n}\n\n.prop-name\n{\n display: inline-block;\n\n margin-right: 1em;\n}\n\n.prop-type\n{\n color: $prop-type-font-color;\n}\n\n.prop-enum\n{\n display: block;\n}\n.prop-format\n{\n color: $prop-format-font-color;\n}\n",".servers\n{\n > label\n {\n font-size: 12px;\n\n margin: -20px 15px 0 0;\n\n @include text_headline();\n\n select\n {\n min-width: 130px;\n max-width: 100%;\n width: 100%;\n }\n }\n\n h4.message {\n padding-bottom: 2em;\n }\n\n table {\n tr {\n width: 30em;\n }\n td {\n display: inline-block;\n max-width: 15em;\n vertical-align: middle;\n padding-top: 10px;\n padding-bottom: 10px;\n\n &:first-of-type {\n padding-right: 1em;\n }\n\n input {\n width: 100%;\n height: 100%;\n }\n }\n }\n\n .computed-url {\n margin: 2em 0;\n\n code {\n display: inline-block;\n padding: 4px;\n font-size: 16px;\n margin: 0 1em;\n }\n }\n}\n\n.servers-title {\n font-size: 12px;\n font-weight: bold;\n}\n\n.operation-servers {\n h4.message {\n margin-bottom: 2em;\n }\n}\n","table\n{\n width: 100%;\n padding: 0 10px;\n\n border-collapse: collapse;\n\n &.model\n {\n tbody\n {\n tr\n {\n td\n {\n padding: 0;\n\n vertical-align: top;\n\n &:first-of-type\n {\n width: 174px;\n padding: 0 0 0 2em;\n }\n }\n }\n }\n }\n\n &.headers\n {\n td\n {\n font-size: 12px;\n font-weight: 300;\n\n vertical-align: middle;\n\n @include text_code();\n }\n\n .header-example\n {\n color: #999;\n font-style: italic;\n }\n }\n\n tbody\n {\n tr\n {\n td\n {\n padding: 10px 0 0 0;\n\n vertical-align: top;\n\n &:first-of-type\n {\n min-width: 6em;\n padding: 10px 0;\n }\n }\n }\n }\n\n thead\n {\n tr\n {\n th,\n td\n {\n font-size: 12px;\n font-weight: bold;\n\n padding: 12px 0;\n\n text-align: left;\n\n border-bottom: 1px solid rgba($table-thead-td-border-bottom-color, .2);\n\n @include text_body();\n }\n }\n }\n}\n\n.parameters-col_description\n{\n width: 99%; // forces other columns to shrink to their content widths\n margin-bottom: 2em;\n input\n {\n width: 100%;\n max-width: 340px;\n }\n\n select {\n border-width: 1px;\n }\n\n .markdown, .renderedMarkdown {\n p {\n margin: 0;\n }\n }\n}\n\n.parameter__name\n{\n font-size: 16px;\n font-weight: normal;\n\n // hack to give breathing room to the name column\n // TODO: refactor all of this to flexbox\n margin-right: .75em;\n\n @include text_headline();\n\n &.required\n {\n font-weight: bold;\n\n span\n {\n color: red;\n }\n\n &:after\n {\n font-size: 10px;\n\n position: relative;\n top: -6px;\n\n padding: 5px;\n\n content: 'required';\n\n color: rgba($table-parameter-name-required-font-color, .6);\n }\n }\n}\n\n.parameter__in,\n.parameter__extension\n{\n font-size: 12px;\n font-style: italic;\n\n @include text_code($table-parameter-in-font-color);\n}\n\n.parameter__deprecated\n{\n font-size: 12px;\n font-style: italic;\n\n @include text_code($table-parameter-deprecated-font-color);\n}\n\n.parameter__empty_value_toggle {\n display: block;\n font-size: 13px;\n padding-top: 5px;\n padding-bottom: 12px;\n\n input {\n margin-right: 7px;\n width: auto;\n }\n\n &.disabled {\n opacity: 0.7;\n }\n}\n\n\n.table-container\n{\n padding: 20px;\n}\n\n\n.response-col_description {\n width: 99%; // forces other columns to shrink to their content widths\n\n .markdown, .renderedMarkdown {\n p {\n margin: 0;\n }\n }\n}\n\n.response-col_links {\n min-width: 6em;\n}\n\n.response__extension\n{\n font-size: 12px;\n font-style: italic;\n\n @include text_code($table-parameter-in-font-color);\n}\n",".topbar\n{\n padding: 10px 0;\n\n background-color: $topbar-background-color;\n .topbar-wrapper\n {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n }\n @media (max-width: 550px) {\n .topbar-wrapper\n {\n flex-direction: column;\n align-items: start;\n }\n }\n\n a\n {\n font-size: 1.5em;\n font-weight: bold;\n\n display: flex;\n align-items: center;\n flex: 1;\n\n max-width: 300px;\n\n text-decoration: none;\n\n @include text_headline($topbar-link-font-color);\n\n span\n {\n margin: 0;\n padding: 0 10px;\n }\n }\n\n .download-url-wrapper\n {\n display: flex;\n flex: 3;\n justify-content: flex-end;\n\n input[type=text]\n {\n width: 100%;\n max-width: 100%;\n margin: 0;\n\n border: 2px solid $topbar-download-url-wrapper-element-border-color;\n border-radius: 4px 0 0 4px;\n outline: none;\n }\n\n .select-label\n {\n display: flex;\n align-items: center;\n\n width: 100%;\n max-width: 600px;\n margin: 0;\n color: #f0f0f0;\n span\n {\n font-size: 16px;\n\n flex: 1;\n\n padding: 0 10px 0 0;\n\n text-align: right;\n }\n\n select\n {\n flex: 2;\n\n width: 100%;\n\n border: 2px solid $topbar-download-url-wrapper-element-border-color;\n outline: none;\n box-shadow: none;\n }\n }\n\n\n .download-url-button\n {\n font-size: 16px;\n font-weight: bold;\n\n padding: 4px 30px;\n\n border: none;\n border-radius: 0 4px 4px 0;\n background: $topbar-download-url-button-background-color;\n\n @include text_headline($topbar-download-url-button-font-color);\n }\n }\n @media (max-width: 550px) {\n .download-url-wrapper\n {\n width: 100%;\n }\n }\n}\n",".info\n{\n margin: 50px 0;\n\n &.failed-config\n { \n max-width: 880px;\n margin-left: auto;\n margin-right: auto;\n text-align: center\n }\n\n hgroup.main\n {\n margin: 0 0 20px 0;\n a\n {\n font-size: 12px;\n }\n }\n pre \n {\n font-size: 14px;\n }\n p, li, table\n {\n font-size: 14px;\n\n @include text_body();\n }\n\n h1, h2, h3, h4, h5\n {\n @include text_body();\n }\n\n a\n {\n font-size: 14px;\n\n transition: all .4s;\n\n @include text_body($info-link-font-color);\n\n &:hover\n {\n color: darken($info-link-font-color-hover, 15%);\n }\n }\n > div\n {\n margin: 0 0 5px 0;\n }\n\n .base-url\n {\n font-size: 12px;\n font-weight: 300 !important;\n\n margin: 0;\n\n @include text_code();\n }\n\n .title\n {\n font-size: 36px;\n\n margin: 0;\n\n @include text_body();\n\n small\n {\n font-size: 10px;\n\n position: relative;\n top: -5px;\n\n display: inline-block;\n\n margin: 0 0 0 5px;\n padding: 2px 4px;\n\n vertical-align: super;\n\n border-radius: 57px;\n background: $info-title-small-background-color;\n \n &.version-stamp\n {\n background-color: #89bf04;\n }\n\n pre\n {\n margin: 0;\n padding: 0;\n\n @include text_headline($info-title-small-pre-font-color);\n }\n }\n }\n}\n",".auth-btn-wrapper\n{\n display: flex;\n\n padding: 10px 0;\n\n justify-content: center;\n\n .btn-done {\n margin-right: 1em;\n }\n}\n\n.auth-wrapper\n{\n display: flex;\n\n flex: 1;\n justify-content: flex-end;\n\n .authorize\n {\n padding-right: 20px;\n margin-left: 10px;\n margin-right: 10px;\n }\n}\n\n.auth-container\n{\n margin: 0 0 10px 0;\n padding: 10px 20px;\n\n border-bottom: 1px solid $auth-container-border-color;\n\n &:last-of-type\n {\n margin: 0;\n padding: 10px 20px;\n\n border: 0;\n }\n\n h4\n {\n margin: 5px 0 15px 0 !important;\n }\n\n .wrapper\n {\n margin: 0;\n padding: 0;\n }\n\n input[type=text],\n input[type=password]\n {\n min-width: 230px;\n }\n\n .errors\n {\n font-size: 12px;\n\n padding: 10px;\n\n border-radius: 4px;\n\n background-color: #ffeeee;\n\n color: red;\n\n margin: 1em;\n\n @include text_code();\n\n b\n {\n text-transform: capitalize;\n margin-right: 1em;\n }\n }\n}\n\n.scopes\n{\n h2\n {\n font-size: 14px;\n\n @include text_headline();\n\n a\n {\n font-size: 12px;\n color: $auth-select-all-none-link-font-color;\n cursor: pointer;\n padding-left: 10px;\n text-decoration: underline;\n }\n }\n}\n\n.scope-def\n{\n padding: 0 0 20px 0;\n}\n",".errors-wrapper\n{\n margin: 20px;\n padding: 10px 20px;\n\n animation: scaleUp .5s;\n\n border: 2px solid $_color-delete;\n border-radius: 4px;\n background: rgba($_color-delete, .1);\n\n .error-wrapper\n {\n margin: 0 0 10px 0;\n }\n\n .errors\n {\n h4\n {\n font-size: 14px;\n\n margin: 0;\n\n @include text_code();\n }\n\n small\n {\n color: $errors-wrapper-errors-small-font-color;\n }\n\n .message\n { \n white-space: pre-line;\n \n &.thrown\n {\n max-width: 100%;\n }\n }\n\n .error-line\n {\n text-decoration: underline;\n cursor: pointer;\n }\n }\n\n hgroup\n {\n display: flex;\n\n align-items: center;\n\n h4\n {\n font-size: 20px;\n\n margin: 0;\n\n flex: 1;\n @include text_headline();\n }\n }\n}\n\n\n@keyframes scaleUp\n{\n 0%\n {\n transform: scale(.8);\n\n opacity: 0;\n }\n 100%\n {\n transform: scale(1);\n\n opacity: 1;\n }\n}\n",".Resizer.vertical.disabled {\n display: none;\n}",".markdown, .renderedMarkdown {\n p, pre {\n margin: 1em auto;\n\n word-break: break-all; /* Fallback trick */\n word-break: break-word;\n }\n pre {\n color: black;\n font-weight: normal;\n white-space: pre-wrap;\n background: none;\n padding: 0px;\n }\n\n code {\n font-size: 14px;\n padding: 5px 7px;\n\n border-radius: 4px;\n background: rgba($info-code-background-color,.05);\n\n @include text_code($info-code-font-color);\n }\n\n pre > code {\n display: block;\n }\n}\n",".json-schema-2020-12 {\n margin: 0 20px 15px 20px;\n border-radius: 4px;\n padding: 12px 0 12px 20px;\n background-color: rgba($section-models-model-container-background-color, .05);\n\n &:first-of-type {\n margin: 20px;\n }\n\n &:last-of-type {\n margin: 0 20px;\n }\n\n &--embedded {\n background-color: inherit;\n padding: 0 inherit 0 inherit;\n }\n\n &-body {\n @include expansion-border;\n margin: 2px 0;\n\n &--collapsed {\n display: none;\n }\n }\n}\n\n\n","@mixin expansion-border {\n margin: 0 0 0 20px;\n border-left: 1px dashed rgba($section-models-model-container-background-color, 0.1);\n}\n\n@import './JSONSchema/json-schema';\n@import './Accordion/accordion';\n@import './ExpandDeepButton/expand-deep-button';\n@import './keywords/all';\n",".json-schema-2020-12-accordion {\n outline: none;\n border: none;\n padding-left: 0;\n\n &__children {\n display: inline-block;\n }\n\n &__icon {\n width: 18px;\n height: 18px;\n display: inline-block;\n vertical-align: bottom;\n\n &--expanded {\n transition: transform .15s ease-in;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n\n &--collapsed {\n transition: transform .15s ease-in;\n transform: rotate(0deg);\n transform-origin: 50% 50%;\n }\n\n & svg {\n height: 20px;\n width: 20px;\n }\n }\n}\n\n",".json-schema-2020-12-expand-deep-button {\n @include text_headline($section-models-model-title-font-color);\n font-size: 12px;\n color: rgb(175, 174, 174);\n border: none;\n padding-right: 0;\n}\n",".json-schema-2020-12-keyword {\n margin: 5px 0 5px 0;\n\n &__children {\n @include expansion-border;\n padding: 0;\n\n &--collapsed {\n display: none;\n }\n }\n\n &__name {\n font-size: 12px;\n margin-left: 20px;\n font-weight: bold;\n\n &--primary {\n color: $text-code-default-font-color;\n font-style: normal;\n }\n\n &--secondary {\n color: #6b6b6b;\n font-style: italic;\n }\n }\n\n &__value {\n color: #6b6b6b;\n font-style: italic;\n font-size: 12px;\n font-weight: normal;\n\n &--primary {\n color: $text-code-default-font-color;\n font-style: normal;\n }\n\n &--secondary {\n color: #6b6b6b;\n font-style: italic;\n }\n\n &--const {\n @include text_code();\n color: #6b6b6b;\n font-style: normal;\n display: inline-block;\n margin-left: 10px;\n line-height: 1.5;\n padding: 1px 4px 1px 4px;\n border: 1px dashed #6b6b6b;\n border-radius: 4px;\n }\n\n &--warning {\n @extend .json-schema-2020-12-keyword__value--const;\n color: red;\n border: 1px dashed red;\n }\n }\n}\n.json-schema-2020-12-keyword__name--secondary + .json-schema-2020-12-keyword__value--secondary::before {\n content: '='\n}\n\n.json-schema-2020-12__attribute {\n font-family: monospace;\n color: $text-code-default-font-color;\n font-size: 12px;\n text-transform: lowercase;\n padding-left: 10px;\n\n &--primary {\n color: $prop-type-font-color;\n }\n\n &--muted {\n color: gray;\n }\n\n &--warning {\n color: red;\n }\n}\n\n@import './$vocabulary/$vocabulary';\n@import './Description/description';\n@import './Title/title';\n@import './Properties/properties';\n@import './PatternProperties/pattern-properties';\n@import './Enum/enum';\n@import './Constraint/constraint';\n@import './DependentRequired/dependent-required';\n",".json-schema-2020-12 {\n &-keyword--\\$vocabulary {\n ul {\n @include expansion-border;\n }\n }\n\n &-\\$vocabulary-uri {\n margin-left: 35px;\n\n &--disabled {\n text-decoration: line-through;\n }\n }\n}\n",".json-schema-2020-12-keyword--description {\n color: #6b6b6b;\n font-size: 12px;\n margin-left: 20px;\n\n & p {\n margin: 0;\n }\n}\n",".json-schema-2020-12 {\n &__title {\n @include text_headline($section-models-model-title-font-color);\n display: inline-block;\n font-weight: bold;\n font-size: 12px;\n line-height: normal;\n\n & .json-schema-2020-12-keyword__name {\n margin: 0;\n }\n }\n\n &-property {\n margin: 7px 0;\n\n .json-schema-2020-12__title {\n @include text_code();\n font-size: 12px;\n vertical-align: middle;\n }\n }\n}\n",".json-schema-2020-12 {\n &-keyword--properties {\n & > ul {\n margin: 0;\n padding: 0;\n border: none;\n }\n }\n\n &-property {\n list-style-type: none;\n\n &--required {\n & > .json-schema-2020-12:first-of-type > .json-schema-2020-12-head .json-schema-2020-12__title:after {\n content: '*';\n color: red;\n font-weight: bold;\n }\n }\n }\n}\n",".json-schema-2020-12 {\n &-keyword--patternProperties {\n ul {\n margin: 0;\n padding: 0;\n border: none;\n }\n\n .json-schema-2020-12__title:first-of-type::before {\n color: $prop-type-font-color;\n content: \"/\";\n }\n\n .json-schema-2020-12__title:first-of-type::after {\n color: $prop-type-font-color;\n content: \"/\";\n }\n }\n}\n",".json-schema-2020-12-keyword--enum {\n & > ul {\n display: inline-block;\n padding: 0;\n margin: 0;\n\n li {\n display: inline;\n list-style-type: none;\n }\n }\n}\n",".json-schema-2020-12__constraint {\n @include text_code();\n margin-left: 10px;\n line-height: 1.5;\n padding: 1px 3px;\n color: white;\n background-color: #805AD5;\n border-radius: 4px;\n\n &--string {\n color: white;\n background-color: #D69E2E;\n }\n}\n",".json-schema-2020-12-keyword--dependentRequired {\n & > ul {\n display: inline-block;\n padding: 0;\n margin: 0;\n\n li {\n display: inline;\n list-style-type: none;\n }\n }\n}\n",".model-box {\n // inferred names of Schema Objects\n & .json-schema-2020-12:not(.json-schema-2020-12--embedded) > .json-schema-2020-12-head .json-schema-2020-12__title:first-of-type {\n font-size: 16px;\n }\n\n & > .json-schema-2020-12 {\n margin: 0;\n }\n\n .json-schema-2020-12 {\n padding: 0;\n background-color: transparent;\n }\n\n .json-schema-2020-12-accordion, .json-schema-2020-12-expand-deep-button {\n background-color: transparent;\n }\n}\n",".models .json-schema-2020-12:not(.json-schema-2020-12--embedded) > .json-schema-2020-12-head .json-schema-2020-12__title:first-of-type {\n font-size: 16px;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/src/main/resources/static/plugins/swaggerUI/swagger-ui.js b/src/main/resources/static/plugins/swaggerUI/swagger-ui.js new file mode 100644 index 0000000..e6d3b31 --- /dev/null +++ b/src/main/resources/static/plugins/swaggerUI/swagger-ui.js @@ -0,0 +1,2 @@ +!function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUICore=t():e.SwaggerUICore=t()}(this,(()=>(()=>{"use strict";var e={158:e=>{e.exports=require("buffer")}},t={};function __webpack_require__(r){var a=t[r];if(void 0!==a)return a.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{__webpack_require__.d(r,{default:()=>To});var e={};__webpack_require__.r(e),__webpack_require__.d(e,{CLEAR:()=>D,CLEAR_BY:()=>K,NEW_AUTH_ERR:()=>V,NEW_SPEC_ERR:()=>J,NEW_SPEC_ERR_BATCH:()=>$,NEW_THROWN_ERR:()=>R,NEW_THROWN_ERR_BATCH:()=>T,clear:()=>clear,clearBy:()=>clearBy,newAuthErr:()=>newAuthErr,newSpecErr:()=>newSpecErr,newSpecErrBatch:()=>newSpecErrBatch,newThrownErr:()=>newThrownErr,newThrownErrBatch:()=>newThrownErrBatch});var t={};__webpack_require__.r(t),__webpack_require__.d(t,{AUTHORIZE:()=>he,AUTHORIZE_OAUTH2:()=>fe,CONFIGURE_AUTH:()=>Ee,LOGOUT:()=>ge,PRE_AUTHORIZE_OAUTH2:()=>ye,RESTORE_AUTHORIZATION:()=>_e,SHOW_AUTH_POPUP:()=>de,VALIDATE:()=>Se,authPopup:()=>authPopup,authorize:()=>authorize,authorizeAccessCodeWithBasicAuthentication:()=>authorizeAccessCodeWithBasicAuthentication,authorizeAccessCodeWithFormParams:()=>authorizeAccessCodeWithFormParams,authorizeApplication:()=>authorizeApplication,authorizeOauth2:()=>authorizeOauth2,authorizeOauth2WithPersistOption:()=>authorizeOauth2WithPersistOption,authorizePassword:()=>authorizePassword,authorizeRequest:()=>authorizeRequest,authorizeWithPersistOption:()=>authorizeWithPersistOption,configureAuth:()=>configureAuth,logout:()=>logout,logoutWithPersistOption:()=>logoutWithPersistOption,persistAuthorizationIfNeeded:()=>persistAuthorizationIfNeeded,preAuthorizeImplicit:()=>preAuthorizeImplicit,restoreAuthorization:()=>restoreAuthorization,showDefinitions:()=>showDefinitions});var a={};__webpack_require__.r(a),__webpack_require__.d(a,{authorized:()=>xe,definitionsForRequirements:()=>definitionsForRequirements,definitionsToAuthorize:()=>Ce,getConfigs:()=>Oe,getDefinitionsByNames:()=>getDefinitionsByNames,isAuthorized:()=>isAuthorized,shownDefinitions:()=>be});var n={};__webpack_require__.r(n),__webpack_require__.d(n,{TOGGLE_CONFIGS:()=>Te,UPDATE_CONFIGS:()=>Re,downloadConfig:()=>downloadConfig,getConfigByUrl:()=>getConfigByUrl,loaded:()=>actions_loaded,toggle:()=>toggle,update:()=>update});var s={};__webpack_require__.r(s),__webpack_require__.d(s,{get:()=>get});var o={};__webpack_require__.r(o),__webpack_require__.d(o,{transform:()=>transform});var l={};__webpack_require__.r(l),__webpack_require__.d(l,{transform:()=>parameter_oneof_transform});var c={};__webpack_require__.r(c),__webpack_require__.d(c,{allErrors:()=>Ye,lastError:()=>Qe});var i={};__webpack_require__.r(i),__webpack_require__.d(i,{SHOW:()=>nt,UPDATE_FILTER:()=>rt,UPDATE_LAYOUT:()=>tt,UPDATE_MODE:()=>at,changeMode:()=>changeMode,show:()=>actions_show,updateFilter:()=>updateFilter,updateLayout:()=>updateLayout});var p={};__webpack_require__.r(p),__webpack_require__.d(p,{current:()=>current,currentFilter:()=>currentFilter,isShown:()=>isShown,showSummary:()=>ot,whatMode:()=>whatMode});var m={};__webpack_require__.r(m),__webpack_require__.d(m,{taggedOperations:()=>taggedOperations});var u={};__webpack_require__.r(u),__webpack_require__.d(u,{requestSnippetGenerator_curl_bash:()=>requestSnippetGenerator_curl_bash,requestSnippetGenerator_curl_cmd:()=>requestSnippetGenerator_curl_cmd,requestSnippetGenerator_curl_powershell:()=>requestSnippetGenerator_curl_powershell});var d={};__webpack_require__.r(d),__webpack_require__.d(d,{getActiveLanguage:()=>it,getDefaultExpanded:()=>pt,getGenerators:()=>ct,getSnippetGenerators:()=>getSnippetGenerators});var h={};__webpack_require__.r(h),__webpack_require__.d(h,{JsonSchemaArrayItemFile:()=>JsonSchemaArrayItemFile,JsonSchemaArrayItemText:()=>JsonSchemaArrayItemText,JsonSchemaForm:()=>JsonSchemaForm,JsonSchema_array:()=>JsonSchema_array,JsonSchema_boolean:()=>JsonSchema_boolean,JsonSchema_object:()=>JsonSchema_object,JsonSchema_string:()=>JsonSchema_string});var g={};__webpack_require__.r(g),__webpack_require__.d(g,{allowTryItOutFor:()=>allowTryItOutFor,basePath:()=>cr,canExecuteScheme:()=>canExecuteScheme,consumes:()=>ar,consumesOptionsFor:()=>consumesOptionsFor,contentTypeValues:()=>contentTypeValues,currentProducesFor:()=>currentProducesFor,definitions:()=>lr,externalDocs:()=>Yt,findDefinition:()=>findDefinition,getOAS3RequiredRequestBodyContentType:()=>getOAS3RequiredRequestBodyContentType,getParameter:()=>getParameter,hasHost:()=>fr,host:()=>ir,info:()=>Gt,isMediaTypeSchemaPropertiesEqual:()=>isMediaTypeSchemaPropertiesEqual,isOAS3:()=>Xt,lastError:()=>Kt,mutatedRequestFor:()=>mutatedRequestFor,mutatedRequests:()=>yr,operationScheme:()=>operationScheme,operationWithMeta:()=>operationWithMeta,operations:()=>rr,operationsWithRootInherited:()=>mr,operationsWithTags:()=>dr,parameterInclusionSettingFor:()=>parameterInclusionSettingFor,parameterValues:()=>parameterValues,parameterWithMeta:()=>parameterWithMeta,parameterWithMetaByIdentity:()=>parameterWithMetaByIdentity,parametersIncludeIn:()=>parametersIncludeIn,parametersIncludeType:()=>parametersIncludeType,paths:()=>er,produces:()=>nr,producesOptionsFor:()=>producesOptionsFor,requestFor:()=>requestFor,requests:()=>gr,responseFor:()=>responseFor,responses:()=>hr,schemes:()=>pr,security:()=>sr,securityDefinitions:()=>or,semver:()=>Zt,spec:()=>spec,specJS:()=>Ft,specJson:()=>Bt,specJsonWithResolvedSubtrees:()=>Ht,specResolved:()=>Wt,specResolvedSubtree:()=>specResolvedSubtree,specSource:()=>zt,specStr:()=>Ut,tagDetails:()=>tagDetails,taggedOperations:()=>selectors_taggedOperations,tags:()=>ur,url:()=>Lt,validOperationMethods:()=>tr,validateBeforeExecute:()=>validateBeforeExecute,validationErrors:()=>validationErrors,version:()=>Qt});var y={};__webpack_require__.r(y),__webpack_require__.d(y,{CLEAR_REQUEST:()=>Jr,CLEAR_RESPONSE:()=>Tr,CLEAR_VALIDATE_PARAMS:()=>$r,LOG_REQUEST:()=>Rr,SET_MUTATED_REQUEST:()=>Mr,SET_REQUEST:()=>Pr,SET_RESPONSE:()=>jr,SET_SCHEME:()=>Lr,UPDATE_EMPTY_PARAM_INCLUSION:()=>Ir,UPDATE_JSON:()=>kr,UPDATE_OPERATION_META_VALUE:()=>Vr,UPDATE_PARAM:()=>Ar,UPDATE_RESOLVED:()=>Dr,UPDATE_RESOLVED_SUBTREE:()=>Kr,UPDATE_SPEC:()=>Or,UPDATE_URL:()=>Nr,VALIDATE_PARAMS:()=>qr,changeConsumesValue:()=>changeConsumesValue,changeParam:()=>changeParam,changeParamByIdentity:()=>changeParamByIdentity,changeProducesValue:()=>changeProducesValue,clearRequest:()=>clearRequest,clearResponse:()=>clearResponse,clearValidateParams:()=>clearValidateParams,execute:()=>actions_execute,executeRequest:()=>executeRequest,invalidateResolvedSubtreeCache:()=>invalidateResolvedSubtreeCache,logRequest:()=>logRequest,parseToJson:()=>parseToJson,requestResolvedSubtree:()=>requestResolvedSubtree,resolveSpec:()=>resolveSpec,setMutatedRequest:()=>setMutatedRequest,setRequest:()=>setRequest,setResponse:()=>setResponse,setScheme:()=>setScheme,updateEmptyParamInclusion:()=>updateEmptyParamInclusion,updateJsonSpec:()=>updateJsonSpec,updateResolved:()=>updateResolved,updateResolvedSubtree:()=>updateResolvedSubtree,updateSpec:()=>updateSpec,updateUrl:()=>updateUrl,validateParams:()=>validateParams});var f={};__webpack_require__.r(f),__webpack_require__.d(f,{executeRequest:()=>wrap_actions_executeRequest,updateJsonSpec:()=>wrap_actions_updateJsonSpec,updateSpec:()=>wrap_actions_updateSpec,validateParams:()=>wrap_actions_validateParams});var S={};__webpack_require__.r(S),__webpack_require__.d(S,{Button:()=>Button,Col:()=>Col,Collapse:()=>Collapse,Container:()=>Container,Input:()=>Input,Link:()=>Link,Row:()=>Row,Select:()=>Select,TextArea:()=>TextArea});var E={};__webpack_require__.r(E),__webpack_require__.d(E,{basePath:()=>wn,consumes:()=>bn,definitions:()=>Sn,findDefinition:()=>fn,hasHost:()=>En,host:()=>vn,produces:()=>Cn,schemes:()=>xn,securityDefinitions:()=>_n,validOperationMethods:()=>wrap_selectors_validOperationMethods});var _={};__webpack_require__.r(_),__webpack_require__.d(_,{definitionsToAuthorize:()=>On});var v={};__webpack_require__.r(v),__webpack_require__.d(v,{callbacksOperations:()=>An,findSchema:()=>findSchema,isOAS3:()=>selectors_isOAS3,isOAS30:()=>selectors_isOAS30,isSwagger2:()=>selectors_isSwagger2,servers:()=>kn});var w={};__webpack_require__.r(w),__webpack_require__.d(w,{CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>Xn,CLEAR_REQUEST_BODY_VALUE:()=>Gn,SET_REQUEST_BODY_VALIDATE_ERROR:()=>Hn,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>zn,UPDATE_REQUEST_BODY_INCLUSION:()=>Un,UPDATE_REQUEST_BODY_VALUE:()=>Kn,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>Ln,UPDATE_REQUEST_CONTENT_TYPE:()=>Bn,UPDATE_RESPONSE_CONTENT_TYPE:()=>Fn,UPDATE_SELECTED_SERVER:()=>Dn,UPDATE_SERVER_VARIABLE_VALUE:()=>Wn,clearRequestBodyValidateError:()=>clearRequestBodyValidateError,clearRequestBodyValue:()=>clearRequestBodyValue,initRequestBodyValidateError:()=>initRequestBodyValidateError,setActiveExamplesMember:()=>setActiveExamplesMember,setRequestBodyInclusion:()=>setRequestBodyInclusion,setRequestBodyValidateError:()=>setRequestBodyValidateError,setRequestBodyValue:()=>setRequestBodyValue,setRequestContentType:()=>setRequestContentType,setResponseContentType:()=>setResponseContentType,setRetainRequestBodyValueFlag:()=>setRetainRequestBodyValueFlag,setSelectedServer:()=>setSelectedServer,setServerVariableValue:()=>setServerVariableValue});var b={};__webpack_require__.r(b),__webpack_require__.d(b,{activeExamplesMember:()=>ss,hasUserEditedBody:()=>rs,requestBodyErrors:()=>ns,requestBodyInclusionSetting:()=>as,requestBodyValue:()=>es,requestContentType:()=>os,responseContentType:()=>ls,selectDefaultRequestBodyValue:()=>selectDefaultRequestBodyValue,selectedServer:()=>Zn,serverEffectiveValue:()=>ps,serverVariableValue:()=>cs,serverVariables:()=>is,shouldRetainRequestBodyValue:()=>ts,validOperationMethods:()=>us,validateBeforeExecute:()=>ms,validateShallowRequired:()=>validateShallowRequired});const C=require("react");var x=__webpack_require__.n(C);const O=require("redux"),N=require("immutable");var k=__webpack_require__.n(N);const A=require("deep-extend");var I=__webpack_require__.n(A);const q=require("redux-immutable"),j=require("serialize-error"),P=require("lodash/merge");var M=__webpack_require__.n(P);const R="err_new_thrown_err",T="err_new_thrown_err_batch",J="err_new_spec_err",$="err_new_spec_err_batch",V="err_new_auth_err",D="err_clear",K="err_clear_by";function newThrownErr(e){return{type:R,payload:(0,j.serializeError)(e)}}function newThrownErrBatch(e){return{type:T,payload:e}}function newSpecErr(e){return{type:J,payload:e}}function newSpecErrBatch(e){return{type:$,payload:e}}function newAuthErr(e){return{type:V,payload:e}}function clear(e={}){return{type:D,payload:e}}function clearBy(e=(()=>!0)){return{type:K,payload:e}}const L=function makeWindow(){var e={location:{},history:{},open:()=>{},close:()=>{},File:function(){},FormData:function(){}};if("undefined"==typeof window)return e;try{e=window;for(var t of["File","Blob","FormData"])t in window&&(e[t]=window[t])}catch(e){console.error(e)}return e}(),U=require("@braintree/sanitize-url"),z=(require("lodash/camelCase"),require("lodash/upperFirst"),require("lodash/memoize"));var B=__webpack_require__.n(z);const F=require("lodash/find");var W=__webpack_require__.n(F);const H=require("lodash/some");var X=__webpack_require__.n(H);const G=require("lodash/eq");var Y=__webpack_require__.n(G);const Q=require("lodash/isFunction");var Z=__webpack_require__.n(Q);const ee=require("css.escape");var te=__webpack_require__.n(ee);const re=require("randombytes");var ae=__webpack_require__.n(re);const ne=require("sha.js");var se=__webpack_require__.n(ne);const oe=k().Set.of("type","format","items","default","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","enum","multipleOf");function getParameterSchema(e,{isOAS3:t}={}){if(!k().Map.isMap(e))return{schema:k().Map(),parameterContentMediaType:null};if(!t)return"body"===e.get("in")?{schema:e.get("schema",k().Map()),parameterContentMediaType:null}:{schema:e.filter(((e,t)=>oe.includes(t))),parameterContentMediaType:null};if(e.get("content")){const t=e.get("content",k().Map({})).keySeq().first();return{schema:e.getIn(["content",t,"schema"],k().Map()),parameterContentMediaType:t}}return{schema:e.get("schema")?e.get("schema",k().Map()):k().Map(),parameterContentMediaType:null}}var le=__webpack_require__(158).Buffer;const ce="default",isImmutable=e=>k().Iterable.isIterable(e);function objectify(e){return isObject(e)?isImmutable(e)?e.toJS():e:{}}function fromJSOrdered(e){if(isImmutable(e))return e;if(e instanceof L.File)return e;if(!isObject(e))return e;if(Array.isArray(e))return k().Seq(e).map(fromJSOrdered).toList();if(Z()(e.entries)){const t=function createObjWithHashedKeys(e){if(!Z()(e.entries))return e;const t={},r="_**[]",a={};for(let n of e.entries())if(t[n[0]]||a[n[0]]&&a[n[0]].containsMultiple){if(!a[n[0]]){a[n[0]]={containsMultiple:!0,length:1},t[`${n[0]}${r}${a[n[0]].length}`]=t[n[0]],delete t[n[0]]}a[n[0]].length+=1,t[`${n[0]}${r}${a[n[0]].length}`]=n[1]}else t[n[0]]=n[1];return t}(e);return k().OrderedMap(t).map(fromJSOrdered)}return k().OrderedMap(e).map(fromJSOrdered)}function normalizeArray(e){return Array.isArray(e)?e:[e]}function isFn(e){return"function"==typeof e}function isObject(e){return!!e&&"object"==typeof e}function isFunc(e){return"function"==typeof e}function isArray(e){return Array.isArray(e)}const ie=B();function objMap(e,t){return Object.keys(e).reduce(((r,a)=>(r[a]=t(e[a],a),r)),{})}function objReduce(e,t){return Object.keys(e).reduce(((r,a)=>{let n=t(e[a],a);return n&&"object"==typeof n&&Object.assign(r,n),r}),{})}function systemThunkMiddleware(e){return({dispatch:t,getState:r})=>t=>r=>"function"==typeof r?r(e()):t(r)}function validateValueBySchema(e,t,r,a,n){if(!t)return[];let s=[],o=t.get("nullable"),l=t.get("required"),c=t.get("maximum"),i=t.get("minimum"),p=t.get("type"),m=t.get("format"),u=t.get("maxLength"),d=t.get("minLength"),h=t.get("uniqueItems"),g=t.get("maxItems"),y=t.get("minItems"),f=t.get("pattern");const S=r||!0===l,E=null!=e,_=S||E&&"array"===p||!(!S&&!E),v=o&&null===e;if(S&&!E&&!v&&!a&&!p)return s.push("Required field is not provided"),s;if(v||!p||!_)return[];let w="string"===p&&e,b="array"===p&&Array.isArray(e)&&e.length,C="array"===p&&k().List.isList(e)&&e.count();const x=[w,b,C,"array"===p&&"string"==typeof e&&e,"file"===p&&e instanceof L.File,"boolean"===p&&(e||!1===e),"number"===p&&(e||0===e),"integer"===p&&(e||0===e),"object"===p&&"object"==typeof e&&null!==e,"object"===p&&"string"==typeof e&&e].some((e=>!!e));if(S&&!x&&!a)return s.push("Required field is not provided"),s;if("object"===p&&(null===n||"application/json"===n)){let r=e;if("string"==typeof e)try{r=JSON.parse(e)}catch(e){return s.push("Parameter string value must be valid JSON"),s}t&&t.has("required")&&isFunc(l.isList)&&l.isList()&&l.forEach((e=>{void 0===r[e]&&s.push({propKey:e,error:"Required property not found"})})),t&&t.has("properties")&&t.get("properties").forEach(((e,t)=>{const o=validateValueBySchema(r[t],e,!1,a,n);s.push(...o.map((e=>({propKey:t,error:e}))))}))}if(f){let t=((e,t)=>{if(!new RegExp(t).test(e))return"Value must follow pattern "+t})(e,f);t&&s.push(t)}if(y&&"array"===p){let t=((e,t)=>{if(!e&&t>=1||e&&e.length{if(e&&e.length>t)return`Array must not contain more then ${t} item${1===t?"":"s"}`})(e,g);t&&s.push({needRemove:!0,error:t})}if(h&&"array"===p){let t=((e,t)=>{if(e&&("true"===t||!0===t)){const t=(0,N.fromJS)(e),r=t.toSet();if(e.length>r.size){let e=(0,N.Set)();if(t.forEach(((r,a)=>{t.filter((e=>isFunc(e.equals)?e.equals(r):e===r)).size>1&&(e=e.add(a))})),0!==e.size)return e.map((e=>({index:e,error:"No duplicates allowed."}))).toArray()}}})(e,h);t&&s.push(...t)}if(u||0===u){let t=((e,t)=>{if(e.length>t)return`Value must be no longer than ${t} character${1!==t?"s":""}`})(e,u);t&&s.push(t)}if(d){let t=((e,t)=>{if(e.length{if(e>t)return`Value must be less than ${t}`})(e,c);t&&s.push(t)}if(i||0===i){let t=((e,t)=>{if(e{if(isNaN(Date.parse(e)))return"Value must be a DateTime"})(e):"uuid"===m?(e=>{if(e=e.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(e))return"Value must be a Guid"})(e):(e=>{if(e&&"string"!=typeof e)return"Value must be a string"})(e),!t)return s;s.push(t)}else if("boolean"===p){let t=(e=>{if("true"!==e&&"false"!==e&&!0!==e&&!1!==e)return"Value must be a boolean"})(e);if(!t)return s;s.push(t)}else if("number"===p){let t=(e=>{if(!/^-?\d+(\.?\d+)?$/.test(e))return"Value must be a number"})(e);if(!t)return s;s.push(t)}else if("integer"===p){let t=(e=>{if(!/^-?\d+$/.test(e))return"Value must be an integer"})(e);if(!t)return s;s.push(t)}else if("array"===p){if(!b&&!C)return s;e&&e.forEach(((e,r)=>{const o=validateValueBySchema(e,t.get("items"),!1,a,n);s.push(...o.map((e=>({index:r,error:e}))))}))}else if("file"===p){let t=(e=>{if(e&&!(e instanceof L.File))return"Value must be a file"})(e);if(!t)return s;s.push(t)}return s}const btoa=e=>{let t;return t=e instanceof le?e:le.from(e.toString(),"utf-8"),t.toString("base64")},pe={operationsSorter:{alpha:(e,t)=>e.get("path").localeCompare(t.get("path")),method:(e,t)=>e.get("method").localeCompare(t.get("method"))},tagsSorter:{alpha:(e,t)=>e.localeCompare(t)}},buildFormData=e=>{let t=[];for(let r in e){let a=e[r];void 0!==a&&""!==a&&t.push([r,"=",encodeURIComponent(a).replace(/%20/g,"+")].join(""))}return t.join("&")},shallowEqualKeys=(e,t,r)=>!!W()(r,(r=>Y()(e[r],t[r])));function sanitizeUrl(e){return"string"!=typeof e||""===e?"":(0,U.sanitizeUrl)(e)}function requiresValidationURL(e){return!(!e||e.indexOf("localhost")>=0||e.indexOf("127.0.0.1")>=0||"none"===e)}const createDeepLinkPath=e=>"string"==typeof e||e instanceof String?e.trim().replace(/\s/g,"%20"):"",escapeDeepLinkPath=e=>te()(createDeepLinkPath(e).replace(/%20/g,"_")),getExtensions=e=>e.filter(((e,t)=>/^x-/.test(t))),getCommonExtensions=e=>e.filter(((e,t)=>/^pattern|maxLength|minLength|maximum|minimum/.test(t)));function deeplyStripKey(e,t,r=(()=>!0)){if("object"!=typeof e||Array.isArray(e)||null===e||!t)return e;const a=Object.assign({},e);return Object.keys(a).forEach((e=>{e===t&&r(a[e],e)?delete a[e]:a[e]=deeplyStripKey(a[e],t,r)})),a}function stringify(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),"object"==typeof e&&null!==e)try{return JSON.stringify(e,null,2)}catch(t){return String(e)}return null==e?"":e.toString()}function paramToIdentifier(e,{returnAll:t=!1,allowHashes:r=!0}={}){if(!k().Map.isMap(e))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");const a=e.get("name"),n=e.get("in");let s=[];return e&&e.hashCode&&n&&a&&r&&s.push(`${n}.${a}.hash-${e.hashCode()}`),n&&a&&s.push(`${n}.${a}`),s.push(a),t?s:s[0]||""}function paramToValue(e,t){return paramToIdentifier(e,{returnAll:!0}).map((e=>t[e])).filter((e=>void 0!==e))[0]}function b64toB64UrlEncoded(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}const isEmptyValue=e=>!e||!(!isImmutable(e)||!e.isEmpty()),idFn=e=>e;class Store{constructor(e={}){I()(this,{state:{},plugins:[],system:{configs:{},fn:{},components:{},rootInjects:{},statePlugins:{}},boundSystem:{},toolbox:{}},e),this.getSystem=this._getSystem.bind(this),this.store=function configureStore(e,t,r){return function createStoreWithMiddleware(e,t,r){let a=[systemThunkMiddleware(r)];const n=L.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||O.compose;return(0,O.createStore)(e,t,n((0,O.applyMiddleware)(...a)))}(e,t,r)}(idFn,(0,N.fromJS)(this.state),this.getSystem),this.buildSystem(!1),this.register(this.plugins)}getStore(){return this.store}register(e,t=!0){var r=combinePlugins(e,this.getSystem());systemExtend(this.system,r),t&&this.buildSystem();callAfterLoad.call(this.system,e,this.getSystem())&&this.buildSystem()}buildSystem(e=!0){let t=this.getStore().dispatch,r=this.getStore().getState;this.boundSystem=Object.assign({},this.getRootInjects(),this.getWrappedAndBoundActions(t),this.getWrappedAndBoundSelectors(r,this.getSystem),this.getStateThunks(r),this.getFn(),this.getConfigs()),e&&this.rebuildReducer()}_getSystem(){return this.boundSystem}getRootInjects(){return Object.assign({getSystem:this.getSystem,getStore:this.getStore.bind(this),getComponents:this.getComponents.bind(this),getState:this.getStore().getState,getConfigs:this._getConfigs.bind(this),Im:k(),React:x()},this.system.rootInjects||{})}_getConfigs(){return this.system.configs}getConfigs(){return{configs:this.system.configs}}setConfigs(e){this.system.configs=e}rebuildReducer(){this.store.replaceReducer(function buildReducer(e){return function allReducers(e){let t=Object.keys(e).reduce(((t,r)=>(t[r]=function makeReducer(e){return(t=new N.Map,r)=>{if(!e)return t;let a=e[r.type];if(a){const e=wrapWithTryCatch(a)(t,r);return null===e?t:e}return t}}(e[r]),t)),{});if(!Object.keys(t).length)return idFn;return(0,q.combineReducers)(t)}(objMap(e,(e=>e.reducers)))}(this.system.statePlugins))}getType(e){let t=e[0].toUpperCase()+e.slice(1);return objReduce(this.system.statePlugins,((r,a)=>{let n=r[e];if(n)return{[a+t]:n}}))}getSelectors(){return this.getType("selectors")}getActions(){return objMap(this.getType("actions"),(e=>objReduce(e,((e,t)=>{if(isFn(e))return{[t]:e}}))))}getWrappedAndBoundActions(e){return objMap(this.getBoundActions(e),((e,t)=>{let r=this.system.statePlugins[t.slice(0,-7)].wrapActions;return r?objMap(e,((e,t)=>{let a=r[t];return a?(Array.isArray(a)||(a=[a]),a.reduce(((e,t)=>{let newAction=(...r)=>t(e,this.getSystem())(...r);if(!isFn(newAction))throw new TypeError("wrapActions needs to return a function that returns a new function (ie the wrapped action)");return wrapWithTryCatch(newAction)}),e||Function.prototype)):e})):e}))}getWrappedAndBoundSelectors(e,t){return objMap(this.getBoundSelectors(e,t),((t,r)=>{let a=[r.slice(0,-9)],n=this.system.statePlugins[a].wrapSelectors;return n?objMap(t,((t,r)=>{let s=n[r];return s?(Array.isArray(s)||(s=[s]),s.reduce(((t,r)=>{let wrappedSelector=(...n)=>r(t,this.getSystem())(e().getIn(a),...n);if(!isFn(wrappedSelector))throw new TypeError("wrapSelector needs to return a function that returns a new function (ie the wrapped action)");return wrappedSelector}),t||Function.prototype)):t})):t}))}getStates(e){return Object.keys(this.system.statePlugins).reduce(((t,r)=>(t[r]=e.get(r),t)),{})}getStateThunks(e){return Object.keys(this.system.statePlugins).reduce(((t,r)=>(t[r]=()=>e().get(r),t)),{})}getFn(){return{fn:this.system.fn}}getComponents(e){const t=this.system.components[e];return Array.isArray(t)?t.reduce(((e,t)=>t(e,this.getSystem()))):void 0!==e?this.system.components[e]:this.system.components}getBoundSelectors(e,t){return objMap(this.getSelectors(),((r,a)=>{let n=[a.slice(0,-9)];return objMap(r,(r=>(...a)=>{let s=wrapWithTryCatch(r).apply(null,[e().getIn(n),...a]);return"function"==typeof s&&(s=wrapWithTryCatch(s)(t())),s}))}))}getBoundActions(e){e=e||this.getStore().dispatch;const t=this.getActions(),process=e=>"function"!=typeof e?objMap(e,(e=>process(e))):(...t)=>{var r=null;try{r=e(...t)}catch(e){r={type:R,error:!0,payload:(0,j.serializeError)(e)}}finally{return r}};return objMap(t,(t=>(0,O.bindActionCreators)(process(t),e)))}getMapStateToProps(){return()=>Object.assign({},this.getSystem())}getMapDispatchToProps(e){return t=>I()({},this.getWrappedAndBoundActions(t),this.getFn(),e)}}function combinePlugins(e,t){return isObject(e)&&!isArray(e)?M()({},e):isFunc(e)?combinePlugins(e(t),t):isArray(e)?e.map((e=>combinePlugins(e,t))).reduce(systemExtend,{components:t.getComponents()}):{}}function callAfterLoad(e,t,{hasLoaded:r}={}){let a=r;return isObject(e)&&!isArray(e)&&"function"==typeof e.afterLoad&&(a=!0,wrapWithTryCatch(e.afterLoad).call(this,t)),isFunc(e)?callAfterLoad.call(this,e(t),t,{hasLoaded:a}):isArray(e)?e.map((e=>callAfterLoad.call(this,e,t,{hasLoaded:a}))):a}function systemExtend(e={},t={}){if(!isObject(e))return{};if(!isObject(t))return e;t.wrapComponents&&(objMap(t.wrapComponents,((r,a)=>{const n=e.components&&e.components[a];n&&Array.isArray(n)?(e.components[a]=n.concat([r]),delete t.wrapComponents[a]):n&&(e.components[a]=[n,r],delete t.wrapComponents[a])})),Object.keys(t.wrapComponents).length||delete t.wrapComponents);const{statePlugins:r}=e;if(isObject(r))for(let e in r){const a=r[e];if(!isObject(a))continue;const{wrapActions:n,wrapSelectors:s}=a;if(isObject(n))for(let r in n){let a=n[r];Array.isArray(a)||(a=[a],n[r]=a),t&&t.statePlugins&&t.statePlugins[e]&&t.statePlugins[e].wrapActions&&t.statePlugins[e].wrapActions[r]&&(t.statePlugins[e].wrapActions[r]=n[r].concat(t.statePlugins[e].wrapActions[r]))}if(isObject(s))for(let r in s){let a=s[r];Array.isArray(a)||(a=[a],s[r]=a),t&&t.statePlugins&&t.statePlugins[e]&&t.statePlugins[e].wrapSelectors&&t.statePlugins[e].wrapSelectors[r]&&(t.statePlugins[e].wrapSelectors[r]=s[r].concat(t.statePlugins[e].wrapSelectors[r]))}}return I()(e,t)}function wrapWithTryCatch(e,{logErrors:t=!0}={}){return"function"!=typeof e?e:function(...r){try{return e.call(this,...r)}catch(e){return t&&console.error(e),null}}}const me=require("url-parse");var ue=__webpack_require__.n(me);const de="show_popup",he="authorize",ge="logout",ye="pre_authorize_oauth2",fe="authorize_oauth2",Se="validate",Ee="configure_auth",_e="restore_authorization";function showDefinitions(e){return{type:de,payload:e}}function authorize(e){return{type:he,payload:e}}const authorizeWithPersistOption=e=>({authActions:t})=>{t.authorize(e),t.persistAuthorizationIfNeeded()};function logout(e){return{type:ge,payload:e}}const logoutWithPersistOption=e=>({authActions:t})=>{t.logout(e),t.persistAuthorizationIfNeeded()},preAuthorizeImplicit=e=>({authActions:t,errActions:r})=>{let{auth:a,token:n,isValid:s}=e,{schema:o,name:l}=a,c=o.get("flow");delete L.swaggerUIRedirectOauth2,"accessCode"===c||s||r.newAuthErr({authId:l,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),n.error?r.newAuthErr({authId:l,source:"auth",level:"error",message:JSON.stringify(n)}):t.authorizeOauth2WithPersistOption({auth:a,token:n})};function authorizeOauth2(e){return{type:fe,payload:e}}const authorizeOauth2WithPersistOption=e=>({authActions:t})=>{t.authorizeOauth2(e),t.persistAuthorizationIfNeeded()},authorizePassword=e=>({authActions:t})=>{let{schema:r,name:a,username:n,password:s,passwordType:o,clientId:l,clientSecret:c}=e,i={grant_type:"password",scope:e.scopes.join(" "),username:n,password:s},p={};switch(o){case"request-body":!function setClientIdAndSecret(e,t,r){t&&Object.assign(e,{client_id:t});r&&Object.assign(e,{client_secret:r})}(i,l,c);break;case"basic":p.Authorization="Basic "+btoa(l+":"+c);break;default:console.warn(`Warning: invalid passwordType ${o} was passed, not including client id and secret`)}return t.authorizeRequest({body:buildFormData(i),url:r.get("tokenUrl"),name:a,headers:p,query:{},auth:e})};const authorizeApplication=e=>({authActions:t})=>{let{schema:r,scopes:a,name:n,clientId:s,clientSecret:o}=e,l={Authorization:"Basic "+btoa(s+":"+o)},c={grant_type:"client_credentials",scope:a.join(" ")};return t.authorizeRequest({body:buildFormData(c),name:n,url:r.get("tokenUrl"),auth:e,headers:l})},authorizeAccessCodeWithFormParams=({auth:e,redirectUrl:t})=>({authActions:r})=>{let{schema:a,name:n,clientId:s,clientSecret:o,codeVerifier:l}=e,c={grant_type:"authorization_code",code:e.code,client_id:s,client_secret:o,redirect_uri:t,code_verifier:l};return r.authorizeRequest({body:buildFormData(c),name:n,url:a.get("tokenUrl"),auth:e})},authorizeAccessCodeWithBasicAuthentication=({auth:e,redirectUrl:t})=>({authActions:r})=>{let{schema:a,name:n,clientId:s,clientSecret:o,codeVerifier:l}=e,c={Authorization:"Basic "+btoa(s+":"+o)},i={grant_type:"authorization_code",code:e.code,client_id:s,redirect_uri:t,code_verifier:l};return r.authorizeRequest({body:buildFormData(i),name:n,url:a.get("tokenUrl"),auth:e,headers:c})},authorizeRequest=e=>({fn:t,getConfigs:r,authActions:a,errActions:n,oas3Selectors:s,specSelectors:o,authSelectors:l})=>{let c,{body:i,query:p={},headers:m={},name:u,url:d,auth:h}=e,{additionalQueryStringParams:g}=l.getConfigs()||{};if(o.isOAS3()){let e=s.serverEffectiveValue(s.selectedServer());c=ue()(d,e,!0)}else c=ue()(d,o.url(),!0);"object"==typeof g&&(c.query=Object.assign({},c.query,g));const y=c.toString();let f=Object.assign({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},m);t.fetch({url:y,method:"post",headers:f,query:p,body:i,requestInterceptor:r().requestInterceptor,responseInterceptor:r().responseInterceptor}).then((function(e){let t=JSON.parse(e.data),r=t&&(t.error||""),s=t&&(t.parseError||"");e.ok?r||s?n.newAuthErr({authId:u,level:"error",source:"auth",message:JSON.stringify(t)}):a.authorizeOauth2WithPersistOption({auth:h,token:t}):n.newAuthErr({authId:u,level:"error",source:"auth",message:e.statusText})})).catch((e=>{let t=new Error(e).message;if(e.response&&e.response.data){const r=e.response.data;try{const e="string"==typeof r?JSON.parse(r):r;e.error&&(t+=`, error: ${e.error}`),e.error_description&&(t+=`, description: ${e.error_description}`)}catch(e){}}n.newAuthErr({authId:u,level:"error",source:"auth",message:t})}))};function configureAuth(e){return{type:Ee,payload:e}}function restoreAuthorization(e){return{type:_e,payload:e}}const persistAuthorizationIfNeeded=()=>({authSelectors:e,getConfigs:t})=>{if(!t().persistAuthorization)return;const r=e.authorized().toJS();localStorage.setItem("authorized",JSON.stringify(r))},authPopup=(e,t)=>()=>{L.swaggerUIRedirectOauth2=t,L.open(e)},ve={[de]:(e,{payload:t})=>e.set("showDefinitions",t),[he]:(e,{payload:t})=>{let r=(0,N.fromJS)(t),a=e.get("authorized")||(0,N.Map)();return r.entrySeq().forEach((([t,r])=>{if(!isFunc(r.getIn))return e.set("authorized",a);let n=r.getIn(["schema","type"]);if("apiKey"===n||"http"===n)a=a.set(t,r);else if("basic"===n){let e=r.getIn(["value","username"]),n=r.getIn(["value","password"]);a=a.setIn([t,"value"],{username:e,header:"Basic "+btoa(e+":"+n)}),a=a.setIn([t,"schema"],r.get("schema"))}})),e.set("authorized",a)},[fe]:(e,{payload:t})=>{let r,{auth:a,token:n}=t;a.token=Object.assign({},n),r=(0,N.fromJS)(a);let s=e.get("authorized")||(0,N.Map)();return s=s.set(r.get("name"),r),e.set("authorized",s)},[ge]:(e,{payload:t})=>{let r=e.get("authorized").withMutations((e=>{t.forEach((t=>{e.delete(t)}))}));return e.set("authorized",r)},[Ee]:(e,{payload:t})=>e.set("configs",t),[_e]:(e,{payload:t})=>e.set("authorized",(0,N.fromJS)(t.authorized))},we=require("reselect"),state=e=>e,be=(0,we.createSelector)(state,(e=>e.get("showDefinitions"))),Ce=(0,we.createSelector)(state,(()=>({specSelectors:e})=>{let t=e.securityDefinitions()||(0,N.Map)({}),r=(0,N.List)();return t.entrySeq().forEach((([e,t])=>{let a=(0,N.Map)();a=a.set(e,t),r=r.push(a)})),r})),getDefinitionsByNames=(e,t)=>({specSelectors:e})=>{console.warn("WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.");let r=e.securityDefinitions(),a=(0,N.List)();return t.valueSeq().forEach((e=>{let t=(0,N.Map)();e.entrySeq().forEach((([e,a])=>{let n,s=r.get(e);"oauth2"===s.get("type")&&a.size&&(n=s.get("scopes"),n.keySeq().forEach((e=>{a.contains(e)||(n=n.delete(e))})),s=s.set("allowedScopes",n)),t=t.set(e,s)})),a=a.push(t)})),a},definitionsForRequirements=(e,t=(0,N.List)())=>({authSelectors:e})=>{const r=e.definitionsToAuthorize()||(0,N.List)();let a=(0,N.List)();return r.forEach((e=>{let r=t.find((t=>t.get(e.keySeq().first())));r&&(e.forEach(((t,a)=>{if("oauth2"===t.get("type")){const n=r.get(a);let s=t.get("scopes");N.List.isList(n)&&N.Map.isMap(s)&&(s.keySeq().forEach((e=>{n.contains(e)||(s=s.delete(e))})),e=e.set(a,t.set("scopes",s)))}})),a=a.push(e))})),a},xe=(0,we.createSelector)(state,(e=>e.get("authorized")||(0,N.Map)())),isAuthorized=(e,t)=>({authSelectors:e})=>{let r=e.authorized();return N.List.isList(t)?!!t.toJS().filter((e=>-1===Object.keys(e).map((e=>!!r.get(e))).indexOf(!1))).length:null},Oe=(0,we.createSelector)(state,(e=>e.get("configs"))),execute=(e,{authSelectors:t,specSelectors:r})=>({path:a,method:n,operation:s,extras:o})=>{let l={authorized:t.authorized()&&t.authorized().toJS(),definitions:r.securityDefinitions()&&r.securityDefinitions().toJS(),specSecurity:r.security()&&r.security().toJS()};return e({path:a,method:n,operation:s,securities:l,...o})},loaded=(e,t)=>r=>{const{getConfigs:a,authActions:n}=t,s=a();if(e(r),s.persistAuthorization){const e=localStorage.getItem("authorized");e&&n.restoreAuthorization({authorized:JSON.parse(e)})}},wrap_actions_authorize=(e,t)=>r=>{e(r);if(t.getConfigs().persistAuthorization)try{const[{schema:e,value:t}]=Object.values(r),a="apiKey"===e.get("type"),n="cookie"===e.get("in");a&&n&&(document.cookie=`${e.get("name")}=${t}; SameSite=None; Secure`)}catch(e){console.error("Error persisting cookie based apiKey in document.cookie.",e)}},wrap_actions_logout=(e,t)=>r=>{const a=t.getConfigs(),n=t.authSelectors.authorized();try{a.persistAuthorization&&Array.isArray(r)&&r.forEach((e=>{const t=n.get(e,{}),r="apiKey"===t.getIn(["schema","type"]),a="cookie"===t.getIn(["schema","in"]);if(r&&a){const e=t.getIn(["schema","name"]);document.cookie=`${e}=; Max-Age=-99999999`}}))}catch(e){console.error("Error deleting cookie based apiKey from document.cookie.",e)}e(r)},Ne=require("prop-types");var ke=__webpack_require__.n(Ne);const Ae=require("lodash/omit");var Ie=__webpack_require__.n(Ae);class LockAuthIcon extends x().Component{mapStateToProps(e,t){return{state:e,ownProps:Ie()(t,Object.keys(t.getSystem()))}}render(){const{getComponent:e,ownProps:t}=this.props,r=e("LockIcon");return x().createElement(r,t)}}const qe=LockAuthIcon;class UnlockAuthIcon extends x().Component{mapStateToProps(e,t){return{state:e,ownProps:Ie()(t,Object.keys(t.getSystem()))}}render(){const{getComponent:e,ownProps:t}=this.props,r=e("UnlockIcon");return x().createElement(r,t)}}const je=UnlockAuthIcon;function auth(){return{afterLoad(e){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=e.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=preauthorizeApiKey.bind(null,e),this.rootInjects.preauthorizeBasic=preauthorizeBasic.bind(null,e)},components:{LockAuthIcon:qe,UnlockAuthIcon:je,LockAuthOperationIcon:qe,UnlockAuthOperationIcon:je},statePlugins:{auth:{reducers:ve,actions:t,selectors:a,wrapActions:{authorize:wrap_actions_authorize,logout:wrap_actions_logout}},configs:{wrapActions:{loaded}},spec:{wrapActions:{execute}}}}}function preauthorizeBasic(e,t,r,a){const{authActions:{authorize:n},specSelectors:{specJson:s,isOAS3:o}}=e,l=o()?["components","securitySchemes"]:["securityDefinitions"],c=s().getIn([...l,t]);return c?n({[t]:{value:{username:r,password:a},schema:c.toJS()}}):null}function preauthorizeApiKey(e,t,r){const{authActions:{authorize:a},specSelectors:{specJson:n,isOAS3:s}}=e,o=s()?["components","securitySchemes"]:["securityDefinitions"],l=n().getIn([...o,t]);return l?a({[t]:{value:r,schema:l.toJS()}}):null}const Pe=require("js-yaml");var Me=__webpack_require__.n(Pe);const Re="configs_update",Te="configs_toggle";function update(e,t){return{type:Re,payload:{[e]:t}}}function toggle(e){return{type:Te,payload:e}}const actions_loaded=()=>()=>{},downloadConfig=e=>t=>{const{fn:{fetch:r}}=t;return r(e)},getConfigByUrl=(e,t)=>r=>{const{specActions:a,configsActions:n}=r;if(e)return n.downloadConfig(e).then(next,next);function next(n){n instanceof Error||n.status>=400?(a.updateLoadingStatus("failedConfig"),a.updateLoadingStatus("failedConfig"),a.updateUrl(""),console.error(n.statusText+" "+e.url),t(null)):t(((e,t)=>{try{return Me().load(e)}catch(e){return t&&t.errActions.newThrownErr(new Error(e)),{}}})(n.text,r))}},get=(e,t)=>e.getIn(Array.isArray(t)?t:[t]),Je={[Re]:(e,t)=>e.merge((0,N.fromJS)(t.payload)),[Te]:(e,t)=>{const r=t.payload,a=e.get(r);return e.set(r,!a)}};function configsPlugin(){return{statePlugins:{configs:{reducers:Je,actions:n,selectors:s}}}}const setHash=e=>e?history.pushState(null,null,`#${e}`):window.location.hash="",$e=require("zenscroll");var Ve=__webpack_require__.n($e);const De="layout_scroll_to",Ke="layout_clear_scroll";const Le={fn:{getScrollParent:function getScrollParent(e,t){const r=document.documentElement;let a=getComputedStyle(e);const n="absolute"===a.position,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if("fixed"===a.position)return r;for(let t=e;t=t.parentElement;)if(a=getComputedStyle(t),(!n||"static"!==a.position)&&s.test(a.overflow+a.overflowY+a.overflowX))return t;return r}},statePlugins:{layout:{actions:{scrollToElement:(e,t)=>r=>{try{t=t||r.fn.getScrollParent(e),Ve().createScroller(t).to(e)}catch(e){console.error(e)}},scrollTo:e=>({type:De,payload:Array.isArray(e)?e:[e]}),clearScrollTo:()=>({type:Ke}),readyToScroll:(e,t)=>r=>{const a=r.layoutSelectors.getScrollToKey();k().is(a,(0,N.fromJS)(e))&&(r.layoutActions.scrollToElement(t),r.layoutActions.clearScrollTo())},parseDeepLinkHash:e=>({layoutActions:t,layoutSelectors:r,getConfigs:a})=>{if(a().deepLinking&&e){let a=e.slice(1);"!"===a[0]&&(a=a.slice(1)),"/"===a[0]&&(a=a.slice(1));const n=a.split("/").map((e=>e||"")),s=r.isShownKeyFromUrlHashArray(n),[o,l="",c=""]=s;if("operations"===o){const e=r.isShownKeyFromUrlHashArray([l]);l.indexOf("_")>-1&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),t.show(e.map((e=>e.replace(/_/g," "))),!0)),t.show(e,!0)}(l.indexOf("_")>-1||c.indexOf("_")>-1)&&(console.warn("Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead."),t.show(s.map((e=>e.replace(/_/g," "))),!0)),t.show(s,!0),t.scrollTo(s)}}},selectors:{getScrollToKey:e=>e.get("scrollToKey"),isShownKeyFromUrlHashArray(e,t){const[r,a]=t;return a?["operations",r,a]:r?["operations-tag",r]:[]},urlHashArrayFromIsShownKey(e,t){let[r,a,n]=t;return"operations"==r?[a,n]:"operations-tag"==r?[a]:[]}},reducers:{[De]:(e,t)=>e.set("scrollToKey",k().fromJS(t.payload)),[Ke]:e=>e.delete("scrollToKey")},wrapActions:{show:(e,{getConfigs:t,layoutSelectors:r})=>(...a)=>{if(e(...a),t().deepLinking)try{let[e,t]=a;e=Array.isArray(e)?e:[e];const n=r.urlHashArrayFromIsShownKey(e);if(!n.length)return;const[s,o]=n;if(!t)return setHash("/");2===n.length?setHash(createDeepLinkPath(`/${encodeURIComponent(s)}/${encodeURIComponent(o)}`)):1===n.length&&setHash(createDeepLinkPath(`/${encodeURIComponent(s)}`))}catch(e){console.error(e)}}}}}},Ue=require("react-immutable-proptypes");var ze=__webpack_require__.n(Ue);const operation_wrapper=(e,t)=>class OperationWrapper extends x().Component{onLoad=e=>{const{operation:r}=this.props,{tag:a,operationId:n}=r.toObject();let{isShownKey:s}=r.toObject();s=s||["operations",a,n],t.layoutActions.readyToScroll(s,e)};render(){return x().createElement("span",{ref:this.onLoad},x().createElement(e,this.props))}},operation_tag_wrapper=(e,t)=>class OperationTagWrapper extends x().Component{onLoad=e=>{const{tag:r}=this.props,a=["operations-tag",r];t.layoutActions.readyToScroll(a,e)};render(){return x().createElement("span",{ref:this.onLoad},x().createElement(e,this.props))}};function deep_linking(){return[Le,{statePlugins:{configs:{wrapActions:{loaded:(e,t)=>(...r)=>{e(...r);const a=decodeURIComponent(window.location.hash);t.layoutActions.parseDeepLinkHash(a)}}}},wrapComponents:{operation:operation_wrapper,OperationTag:operation_tag_wrapper}}]}const Be=require("lodash/reduce");var Fe=__webpack_require__.n(Be);function transform(e){return e.map((e=>{let t="is not of a type(s)",r=e.get("message").indexOf(t);if(r>-1){let t=e.get("message").slice(r+19).split(",");return e.set("message",e.get("message").slice(0,r)+function makeNewMessage(e){return e.reduce(((e,t,r,a)=>r===a.length-1&&a.length>1?e+"or "+t:a[r+1]&&a.length>2?e+t+", ":a[r+1]?e+t+" ":e+t),"should be a")}(t))}return e}))}const We=require("lodash/get");var He=__webpack_require__.n(We);function parameter_oneof_transform(e,{jsSpec:t}){return e}const Xe=[o,l];function transformErrors(e){let t={jsSpec:{}},r=Fe()(Xe,((e,r)=>{try{return r.transform(e,t).filter((e=>!!e))}catch(t){return console.error("Transformer error:",t),e}}),e);return r.filter((e=>!!e)).map((e=>(!e.get("line")&&e.get("path"),e)))}let Ge={line:0,level:"error",message:"Unknown error"};const Ye=(0,we.createSelector)((e=>e),(e=>e.get("errors",(0,N.List)()))),Qe=(0,we.createSelector)(Ye,(e=>e.last()));function err(t){return{statePlugins:{err:{reducers:{[R]:(e,{payload:t})=>{let r=Object.assign(Ge,t,{type:"thrown"});return e.update("errors",(e=>(e||(0,N.List)()).push((0,N.fromJS)(r)))).update("errors",(e=>transformErrors(e)))},[T]:(e,{payload:t})=>(t=t.map((e=>(0,N.fromJS)(Object.assign(Ge,e,{type:"thrown"})))),e.update("errors",(e=>(e||(0,N.List)()).concat((0,N.fromJS)(t)))).update("errors",(e=>transformErrors(e)))),[J]:(e,{payload:t})=>{let r=(0,N.fromJS)(t);return r=r.set("type","spec"),e.update("errors",(e=>(e||(0,N.List)()).push((0,N.fromJS)(r)).sortBy((e=>e.get("line"))))).update("errors",(e=>transformErrors(e)))},[$]:(e,{payload:t})=>(t=t.map((e=>(0,N.fromJS)(Object.assign(Ge,e,{type:"spec"})))),e.update("errors",(e=>(e||(0,N.List)()).concat((0,N.fromJS)(t)))).update("errors",(e=>transformErrors(e)))),[V]:(e,{payload:t})=>{let r=(0,N.fromJS)(Object.assign({},t));return r=r.set("type","auth"),e.update("errors",(e=>(e||(0,N.List)()).push((0,N.fromJS)(r)))).update("errors",(e=>transformErrors(e)))},[D]:(e,{payload:t})=>{if(!t||!e.get("errors"))return e;let r=e.get("errors").filter((e=>e.keySeq().every((r=>{const a=e.get(r),n=t[r];return!n||a!==n}))));return e.merge({errors:r})},[K]:(e,{payload:t})=>{if(!t||"function"!=typeof t)return e;let r=e.get("errors").filter((e=>t(e)));return e.merge({errors:r})}},actions:e,selectors:c}}}}function opsFilter(e,t){return e.filter(((e,r)=>-1!==r.indexOf(t)))}function filter(){return{fn:{opsFilter}}}const Ze=require("@babel/runtime-corejs3/helpers/extends");var et=__webpack_require__.n(Ze);const arrow_up=({className:e=null,width:t=20,height:r=20,...a})=>x().createElement("svg",et()({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:e,width:t,height:r,"aria-hidden":"true",focusable:"false"},a),x().createElement("path",{d:"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z"})),arrow_down=({className:e=null,width:t=20,height:r=20,...a})=>x().createElement("svg",et()({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:e,width:t,height:r,"aria-hidden":"true",focusable:"false"},a),x().createElement("path",{d:"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"})),arrow=({className:e=null,width:t=20,height:r=20,...a})=>x().createElement("svg",et()({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:e,width:t,height:r,"aria-hidden":"true",focusable:"false"},a),x().createElement("path",{d:"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"})),components_close=({className:e=null,width:t=20,height:r=20,...a})=>x().createElement("svg",et()({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:e,width:t,height:r,"aria-hidden":"true",focusable:"false"},a),x().createElement("path",{d:"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"})),copy=({className:e=null,width:t=15,height:r=16,...a})=>x().createElement("svg",et()({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 15 16",className:e,width:t,height:r,"aria-hidden":"true",focusable:"false"},a),x().createElement("g",{transform:"translate(2, -1)"},x().createElement("path",{fill:"#ffffff",fillRule:"evenodd",d:"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z"}))),lock=({className:e=null,width:t=20,height:r=20,...a})=>x().createElement("svg",et()({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:e,width:t,height:r,"aria-hidden":"true",focusable:"false"},a),x().createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"})),unlock=({className:e=null,width:t=20,height:r=20,...a})=>x().createElement("svg",et()({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:e,width:t,height:r,"aria-hidden":"true",focusable:"false"},a),x().createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"})),icons=()=>({components:{ArrowUpIcon:arrow_up,ArrowDownIcon:arrow_down,ArrowIcon:arrow,CloseIcon:components_close,CopyIcon:copy,LockIcon:lock,UnlockIcon:unlock}}),tt="layout_update_layout",rt="layout_update_filter",at="layout_update_mode",nt="layout_show";function updateLayout(e){return{type:tt,payload:e}}function updateFilter(e){return{type:rt,payload:e}}function actions_show(e,t=!0){return e=normalizeArray(e),{type:nt,payload:{thing:e,shown:t}}}function changeMode(e,t=""){return e=normalizeArray(e),{type:at,payload:{thing:e,mode:t}}}const st={[tt]:(e,t)=>e.set("layout",t.payload),[rt]:(e,t)=>e.set("filter",t.payload),[nt]:(e,t)=>{const r=t.payload.shown,a=(0,N.fromJS)(t.payload.thing);return e.update("shown",(0,N.fromJS)({}),(e=>e.set(a,r)))},[at]:(e,t)=>{let r=t.payload.thing,a=t.payload.mode;return e.setIn(["modes"].concat(r),(a||"")+"")}},current=e=>e.get("layout"),currentFilter=e=>e.get("filter"),isShown=(e,t,r)=>(t=normalizeArray(t),e.get("shown",(0,N.fromJS)({})).get((0,N.fromJS)(t),r)),whatMode=(e,t,r="")=>(t=normalizeArray(t),e.getIn(["modes",...t],r)),ot=(0,we.createSelector)((e=>e),(e=>!isShown(e,"editor"))),taggedOperations=(e,t)=>(r,...a)=>{let n=e(r,...a);const{fn:s,layoutSelectors:o,getConfigs:l}=t.getSystem(),c=l(),{maxDisplayedTags:i}=c;let p=o.currentFilter();return p&&!0!==p&&(n=s.opsFilter(n,p)),i>=0&&(n=n.slice(0,i)),n};function plugins_layout(){return{statePlugins:{layout:{reducers:st,actions:i,selectors:p},spec:{wrapSelectors:m}}}}function logs({configs:e}){const t={debug:0,info:1,log:2,warn:3,error:4},getLevel=e=>t[e]||-1;let{logLevel:r}=e,a=getLevel(r);function log(e,...t){getLevel(e)>=a&&console[e](...t)}return log.warn=log.bind(null,"warn"),log.error=log.bind(null,"error"),log.info=log.bind(null,"info"),log.debug=log.bind(null,"debug"),{rootInjects:{log}}}let lt=!1;function on_complete(){return{statePlugins:{spec:{wrapActions:{updateSpec:e=>(...t)=>(lt=!0,e(...t)),updateJsonSpec:(e,t)=>(...r)=>{const a=t.getConfigs().onComplete;return lt&&"function"==typeof a&&(setTimeout(a,0),lt=!1),e(...r)}}}}}}const extractKey=e=>{const t="_**[]";return e.indexOf(t)<0?e:e.split(t)[0].trim()},escapeShell=e=>"-d "===e||/^[_\/-]/g.test(e)?e:"'"+e.replace(/'/g,"'\\''")+"'",escapeCMD=e=>"-d "===(e=e.replace(/\^/g,"^^").replace(/\\"/g,'\\\\"').replace(/"/g,'""').replace(/\n/g,"^\n"))?e.replace(/-d /g,"-d ^\n"):/^[_\/-]/g.test(e)?e:'"'+e+'"',escapePowershell=e=>{if("-d "===e)return e;if(/\n/.test(e)){return`@"\n${e.replace(/`/g,"``").replace(/\$/g,"`$")}\n"@`}if(!/^[_\/-]/.test(e)){return`'${e.replace(/'/g,"''")}'`}return e};const curlify=(e,t,r,a="")=>{let n=!1,s="";const addWords=(...e)=>s+=" "+e.map(t).join(" "),addWordsWithoutLeadingSpace=(...e)=>s+=e.map(t).join(" "),addNewLine=()=>s+=` ${r}`,addIndent=(e=1)=>s+=" ".repeat(e);let o=e.get("headers");s+="curl"+a;const l=e.get("curlOptions");if(N.List.isList(l)&&!l.isEmpty()&&addWords(...e.get("curlOptions")),addWords("-X",e.get("method")),addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`${e.get("url")}`),o&&o.size)for(let t of e.get("headers").entries()){addNewLine(),addIndent();let[e,r]=t;addWordsWithoutLeadingSpace("-H",`${e}: ${r}`),n=n||/^content-type$/i.test(e)&&/^multipart\/form-data$/i.test(r)}const c=e.get("body");if(c)if(n&&["POST","PUT","PATCH"].includes(e.get("method")))for(let[e,t]of c.entrySeq()){let r=extractKey(e);addNewLine(),addIndent(),addWordsWithoutLeadingSpace("-F"),t instanceof L.File&&"string"==typeof t.valueOf()?addWords(`${r}=${t.data}${t.type?`;type=${t.type}`:""}`):t instanceof L.File?addWords(`${r}=@${t.name}${t.type?`;type=${t.type}`:""}`):addWords(`${r}=${t}`)}else if(c instanceof L.File)addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`--data-binary '@${c.name}'`);else{addNewLine(),addIndent(),addWordsWithoutLeadingSpace("-d ");let t=c;N.Map.isMap(t)?addWordsWithoutLeadingSpace(function getStringBodyOfMap(e){let t=[];for(let[r,a]of e.get("body").entrySeq()){let e=extractKey(r);a instanceof L.File?t.push(` "${e}": {\n "name": "${a.name}"${a.type?`,\n "type": "${a.type}"`:""}\n }`):t.push(` "${e}": ${JSON.stringify(a,null,2).replace(/(\r\n|\r|\n)/g,"\n ")}`)}return`{\n${t.join(",\n")}\n}`}(e)):("string"!=typeof t&&(t=JSON.stringify(t)),addWordsWithoutLeadingSpace(t))}else c||"POST"!==e.get("method")||(addNewLine(),addIndent(),addWordsWithoutLeadingSpace("-d ''"));return s},requestSnippetGenerator_curl_powershell=e=>curlify(e,escapePowershell,"`\n",".exe"),requestSnippetGenerator_curl_bash=e=>curlify(e,escapeShell,"\\\n"),requestSnippetGenerator_curl_cmd=e=>curlify(e,escapeCMD,"^\n"),request_snippets_selectors_state=e=>e||(0,N.Map)(),ct=(0,we.createSelector)(request_snippets_selectors_state,(e=>{const t=e.get("languages"),r=e.get("generators",(0,N.Map)());return!t||t.isEmpty()?r:r.filter(((e,r)=>t.includes(r)))})),getSnippetGenerators=e=>({fn:t})=>ct(e).map(((e,r)=>{const a=(e=>t[`requestSnippetGenerator_${e}`])(r);return"function"!=typeof a?null:e.set("fn",a)})).filter((e=>e)),it=(0,we.createSelector)(request_snippets_selectors_state,(e=>e.get("activeLanguage"))),pt=(0,we.createSelector)(request_snippets_selectors_state,(e=>e.get("defaultExpanded"))),mt=require("classnames");var ut=__webpack_require__.n(mt);const dt=require("react-copy-to-clipboard"),ht={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(250, 250, 250)",paddingBottom:"0",paddingTop:"0",border:"1px solid rgb(51, 51, 51)",borderRadius:"4px 4px 0 0",boxShadow:"none",borderBottom:"none"},gt={cursor:"pointer",lineHeight:1,display:"inline-flex",backgroundColor:"rgb(51, 51, 51)",boxShadow:"none",border:"1px solid rgb(51, 51, 51)",paddingBottom:"0",paddingTop:"0",borderRadius:"4px 4px 0 0",marginTop:"-5px",marginRight:"-5px",marginLeft:"-5px",zIndex:"9999",borderBottom:"none"},request_snippets=({request:e,requestSnippetsSelectors:t,getComponent:r})=>{const a=(0,C.useRef)(null),n=r("ArrowUpIcon"),s=r("ArrowDownIcon"),o=r("SyntaxHighlighter",!0),[l,c]=(0,C.useState)(t.getSnippetGenerators()?.keySeq().first()),[i,p]=(0,C.useState)(t?.getDefaultExpanded()),m=t.getSnippetGenerators(),u=m.get(l),d=u.get("fn")(e),handleSetIsExpanded=()=>{p(!i)},handleGetBtnStyle=e=>e===l?gt:ht,handlePreventYScrollingBeyondElement=e=>{const{target:t,deltaY:r}=e,{scrollHeight:a,offsetHeight:n,scrollTop:s}=t;a>n&&(0===s&&r<0||n+s>=a&&r>0)&&e.preventDefault()};return(0,C.useEffect)((()=>{}),[]),(0,C.useEffect)((()=>{const e=Array.from(a.current.childNodes).filter((e=>!!e.nodeType&&e.classList?.contains("curl-command")));return e.forEach((e=>e.addEventListener("mousewheel",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{e.forEach((e=>e.removeEventListener("mousewheel",handlePreventYScrollingBeyondElement)))}}),[e]),x().createElement("div",{className:"request-snippets",ref:a},x().createElement("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"center",marginBottom:"15px"}},x().createElement("h4",{onClick:()=>handleSetIsExpanded(),style:{cursor:"pointer"}},"Snippets"),x().createElement("button",{onClick:()=>handleSetIsExpanded(),style:{border:"none",background:"none"},title:i?"Collapse operation":"Expand operation"},i?x().createElement(s,{className:"arrow",width:"10",height:"10"}):x().createElement(n,{className:"arrow",width:"10",height:"10"}))),i&&x().createElement("div",{className:"curl-command"},x().createElement("div",{style:{paddingLeft:"15px",paddingRight:"10px",width:"100%",display:"flex"}},m.entrySeq().map((([e,t])=>x().createElement("div",{className:ut()("btn",{active:e===l}),style:handleGetBtnStyle(e),key:e,onClick:()=>(e=>{l!==e&&c(e)})(e)},x().createElement("h4",{style:e===l?{color:"white"}:{}},t.get("title")))))),x().createElement("div",{className:"copy-to-clipboard"},x().createElement(dt.CopyToClipboard,{text:d},x().createElement("button",null))),x().createElement("div",null,x().createElement(o,{language:u.get("syntax"),className:"curl microlight",renderPlainText:({children:e,PlainTextViewer:t})=>x().createElement(t,{className:"curl"},e)},d))))},plugins_request_snippets=()=>({components:{RequestSnippets:request_snippets},fn:u,statePlugins:{requestSnippets:{selectors:d}}});class ModelCollapse extends C.Component{static defaultProps={collapsedContent:"{...}",expanded:!1,title:null,onToggle:()=>{},hideSelfOnExpand:!1,specPath:k().List([])};constructor(e,t){super(e,t);let{expanded:r,collapsedContent:a}=this.props;this.state={expanded:r,collapsedContent:a||ModelCollapse.defaultProps.collapsedContent}}componentDidMount(){const{hideSelfOnExpand:e,expanded:t,modelName:r}=this.props;e&&t&&this.props.onToggle(r,t)}UNSAFE_componentWillReceiveProps(e){this.props.expanded!==e.expanded&&this.setState({expanded:e.expanded})}toggleCollapsed=()=>{this.props.onToggle&&this.props.onToggle(this.props.modelName,!this.state.expanded),this.setState({expanded:!this.state.expanded})};onLoad=e=>{if(e&&this.props.layoutSelectors){const t=this.props.layoutSelectors.getScrollToKey();k().is(t,this.props.specPath)&&this.toggleCollapsed(),this.props.layoutActions.readyToScroll(this.props.specPath,e.parentElement)}};render(){const{title:e,classes:t}=this.props;return this.state.expanded&&this.props.hideSelfOnExpand?x().createElement("span",{className:t||""},this.props.children):x().createElement("span",{className:t||"",ref:this.onLoad},x().createElement("button",{"aria-expanded":this.state.expanded,className:"model-box-control",onClick:this.toggleCollapsed},e&&x().createElement("span",{className:"pointer"},e),x().createElement("span",{className:"model-toggle"+(this.state.expanded?"":" collapsed")}),!this.state.expanded&&x().createElement("span",null,this.state.collapsedContent)),this.state.expanded&&this.props.children)}}const useTabs=({initialTab:e,isExecute:t,schema:r,example:a})=>{const n=(0,C.useMemo)((()=>({example:"example",model:"model"})),[]),s=(0,C.useMemo)((()=>Object.keys(n)),[n]).includes(e)&&r&&!t?e:n.example,o=(e=>{const t=(0,C.useRef)();return(0,C.useEffect)((()=>{t.current=e})),t.current})(t),[l,c]=(0,C.useState)(s),i=(0,C.useCallback)((e=>{c(e.target.dataset.name)}),[]);return(0,C.useEffect)((()=>{o&&!t&&a&&c(n.example)}),[o,t,a]),{activeTab:l,onTabChange:i,tabs:n}},model_example=({schema:e,example:t,isExecute:r=!1,specPath:a,includeWriteOnly:n=!1,includeReadOnly:s=!1,getComponent:o,getConfigs:l,specSelectors:c})=>{const{defaultModelRendering:i,defaultModelExpandDepth:p}=l(),m=o("ModelWrapper"),u=o("HighlightCode",!0),d=ae()(5).toString("base64"),h=ae()(5).toString("base64"),g=ae()(5).toString("base64"),y=ae()(5).toString("base64"),f=c.isOAS3(),{activeTab:S,tabs:E,onTabChange:_}=useTabs({initialTab:i,isExecute:r,schema:e,example:t});return x().createElement("div",{className:"model-example"},x().createElement("ul",{className:"tab",role:"tablist"},x().createElement("li",{className:ut()("tabitem",{active:S===E.example}),role:"presentation"},x().createElement("button",{"aria-controls":h,"aria-selected":S===E.example,className:"tablinks","data-name":"example",id:d,onClick:_,role:"tab"},r?"Edit Value":"Example Value")),e&&x().createElement("li",{className:ut()("tabitem",{active:S===E.model}),role:"presentation"},x().createElement("button",{"aria-controls":y,"aria-selected":S===E.model,className:ut()("tablinks",{inactive:r}),"data-name":"model",id:g,onClick:_,role:"tab"},f?"Schema":"Model"))),S===E.example&&x().createElement("div",{"aria-hidden":S!==E.example,"aria-labelledby":d,"data-name":"examplePanel",id:h,role:"tabpanel",tabIndex:"0"},t||x().createElement(u,null,"(no example available")),S===E.model&&x().createElement("div",{"aria-hidden":S===E.example,"aria-labelledby":g,"data-name":"modelPanel",id:y,role:"tabpanel",tabIndex:"0"},x().createElement(m,{schema:e,getComponent:o,getConfigs:l,specSelectors:c,expandDepth:p,specPath:a,includeReadOnly:s,includeWriteOnly:n})))};class ModelWrapper extends C.Component{onToggle=(e,t)=>{this.props.layoutActions&&this.props.layoutActions.show(this.props.fullPath,t)};render(){let{getComponent:e,getConfigs:t}=this.props;const r=e("Model");let a;return this.props.layoutSelectors&&(a=this.props.layoutSelectors.isShown(this.props.fullPath)),x().createElement("div",{className:"model-box"},x().createElement(r,et()({},this.props,{getConfigs:t,expanded:a,depth:1,onToggle:this.onToggle,expandDepth:this.props.expandDepth||0})))}}const yt=require("react-immutable-pure-component");var ft,St=__webpack_require__.n(yt);function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;tC.createElement("svg",_extends({xmlns:"http://www.w3.org/2000/svg",width:200,height:200,className:"rolling-load_svg__lds-rolling",preserveAspectRatio:"xMidYMid",style:{backgroundImage:"none",backgroundPosition:"initial initial",backgroundRepeat:"initial initial"},viewBox:"0 0 100 100"},e),ft||(ft=C.createElement("circle",{cx:50,cy:50,r:35,fill:"none",stroke:"#555",strokeDasharray:"164.93361431346415 56.97787143782138",strokeWidth:10},C.createElement("animateTransform",{attributeName:"transform",begin:"0s",calcMode:"linear",dur:"1s",keyTimes:"0;1",repeatCount:"indefinite",type:"rotate",values:"0 50 50;360 50 50"})))),decodeRefName=e=>{const t=e.replace(/~1/g,"/").replace(/~0/g,"~");try{return decodeURIComponent(t)}catch{return t}};class Model extends(St()){static propTypes={schema:ze().map.isRequired,getComponent:ke().func.isRequired,getConfigs:ke().func.isRequired,specSelectors:ke().object.isRequired,name:ke().string,displayName:ke().string,isRef:ke().bool,required:ke().bool,expandDepth:ke().number,depth:ke().number,specPath:ze().list.isRequired,includeReadOnly:ke().bool,includeWriteOnly:ke().bool};getModelName=e=>-1!==e.indexOf("#/definitions/")?decodeRefName(e.replace(/^.*#\/definitions\//,"")):-1!==e.indexOf("#/components/schemas/")?decodeRefName(e.replace(/^.*#\/components\/schemas\//,"")):void 0;getRefSchema=e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)};render(){let{getComponent:e,getConfigs:t,specSelectors:r,schema:a,required:n,name:s,isRef:o,specPath:l,displayName:c,includeReadOnly:i,includeWriteOnly:p}=this.props;const m=e("ObjectModel"),u=e("ArrayModel"),d=e("PrimitiveModel");let h="object",g=a&&a.get("$$ref"),y=a&&a.get("$ref");if(!s&&g&&(s=this.getModelName(g)),y){const e=this.getModelName(y),t=this.getRefSchema(e);N.Map.isMap(t)?(a=t.mergeDeep(a),g||(a=a.set("$$ref",y),g=y)):N.Map.isMap(a)&&1===a.size&&(a=null,s=y)}if(!a)return x().createElement("span",{className:"model model-title"},x().createElement("span",{className:"model-title__text"},c||s),!y&&x().createElement(rolling_load,{height:"20px",width:"20px"}));const f=r.isOAS3()&&a.get("deprecated");switch(o=void 0!==o?o:!!g,h=a&&a.get("type")||h,h){case"object":return x().createElement(m,et()({className:"object"},this.props,{specPath:l,getConfigs:t,schema:a,name:s,deprecated:f,isRef:o,includeReadOnly:i,includeWriteOnly:p}));case"array":return x().createElement(u,et()({className:"array"},this.props,{getConfigs:t,schema:a,name:s,deprecated:f,required:n,includeReadOnly:i,includeWriteOnly:p}));default:return x().createElement(d,et()({},this.props,{getComponent:e,getConfigs:t,schema:a,name:s,deprecated:f,required:n}))}}}class Models extends C.Component{getSchemaBasePath=()=>this.props.specSelectors.isOAS3()?["components","schemas"]:["definitions"];getCollapsedContent=()=>" ";handleToggle=(e,t)=>{const{layoutActions:r}=this.props;r.show([...this.getSchemaBasePath(),e],t),t&&this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(),e])};onLoadModels=e=>{e&&this.props.layoutActions.readyToScroll(this.getSchemaBasePath(),e)};onLoadModel=e=>{if(e){const t=e.getAttribute("data-name");this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(),t],e)}};render(){let{specSelectors:e,getComponent:t,layoutSelectors:r,layoutActions:a,getConfigs:n}=this.props,s=e.definitions(),{docExpansion:o,defaultModelsExpandDepth:l}=n();if(!s.size||l<0)return null;const c=this.getSchemaBasePath();let i=r.isShown(c,l>0&&"none"!==o);const p=e.isOAS3(),m=t("ModelWrapper"),u=t("Collapse"),d=t("ModelCollapse"),h=t("JumpToPath",!0),g=t("ArrowUpIcon"),y=t("ArrowDownIcon");return x().createElement("section",{className:i?"models is-open":"models",ref:this.onLoadModels},x().createElement("h4",null,x().createElement("button",{"aria-expanded":i,className:"models-control",onClick:()=>a.show(c,!i)},x().createElement("span",null,p?"Schemas":"Models"),i?x().createElement(g,null):x().createElement(y,null))),x().createElement(u,{isOpened:i},s.entrySeq().map((([s])=>{const o=[...c,s],i=k().List(o),p=e.specResolvedSubtree(o),u=e.specJson().getIn(o),g=N.Map.isMap(p)?p:k().Map(),y=N.Map.isMap(u)?u:k().Map(),f=g.get("title")||y.get("title")||s,S=r.isShown(o,!1);S&&0===g.size&&y.size>0&&this.props.specActions.requestResolvedSubtree(o);const E=x().createElement(m,{name:s,expandDepth:l,schema:g||k().Map(),displayName:f,fullPath:o,specPath:i,getComponent:t,specSelectors:e,getConfigs:n,layoutSelectors:r,layoutActions:a,includeReadOnly:!0,includeWriteOnly:!0}),_=x().createElement("span",{className:"model-box"},x().createElement("span",{className:"model model-title"},f));return x().createElement("div",{id:`model-${s}`,className:"model-container",key:`models-section-${s}`,"data-name":s,ref:this.onLoadModel},x().createElement("span",{className:"models-jump-to-path"},x().createElement(h,{specPath:i})),x().createElement(d,{classes:"model-box",collapsedContent:this.getCollapsedContent(s),onToggle:this.handleToggle,title:_,displayName:f,modelName:s,specPath:i,layoutSelectors:r,layoutActions:a,hideSelfOnExpand:!0,expanded:l>0&&S},E))})).toArray()))}}const enum_model=({value:e,getComponent:t})=>{let r=t("ModelCollapse"),a=x().createElement("span",null,"Array [ ",e.count()," ]");return x().createElement("span",{className:"prop-enum"},"Enum:",x().createElement("br",null),x().createElement(r,{collapsedContent:a},"[ ",e.map(String).join(", ")," ]"))};class ObjectModel extends C.Component{render(){let{schema:e,name:t,displayName:r,isRef:a,getComponent:n,getConfigs:s,depth:o,onToggle:l,expanded:c,specPath:i,...p}=this.props,{specSelectors:m,expandDepth:u,includeReadOnly:d,includeWriteOnly:h}=p;const{isOAS3:g}=m;if(!e)return null;const{showExtensions:y}=s();let f=e.get("description"),S=e.get("properties"),E=e.get("additionalProperties"),_=e.get("title")||r||t,v=e.get("required"),w=e.filter(((e,t)=>-1!==["maxProperties","minProperties","nullable","example"].indexOf(t))),b=e.get("deprecated"),C=e.getIn(["externalDocs","url"]),O=e.getIn(["externalDocs","description"]);const k=n("JumpToPath",!0),A=n("Markdown",!0),I=n("Model"),q=n("ModelCollapse"),j=n("Property"),P=n("Link"),JumpToPathSection=()=>x().createElement("span",{className:"model-jump-to-path"},x().createElement(k,{specPath:i})),M=x().createElement("span",null,x().createElement("span",null,"{"),"...",x().createElement("span",null,"}"),a?x().createElement(JumpToPathSection,null):""),R=m.isOAS3()?e.get("allOf"):null,T=m.isOAS3()?e.get("anyOf"):null,J=m.isOAS3()?e.get("oneOf"):null,$=m.isOAS3()?e.get("not"):null,V=_&&x().createElement("span",{className:"model-title"},a&&e.get("$$ref")&&x().createElement("span",{className:"model-hint"},e.get("$$ref")),x().createElement("span",{className:"model-title__text"},_));return x().createElement("span",{className:"model"},x().createElement(q,{modelName:t,title:V,onToggle:l,expanded:!!c||o<=u,collapsedContent:M},x().createElement("span",{className:"brace-open object"},"{"),a?x().createElement(JumpToPathSection,null):null,x().createElement("span",{className:"inner-object"},x().createElement("table",{className:"model"},x().createElement("tbody",null,f?x().createElement("tr",{className:"description"},x().createElement("td",null,"description:"),x().createElement("td",null,x().createElement(A,{source:f}))):null,C&&x().createElement("tr",{className:"external-docs"},x().createElement("td",null,"externalDocs:"),x().createElement("td",null,x().createElement(P,{target:"_blank",href:sanitizeUrl(C)},O||C))),b?x().createElement("tr",{className:"property"},x().createElement("td",null,"deprecated:"),x().createElement("td",null,"true")):null,S&&S.size?S.entrySeq().filter((([,e])=>(!e.get("readOnly")||d)&&(!e.get("writeOnly")||h))).map((([e,r])=>{let a=g()&&r.get("deprecated"),l=N.List.isList(v)&&v.contains(e),c=["property-row"];return a&&c.push("deprecated"),l&&c.push("required"),x().createElement("tr",{key:e,className:c.join(" ")},x().createElement("td",null,e,l&&x().createElement("span",{className:"star"},"*")),x().createElement("td",null,x().createElement(I,et()({key:`object-${t}-${e}_${r}`},p,{required:l,getComponent:n,specPath:i.push("properties",e),getConfigs:s,schema:r,depth:o+1}))))})).toArray():null,y?x().createElement("tr",null,x().createElement("td",null," ")):null,y?e.entrySeq().map((([e,t])=>{if("x-"!==e.slice(0,2))return;const r=t?t.toJS?t.toJS():t:null;return x().createElement("tr",{key:e,className:"extension"},x().createElement("td",null,e),x().createElement("td",null,JSON.stringify(r)))})).toArray():null,E&&E.size?x().createElement("tr",null,x().createElement("td",null,"< * >:"),x().createElement("td",null,x().createElement(I,et()({},p,{required:!1,getComponent:n,specPath:i.push("additionalProperties"),getConfigs:s,schema:E,depth:o+1})))):null,R?x().createElement("tr",null,x().createElement("td",null,"allOf ->"),x().createElement("td",null,R.map(((e,t)=>x().createElement("div",{key:t},x().createElement(I,et()({},p,{required:!1,getComponent:n,specPath:i.push("allOf",t),getConfigs:s,schema:e,depth:o+1}))))))):null,T?x().createElement("tr",null,x().createElement("td",null,"anyOf ->"),x().createElement("td",null,T.map(((e,t)=>x().createElement("div",{key:t},x().createElement(I,et()({},p,{required:!1,getComponent:n,specPath:i.push("anyOf",t),getConfigs:s,schema:e,depth:o+1}))))))):null,J?x().createElement("tr",null,x().createElement("td",null,"oneOf ->"),x().createElement("td",null,J.map(((e,t)=>x().createElement("div",{key:t},x().createElement(I,et()({},p,{required:!1,getComponent:n,specPath:i.push("oneOf",t),getConfigs:s,schema:e,depth:o+1}))))))):null,$?x().createElement("tr",null,x().createElement("td",null,"not ->"),x().createElement("td",null,x().createElement("div",null,x().createElement(I,et()({},p,{required:!1,getComponent:n,specPath:i.push("not"),getConfigs:s,schema:$,depth:o+1}))))):null))),x().createElement("span",{className:"brace-close"},"}")),w.size?w.entrySeq().map((([e,t])=>x().createElement(j,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:"property"}))):null)}}class ArrayModel extends C.Component{render(){let{getComponent:e,getConfigs:t,schema:r,depth:a,expandDepth:n,name:s,displayName:o,specPath:l}=this.props,c=r.get("description"),i=r.get("items"),p=r.get("title")||o||s,m=r.filter(((e,t)=>-1===["type","items","description","$$ref","externalDocs"].indexOf(t))),u=r.getIn(["externalDocs","url"]),d=r.getIn(["externalDocs","description"]);const h=e("Markdown",!0),g=e("ModelCollapse"),y=e("Model"),f=e("Property"),S=e("Link"),E=p&&x().createElement("span",{className:"model-title"},x().createElement("span",{className:"model-title__text"},p));return x().createElement("span",{className:"model"},x().createElement(g,{title:E,expanded:a<=n,collapsedContent:"[...]"},"[",m.size?m.entrySeq().map((([e,t])=>x().createElement(f,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:"property"}))):null,c?x().createElement(h,{source:c}):m.size?x().createElement("div",{className:"markdown"}):null,u&&x().createElement("div",{className:"external-docs"},x().createElement(S,{target:"_blank",href:sanitizeUrl(u)},d||u)),x().createElement("span",null,x().createElement(y,et()({},this.props,{getConfigs:t,specPath:l.push("items"),name:null,schema:i,required:!1,depth:a+1}))),"]"))}}const Et="property primitive";class Primitive extends C.Component{render(){let{schema:e,getComponent:t,getConfigs:r,name:a,displayName:n,depth:s,expandDepth:o}=this.props;const{showExtensions:l}=r();if(!e||!e.get)return x().createElement("div",null);let c=e.get("type"),i=e.get("format"),p=e.get("xml"),m=e.get("enum"),u=e.get("title")||n||a,d=e.get("description"),h=getExtensions(e),g=e.filter(((e,t)=>-1===["enum","type","format","description","$$ref","externalDocs"].indexOf(t))).filterNot(((e,t)=>h.has(t))),y=e.getIn(["externalDocs","url"]),f=e.getIn(["externalDocs","description"]);const S=t("Markdown",!0),E=t("EnumModel"),_=t("Property"),v=t("ModelCollapse"),w=t("Link"),b=u&&x().createElement("span",{className:"model-title"},x().createElement("span",{className:"model-title__text"},u));return x().createElement("span",{className:"model"},x().createElement(v,{title:b,expanded:s<=o,collapsedContent:"[...]"},x().createElement("span",{className:"prop"},a&&s>1&&x().createElement("span",{className:"prop-name"},u),x().createElement("span",{className:"prop-type"},c),i&&x().createElement("span",{className:"prop-format"},"($",i,")"),g.size?g.entrySeq().map((([e,t])=>x().createElement(_,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:Et}))):null,l&&h.size?h.entrySeq().map((([e,t])=>x().createElement(_,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:Et}))):null,d?x().createElement(S,{source:d}):null,y&&x().createElement("div",{className:"external-docs"},x().createElement(w,{target:"_blank",href:sanitizeUrl(y)},f||y)),p&&p.size?x().createElement("span",null,x().createElement("br",null),x().createElement("span",{className:Et},"xml:"),p.entrySeq().map((([e,t])=>x().createElement("span",{key:`${e}-${t}`,className:Et},x().createElement("br",null),"   ",e,": ",String(t)))).toArray()):null,m&&x().createElement(E,{value:m,getComponent:t}))))}}class Schemes extends x().Component{UNSAFE_componentWillMount(){let{schemes:e}=this.props;this.setScheme(e.first())}UNSAFE_componentWillReceiveProps(e){this.props.currentScheme&&e.schemes.includes(this.props.currentScheme)||this.setScheme(e.schemes.first())}onChange=e=>{this.setScheme(e.target.value)};setScheme=e=>{let{path:t,method:r,specActions:a}=this.props;a.setScheme(e,t,r)};render(){let{schemes:e,currentScheme:t}=this.props;return x().createElement("label",{htmlFor:"schemes"},x().createElement("span",{className:"schemes-title"},"Schemes"),x().createElement("select",{onChange:this.onChange,value:t,id:"schemes"},e.valueSeq().map((e=>x().createElement("option",{value:e,key:e},e))).toArray()))}}class SchemesContainer extends x().Component{render(){const{specActions:e,specSelectors:t,getComponent:r}=this.props,a=t.operationScheme(),n=t.schemes(),s=r("schemes");return n&&n.size?x().createElement(s,{currentScheme:a,schemes:n,specActions:e}):null}}const _t=require("react-debounce-input");var vt=__webpack_require__.n(_t);const wt={value:"",onChange:()=>{},schema:{},keyName:"",required:!1,errors:(0,N.List)()};class JsonSchemaForm extends C.Component{static defaultProps=wt;componentDidMount(){const{dispatchInitialValue:e,value:t,onChange:r}=this.props;e?r(t):!1===e&&r("")}render(){let{schema:e,errors:t,value:r,onChange:a,getComponent:n,fn:s,disabled:o}=this.props;const l=e&&e.get?e.get("format"):null,c=e&&e.get?e.get("type"):null;let getComponentSilently=e=>n(e,!1,{failSilently:!0}),i=c?getComponentSilently(l?`JsonSchema_${c}_${l}`:`JsonSchema_${c}`):n("JsonSchema_string");return i||(i=n("JsonSchema_string")),x().createElement(i,et()({},this.props,{errors:t,fn:s,getComponent:n,value:r,onChange:a,schema:e,disabled:o}))}}class JsonSchema_string extends C.Component{static defaultProps=wt;onChange=e=>{const t=this.props.schema&&"file"===this.props.schema.get("type")?e.target.files[0]:e.target.value;this.props.onChange(t,this.props.keyName)};onEnumChange=e=>this.props.onChange(e);render(){let{getComponent:e,value:t,schema:r,errors:a,required:n,description:s,disabled:o}=this.props;const l=r&&r.get?r.get("enum"):null,c=r&&r.get?r.get("format"):null,i=r&&r.get?r.get("type"):null,p=r&&r.get?r.get("in"):null;if(t||(t=""),a=a.toJS?a.toJS():[],l){const r=e("Select");return x().createElement(r,{className:a.length?"invalid":"",title:a.length?a:"",allowedValues:[...l],value:t,allowEmptyValue:!n,disabled:o,onChange:this.onEnumChange})}const m=o||p&&"formData"===p&&!("FormData"in window),u=e("Input");return i&&"file"===i?x().createElement(u,{type:"file",className:a.length?"invalid":"",title:a.length?a:"",onChange:this.onChange,disabled:m}):x().createElement(vt(),{type:c&&"password"===c?"password":"text",className:a.length?"invalid":"",title:a.length?a:"",value:t,minLength:0,debounceTimeout:350,placeholder:s,onChange:this.onChange,disabled:m})}}class JsonSchema_array extends C.PureComponent{static defaultProps=wt;constructor(e,t){super(e,t),this.state={value:valueOrEmptyList(e.value),schema:e.schema}}UNSAFE_componentWillReceiveProps(e){const t=valueOrEmptyList(e.value);t!==this.state.value&&this.setState({value:t}),e.schema!==this.state.schema&&this.setState({schema:e.schema})}onChange=()=>{this.props.onChange(this.state.value)};onItemChange=(e,t)=>{this.setState((({value:r})=>({value:r.set(t,e)})),this.onChange)};removeItem=e=>{this.setState((({value:t})=>({value:t.delete(e)})),this.onChange)};addItem=()=>{const{fn:e}=this.props;let t=valueOrEmptyList(this.state.value);this.setState((()=>({value:t.push(e.getSampleSchema(this.state.schema.get("items"),!1,{includeWriteOnly:!0}))})),this.onChange)};onEnumChange=e=>{this.setState((()=>({value:e})),this.onChange)};render(){let{getComponent:e,required:t,schema:r,errors:a,fn:n,disabled:s}=this.props;a=a.toJS?a.toJS():Array.isArray(a)?a:[];const o=a.filter((e=>"string"==typeof e)),l=a.filter((e=>void 0!==e.needRemove)).map((e=>e.error)),c=this.state.value,i=!!(c&&c.count&&c.count()>0),p=r.getIn(["items","enum"]),m=r.getIn(["items","type"]),u=r.getIn(["items","format"]),d=r.get("items");let h,g=!1,y="file"===m||"string"===m&&"binary"===u;if(m&&u?h=e(`JsonSchema_${m}_${u}`):"boolean"!==m&&"array"!==m&&"object"!==m||(h=e(`JsonSchema_${m}`)),h||y||(g=!0),p){const r=e("Select");return x().createElement(r,{className:a.length?"invalid":"",title:a.length?a:"",multiple:!0,value:c,disabled:s,allowedValues:p,allowEmptyValue:!t,onChange:this.onEnumChange})}const f=e("Button");return x().createElement("div",{className:"json-schema-array"},i?c.map(((t,r)=>{const o=(0,N.fromJS)([...a.filter((e=>e.index===r)).map((e=>e.error))]);return x().createElement("div",{key:r,className:"json-schema-form-item"},y?x().createElement(JsonSchemaArrayItemFile,{value:t,onChange:e=>this.onItemChange(e,r),disabled:s,errors:o,getComponent:e}):g?x().createElement(JsonSchemaArrayItemText,{value:t,onChange:e=>this.onItemChange(e,r),disabled:s,errors:o}):x().createElement(h,et()({},this.props,{value:t,onChange:e=>this.onItemChange(e,r),disabled:s,errors:o,schema:d,getComponent:e,fn:n})),s?null:x().createElement(f,{className:`btn btn-sm json-schema-form-item-remove ${l.length?"invalid":null}`,title:l.length?l:"",onClick:()=>this.removeItem(r)}," - "))})):null,s?null:x().createElement(f,{className:`btn btn-sm json-schema-form-item-add ${o.length?"invalid":null}`,title:o.length?o:"",onClick:this.addItem},"Add ",m?`${m} `:"","item"))}}class JsonSchemaArrayItemText extends C.Component{static defaultProps=wt;onChange=e=>{const t=e.target.value;this.props.onChange(t,this.props.keyName)};render(){let{value:e,errors:t,description:r,disabled:a}=this.props;return e||(e=""),t=t.toJS?t.toJS():[],x().createElement(vt(),{type:"text",className:t.length?"invalid":"",title:t.length?t:"",value:e,minLength:0,debounceTimeout:350,placeholder:r,onChange:this.onChange,disabled:a})}}class JsonSchemaArrayItemFile extends C.Component{static defaultProps=wt;onFileChange=e=>{const t=e.target.files[0];this.props.onChange(t,this.props.keyName)};render(){let{getComponent:e,errors:t,disabled:r}=this.props;const a=e("Input"),n=r||!("FormData"in window);return x().createElement(a,{type:"file",className:t.length?"invalid":"",title:t.length?t:"",onChange:this.onFileChange,disabled:n})}}class JsonSchema_boolean extends C.Component{static defaultProps=wt;onEnumChange=e=>this.props.onChange(e);render(){let{getComponent:e,value:t,errors:r,schema:a,required:n,disabled:s}=this.props;r=r.toJS?r.toJS():[];let o=a&&a.get?a.get("enum"):null,l=!o||!n,c=!o&&["true","false"];const i=e("Select");return x().createElement(i,{className:r.length?"invalid":"",title:r.length?r:"",value:String(t),disabled:s,allowedValues:o?[...o]:c,allowEmptyValue:l,onChange:this.onEnumChange})}}const stringifyObjectErrors=e=>e.map((e=>{const t=void 0!==e.propKey?e.propKey:e.index;let r="string"==typeof e?e:"string"==typeof e.error?e.error:null;if(!t&&r)return r;let a=e.error,n=`/${e.propKey}`;for(;"object"==typeof a;){const e=void 0!==a.propKey?a.propKey:a.index;if(void 0===e)break;if(n+=`/${e}`,!a.error)break;a=a.error}return`${n}: ${a}`}));class JsonSchema_object extends C.PureComponent{constructor(){super()}static defaultProps=wt;onChange=e=>{this.props.onChange(e)};handleOnChange=e=>{const t=e.target.value;this.onChange(t)};render(){let{getComponent:e,value:t,errors:r,disabled:a}=this.props;const n=e("TextArea");return r=r.toJS?r.toJS():Array.isArray(r)?r:[],x().createElement("div",null,x().createElement(n,{className:ut()({invalid:r.length}),title:r.length?stringifyObjectErrors(r).join(", "):"",value:stringify(t),disabled:a,onChange:this.handleOnChange}))}}function valueOrEmptyList(e){return N.List.isList(e)?e:Array.isArray(e)?(0,N.fromJS)(e):(0,N.List)()}const json_schema_5=()=>({components:{modelExample:model_example,ModelWrapper,ModelCollapse,Model,Models,EnumModel:enum_model,ObjectModel,ArrayModel,PrimitiveModel:Primitive,schemes:Schemes,SchemesContainer,...h}}),bt=require("xml");var Ct=__webpack_require__.n(bt);const xt=require("randexp");var Ot=__webpack_require__.n(xt);const Nt=require("lodash/isEmpty");var kt=__webpack_require__.n(Nt);const shallowArrayEquals=e=>t=>Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every(((e,r)=>e===t[r])),list=(...e)=>e;class Cache extends Map{delete(e){const t=Array.from(this.keys()).find(shallowArrayEquals(e));return super.delete(t)}get(e){const t=Array.from(this.keys()).find(shallowArrayEquals(e));return super.get(t)}has(e){return-1!==Array.from(this.keys()).findIndex(shallowArrayEquals(e))}}const utils_memoizeN=(e,t=list)=>{const{Cache:r}=B();B().Cache=Cache;const a=B()(e,t);return B().Cache=r,a},At={string:e=>e.pattern?(e=>{try{return new(Ot())(e).gen()}catch(e){return"string"}})(e.pattern):"string",string_email:()=>"user@example.com","string_date-time":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6",string_hostname:()=>"example.com",string_ipv4:()=>"198.51.100.42",string_ipv6:()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a",number:()=>0,number_float:()=>0,integer:()=>0,boolean:e=>"boolean"!=typeof e.default||e.default},primitive=e=>{e=objectify(e);let{type:t,format:r}=e,a=At[`${t}_${r}`]||At[t];return isFunc(a)?a(e):"Unknown Type: "+e.type},sanitizeRef=e=>deeplyStripKey(e,"$$ref",(e=>"string"==typeof e&&e.indexOf("#")>-1)),It=["maxProperties","minProperties"],qt=["minItems","maxItems"],jt=["minimum","maximum","exclusiveMinimum","exclusiveMaximum"],Pt=["minLength","maxLength"],mergeJsonSchema=(e,t,r={})=>{const a={...e};if(["example","default","enum","xml","type",...It,...qt,...jt,...Pt].forEach((e=>(e=>{void 0===a[e]&&void 0!==t[e]&&(a[e]=t[e])})(e))),void 0!==t.required&&Array.isArray(t.required)&&(void 0!==a.required&&a.required.length||(a.required=[]),t.required.forEach((e=>{a.required.includes(e)||a.required.push(e)}))),t.properties){a.properties||(a.properties={});let e=objectify(t.properties);for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]&&e[n].deprecated||e[n]&&e[n].readOnly&&!r.includeReadOnly||e[n]&&e[n].writeOnly&&!r.includeWriteOnly||a.properties[n]||(a.properties[n]=e[n],!t.required&&Array.isArray(t.required)&&-1!==t.required.indexOf(n)&&(a.required?a.required.push(n):a.required=[n])))}return t.items&&(a.items||(a.items={}),a.items=mergeJsonSchema(a.items,t.items,r)),a},sampleFromSchemaGeneric=(e,t={},r=void 0,a=!1)=>{e&&isFunc(e.toJS)&&(e=e.toJS());let n=void 0!==r||e&&void 0!==e.example||e&&void 0!==e.default;const s=!n&&e&&e.oneOf&&e.oneOf.length>0,o=!n&&e&&e.anyOf&&e.anyOf.length>0;if(!n&&(s||o)){const r=objectify(s?e.oneOf[0]:e.anyOf[0]);if(!(e=mergeJsonSchema(e,r,t)).xml&&r.xml&&(e.xml=r.xml),void 0!==e.example&&void 0!==r.example)n=!0;else if(r.properties){e.properties||(e.properties={});let a=objectify(r.properties);for(let n in a)Object.prototype.hasOwnProperty.call(a,n)&&(a[n]&&a[n].deprecated||a[n]&&a[n].readOnly&&!t.includeReadOnly||a[n]&&a[n].writeOnly&&!t.includeWriteOnly||e.properties[n]||(e.properties[n]=a[n],!r.required&&Array.isArray(r.required)&&-1!==r.required.indexOf(n)&&(e.required?e.required.push(n):e.required=[n])))}}const l={};let{xml:c,type:i,example:p,properties:m,additionalProperties:u,items:d}=e||{},{includeReadOnly:h,includeWriteOnly:g}=t;c=c||{};let y,{name:f,prefix:S,namespace:E}=c,_={};if(a&&(f=f||"notagname",y=(S?S+":":"")+f,E)){l[S?"xmlns:"+S:"xmlns"]=E}a&&(_[y]=[]);const schemaHasAny=t=>t.some((t=>Object.prototype.hasOwnProperty.call(e,t)));e&&!i&&(m||u||schemaHasAny(It)?i="object":d||schemaHasAny(qt)?i="array":schemaHasAny(jt)?(i="number",e.type="number"):n||e.enum||(i="string",e.type="string"));const handleMinMaxItems=t=>{if(null!=e?.maxItems&&(t=t.slice(0,e?.maxItems)),null!=e?.minItems){let r=0;for(;t.lengthe&&null!==e.maxProperties&&void 0!==e.maxProperties&&b>=e.maxProperties,canAddProperty=t=>!e||null===e.maxProperties||void 0===e.maxProperties||!hasExceededMaxProperties()&&(!(t=>!(e&&e.required&&e.required.length&&e.required.includes(t)))(t)||e.maxProperties-b-(()=>{if(!e||!e.required)return 0;let t=0;return a?e.required.forEach((e=>t+=void 0===_[e]?0:1)):e.required.forEach((e=>t+=void 0===_[y]?.find((t=>void 0!==t[e]))?0:1)),e.required.length-t})()>0);if(w=a?(r,n=void 0)=>{if(e&&v[r]){if(v[r].xml=v[r].xml||{},v[r].xml.attribute){const e=Array.isArray(v[r].enum)?v[r].enum[0]:void 0,t=v[r].example,a=v[r].default;return void(l[v[r].xml.name||r]=void 0!==t?t:void 0!==a?a:void 0!==e?e:primitive(v[r]))}v[r].xml.name=v[r].xml.name||r}else v[r]||!1===u||(v[r]={xml:{name:r}});let s=sampleFromSchemaGeneric(e&&v[r]||void 0,t,n,a);canAddProperty(r)&&(b++,Array.isArray(s)?_[y]=_[y].concat(s):_[y].push(s))}:(r,n)=>{if(canAddProperty(r)){if(Object.prototype.hasOwnProperty.call(e,"discriminator")&&e.discriminator&&Object.prototype.hasOwnProperty.call(e.discriminator,"mapping")&&e.discriminator.mapping&&Object.prototype.hasOwnProperty.call(e,"$$ref")&&e.$$ref&&e.discriminator.propertyName===r){for(let t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){_[r]=t;break}}else _[r]=sampleFromSchemaGeneric(v[r],t,n,a);b++}},n){let n;if(n=sanitizeRef(void 0!==r?r:void 0!==p?p:e.default),!a){if("number"==typeof n&&"string"===i)return`${n}`;if("string"!=typeof n||"string"===i)return n;try{return JSON.parse(n)}catch(e){return n}}if(e||(i=Array.isArray(n)?"array":typeof n),"array"===i){if(!Array.isArray(n)){if("string"==typeof n)return n;n=[n]}const r=e?e.items:void 0;r&&(r.xml=r.xml||c||{},r.xml.name=r.xml.name||c.name);let s=n.map((e=>sampleFromSchemaGeneric(r,t,e,a)));return s=handleMinMaxItems(s),c.wrapped?(_[y]=s,kt()(l)||_[y].push({_attr:l})):_=s,_}if("object"===i){if("string"==typeof n)return n;for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e&&v[t]&&v[t].readOnly&&!h||e&&v[t]&&v[t].writeOnly&&!g||(e&&v[t]&&v[t].xml&&v[t].xml.attribute?l[v[t].xml.name||t]=n[t]:w(t,n[t])));return kt()(l)||_[y].push({_attr:l}),_}return _[y]=kt()(l)?n:[{_attr:l},n],_}if("object"===i){for(let e in v)Object.prototype.hasOwnProperty.call(v,e)&&(v[e]&&v[e].deprecated||v[e]&&v[e].readOnly&&!h||v[e]&&v[e].writeOnly&&!g||w(e));if(a&&l&&_[y].push({_attr:l}),hasExceededMaxProperties())return _;if(!0===u)a?_[y].push({additionalProp:"Anything can be here"}):_.additionalProp1={},b++;else if(u){const r=objectify(u),n=sampleFromSchemaGeneric(r,t,void 0,a);if(a&&r.xml&&r.xml.name&&"notagname"!==r.xml.name)_[y].push(n);else{const t=null!==e.minProperties&&void 0!==e.minProperties&&bsampleFromSchemaGeneric(mergeJsonSchema(e,d,t),t,void 0,a)));else if(Array.isArray(d.oneOf))r=d.oneOf.map((e=>sampleFromSchemaGeneric(mergeJsonSchema(e,d,t),t,void 0,a)));else{if(!(!a||a&&c.wrapped))return sampleFromSchemaGeneric(d,t,void 0,a);r=[sampleFromSchemaGeneric(d,t,void 0,a)]}return r=handleMinMaxItems(r),a&&c.wrapped?(_[y]=r,kt()(l)||_[y].push({_attr:l}),_):r}let C;if(e&&Array.isArray(e.enum))C=normalizeArray(e.enum)[0];else{if(!e)return;if(C=primitive(e),"number"==typeof C){let t=e.minimum;null!=t&&(e.exclusiveMinimum&&t++,C=t);let r=e.maximum;null!=r&&(e.exclusiveMaximum&&r--,C=r)}if("string"==typeof C&&(null!==e.maxLength&&void 0!==e.maxLength&&(C=C.slice(0,e.maxLength)),null!==e.minLength&&void 0!==e.minLength)){let t=0;for(;C.length(e.schema&&(e=e.schema),e.properties&&(e.type="object"),e),createXMLExample=(e,t,r)=>{const a=sampleFromSchemaGeneric(e,t,r,!0);if(a)return"string"==typeof a?a:Ct()(a,{declaration:!0,indent:"\t"})},sampleFromSchema=(e,t,r)=>sampleFromSchemaGeneric(e,t,r,!1),resolver=(e,t,r)=>[e,JSON.stringify(t),JSON.stringify(r)],Mt=utils_memoizeN(createXMLExample,resolver),Rt=utils_memoizeN(sampleFromSchema,resolver),Tt=[{when:/json/,shouldStringifyTypes:["string"]}],Jt=["object"],get_json_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.memoizedSampleFromSchema(t,r,n),l=typeof o,c=Tt.reduce(((e,t)=>t.when.test(a)?[...e,...t.shouldStringifyTypes]:e),Jt);return X()(c,(e=>e===l))?JSON.stringify(o,null,2):o},get_yaml_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.getJsonSampleSchema(t,r,a,n);let l;try{l=Me().dump(Me().load(o),{lineWidth:-1},{schema:Pe.JSON_SCHEMA}),"\n"===l[l.length-1]&&(l=l.slice(0,l.length-1))}catch(e){return console.error(e),"error: could not generate yaml example"}return l.replace(/\t/g," ")},get_xml_sample_schema=e=>(t,r,a)=>{const{fn:n}=e();if(t&&!t.xml&&(t.xml={}),t&&!t.xml.name){if(!t.$$ref&&(t.type||t.items||t.properties||t.additionalProperties))return'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e';if(t.$$ref){let e=t.$$ref.match(/\S*\/(\S+)$/);t.xml.name=e[1]}}return n.memoizedCreateXMLExample(t,r,a)},get_sample_schema=e=>(t,r="",a={},n=void 0)=>{const{fn:s}=e();return"function"==typeof t?.toJS&&(t=t.toJS()),"function"==typeof n?.toJS&&(n=n.toJS()),/xml/.test(r)?s.getXmlSampleSchema(t,a,n):/(yaml|yml)/.test(r)?s.getYamlSampleSchema(t,a,r,n):s.getJsonSampleSchema(t,a,r,n)},json_schema_5_samples=({getSystem:e})=>{const t=get_json_sample_schema(e),r=get_yaml_sample_schema(e),a=get_xml_sample_schema(e),n=get_sample_schema(e);return{fn:{jsonSchema5:{inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:Rt,memoizedCreateXMLExample:Mt,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:a,getSampleSchema:n,mergeJsonSchema},inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:Rt,memoizedCreateXMLExample:Mt,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:a,getSampleSchema:n,mergeJsonSchema}}},$t=require("lodash/constant");var Vt=__webpack_require__.n($t);const Dt=["get","put","post","delete","options","head","patch","trace"],spec_selectors_state=e=>e||(0,N.Map)(),Kt=(0,we.createSelector)(spec_selectors_state,(e=>e.get("lastError"))),Lt=(0,we.createSelector)(spec_selectors_state,(e=>e.get("url"))),Ut=(0,we.createSelector)(spec_selectors_state,(e=>e.get("spec")||"")),zt=(0,we.createSelector)(spec_selectors_state,(e=>e.get("specSource")||"not-editor")),Bt=(0,we.createSelector)(spec_selectors_state,(e=>e.get("json",(0,N.Map)()))),Ft=(0,we.createSelector)(Bt,(e=>e.toJS())),Wt=(0,we.createSelector)(spec_selectors_state,(e=>e.get("resolved",(0,N.Map)()))),specResolvedSubtree=(e,t)=>e.getIn(["resolvedSubtrees",...t],void 0),mergerFn=(e,t)=>N.Map.isMap(e)&&N.Map.isMap(t)?t.get("$$ref")?t:(0,N.OrderedMap)().mergeWith(mergerFn,e,t):t,Ht=(0,we.createSelector)(spec_selectors_state,(e=>(0,N.OrderedMap)().mergeWith(mergerFn,e.get("json"),e.get("resolvedSubtrees")))),spec=e=>Bt(e),Xt=(0,we.createSelector)(spec,(()=>!1)),Gt=(0,we.createSelector)(spec,(e=>returnSelfOrNewMap(e&&e.get("info")))),Yt=(0,we.createSelector)(spec,(e=>returnSelfOrNewMap(e&&e.get("externalDocs")))),Qt=(0,we.createSelector)(Gt,(e=>e&&e.get("version"))),Zt=(0,we.createSelector)(Qt,(e=>/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(e).slice(1))),er=(0,we.createSelector)(Ht,(e=>e.get("paths"))),tr=Vt()(["get","put","post","delete","options","head","patch"]),rr=(0,we.createSelector)(er,(e=>{if(!e||e.size<1)return(0,N.List)();let t=(0,N.List)();return e&&e.forEach?(e.forEach(((e,r)=>{if(!e||!e.forEach)return{};e.forEach(((e,a)=>{Dt.indexOf(a)<0||(t=t.push((0,N.fromJS)({path:r,method:a,operation:e,id:`${a}-${r}`})))}))})),t):(0,N.List)()})),ar=(0,we.createSelector)(spec,(e=>(0,N.Set)(e.get("consumes")))),nr=(0,we.createSelector)(spec,(e=>(0,N.Set)(e.get("produces")))),sr=(0,we.createSelector)(spec,(e=>e.get("security",(0,N.List)()))),or=(0,we.createSelector)(spec,(e=>e.get("securityDefinitions"))),findDefinition=(e,t)=>{const r=e.getIn(["resolvedSubtrees","definitions",t],null),a=e.getIn(["json","definitions",t],null);return r||a||null},lr=(0,we.createSelector)(spec,(e=>{const t=e.get("definitions");return N.Map.isMap(t)?t:(0,N.Map)()})),cr=(0,we.createSelector)(spec,(e=>e.get("basePath"))),ir=(0,we.createSelector)(spec,(e=>e.get("host"))),pr=(0,we.createSelector)(spec,(e=>e.get("schemes",(0,N.Map)()))),mr=(0,we.createSelector)([rr,ar,nr],((e,t,r)=>e.map((e=>e.update("operation",(e=>{if(e){if(!N.Map.isMap(e))return;return e.withMutations((e=>(e.get("consumes")||e.update("consumes",(e=>(0,N.Set)(e).merge(t))),e.get("produces")||e.update("produces",(e=>(0,N.Set)(e).merge(r))),e)))}return(0,N.Map)()})))))),ur=(0,we.createSelector)(spec,(e=>{const t=e.get("tags",(0,N.List)());return N.List.isList(t)?t.filter((e=>N.Map.isMap(e))):(0,N.List)()})),tagDetails=(e,t)=>(ur(e)||(0,N.List)()).filter(N.Map.isMap).find((e=>e.get("name")===t),(0,N.Map)()),dr=(0,we.createSelector)(mr,ur,((e,t)=>e.reduce(((e,t)=>{let r=(0,N.Set)(t.getIn(["operation","tags"]));return r.count()<1?e.update("default",(0,N.List)(),(e=>e.push(t))):r.reduce(((e,r)=>e.update(r,(0,N.List)(),(e=>e.push(t)))),e)}),t.reduce(((e,t)=>e.set(t.get("name"),(0,N.List)())),(0,N.OrderedMap)())))),selectors_taggedOperations=e=>({getConfigs:t})=>{let{tagsSorter:r,operationsSorter:a}=t();return dr(e).sortBy(((e,t)=>t),((e,t)=>{let a="function"==typeof r?r:pe.tagsSorter[r];return a?a(e,t):null})).map(((t,r)=>{let n="function"==typeof a?a:pe.operationsSorter[a],s=n?t.sort(n):t;return(0,N.Map)({tagDetails:tagDetails(e,r),operations:s})}))},hr=(0,we.createSelector)(spec_selectors_state,(e=>e.get("responses",(0,N.Map)()))),gr=(0,we.createSelector)(spec_selectors_state,(e=>e.get("requests",(0,N.Map)()))),yr=(0,we.createSelector)(spec_selectors_state,(e=>e.get("mutatedRequests",(0,N.Map)()))),responseFor=(e,t,r)=>hr(e).getIn([t,r],null),requestFor=(e,t,r)=>gr(e).getIn([t,r],null),mutatedRequestFor=(e,t,r)=>yr(e).getIn([t,r],null),allowTryItOutFor=()=>!0,parameterWithMetaByIdentity=(e,t,r)=>{const a=Ht(e).getIn(["paths",...t,"parameters"],(0,N.OrderedMap)()),n=e.getIn(["meta","paths",...t,"parameters"],(0,N.OrderedMap)());return a.map((e=>{const t=n.get(`${r.get("in")}.${r.get("name")}`),a=n.get(`${r.get("in")}.${r.get("name")}.hash-${r.hashCode()}`);return(0,N.OrderedMap)().merge(e,t,a)})).find((e=>e.get("in")===r.get("in")&&e.get("name")===r.get("name")),(0,N.OrderedMap)())},parameterInclusionSettingFor=(e,t,r,a)=>{const n=`${a}.${r}`;return e.getIn(["meta","paths",...t,"parameter_inclusions",n],!1)},parameterWithMeta=(e,t,r,a)=>{const n=Ht(e).getIn(["paths",...t,"parameters"],(0,N.OrderedMap)()).find((e=>e.get("in")===a&&e.get("name")===r),(0,N.OrderedMap)());return parameterWithMetaByIdentity(e,t,n)},operationWithMeta=(e,t,r)=>{const a=Ht(e).getIn(["paths",t,r],(0,N.OrderedMap)()),n=e.getIn(["meta","paths",t,r],(0,N.OrderedMap)()),s=a.get("parameters",(0,N.List)()).map((a=>parameterWithMetaByIdentity(e,[t,r],a)));return(0,N.OrderedMap)().merge(a,n).set("parameters",s)};function getParameter(e,t,r,a){return t=t||[],e.getIn(["meta","paths",...t,"parameters"],(0,N.fromJS)([])).find((e=>N.Map.isMap(e)&&e.get("name")===r&&e.get("in")===a))||(0,N.Map)()}const fr=(0,we.createSelector)(spec,(e=>{const t=e.get("host");return"string"==typeof t&&t.length>0&&"/"!==t[0]}));function parameterValues(e,t,r){return t=t||[],operationWithMeta(e,...t).get("parameters",(0,N.List)()).reduce(((e,t)=>{let a=r&&"body"===t.get("in")?t.get("value_xml"):t.get("value");return N.List.isList(a)&&(a=a.filter((e=>""!==e))),e.set(paramToIdentifier(t,{allowHashes:!1}),a)}),(0,N.fromJS)({}))}function parametersIncludeIn(e,t=""){if(N.List.isList(e))return e.some((e=>N.Map.isMap(e)&&e.get("in")===t))}function parametersIncludeType(e,t=""){if(N.List.isList(e))return e.some((e=>N.Map.isMap(e)&&e.get("type")===t))}function contentTypeValues(e,t){t=t||[];let r=Ht(e).getIn(["paths",...t],(0,N.fromJS)({})),a=e.getIn(["meta","paths",...t],(0,N.fromJS)({})),n=currentProducesFor(e,t);const s=r.get("parameters")||new N.List,o=a.get("consumes_value")?a.get("consumes_value"):parametersIncludeType(s,"file")?"multipart/form-data":parametersIncludeType(s,"formData")?"application/x-www-form-urlencoded":void 0;return(0,N.fromJS)({requestContentType:o,responseContentType:n})}function currentProducesFor(e,t){t=t||[];const r=Ht(e).getIn(["paths",...t],null);if(null===r)return;const a=e.getIn(["meta","paths",...t,"produces_value"],null),n=r.getIn(["produces",0],null);return a||n||"application/json"}function producesOptionsFor(e,t){t=t||[];const r=Ht(e),a=r.getIn(["paths",...t],null);if(null===a)return;const[n]=t,s=a.get("produces",null),o=r.getIn(["paths",n,"produces"],null),l=r.getIn(["produces"],null);return s||o||l}function consumesOptionsFor(e,t){t=t||[];const r=Ht(e),a=r.getIn(["paths",...t],null);if(null===a)return;const[n]=t,s=a.get("consumes",null),o=r.getIn(["paths",n,"consumes"],null),l=r.getIn(["consumes"],null);return s||o||l}const operationScheme=(e,t,r)=>{let a=e.get("url").match(/^([a-z][a-z0-9+\-.]*):/),n=Array.isArray(a)?a[1]:null;return e.getIn(["scheme",t,r])||e.getIn(["scheme","_defaultScheme"])||n||""},canExecuteScheme=(e,t,r)=>["http","https"].indexOf(operationScheme(e,t,r))>-1,validationErrors=(e,t)=>{t=t||[];const r=e.getIn(["meta","paths",...t,"parameters"],(0,N.fromJS)([])),a=[];if(0===r.length)return a;const getErrorsWithPaths=(e,t=[])=>{const getNestedErrorsWithPaths=(e,t)=>{const r=[...t,e.get("propKey")||e.get("index")];return N.Map.isMap(e.get("error"))?getErrorsWithPaths(e.get("error"),r):{error:e.get("error"),path:r}};return N.List.isList(e)?e.map((e=>N.Map.isMap(e)?getNestedErrorsWithPaths(e,t):{error:e,path:t})):getNestedErrorsWithPaths(e,t)};return r.forEach(((e,t)=>{const r=t.split(".").slice(1,-1).join("."),n=e.get("errors");if(n&&n.count()){getErrorsWithPaths(n).forEach((({error:e,path:t})=>{a.push(((e,t,r)=>`For '${r}'${(t=t.reduce(((e,t)=>"number"==typeof t?`${e}[${t}]`:e?`${e}.${t}`:t),""))?` at path '${t}'`:""}: ${e}.`)(e,t,r))}))}})),a},validateBeforeExecute=(e,t)=>0===validationErrors(e,t).length,getOAS3RequiredRequestBodyContentType=(e,t)=>{let r={requestBody:!1,requestContentType:{}},a=e.getIn(["resolvedSubtrees","paths",...t,"requestBody"],(0,N.fromJS)([]));return a.size<1||(a.getIn(["required"])&&(r.requestBody=a.getIn(["required"])),a.getIn(["content"]).entrySeq().forEach((e=>{const t=e[0];if(e[1].getIn(["schema","required"])){const a=e[1].getIn(["schema","required"]).toJS();r.requestContentType[t]=a}}))),r},isMediaTypeSchemaPropertiesEqual=(e,t,r,a)=>{if((r||a)&&r===a)return!0;let n=e.getIn(["resolvedSubtrees","paths",...t,"requestBody","content"],(0,N.fromJS)([]));if(n.size<2||!r||!a)return!1;let s=n.getIn([r,"schema","properties"],(0,N.fromJS)([])),o=n.getIn([a,"schema","properties"],(0,N.fromJS)([]));return!!s.equals(o)};function returnSelfOrNewMap(e){return N.Map.isMap(e)?e:new N.Map}const Sr=require("lodash/isString");var Er=__webpack_require__.n(Sr);const _r=require("lodash/debounce");var vr=__webpack_require__.n(_r);const wr=require("lodash/set");var br=__webpack_require__.n(wr);const Cr=require("lodash/fp/assocPath");var xr=__webpack_require__.n(Cr);const Or="spec_update_spec",Nr="spec_update_url",kr="spec_update_json",Ar="spec_update_param",Ir="spec_update_empty_param_inclusion",qr="spec_validate_param",jr="spec_set_response",Pr="spec_set_request",Mr="spec_set_mutated_request",Rr="spec_log_request",Tr="spec_clear_response",Jr="spec_clear_request",$r="spec_clear_validate_param",Vr="spec_update_operation_meta_value",Dr="spec_update_resolved",Kr="spec_update_resolved_subtree",Lr="set_scheme",toStr=e=>Er()(e)?e:"";function updateSpec(e){const t=toStr(e).replace(/\t/g," ");if("string"==typeof e)return{type:Or,payload:t}}function updateResolved(e){return{type:Dr,payload:e}}function updateUrl(e){return{type:Nr,payload:e}}function updateJsonSpec(e){return{type:kr,payload:e}}const parseToJson=e=>({specActions:t,specSelectors:r,errActions:a})=>{let{specStr:n}=r,s=null;try{e=e||n(),a.clear({source:"parser"}),s=Me().load(e,{schema:Pe.JSON_SCHEMA})}catch(e){return console.error(e),a.newSpecErr({source:"parser",level:"error",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return s&&"object"==typeof s?t.updateJsonSpec(s):{}};let Ur=!1;const resolveSpec=(e,t)=>({specActions:r,specSelectors:a,errActions:n,fn:{fetch:s,resolve:o,AST:l={}},getConfigs:c})=>{Ur||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),Ur=!0);const{modelPropertyMacro:i,parameterMacro:p,requestInterceptor:m,responseInterceptor:u}=c();void 0===e&&(e=a.specJson()),void 0===t&&(t=a.url());let d=l.getLineNumberForPath?l.getLineNumberForPath:()=>{},h=a.specStr();return o({fetch:s,spec:e,baseDoc:String(new URL(t,document.baseURI)),modelPropertyMacro:i,parameterMacro:p,requestInterceptor:m,responseInterceptor:u}).then((({spec:e,errors:t})=>{if(n.clear({type:"thrown"}),Array.isArray(t)&&t.length>0){let e=t.map((e=>(console.error(e),e.line=e.fullPath?d(h,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",Object.defineProperty(e,"message",{enumerable:!0,value:e.message}),e)));n.newThrownErrBatch(e)}return r.updateResolved(e)}))};let zr=[];const Br=vr()((()=>{const e=zr.reduce(((e,{path:t,system:r})=>(e.has(r)||e.set(r,[]),e.get(r).push(t),e)),new Map);zr=[],e.forEach((async(e,t)=>{if(!t)return void console.error("debResolveSubtrees: don't have a system to operate on, aborting.");if(!t.fn.resolveSubtree)return void console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.");const{errActions:r,errSelectors:a,fn:{resolveSubtree:n,fetch:s,AST:o={}},specSelectors:l,specActions:c}=t,i=o.getLineNumberForPath??Vt()(void 0),p=l.specStr(),{modelPropertyMacro:m,parameterMacro:u,requestInterceptor:d,responseInterceptor:h}=t.getConfigs();try{const t=await e.reduce((async(e,t)=>{let{resultMap:o,specWithCurrentSubtrees:c}=await e;const{errors:g,spec:y}=await n(c,t,{baseDoc:String(new URL(l.url(),document.baseURI)),modelPropertyMacro:m,parameterMacro:u,requestInterceptor:d,responseInterceptor:h});if(a.allErrors().size&&r.clearBy((e=>"thrown"!==e.get("type")||"resolver"!==e.get("source")||!e.get("fullPath").every(((e,r)=>e===t[r]||void 0===t[r])))),Array.isArray(g)&&g.length>0){let e=g.map((e=>(e.line=e.fullPath?i(p,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",Object.defineProperty(e,"message",{enumerable:!0,value:e.message}),e)));r.newThrownErrBatch(e)}return y&&l.isOAS3()&&"components"===t[0]&&"securitySchemes"===t[1]&&await Promise.all(Object.values(y).filter((e=>"openIdConnect"===e.type)).map((async e=>{const t={url:e.openIdConnectUrl,requestInterceptor:d,responseInterceptor:h};try{const r=await s(t);r instanceof Error||r.status>=400?console.error(r.statusText+" "+t.url):e.openIdConnectData=JSON.parse(r.text)}catch(e){console.error(e)}}))),br()(o,t,y),c=xr()(t,y,c),{resultMap:o,specWithCurrentSubtrees:c}}),Promise.resolve({resultMap:(l.specResolvedSubtree([])||(0,N.Map)()).toJS(),specWithCurrentSubtrees:l.specJS()}));c.updateResolvedSubtree([],t.resultMap)}catch(e){console.error(e)}}))}),35),requestResolvedSubtree=e=>t=>{zr.find((({path:r,system:a})=>a===t&&r.toString()===e.toString()))||(zr.push({path:e,system:t}),Br())};function changeParam(e,t,r,a,n){return{type:Ar,payload:{path:e,value:a,paramName:t,paramIn:r,isXml:n}}}function changeParamByIdentity(e,t,r,a){return{type:Ar,payload:{path:e,param:t,value:r,isXml:a}}}const updateResolvedSubtree=(e,t)=>({type:Kr,payload:{path:e,value:t}}),invalidateResolvedSubtreeCache=()=>({type:Kr,payload:{path:[],value:(0,N.Map)()}}),validateParams=(e,t)=>({type:qr,payload:{pathMethod:e,isOAS3:t}}),updateEmptyParamInclusion=(e,t,r,a)=>({type:Ir,payload:{pathMethod:e,paramName:t,paramIn:r,includeEmptyValue:a}});function clearValidateParams(e){return{type:$r,payload:{pathMethod:e}}}function changeConsumesValue(e,t){return{type:Vr,payload:{path:e,value:t,key:"consumes_value"}}}function changeProducesValue(e,t){return{type:Vr,payload:{path:e,value:t,key:"produces_value"}}}const setResponse=(e,t,r)=>({payload:{path:e,method:t,res:r},type:jr}),setRequest=(e,t,r)=>({payload:{path:e,method:t,req:r},type:Pr}),setMutatedRequest=(e,t,r)=>({payload:{path:e,method:t,req:r},type:Mr}),logRequest=e=>({payload:e,type:Rr}),executeRequest=e=>({fn:t,specActions:r,specSelectors:a,getConfigs:n,oas3Selectors:s})=>{let{pathName:o,method:l,operation:c}=e,{requestInterceptor:i,responseInterceptor:p}=n(),m=c.toJS();if(c&&c.get("parameters")&&c.get("parameters").filter((e=>e&&!0===e.get("allowEmptyValue"))).forEach((t=>{if(a.parameterInclusionSettingFor([o,l],t.get("name"),t.get("in"))){e.parameters=e.parameters||{};const r=paramToValue(t,e.parameters);(!r||r&&0===r.size)&&(e.parameters[t.get("name")]="")}})),e.contextUrl=ue()(a.url()).toString(),m&&m.operationId?e.operationId=m.operationId:m&&o&&l&&(e.operationId=t.opId(m,o,l)),a.isOAS3()){const t=`${o}:${l}`;e.server=s.selectedServer(t)||s.selectedServer();const r=s.serverVariables({server:e.server,namespace:t}).toJS(),a=s.serverVariables({server:e.server}).toJS();e.serverVariables=Object.keys(r).length?r:a,e.requestContentType=s.requestContentType(o,l),e.responseContentType=s.responseContentType(o,l)||"*/*";const n=s.requestBodyValue(o,l),c=s.requestBodyInclusionSetting(o,l);n&&n.toJS?e.requestBody=n.map((e=>N.Map.isMap(e)?e.get("value"):e)).filter(((e,t)=>(Array.isArray(e)?0!==e.length:!isEmptyValue(e))||c.get(t))).toJS():e.requestBody=n}let u=Object.assign({},e);u=t.buildRequest(u),r.setRequest(e.pathName,e.method,u);e.requestInterceptor=async t=>{let a=await i.apply(void 0,[t]),n=Object.assign({},a);return r.setMutatedRequest(e.pathName,e.method,n),a},e.responseInterceptor=p;const d=Date.now();return t.execute(e).then((t=>{t.duration=Date.now()-d,r.setResponse(e.pathName,e.method,t)})).catch((t=>{"Failed to fetch"===t.message&&(t.name="",t.message='**Failed to fetch.** \n**Possible Reasons:** \n - CORS \n - Network Failure \n - URL scheme must be "http" or "https" for CORS request.'),r.setResponse(e.pathName,e.method,{error:!0,err:t})}))},actions_execute=({path:e,method:t,...r}={})=>a=>{let{fn:{fetch:n},specSelectors:s,specActions:o}=a,l=s.specJsonWithResolvedSubtrees().toJS(),c=s.operationScheme(e,t),{requestContentType:i,responseContentType:p}=s.contentTypeValues([e,t]).toJS(),m=/xml/i.test(i),u=s.parameterValues([e,t],m).toJS();return o.executeRequest({...r,fetch:n,spec:l,pathName:e,method:t,parameters:u,requestContentType:i,scheme:c,responseContentType:p})};function clearResponse(e,t){return{type:Tr,payload:{path:e,method:t}}}function clearRequest(e,t){return{type:Jr,payload:{path:e,method:t}}}function setScheme(e,t,r){return{type:Lr,payload:{scheme:e,path:t,method:r}}}const Fr={[Or]:(e,t)=>"string"==typeof t.payload?e.set("spec",t.payload):e,[Nr]:(e,t)=>e.set("url",t.payload+""),[kr]:(e,t)=>e.set("json",fromJSOrdered(t.payload)),[Dr]:(e,t)=>e.setIn(["resolved"],fromJSOrdered(t.payload)),[Kr]:(e,t)=>{const{value:r,path:a}=t.payload;return e.setIn(["resolvedSubtrees",...a],fromJSOrdered(r))},[Ar]:(e,{payload:t})=>{let{path:r,paramName:a,paramIn:n,param:s,value:o,isXml:l}=t,c=s?paramToIdentifier(s):`${n}.${a}`;const i=l?"value_xml":"value";return e.setIn(["meta","paths",...r,"parameters",c,i],(0,N.fromJS)(o))},[Ir]:(e,{payload:t})=>{let{pathMethod:r,paramName:a,paramIn:n,includeEmptyValue:s}=t;if(!a||!n)return console.warn("Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey."),e;const o=`${n}.${a}`;return e.setIn(["meta","paths",...r,"parameter_inclusions",o],s)},[qr]:(e,{payload:{pathMethod:t,isOAS3:r}})=>{const a=Ht(e).getIn(["paths",...t]),n=parameterValues(e,t).toJS();return e.updateIn(["meta","paths",...t,"parameters"],(0,N.fromJS)({}),(s=>a.get("parameters",(0,N.List)()).reduce(((a,s)=>{const o=paramToValue(s,n),l=parameterInclusionSettingFor(e,t,s.get("name"),s.get("in")),c=((e,t,{isOAS3:r=!1,bypassRequiredCheck:a=!1}={})=>{let n=e.get("required"),{schema:s,parameterContentMediaType:o}=getParameterSchema(e,{isOAS3:r});return validateValueBySchema(t,s,n,a,o)})(s,o,{bypassRequiredCheck:l,isOAS3:r});return a.setIn([paramToIdentifier(s),"errors"],(0,N.fromJS)(c))}),s)))},[$r]:(e,{payload:{pathMethod:t}})=>e.updateIn(["meta","paths",...t,"parameters"],(0,N.fromJS)([]),(e=>e.map((e=>e.set("errors",(0,N.fromJS)([])))))),[jr]:(e,{payload:{res:t,path:r,method:a}})=>{let n;n=t.error?Object.assign({error:!0,name:t.err.name,message:t.err.message,statusCode:t.err.statusCode},t.err.response):t,n.headers=n.headers||{};let s=e.setIn(["responses",r,a],fromJSOrdered(n));return L.Blob&&n.data instanceof L.Blob&&(s=s.setIn(["responses",r,a,"text"],n.data)),s},[Pr]:(e,{payload:{req:t,path:r,method:a}})=>e.setIn(["requests",r,a],fromJSOrdered(t)),[Mr]:(e,{payload:{req:t,path:r,method:a}})=>e.setIn(["mutatedRequests",r,a],fromJSOrdered(t)),[Vr]:(e,{payload:{path:t,value:r,key:a}})=>{let n=["paths",...t],s=["meta","paths",...t];return e.getIn(["json",...n])||e.getIn(["resolved",...n])||e.getIn(["resolvedSubtrees",...n])?e.setIn([...s,a],(0,N.fromJS)(r)):e},[Tr]:(e,{payload:{path:t,method:r}})=>e.deleteIn(["responses",t,r]),[Jr]:(e,{payload:{path:t,method:r}})=>e.deleteIn(["requests",t,r]),[Lr]:(e,{payload:{scheme:t,path:r,method:a}})=>r&&a?e.setIn(["scheme",r,a],t):r||a?void 0:e.setIn(["scheme","_defaultScheme"],t)},wrap_actions_updateSpec=(e,{specActions:t})=>(...r)=>{e(...r),t.parseToJson(...r)},wrap_actions_updateJsonSpec=(e,{specActions:t})=>(...r)=>{e(...r),t.invalidateResolvedSubtreeCache();const[a]=r,n=He()(a,["paths"])||{};Object.keys(n).forEach((e=>{He()(n,[e]).$ref&&t.requestResolvedSubtree(["paths",e])})),t.requestResolvedSubtree(["components","securitySchemes"])},wrap_actions_executeRequest=(e,{specActions:t})=>r=>(t.logRequest(r),e(r)),wrap_actions_validateParams=(e,{specSelectors:t})=>r=>e(r,t.isOAS3()),plugins_spec=()=>({statePlugins:{spec:{wrapActions:{...f},reducers:{...Fr},actions:{...y},selectors:{...g}}}}),Wr=require("swagger-client/es/resolver/strategies/generic");var Hr=__webpack_require__.n(Wr);const Xr=require("swagger-client/es/resolver/strategies/openapi-2");var Gr=__webpack_require__.n(Xr);const Yr=require("swagger-client/es/resolver/strategies/openapi-3-0");var Qr=__webpack_require__.n(Yr);const Zr=require("swagger-client/es/resolver/strategies/openapi-3-1-apidom");var ea=__webpack_require__.n(Zr);const ta=require("swagger-client/es/resolver"),ra=require("swagger-client/es/execute"),aa=require("swagger-client/es/http");var na=__webpack_require__.n(aa);const sa=require("swagger-client/es/subtree-resolver"),oa=require("swagger-client/es/helpers"),configs_wrap_actions_loaded=(e,t)=>(...r)=>{e(...r);const a=t.getConfigs().withCredentials;t.fn.fetch.withCredentials=a};function swagger_client({configs:e,getConfigs:t}){return{fn:{fetch:(0,aa.makeHttp)(na(),e.preFetch,e.postFetch),buildRequest:ra.buildRequest,execute:ra.execute,resolve:(0,ta.makeResolve)({strategies:[ea(),Qr(),Gr(),Hr()]}),resolveSubtree:async(e,r,a={})=>{const n=t(),s={modelPropertyMacro:n.modelPropertyMacro,parameterMacro:n.parameterMacro,requestInterceptor:n.requestInterceptor,responseInterceptor:n.responseInterceptor,strategies:[ea(),Qr(),Gr(),Hr()]};return(0,sa.makeResolveSubtree)(s)(e,r,a)},serializeRes:aa.serializeRes,opId:oa.opId},statePlugins:{configs:{wrapActions:{loaded:configs_wrap_actions_loaded}}}}}function util(){return{fn:{shallowEqualKeys}}}const la=require("react-dom");var ca=__webpack_require__.n(la);const ia=require("react-redux"),pa=require("lodash/identity");var ma=__webpack_require__.n(pa);const withSystem=e=>t=>{const{fn:r}=e();class WithSystem extends C.Component{render(){return x().createElement(t,et()({},e(),this.props,this.context))}}return WithSystem.displayName=`WithSystem(${r.getDisplayName(t)})`,WithSystem},withRoot=(e,t)=>r=>{const{fn:a}=e();class WithRoot extends C.Component{render(){return x().createElement(ia.Provider,{store:t},x().createElement(r,et()({},this.props,this.context)))}}return WithRoot.displayName=`WithRoot(${a.getDisplayName(r)})`,WithRoot},withConnect=(e,t,r)=>(0,O.compose)(r?withRoot(e,r):ma(),(0,ia.connect)(((r,a)=>{const n={...a,...e()},s=t.prototype?.mapStateToProps||(e=>({state:e}));return s(r,n)})),withSystem(e))(t),handleProps=(e,t,r,a)=>{for(const n in t){const s=t[n];"function"==typeof s&&s(r[n],a[n],e())}},withMappedContainer=(e,t,r)=>(t,a)=>{const{fn:n}=e(),s=r(t,"root");class WithMappedContainer extends C.Component{constructor(t,r){super(t,r),handleProps(e,a,t,{})}UNSAFE_componentWillReceiveProps(t){handleProps(e,a,t,this.props)}render(){const e=Ie()(this.props,a?Object.keys(a):[]);return x().createElement(s,e)}}return WithMappedContainer.displayName=`WithMappedContainer(${n.getDisplayName(s)})`,WithMappedContainer},render=(e,t,r,a)=>n=>{const s=r(e,t,a)("App","root"),{createRoot:o}=ca();o(n).render(x().createElement(s,null))},getComponent=(e,t,r)=>(a,n,s={})=>{if("string"!=typeof a)throw new TypeError("Need a string, to fetch a component. Was given a "+typeof a);const o=r(a);return o?n?"root"===n?withConnect(e,o,t()):withConnect(e,o):o:(s.failSilently||e().log.warn("Could not find component:",a),null)},getDisplayName=e=>e.displayName||e.name||"Component",view=({getComponents:e,getStore:t,getSystem:r})=>{const a=(n=getComponent(r,t,e),ie(n,((...e)=>JSON.stringify(e))));var n;const s=(e=>utils_memoizeN(e,((...e)=>e)))(withMappedContainer(r,0,a));return{rootInjects:{getComponent:a,makeMappedContainer:s,render:render(r,t,getComponent,e)},fn:{getDisplayName}}},view_legacy=({React:e,getSystem:t,getStore:r,getComponents:a})=>{const n={},s=parseInt(e?.version,10);return s>=16&&s<18&&(n.render=((e,t,r,a)=>n=>{const s=r(e,t,a)("App","root");ca().render(x().createElement(s,null),n)})(t,r,getComponent,a)),{rootInjects:n}};function downloadUrlPlugin(e){let{fn:t}=e;const r={download:e=>({errActions:r,specSelectors:a,specActions:n,getConfigs:s})=>{let{fetch:o}=t;const l=s();function next(t){if(t instanceof Error||t.status>=400)return n.updateLoadingStatus("failed"),r.newThrownErr(Object.assign(new Error((t.message||t.statusText)+" "+e),{source:"fetch"})),void(!t.status&&t instanceof Error&&function checkPossibleFailReasons(){try{let t;if("URL"in L?t=new URL(e):(t=document.createElement("a"),t.href=e),"https:"!==t.protocol&&"https:"===L.location.protocol){const e=Object.assign(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${t.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:"fetch"});return void r.newThrownErr(e)}if(t.origin!==L.location.origin){const e=Object.assign(new Error(`Possible cross-origin (CORS) issue? The URL origin (${t.origin}) does not match the page (${L.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:"fetch"});r.newThrownErr(e)}}catch(e){return}}());n.updateLoadingStatus("success"),n.updateSpec(t.text),a.url()!==e&&n.updateUrl(e)}e=e||a.url(),n.updateLoadingStatus("loading"),r.clear({source:"fetch"}),o({url:e,loadSpec:!0,requestInterceptor:l.requestInterceptor||(e=>e),responseInterceptor:l.responseInterceptor||(e=>e),credentials:"same-origin",headers:{Accept:"application/json,*/*"}}).then(next,next)},updateLoadingStatus:e=>{let t=[null,"loading","failed","success","failedConfig"];return-1===t.indexOf(e)&&console.error(`Error: ${e} is not one of ${JSON.stringify(t)}`),{type:"spec_update_loading_status",payload:e}}};let a={loadingStatus:(0,we.createSelector)((e=>e||(0,N.Map)()),(e=>e.get("loadingStatus")||null))};return{statePlugins:{spec:{actions:r,reducers:{spec_update_loading_status:(e,t)=>"string"==typeof t.payload?e.set("loadingStatus",t.payload):e},selectors:a}}}}const ua=require("react-syntax-highlighter/dist/esm/light");var da=__webpack_require__.n(ua);const ha=require("react-syntax-highlighter/dist/esm/languages/hljs/javascript");var ga=__webpack_require__.n(ha);const ya=require("react-syntax-highlighter/dist/esm/languages/hljs/json");var fa=__webpack_require__.n(ya);const Sa=require("react-syntax-highlighter/dist/esm/languages/hljs/xml");var Ea=__webpack_require__.n(Sa);const _a=require("react-syntax-highlighter/dist/esm/languages/hljs/bash");var va=__webpack_require__.n(_a);const wa=require("react-syntax-highlighter/dist/esm/languages/hljs/yaml");var ba=__webpack_require__.n(wa);const Ca=require("react-syntax-highlighter/dist/esm/languages/hljs/http");var xa=__webpack_require__.n(Ca);const Oa=require("react-syntax-highlighter/dist/esm/languages/hljs/powershell");var Na=__webpack_require__.n(Oa);const after_load=()=>{da().registerLanguage("json",fa()),da().registerLanguage("js",ga()),da().registerLanguage("xml",Ea()),da().registerLanguage("yaml",ba()),da().registerLanguage("http",xa()),da().registerLanguage("bash",va()),da().registerLanguage("powershell",Na()),da().registerLanguage("javascript",ga())},ka=require("react-syntax-highlighter/dist/esm/styles/hljs/agate");var Aa=__webpack_require__.n(ka);const Ia=require("react-syntax-highlighter/dist/esm/styles/hljs/arta");var qa=__webpack_require__.n(Ia);const ja=require("react-syntax-highlighter/dist/esm/styles/hljs/monokai");var Pa=__webpack_require__.n(ja);const Ma=require("react-syntax-highlighter/dist/esm/styles/hljs/nord");var Ra=__webpack_require__.n(Ma);const Ta=require("react-syntax-highlighter/dist/esm/styles/hljs/obsidian");var Ja=__webpack_require__.n(Ta);const $a=require("react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night");var Va=__webpack_require__.n($a);const Da=require("react-syntax-highlighter/dist/esm/styles/hljs/idea");var Ka=__webpack_require__.n(Da);const La={agate:Aa(),arta:qa(),monokai:Pa(),nord:Ra(),obsidian:Ja(),"tomorrow-night":Va(),idea:Ka()},Ua=Aa(),components_SyntaxHighlighter=({language:e,className:t="",getConfigs:r,syntaxHighlighting:a={},children:n=""})=>{const s=r().syntaxHighlight.theme,{styles:o,defaultStyle:l}=a,c=o?.[s]??l;return x().createElement(da(),{language:e,className:t,style:c},n)},za=require("js-file-download");var Ba=__webpack_require__.n(za);const components_HighlightCode=({fileName:e="response.txt",className:t,downloadable:r,getComponent:a,canCopy:n,language:s,children:o})=>{const l=(0,C.useRef)(null),c=a("SyntaxHighlighter",!0),handlePreventYScrollingBeyondElement=e=>{const{target:t,deltaY:r}=e,{scrollHeight:a,offsetHeight:n,scrollTop:s}=t;a>n&&(0===s&&r<0||n+s>=a&&r>0)&&e.preventDefault()};return(0,C.useEffect)((()=>{const e=Array.from(l.current.childNodes).filter((e=>!!e.nodeType&&e.classList.contains("microlight")));return e.forEach((e=>e.addEventListener("mousewheel",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{e.forEach((e=>e.removeEventListener("mousewheel",handlePreventYScrollingBeyondElement)))}}),[o,t,s]),x().createElement("div",{className:"highlight-code",ref:l},n&&x().createElement("div",{className:"copy-to-clipboard"},x().createElement(dt.CopyToClipboard,{text:o},x().createElement("button",null))),r?x().createElement("button",{className:"download-contents",onClick:()=>{Ba()(o,e)}},"Download"):null,x().createElement(c,{language:s,className:ut()(t,"microlight"),renderPlainText:({children:e,PlainTextViewer:r})=>x().createElement(r,{className:t},e)},o))},components_PlainTextViewer=({className:e="",children:t})=>x().createElement("pre",{className:ut()("microlight",e)},t),wrap_components_SyntaxHighlighter=(e,t)=>({renderPlainText:r,children:a,...n})=>{const s=t.getConfigs().syntaxHighlight.activated,o=t.getComponent("PlainTextViewer");return s||"function"!=typeof r?s?x().createElement(e,n,a):x().createElement(o,null,a):r({children:a,PlainTextViewer:o})},SyntaxHighlightingPlugin1=()=>({afterLoad:after_load,rootInjects:{syntaxHighlighting:{styles:La,defaultStyle:Ua}},components:{SyntaxHighlighter:components_SyntaxHighlighter,HighlightCode:components_HighlightCode,PlainTextViewer:components_PlainTextViewer}}),SyntaxHighlightingPlugin2=()=>({wrapComponents:{SyntaxHighlighter:wrap_components_SyntaxHighlighter}}),syntax_highlighting=()=>[SyntaxHighlightingPlugin1,SyntaxHighlightingPlugin2],versions_after_load=()=>{const{GIT_DIRTY:e,GIT_COMMIT:t,PACKAGE_VERSION:r,BUILD_TIME:a}={PACKAGE_VERSION:"5.17.14",GIT_COMMIT:"g8aa52920",GIT_DIRTY:!0,BUILD_TIME:"Tue, 28 May 2024 05:23:41 GMT"};L.versions=L.versions||{},L.versions.swaggerUI={version:r,gitRevision:t,gitDirty:e,buildTimestamp:a}},versions=()=>({afterLoad:versions_after_load}),Fa=require("lodash/zipObject");var Wa=__webpack_require__.n(Fa);const Ha=console.error,withErrorBoundary=e=>t=>{const{getComponent:r,fn:a}=e(),n=r("ErrorBoundary"),s=a.getDisplayName(t);class WithErrorBoundary extends C.Component{render(){return x().createElement(n,{targetName:s,getComponent:r,fn:a},x().createElement(t,et()({},this.props,this.context)))}}var o;return WithErrorBoundary.displayName=`WithErrorBoundary(${s})`,(o=t).prototype&&o.prototype.isReactComponent&&(WithErrorBoundary.prototype.mapStateToProps=t.prototype.mapStateToProps),WithErrorBoundary},fallback=({name:e})=>x().createElement("div",{className:"fallback"},"😱 ",x().createElement("i",null,"Could not render ","t"===e?"this component":e,", see the console."));class ErrorBoundary extends C.Component{static defaultProps={targetName:"this component",getComponent:()=>fallback,fn:{componentDidCatch:Ha},children:null};static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(...e){super(...e),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.fn.componentDidCatch(e,t)}render(){const{getComponent:e,targetName:t,children:r}=this.props;if(this.state.hasError){const r=e("Fallback");return x().createElement(r,{name:t})}return r}}const Xa=ErrorBoundary,safe_render=({componentList:e=[],fullOverride:t=!1}={})=>({getSystem:r})=>{const a=t?e:["App","BaseLayout","VersionPragmaFilter","InfoContainer","ServersContainer","SchemesContainer","AuthorizeBtnContainer","FilterContainer","Operations","OperationContainer","parameters","responses","OperationServers","Models","ModelWrapper",...e],n=Wa()(a,Array(a.length).fill(((e,{fn:t})=>t.withErrorBoundary(e))));return{fn:{componentDidCatch:Ha,withErrorBoundary:withErrorBoundary(r)},components:{ErrorBoundary:Xa,Fallback:fallback},wrapComponents:n}};class App extends x().Component{getLayout(){const{getComponent:e,layoutSelectors:t}=this.props,r=t.current(),a=e(r,!0);return a||(()=>x().createElement("h1",null,' No layout defined for "',r,'" '))}render(){const e=this.getLayout();return x().createElement(e,null)}}const Ga=App;class AuthorizationPopup extends x().Component{close=()=>{let{authActions:e}=this.props;e.showDefinitions(!1)};render(){let{authSelectors:e,authActions:t,getComponent:r,errSelectors:a,specSelectors:n,fn:{AST:s={}}}=this.props,o=e.shownDefinitions();const l=r("auths"),c=r("CloseIcon");return x().createElement("div",{className:"dialog-ux"},x().createElement("div",{className:"backdrop-ux"}),x().createElement("div",{className:"modal-ux"},x().createElement("div",{className:"modal-dialog-ux"},x().createElement("div",{className:"modal-ux-inner"},x().createElement("div",{className:"modal-ux-header"},x().createElement("h3",null,"Available authorizations"),x().createElement("button",{type:"button",className:"close-modal",onClick:this.close},x().createElement(c,null))),x().createElement("div",{className:"modal-ux-content"},o.valueSeq().map(((o,c)=>x().createElement(l,{key:c,AST:s,definitions:o,getComponent:r,errSelectors:a,authSelectors:e,authActions:t,specSelectors:n}))))))))}}class AuthorizeBtn extends x().Component{render(){let{isAuthorized:e,showPopup:t,onClick:r,getComponent:a}=this.props;const n=a("authorizationPopup",!0),s=a("LockAuthIcon",!0),o=a("UnlockAuthIcon",!0);return x().createElement("div",{className:"auth-wrapper"},x().createElement("button",{className:e?"btn authorize locked":"btn authorize unlocked",onClick:r},x().createElement("span",null,"Authorize"),e?x().createElement(s,null):x().createElement(o,null)),t&&x().createElement(n,null))}}class AuthorizeBtnContainer extends x().Component{render(){const{authActions:e,authSelectors:t,specSelectors:r,getComponent:a}=this.props,n=r.securityDefinitions(),s=t.definitionsToAuthorize(),o=a("authorizeBtn");return n?x().createElement(o,{onClick:()=>e.showDefinitions(s),isAuthorized:!!t.authorized().size,showPopup:!!t.shownDefinitions(),getComponent:a}):null}}class AuthorizeOperationBtn extends x().Component{onClick=e=>{e.stopPropagation();let{onClick:t}=this.props;t&&t()};render(){let{isAuthorized:e,getComponent:t}=this.props;const r=t("LockAuthOperationIcon",!0),a=t("UnlockAuthOperationIcon",!0);return x().createElement("button",{className:"authorization__btn","aria-label":e?"authorization button locked":"authorization button unlocked",onClick:this.onClick},e?x().createElement(r,{className:"locked"}):x().createElement(a,{className:"unlocked"}))}}class Auths extends x().Component{constructor(e,t){super(e,t),this.state={}}onAuthChange=e=>{let{name:t}=e;this.setState({[t]:e})};submitAuth=e=>{e.preventDefault();let{authActions:t}=this.props;t.authorizeWithPersistOption(this.state)};logoutClick=e=>{e.preventDefault();let{authActions:t,definitions:r}=this.props,a=r.map(((e,t)=>t)).toArray();this.setState(a.reduce(((e,t)=>(e[t]="",e)),{})),t.logoutWithPersistOption(a)};close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};render(){let{definitions:e,getComponent:t,authSelectors:r,errSelectors:a}=this.props;const n=t("AuthItem"),s=t("oauth2",!0),o=t("Button");let l=r.authorized(),c=e.filter(((e,t)=>!!l.get(t))),i=e.filter((e=>"oauth2"!==e.get("type"))),p=e.filter((e=>"oauth2"===e.get("type")));return x().createElement("div",{className:"auth-container"},!!i.size&&x().createElement("form",{onSubmit:this.submitAuth},i.map(((e,r)=>x().createElement(n,{key:r,schema:e,name:r,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:a}))).toArray(),x().createElement("div",{className:"auth-btn-wrapper"},i.size===c.size?x().createElement(o,{className:"btn modal-btn auth",onClick:this.logoutClick,"aria-label":"Remove authorization"},"Logout"):x().createElement(o,{type:"submit",className:"btn modal-btn auth authorize","aria-label":"Apply credentials"},"Authorize"),x().createElement(o,{className:"btn modal-btn auth btn-done",onClick:this.close},"Close"))),p&&p.size?x().createElement("div",null,x().createElement("div",{className:"scope-def"},x().createElement("p",null,"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes."),x().createElement("p",null,"API requires the following scopes. Select which ones you want to grant to Swagger UI.")),e.filter((e=>"oauth2"===e.get("type"))).map(((e,t)=>x().createElement("div",{key:t},x().createElement(s,{authorized:l,schema:e,name:t})))).toArray()):null)}}class auth_item_Auths extends x().Component{render(){let{schema:e,name:t,getComponent:r,onAuthChange:a,authorized:n,errSelectors:s}=this.props;const o=r("apiKeyAuth"),l=r("basicAuth");let c;const i=e.get("type");switch(i){case"apiKey":c=x().createElement(o,{key:t,schema:e,name:t,errSelectors:s,authorized:n,getComponent:r,onChange:a});break;case"basic":c=x().createElement(l,{key:t,schema:e,name:t,errSelectors:s,authorized:n,getComponent:r,onChange:a});break;default:c=x().createElement("div",{key:t},"Unknown security definition type ",i)}return x().createElement("div",{key:`${t}-jump`},c)}}class AuthError extends x().Component{render(){let{error:e}=this.props,t=e.get("level"),r=e.get("message"),a=e.get("source");return x().createElement("div",{className:"errors"},x().createElement("b",null,a," ",t),x().createElement("span",null,r))}}class ApiKeyAuth extends x().Component{constructor(e,t){super(e,t);let{name:r,schema:a}=this.props,n=this.getValue();this.state={name:r,schema:a,value:n}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,"value"])}onChange=e=>{let{onChange:t}=this.props,r=e.target.value,a=Object.assign({},this.state,{value:r});this.setState(a),t(a)};render(){let{schema:e,getComponent:t,errSelectors:r,name:a}=this.props;const n=t("Input"),s=t("Row"),o=t("Col"),l=t("authError"),c=t("Markdown",!0),i=t("JumpToPath",!0);let p=this.getValue(),m=r.allErrors().filter((e=>e.get("authId")===a));return x().createElement("div",null,x().createElement("h4",null,x().createElement("code",null,a||e.get("name"))," (apiKey)",x().createElement(i,{path:["securityDefinitions",a]})),p&&x().createElement("h6",null,"Authorized"),x().createElement(s,null,x().createElement(c,{source:e.get("description")})),x().createElement(s,null,x().createElement("p",null,"Name: ",x().createElement("code",null,e.get("name")))),x().createElement(s,null,x().createElement("p",null,"In: ",x().createElement("code",null,e.get("in")))),x().createElement(s,null,x().createElement("label",{htmlFor:"api_key_value"},"Value:"),p?x().createElement("code",null," ****** "):x().createElement(o,null,x().createElement(n,{id:"api_key_value",type:"text",onChange:this.onChange,autoFocus:!0}))),m.valueSeq().map(((e,t)=>x().createElement(l,{error:e,key:t}))))}}class BasicAuth extends x().Component{constructor(e,t){super(e,t);let{schema:r,name:a}=this.props,n=this.getValue().username;this.state={name:a,schema:r,value:n?{username:n}:{}}}getValue(){let{authorized:e,name:t}=this.props;return e&&e.getIn([t,"value"])||{}}onChange=e=>{let{onChange:t}=this.props,{value:r,name:a}=e.target,n=this.state.value;n[a]=r,this.setState({value:n}),t(this.state)};render(){let{schema:e,getComponent:t,name:r,errSelectors:a}=this.props;const n=t("Input"),s=t("Row"),o=t("Col"),l=t("authError"),c=t("JumpToPath",!0),i=t("Markdown",!0);let p=this.getValue().username,m=a.allErrors().filter((e=>e.get("authId")===r));return x().createElement("div",null,x().createElement("h4",null,"Basic authorization",x().createElement(c,{path:["securityDefinitions",r]})),p&&x().createElement("h6",null,"Authorized"),x().createElement(s,null,x().createElement(i,{source:e.get("description")})),x().createElement(s,null,x().createElement("label",{htmlFor:"auth_username"},"Username:"),p?x().createElement("code",null," ",p," "):x().createElement(o,null,x().createElement(n,{id:"auth_username",type:"text",required:"required",name:"username",onChange:this.onChange,autoFocus:!0}))),x().createElement(s,null,x().createElement("label",{htmlFor:"auth_password"},"Password:"),p?x().createElement("code",null," ****** "):x().createElement(o,null,x().createElement(n,{id:"auth_password",autoComplete:"new-password",name:"password",type:"password",onChange:this.onChange}))),m.valueSeq().map(((e,t)=>x().createElement(l,{error:e,key:t}))))}}function Example(e){const{example:t,showValue:r,getComponent:a}=e,n=a("Markdown",!0),s=a("HighlightCode",!0);return t?x().createElement("div",{className:"example"},t.get("description")?x().createElement("section",{className:"example__section"},x().createElement("div",{className:"example__section-header"},"Example Description"),x().createElement("p",null,x().createElement(n,{source:t.get("description")}))):null,r&&t.has("value")?x().createElement("section",{className:"example__section"},x().createElement("div",{className:"example__section-header"},"Example Value"),x().createElement(s,null,stringify(t.get("value")))):null):null}class ExamplesSelect extends x().PureComponent{static defaultProps={examples:k().Map({}),onSelect:(...e)=>console.log("DEBUG: ExamplesSelect was not given an onSelect callback",...e),currentExampleKey:null,showLabels:!0};_onSelect=(e,{isSyntheticChange:t=!1}={})=>{"function"==typeof this.props.onSelect&&this.props.onSelect(e,{isSyntheticChange:t})};_onDomSelect=e=>{if("function"==typeof this.props.onSelect){const t=e.target.selectedOptions[0].getAttribute("value");this._onSelect(t,{isSyntheticChange:!1})}};getCurrentExample=()=>{const{examples:e,currentExampleKey:t}=this.props,r=e.get(t),a=e.keySeq().first(),n=e.get(a);return r||n||Map({})};componentDidMount(){const{onSelect:e,examples:t}=this.props;if("function"==typeof e){const e=t.first(),r=t.keyOf(e);this._onSelect(r,{isSyntheticChange:!0})}}UNSAFE_componentWillReceiveProps(e){const{currentExampleKey:t,examples:r}=e;if(r!==this.props.examples&&!r.has(t)){const e=r.first(),t=r.keyOf(e);this._onSelect(t,{isSyntheticChange:!0})}}render(){const{examples:e,currentExampleKey:t,isValueModified:r,isModifiedValueAvailable:a,showLabels:n}=this.props;return x().createElement("div",{className:"examples-select"},n?x().createElement("span",{className:"examples-select__section-label"},"Examples: "):null,x().createElement("select",{className:"examples-select-element",onChange:this._onDomSelect,value:a&&r?"__MODIFIED__VALUE__":t||""},a?x().createElement("option",{value:"__MODIFIED__VALUE__"},"[Modified value]"):null,e.map(((e,t)=>x().createElement("option",{key:t,value:t},e.get("summary")||t))).valueSeq()))}}const stringifyUnlessList=e=>N.List.isList(e)?e:stringify(e);class ExamplesSelectValueRetainer extends x().PureComponent{static defaultProps={userHasEditedBody:!1,examples:(0,N.Map)({}),currentNamespace:"__DEFAULT__NAMESPACE__",setRetainRequestBodyValueFlag:()=>{},onSelect:(...e)=>console.log("ExamplesSelectValueRetainer: no `onSelect` function was provided",...e),updateValue:(...e)=>console.log("ExamplesSelectValueRetainer: no `updateValue` function was provided",...e)};constructor(e){super(e);const t=this._getCurrentExampleValue();this.state={[e.currentNamespace]:(0,N.Map)({lastUserEditedValue:this.props.currentUserInputValue,lastDownstreamValue:t,isModifiedValueSelected:this.props.userHasEditedBody||this.props.currentUserInputValue!==t})}}componentWillUnmount(){this.props.setRetainRequestBodyValueFlag(!1)}_getStateForCurrentNamespace=()=>{const{currentNamespace:e}=this.props;return(this.state[e]||(0,N.Map)()).toObject()};_setStateForCurrentNamespace=e=>{const{currentNamespace:t}=this.props;return this._setStateForNamespace(t,e)};_setStateForNamespace=(e,t)=>{const r=(this.state[e]||(0,N.Map)()).mergeDeep(t);return this.setState({[e]:r})};_isCurrentUserInputSameAsExampleValue=()=>{const{currentUserInputValue:e}=this.props;return this._getCurrentExampleValue()===e};_getValueForExample=(e,t)=>{const{examples:r}=t||this.props;return stringifyUnlessList((r||(0,N.Map)({})).getIn([e,"value"]))};_getCurrentExampleValue=e=>{const{currentKey:t}=e||this.props;return this._getValueForExample(t,e||this.props)};_onExamplesSelect=(e,{isSyntheticChange:t}={},...r)=>{const{onSelect:a,updateValue:n,currentUserInputValue:s,userHasEditedBody:o}=this.props,{lastUserEditedValue:l}=this._getStateForCurrentNamespace(),c=this._getValueForExample(e);if("__MODIFIED__VALUE__"===e)return n(stringifyUnlessList(l)),this._setStateForCurrentNamespace({isModifiedValueSelected:!0});"function"==typeof a&&a(e,{isSyntheticChange:t},...r),this._setStateForCurrentNamespace({lastDownstreamValue:c,isModifiedValueSelected:t&&o||!!s&&s!==c}),t||"function"==typeof n&&n(stringifyUnlessList(c))};UNSAFE_componentWillReceiveProps(e){const{currentUserInputValue:t,examples:r,onSelect:a,userHasEditedBody:n}=e,{lastUserEditedValue:s,lastDownstreamValue:o}=this._getStateForCurrentNamespace(),l=this._getValueForExample(e.currentKey,e),c=r.filter((e=>e.get("value")===t||stringify(e.get("value"))===t));if(c.size){let t;t=c.has(e.currentKey)?e.currentKey:c.keySeq().first(),a(t,{isSyntheticChange:!0})}else t!==this.props.currentUserInputValue&&t!==s&&t!==o&&(this.props.setRetainRequestBodyValueFlag(!0),this._setStateForNamespace(e.currentNamespace,{lastUserEditedValue:e.currentUserInputValue,isModifiedValueSelected:n||t!==l}))}render(){const{currentUserInputValue:e,examples:t,currentKey:r,getComponent:a,userHasEditedBody:n}=this.props,{lastDownstreamValue:s,lastUserEditedValue:o,isModifiedValueSelected:l}=this._getStateForCurrentNamespace(),c=a("ExamplesSelect");return x().createElement(c,{examples:t,currentExampleKey:r,onSelect:this._onExamplesSelect,isModifiedValueAvailable:!!o&&o!==s,isValueModified:void 0!==e&&l&&e!==this._getCurrentExampleValue()||n})}}function oauth2_authorize_authorize({auth:e,authActions:t,errActions:r,configs:a,authConfigs:n={},currentServer:s}){let{schema:o,scopes:l,name:c,clientId:i}=e,p=o.get("flow"),m=[];switch(p){case"password":return void t.authorizePassword(e);case"application":case"clientCredentials":case"client_credentials":return void t.authorizeApplication(e);case"accessCode":case"authorizationCode":case"authorization_code":m.push("response_type=code");break;case"implicit":m.push("response_type=token")}"string"==typeof i&&m.push("client_id="+encodeURIComponent(i));let u=a.oauth2RedirectUrl;if(void 0===u)return void r.newAuthErr({authId:c,source:"validation",level:"error",message:"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed."});m.push("redirect_uri="+encodeURIComponent(u));let d=[];if(Array.isArray(l)?d=l:k().List.isList(l)&&(d=l.toArray()),d.length>0){let e=n.scopeSeparator||" ";m.push("scope="+encodeURIComponent(d.join(e)))}let h=btoa(new Date);if(m.push("state="+encodeURIComponent(h)),void 0!==n.realm&&m.push("realm="+encodeURIComponent(n.realm)),("authorizationCode"===p||"authorization_code"===p||"accessCode"===p)&&n.usePkceWithAuthorizationCodeGrant){const t=function generateCodeVerifier(){return b64toB64UrlEncoded(ae()(32).toString("base64"))}(),r=function createCodeChallenge(e){return b64toB64UrlEncoded(se()("sha256").update(e).digest("base64"))}(t);m.push("code_challenge="+r),m.push("code_challenge_method=S256"),e.codeVerifier=t}let{additionalQueryStringParams:g}=n;for(let e in g)void 0!==g[e]&&m.push([e,g[e]].map(encodeURIComponent).join("="));const y=o.get("authorizationUrl");let f;f=s?ue()(sanitizeUrl(y),s,!0).toString():sanitizeUrl(y);let S,E=[f,m.join("&")].join(-1===y.indexOf("?")?"?":"&");S="implicit"===p?t.preAuthorizeImplicit:n.useBasicAuthenticationWithAccessCodeGrant?t.authorizeAccessCodeWithBasicAuthentication:t.authorizeAccessCodeWithFormParams,t.authPopup(E,{auth:e,state:h,redirectUrl:u,callback:S,errCb:r.newAuthErr})}class Oauth2 extends x().Component{constructor(e,t){super(e,t);let{name:r,schema:a,authorized:n,authSelectors:s}=this.props,o=n&&n.get(r),l=s.getConfigs()||{},c=o&&o.get("username")||"",i=o&&o.get("clientId")||l.clientId||"",p=o&&o.get("clientSecret")||l.clientSecret||"",m=o&&o.get("passwordType")||"basic",u=o&&o.get("scopes")||l.scopes||[];"string"==typeof u&&(u=u.split(l.scopeSeparator||" ")),this.state={appName:l.appName,name:r,schema:a,scopes:u,clientId:i,clientSecret:p,username:c,password:"",passwordType:m}}close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};authorize=()=>{let{authActions:e,errActions:t,getConfigs:r,authSelectors:a,oas3Selectors:n}=this.props,s=r(),o=a.getConfigs();t.clear({authId:name,type:"auth",source:"auth"}),oauth2_authorize_authorize({auth:this.state,currentServer:n.serverEffectiveValue(n.selectedServer()),authActions:e,errActions:t,configs:s,authConfigs:o})};onScopeChange=e=>{let{target:t}=e,{checked:r}=t,a=t.dataset.value;if(r&&-1===this.state.scopes.indexOf(a)){let e=this.state.scopes.concat([a]);this.setState({scopes:e})}else!r&&this.state.scopes.indexOf(a)>-1&&this.setState({scopes:this.state.scopes.filter((e=>e!==a))})};onInputChange=e=>{let{target:{dataset:{name:t},value:r}}=e,a={[t]:r};this.setState(a)};selectScopes=e=>{e.target.dataset.all?this.setState({scopes:Array.from((this.props.schema.get("allowedScopes")||this.props.schema.get("scopes")).keys())}):this.setState({scopes:[]})};logout=e=>{e.preventDefault();let{authActions:t,errActions:r,name:a}=this.props;r.clear({authId:a,type:"auth",source:"auth"}),t.logoutWithPersistOption([a])};render(){let{schema:e,getComponent:t,authSelectors:r,errSelectors:a,name:n,specSelectors:s}=this.props;const o=t("Input"),l=t("Row"),c=t("Col"),i=t("Button"),p=t("authError"),m=t("JumpToPath",!0),u=t("Markdown",!0),d=t("InitializedInput"),{isOAS3:h}=s;let g=h()?e.get("openIdConnectUrl"):null;const y="implicit",f="password",S=h()?g?"authorization_code":"authorizationCode":"accessCode",E=h()?g?"client_credentials":"clientCredentials":"application";let _=!!(r.getConfigs()||{}).usePkceWithAuthorizationCodeGrant,v=e.get("flow"),w=v===S&&_?v+" with PKCE":v,b=e.get("allowedScopes")||e.get("scopes"),C=!!r.authorized().get(n),O=a.allErrors().filter((e=>e.get("authId")===n)),N=!O.filter((e=>"validation"===e.get("source"))).size,k=e.get("description");return x().createElement("div",null,x().createElement("h4",null,n," (OAuth2, ",w,") ",x().createElement(m,{path:["securityDefinitions",n]})),this.state.appName?x().createElement("h5",null,"Application: ",this.state.appName," "):null,k&&x().createElement(u,{source:e.get("description")}),C&&x().createElement("h6",null,"Authorized"),g&&x().createElement("p",null,"OpenID Connect URL: ",x().createElement("code",null,g)),(v===y||v===S)&&x().createElement("p",null,"Authorization URL: ",x().createElement("code",null,e.get("authorizationUrl"))),(v===f||v===S||v===E)&&x().createElement("p",null,"Token URL:",x().createElement("code",null," ",e.get("tokenUrl"))),x().createElement("p",{className:"flow"},"Flow: ",x().createElement("code",null,w)),v!==f?null:x().createElement(l,null,x().createElement(l,null,x().createElement("label",{htmlFor:"oauth_username"},"username:"),C?x().createElement("code",null," ",this.state.username," "):x().createElement(c,{tablet:10,desktop:10},x().createElement("input",{id:"oauth_username",type:"text","data-name":"username",onChange:this.onInputChange,autoFocus:!0}))),x().createElement(l,null,x().createElement("label",{htmlFor:"oauth_password"},"password:"),C?x().createElement("code",null," ****** "):x().createElement(c,{tablet:10,desktop:10},x().createElement("input",{id:"oauth_password",type:"password","data-name":"password",onChange:this.onInputChange}))),x().createElement(l,null,x().createElement("label",{htmlFor:"password_type"},"Client credentials location:"),C?x().createElement("code",null," ",this.state.passwordType," "):x().createElement(c,{tablet:10,desktop:10},x().createElement("select",{id:"password_type","data-name":"passwordType",onChange:this.onInputChange},x().createElement("option",{value:"basic"},"Authorization header"),x().createElement("option",{value:"request-body"},"Request body"))))),(v===E||v===y||v===S||v===f)&&(!C||C&&this.state.clientId)&&x().createElement(l,null,x().createElement("label",{htmlFor:`client_id_${v}`},"client_id:"),C?x().createElement("code",null," ****** "):x().createElement(c,{tablet:10,desktop:10},x().createElement(d,{id:`client_id_${v}`,type:"text",required:v===f,initialValue:this.state.clientId,"data-name":"clientId",onChange:this.onInputChange}))),(v===E||v===S||v===f)&&x().createElement(l,null,x().createElement("label",{htmlFor:`client_secret_${v}`},"client_secret:"),C?x().createElement("code",null," ****** "):x().createElement(c,{tablet:10,desktop:10},x().createElement(d,{id:`client_secret_${v}`,initialValue:this.state.clientSecret,type:"password","data-name":"clientSecret",onChange:this.onInputChange}))),!C&&b&&b.size?x().createElement("div",{className:"scopes"},x().createElement("h2",null,"Scopes:",x().createElement("a",{onClick:this.selectScopes,"data-all":!0},"select all"),x().createElement("a",{onClick:this.selectScopes},"select none")),b.map(((e,t)=>x().createElement(l,{key:t},x().createElement("div",{className:"checkbox"},x().createElement(o,{"data-value":t,id:`${t}-${v}-checkbox-${this.state.name}`,disabled:C,checked:this.state.scopes.includes(t),type:"checkbox",onChange:this.onScopeChange}),x().createElement("label",{htmlFor:`${t}-${v}-checkbox-${this.state.name}`},x().createElement("span",{className:"item"}),x().createElement("div",{className:"text"},x().createElement("p",{className:"name"},t),x().createElement("p",{className:"description"},e))))))).toArray()):null,O.valueSeq().map(((e,t)=>x().createElement(p,{error:e,key:t}))),x().createElement("div",{className:"auth-btn-wrapper"},N&&(C?x().createElement(i,{className:"btn modal-btn auth authorize",onClick:this.logout,"aria-label":"Remove authorization"},"Logout"):x().createElement(i,{className:"btn modal-btn auth authorize",onClick:this.authorize,"aria-label":"Apply given OAuth2 credentials"},"Authorize")),x().createElement(i,{className:"btn modal-btn auth btn-done",onClick:this.close},"Close")))}}class Clear extends C.Component{onClick=()=>{let{specActions:e,path:t,method:r}=this.props;e.clearResponse(t,r),e.clearRequest(t,r)};render(){return x().createElement("button",{className:"btn btn-clear opblock-control__btn",onClick:this.onClick},"Clear")}}const Headers=({headers:e})=>x().createElement("div",null,x().createElement("h5",null,"Response headers"),x().createElement("pre",{className:"microlight"},e)),Duration=({duration:e})=>x().createElement("div",null,x().createElement("h5",null,"Request duration"),x().createElement("pre",{className:"microlight"},e," ms"));class LiveResponse extends x().Component{shouldComponentUpdate(e){return this.props.response!==e.response||this.props.path!==e.path||this.props.method!==e.method||this.props.displayRequestDuration!==e.displayRequestDuration}render(){const{response:e,getComponent:t,getConfigs:r,displayRequestDuration:a,specSelectors:n,path:s,method:o}=this.props,{showMutatedRequest:l,requestSnippetsEnabled:c}=r(),i=l?n.mutatedRequestFor(s,o):n.requestFor(s,o),p=e.get("status"),m=i.get("url"),u=e.get("headers").toJS(),d=e.get("notDocumented"),h=e.get("error"),g=e.get("text"),y=e.get("duration"),f=Object.keys(u),S=u["content-type"]||u["Content-Type"],E=t("responseBody"),_=f.map((e=>{var t=Array.isArray(u[e])?u[e].join():u[e];return x().createElement("span",{className:"headerline",key:e}," ",e,": ",t," ")})),v=0!==_.length,w=t("Markdown",!0),b=t("RequestSnippets",!0),C=t("curl",!0);return x().createElement("div",null,i&&c?x().createElement(b,{request:i}):x().createElement(C,{request:i}),m&&x().createElement("div",null,x().createElement("div",{className:"request-url"},x().createElement("h4",null,"Request URL"),x().createElement("pre",{className:"microlight"},m))),x().createElement("h4",null,"Server response"),x().createElement("table",{className:"responses-table live-responses-table"},x().createElement("thead",null,x().createElement("tr",{className:"responses-header"},x().createElement("td",{className:"col_header response-col_status"},"Code"),x().createElement("td",{className:"col_header response-col_description"},"Details"))),x().createElement("tbody",null,x().createElement("tr",{className:"response"},x().createElement("td",{className:"response-col_status"},p,d?x().createElement("div",{className:"response-undocumented"},x().createElement("i",null," Undocumented ")):null),x().createElement("td",{className:"response-col_description"},h?x().createElement(w,{source:`${""!==e.get("name")?`${e.get("name")}: `:""}${e.get("message")}`}):null,g?x().createElement(E,{content:g,contentType:S,url:m,headers:u,getConfigs:r,getComponent:t}):null,v?x().createElement(Headers,{headers:_}):null,a&&y?x().createElement(Duration,{duration:y}):null)))))}}class OnlineValidatorBadge extends x().Component{constructor(e,t){super(e,t);let{getConfigs:r}=e,{validatorUrl:a}=r();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===a?"https://validator.swagger.io/validator":a}}getDefinitionUrl=()=>{let{specSelectors:e}=this.props;return new(ue())(e.url(),L.location).toString()};UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:r}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===r?"https://validator.swagger.io/validator":r})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),r=sanitizeUrl(this.state.validatorUrl);return"object"==typeof t&&Object.keys(t).length?null:this.state.url&&requiresValidationURL(this.state.validatorUrl)&&requiresValidationURL(this.state.url)?x().createElement("span",{className:"float-right"},x().createElement("a",{target:"_blank",rel:"noopener noreferrer",href:`${r}/debug?url=${encodeURIComponent(this.state.url)}`},x().createElement(ValidatorImage,{src:`${r}?url=${encodeURIComponent(this.state.url)}`,alt:"Online validator badge"}))):null}}class ValidatorImage extends x().Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?x().createElement("img",{alt:"Error"}):this.state.loaded?x().createElement("img",{src:this.props.src,alt:this.props.alt}):null}}class Operations extends x().Component{render(){let{specSelectors:e}=this.props;const t=e.taggedOperations();return 0===t.size?x().createElement("h3",null," No operations defined in spec!"):x().createElement("div",null,t.map(this.renderOperationTag).toArray(),t.size<1?x().createElement("h3",null," No operations defined in spec! "):null)}renderOperationTag=(e,t)=>{const{specSelectors:r,getComponent:a,oas3Selectors:n,layoutSelectors:s,layoutActions:o,getConfigs:l}=this.props,c=r.validOperationMethods(),i=a("OperationContainer",!0),p=a("OperationTag"),m=e.get("operations");return x().createElement(p,{key:"operation-"+t,tagObj:e,tag:t,oas3Selectors:n,layoutSelectors:s,layoutActions:o,getConfigs:l,getComponent:a,specUrl:r.url()},x().createElement("div",{className:"operation-tag-content"},m.map((e=>{const r=e.get("path"),a=e.get("method"),n=k().List(["paths",r,a]);return-1===c.indexOf(a)?null:x().createElement(i,{key:`${r}-${a}`,specPath:n,op:e,path:r,method:a,tag:t})})).toArray()))}}function isAbsoluteUrl(e){return e.match(/^(?:[a-z]+:)?\/\//i)}function buildBaseUrl(e,t){return e?isAbsoluteUrl(e)?function addProtocol(e){return e.match(/^\/\//i)?`${window.location.protocol}${e}`:e}(e):new URL(e,t).href:t}function safeBuildUrl(e,t,{selectedServer:r=""}={}){try{return function buildUrl(e,t,{selectedServer:r=""}={}){if(!e)return;if(isAbsoluteUrl(e))return e;const a=buildBaseUrl(r,t);return isAbsoluteUrl(a)?new URL(e,a).href:new URL(e,window.location.href).href}(e,t,{selectedServer:r})}catch{return}}class OperationTag extends x().Component{static defaultProps={tagObj:k().fromJS({}),tag:""};render(){const{tagObj:e,tag:t,children:r,oas3Selectors:a,layoutSelectors:n,layoutActions:s,getConfigs:o,getComponent:l,specUrl:c}=this.props;let{docExpansion:i,deepLinking:p}=o();const m=l("Collapse"),u=l("Markdown",!0),d=l("DeepLink"),h=l("Link"),g=l("ArrowUpIcon"),y=l("ArrowDownIcon");let f,S=e.getIn(["tagDetails","description"],null),E=e.getIn(["tagDetails","externalDocs","description"]),_=e.getIn(["tagDetails","externalDocs","url"]);f=isFunc(a)&&isFunc(a.selectedServer)?safeBuildUrl(_,c,{selectedServer:a.selectedServer()}):_;let v=["operations-tag",t],w=n.isShown(v,"full"===i||"list"===i);return x().createElement("div",{className:w?"opblock-tag-section is-open":"opblock-tag-section"},x().createElement("h3",{onClick:()=>s.show(v,!w),className:S?"opblock-tag":"opblock-tag no-desc",id:v.map((e=>escapeDeepLinkPath(e))).join("-"),"data-tag":t,"data-is-open":w},x().createElement(d,{enabled:p,isShown:w,path:createDeepLinkPath(t),text:t}),S?x().createElement("small",null,x().createElement(u,{source:S})):x().createElement("small",null),f?x().createElement("div",{className:"info__externaldocs"},x().createElement("small",null,x().createElement(h,{href:sanitizeUrl(f),onClick:e=>e.stopPropagation(),target:"_blank"},E||f))):null,x().createElement("button",{"aria-expanded":w,className:"expand-operation",title:w?"Collapse operation":"Expand operation",onClick:()=>s.show(v,!w)},w?x().createElement(g,{className:"arrow"}):x().createElement(y,{className:"arrow"}))),x().createElement(m,{isOpened:w},r))}}class Operation extends C.PureComponent{static defaultProps={operation:null,response:null,request:null,specPath:(0,N.List)(),summary:""};render(){let{specPath:e,response:t,request:r,toggleShown:a,onTryoutClick:n,onResetClick:s,onCancelClick:o,onExecute:l,fn:c,getComponent:i,getConfigs:p,specActions:m,specSelectors:u,authActions:d,authSelectors:h,oas3Actions:g,oas3Selectors:y}=this.props,f=this.props.operation,{deprecated:S,isShown:E,path:_,method:v,op:w,tag:b,operationId:C,allowTryItOut:O,displayRequestDuration:N,tryItOutEnabled:A,executeInProgress:I}=f.toJS(),{description:q,externalDocs:j,schemes:P}=w;const M=j?safeBuildUrl(j.url,u.url(),{selectedServer:y.selectedServer()}):"";let R=f.getIn(["op"]),T=R.get("responses"),J=function getList(e,t){if(!k().Iterable.isIterable(e))return k().List();let r=e.getIn(Array.isArray(t)?t:[t]);return k().List.isList(r)?r:k().List()}(R,["parameters"]),$=u.operationScheme(_,v),V=["operations",b,C],D=getExtensions(R);const K=i("responses"),L=i("parameters"),U=i("execute"),z=i("clear"),B=i("Collapse"),F=i("Markdown",!0),W=i("schemes"),H=i("OperationServers"),X=i("OperationExt"),G=i("OperationSummary"),Y=i("Link"),{showExtensions:Q}=p();if(T&&t&&t.size>0){let e=!T.get(String(t.get("status")))&&!T.get("default");t=t.set("notDocumented",e)}let Z=[_,v];const ee=u.validationErrors([_,v]);return x().createElement("div",{className:S?"opblock opblock-deprecated":E?`opblock opblock-${v} is-open`:`opblock opblock-${v}`,id:escapeDeepLinkPath(V.join("-"))},x().createElement(G,{operationProps:f,isShown:E,toggleShown:a,getComponent:i,authActions:d,authSelectors:h,specPath:e}),x().createElement(B,{isOpened:E},x().createElement("div",{className:"opblock-body"},R&&R.size||null===R?null:x().createElement(rolling_load,{height:"32px",width:"32px",className:"opblock-loading-animation"}),S&&x().createElement("h4",{className:"opblock-title_normal"}," Warning: Deprecated"),q&&x().createElement("div",{className:"opblock-description-wrapper"},x().createElement("div",{className:"opblock-description"},x().createElement(F,{source:q}))),M?x().createElement("div",{className:"opblock-external-docs-wrapper"},x().createElement("h4",{className:"opblock-title_normal"},"Find more details"),x().createElement("div",{className:"opblock-external-docs"},j.description&&x().createElement("span",{className:"opblock-external-docs__description"},x().createElement(F,{source:j.description})),x().createElement(Y,{target:"_blank",className:"opblock-external-docs__link",href:sanitizeUrl(M)},M))):null,R&&R.size?x().createElement(L,{parameters:J,specPath:e.push("parameters"),operation:R,onChangeKey:Z,onTryoutClick:n,onResetClick:s,onCancelClick:o,tryItOutEnabled:A,allowTryItOut:O,fn:c,getComponent:i,specActions:m,specSelectors:u,pathMethod:[_,v],getConfigs:p,oas3Actions:g,oas3Selectors:y}):null,A?x().createElement(H,{getComponent:i,path:_,method:v,operationServers:R.get("servers"),pathServers:u.paths().getIn([_,"servers"]),getSelectedServer:y.selectedServer,setSelectedServer:g.setSelectedServer,setServerVariableValue:g.setServerVariableValue,getServerVariable:y.serverVariableValue,getEffectiveServerValue:y.serverEffectiveValue}):null,A&&O&&P&&P.size?x().createElement("div",{className:"opblock-schemes"},x().createElement(W,{schemes:P,path:_,method:v,specActions:m,currentScheme:$})):null,!A||!O||ee.length<=0?null:x().createElement("div",{className:"validation-errors errors-wrapper"},"Please correct the following validation errors and try again.",x().createElement("ul",null,ee.map(((e,t)=>x().createElement("li",{key:t}," ",e," "))))),x().createElement("div",{className:A&&t&&O?"btn-group":"execute-wrapper"},A&&O?x().createElement(U,{operation:R,specActions:m,specSelectors:u,oas3Selectors:y,oas3Actions:g,path:_,method:v,onExecute:l,disabled:I}):null,A&&t&&O?x().createElement(z,{specActions:m,path:_,method:v}):null),I?x().createElement("div",{className:"loading-container"},x().createElement("div",{className:"loading"})):null,T?x().createElement(K,{responses:T,request:r,tryItOutResponse:t,getComponent:i,getConfigs:p,specSelectors:u,oas3Actions:g,oas3Selectors:y,specActions:m,produces:u.producesOptionsFor([_,v]),producesValue:u.currentProducesFor([_,v]),specPath:e.push("responses"),path:_,method:v,displayRequestDuration:N,fn:c}):null,Q&&D.size?x().createElement(X,{extensions:D,getComponent:i}):null)))}}class OperationContainer extends C.PureComponent{constructor(e,t){super(e,t);const{tryItOutEnabled:r}=e.getConfigs();this.state={tryItOutEnabled:r,executeInProgress:!1}}static defaultProps={showSummary:!0,response:null,allowTryItOut:!0,displayOperationId:!1,displayRequestDuration:!1};mapStateToProps(e,t){const{op:r,layoutSelectors:a,getConfigs:n}=t,{docExpansion:s,deepLinking:o,displayOperationId:l,displayRequestDuration:c,supportedSubmitMethods:i}=n(),p=a.showSummary(),m=r.getIn(["operation","__originalOperationId"])||r.getIn(["operation","operationId"])||(0,oa.opId)(r.get("operation"),t.path,t.method)||r.get("id"),u=["operations",t.tag,m],d=i.indexOf(t.method)>=0&&(void 0===t.allowTryItOut?t.specSelectors.allowTryItOutFor(t.path,t.method):t.allowTryItOut),h=r.getIn(["operation","security"])||t.specSelectors.security();return{operationId:m,isDeepLinkingEnabled:o,showSummary:p,displayOperationId:l,displayRequestDuration:c,allowTryItOut:d,security:h,isAuthorized:t.authSelectors.isAuthorized(h),isShown:a.isShown(u,"full"===s),jumpToKey:`paths.${t.path}.${t.method}`,response:t.specSelectors.responseFor(t.path,t.method),request:t.specSelectors.requestFor(t.path,t.method)}}componentDidMount(){const{isShown:e}=this.props,t=this.getResolvedSubtree();e&&void 0===t&&this.requestResolvedSubtree()}UNSAFE_componentWillReceiveProps(e){const{response:t,isShown:r}=e,a=this.getResolvedSubtree();t!==this.props.response&&this.setState({executeInProgress:!1}),r&&void 0===a&&this.requestResolvedSubtree()}toggleShown=()=>{let{layoutActions:e,tag:t,operationId:r,isShown:a}=this.props;const n=this.getResolvedSubtree();a||void 0!==n||this.requestResolvedSubtree(),e.show(["operations",t,r],!a)};onCancelClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onTryoutClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onResetClick=e=>{const t=this.props.oas3Selectors.selectDefaultRequestBodyValue(...e);this.props.oas3Actions.setRequestBodyValue({value:t,pathMethod:e})};onExecute=()=>{this.setState({executeInProgress:!0})};getResolvedSubtree=()=>{const{specSelectors:e,path:t,method:r,specPath:a}=this.props;return a?e.specResolvedSubtree(a.toJS()):e.specResolvedSubtree(["paths",t,r])};requestResolvedSubtree=()=>{const{specActions:e,path:t,method:r,specPath:a}=this.props;return a?e.requestResolvedSubtree(a.toJS()):e.requestResolvedSubtree(["paths",t,r])};render(){let{op:e,tag:t,path:r,method:a,security:n,isAuthorized:s,operationId:o,showSummary:l,isShown:c,jumpToKey:i,allowTryItOut:p,response:m,request:u,displayOperationId:d,displayRequestDuration:h,isDeepLinkingEnabled:g,specPath:y,specSelectors:f,specActions:S,getComponent:E,getConfigs:_,layoutSelectors:v,layoutActions:w,authActions:b,authSelectors:C,oas3Actions:O,oas3Selectors:k,fn:A}=this.props;const I=E("operation"),q=this.getResolvedSubtree()||(0,N.Map)(),j=(0,N.fromJS)({op:q,tag:t,path:r,summary:e.getIn(["operation","summary"])||"",deprecated:q.get("deprecated")||e.getIn(["operation","deprecated"])||!1,method:a,security:n,isAuthorized:s,operationId:o,originalOperationId:q.getIn(["operation","__originalOperationId"]),showSummary:l,isShown:c,jumpToKey:i,allowTryItOut:p,request:u,displayOperationId:d,displayRequestDuration:h,isDeepLinkingEnabled:g,executeInProgress:this.state.executeInProgress,tryItOutEnabled:this.state.tryItOutEnabled});return x().createElement(I,{operation:j,response:m,request:u,isShown:c,toggleShown:this.toggleShown,onTryoutClick:this.onTryoutClick,onResetClick:this.onResetClick,onCancelClick:this.onCancelClick,onExecute:this.onExecute,specPath:y,specActions:S,specSelectors:f,oas3Actions:O,oas3Selectors:k,layoutActions:w,layoutSelectors:v,authActions:b,authSelectors:C,getComponent:E,getConfigs:_,fn:A})}}const Ya=require("lodash/toString");var Qa=__webpack_require__.n(Ya);class OperationSummary extends C.PureComponent{static defaultProps={operationProps:null,specPath:(0,N.List)(),summary:""};render(){let{isShown:e,toggleShown:t,getComponent:r,authActions:a,authSelectors:n,operationProps:s,specPath:o}=this.props,{summary:l,isAuthorized:c,method:i,op:p,showSummary:m,path:u,operationId:d,originalOperationId:h,displayOperationId:g}=s.toJS(),{summary:y}=p,f=s.get("security");const S=r("authorizeOperationBtn",!0),E=r("OperationSummaryMethod"),_=r("OperationSummaryPath"),v=r("JumpToPath",!0),w=r("CopyToClipboardBtn",!0),b=r("ArrowUpIcon"),C=r("ArrowDownIcon"),O=f&&!!f.count(),N=O&&1===f.size&&f.first().isEmpty(),k=!O||N;return x().createElement("div",{className:`opblock-summary opblock-summary-${i}`},x().createElement("button",{"aria-expanded":e,className:"opblock-summary-control",onClick:t},x().createElement(E,{method:i}),x().createElement("div",{className:"opblock-summary-path-description-wrapper"},x().createElement(_,{getComponent:r,operationProps:s,specPath:o}),m?x().createElement("div",{className:"opblock-summary-description"},Qa()(y||l)):null),g&&(h||d)?x().createElement("span",{className:"opblock-summary-operation-id"},h||d):null),x().createElement(w,{textToCopy:`${o.get(1)}`}),k?null:x().createElement(S,{isAuthorized:c,onClick:()=>{const e=n.definitionsForRequirements(f);a.showDefinitions(e)}}),x().createElement(v,{path:o}),x().createElement("button",{"aria-label":`${i} ${u.replace(/\//g,"​/")}`,className:"opblock-control-arrow","aria-expanded":e,tabIndex:"-1",onClick:t},e?x().createElement(b,{className:"arrow"}):x().createElement(C,{className:"arrow"})))}}class OperationSummaryMethod extends C.PureComponent{static defaultProps={operationProps:null};render(){let{method:e}=this.props;return x().createElement("span",{className:"opblock-summary-method"},e.toUpperCase())}}class OperationSummaryPath extends C.PureComponent{render(){let{getComponent:e,operationProps:t}=this.props,{deprecated:r,isShown:a,path:n,tag:s,operationId:o,isDeepLinkingEnabled:l}=t.toJS();const c=n.split(/(?=\/)/g);for(let e=1;e{let r=t("OperationExtRow");return x().createElement("div",{className:"opblock-section"},x().createElement("div",{className:"opblock-section-header"},x().createElement("h4",null,"Extensions")),x().createElement("div",{className:"table-container"},x().createElement("table",null,x().createElement("thead",null,x().createElement("tr",null,x().createElement("td",{className:"col_header"},"Field"),x().createElement("td",{className:"col_header"},"Value"))),x().createElement("tbody",null,e.entrySeq().map((([e,t])=>x().createElement(r,{key:`${e}-${t}`,xKey:e,xVal:t})))))))},operation_extension_row=({xKey:e,xVal:t})=>{const r=t?t.toJS?t.toJS():t:null;return x().createElement("tr",null,x().createElement("td",null,e),x().createElement("td",null,JSON.stringify(r)))};function createHtmlReadyId(e,t="_"){return e.replace(/[^\w-]/g,t)}class Responses extends x().Component{static defaultProps={tryItOutResponse:null,produces:(0,N.fromJS)(["application/json"]),displayRequestDuration:!1};onChangeProducesWrapper=e=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],e);onResponseContentTypeChange=({controlsAcceptHeader:e,value:t})=>{const{oas3Actions:r,path:a,method:n}=this.props;e&&r.setResponseContentType({value:t,path:a,method:n})};render(){let{responses:e,tryItOutResponse:t,getComponent:r,getConfigs:a,specSelectors:n,fn:s,producesValue:o,displayRequestDuration:l,specPath:c,path:i,method:p,oas3Selectors:m,oas3Actions:u}=this.props,d=function defaultStatusCode(e){let t=e.keySeq();return t.contains(ce)?ce:t.filter((e=>"2"===(e+"")[0])).sort().first()}(e);const h=r("contentType"),g=r("liveResponse"),y=r("response");let f=this.props.produces&&this.props.produces.size?this.props.produces:Responses.defaultProps.produces;const S=n.isOAS3()?function getAcceptControllingResponse(e){if(!k().OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;const t=e.find(((e,t)=>t.startsWith("2")&&Object.keys(e.get("content")||{}).length>0)),r=e.get("default")||k().OrderedMap(),a=(r.get("content")||k().OrderedMap()).keySeq().toJS().length?r:null;return t||a}(e):null,E=createHtmlReadyId(`${p}${i}_responses`),_=`${E}_select`;return x().createElement("div",{className:"responses-wrapper"},x().createElement("div",{className:"opblock-section-header"},x().createElement("h4",null,"Responses"),n.isOAS3()?null:x().createElement("label",{htmlFor:_},x().createElement("span",null,"Response content type"),x().createElement(h,{value:o,ariaControls:E,ariaLabel:"Response content type",className:"execute-content-type",contentTypes:f,controlId:_,onChange:this.onChangeProducesWrapper}))),x().createElement("div",{className:"responses-inner"},t?x().createElement("div",null,x().createElement(g,{response:t,getComponent:r,getConfigs:a,specSelectors:n,path:this.props.path,method:this.props.method,displayRequestDuration:l}),x().createElement("h4",null,"Responses")):null,x().createElement("table",{"aria-live":"polite",className:"responses-table",id:E,role:"region"},x().createElement("thead",null,x().createElement("tr",{className:"responses-header"},x().createElement("td",{className:"col_header response-col_status"},"Code"),x().createElement("td",{className:"col_header response-col_description"},"Description"),n.isOAS3()?x().createElement("td",{className:"col col_header response-col_links"},"Links"):null)),x().createElement("tbody",null,e.entrySeq().map((([e,l])=>{let h=t&&t.get("status")==e?"response_current":"";return x().createElement(y,{key:e,path:i,method:p,specPath:c.push(e),isDefault:d===e,fn:s,className:h,code:e,response:l,specSelectors:n,controlsAcceptHeader:l===S,onContentTypeChange:this.onResponseContentTypeChange,contentType:o,getConfigs:a,activeExamplesKey:m.activeExamplesMember(i,p,"responses",e),oas3Actions:u,getComponent:r})})).toArray()))))}}function getKnownSyntaxHighlighterLanguage(e){return function canJsonParse(e){try{return!!JSON.parse(e)}catch(e){return null}}(e)?"json":null}class Response extends x().Component{constructor(e,t){super(e,t),this.state={responseContentType:""}}static defaultProps={response:(0,N.fromJS)({}),onContentTypeChange:()=>{}};_onContentTypeChange=e=>{const{onContentTypeChange:t,controlsAcceptHeader:r}=this.props;this.setState({responseContentType:e}),t({value:e,controlsAcceptHeader:r})};getTargetExamplesKey=()=>{const{response:e,contentType:t,activeExamplesKey:r}=this.props,a=this.state.responseContentType||t,n=e.getIn(["content",a],(0,N.Map)({})).get("examples",null).keySeq().first();return r||n};render(){let{path:e,method:t,code:r,response:a,className:n,specPath:s,fn:o,getComponent:l,getConfigs:c,specSelectors:i,contentType:p,controlsAcceptHeader:m,oas3Actions:u}=this.props,{inferSchema:d,getSampleSchema:h}=o,g=i.isOAS3();const{showExtensions:y}=c();let f=y?getExtensions(a):null,S=a.get("headers"),E=a.get("links");const _=l("ResponseExtension"),v=l("headers"),w=l("HighlightCode",!0),b=l("modelExample"),C=l("Markdown",!0),O=l("operationLink"),k=l("contentType"),A=l("ExamplesSelect"),I=l("Example");var q,j;const P=this.state.responseContentType||p,M=a.getIn(["content",P],(0,N.Map)({})),R=M.get("examples",null);if(g){const e=M.get("schema");q=e?d(e.toJS()):null,j=e?(0,N.List)(["content",this.state.responseContentType,"schema"]):s}else q=a.get("schema"),j=a.has("schema")?s.push("schema"):s;let T,J,$=!1,V={includeReadOnly:!0};if(g)if(J=M.get("schema")?.toJS(),N.Map.isMap(R)&&!R.isEmpty()){const e=this.getTargetExamplesKey(),getMediaTypeExample=e=>e.get("value");T=getMediaTypeExample(R.get(e,(0,N.Map)({}))),void 0===T&&(T=getMediaTypeExample(R.values().next().value)),$=!0}else void 0!==M.get("example")&&(T=M.get("example"),$=!0);else{J=q,V={...V,includeWriteOnly:!0};const e=a.getIn(["examples",P]);e&&(T=e,$=!0)}const D=((e,t)=>{if(null==e)return null;const r=getKnownSyntaxHighlighterLanguage(e)?"json":null;return x().createElement("div",null,x().createElement(t,{className:"example",language:r},stringify(e)))})(h(J,P,V,$?T:void 0),w);return x().createElement("tr",{className:"response "+(n||""),"data-code":r},x().createElement("td",{className:"response-col_status"},r),x().createElement("td",{className:"response-col_description"},x().createElement("div",{className:"response-col_description__inner"},x().createElement(C,{source:a.get("description")})),y&&f.size?f.entrySeq().map((([e,t])=>x().createElement(_,{key:`${e}-${t}`,xKey:e,xVal:t}))):null,g&&a.get("content")?x().createElement("section",{className:"response-controls"},x().createElement("div",{className:ut()("response-control-media-type",{"response-control-media-type--accept-controller":m})},x().createElement("small",{className:"response-control-media-type__title"},"Media type"),x().createElement(k,{value:this.state.responseContentType,contentTypes:a.get("content")?a.get("content").keySeq():(0,N.Seq)(),onChange:this._onContentTypeChange,ariaLabel:"Media Type"}),m?x().createElement("small",{className:"response-control-media-type__accept-message"},"Controls ",x().createElement("code",null,"Accept")," header."):null),N.Map.isMap(R)&&!R.isEmpty()?x().createElement("div",{className:"response-control-examples"},x().createElement("small",{className:"response-control-examples__title"},"Examples"),x().createElement(A,{examples:R,currentExampleKey:this.getTargetExamplesKey(),onSelect:a=>u.setActiveExamplesMember({name:a,pathMethod:[e,t],contextType:"responses",contextName:r}),showLabels:!1})):null):null,D||q?x().createElement(b,{specPath:j,getComponent:l,getConfigs:c,specSelectors:i,schema:fromJSOrdered(q),example:D,includeReadOnly:!0}):null,g&&R?x().createElement(I,{example:R.get(this.getTargetExamplesKey(),(0,N.Map)({})),getComponent:l,getConfigs:c,omitValue:!0}):null,S?x().createElement(v,{headers:S,getComponent:l}):null),g?x().createElement("td",{className:"response-col_links"},E?E.toSeq().entrySeq().map((([e,t])=>x().createElement(O,{key:e,name:e,link:t,getComponent:l}))):x().createElement("i",null,"No links")):null)}}const response_extension=({xKey:e,xVal:t})=>x().createElement("div",{className:"response__extension"},e,": ",String(t)),Za=require("xml-but-prettier");var en=__webpack_require__.n(Za);const tn=require("lodash/toLower");var rn=__webpack_require__.n(tn);class ResponseBody extends x().PureComponent{state={parsedContent:null};updateParsedContent=e=>{const{content:t}=this.props;if(e!==t)if(t&&t instanceof Blob){var r=new FileReader;r.onload=()=>{this.setState({parsedContent:r.result})},r.readAsText(t)}else this.setState({parsedContent:t.toString()})};componentDidMount(){this.updateParsedContent(null)}componentDidUpdate(e){this.updateParsedContent(e.content)}render(){let{content:e,contentType:t,url:r,headers:a={},getComponent:n}=this.props;const{parsedContent:s}=this.state,o=n("HighlightCode",!0),l="response_"+(new Date).getTime();let c,i;if(r=r||"",(/^application\/octet-stream/i.test(t)||a["Content-Disposition"]&&/attachment/i.test(a["Content-Disposition"])||a["content-disposition"]&&/attachment/i.test(a["content-disposition"])||a["Content-Description"]&&/File Transfer/i.test(a["Content-Description"])||a["content-description"]&&/File Transfer/i.test(a["content-description"]))&&(e.size>0||e.length>0))if("Blob"in window){let n=t||"text/html",s=e instanceof Blob?e:new Blob([e],{type:n}),o=window.URL.createObjectURL(s),l=[n,r.substr(r.lastIndexOf("/")+1),o].join(":"),c=a["content-disposition"]||a["Content-Disposition"];if(void 0!==c){let e=function extractFileNameFromContentDispositionHeader(e){let t;if([/filename\*=[^']+'\w*'"([^"]+)";?/i,/filename\*=[^']+'\w*'([^;]+);?/i,/filename="([^;]*);?"/i,/filename=([^;]*);?/i].some((r=>(t=r.exec(e),null!==t))),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}(c);null!==e&&(l=e)}i=L.navigator&&L.navigator.msSaveOrOpenBlob?x().createElement("div",null,x().createElement("a",{href:o,onClick:()=>L.navigator.msSaveOrOpenBlob(s,l)},"Download file")):x().createElement("div",null,x().createElement("a",{href:o,download:l},"Download file"))}else i=x().createElement("pre",{className:"microlight"},"Download headers detected but your browser does not support downloading binary via XHR (Blob).");else if(/json/i.test(t)){let t=null;getKnownSyntaxHighlighterLanguage(e)&&(t="json");try{c=JSON.stringify(JSON.parse(e),null," ")}catch(t){c="can't parse JSON. Raw result:\n\n"+e}i=x().createElement(o,{language:t,downloadable:!0,fileName:`${l}.json`,canCopy:!0},c)}else/xml/i.test(t)?(c=en()(e,{textNodesOnSameLine:!0,indentor:" "}),i=x().createElement(o,{downloadable:!0,fileName:`${l}.xml`,canCopy:!0},c)):i="text/html"===rn()(t)||/text\/plain/.test(t)?x().createElement(o,{downloadable:!0,fileName:`${l}.html`,canCopy:!0},e):"text/csv"===rn()(t)||/text\/csv/.test(t)?x().createElement(o,{downloadable:!0,fileName:`${l}.csv`,canCopy:!0},e):/^image\//i.test(t)?t.includes("svg")?x().createElement("div",null," ",e," "):x().createElement("img",{src:window.URL.createObjectURL(e)}):/^audio\//i.test(t)?x().createElement("pre",{className:"microlight"},x().createElement("audio",{controls:!0,key:r},x().createElement("source",{src:r,type:t}))):"string"==typeof e?x().createElement(o,{downloadable:!0,fileName:`${l}.txt`,canCopy:!0},e):e.size>0?s?x().createElement("div",null,x().createElement("p",{className:"i"},"Unrecognized response type; displaying content as text."),x().createElement(o,{downloadable:!0,fileName:`${l}.txt`,canCopy:!0},s)):x().createElement("p",{className:"i"},"Unrecognized response type; unable to display."):null;return i?x().createElement("div",null,x().createElement("h5",null,"Response body"),i):null}}class Parameters extends C.Component{constructor(e){super(e),this.state={callbackVisible:!1,parametersVisible:!0}}static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,tryItOutEnabled:!1,allowTryItOut:!0,onChangeKey:[],specPath:[]};onChange=(e,t,r)=>{let{specActions:{changeParamByIdentity:a},onChangeKey:n}=this.props;a(n,e,t,r)};onChangeConsumesWrapper=e=>{let{specActions:{changeConsumesValue:t},onChangeKey:r}=this.props;t(r,e)};toggleTab=e=>"parameters"===e?this.setState({parametersVisible:!0,callbackVisible:!1}):"callbacks"===e?this.setState({callbackVisible:!0,parametersVisible:!1}):void 0;onChangeMediaType=({value:e,pathMethod:t})=>{let{specActions:r,oas3Selectors:a,oas3Actions:n}=this.props;const s=a.hasUserEditedBody(...t),o=a.shouldRetainRequestBodyValue(...t);n.setRequestContentType({value:e,pathMethod:t}),n.initRequestBodyValidateError({pathMethod:t}),s||(o||n.setRequestBodyValue({value:void 0,pathMethod:t}),r.clearResponse(...t),r.clearRequest(...t),r.clearValidateParams(t))};render(){let{onTryoutClick:e,onResetClick:t,parameters:r,allowTryItOut:a,tryItOutEnabled:n,specPath:s,fn:o,getComponent:l,getConfigs:c,specSelectors:i,specActions:p,pathMethod:m,oas3Actions:u,oas3Selectors:d,operation:h}=this.props;const g=l("parameterRow"),y=l("TryItOutButton"),f=l("contentType"),S=l("Callbacks",!0),E=l("RequestBody",!0),_=n&&a,v=i.isOAS3(),w=`${createHtmlReadyId(`${m[1]}${m[0]}_requests`)}_select`,b=h.get("requestBody"),C=Object.values(r.reduce(((e,t)=>{const r=t.get("in");return e[r]??=[],e[r].push(t),e}),{})).reduce(((e,t)=>e.concat(t)),[]);return x().createElement("div",{className:"opblock-section"},x().createElement("div",{className:"opblock-section-header"},v?x().createElement("div",{className:"tab-header"},x().createElement("div",{onClick:()=>this.toggleTab("parameters"),className:`tab-item ${this.state.parametersVisible&&"active"}`},x().createElement("h4",{className:"opblock-title"},x().createElement("span",null,"Parameters"))),h.get("callbacks")?x().createElement("div",{onClick:()=>this.toggleTab("callbacks"),className:`tab-item ${this.state.callbackVisible&&"active"}`},x().createElement("h4",{className:"opblock-title"},x().createElement("span",null,"Callbacks"))):null):x().createElement("div",{className:"tab-header"},x().createElement("h4",{className:"opblock-title"},"Parameters")),a?x().createElement(y,{isOAS3:i.isOAS3(),hasUserEditedBody:d.hasUserEditedBody(...m),enabled:n,onCancelClick:this.props.onCancelClick,onTryoutClick:e,onResetClick:()=>t(m)}):null),this.state.parametersVisible?x().createElement("div",{className:"parameters-container"},C.length?x().createElement("div",{className:"table-container"},x().createElement("table",{className:"parameters"},x().createElement("thead",null,x().createElement("tr",null,x().createElement("th",{className:"col_header parameters-col_name"},"Name"),x().createElement("th",{className:"col_header parameters-col_description"},"Description"))),x().createElement("tbody",null,C.map(((e,t)=>x().createElement(g,{fn:o,specPath:s.push(t.toString()),getComponent:l,getConfigs:c,rawParam:e,param:i.parameterWithMetaByIdentity(m,e),key:`${e.get("in")}.${e.get("name")}`,onChange:this.onChange,onChangeConsumes:this.onChangeConsumesWrapper,specSelectors:i,specActions:p,oas3Actions:u,oas3Selectors:d,pathMethod:m,isExecute:_})))))):x().createElement("div",{className:"opblock-description-wrapper"},x().createElement("p",null,"No parameters"))):null,this.state.callbackVisible?x().createElement("div",{className:"callbacks-container opblock-description-wrapper"},x().createElement(S,{callbacks:(0,N.Map)(h.get("callbacks")),specPath:s.slice(0,-1).push("callbacks")})):null,v&&b&&this.state.parametersVisible&&x().createElement("div",{className:"opblock-section opblock-section-request-body"},x().createElement("div",{className:"opblock-section-header"},x().createElement("h4",{className:`opblock-title parameter__name ${b.get("required")&&"required"}`},"Request body"),x().createElement("label",{id:w},x().createElement(f,{value:d.requestContentType(...m),contentTypes:b.get("content",(0,N.List)()).keySeq(),onChange:e=>{this.onChangeMediaType({value:e,pathMethod:m})},className:"body-param-content-type",ariaLabel:"Request content type",controlId:w}))),x().createElement("div",{className:"opblock-description-wrapper"},x().createElement(E,{setRetainRequestBodyValueFlag:e=>u.setRetainRequestBodyValueFlag({value:e,pathMethod:m}),userHasEditedBody:d.hasUserEditedBody(...m),specPath:s.slice(0,-1).push("requestBody"),requestBody:b,requestBodyValue:d.requestBodyValue(...m),requestBodyInclusionSetting:d.requestBodyInclusionSetting(...m),requestBodyErrors:d.requestBodyErrors(...m),isExecute:_,getConfigs:c,activeExamplesKey:d.activeExamplesMember(...m,"requestBody","requestBody"),updateActiveExamplesKey:e=>{this.props.oas3Actions.setActiveExamplesMember({name:e,pathMethod:this.props.pathMethod,contextType:"requestBody",contextName:"requestBody"})},onChange:(e,t)=>{if(t){const r=d.requestBodyValue(...m),a=N.Map.isMap(r)?r:(0,N.Map)();return u.setRequestBodyValue({pathMethod:m,value:a.setIn(t,e)})}u.setRequestBodyValue({value:e,pathMethod:m})},onChangeIncludeEmpty:(e,t)=>{u.setRequestBodyInclusion({pathMethod:m,value:t,name:e})},contentType:d.requestContentType(...m)}))))}}const parameter_extension=({xKey:e,xVal:t})=>x().createElement("div",{className:"parameter__extension"},e,": ",String(t)),an={onChange:()=>{},isIncludedOptions:{}};class ParameterIncludeEmpty extends C.Component{static defaultProps=an;componentDidMount(){const{isIncludedOptions:e,onChange:t}=this.props,{shouldDispatchInit:r,defaultValue:a}=e;r&&t(a)}onCheckboxChange=e=>{const{onChange:t}=this.props;t(e.target.checked)};render(){let{isIncluded:e,isDisabled:t}=this.props;return x().createElement("div",null,x().createElement("label",{htmlFor:"include_empty_value",className:ut()("parameter__empty_value_toggle",{disabled:t})},x().createElement("input",{id:"include_empty_value",type:"checkbox",disabled:t,checked:!t&&e,onChange:this.onCheckboxChange}),"Send empty value"))}}class ParameterRow extends C.Component{constructor(e,t){super(e,t),this.setDefaultValue()}UNSAFE_componentWillReceiveProps(e){let t,{specSelectors:r,pathMethod:a,rawParam:n}=e,s=r.isOAS3(),o=r.parameterWithMetaByIdentity(a,n)||new N.Map;if(o=o.isEmpty()?n:o,s){let{schema:e}=getParameterSchema(o,{isOAS3:s});t=e?e.get("enum"):void 0}else t=o?o.get("enum"):void 0;let l,c=o?o.get("value"):void 0;void 0!==c?l=c:n.get("required")&&t&&t.size&&(l=t.first()),void 0!==l&&l!==c&&this.onChangeWrapper(function numberToString(e){return"number"==typeof e?e.toString():e}(l)),this.setDefaultValue()}onChangeWrapper=(e,t=!1)=>{let r,{onChange:a,rawParam:n}=this.props;return r=""===e||e&&0===e.size?null:e,a(n,r,t)};_onExampleSelect=e=>{this.props.oas3Actions.setActiveExamplesMember({name:e,pathMethod:this.props.pathMethod,contextType:"parameters",contextName:this.getParamKey()})};onChangeIncludeEmpty=e=>{let{specActions:t,param:r,pathMethod:a}=this.props;const n=r.get("name"),s=r.get("in");return t.updateEmptyParamInclusion(a,n,s,e)};setDefaultValue=()=>{let{specSelectors:e,pathMethod:t,rawParam:r,oas3Selectors:a,fn:n}=this.props;const s=e.parameterWithMetaByIdentity(t,r)||(0,N.Map)();let{schema:o}=getParameterSchema(s,{isOAS3:e.isOAS3()});const l=s.get("content",(0,N.Map)()).keySeq().first(),c=o?n.getSampleSchema(o.toJS(),l,{includeWriteOnly:!0}):null;if(s&&void 0===s.get("value")&&"body"!==s.get("in")){let r;if(e.isSwagger2())r=void 0!==s.get("x-example")?s.get("x-example"):void 0!==s.getIn(["schema","example"])?s.getIn(["schema","example"]):o&&o.getIn(["default"]);else if(e.isOAS3()){o=this.composeJsonSchema(o);const e=a.activeExamplesMember(...t,"parameters",this.getParamKey());r=void 0!==s.getIn(["examples",e,"value"])?s.getIn(["examples",e,"value"]):void 0!==s.getIn(["content",l,"example"])?s.getIn(["content",l,"example"]):void 0!==s.get("example")?s.get("example"):void 0!==(o&&o.get("example"))?o&&o.get("example"):void 0!==(o&&o.get("default"))?o&&o.get("default"):s.get("default")}void 0===r||N.List.isList(r)||(r=stringify(r)),void 0!==r?this.onChangeWrapper(r):o&&"object"===o.get("type")&&c&&!s.get("examples")&&this.onChangeWrapper(N.List.isList(c)?c:stringify(c))}};getParamKey(){const{param:e}=this.props;return e?`${e.get("name")}-${e.get("in")}`:null}composeJsonSchema(e){const{fn:t}=this.props,r=e.get("oneOf")?.get(0)?.toJS(),a=e.get("anyOf")?.get(0)?.toJS();return(0,N.fromJS)(t.mergeJsonSchema(e.toJS(),r??a??{}))}render(){let{param:e,rawParam:t,getComponent:r,getConfigs:a,isExecute:n,fn:s,onChangeConsumes:o,specSelectors:l,pathMethod:c,specPath:i,oas3Selectors:p}=this.props,m=l.isOAS3();const{showExtensions:u,showCommonExtensions:d}=a();if(e||(e=t),!t)return null;const h=r("JsonSchemaForm"),g=r("ParamBody");let y=e.get("in"),f="body"!==y?null:x().createElement(g,{getComponent:r,getConfigs:a,fn:s,param:e,consumes:l.consumesOptionsFor(c),consumesValue:l.contentTypeValues(c).get("requestContentType"),onChange:this.onChangeWrapper,onChangeConsumes:o,isExecute:n,specSelectors:l,pathMethod:c});const S=r("modelExample"),E=r("Markdown",!0),_=r("ParameterExt"),v=r("ParameterIncludeEmpty"),w=r("ExamplesSelectValueRetainer"),b=r("Example");let{schema:C}=getParameterSchema(e,{isOAS3:m}),O=l.parameterWithMetaByIdentity(c,t)||(0,N.Map)();m&&(C=this.composeJsonSchema(C));let k,A,I,q,j=C?C.get("format"):null,P=C?C.get("type"):null,M=C?C.getIn(["items","type"]):null,R="formData"===y,T="FormData"in L,J=e.get("required"),$=O?O.get("value"):"",V=d?getCommonExtensions(C):null,D=u?getExtensions(e):null,K=!1;return void 0!==e&&C&&(k=C.get("items")),void 0!==k?(A=k.get("enum"),I=k.get("default")):C&&(A=C.get("enum")),A&&A.size&&A.size>0&&(K=!0),void 0!==e&&(C&&(I=C.get("default")),void 0===I&&(I=e.get("default")),q=e.get("example"),void 0===q&&(q=e.get("x-example"))),x().createElement("tr",{"data-param-name":e.get("name"),"data-param-in":e.get("in")},x().createElement("td",{className:"parameters-col_name"},x().createElement("div",{className:J?"parameter__name required":"parameter__name"},e.get("name"),J?x().createElement("span",null," *"):null),x().createElement("div",{className:"parameter__type"},P,M&&`[${M}]`,j&&x().createElement("span",{className:"prop-format"},"($",j,")")),x().createElement("div",{className:"parameter__deprecated"},m&&e.get("deprecated")?"deprecated":null),x().createElement("div",{className:"parameter__in"},"(",e.get("in"),")")),x().createElement("td",{className:"parameters-col_description"},e.get("description")?x().createElement(E,{source:e.get("description")}):null,!f&&n||!K?null:x().createElement(E,{className:"parameter__enum",source:"Available values : "+A.map((function(e){return e})).toArray().map(String).join(", ")}),!f&&n||void 0===I?null:x().createElement(E,{className:"parameter__default",source:"Default value : "+I}),!f&&n||void 0===q?null:x().createElement(E,{source:"Example : "+q}),R&&!T&&x().createElement("div",null,"Error: your browser does not support FormData"),m&&e.get("examples")?x().createElement("section",{className:"parameter-controls"},x().createElement(w,{examples:e.get("examples"),onSelect:this._onExampleSelect,updateValue:this.onChangeWrapper,getComponent:r,defaultToFirstExample:!0,currentKey:p.activeExamplesMember(...c,"parameters",this.getParamKey()),currentUserInputValue:$})):null,f?null:x().createElement(h,{fn:s,getComponent:r,value:$,required:J,disabled:!n,description:e.get("name"),onChange:this.onChangeWrapper,errors:O.get("errors"),schema:C}),f&&C?x().createElement(S,{getComponent:r,specPath:i.push("schema"),getConfigs:a,isExecute:n,specSelectors:l,schema:C,example:f,includeWriteOnly:!0}):null,!f&&n&&e.get("allowEmptyValue")?x().createElement(v,{onChange:this.onChangeIncludeEmpty,isIncluded:l.parameterInclusionSettingFor(c,e.get("name"),e.get("in")),isDisabled:!isEmptyValue($)}):null,m&&e.get("examples")?x().createElement(b,{example:e.getIn(["examples",p.activeExamplesMember(...c,"parameters",this.getParamKey())]),getComponent:r,getConfigs:a}):null,d&&V.size?V.entrySeq().map((([e,t])=>x().createElement(_,{key:`${e}-${t}`,xKey:e,xVal:t}))):null,u&&D.size?D.entrySeq().map((([e,t])=>x().createElement(_,{key:`${e}-${t}`,xKey:e,xVal:t}))):null))}}class Execute extends C.Component{handleValidateParameters=()=>{let{specSelectors:e,specActions:t,path:r,method:a}=this.props;return t.validateParams([r,a]),e.validateBeforeExecute([r,a])};handleValidateRequestBody=()=>{let{path:e,method:t,specSelectors:r,oas3Selectors:a,oas3Actions:n}=this.props,s={missingBodyValue:!1,missingRequiredKeys:[]};n.clearRequestBodyValidateError({path:e,method:t});let o=r.getOAS3RequiredRequestBodyContentType([e,t]),l=a.requestBodyValue(e,t),c=a.validateBeforeExecute([e,t]),i=a.requestContentType(e,t);if(!c)return s.missingBodyValue=!0,n.setRequestBodyValidateError({path:e,method:t,validationErrors:s}),!1;if(!o)return!0;let p=a.validateShallowRequired({oas3RequiredRequestBodyContentType:o,oas3RequestContentType:i,oas3RequestBodyValue:l});return!p||p.length<1||(p.forEach((e=>{s.missingRequiredKeys.push(e)})),n.setRequestBodyValidateError({path:e,method:t,validationErrors:s}),!1)};handleValidationResultPass=()=>{let{specActions:e,operation:t,path:r,method:a}=this.props;this.props.onExecute&&this.props.onExecute(),e.execute({operation:t,path:r,method:a})};handleValidationResultFail=()=>{let{specActions:e,path:t,method:r}=this.props;e.clearValidateParams([t,r]),setTimeout((()=>{e.validateParams([t,r])}),40)};handleValidationResult=e=>{e?this.handleValidationResultPass():this.handleValidationResultFail()};onClick=()=>{let e=this.handleValidateParameters(),t=this.handleValidateRequestBody(),r=e&&t;this.handleValidationResult(r)};onChangeProducesWrapper=e=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],e);render(){const{disabled:e}=this.props;return x().createElement("button",{className:"btn execute opblock-control__btn",onClick:this.onClick,disabled:e},"Execute")}}class headers_Headers extends x().Component{render(){let{headers:e,getComponent:t}=this.props;const r=t("Property"),a=t("Markdown",!0);return e&&e.size?x().createElement("div",{className:"headers-wrapper"},x().createElement("h4",{className:"headers__title"},"Headers:"),x().createElement("table",{className:"headers"},x().createElement("thead",null,x().createElement("tr",{className:"header-row"},x().createElement("th",{className:"header-col"},"Name"),x().createElement("th",{className:"header-col"},"Description"),x().createElement("th",{className:"header-col"},"Type"))),x().createElement("tbody",null,e.entrySeq().map((([e,t])=>{if(!k().Map.isMap(t))return null;const n=t.get("description"),s=t.getIn(["schema"])?t.getIn(["schema","type"]):t.getIn(["type"]),o=t.getIn(["schema","example"]);return x().createElement("tr",{key:e},x().createElement("td",{className:"header-col"},e),x().createElement("td",{className:"header-col"},n?x().createElement(a,{source:n}):null),x().createElement("td",{className:"header-col"},s," ",o?x().createElement(r,{propKey:"Example",propVal:o,propClass:"header-example"}):null))})).toArray()))):null}}class Errors extends x().Component{render(){let{editorActions:e,errSelectors:t,layoutSelectors:r,layoutActions:a,getComponent:n}=this.props;const s=n("Collapse");if(e&&e.jumpToLine)var o=e.jumpToLine;let l=t.allErrors().filter((e=>"thrown"===e.get("type")||"error"===e.get("level")));if(!l||l.count()<1)return null;let c=r.isShown(["errorPane"],!0),i=l.sortBy((e=>e.get("line")));return x().createElement("pre",{className:"errors-wrapper"},x().createElement("hgroup",{className:"error"},x().createElement("h4",{className:"errors__title"},"Errors"),x().createElement("button",{className:"btn errors__clear-btn",onClick:()=>a.show(["errorPane"],!c)},c?"Hide":"Show")),x().createElement(s,{isOpened:c,animated:!0},x().createElement("div",{className:"errors"},i.map(((e,t)=>{let r=e.get("type");return"thrown"===r||"auth"===r?x().createElement(ThrownErrorItem,{key:t,error:e.get("error")||e,jumpToLine:o}):"spec"===r?x().createElement(SpecErrorItem,{key:t,error:e,jumpToLine:o}):void 0})))))}}const ThrownErrorItem=({error:e,jumpToLine:t})=>{if(!e)return null;let r=e.get("line");return x().createElement("div",{className:"error-wrapper"},e?x().createElement("div",null,x().createElement("h4",null,e.get("source")&&e.get("level")?toTitleCase(e.get("source"))+" "+e.get("level"):"",e.get("path")?x().createElement("small",null," at ",e.get("path")):null),x().createElement("span",{className:"message thrown"},e.get("message")),x().createElement("div",{className:"error-line"},r&&t?x().createElement("a",{onClick:t.bind(null,r)},"Jump to line ",r):null)):null)},SpecErrorItem=({error:e,jumpToLine:t=null})=>{let r=null;return e.get("path")?r=N.List.isList(e.get("path"))?x().createElement("small",null,"at ",e.get("path").join(".")):x().createElement("small",null,"at ",e.get("path")):e.get("line")&&!t&&(r=x().createElement("small",null,"on line ",e.get("line"))),x().createElement("div",{className:"error-wrapper"},e?x().createElement("div",null,x().createElement("h4",null,toTitleCase(e.get("source"))+" "+e.get("level")," ",r),x().createElement("span",{className:"message"},e.get("message")),x().createElement("div",{className:"error-line"},t?x().createElement("a",{onClick:t.bind(null,e.get("line"))},"Jump to line ",e.get("line")):null)):null)};function toTitleCase(e){return(e||"").split(" ").map((e=>e[0].toUpperCase()+e.slice(1))).join(" ")}const content_type_noop=()=>{};class ContentType extends x().Component{static defaultProps={onChange:content_type_noop,value:null,contentTypes:(0,N.fromJS)(["application/json"])};componentDidMount(){this.props.contentTypes&&this.props.onChange(this.props.contentTypes.first())}UNSAFE_componentWillReceiveProps(e){e.contentTypes&&e.contentTypes.size&&(e.contentTypes.includes(e.value)||e.onChange(e.contentTypes.first()))}onChangeWrapper=e=>this.props.onChange(e.target.value);render(){let{ariaControls:e,ariaLabel:t,className:r,contentTypes:a,controlId:n,value:s}=this.props;return a&&a.size?x().createElement("div",{className:"content-type-wrapper "+(r||"")},x().createElement("select",{"aria-controls":e,"aria-label":t,className:"content-type",id:n,onChange:this.onChangeWrapper,value:s||""},a.map((e=>x().createElement("option",{key:e,value:e},e))).toArray())):null}}function xclass(...e){return e.filter((e=>!!e)).join(" ").trim()}class Container extends x().Component{render(){let{fullscreen:e,full:t,...r}=this.props;if(e)return x().createElement("section",r);let a="swagger-container"+(t?"-full":"");return x().createElement("section",et()({},r,{className:xclass(r.className,a)}))}}const nn={mobile:"",tablet:"-tablet",desktop:"-desktop",large:"-hd"};class Col extends x().Component{render(){const{hide:e,keepContents:t,mobile:r,tablet:a,desktop:n,large:s,...o}=this.props;if(e&&!t)return x().createElement("span",null);let l=[];for(let e in nn){if(!Object.prototype.hasOwnProperty.call(nn,e))continue;let t=nn[e];if(e in this.props){let r=this.props[e];if(r<1){l.push("none"+t);continue}l.push("block"+t),l.push("col-"+r+t)}}e&&l.push("hidden");let c=xclass(o.className,...l);return x().createElement("section",et()({},o,{className:c}))}}class Row extends x().Component{render(){return x().createElement("div",et()({},this.props,{className:xclass(this.props.className,"wrapper")}))}}class Button extends x().Component{static defaultProps={className:""};render(){return x().createElement("button",et()({},this.props,{className:xclass(this.props.className,"button")}))}}const TextArea=e=>x().createElement("textarea",e),Input=e=>x().createElement("input",e);class Select extends x().Component{static defaultProps={multiple:!1,allowEmptyValue:!0};constructor(e,t){let r;super(e,t),r=e.value?e.value:e.multiple?[""]:"",this.state={value:r}}onChange=e=>{let t,{onChange:r,multiple:a}=this.props,n=[].slice.call(e.target.options);t=a?n.filter((function(e){return e.selected})).map((function(e){return e.value})):e.target.value,this.setState({value:t}),r&&r(t)};UNSAFE_componentWillReceiveProps(e){e.value!==this.props.value&&this.setState({value:e.value})}render(){let{allowedValues:e,multiple:t,allowEmptyValue:r,disabled:a}=this.props,n=this.state.value?.toJS?.()||this.state.value;return x().createElement("select",{className:this.props.className,multiple:t,value:n,onChange:this.onChange,disabled:a},r?x().createElement("option",{value:""},"--"):null,e.map((function(e,t){return x().createElement("option",{key:t,value:String(e)},String(e))})))}}class Link extends x().Component{render(){return x().createElement("a",et()({},this.props,{rel:"noopener noreferrer",className:xclass(this.props.className,"link")}))}}const NoMargin=({children:e})=>x().createElement("div",{className:"no-margin"}," ",e," ");class Collapse extends x().Component{static defaultProps={isOpened:!1,animated:!1};renderNotAnimated(){return this.props.isOpened?x().createElement(NoMargin,null,this.props.children):x().createElement("noscript",null)}render(){let{animated:e,isOpened:t,children:r}=this.props;return e?(r=t?r:null,x().createElement(NoMargin,null,r)):this.renderNotAnimated()}}class Overview extends x().Component{constructor(...e){super(...e),this.setTagShown=this._setTagShown.bind(this)}_setTagShown(e,t){this.props.layoutActions.show(e,t)}showOp(e,t){let{layoutActions:r}=this.props;r.show(e,t)}render(){let{specSelectors:e,layoutSelectors:t,layoutActions:r,getComponent:a}=this.props,n=e.taggedOperations();const s=a("Collapse");return x().createElement("div",null,x().createElement("h4",{className:"overview-title"},"Overview"),n.map(((e,a)=>{let n=e.get("operations"),o=["overview-tags",a],l=t.isShown(o,!0);return x().createElement("div",{key:"overview-"+a},x().createElement("h4",{onClick:()=>r.show(o,!l),className:"link overview-tag"}," ",l?"-":"+",a),x().createElement(s,{isOpened:l,animated:!0},n.map((e=>{let{path:a,method:n,id:s}=e.toObject(),o="operations",l=s,c=t.isShown([o,l]);return x().createElement(OperationLink,{key:s,path:a,method:n,id:a+"-"+n,shown:c,showOpId:l,showOpIdPrefix:o,href:`#operation-${l}`,onClick:r.show})})).toArray()))})).toArray(),n.size<1&&x().createElement("h3",null," No operations defined in spec! "))}}class OperationLink extends x().Component{constructor(e){super(e),this.onClick=this._onClick.bind(this)}_onClick(){let{showOpId:e,showOpIdPrefix:t,onClick:r,shown:a}=this.props;r([t,e],!a)}render(){let{id:e,method:t,shown:r,href:a}=this.props;return x().createElement(Link,{href:a,onClick:this.onClick,className:"block opblock-link "+(r?"shown":"")},x().createElement("div",null,x().createElement("small",{className:`bold-label-${t}`},t.toUpperCase()),x().createElement("span",{className:"bold-label"},e)))}}class InitializedInput extends x().Component{componentDidMount(){this.props.initialValue&&(this.inputRef.value=this.props.initialValue)}render(){const{value:e,defaultValue:t,initialValue:r,...a}=this.props;return x().createElement("input",et()({},a,{ref:e=>this.inputRef=e}))}}class InfoBasePath extends x().Component{render(){const{host:e,basePath:t}=this.props;return x().createElement("pre",{className:"base-url"},"[ Base URL: ",e,t," ]")}}class InfoUrl extends x().PureComponent{render(){const{url:e,getComponent:t}=this.props,r=t("Link");return x().createElement(r,{target:"_blank",href:sanitizeUrl(e)},x().createElement("span",{className:"url"}," ",e))}}class Info extends x().Component{render(){const{info:e,url:t,host:r,basePath:a,getComponent:n,externalDocs:s,selectedServer:o,url:l}=this.props,c=e.get("version"),i=e.get("description"),p=e.get("title"),m=safeBuildUrl(e.get("termsOfService"),l,{selectedServer:o}),u=e.get("contact"),d=e.get("license"),h=safeBuildUrl(s&&s.get("url"),l,{selectedServer:o}),g=s&&s.get("description"),y=n("Markdown",!0),f=n("Link"),S=n("VersionStamp"),E=n("OpenAPIVersion"),_=n("InfoUrl"),v=n("InfoBasePath"),w=n("License"),b=n("Contact");return x().createElement("div",{className:"info"},x().createElement("hgroup",{className:"main"},x().createElement("h2",{className:"title"},p,x().createElement("span",null,c&&x().createElement(S,{version:c}),x().createElement(E,{oasVersion:"2.0"}))),r||a?x().createElement(v,{host:r,basePath:a}):null,t&&x().createElement(_,{getComponent:n,url:t})),x().createElement("div",{className:"description"},x().createElement(y,{source:i})),m&&x().createElement("div",{className:"info__tos"},x().createElement(f,{target:"_blank",href:sanitizeUrl(m)},"Terms of service")),u?.size>0&&x().createElement(b,{getComponent:n,data:u,selectedServer:o,url:t}),d?.size>0&&x().createElement(w,{getComponent:n,license:d,selectedServer:o,url:t}),h?x().createElement(f,{className:"info__extdocs",target:"_blank",href:sanitizeUrl(h)},g||h):null)}}const sn=Info;class InfoContainer extends x().Component{render(){const{specSelectors:e,getComponent:t,oas3Selectors:r}=this.props,a=e.info(),n=e.url(),s=e.basePath(),o=e.host(),l=e.externalDocs(),c=r.selectedServer(),i=t("info");return x().createElement("div",null,a&&a.count()?x().createElement(i,{info:a,url:n,host:o,basePath:s,externalDocs:l,getComponent:t,selectedServer:c}):null)}}class Contact extends x().Component{render(){const{data:e,getComponent:t,selectedServer:r,url:a}=this.props,n=e.get("name","the developer"),s=safeBuildUrl(e.get("url"),a,{selectedServer:r}),o=e.get("email"),l=t("Link");return x().createElement("div",{className:"info__contact"},s&&x().createElement("div",null,x().createElement(l,{href:sanitizeUrl(s),target:"_blank"},n," - Website")),o&&x().createElement(l,{href:sanitizeUrl(`mailto:${o}`)},s?`Send email to ${n}`:`Contact ${n}`))}}const on=Contact;class License extends x().Component{render(){const{license:e,getComponent:t,selectedServer:r,url:a}=this.props,n=e.get("name","License"),s=safeBuildUrl(e.get("url"),a,{selectedServer:r}),o=t("Link");return x().createElement("div",{className:"info__license"},s?x().createElement("div",{className:"info__license__url"},x().createElement(o,{target:"_blank",href:sanitizeUrl(s)},n)):x().createElement("span",null,n))}}const ln=License;class JumpToPath extends x().Component{render(){return null}}class CopyToClipboardBtn extends x().Component{render(){let{getComponent:e}=this.props;const t=e("CopyIcon");return x().createElement("div",{className:"view-line-link copy-to-clipboard",title:"Copy to clipboard"},x().createElement(dt.CopyToClipboard,{text:this.props.textToCopy},x().createElement(t,null)))}}class Footer extends x().Component{render(){return x().createElement("div",{className:"footer"})}}class FilterContainer extends x().Component{onFilterChange=e=>{const{target:{value:t}}=e;this.props.layoutActions.updateFilter(t)};render(){const{specSelectors:e,layoutSelectors:t,getComponent:r}=this.props,a=r("Col"),n="loading"===e.loadingStatus(),s="failed"===e.loadingStatus(),o=t.currentFilter(),l=["operation-filter-input"];return s&&l.push("failed"),n&&l.push("loading"),x().createElement("div",null,!1===o?null:x().createElement("div",{className:"filter-container"},x().createElement(a,{className:"filter wrapper",mobile:12},x().createElement("input",{className:l.join(" "),placeholder:"Filter by tag",type:"text",onChange:this.onFilterChange,value:"string"==typeof o?o:"",disabled:n}))))}}const cn=Function.prototype;class ParamBody extends C.PureComponent{static defaultProp={consumes:(0,N.fromJS)(["application/json"]),param:(0,N.fromJS)({}),onChange:cn,onChangeConsumes:cn};constructor(e,t){super(e,t),this.state={isEditBox:!1,value:""}}componentDidMount(){this.updateValues.call(this,this.props)}UNSAFE_componentWillReceiveProps(e){this.updateValues.call(this,e)}updateValues=e=>{let{param:t,isExecute:r,consumesValue:a=""}=e,n=/xml/i.test(a),s=/json/i.test(a),o=n?t.get("value_xml"):t.get("value");if(void 0!==o){let e=!o&&s?"{}":o;this.setState({value:e}),this.onChange(e,{isXml:n,isEditBox:r})}else n?this.onChange(this.sample("xml"),{isXml:n,isEditBox:r}):this.onChange(this.sample(),{isEditBox:r})};sample=e=>{let{param:t,fn:r}=this.props,a=r.inferSchema(t.toJS());return r.getSampleSchema(a,e,{includeWriteOnly:!0})};onChange=(e,{isEditBox:t,isXml:r})=>{this.setState({value:e,isEditBox:t}),this._onChange(e,r)};_onChange=(e,t)=>{(this.props.onChange||cn)(e,t)};handleOnChange=e=>{const{consumesValue:t}=this.props,r=/xml/i.test(t),a=e.target.value;this.onChange(a,{isXml:r,isEditBox:this.state.isEditBox})};toggleIsEditBox=()=>this.setState((e=>({isEditBox:!e.isEditBox})));render(){let{onChangeConsumes:e,param:t,isExecute:r,specSelectors:a,pathMethod:n,getComponent:s}=this.props;const o=s("Button"),l=s("TextArea"),c=s("HighlightCode",!0),i=s("contentType");let p=(a?a.parameterWithMetaByIdentity(n,t):t).get("errors",(0,N.List)()),m=a.contentTypeValues(n).get("requestContentType"),u=this.props.consumes&&this.props.consumes.size?this.props.consumes:ParamBody.defaultProp.consumes,{value:d,isEditBox:h}=this.state,g=null;getKnownSyntaxHighlighterLanguage(d)&&(g="json");const y=`${createHtmlReadyId(`${n[1]}${n[0]}_parameters`)}_select`;return x().createElement("div",{className:"body-param","data-param-name":t.get("name"),"data-param-in":t.get("in")},h&&r?x().createElement(l,{className:"body-param__text"+(p.count()?" invalid":""),value:d,onChange:this.handleOnChange}):d&&x().createElement(c,{className:"body-param__example",language:g},d),x().createElement("div",{className:"body-param-options"},r?x().createElement("div",{className:"body-param-edit"},x().createElement(o,{className:h?"btn cancel body-param__example-edit":"btn edit body-param__example-edit",onClick:this.toggleIsEditBox},h?"Cancel":"Edit")):null,x().createElement("label",{htmlFor:y},x().createElement("span",null,"Parameter content type"),x().createElement(i,{value:m,contentTypes:u,onChange:e,className:"body-param-content-type",ariaLabel:"Parameter content type",controlId:y}))))}}class Curl extends x().Component{render(){const{request:e,getComponent:t}=this.props,r=requestSnippetGenerator_curl_bash(e),a=t("SyntaxHighlighter",!0);return x().createElement("div",{className:"curl-command"},x().createElement("h4",null,"Curl"),x().createElement("div",{className:"copy-to-clipboard"},x().createElement(dt.CopyToClipboard,{text:r},x().createElement("button",null))),x().createElement("div",null,x().createElement(a,{language:"bash",className:"curl microlight",renderPlainText:({children:e,PlainTextViewer:t})=>x().createElement(t,{className:"curl"},e)},r)))}}const property=({propKey:e,propVal:t,propClass:r})=>x().createElement("span",{className:r},x().createElement("br",null),e,": ",String(t));class TryItOutButton extends x().Component{static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,onResetClick:Function.prototype,enabled:!1,hasUserEditedBody:!1,isOAS3:!1};render(){const{onTryoutClick:e,onCancelClick:t,onResetClick:r,enabled:a,hasUserEditedBody:n,isOAS3:s}=this.props,o=s&&n;return x().createElement("div",{className:o?"try-out btn-group":"try-out"},a?x().createElement("button",{className:"btn try-out__btn cancel",onClick:t},"Cancel"):x().createElement("button",{className:"btn try-out__btn",onClick:e},"Try it out "),o&&x().createElement("button",{className:"btn try-out__btn reset",onClick:r},"Reset"))}}class VersionPragmaFilter extends x().PureComponent{static defaultProps={alsoShow:null,children:null,bypass:!1};render(){const{bypass:e,isSwagger2:t,isOAS3:r,alsoShow:a}=this.props;return e?x().createElement("div",null,this.props.children):t&&r?x().createElement("div",{className:"version-pragma"},a,x().createElement("div",{className:"version-pragma__message version-pragma__message--ambiguous"},x().createElement("div",null,x().createElement("h3",null,"Unable to render this definition"),x().createElement("p",null,x().createElement("code",null,"swagger")," and ",x().createElement("code",null,"openapi")," fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields."),x().createElement("p",null,"Supported version fields are ",x().createElement("code",null,"swagger: ",'"2.0"')," and those that match ",x().createElement("code",null,"openapi: 3.0.n")," (for example, ",x().createElement("code",null,"openapi: 3.0.0"),").")))):t||r?x().createElement("div",null,this.props.children):x().createElement("div",{className:"version-pragma"},a,x().createElement("div",{className:"version-pragma__message version-pragma__message--missing"},x().createElement("div",null,x().createElement("h3",null,"Unable to render this definition"),x().createElement("p",null,"The provided definition does not specify a valid version field."),x().createElement("p",null,"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are ",x().createElement("code",null,"swagger: ",'"2.0"')," and those that match ",x().createElement("code",null,"openapi: 3.0.n")," (for example, ",x().createElement("code",null,"openapi: 3.0.0"),")."))))}}const version_stamp=({version:e})=>x().createElement("small",null,x().createElement("pre",{className:"version"}," ",e," ")),openapi_version=({oasVersion:e})=>x().createElement("small",{className:"version-stamp"},x().createElement("pre",{className:"version"},"OAS ",e)),deep_link=({enabled:e,path:t,text:r})=>x().createElement("a",{className:"nostyle",onClick:e?e=>e.preventDefault():null,href:e?`#/${t}`:null},x().createElement("span",null,r)),svg_assets=()=>x().createElement("div",null,x().createElement("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",className:"svg-assets"},x().createElement("defs",null,x().createElement("symbol",{viewBox:"0 0 20 20",id:"unlocked"},x().createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"})),x().createElement("symbol",{viewBox:"0 0 20 20",id:"locked"},x().createElement("path",{d:"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"})),x().createElement("symbol",{viewBox:"0 0 20 20",id:"close"},x().createElement("path",{d:"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"})),x().createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow"},x().createElement("path",{d:"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"})),x().createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow-down"},x().createElement("path",{d:"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"})),x().createElement("symbol",{viewBox:"0 0 20 20",id:"large-arrow-up"},x().createElement("path",{d:"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z"})),x().createElement("symbol",{viewBox:"0 0 24 24",id:"jump-to"},x().createElement("path",{d:"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"})),x().createElement("symbol",{viewBox:"0 0 24 24",id:"expand"},x().createElement("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"})),x().createElement("symbol",{viewBox:"0 0 15 16",id:"copy"},x().createElement("g",{transform:"translate(2, -1)"},x().createElement("path",{fill:"#ffffff",fillRule:"evenodd",d:"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z"})))))),pn=require("remarkable"),mn=require("remarkable/linkify"),un=require("dompurify");var dn=__webpack_require__.n(un);dn().addHook&&dn().addHook("beforeSanitizeElements",(function(e){return e.href&&e.setAttribute("rel","noopener noreferrer"),e}));const hn=function Markdown({source:e,className:t="",getConfigs:r=(()=>({useUnsafeMarkdown:!1}))}){if("string"!=typeof e)return null;const a=new pn.Remarkable({html:!0,typographer:!0,breaks:!0,linkTarget:"_blank"}).use(mn.linkify);a.core.ruler.disable(["replacements","smartquotes"]);const{useUnsafeMarkdown:n}=r(),s=a.render(e),o=sanitizer(s,{useUnsafeMarkdown:n});return e&&s&&o?x().createElement("div",{className:ut()(t,"markdown"),dangerouslySetInnerHTML:{__html:o}}):null};function sanitizer(e,{useUnsafeMarkdown:t=!1}={}){const r=t,a=t?[]:["style","class"];return t&&!sanitizer.hasWarnedAboutDeprecation&&(console.warn("useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0."),sanitizer.hasWarnedAboutDeprecation=!0),dn().sanitize(e,{ADD_ATTR:["target"],FORBID_TAGS:["style","form"],ALLOW_DATA_ATTR:r,FORBID_ATTR:a})}sanitizer.hasWarnedAboutDeprecation=!1;class BaseLayout extends x().Component{render(){const{errSelectors:e,specSelectors:t,getComponent:r}=this.props,a=r("SvgAssets"),n=r("InfoContainer",!0),s=r("VersionPragmaFilter"),o=r("operations",!0),l=r("Models",!0),c=r("Webhooks",!0),i=r("Row"),p=r("Col"),m=r("errors",!0),u=r("ServersContainer",!0),d=r("SchemesContainer",!0),h=r("AuthorizeBtnContainer",!0),g=r("FilterContainer",!0),y=t.isSwagger2(),f=t.isOAS3(),S=t.isOAS31(),E=!t.specStr(),_=t.loadingStatus();let v=null;if("loading"===_&&(v=x().createElement("div",{className:"info"},x().createElement("div",{className:"loading-container"},x().createElement("div",{className:"loading"})))),"failed"===_&&(v=x().createElement("div",{className:"info"},x().createElement("div",{className:"loading-container"},x().createElement("h4",{className:"title"},"Failed to load API definition."),x().createElement(m,null)))),"failedConfig"===_){const t=e.lastError(),r=t?t.get("message"):"";v=x().createElement("div",{className:"info failed-config"},x().createElement("div",{className:"loading-container"},x().createElement("h4",{className:"title"},"Failed to load remote configuration."),x().createElement("p",null,r)))}if(!v&&E&&(v=x().createElement("h4",null,"No API definition provided.")),v)return x().createElement("div",{className:"swagger-ui"},x().createElement("div",{className:"loading-container"},v));const w=t.servers(),b=t.schemes(),C=w&&w.size,O=b&&b.size,N=!!t.securityDefinitions();return x().createElement("div",{className:"swagger-ui"},x().createElement(a,null),x().createElement(s,{isSwagger2:y,isOAS3:f,alsoShow:x().createElement(m,null)},x().createElement(m,null),x().createElement(i,{className:"information-container"},x().createElement(p,{mobile:12},x().createElement(n,null))),C||O||N?x().createElement("div",{className:"scheme-container"},x().createElement(p,{className:"schemes wrapper",mobile:12},C||O?x().createElement("div",{className:"schemes-server-container"},C?x().createElement(u,null):null,O?x().createElement(d,null):null):null,N?x().createElement(h,null):null)):null,x().createElement(g,null),x().createElement(i,null,x().createElement(p,{mobile:12,desktop:12},x().createElement(o,null))),S&&x().createElement(i,{className:"webhooks-container"},x().createElement(p,{mobile:12,desktop:12},x().createElement(c,null))),x().createElement(i,null,x().createElement(p,{mobile:12,desktop:12},x().createElement(l,null)))))}}const core_components=()=>({components:{App:Ga,authorizationPopup:AuthorizationPopup,authorizeBtn:AuthorizeBtn,AuthorizeBtnContainer,authorizeOperationBtn:AuthorizeOperationBtn,auths:Auths,AuthItem:auth_item_Auths,authError:AuthError,oauth2:Oauth2,apiKeyAuth:ApiKeyAuth,basicAuth:BasicAuth,clear:Clear,liveResponse:LiveResponse,InitializedInput,info:sn,InfoContainer,InfoUrl,InfoBasePath,Contact:on,License:ln,JumpToPath,CopyToClipboardBtn,onlineValidatorBadge:OnlineValidatorBadge,operations:Operations,operation:Operation,OperationSummary,OperationSummaryMethod,OperationSummaryPath,responses:Responses,response:Response,ResponseExtension:response_extension,responseBody:ResponseBody,parameters:Parameters,parameterRow:ParameterRow,execute:Execute,headers:headers_Headers,errors:Errors,contentType:ContentType,overview:Overview,footer:Footer,FilterContainer,ParamBody,curl:Curl,Property:property,TryItOutButton,Markdown:hn,BaseLayout,VersionPragmaFilter,VersionStamp:version_stamp,OperationExt:operation_extensions,OperationExtRow:operation_extension_row,ParameterExt:parameter_extension,ParameterIncludeEmpty,OperationTag,OperationContainer,OpenAPIVersion:openapi_version,DeepLink:deep_link,SvgAssets:svg_assets,Example,ExamplesSelect,ExamplesSelectValueRetainer}}),form_components=()=>({components:{...S}}),base=()=>[configsPlugin,util,logs,view,view_legacy,plugins_spec,err,icons,plugins_layout,json_schema_5,json_schema_5_samples,core_components,form_components,swagger_client,auth,downloadUrlPlugin,deep_linking,filter,on_complete,plugins_request_snippets,syntax_highlighting,versions,safe_render()],gn=(0,N.Map)();function onlyOAS3(e){return(t,r)=>(...a)=>{if(r.getSystem().specSelectors.isOAS3()){const t=e(...a);return"function"==typeof t?t(r):t}return t(...a)}}const yn=onlyOAS3(Vt()(null)),fn=onlyOAS3(((e,t)=>e=>e.getSystem().specSelectors.findSchema(t))),Sn=onlyOAS3((()=>e=>{const t=e.getSystem().specSelectors.specJson().getIn(["components","schemas"]);return N.Map.isMap(t)?t:gn})),En=onlyOAS3((()=>e=>e.getSystem().specSelectors.specJson().hasIn(["servers",0]))),_n=onlyOAS3((0,we.createSelector)(Ht,(e=>e.getIn(["components","securitySchemes"])||null))),wrap_selectors_validOperationMethods=(e,t)=>(r,...a)=>t.specSelectors.isOAS3()?t.oas3Selectors.validOperationMethods():e(...a),vn=yn,wn=yn,bn=yn,Cn=yn,xn=yn;const On=function wrap_selectors_onlyOAS3(e){return(t,r)=>(...a)=>{if(r.getSystem().specSelectors.isOAS3()){let t=r.getState().getIn(["spec","resolvedSubtrees","components","securitySchemes"]);return e(r,t,...a)}return t(...a)}}((0,we.createSelector)((e=>e),(({specSelectors:e})=>e.securityDefinitions()),((e,t)=>{let r=(0,N.List)();return t?(t.entrySeq().forEach((([e,t])=>{const a=t.get("type");if("oauth2"===a&&t.get("flows").entrySeq().forEach((([a,n])=>{let s=(0,N.fromJS)({flow:a,authorizationUrl:n.get("authorizationUrl"),tokenUrl:n.get("tokenUrl"),scopes:n.get("scopes"),type:t.get("type"),description:t.get("description")});r=r.push(new N.Map({[e]:s.filter((e=>void 0!==e))}))})),"http"!==a&&"apiKey"!==a||(r=r.push(new N.Map({[e]:t}))),"openIdConnect"===a&&t.get("openIdConnectData")){let a=t.get("openIdConnectData");(a.get("grant_types_supported")||["authorization_code","implicit"]).forEach((n=>{let s=a.get("scopes_supported")&&a.get("scopes_supported").reduce(((e,t)=>e.set(t,"")),new N.Map),o=(0,N.fromJS)({flow:n,authorizationUrl:a.get("authorization_endpoint"),tokenUrl:a.get("token_endpoint"),scopes:s,type:"oauth2",openIdConnectUrl:t.get("openIdConnectUrl")});r=r.push(new N.Map({[e]:o.filter((e=>void 0!==e))}))}))}})),r):r})));function OAS3ComponentWrapFactory(e){return(t,r)=>a=>"function"==typeof r.specSelectors?.isOAS3?r.specSelectors.isOAS3()?x().createElement(e,et()({},a,r,{Ori:t})):x().createElement(t,a):(console.warn("OAS3 wrapper: couldn't get spec"),null)}const Nn=(0,N.Map)(),selectors_isSwagger2=()=>e=>function isSwagger2(e){const t=e.get("swagger");return"string"==typeof t&&"2.0"===t}(e.getSystem().specSelectors.specJson()),selectors_isOAS30=()=>e=>function isOAS30(e){const t=e.get("openapi");return"string"==typeof t&&/^3\.0\.([0123])(?:-rc[012])?$/.test(t)}(e.getSystem().specSelectors.specJson()),selectors_isOAS3=()=>e=>e.getSystem().specSelectors.isOAS30();function selectors_onlyOAS3(e){return(t,...r)=>a=>{if(a.specSelectors.isOAS3()){const n=e(t,...r);return"function"==typeof n?n(a):n}return null}}const kn=selectors_onlyOAS3((()=>e=>e.specSelectors.specJson().get("servers",Nn))),findSchema=(e,t)=>{const r=e.getIn(["resolvedSubtrees","components","schemas",t],null),a=e.getIn(["json","components","schemas",t],null);return r||a||null},An=selectors_onlyOAS3(((e,{callbacks:t,specPath:r})=>e=>{const a=e.specSelectors.validOperationMethods();return N.Map.isMap(t)?t.reduce(((e,t,n)=>{if(!N.Map.isMap(t))return e;const s=t.reduce(((e,t,s)=>{if(!N.Map.isMap(t))return e;const o=t.entrySeq().filter((([e])=>a.includes(e))).map((([e,t])=>({operation:(0,N.Map)({operation:t}),method:e,path:s,callbackName:n,specPath:r.concat([n,s,e])})));return e.concat(o)}),(0,N.List)());return e.concat(s)}),(0,N.List)()).groupBy((e=>e.callbackName)).map((e=>e.toArray())).toObject():{}})),callbacks=({callbacks:e,specPath:t,specSelectors:r,getComponent:a})=>{const n=r.callbacksOperations({callbacks:e,specPath:t}),s=Object.keys(n),o=a("OperationContainer",!0);return 0===s.length?x().createElement("span",null,"No callbacks"):x().createElement("div",null,s.map((e=>x().createElement("div",{key:`${e}`},x().createElement("h2",null,e),n[e].map((t=>x().createElement(o,{key:`${e}-${t.path}-${t.method}`,op:t.operation,tag:"callbacks",method:t.method,path:t.path,specPath:t.specPath,allowTryItOut:!1})))))))},getDefaultRequestBodyValue=(e,t,r,a)=>{const n=e.getIn(["content",t])??(0,N.OrderedMap)(),s=n.get("schema",(0,N.OrderedMap)()).toJS(),o=void 0!==n.get("examples"),l=n.get("example"),c=o?n.getIn(["examples",r,"value"]):l;return stringify(a.getSampleSchema(s,t,{includeWriteOnly:!0},c))},request_body=({userHasEditedBody:e,requestBody:t,requestBodyValue:r,requestBodyInclusionSetting:a,requestBodyErrors:n,getComponent:s,getConfigs:o,specSelectors:l,fn:c,contentType:i,isExecute:p,specPath:m,onChange:u,onChangeIncludeEmpty:d,activeExamplesKey:h,updateActiveExamplesKey:g,setRetainRequestBodyValueFlag:y})=>{const handleFile=e=>{u(e.target.files[0])},setIsIncludedOptions=e=>{let t={key:e,shouldDispatchInit:!1,defaultValue:!0};return"no value"===a.get(e,"no value")&&(t.shouldDispatchInit=!0),t},f=s("Markdown",!0),S=s("modelExample"),E=s("RequestBodyEditor"),_=s("HighlightCode",!0),v=s("ExamplesSelectValueRetainer"),w=s("Example"),b=s("ParameterIncludeEmpty"),{showCommonExtensions:C}=o(),O=t?.get("description")??null,k=t?.get("content")??new N.OrderedMap;i=i||k.keySeq().first()||"";const A=k.get(i)??(0,N.OrderedMap)(),I=A.get("schema",(0,N.OrderedMap)()),q=A.get("examples",null),j=q?.map(((e,r)=>{const a=e?.get("value",null);return a&&(e=e.set("value",getDefaultRequestBodyValue(t,i,r,c),a)),e}));if(n=N.List.isList(n)?n:(0,N.List)(),!A.size)return null;const P="object"===A.getIn(["schema","type"]),M="binary"===A.getIn(["schema","format"]),R="base64"===A.getIn(["schema","format"]);if("application/octet-stream"===i||0===i.indexOf("image/")||0===i.indexOf("audio/")||0===i.indexOf("video/")||M||R){const e=s("Input");return p?x().createElement(e,{type:"file",onChange:handleFile}):x().createElement("i",null,"Example values are not available for ",x().createElement("code",null,i)," media types.")}if(P&&("application/x-www-form-urlencoded"===i||0===i.indexOf("multipart/"))&&I.get("properties",(0,N.OrderedMap)()).size>0){const e=s("JsonSchemaForm"),t=s("ParameterExt"),o=I.get("properties",(0,N.OrderedMap)());return r=N.Map.isMap(r)?r:(0,N.OrderedMap)(),x().createElement("div",{className:"table-container"},O&&x().createElement(f,{source:O}),x().createElement("table",null,x().createElement("tbody",null,N.Map.isMap(o)&&o.entrySeq().map((([o,l])=>{if(l.get("readOnly"))return;const i=l.get("oneOf")?.get(0)?.toJS(),m=l.get("anyOf")?.get(0)?.toJS();l=(0,N.fromJS)(c.mergeJsonSchema(l.toJS(),i??m??{}));let h=C?getCommonExtensions(l):null;const g=I.get("required",(0,N.List)()).includes(o),y=l.get("type"),S=l.get("format"),E=l.get("description"),_=r.getIn([o,"value"]),v=r.getIn([o,"errors"])||n,w=a.get(o)||!1;let O=c.getSampleSchema(l,!1,{includeWriteOnly:!0});!1===O&&(O="false"),0===O&&(O="0"),"string"!=typeof O&&"object"===y&&(O=stringify(O)),"string"==typeof O&&"array"===y&&(O=JSON.parse(O));const k="string"===y&&("binary"===S||"base64"===S);return x().createElement("tr",{key:o,className:"parameters","data-property-name":o},x().createElement("td",{className:"parameters-col_name"},x().createElement("div",{className:g?"parameter__name required":"parameter__name"},o,g?x().createElement("span",null," *"):null),x().createElement("div",{className:"parameter__type"},y,S&&x().createElement("span",{className:"prop-format"},"($",S,")"),C&&h.size?h.entrySeq().map((([e,r])=>x().createElement(t,{key:`${e}-${r}`,xKey:e,xVal:r}))):null),x().createElement("div",{className:"parameter__deprecated"},l.get("deprecated")?"deprecated":null)),x().createElement("td",{className:"parameters-col_description"},x().createElement(f,{source:E}),p?x().createElement("div",null,x().createElement(e,{fn:c,dispatchInitialValue:!k,schema:l,description:o,getComponent:s,value:void 0===_?O:_,required:g,errors:v,onChange:e=>{u(e,[o])}}),g?null:x().createElement(b,{onChange:e=>d(o,e),isIncluded:w,isIncludedOptions:setIsIncludedOptions(o),isDisabled:Array.isArray(_)?0!==_.length:!isEmptyValue(_)})):null))})))))}const T=getDefaultRequestBodyValue(t,i,h,c);let J=null;return getKnownSyntaxHighlighterLanguage(T)&&(J="json"),x().createElement("div",null,O&&x().createElement(f,{source:O}),j?x().createElement(v,{userHasEditedBody:e,examples:j,currentKey:h,currentUserInputValue:r,onSelect:e=>{g(e)},updateValue:u,defaultToFirstExample:!0,getComponent:s,setRetainRequestBodyValueFlag:y}):null,p?x().createElement("div",null,x().createElement(E,{value:r,errors:n,defaultValue:T,onChange:u,getComponent:s})):x().createElement(S,{getComponent:s,getConfigs:o,specSelectors:l,expandDepth:1,isExecute:p,schema:A.get("schema"),specPath:m.push("content",i),example:x().createElement(_,{className:"body-param__example",language:J},stringify(r)||T),includeWriteOnly:!0}),j?x().createElement(w,{example:j.get(h),getComponent:s,getConfigs:o}):null)};class operation_link_OperationLink extends C.Component{render(){const{link:e,name:t,getComponent:r}=this.props,a=r("Markdown",!0);let n=e.get("operationId")||e.get("operationRef"),s=e.get("parameters")&&e.get("parameters").toJS(),o=e.get("description");return x().createElement("div",{className:"operation-link"},x().createElement("div",{className:"description"},x().createElement("b",null,x().createElement("code",null,t)),o?x().createElement(a,{source:o}):null),x().createElement("pre",null,"Operation `",n,"`",x().createElement("br",null),x().createElement("br",null),"Parameters ",function padString(e,t){if("string"!=typeof t)return"";return t.split("\n").map(((t,r)=>r>0?Array(e+1).join(" ")+t:t)).join("\n")}(0,JSON.stringify(s,null,2))||"{}",x().createElement("br",null)))}}const In=operation_link_OperationLink,components_servers=({servers:e,currentServer:t,setSelectedServer:r,setServerVariableValue:a,getServerVariable:n,getEffectiveServerValue:s})=>{const o=(e.find((e=>e.get("url")===t))||(0,N.OrderedMap)()).get("variables")||(0,N.OrderedMap)(),l=0!==o.size;(0,C.useEffect)((()=>{t||r(e.first()?.get("url"))}),[]),(0,C.useEffect)((()=>{const n=e.find((e=>e.get("url")===t));if(!n)return void r(e.first().get("url"));(n.get("variables")||(0,N.OrderedMap)()).map(((e,r)=>{a({server:t,key:r,val:e.get("default")||""})}))}),[t,e]);const c=(0,C.useCallback)((e=>{r(e.target.value)}),[r]),i=(0,C.useCallback)((e=>{const r=e.target.getAttribute("data-variable"),n=e.target.value;a({server:t,key:r,val:n})}),[a,t]);return x().createElement("div",{className:"servers"},x().createElement("label",{htmlFor:"servers"},x().createElement("select",{onChange:c,value:t,id:"servers"},e.valueSeq().map((e=>x().createElement("option",{value:e.get("url"),key:e.get("url")},e.get("url"),e.get("description")&&` - ${e.get("description")}`))).toArray())),l&&x().createElement("div",null,x().createElement("div",{className:"computed-url"},"Computed URL:",x().createElement("code",null,s(t))),x().createElement("h4",null,"Server variables"),x().createElement("table",null,x().createElement("tbody",null,o.entrySeq().map((([e,r])=>x().createElement("tr",{key:e},x().createElement("td",null,e),x().createElement("td",null,r.get("enum")?x().createElement("select",{"data-variable":e,onChange:i},r.get("enum").map((r=>x().createElement("option",{selected:r===n(t,e),key:r,value:r},r)))):x().createElement("input",{type:"text",value:n(t,e)||"",onChange:i,"data-variable":e})))))))))};class ServersContainer extends x().Component{render(){const{specSelectors:e,oas3Selectors:t,oas3Actions:r,getComponent:a}=this.props,n=e.servers(),s=a("Servers");return n&&n.size?x().createElement("div",null,x().createElement("span",{className:"servers-title"},"Servers"),x().createElement(s,{servers:n,currentServer:t.selectedServer(),setSelectedServer:r.setSelectedServer,setServerVariableValue:r.setServerVariableValue,getServerVariable:t.serverVariableValue,getEffectiveServerValue:t.serverEffectiveValue})):null}}const qn=Function.prototype;class RequestBodyEditor extends C.PureComponent{static defaultProps={onChange:qn,userHasEditedBody:!1};constructor(e,t){super(e,t),this.state={value:stringify(e.value)||e.defaultValue},e.onChange(e.value)}applyDefaultValue=e=>{const{onChange:t,defaultValue:r}=e||this.props;return this.setState({value:r}),t(r)};onChange=e=>{this.props.onChange(stringify(e))};onDomChange=e=>{const t=e.target.value;this.setState({value:t},(()=>this.onChange(t)))};UNSAFE_componentWillReceiveProps(e){this.props.value!==e.value&&e.value!==this.state.value&&this.setState({value:stringify(e.value)}),!e.value&&e.defaultValue&&this.state.value&&this.applyDefaultValue(e)}render(){let{getComponent:e,errors:t}=this.props,{value:r}=this.state,a=t.size>0;const n=e("TextArea");return x().createElement("div",{className:"body-param"},x().createElement(n,{className:ut()("body-param__text",{invalid:a}),title:t.size?t.join(", "):"",value:r,onChange:this.onDomChange}))}}class HttpAuth extends x().Component{constructor(e,t){super(e,t);let{name:r,schema:a}=this.props,n=this.getValue();this.state={name:r,schema:a,value:n}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,"value"])}onChange=e=>{let{onChange:t}=this.props,{value:r,name:a}=e.target,n=Object.assign({},this.state.value);a?n[a]=r:n=r,this.setState({value:n},(()=>t(this.state)))};render(){let{schema:e,getComponent:t,errSelectors:r,name:a}=this.props;const n=t("Input"),s=t("Row"),o=t("Col"),l=t("authError"),c=t("Markdown",!0),i=t("JumpToPath",!0),p=(e.get("scheme")||"").toLowerCase();let m=this.getValue(),u=r.allErrors().filter((e=>e.get("authId")===a));if("basic"===p){let t=m?m.get("username"):null;return x().createElement("div",null,x().createElement("h4",null,x().createElement("code",null,a||e.get("name")),"  (http, Basic)",x().createElement(i,{path:["securityDefinitions",a]})),t&&x().createElement("h6",null,"Authorized"),x().createElement(s,null,x().createElement(c,{source:e.get("description")})),x().createElement(s,null,x().createElement("label",{htmlFor:"auth-basic-username"},"Username:"),t?x().createElement("code",null," ",t," "):x().createElement(o,null,x().createElement(n,{id:"auth-basic-username",type:"text",required:"required",name:"username","aria-label":"auth-basic-username",onChange:this.onChange,autoFocus:!0}))),x().createElement(s,null,x().createElement("label",{htmlFor:"auth-basic-password"},"Password:"),t?x().createElement("code",null," ****** "):x().createElement(o,null,x().createElement(n,{id:"auth-basic-password",autoComplete:"new-password",name:"password",type:"password","aria-label":"auth-basic-password",onChange:this.onChange}))),u.valueSeq().map(((e,t)=>x().createElement(l,{error:e,key:t}))))}return"bearer"===p?x().createElement("div",null,x().createElement("h4",null,x().createElement("code",null,a||e.get("name")),"  (http, Bearer)",x().createElement(i,{path:["securityDefinitions",a]})),m&&x().createElement("h6",null,"Authorized"),x().createElement(s,null,x().createElement(c,{source:e.get("description")})),x().createElement(s,null,x().createElement("label",{htmlFor:"auth-bearer-value"},"Value:"),m?x().createElement("code",null," ****** "):x().createElement(o,null,x().createElement(n,{id:"auth-bearer-value",type:"text","aria-label":"auth-bearer-value",onChange:this.onChange,autoFocus:!0}))),u.valueSeq().map(((e,t)=>x().createElement(l,{error:e,key:t})))):x().createElement("div",null,x().createElement("em",null,x().createElement("b",null,a)," HTTP authentication: unsupported scheme ",`'${p}'`))}}class OperationServers extends x().Component{setSelectedServer=e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setSelectedServer(e,`${t}:${r}`)};setServerVariableValue=e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...e,namespace:`${t}:${r}`})};getSelectedServer=()=>{const{path:e,method:t}=this.props;return this.props.getSelectedServer(`${e}:${t}`)};getServerVariable=(e,t)=>{const{path:r,method:a}=this.props;return this.props.getServerVariable({namespace:`${r}:${a}`,server:e},t)};getEffectiveServerValue=e=>{const{path:t,method:r}=this.props;return this.props.getEffectiveServerValue({server:e,namespace:`${t}:${r}`})};render(){const{operationServers:e,pathServers:t,getComponent:r}=this.props;if(!e&&!t)return null;const a=r("Servers"),n=e||t,s=e?"operation":"path";return x().createElement("div",{className:"opblock-section operation-servers"},x().createElement("div",{className:"opblock-section-header"},x().createElement("div",{className:"tab-header"},x().createElement("h4",{className:"opblock-title"},"Servers"))),x().createElement("div",{className:"opblock-description-wrapper"},x().createElement("h4",{className:"message"},"These ",s,"-level options override the global server options."),x().createElement(a,{servers:n,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}const jn={Callbacks:callbacks,HttpAuth,RequestBody:request_body,Servers:components_servers,ServersContainer,RequestBodyEditor,OperationServers,operationLink:In},Pn=new pn.Remarkable("commonmark");Pn.block.ruler.enable(["table"]),Pn.set({linkTarget:"_blank"});const Mn=OAS3ComponentWrapFactory((({source:e,className:t="",getConfigs:r=(()=>({useUnsafeMarkdown:!1}))})=>{if("string"!=typeof e)return null;if(e){const{useUnsafeMarkdown:a}=r(),n=sanitizer(Pn.render(e),{useUnsafeMarkdown:a});let s;return"string"==typeof n&&(s=n.trim()),x().createElement("div",{dangerouslySetInnerHTML:{__html:s},className:ut()(t,"renderedMarkdown")})}return null})),Rn=OAS3ComponentWrapFactory((({Ori:e,...t})=>{const{schema:r,getComponent:a,errSelectors:n,authorized:s,onAuthChange:o,name:l}=t,c=a("HttpAuth");return"http"===r.get("type")?x().createElement(c,{key:l,schema:r,name:l,errSelectors:n,authorized:s,getComponent:a,onChange:o}):x().createElement(e,t)})),Tn=OAS3ComponentWrapFactory(OnlineValidatorBadge);class ModelComponent extends C.Component{render(){let{getConfigs:e,schema:t,Ori:r}=this.props,a=["model-box"],n=null;return!0===t.get("deprecated")&&(a.push("deprecated"),n=x().createElement("span",{className:"model-deprecated-warning"},"Deprecated:")),x().createElement("div",{className:a.join(" ")},n,x().createElement(r,et()({},this.props,{getConfigs:e,depth:1,expandDepth:this.props.expandDepth||0})))}}const Jn=OAS3ComponentWrapFactory(ModelComponent),$n=OAS3ComponentWrapFactory((({Ori:e,...t})=>{const{schema:r,getComponent:a,errors:n,onChange:s}=t,o=r&&r.get?r.get("format"):null,l=r&&r.get?r.get("type"):null,c=a("Input");return l&&"string"===l&&o&&("binary"===o||"base64"===o)?x().createElement(c,{type:"file",className:n.length?"invalid":"",title:n.length?n:"",onChange:e=>{s(e.target.files[0])},disabled:e.isDisabled}):x().createElement(e,t)})),Vn={Markdown:Mn,AuthItem:Rn,OpenAPIVersion:function OAS30ComponentWrapFactory(e){return(t,r)=>a=>"function"==typeof r.specSelectors?.isOAS30?r.specSelectors.isOAS30()?x().createElement(e,et()({},a,r,{Ori:t})):x().createElement(t,a):(console.warn("OAS30 wrapper: couldn't get spec"),null)}((e=>{const{Ori:t}=e;return x().createElement(t,{oasVersion:"3.0"})})),JsonSchema_string:$n,model:Jn,onlineValidatorBadge:Tn},Dn="oas3_set_servers",Kn="oas3_set_request_body_value",Ln="oas3_set_request_body_retain_flag",Un="oas3_set_request_body_inclusion",zn="oas3_set_active_examples_member",Bn="oas3_set_request_content_type",Fn="oas3_set_response_content_type",Wn="oas3_set_server_variable_value",Hn="oas3_set_request_body_validate_error",Xn="oas3_clear_request_body_validate_error",Gn="oas3_clear_request_body_value";function setSelectedServer(e,t){return{type:Dn,payload:{selectedServerUrl:e,namespace:t}}}function setRequestBodyValue({value:e,pathMethod:t}){return{type:Kn,payload:{value:e,pathMethod:t}}}const setRetainRequestBodyValueFlag=({value:e,pathMethod:t})=>({type:Ln,payload:{value:e,pathMethod:t}});function setRequestBodyInclusion({value:e,pathMethod:t,name:r}){return{type:Un,payload:{value:e,pathMethod:t,name:r}}}function setActiveExamplesMember({name:e,pathMethod:t,contextType:r,contextName:a}){return{type:zn,payload:{name:e,pathMethod:t,contextType:r,contextName:a}}}function setRequestContentType({value:e,pathMethod:t}){return{type:Bn,payload:{value:e,pathMethod:t}}}function setResponseContentType({value:e,path:t,method:r}){return{type:Fn,payload:{value:e,path:t,method:r}}}function setServerVariableValue({server:e,namespace:t,key:r,val:a}){return{type:Wn,payload:{server:e,namespace:t,key:r,val:a}}}const setRequestBodyValidateError=({path:e,method:t,validationErrors:r})=>({type:Hn,payload:{path:e,method:t,validationErrors:r}}),clearRequestBodyValidateError=({path:e,method:t})=>({type:Xn,payload:{path:e,method:t}}),initRequestBodyValidateError=({pathMethod:e})=>({type:Xn,payload:{path:e[0],method:e[1]}}),clearRequestBodyValue=({pathMethod:e})=>({type:Gn,payload:{pathMethod:e}}),Yn=require("lodash/escapeRegExp");var Qn=__webpack_require__.n(Yn);const oas3_selectors_onlyOAS3=e=>(t,...r)=>a=>{if(a.getSystem().specSelectors.isOAS3()){const n=e(t,...r);return"function"==typeof n?n(a):n}return null};const Zn=oas3_selectors_onlyOAS3(((e,t)=>{const r=t?[t,"selectedServer"]:["selectedServer"];return e.getIn(r)||""})),es=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn(["requestData",t,r,"bodyValue"])||null)),ts=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn(["requestData",t,r,"retainBodyValue"])||!1)),selectDefaultRequestBodyValue=(e,t,r)=>e=>{const{oas3Selectors:a,specSelectors:n,fn:s}=e.getSystem();if(n.isOAS3()){const e=a.requestContentType(t,r);if(e)return getDefaultRequestBodyValue(n.specResolvedSubtree(["paths",t,r,"requestBody"]),e,a.activeExamplesMember(t,r,"requestBody","requestBody"),s)}return null},rs=oas3_selectors_onlyOAS3(((e,t,r)=>e=>{const{oas3Selectors:a,specSelectors:n,fn:s}=e;let o=!1;const l=a.requestContentType(t,r);let c=a.requestBodyValue(t,r);const i=n.specResolvedSubtree(["paths",t,r,"requestBody"]);if(!i)return!1;if(N.Map.isMap(c)&&(c=stringify(c.mapEntries((e=>N.Map.isMap(e[1])?[e[0],e[1].get("value")]:e)).toJS())),N.List.isList(c)&&(c=stringify(c)),l){const e=getDefaultRequestBodyValue(i,l,a.activeExamplesMember(t,r,"requestBody","requestBody"),s);o=!!c&&c!==e}return o})),as=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn(["requestData",t,r,"bodyInclusion"])||(0,N.Map)())),ns=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn(["requestData",t,r,"errors"])||null)),ss=oas3_selectors_onlyOAS3(((e,t,r,a,n)=>e.getIn(["examples",t,r,a,n,"activeExample"])||null)),os=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn(["requestData",t,r,"requestContentType"])||null)),ls=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn(["requestData",t,r,"responseContentType"])||null)),cs=oas3_selectors_onlyOAS3(((e,t,r)=>{let a;if("string"!=typeof t){const{server:e,namespace:n}=t;a=n?[n,"serverVariableValues",e,r]:["serverVariableValues",e,r]}else{a=["serverVariableValues",t,r]}return e.getIn(a)||null})),is=oas3_selectors_onlyOAS3(((e,t)=>{let r;if("string"!=typeof t){const{server:e,namespace:a}=t;r=a?[a,"serverVariableValues",e]:["serverVariableValues",e]}else{r=["serverVariableValues",t]}return e.getIn(r)||(0,N.OrderedMap)()})),ps=oas3_selectors_onlyOAS3(((e,t)=>{var r,a;if("string"!=typeof t){const{server:n,namespace:s}=t;a=n,r=s?e.getIn([s,"serverVariableValues",a]):e.getIn(["serverVariableValues",a])}else a=t,r=e.getIn(["serverVariableValues",a]);r=r||(0,N.OrderedMap)();let n=a;return r.map(((e,t)=>{n=n.replace(new RegExp(`{${Qn()(t)}}`,"g"),e)})),n})),ms=function validateRequestBodyIsRequired(e){return(...t)=>r=>{const a=r.getSystem().specSelectors.specJson();let n=[...t][1]||[];return!a.getIn(["paths",...n,"requestBody","required"])||e(...t)}}(((e,t)=>((e,t)=>(t=t||[],!!e.getIn(["requestData",...t,"bodyValue"])))(e,t))),validateShallowRequired=(e,{oas3RequiredRequestBodyContentType:t,oas3RequestContentType:r,oas3RequestBodyValue:a})=>{let n=[];if(!N.Map.isMap(a))return n;let s=[];return Object.keys(t.requestContentType).forEach((e=>{if(e===r){t.requestContentType[e].forEach((e=>{s.indexOf(e)<0&&s.push(e)}))}})),s.forEach((e=>{a.getIn([e,"value"])||n.push(e)})),n},us=Vt()(["get","put","post","delete","options","head","patch","trace"]),ds={[Dn]:(e,{payload:{selectedServerUrl:t,namespace:r}})=>{const a=r?[r,"selectedServer"]:["selectedServer"];return e.setIn(a,t)},[Kn]:(e,{payload:{value:t,pathMethod:r}})=>{let[a,n]=r;if(!N.Map.isMap(t))return e.setIn(["requestData",a,n,"bodyValue"],t);let s,o=e.getIn(["requestData",a,n,"bodyValue"])||(0,N.Map)();N.Map.isMap(o)||(o=(0,N.Map)());const[...l]=t.keys();return l.forEach((e=>{let r=t.getIn([e]);o.has(e)&&N.Map.isMap(r)||(s=o.setIn([e,"value"],r))})),e.setIn(["requestData",a,n,"bodyValue"],s)},[Ln]:(e,{payload:{value:t,pathMethod:r}})=>{let[a,n]=r;return e.setIn(["requestData",a,n,"retainBodyValue"],t)},[Un]:(e,{payload:{value:t,pathMethod:r,name:a}})=>{let[n,s]=r;return e.setIn(["requestData",n,s,"bodyInclusion",a],t)},[zn]:(e,{payload:{name:t,pathMethod:r,contextType:a,contextName:n}})=>{let[s,o]=r;return e.setIn(["examples",s,o,a,n,"activeExample"],t)},[Bn]:(e,{payload:{value:t,pathMethod:r}})=>{let[a,n]=r;return e.setIn(["requestData",a,n,"requestContentType"],t)},[Fn]:(e,{payload:{value:t,path:r,method:a}})=>e.setIn(["requestData",r,a,"responseContentType"],t),[Wn]:(e,{payload:{server:t,namespace:r,key:a,val:n}})=>{const s=r?[r,"serverVariableValues",t,a]:["serverVariableValues",t,a];return e.setIn(s,n)},[Hn]:(e,{payload:{path:t,method:r,validationErrors:a}})=>{let n=[];if(n.push("Required field is not provided"),a.missingBodyValue)return e.setIn(["requestData",t,r,"errors"],(0,N.fromJS)(n));if(a.missingRequiredKeys&&a.missingRequiredKeys.length>0){const{missingRequiredKeys:s}=a;return e.updateIn(["requestData",t,r,"bodyValue"],(0,N.fromJS)({}),(e=>s.reduce(((e,t)=>e.setIn([t,"errors"],(0,N.fromJS)(n))),e)))}return console.warn("unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR"),e},[Xn]:(e,{payload:{path:t,method:r}})=>{const a=e.getIn(["requestData",t,r,"bodyValue"]);if(!N.Map.isMap(a))return e.setIn(["requestData",t,r,"errors"],(0,N.fromJS)([]));const[...n]=a.keys();return n?e.updateIn(["requestData",t,r,"bodyValue"],(0,N.fromJS)({}),(e=>n.reduce(((e,t)=>e.setIn([t,"errors"],(0,N.fromJS)([]))),e))):e},[Gn]:(e,{payload:{pathMethod:t}})=>{let[r,a]=t;const n=e.getIn(["requestData",r,a,"bodyValue"]);return n?N.Map.isMap(n)?e.setIn(["requestData",r,a,"bodyValue"],(0,N.Map)()):e.setIn(["requestData",r,a,"bodyValue"],""):e}};function oas3(){return{components:jn,wrapComponents:Vn,statePlugins:{spec:{wrapSelectors:E,selectors:v},auth:{wrapSelectors:_},oas3:{actions:{...w},reducers:ds,selectors:{...b}}}}}const webhooks=({specSelectors:e,getComponent:t})=>{const r=e.selectWebhooksOperations(),a=Object.keys(r),n=t("OperationContainer",!0);return 0===a.length?null:x().createElement("div",{className:"webhooks"},x().createElement("h2",null,"Webhooks"),a.map((e=>x().createElement("div",{key:`${e}-webhook`},r[e].map((t=>x().createElement(n,{key:`${e}-${t.method}-webhook`,op:t.operation,tag:"webhooks",method:t.method,path:e,specPath:(0,N.List)(t.specPath),allowTryItOut:!1})))))))},components_license=({getComponent:e,specSelectors:t})=>{const r=t.selectLicenseNameField(),a=t.selectLicenseUrl(),n=e("Link");return x().createElement("div",{className:"info__license"},a?x().createElement("div",{className:"info__license__url"},x().createElement(n,{target:"_blank",href:sanitizeUrl(a)},r)):x().createElement("span",null,r))},components_contact=({getComponent:e,specSelectors:t})=>{const r=t.selectContactNameField(),a=t.selectContactUrl(),n=t.selectContactEmailField(),s=e("Link");return x().createElement("div",{className:"info__contact"},a&&x().createElement("div",null,x().createElement(s,{href:sanitizeUrl(a),target:"_blank"},r," - Website")),n&&x().createElement(s,{href:sanitizeUrl(`mailto:${n}`)},a?`Send email to ${r}`:`Contact ${r}`))},oas31_components_info=({getComponent:e,specSelectors:t})=>{const r=t.version(),a=t.url(),n=t.basePath(),s=t.host(),o=t.selectInfoSummaryField(),l=t.selectInfoDescriptionField(),c=t.selectInfoTitleField(),i=t.selectInfoTermsOfServiceUrl(),p=t.selectExternalDocsUrl(),m=t.selectExternalDocsDescriptionField(),u=t.contact(),d=t.license(),h=e("Markdown",!0),g=e("Link"),y=e("VersionStamp"),f=e("OpenAPIVersion"),S=e("InfoUrl"),E=e("InfoBasePath"),_=e("License",!0),v=e("Contact",!0),w=e("JsonSchemaDialect",!0);return x().createElement("div",{className:"info"},x().createElement("hgroup",{className:"main"},x().createElement("h2",{className:"title"},c,x().createElement("span",null,r&&x().createElement(y,{version:r}),x().createElement(f,{oasVersion:"3.1"}))),(s||n)&&x().createElement(E,{host:s,basePath:n}),a&&x().createElement(S,{getComponent:e,url:a})),o&&x().createElement("p",{className:"info__summary"},o),x().createElement("div",{className:"info__description description"},x().createElement(h,{source:l})),i&&x().createElement("div",{className:"info__tos"},x().createElement(g,{target:"_blank",href:sanitizeUrl(i)},"Terms of service")),u.size>0&&x().createElement(v,null),d.size>0&&x().createElement(_,null),p&&x().createElement(g,{className:"info__extdocs",target:"_blank",href:sanitizeUrl(p)},m||p),x().createElement(w,null))},json_schema_dialect=({getComponent:e,specSelectors:t})=>{const r=t.selectJsonSchemaDialectField(),a=t.selectJsonSchemaDialectDefault(),n=e("Link");return x().createElement(x().Fragment,null,r&&r===a&&x().createElement("p",{className:"info__jsonschemadialect"},"JSON Schema dialect:"," ",x().createElement(n,{target:"_blank",href:sanitizeUrl(r)},r)),r&&r!==a&&x().createElement("div",{className:"error-wrapper"},x().createElement("div",{className:"no-margin"},x().createElement("div",{className:"errors"},x().createElement("div",{className:"errors-wrapper"},x().createElement("h4",{className:"center"},"Warning"),x().createElement("p",{className:"message"},x().createElement("strong",null,"OpenAPI.jsonSchemaDialect")," field contains a value different from the default value of"," ",x().createElement(n,{target:"_blank",href:a},a),". Values different from the default one are currently not supported. Please either omit the field or provide it with the default value."))))))},version_pragma_filter=({bypass:e,isSwagger2:t,isOAS3:r,isOAS31:a,alsoShow:n,children:s})=>e?x().createElement("div",null,s):t&&(r||a)?x().createElement("div",{className:"version-pragma"},n,x().createElement("div",{className:"version-pragma__message version-pragma__message--ambiguous"},x().createElement("div",null,x().createElement("h3",null,"Unable to render this definition"),x().createElement("p",null,x().createElement("code",null,"swagger")," and ",x().createElement("code",null,"openapi")," fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields."),x().createElement("p",null,"Supported version fields are ",x().createElement("code",null,'swagger: "2.0"')," and those that match ",x().createElement("code",null,"openapi: 3.x.y")," (for example,"," ",x().createElement("code",null,"openapi: 3.1.0"),").")))):t||r||a?x().createElement("div",null,s):x().createElement("div",{className:"version-pragma"},n,x().createElement("div",{className:"version-pragma__message version-pragma__message--missing"},x().createElement("div",null,x().createElement("h3",null,"Unable to render this definition"),x().createElement("p",null,"The provided definition does not specify a valid version field."),x().createElement("p",null,"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are ",x().createElement("code",null,'swagger: "2.0"')," and those that match ",x().createElement("code",null,"openapi: 3.x.y")," (for example,"," ",x().createElement("code",null,"openapi: 3.1.0"),").")))),getModelName=e=>"string"==typeof e&&e.includes("#/components/schemas/")?(e=>{const t=e.replace(/~1/g,"/").replace(/~0/g,"~");try{return decodeURIComponent(t)}catch{return t}})(e.replace(/^.*#\/components\/schemas\//,"")):null,hs=(0,C.forwardRef)((({schema:e,getComponent:t,onToggle:r=(()=>{})},a)=>{const n=t("JSONSchema202012"),s=getModelName(e.get("$$ref")),o=(0,C.useCallback)(((e,t)=>{r(s,t)}),[s,r]);return x().createElement(n,{name:s,schema:e.toJS(),ref:a,onExpand:o})})),gs=hs,models=({specActions:e,specSelectors:t,layoutSelectors:r,layoutActions:a,getComponent:n,getConfigs:s,fn:o})=>{const l=t.selectSchemas(),c=Object.keys(l).length>0,i=["components","schemas"],{docExpansion:p,defaultModelsExpandDepth:m}=s(),u=m>0&&"none"!==p,d=r.isShown(i,u),h=n("Collapse"),g=n("JSONSchema202012"),y=n("ArrowUpIcon"),f=n("ArrowDownIcon"),{getTitle:S}=o.jsonSchema202012.useFn();(0,C.useEffect)((()=>{const r=d&&m>1,a=null!=t.specResolvedSubtree(i);r&&!a&&e.requestResolvedSubtree(i)}),[d,m]);const E=(0,C.useCallback)((()=>{a.show(i,!d)}),[d]),_=(0,C.useCallback)((e=>{null!==e&&a.readyToScroll(i,e)}),[]),handleJSONSchema202012Ref=e=>t=>{null!==t&&a.readyToScroll([...i,e],t)},handleJSONSchema202012Expand=r=>(a,n)=>{if(n){const a=[...i,r];null!=t.specResolvedSubtree(a)||e.requestResolvedSubtree([...i,r])}};return!c||m<0?null:x().createElement("section",{className:ut()("models",{"is-open":d}),ref:_},x().createElement("h4",null,x().createElement("button",{"aria-expanded":d,className:"models-control",onClick:E},x().createElement("span",null,"Schemas"),d?x().createElement(y,null):x().createElement(f,null))),x().createElement(h,{isOpened:d},Object.entries(l).map((([e,t])=>{const r=S(t,{lookup:"basic"})||e;return x().createElement(g,{key:e,ref:handleJSONSchema202012Ref(e),schema:t,name:r,onExpand:handleJSONSchema202012Expand(e)})}))))},mutual_tls_auth=({schema:e,getComponent:t})=>{const r=t("JumpToPath",!0);return x().createElement("div",null,x().createElement("h4",null,e.get("name")," (mutualTLS)"," ",x().createElement(r,{path:["securityDefinitions",e.get("name")]})),x().createElement("p",null,"Mutual TLS is required by this API/Operation. Certificates are managed via your Operating System and/or your browser."),x().createElement("p",null,e.get("description")))};class auths_Auths extends x().Component{constructor(e,t){super(e,t),this.state={}}onAuthChange=e=>{let{name:t}=e;this.setState({[t]:e})};submitAuth=e=>{e.preventDefault();let{authActions:t}=this.props;t.authorizeWithPersistOption(this.state)};logoutClick=e=>{e.preventDefault();let{authActions:t,definitions:r}=this.props,a=r.map(((e,t)=>t)).toArray();this.setState(a.reduce(((e,t)=>(e[t]="",e)),{})),t.logoutWithPersistOption(a)};close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};render(){let{definitions:e,getComponent:t,authSelectors:r,errSelectors:a}=this.props;const n=t("AuthItem"),s=t("oauth2",!0),o=t("Button"),l=r.authorized(),c=e.filter(((e,t)=>!!l.get(t))),i=e.filter((e=>"oauth2"!==e.get("type")&&"mutualTLS"!==e.get("type"))),p=e.filter((e=>"oauth2"===e.get("type"))),m=e.filter((e=>"mutualTLS"===e.get("type")));return x().createElement("div",{className:"auth-container"},i.size>0&&x().createElement("form",{onSubmit:this.submitAuth},i.map(((e,r)=>x().createElement(n,{key:r,schema:e,name:r,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:a}))).toArray(),x().createElement("div",{className:"auth-btn-wrapper"},i.size===c.size?x().createElement(o,{className:"btn modal-btn auth",onClick:this.logoutClick,"aria-label":"Remove authorization"},"Logout"):x().createElement(o,{type:"submit",className:"btn modal-btn auth authorize","aria-label":"Apply credentials"},"Authorize"),x().createElement(o,{className:"btn modal-btn auth btn-done",onClick:this.close},"Close"))),p.size>0?x().createElement("div",null,x().createElement("div",{className:"scope-def"},x().createElement("p",null,"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes."),x().createElement("p",null,"API requires the following scopes. Select which ones you want to grant to Swagger UI.")),e.filter((e=>"oauth2"===e.get("type"))).map(((e,t)=>x().createElement("div",{key:t},x().createElement(s,{authorized:l,schema:e,name:t})))).toArray()):null,m.size>0&&x().createElement("div",null,m.map(((e,r)=>x().createElement(n,{key:r,schema:e,name:r,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:a}))).toArray()))}}const ys=auths_Auths,isOAS31=e=>{const t=e.get("openapi");return"string"==typeof t&&/^3\.1\.(?:[1-9]\d*|0)$/.test(t)},fn_createOnlyOAS31Selector=e=>(t,...r)=>a=>{if(a.getSystem().specSelectors.isOAS31()){const n=e(t,...r);return"function"==typeof n?n(a):n}return null},createOnlyOAS31SelectorWrapper=e=>(t,r)=>(a,...n)=>{if(r.getSystem().specSelectors.isOAS31()){const s=e(a,...n);return"function"==typeof s?s(t,r):s}return t(...n)},fn_createSystemSelector=e=>(t,...r)=>a=>{const n=e(t,a,...r);return"function"==typeof n?n(a):n},createOnlyOAS31ComponentWrapper=e=>(t,r)=>a=>r.specSelectors.isOAS31()?x().createElement(e,et()({},a,{originalComponent:t,getSystem:r.getSystem})):x().createElement(t,a),fs=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent("OAS31License",!0);return x().createElement(t,null)})),Ss=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent("OAS31Contact",!0);return x().createElement(t,null)})),Es=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent("OAS31Info",!0);return x().createElement(t,null)})),_s=createOnlyOAS31ComponentWrapper((({getSystem:e,...t})=>{const r=e(),{getComponent:a,fn:n,getConfigs:s}=r,o=s(),l=a("OAS31Model"),c=a("JSONSchema202012"),i=a("JSONSchema202012Keyword$schema"),p=a("JSONSchema202012Keyword$vocabulary"),m=a("JSONSchema202012Keyword$id"),u=a("JSONSchema202012Keyword$anchor"),d=a("JSONSchema202012Keyword$dynamicAnchor"),h=a("JSONSchema202012Keyword$ref"),g=a("JSONSchema202012Keyword$dynamicRef"),y=a("JSONSchema202012Keyword$defs"),f=a("JSONSchema202012Keyword$comment"),S=a("JSONSchema202012KeywordAllOf"),E=a("JSONSchema202012KeywordAnyOf"),_=a("JSONSchema202012KeywordOneOf"),v=a("JSONSchema202012KeywordNot"),w=a("JSONSchema202012KeywordIf"),b=a("JSONSchema202012KeywordThen"),C=a("JSONSchema202012KeywordElse"),O=a("JSONSchema202012KeywordDependentSchemas"),N=a("JSONSchema202012KeywordPrefixItems"),k=a("JSONSchema202012KeywordItems"),A=a("JSONSchema202012KeywordContains"),I=a("JSONSchema202012KeywordProperties"),q=a("JSONSchema202012KeywordPatternProperties"),j=a("JSONSchema202012KeywordAdditionalProperties"),P=a("JSONSchema202012KeywordPropertyNames"),M=a("JSONSchema202012KeywordUnevaluatedItems"),R=a("JSONSchema202012KeywordUnevaluatedProperties"),T=a("JSONSchema202012KeywordType"),J=a("JSONSchema202012KeywordEnum"),$=a("JSONSchema202012KeywordConst"),V=a("JSONSchema202012KeywordConstraint"),D=a("JSONSchema202012KeywordDependentRequired"),K=a("JSONSchema202012KeywordContentSchema"),L=a("JSONSchema202012KeywordTitle"),U=a("JSONSchema202012KeywordDescription"),z=a("JSONSchema202012KeywordDefault"),B=a("JSONSchema202012KeywordDeprecated"),F=a("JSONSchema202012KeywordReadOnly"),W=a("JSONSchema202012KeywordWriteOnly"),H=a("JSONSchema202012Accordion"),X=a("JSONSchema202012ExpandDeepButton"),G=a("JSONSchema202012ChevronRightIcon"),Y=a("withJSONSchema202012Context")(l,{config:{default$schema:"https://spec.openapis.org/oas/3.1/dialect/base",defaultExpandedLevels:o.defaultModelExpandDepth,includeReadOnly:Boolean(t.includeReadOnly),includeWriteOnly:Boolean(t.includeWriteOnly)},components:{JSONSchema:c,Keyword$schema:i,Keyword$vocabulary:p,Keyword$id:m,Keyword$anchor:u,Keyword$dynamicAnchor:d,Keyword$ref:h,Keyword$dynamicRef:g,Keyword$defs:y,Keyword$comment:f,KeywordAllOf:S,KeywordAnyOf:E,KeywordOneOf:_,KeywordNot:v,KeywordIf:w,KeywordThen:b,KeywordElse:C,KeywordDependentSchemas:O,KeywordPrefixItems:N,KeywordItems:k,KeywordContains:A,KeywordProperties:I,KeywordPatternProperties:q,KeywordAdditionalProperties:j,KeywordPropertyNames:P,KeywordUnevaluatedItems:M,KeywordUnevaluatedProperties:R,KeywordType:T,KeywordEnum:J,KeywordConst:$,KeywordConstraint:V,KeywordDependentRequired:D,KeywordContentSchema:K,KeywordTitle:L,KeywordDescription:U,KeywordDefault:z,KeywordDeprecated:B,KeywordReadOnly:F,KeywordWriteOnly:W,Accordion:H,ExpandDeepButton:X,ChevronRightIcon:G},fn:{upperFirst:n.upperFirst,isExpandable:n.jsonSchema202012.isExpandable,getProperties:n.jsonSchema202012.getProperties}});return x().createElement(Y,t)})),vs=_s,ws=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const{getComponent:t,fn:r,getConfigs:a}=e(),n=a();if(ws.ModelsWithJSONSchemaContext)return x().createElement(ws.ModelsWithJSONSchemaContext,null);const s=t("OAS31Models",!0),o=t("JSONSchema202012"),l=t("JSONSchema202012Keyword$schema"),c=t("JSONSchema202012Keyword$vocabulary"),i=t("JSONSchema202012Keyword$id"),p=t("JSONSchema202012Keyword$anchor"),m=t("JSONSchema202012Keyword$dynamicAnchor"),u=t("JSONSchema202012Keyword$ref"),d=t("JSONSchema202012Keyword$dynamicRef"),h=t("JSONSchema202012Keyword$defs"),g=t("JSONSchema202012Keyword$comment"),y=t("JSONSchema202012KeywordAllOf"),f=t("JSONSchema202012KeywordAnyOf"),S=t("JSONSchema202012KeywordOneOf"),E=t("JSONSchema202012KeywordNot"),_=t("JSONSchema202012KeywordIf"),v=t("JSONSchema202012KeywordThen"),w=t("JSONSchema202012KeywordElse"),b=t("JSONSchema202012KeywordDependentSchemas"),C=t("JSONSchema202012KeywordPrefixItems"),O=t("JSONSchema202012KeywordItems"),N=t("JSONSchema202012KeywordContains"),k=t("JSONSchema202012KeywordProperties"),A=t("JSONSchema202012KeywordPatternProperties"),I=t("JSONSchema202012KeywordAdditionalProperties"),q=t("JSONSchema202012KeywordPropertyNames"),j=t("JSONSchema202012KeywordUnevaluatedItems"),P=t("JSONSchema202012KeywordUnevaluatedProperties"),M=t("JSONSchema202012KeywordType"),R=t("JSONSchema202012KeywordEnum"),T=t("JSONSchema202012KeywordConst"),J=t("JSONSchema202012KeywordConstraint"),$=t("JSONSchema202012KeywordDependentRequired"),V=t("JSONSchema202012KeywordContentSchema"),D=t("JSONSchema202012KeywordTitle"),K=t("JSONSchema202012KeywordDescription"),L=t("JSONSchema202012KeywordDefault"),U=t("JSONSchema202012KeywordDeprecated"),z=t("JSONSchema202012KeywordReadOnly"),B=t("JSONSchema202012KeywordWriteOnly"),F=t("JSONSchema202012Accordion"),W=t("JSONSchema202012ExpandDeepButton"),H=t("JSONSchema202012ChevronRightIcon"),X=t("withJSONSchema202012Context");return ws.ModelsWithJSONSchemaContext=X(s,{config:{default$schema:"https://spec.openapis.org/oas/3.1/dialect/base",defaultExpandedLevels:n.defaultModelsExpandDepth-1,includeReadOnly:!0,includeWriteOnly:!0},components:{JSONSchema:o,Keyword$schema:l,Keyword$vocabulary:c,Keyword$id:i,Keyword$anchor:p,Keyword$dynamicAnchor:m,Keyword$ref:u,Keyword$dynamicRef:d,Keyword$defs:h,Keyword$comment:g,KeywordAllOf:y,KeywordAnyOf:f,KeywordOneOf:S,KeywordNot:E,KeywordIf:_,KeywordThen:v,KeywordElse:w,KeywordDependentSchemas:b,KeywordPrefixItems:C,KeywordItems:O,KeywordContains:N,KeywordProperties:k,KeywordPatternProperties:A,KeywordAdditionalProperties:I,KeywordPropertyNames:q,KeywordUnevaluatedItems:j,KeywordUnevaluatedProperties:P,KeywordType:M,KeywordEnum:R,KeywordConst:T,KeywordConstraint:J,KeywordDependentRequired:$,KeywordContentSchema:V,KeywordTitle:D,KeywordDescription:K,KeywordDefault:L,KeywordDeprecated:U,KeywordReadOnly:z,KeywordWriteOnly:B,Accordion:F,ExpandDeepButton:W,ChevronRightIcon:H},fn:{upperFirst:r.upperFirst,isExpandable:r.jsonSchema202012.isExpandable,getProperties:r.jsonSchema202012.getProperties}}),x().createElement(ws.ModelsWithJSONSchemaContext,null)}));ws.ModelsWithJSONSchemaContext=null;const bs=ws,wrap_components_version_pragma_filter=(e,t)=>e=>{const r=t.specSelectors.isOAS31(),a=t.getComponent("OAS31VersionPragmaFilter");return x().createElement(a,et()({isOAS31:r},e))},Cs=createOnlyOAS31ComponentWrapper((({originalComponent:e,...t})=>{const{getComponent:r,schema:a}=t,n=r("MutualTLSAuth",!0);return"mutualTLS"===a.get("type")?x().createElement(n,{schema:a}):x().createElement(e,t)})),xs=Cs,Os=createOnlyOAS31ComponentWrapper((({getSystem:e,...t})=>{const r=e().getComponent("OAS31Auths",!0);return x().createElement(r,t)})),Ns=(0,N.Map)(),ks=(0,we.createSelector)(((e,t)=>t.specSelectors.specJson()),isOAS31),selectors_webhooks=()=>e=>{const t=e.specSelectors.specJson().get("webhooks");return N.Map.isMap(t)?t:Ns},As=(0,we.createSelector)([(e,t)=>t.specSelectors.webhooks(),(e,t)=>t.specSelectors.validOperationMethods(),(e,t)=>t.specSelectors.specResolvedSubtree(["webhooks"])],((e,t)=>e.reduce(((e,r,a)=>{if(!N.Map.isMap(r))return e;const n=r.entrySeq().filter((([e])=>t.includes(e))).map((([e,t])=>({operation:(0,N.Map)({operation:t}),method:e,path:a,specPath:["webhooks",a,e]})));return e.concat(n)}),(0,N.List)()).groupBy((e=>e.path)).map((e=>e.toArray())).toObject())),selectors_license=()=>e=>{const t=e.specSelectors.info().get("license");return N.Map.isMap(t)?t:Ns},selectLicenseNameField=()=>e=>e.specSelectors.license().get("name","License"),selectLicenseUrlField=()=>e=>e.specSelectors.license().get("url"),Is=(0,we.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectLicenseUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectLicenseIdentifierField=()=>e=>e.specSelectors.license().get("identifier"),selectors_contact=()=>e=>{const t=e.specSelectors.info().get("contact");return N.Map.isMap(t)?t:Ns},selectContactNameField=()=>e=>e.specSelectors.contact().get("name","the developer"),selectContactEmailField=()=>e=>e.specSelectors.contact().get("email"),selectContactUrlField=()=>e=>e.specSelectors.contact().get("url"),qs=(0,we.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectContactUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectInfoTitleField=()=>e=>e.specSelectors.info().get("title"),selectInfoSummaryField=()=>e=>e.specSelectors.info().get("summary"),selectInfoDescriptionField=()=>e=>e.specSelectors.info().get("description"),selectInfoTermsOfServiceField=()=>e=>e.specSelectors.info().get("termsOfService"),js=(0,we.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectInfoTermsOfServiceField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectExternalDocsDescriptionField=()=>e=>e.specSelectors.externalDocs().get("description"),selectExternalDocsUrlField=()=>e=>e.specSelectors.externalDocs().get("url"),Ps=(0,we.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectExternalDocsUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectJsonSchemaDialectField=()=>e=>e.specSelectors.specJson().get("jsonSchemaDialect"),selectJsonSchemaDialectDefault=()=>"https://spec.openapis.org/oas/3.1/dialect/base",Ms=(0,we.createSelector)(((e,t)=>t.specSelectors.definitions()),((e,t)=>t.specSelectors.specResolvedSubtree(["components","schemas"])),((e,t)=>N.Map.isMap(e)?N.Map.isMap(t)?Object.entries(e.toJS()).reduce(((e,[r,a])=>{const n=t.get(r);return e[r]=n?.toJS()||a,e}),{}):e.toJS():{})),wrap_selectors_isOAS3=(e,t)=>(r,...a)=>t.specSelectors.isOAS31()||e(...a),Rs=createOnlyOAS31SelectorWrapper((()=>(e,t)=>t.oas31Selectors.selectLicenseUrl())),Ts=createOnlyOAS31SelectorWrapper((()=>(e,t)=>{const r=t.specSelectors.securityDefinitions();let a=e();return r?(r.entrySeq().forEach((([e,t])=>{"mutualTLS"===t.get("type")&&(a=a.push(new N.Map({[e]:t})))})),a):a})),Js=(0,we.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectLicenseUrlField(),(e,t)=>t.specSelectors.selectLicenseIdentifierField()],((e,t,r,a)=>r?safeBuildUrl(r,e,{selectedServer:t}):a?`https://spdx.org/licenses/${a}.html`:void 0)),keywords_Example=({schema:e,getSystem:t})=>{const{fn:r}=t(),{hasKeyword:a,stringify:n}=r.jsonSchema202012.useFn();return a(e,"example")?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--example"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Example"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},n(e.example))):null},keywords_Xml=({schema:e,getSystem:t})=>{const r=e?.xml||{},{fn:a,getComponent:n}=t(),{useIsExpandedDeeply:s,useComponent:o}=a.jsonSchema202012,l=s(),c=!!(r.name||r.namespace||r.prefix),[i,p]=(0,C.useState)(l),[m,u]=(0,C.useState)(!1),d=o("Accordion"),h=o("ExpandDeepButton"),g=n("JSONSchema202012DeepExpansionContext")(),y=(0,C.useCallback)((()=>{p((e=>!e))}),[]),f=(0,C.useCallback)(((e,t)=>{p(t),u(t)}),[]);return 0===Object.keys(r).length?null:x().createElement(g.Provider,{value:m},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--xml"},c?x().createElement(x().Fragment,null,x().createElement(d,{expanded:i,onChange:y},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"XML")),x().createElement(h,{expanded:i,onClick:f})):x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"XML"),!0===r.attribute&&x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"attribute"),!0===r.wrapped&&x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"wrapped"),x().createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!i})},i&&x().createElement(x().Fragment,null,r.name&&x().createElement("li",{className:"json-schema-2020-12-property"},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"name"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},r.name))),r.namespace&&x().createElement("li",{className:"json-schema-2020-12-property"},x().createElement("div",{className:"json-schema-2020-12-keyword"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"namespace"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},r.namespace))),r.prefix&&x().createElement("li",{className:"json-schema-2020-12-property"},x().createElement("div",{className:"json-schema-2020-12-keyword"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"prefix"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},r.prefix)))))))},Discriminator_DiscriminatorMapping=({discriminator:e})=>{const t=e?.mapping||{};return 0===Object.keys(t).length?null:Object.entries(t).map((([e,t])=>x().createElement("div",{key:`${e}-${t}`,className:"json-schema-2020-12-keyword"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},e),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},t))))},Discriminator_Discriminator=({schema:e,getSystem:t})=>{const r=e?.discriminator||{},{fn:a,getComponent:n}=t(),{useIsExpandedDeeply:s,useComponent:o}=a.jsonSchema202012,l=s(),c=!!r.mapping,[i,p]=(0,C.useState)(l),[m,u]=(0,C.useState)(!1),d=o("Accordion"),h=o("ExpandDeepButton"),g=n("JSONSchema202012DeepExpansionContext")(),y=(0,C.useCallback)((()=>{p((e=>!e))}),[]),f=(0,C.useCallback)(((e,t)=>{p(t),u(t)}),[]);return 0===Object.keys(r).length?null:x().createElement(g.Provider,{value:m},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--discriminator"},c?x().createElement(x().Fragment,null,x().createElement(d,{expanded:i,onChange:y},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Discriminator")),x().createElement(h,{expanded:i,onClick:f})):x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"Discriminator"),r.propertyName&&x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},r.propertyName),x().createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!i})},i&&x().createElement("li",{className:"json-schema-2020-12-property"},x().createElement(Discriminator_DiscriminatorMapping,{discriminator:r})))))},keywords_ExternalDocs=({schema:e,getSystem:t})=>{const r=e?.externalDocs||{},{fn:a,getComponent:n}=t(),{useIsExpandedDeeply:s,useComponent:o}=a.jsonSchema202012,l=s(),c=!(!r.description&&!r.url),[i,p]=(0,C.useState)(l),[m,u]=(0,C.useState)(!1),d=o("Accordion"),h=o("ExpandDeepButton"),g=n("JSONSchema202012KeywordDescription"),y=n("Link"),f=n("JSONSchema202012DeepExpansionContext")(),S=(0,C.useCallback)((()=>{p((e=>!e))}),[]),E=(0,C.useCallback)(((e,t)=>{p(t),u(t)}),[]);return 0===Object.keys(r).length?null:x().createElement(f.Provider,{value:m},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--externalDocs"},c?x().createElement(x().Fragment,null,x().createElement(d,{expanded:i,onChange:S},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"External documentation")),x().createElement(h,{expanded:i,onClick:E})):x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"External documentation"),x().createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!i})},i&&x().createElement(x().Fragment,null,r.description&&x().createElement("li",{className:"json-schema-2020-12-property"},x().createElement(g,{schema:r,getSystem:t})),r.url&&x().createElement("li",{className:"json-schema-2020-12-property"},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"url"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},x().createElement(y,{target:"_blank",href:sanitizeUrl(r.url)},r.url))))))))},keywords_Description=({schema:e,getSystem:t})=>{if(!e?.description)return null;const{getComponent:r}=t(),a=r("Markdown");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--description"},x().createElement("div",{className:"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary"},x().createElement(a,{source:e.description})))},$s=createOnlyOAS31ComponentWrapper(keywords_Description),Vs=createOnlyOAS31ComponentWrapper((({schema:e,getSystem:t,originalComponent:r})=>{const{getComponent:a}=t(),n=a("JSONSchema202012KeywordDiscriminator"),s=a("JSONSchema202012KeywordXml"),o=a("JSONSchema202012KeywordExample"),l=a("JSONSchema202012KeywordExternalDocs");return x().createElement(x().Fragment,null,x().createElement(r,{schema:e}),x().createElement(n,{schema:e,getSystem:t}),x().createElement(s,{schema:e,getSystem:t}),x().createElement(l,{schema:e,getSystem:t}),x().createElement(o,{schema:e,getSystem:t}))})),Ds=Vs,keywords_Properties=({schema:e,getSystem:t})=>{const{fn:r}=t(),{useComponent:a}=r.jsonSchema202012,{getDependentRequired:n,getProperties:s}=r.jsonSchema202012.useFn(),o=r.jsonSchema202012.useConfig(),l=Array.isArray(e?.required)?e.required:[],c=a("JSONSchema"),i=s(e,o);return 0===Object.keys(i).length?null:x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties"},x().createElement("ul",null,Object.entries(i).map((([t,r])=>{const a=l.includes(t),s=n(t,e);return x().createElement("li",{key:t,className:ut()("json-schema-2020-12-property",{"json-schema-2020-12-property--required":a})},x().createElement(c,{name:t,schema:r,dependentRequired:s}))}))))},Ks=createOnlyOAS31ComponentWrapper(keywords_Properties),getProperties=(e,{includeReadOnly:t,includeWriteOnly:r})=>{if(!e?.properties)return{};const a=Object.entries(e.properties).filter((([,e])=>(!(!0===e?.readOnly)||t)&&(!(!0===e?.writeOnly)||r)));return Object.fromEntries(a)};const Ls=function oas31_after_load_afterLoad({fn:e,getSystem:t}){if(e.jsonSchema202012){const r=((e,t)=>{const{fn:r}=t();if("function"!=typeof e)return null;const{hasKeyword:a}=r.jsonSchema202012;return t=>e(t)||a(t,"example")||t?.xml||t?.discriminator||t?.externalDocs})(e.jsonSchema202012.isExpandable,t);Object.assign(this.fn.jsonSchema202012,{isExpandable:r,getProperties})}if("function"==typeof e.sampleFromSchema&&e.jsonSchema202012){const r=((e,t)=>{const{fn:r,specSelectors:a}=t;return Object.fromEntries(Object.entries(e).map((([e,t])=>{const n=r[e];return[e,(...e)=>a.isOAS31()?t(...e):"function"==typeof n?n(...e):void 0]})))})({sampleFromSchema:e.jsonSchema202012.sampleFromSchema,sampleFromSchemaGeneric:e.jsonSchema202012.sampleFromSchemaGeneric,createXMLExample:e.jsonSchema202012.createXMLExample,memoizedSampleFromSchema:e.jsonSchema202012.memoizedSampleFromSchema,memoizedCreateXMLExample:e.jsonSchema202012.memoizedCreateXMLExample,getJsonSampleSchema:e.jsonSchema202012.getJsonSampleSchema,getYamlSampleSchema:e.jsonSchema202012.getYamlSampleSchema,getXmlSampleSchema:e.jsonSchema202012.getXmlSampleSchema,getSampleSchema:e.jsonSchema202012.getSampleSchema,mergeJsonSchema:e.jsonSchema202012.mergeJsonSchema},t());Object.assign(this.fn,r)}},oas31=({fn:e})=>{const t=e.createSystemSelector||fn_createSystemSelector,r=e.createOnlyOAS31Selector||fn_createOnlyOAS31Selector;return{afterLoad:Ls,fn:{isOAS31,createSystemSelector:fn_createSystemSelector,createOnlyOAS31Selector:fn_createOnlyOAS31Selector},components:{Webhooks:webhooks,JsonSchemaDialect:json_schema_dialect,MutualTLSAuth:mutual_tls_auth,OAS31Info:oas31_components_info,OAS31License:components_license,OAS31Contact:components_contact,OAS31VersionPragmaFilter:version_pragma_filter,OAS31Model:gs,OAS31Models:models,OAS31Auths:ys,JSONSchema202012KeywordExample:keywords_Example,JSONSchema202012KeywordXml:keywords_Xml,JSONSchema202012KeywordDiscriminator:Discriminator_Discriminator,JSONSchema202012KeywordExternalDocs:keywords_ExternalDocs},wrapComponents:{InfoContainer:Es,License:fs,Contact:Ss,VersionPragmaFilter:wrap_components_version_pragma_filter,Model:vs,Models:bs,AuthItem:xs,auths:Os,JSONSchema202012KeywordDescription:$s,JSONSchema202012KeywordDefault:Ds,JSONSchema202012KeywordProperties:Ks},statePlugins:{auth:{wrapSelectors:{definitionsToAuthorize:Ts}},spec:{selectors:{isOAS31:t(ks),license:selectors_license,selectLicenseNameField,selectLicenseUrlField,selectLicenseIdentifierField:r(selectLicenseIdentifierField),selectLicenseUrl:t(Is),contact:selectors_contact,selectContactNameField,selectContactEmailField,selectContactUrlField,selectContactUrl:t(qs),selectInfoTitleField,selectInfoSummaryField:r(selectInfoSummaryField),selectInfoDescriptionField,selectInfoTermsOfServiceField,selectInfoTermsOfServiceUrl:t(js),selectExternalDocsDescriptionField,selectExternalDocsUrlField,selectExternalDocsUrl:t(Ps),webhooks:r(selectors_webhooks),selectWebhooksOperations:r(t(As)),selectJsonSchemaDialectField,selectJsonSchemaDialectDefault,selectSchemas:t(Ms)},wrapSelectors:{isOAS3:wrap_selectors_isOAS3,selectLicenseUrl:Rs}},oas31:{selectors:{selectLicenseUrl:r(t(Js))}}}}},Us=ke().object,zs=ke().bool,Bs=(ke().oneOfType([Us,zs]),(0,C.createContext)(null));Bs.displayName="JSONSchemaContext";const Fs=(0,C.createContext)(0);Fs.displayName="JSONSchemaLevelContext";const Ws=(0,C.createContext)(!1);Ws.displayName="JSONSchemaDeepExpansionContext";const Hs=(0,C.createContext)(new Set),useConfig=()=>{const{config:e}=(0,C.useContext)(Bs);return e},useComponent=e=>{const{components:t}=(0,C.useContext)(Bs);return t[e]||null},useFn=(e=void 0)=>{const{fn:t}=(0,C.useContext)(Bs);return void 0!==e?t[e]:t},useLevel=()=>{const e=(0,C.useContext)(Fs);return[e,e+1]},useIsExpanded=()=>{const[e]=useLevel(),{defaultExpandedLevels:t}=useConfig();return t-e>0},useIsExpandedDeeply=()=>(0,C.useContext)(Ws),useRenderedSchemas=(e=void 0)=>{if(void 0===e)return(0,C.useContext)(Hs);const t=(0,C.useContext)(Hs);return new Set([...t,e])},Xs=(0,C.forwardRef)((({schema:e,name:t="",dependentRequired:r=[],onExpand:a=(()=>{})},n)=>{const s=useFn(),o=useIsExpanded(),l=useIsExpandedDeeply(),[c,i]=(0,C.useState)(o||l),[p,m]=(0,C.useState)(l),[u,d]=useLevel(),h=(()=>{const[e]=useLevel();return e>0})(),g=s.isExpandable(e)||r.length>0,y=(e=>useRenderedSchemas().has(e))(e),f=useRenderedSchemas(e),S=s.stringifyConstraints(e),E=useComponent("Accordion"),_=useComponent("Keyword$schema"),v=useComponent("Keyword$vocabulary"),w=useComponent("Keyword$id"),b=useComponent("Keyword$anchor"),O=useComponent("Keyword$dynamicAnchor"),N=useComponent("Keyword$ref"),k=useComponent("Keyword$dynamicRef"),A=useComponent("Keyword$defs"),I=useComponent("Keyword$comment"),q=useComponent("KeywordAllOf"),j=useComponent("KeywordAnyOf"),P=useComponent("KeywordOneOf"),M=useComponent("KeywordNot"),R=useComponent("KeywordIf"),T=useComponent("KeywordThen"),J=useComponent("KeywordElse"),$=useComponent("KeywordDependentSchemas"),V=useComponent("KeywordPrefixItems"),D=useComponent("KeywordItems"),K=useComponent("KeywordContains"),L=useComponent("KeywordProperties"),U=useComponent("KeywordPatternProperties"),z=useComponent("KeywordAdditionalProperties"),B=useComponent("KeywordPropertyNames"),F=useComponent("KeywordUnevaluatedItems"),W=useComponent("KeywordUnevaluatedProperties"),H=useComponent("KeywordType"),X=useComponent("KeywordEnum"),G=useComponent("KeywordConst"),Y=useComponent("KeywordConstraint"),Q=useComponent("KeywordDependentRequired"),Z=useComponent("KeywordContentSchema"),ee=useComponent("KeywordTitle"),te=useComponent("KeywordDescription"),re=useComponent("KeywordDefault"),ae=useComponent("KeywordDeprecated"),ne=useComponent("KeywordReadOnly"),se=useComponent("KeywordWriteOnly"),oe=useComponent("ExpandDeepButton");(0,C.useEffect)((()=>{m(l)}),[l]),(0,C.useEffect)((()=>{m(p)}),[p]);const le=(0,C.useCallback)(((e,t)=>{i(t),!t&&m(!1),a(e,t,!1)}),[a]),ce=(0,C.useCallback)(((e,t)=>{i(t),m(t),a(e,t,!0)}),[a]);return x().createElement(Fs.Provider,{value:d},x().createElement(Ws.Provider,{value:p},x().createElement(Hs.Provider,{value:f},x().createElement("article",{ref:n,"data-json-schema-level":u,className:ut()("json-schema-2020-12",{"json-schema-2020-12--embedded":h,"json-schema-2020-12--circular":y})},x().createElement("div",{className:"json-schema-2020-12-head"},g&&!y?x().createElement(x().Fragment,null,x().createElement(E,{expanded:c,onChange:le},x().createElement(ee,{title:t,schema:e})),x().createElement(oe,{expanded:c,onClick:ce})):x().createElement(ee,{title:t,schema:e}),x().createElement(ae,{schema:e}),x().createElement(ne,{schema:e}),x().createElement(se,{schema:e}),x().createElement(H,{schema:e,isCircular:y}),S.length>0&&S.map((e=>x().createElement(Y,{key:`${e.scope}-${e.value}`,constraint:e})))),x().createElement("div",{className:ut()("json-schema-2020-12-body",{"json-schema-2020-12-body--collapsed":!c})},c&&x().createElement(x().Fragment,null,x().createElement(te,{schema:e}),!y&&g&&x().createElement(x().Fragment,null,x().createElement(L,{schema:e}),x().createElement(U,{schema:e}),x().createElement(z,{schema:e}),x().createElement(W,{schema:e}),x().createElement(B,{schema:e}),x().createElement(q,{schema:e}),x().createElement(j,{schema:e}),x().createElement(P,{schema:e}),x().createElement(M,{schema:e}),x().createElement(R,{schema:e}),x().createElement(T,{schema:e}),x().createElement(J,{schema:e}),x().createElement($,{schema:e}),x().createElement(V,{schema:e}),x().createElement(D,{schema:e}),x().createElement(F,{schema:e}),x().createElement(K,{schema:e}),x().createElement(Z,{schema:e})),x().createElement(X,{schema:e}),x().createElement(G,{schema:e}),x().createElement(Q,{schema:e,dependentRequired:r}),x().createElement(re,{schema:e}),x().createElement(_,{schema:e}),x().createElement(v,{schema:e}),x().createElement(w,{schema:e}),x().createElement(b,{schema:e}),x().createElement(O,{schema:e}),x().createElement(N,{schema:e}),!y&&g&&x().createElement(A,{schema:e}),x().createElement(k,{schema:e}),x().createElement(I,{schema:e})))))))})),Gs=Xs,keywords_$schema=({schema:e})=>e?.$schema?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$schema"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$schema"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e.$schema)):null,$vocabulary_$vocabulary=({schema:e})=>{const t=useIsExpanded(),r=useIsExpandedDeeply(),[a,n]=(0,C.useState)(t||r),s=useComponent("Accordion"),o=(0,C.useCallback)((()=>{n((e=>!e))}),[]);return e?.$vocabulary?"object"!=typeof e.$vocabulary?null:x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$vocabulary"},x().createElement(s,{expanded:a,onChange:o},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$vocabulary")),x().createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),x().createElement("ul",null,a&&Object.entries(e.$vocabulary).map((([e,t])=>x().createElement("li",{key:e,className:ut()("json-schema-2020-12-$vocabulary-uri",{"json-schema-2020-12-$vocabulary-uri--disabled":!t})},x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e)))))):null},keywords_$id=({schema:e})=>e?.$id?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$id"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$id"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e.$id)):null,keywords_$anchor=({schema:e})=>e?.$anchor?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$anchor"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$anchor"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e.$anchor)):null,keywords_$dynamicAnchor=({schema:e})=>e?.$dynamicAnchor?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicAnchor"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$dynamicAnchor"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e.$dynamicAnchor)):null,keywords_$ref=({schema:e})=>e?.$ref?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$ref"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$ref"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e.$ref)):null,keywords_$dynamicRef=({schema:e})=>e?.$dynamicRef?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicRef"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$dynamicRef"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e.$dynamicRef)):null,keywords_$defs=({schema:e})=>{const t=e?.$defs||{},r=useIsExpanded(),a=useIsExpandedDeeply(),[n,s]=(0,C.useState)(r||a),[o,l]=(0,C.useState)(!1),c=useComponent("Accordion"),i=useComponent("ExpandDeepButton"),p=useComponent("JSONSchema"),m=(0,C.useCallback)((()=>{s((e=>!e))}),[]),u=(0,C.useCallback)(((e,t)=>{s(t),l(t)}),[]);return 0===Object.keys(t).length?null:x().createElement(Ws.Provider,{value:o},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$defs"},x().createElement(c,{expanded:n,onChange:m},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$defs")),x().createElement(i,{expanded:n,onClick:u}),x().createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!n})},n&&x().createElement(x().Fragment,null,Object.entries(t).map((([e,t])=>x().createElement("li",{key:e,className:"json-schema-2020-12-property"},x().createElement(p,{name:e,schema:t}))))))))},keywords_$comment=({schema:e})=>e?.$comment?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--$comment"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary"},"$comment"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary"},e.$comment)):null,keywords_AllOf=({schema:e})=>{const t=e?.allOf||[],r=useFn(),a=useIsExpanded(),n=useIsExpandedDeeply(),[s,o]=(0,C.useState)(a||n),[l,c]=(0,C.useState)(!1),i=useComponent("Accordion"),p=useComponent("ExpandDeepButton"),m=useComponent("JSONSchema"),u=useComponent("KeywordType"),d=(0,C.useCallback)((()=>{o((e=>!e))}),[]),h=(0,C.useCallback)(((e,t)=>{o(t),c(t)}),[]);return Array.isArray(t)&&0!==t.length?x().createElement(Ws.Provider,{value:l},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--allOf"},x().createElement(i,{expanded:s,onChange:d},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"All of")),x().createElement(p,{expanded:s,onClick:h}),x().createElement(u,{schema:{allOf:t}}),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!s})},s&&x().createElement(x().Fragment,null,t.map(((e,t)=>x().createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},x().createElement(m,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null},keywords_AnyOf=({schema:e})=>{const t=e?.anyOf||[],r=useFn(),a=useIsExpanded(),n=useIsExpandedDeeply(),[s,o]=(0,C.useState)(a||n),[l,c]=(0,C.useState)(!1),i=useComponent("Accordion"),p=useComponent("ExpandDeepButton"),m=useComponent("JSONSchema"),u=useComponent("KeywordType"),d=(0,C.useCallback)((()=>{o((e=>!e))}),[]),h=(0,C.useCallback)(((e,t)=>{o(t),c(t)}),[]);return Array.isArray(t)&&0!==t.length?x().createElement(Ws.Provider,{value:l},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--anyOf"},x().createElement(i,{expanded:s,onChange:d},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Any of")),x().createElement(p,{expanded:s,onClick:h}),x().createElement(u,{schema:{anyOf:t}}),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!s})},s&&x().createElement(x().Fragment,null,t.map(((e,t)=>x().createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},x().createElement(m,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null},keywords_OneOf=({schema:e})=>{const t=e?.oneOf||[],r=useFn(),a=useIsExpanded(),n=useIsExpandedDeeply(),[s,o]=(0,C.useState)(a||n),[l,c]=(0,C.useState)(!1),i=useComponent("Accordion"),p=useComponent("ExpandDeepButton"),m=useComponent("JSONSchema"),u=useComponent("KeywordType"),d=(0,C.useCallback)((()=>{o((e=>!e))}),[]),h=(0,C.useCallback)(((e,t)=>{o(t),c(t)}),[]);return Array.isArray(t)&&0!==t.length?x().createElement(Ws.Provider,{value:l},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--oneOf"},x().createElement(i,{expanded:s,onChange:d},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"One of")),x().createElement(p,{expanded:s,onClick:h}),x().createElement(u,{schema:{oneOf:t}}),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!s})},s&&x().createElement(x().Fragment,null,t.map(((e,t)=>x().createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},x().createElement(m,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null},keywords_Not=({schema:e})=>{const t=useFn(),r=useComponent("JSONSchema");if(!t.hasKeyword(e,"not"))return null;const a=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Not");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--not"},x().createElement(r,{name:a,schema:e.not}))},keywords_If=({schema:e})=>{const t=useFn(),r=useComponent("JSONSchema");if(!t.hasKeyword(e,"if"))return null;const a=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"If");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--if"},x().createElement(r,{name:a,schema:e.if}))},keywords_Then=({schema:e})=>{const t=useFn(),r=useComponent("JSONSchema");if(!t.hasKeyword(e,"then"))return null;const a=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Then");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--then"},x().createElement(r,{name:a,schema:e.then}))},keywords_Else=({schema:e})=>{const t=useFn(),r=useComponent("JSONSchema");if(!t.hasKeyword(e,"else"))return null;const a=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Else");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--if"},x().createElement(r,{name:a,schema:e.else}))},keywords_DependentSchemas=({schema:e})=>{const t=e?.dependentSchemas||[],r=useIsExpanded(),a=useIsExpandedDeeply(),[n,s]=(0,C.useState)(r||a),[o,l]=(0,C.useState)(!1),c=useComponent("Accordion"),i=useComponent("ExpandDeepButton"),p=useComponent("JSONSchema"),m=(0,C.useCallback)((()=>{s((e=>!e))}),[]),u=(0,C.useCallback)(((e,t)=>{s(t),l(t)}),[]);return"object"!=typeof t||0===Object.keys(t).length?null:x().createElement(Ws.Provider,{value:o},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentSchemas"},x().createElement(c,{expanded:n,onChange:m},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Dependent schemas")),x().createElement(i,{expanded:n,onClick:u}),x().createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"object"),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!n})},n&&x().createElement(x().Fragment,null,Object.entries(t).map((([e,t])=>x().createElement("li",{key:e,className:"json-schema-2020-12-property"},x().createElement(p,{name:e,schema:t}))))))))},keywords_PrefixItems=({schema:e})=>{const t=e?.prefixItems||[],r=useFn(),a=useIsExpanded(),n=useIsExpandedDeeply(),[s,o]=(0,C.useState)(a||n),[l,c]=(0,C.useState)(!1),i=useComponent("Accordion"),p=useComponent("ExpandDeepButton"),m=useComponent("JSONSchema"),u=useComponent("KeywordType"),d=(0,C.useCallback)((()=>{o((e=>!e))}),[]),h=(0,C.useCallback)(((e,t)=>{o(t),c(t)}),[]);return Array.isArray(t)&&0!==t.length?x().createElement(Ws.Provider,{value:l},x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--prefixItems"},x().createElement(i,{expanded:s,onChange:d},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Prefix items")),x().createElement(p,{expanded:s,onClick:h}),x().createElement(u,{schema:{prefixItems:t}}),x().createElement("ul",{className:ut()("json-schema-2020-12-keyword__children",{"json-schema-2020-12-keyword__children--collapsed":!s})},s&&x().createElement(x().Fragment,null,t.map(((e,t)=>x().createElement("li",{key:`#${t}`,className:"json-schema-2020-12-property"},x().createElement(m,{name:`#${t} ${r.getTitle(e)}`,schema:e})))))))):null},keywords_Items=({schema:e})=>{const t=useFn(),r=useComponent("JSONSchema");if(!t.hasKeyword(e,"items"))return null;const a=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Items");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--items"},x().createElement(r,{name:a,schema:e.items}))},keywords_Contains=({schema:e})=>{const t=useFn(),r=useComponent("JSONSchema");if(!t.hasKeyword(e,"contains"))return null;const a=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Contains");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--contains"},x().createElement(r,{name:a,schema:e.contains}))},keywords_Properties_Properties=({schema:e})=>{const t=useFn(),r=e?.properties||{},a=Array.isArray(e?.required)?e.required:[],n=useComponent("JSONSchema");return 0===Object.keys(r).length?null:x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties"},x().createElement("ul",null,Object.entries(r).map((([r,s])=>{const o=a.includes(r),l=t.getDependentRequired(r,e);return x().createElement("li",{key:r,className:ut()("json-schema-2020-12-property",{"json-schema-2020-12-property--required":o})},x().createElement(n,{name:r,schema:s,dependentRequired:l}))}))))},PatternProperties_PatternProperties=({schema:e})=>{const t=e?.patternProperties||{},r=useComponent("JSONSchema");return 0===Object.keys(t).length?null:x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--patternProperties"},x().createElement("ul",null,Object.entries(t).map((([e,t])=>x().createElement("li",{key:e,className:"json-schema-2020-12-property"},x().createElement(r,{name:e,schema:t}))))))},keywords_AdditionalProperties=({schema:e})=>{const t=useFn(),{additionalProperties:r}=e,a=useComponent("JSONSchema");if(!t.hasKeyword(e,"additionalProperties"))return null;const n=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Additional properties");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--additionalProperties"},!0===r?x().createElement(x().Fragment,null,n,x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"allowed")):!1===r?x().createElement(x().Fragment,null,n,x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},"forbidden")):x().createElement(a,{name:n,schema:r}))},keywords_PropertyNames=({schema:e})=>{const t=useFn(),{propertyNames:r}=e,a=useComponent("JSONSchema"),n=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Property names");return t.hasKeyword(e,"propertyNames")?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--propertyNames"},x().createElement(a,{name:n,schema:r})):null},keywords_UnevaluatedItems=({schema:e})=>{const t=useFn(),{unevaluatedItems:r}=e,a=useComponent("JSONSchema");if(!t.hasKeyword(e,"unevaluatedItems"))return null;const n=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Unevaluated items");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedItems"},x().createElement(a,{name:n,schema:r}))},keywords_UnevaluatedProperties=({schema:e})=>{const t=useFn(),{unevaluatedProperties:r}=e,a=useComponent("JSONSchema");if(!t.hasKeyword(e,"unevaluatedProperties"))return null;const n=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Unevaluated properties");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedProperties"},x().createElement(a,{name:n,schema:r}))},keywords_Type=({schema:e,isCircular:t=!1})=>{const r=useFn().getType(e),a=t?" [circular]":"";return x().createElement("strong",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary"},`${r}${a}`)},Enum_Enum=({schema:e})=>{const t=useFn();return Array.isArray(e?.enum)?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--enum"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Allowed values"),x().createElement("ul",null,e.enum.map((e=>{const r=t.stringify(e);return x().createElement("li",{key:r},x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},r))})))):null},keywords_Const=({schema:e})=>{const t=useFn();return t.hasKeyword(e,"const")?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--const"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Const"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},t.stringify(e.const))):null},Constraint=({constraint:e})=>x().createElement("span",{className:`json-schema-2020-12__constraint json-schema-2020-12__constraint--${e.scope}`},e.value),Ys=x().memo(Constraint),DependentRequired_DependentRequired=({dependentRequired:e})=>0===e.length?null:x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentRequired"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Required when defined"),x().createElement("ul",null,e.map((e=>x().createElement("li",{key:e},x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--warning"},e)))))),keywords_ContentSchema=({schema:e})=>{const t=useFn(),r=useComponent("JSONSchema");if(!t.hasKeyword(e,"contentSchema"))return null;const a=x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Content schema");return x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--contentSchema"},x().createElement(r,{name:a,schema:e.contentSchema}))},Title_Title=({title:e="",schema:t})=>{const r=useFn(),a=e||r.getTitle(t);return a?x().createElement("div",{className:"json-schema-2020-12__title"},a):null},keywords_Description_Description=({schema:e})=>e?.description?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--description"},x().createElement("div",{className:"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary"},e.description)):null,keywords_Default=({schema:e})=>{const t=useFn();return t.hasKeyword(e,"default")?x().createElement("div",{className:"json-schema-2020-12-keyword json-schema-2020-12-keyword--default"},x().createElement("span",{className:"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary"},"Default"),x().createElement("span",{className:"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--const"},t.stringify(e.default))):null},keywords_Deprecated=({schema:e})=>!0!==e?.deprecated?null:x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--warning"},"deprecated"),keywords_ReadOnly=({schema:e})=>!0!==e?.readOnly?null:x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"read-only"),keywords_WriteOnly=({schema:e})=>!0!==e?.writeOnly?null:x().createElement("span",{className:"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted"},"write-only"),Accordion_Accordion=({expanded:e=!1,children:t,onChange:r})=>{const a=useComponent("ChevronRightIcon"),n=(0,C.useCallback)((t=>{r(t,!e)}),[e,r]);return x().createElement("button",{type:"button",className:"json-schema-2020-12-accordion",onClick:n},x().createElement("div",{className:"json-schema-2020-12-accordion__children"},t),x().createElement("span",{className:ut()("json-schema-2020-12-accordion__icon",{"json-schema-2020-12-accordion__icon--expanded":e,"json-schema-2020-12-accordion__icon--collapsed":!e})},x().createElement(a,null)))},ExpandDeepButton_ExpandDeepButton=({expanded:e,onClick:t})=>{const r=(0,C.useCallback)((r=>{t(r,!e)}),[e,t]);return x().createElement("button",{type:"button",className:"json-schema-2020-12-expand-deep-button",onClick:r},e?"Collapse all":"Expand all")},icons_ChevronRight=()=>x().createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},x().createElement("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})),fn_upperFirst=e=>"string"==typeof e?`${e.charAt(0).toUpperCase()}${e.slice(1)}`:e,getTitle=(e,{lookup:t="extended"}={})=>{const r=useFn();if(null!=e?.title)return r.upperFirst(String(e.title));if("extended"===t){if(null!=e?.$anchor)return r.upperFirst(String(e.$anchor));if(null!=e?.$id)return String(e.$id)}return""},getType=(e,t=new WeakSet)=>{const r=useFn();if(null==e)return"any";if(r.isBooleanJSONSchema(e))return e?"any":"never";if("object"!=typeof e)return"any";if(t.has(e))return"any";t.add(e);const{type:a,prefixItems:n,items:s}=e,getArrayType=()=>{if(Array.isArray(n)){const e=n.map((e=>getType(e,t))),r=s?getType(s,t):"any";return`array<[${e.join(", ")}], ${r}>`}if(s){return`array<${getType(s,t)}>`}return"array"};if(e.not&&"any"===getType(e.not))return"never";const handleCombiningKeywords=(r,a)=>{if(Array.isArray(e[r])){return`(${e[r].map((e=>getType(e,t))).join(a)})`}return null},o=[Array.isArray(a)?a.map((e=>"array"===e?getArrayType():e)).join(" | "):"array"===a?getArrayType():["null","boolean","object","array","number","integer","string"].includes(a)?a:(()=>{if(Object.hasOwn(e,"prefixItems")||Object.hasOwn(e,"items")||Object.hasOwn(e,"contains"))return getArrayType();if(Object.hasOwn(e,"properties")||Object.hasOwn(e,"additionalProperties")||Object.hasOwn(e,"patternProperties"))return"object";if(["int32","int64"].includes(e.format))return"integer";if(["float","double"].includes(e.format))return"number";if(Object.hasOwn(e,"minimum")||Object.hasOwn(e,"maximum")||Object.hasOwn(e,"exclusiveMinimum")||Object.hasOwn(e,"exclusiveMaximum")||Object.hasOwn(e,"multipleOf"))return"number | integer";if(Object.hasOwn(e,"pattern")||Object.hasOwn(e,"format")||Object.hasOwn(e,"minLength")||Object.hasOwn(e,"maxLength"))return"string";if(void 0!==e.const){if(null===e.const)return"null";if("boolean"==typeof e.const)return"boolean";if("number"==typeof e.const)return Number.isInteger(e.const)?"integer":"number";if("string"==typeof e.const)return"string";if(Array.isArray(e.const))return"array";if("object"==typeof e.const)return"object"}return null})(),handleCombiningKeywords("oneOf"," | "),handleCombiningKeywords("anyOf"," | "),handleCombiningKeywords("allOf"," & ")].filter(Boolean).join(" | ");return t.delete(e),o||"any"},isBooleanJSONSchema=e=>"boolean"==typeof e,hasKeyword=(e,t)=>null!==e&&"object"==typeof e&&Object.hasOwn(e,t),isExpandable=e=>{const t=useFn();return e?.$schema||e?.$vocabulary||e?.$id||e?.$anchor||e?.$dynamicAnchor||e?.$ref||e?.$dynamicRef||e?.$defs||e?.$comment||e?.allOf||e?.anyOf||e?.oneOf||t.hasKeyword(e,"not")||t.hasKeyword(e,"if")||t.hasKeyword(e,"then")||t.hasKeyword(e,"else")||e?.dependentSchemas||e?.prefixItems||t.hasKeyword(e,"items")||t.hasKeyword(e,"contains")||e?.properties||e?.patternProperties||t.hasKeyword(e,"additionalProperties")||t.hasKeyword(e,"propertyNames")||t.hasKeyword(e,"unevaluatedItems")||t.hasKeyword(e,"unevaluatedProperties")||e?.description||e?.enum||t.hasKeyword(e,"const")||t.hasKeyword(e,"contentSchema")||t.hasKeyword(e,"default")},fn_stringify=e=>null===e||["number","bigint","boolean"].includes(typeof e)?String(e):Array.isArray(e)?`[${e.map(fn_stringify).join(", ")}]`:JSON.stringify(e),stringifyConstraintRange=(e,t,r)=>{const a="number"==typeof t,n="number"==typeof r;return a&&n?t===r?`${t} ${e}`:`[${t}, ${r}] ${e}`:a?`>= ${t} ${e}`:n?`<= ${r} ${e}`:null},stringifyConstraints=e=>{const t=[],r=(e=>{if("number"!=typeof e?.multipleOf)return null;if(e.multipleOf<=0)return null;if(1===e.multipleOf)return null;const{multipleOf:t}=e;if(Number.isInteger(t))return`multiple of ${t}`;const r=10**t.toString().split(".")[1].length;return`multiple of ${t*r}/${r}`})(e);null!==r&&t.push({scope:"number",value:r});const a=(e=>{const t=e?.minimum,r=e?.maximum,a=e?.exclusiveMinimum,n=e?.exclusiveMaximum,s="number"==typeof t,o="number"==typeof r,l="number"==typeof a,c="number"==typeof n,i=l&&(!s||tn);if((s||l)&&(o||c))return`${i?"(":"["}${i?a:t}, ${p?n:r}${p?")":"]"}`;if(s||l)return`${i?">":"≥"} ${i?a:t}`;if(o||c)return`${p?"<":"≤"} ${p?n:r}`;return null})(e);null!==a&&t.push({scope:"number",value:a}),e?.format&&t.push({scope:"string",value:e.format});const n=stringifyConstraintRange("characters",e?.minLength,e?.maxLength);null!==n&&t.push({scope:"string",value:n}),e?.pattern&&t.push({scope:"string",value:`matches ${e?.pattern}`}),e?.contentMediaType&&t.push({scope:"string",value:`media type: ${e.contentMediaType}`}),e?.contentEncoding&&t.push({scope:"string",value:`encoding: ${e.contentEncoding}`});const s=stringifyConstraintRange(e?.hasUniqueItems?"unique items":"items",e?.minItems,e?.maxItems);null!==s&&t.push({scope:"array",value:s});const o=stringifyConstraintRange("contained items",e?.minContains,e?.maxContains);null!==o&&t.push({scope:"array",value:o});const l=stringifyConstraintRange("properties",e?.minProperties,e?.maxProperties);return null!==l&&t.push({scope:"object",value:l}),t},getDependentRequired=(e,t)=>t?.dependentRequired?Array.from(Object.entries(t.dependentRequired).reduce(((t,[r,a])=>Array.isArray(a)&&a.includes(e)?(t.add(r),t):t),new Set)):[],withJSONSchemaContext=(e,t={})=>{const r={components:{JSONSchema:Gs,Keyword$schema:keywords_$schema,Keyword$vocabulary:$vocabulary_$vocabulary,Keyword$id:keywords_$id,Keyword$anchor:keywords_$anchor,Keyword$dynamicAnchor:keywords_$dynamicAnchor,Keyword$ref:keywords_$ref,Keyword$dynamicRef:keywords_$dynamicRef,Keyword$defs:keywords_$defs,Keyword$comment:keywords_$comment,KeywordAllOf:keywords_AllOf,KeywordAnyOf:keywords_AnyOf,KeywordOneOf:keywords_OneOf,KeywordNot:keywords_Not,KeywordIf:keywords_If,KeywordThen:keywords_Then,KeywordElse:keywords_Else,KeywordDependentSchemas:keywords_DependentSchemas,KeywordPrefixItems:keywords_PrefixItems,KeywordItems:keywords_Items,KeywordContains:keywords_Contains,KeywordProperties:keywords_Properties_Properties,KeywordPatternProperties:PatternProperties_PatternProperties,KeywordAdditionalProperties:keywords_AdditionalProperties,KeywordPropertyNames:keywords_PropertyNames,KeywordUnevaluatedItems:keywords_UnevaluatedItems,KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,KeywordType:keywords_Type,KeywordEnum:Enum_Enum,KeywordConst:keywords_Const,KeywordConstraint:Ys,KeywordDependentRequired:DependentRequired_DependentRequired,KeywordContentSchema:keywords_ContentSchema,KeywordTitle:Title_Title,KeywordDescription:keywords_Description_Description,KeywordDefault:keywords_Default,KeywordDeprecated:keywords_Deprecated,KeywordReadOnly:keywords_ReadOnly,KeywordWriteOnly:keywords_WriteOnly,Accordion:Accordion_Accordion,ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,ChevronRightIcon:icons_ChevronRight,...t.components},config:{default$schema:"https://json-schema.org/draft/2020-12/schema",defaultExpandedLevels:0,...t.config},fn:{upperFirst:fn_upperFirst,getTitle,getType,isBooleanJSONSchema,hasKeyword,isExpandable,stringify:fn_stringify,stringifyConstraints,getDependentRequired,...t.fn}},HOC=t=>x().createElement(Bs.Provider,{value:r},x().createElement(e,t));return HOC.contexts={JSONSchemaContext:Bs},HOC.displayName=e.displayName,HOC},json_schema_2020_12=()=>({components:{JSONSchema202012:Gs,JSONSchema202012Keyword$schema:keywords_$schema,JSONSchema202012Keyword$vocabulary:$vocabulary_$vocabulary,JSONSchema202012Keyword$id:keywords_$id,JSONSchema202012Keyword$anchor:keywords_$anchor,JSONSchema202012Keyword$dynamicAnchor:keywords_$dynamicAnchor,JSONSchema202012Keyword$ref:keywords_$ref,JSONSchema202012Keyword$dynamicRef:keywords_$dynamicRef,JSONSchema202012Keyword$defs:keywords_$defs,JSONSchema202012Keyword$comment:keywords_$comment,JSONSchema202012KeywordAllOf:keywords_AllOf,JSONSchema202012KeywordAnyOf:keywords_AnyOf,JSONSchema202012KeywordOneOf:keywords_OneOf,JSONSchema202012KeywordNot:keywords_Not,JSONSchema202012KeywordIf:keywords_If,JSONSchema202012KeywordThen:keywords_Then,JSONSchema202012KeywordElse:keywords_Else,JSONSchema202012KeywordDependentSchemas:keywords_DependentSchemas,JSONSchema202012KeywordPrefixItems:keywords_PrefixItems,JSONSchema202012KeywordItems:keywords_Items,JSONSchema202012KeywordContains:keywords_Contains,JSONSchema202012KeywordProperties:keywords_Properties_Properties,JSONSchema202012KeywordPatternProperties:PatternProperties_PatternProperties,JSONSchema202012KeywordAdditionalProperties:keywords_AdditionalProperties,JSONSchema202012KeywordPropertyNames:keywords_PropertyNames,JSONSchema202012KeywordUnevaluatedItems:keywords_UnevaluatedItems,JSONSchema202012KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,JSONSchema202012KeywordType:keywords_Type,JSONSchema202012KeywordEnum:Enum_Enum,JSONSchema202012KeywordConst:keywords_Const,JSONSchema202012KeywordConstraint:Ys,JSONSchema202012KeywordDependentRequired:DependentRequired_DependentRequired,JSONSchema202012KeywordContentSchema:keywords_ContentSchema,JSONSchema202012KeywordTitle:Title_Title,JSONSchema202012KeywordDescription:keywords_Description_Description,JSONSchema202012KeywordDefault:keywords_Default,JSONSchema202012KeywordDeprecated:keywords_Deprecated,JSONSchema202012KeywordReadOnly:keywords_ReadOnly,JSONSchema202012KeywordWriteOnly:keywords_WriteOnly,JSONSchema202012Accordion:Accordion_Accordion,JSONSchema202012ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,JSONSchema202012ChevronRightIcon:icons_ChevronRight,withJSONSchema202012Context:withJSONSchemaContext,JSONSchema202012DeepExpansionContext:()=>Ws},fn:{upperFirst:fn_upperFirst,jsonSchema202012:{isExpandable,hasKeyword,useFn,useConfig,useComponent,useIsExpandedDeeply}}}),Qs=require("lodash/isPlainObject");var Zs=__webpack_require__.n(Qs);const array=(e,{sample:t})=>((e,t={})=>{const{minItems:r,maxItems:a,uniqueItems:n}=t,{contains:s,minContains:o,maxContains:l}=t;let c=[...e];if(null!=s&&"object"==typeof s){if(Number.isInteger(o)&&o>1){const e=c.at(0);for(let t=1;t0&&(c=e.slice(0,a)),Number.isInteger(r)&&r>0)for(let e=0;c.length{throw new Error("Not implemented")},bytes=e=>ae()(e),pick=e=>e.at(0),predicates_isBooleanJSONSchema=e=>"boolean"==typeof e,isJSONSchemaObject=e=>Zs()(e),isJSONSchema=e=>predicates_isBooleanJSONSchema(e)||isJSONSchemaObject(e);const eo=class Registry{data={};register(e,t){this.data[e]=t}unregister(e){void 0===e?this.data={}:delete this.data[e]}get(e){return this.data[e]}},int32=()=>2**30>>>0,int64=()=>2**53-1,generators_float=()=>.1,generators_double=()=>.1,email=()=>"user@example.com",idn_email=()=>"실례@example.com",hostname=()=>"example.com",idn_hostname=()=>"실례.com",ipv4=()=>"198.51.100.42",ipv6=()=>"2001:0db8:5b96:0000:0000:426f:8e17:642a",uri=()=>"https://example.com/",uri_reference=()=>"path/index.html",iri=()=>"https://실례.com/",iri_reference=()=>"path/실례.html",uuid=()=>"3fa85f64-5717-4562-b3fc-2c963f66afa6",uri_template=()=>"https://example.com/dictionary/{term:1}/{term}",json_pointer=()=>"/a/b/c",relative_json_pointer=()=>"1/0",date_time=()=>(new Date).toISOString(),date=()=>(new Date).toISOString().substring(0,10),time=()=>(new Date).toISOString().substring(11),duration=()=>"P3D",generators_password=()=>"********",regex=()=>"^[a-z]+$";const to=new class FormatRegistry extends eo{#e={int32,int64,float:generators_float,double:generators_double,email,"idn-email":idn_email,hostname,"idn-hostname":idn_hostname,ipv4,ipv6,uri,"uri-reference":uri_reference,iri,"iri-reference":iri_reference,uuid,"uri-template":uri_template,"json-pointer":json_pointer,"relative-json-pointer":relative_json_pointer,"date-time":date_time,date,time,duration,password:generators_password,regex};data={...this.#e};get defaults(){return{...this.#e}}},formatAPI=(e,t)=>"function"==typeof t?to.register(e,t):null===t?to.unregister(e):to.get(e);formatAPI.getDefaults=()=>to.defaults;const ro=formatAPI;var ao=__webpack_require__(158).Buffer;const _7bit=e=>ao.from(e).toString("ascii");var no=__webpack_require__(158).Buffer;const _8bit=e=>no.from(e).toString("utf8");var so=__webpack_require__(158).Buffer;const binary=e=>so.from(e).toString("binary"),quoted_printable=e=>{let t="";for(let r=0;r=33&&a<=60||a>=62&&a<=126||9===a||32===a)t+=e.charAt(r);else if(13===a||10===a)t+="\r\n";else if(a>126){const a=unescape(encodeURIComponent(e.charAt(r)));for(let e=0;eoo.from(e).toString("hex");var lo=__webpack_require__(158).Buffer;const base32=e=>{const t=lo.from(e).toString("utf8"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let a=0,n="",s=0,o=0;for(let e=0;e=5;)n+=r.charAt(s>>>o-5&31),o-=5;o>0&&(n+=r.charAt(s<<5-o&31),a=(8-8*t.length%5)%5);for(let e=0;eco.from(e).toString("base64");var io=__webpack_require__(158).Buffer;const base64url=e=>io.from(e).toString("base64url");const po=new class EncoderRegistry extends eo{#e={"7bit":_7bit,"8bit":_8bit,binary,"quoted-printable":quoted_printable,base16,base32,base64,base64url};data={...this.#e};get defaults(){return{...this.#e}}},encoderAPI=(e,t)=>"function"==typeof t?po.register(e,t):null===t?po.unregister(e):po.get(e);encoderAPI.getDefaults=()=>po.defaults;const mo=encoderAPI,uo={"text/plain":()=>"string","text/css":()=>".selector { border: 1px solid red }","text/csv":()=>"value1,value2,value3","text/html":()=>"

      content

      ","text/calendar":()=>"BEGIN:VCALENDAR","text/javascript":()=>"console.dir('Hello world!');","text/xml":()=>'John Doe',"text/*":()=>"string"},ho={"image/*":()=>bytes(25).toString("binary")},go={"audio/*":()=>bytes(25).toString("binary")},yo={"video/*":()=>bytes(25).toString("binary")},fo={"application/json":()=>'{"key":"value"}',"application/ld+json":()=>'{"name": "John Doe"}',"application/x-httpd-php":()=>"Hello World!

      '; ?>","application/rtf":()=>String.raw`{\rtf1\adeflang1025\ansi\ansicpg1252\uc1`,"application/x-sh":()=>'echo "Hello World!"',"application/xhtml+xml":()=>"

      content

      ","application/*":()=>bytes(25).toString("binary")};const So=new class MediaTypeRegistry extends eo{#e={...uo,...ho,...go,...yo,...fo};data={...this.#e};get defaults(){return{...this.#e}}},mediaTypeAPI=(e,t)=>{if("function"==typeof t)return So.register(e,t);if(null===t)return So.unregister(e);const r=e.split(";").at(0),a=`${r.split("/").at(0)}/*`;return So.get(e)||So.get(r)||So.get(a)};mediaTypeAPI.getDefaults=()=>So.defaults;const Eo=mediaTypeAPI,applyStringConstraints=(e,t={})=>{const{maxLength:r,minLength:a}=t;let n=e;if(Number.isInteger(r)&&r>0&&(n=n.slice(0,r)),Number.isInteger(a)&&a>0){let e=0;for(;n.length{const{contentEncoding:r,contentMediaType:a,contentSchema:n}=e,{pattern:s,format:o}=e,l=mo(r)||ma();let c;return c="string"==typeof s?applyStringConstraints((e=>{try{return new(Ot())(e).gen()}catch{return"string"}})(s),e):"string"==typeof o?(e=>{const{format:t}=e,r=ro(t);return"function"==typeof r?r(e):"string"})(e):isJSONSchema(n)&&"string"==typeof a&&void 0!==t?Array.isArray(t)||"object"==typeof t?JSON.stringify(t):applyStringConstraints(String(t),e):"string"==typeof a?(e=>{const{contentMediaType:t}=e,r=Eo(t);return"function"==typeof r?r(e):"string"})(e):applyStringConstraints("string",e),l(c)},applyNumberConstraints=(e,t={})=>{const{minimum:r,maximum:a,exclusiveMinimum:n,exclusiveMaximum:s}=t,{multipleOf:o}=t,l=Number.isInteger(e)?1:Number.EPSILON;let c="number"==typeof r?r:null,i="number"==typeof a?a:null,p=e;if("number"==typeof n&&(c=null!==c?Math.max(c,n+l):n+l),"number"==typeof s&&(i=null!==i?Math.min(i,s-l):s-l),p=c>i&&e||c||i||p,"number"==typeof o&&o>0){const e=p%o;p=0===e?p:p+o-e}return p},types_number=e=>{const{format:t}=e;let r;return r="string"==typeof t?(e=>{const{format:t}=e,r=ro(t);return"function"==typeof r?r(e):0})(e):0,applyNumberConstraints(r,e)},types_integer=e=>{const{format:t}=e;let r;return r="string"==typeof t?(e=>{const{format:t}=e,r=ro(t);if("function"==typeof r)return r(e);switch(t){case"int32":return int32();case"int64":return int64()}return 0})(e):0,applyNumberConstraints(r,e)},types_boolean=e=>"boolean"!=typeof e.default||e.default,_o=new Proxy({array,object,string:types_string,number:types_number,integer:types_integer,boolean:types_boolean,null:()=>null},{get:(e,t)=>"string"==typeof t&&Object.hasOwn(e,t)?e[t]:()=>`Unknown Type: ${t}`}),vo=["array","object","number","integer","string","boolean","null"],hasExample=e=>{if(!isJSONSchemaObject(e))return!1;const{examples:t,example:r,default:a}=e;return!!(Array.isArray(t)&&t.length>=1)||(void 0!==a||void 0!==r)},extractExample=e=>{if(!isJSONSchemaObject(e))return null;const{examples:t,example:r,default:a}=e;return Array.isArray(t)&&t.length>=1?t.at(0):void 0!==a?a:void 0!==r?r:void 0},wo={array:["items","prefixItems","contains","maxContains","minContains","maxItems","minItems","uniqueItems","unevaluatedItems"],object:["properties","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","required","dependentSchemas","dependentRequired","unevaluatedProperties"],string:["pattern","format","minLength","maxLength","contentEncoding","contentMediaType","contentSchema"],integer:["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf"]};wo.number=wo.integer;const bo="string",inferTypeFromValue=e=>void 0===e?null:null===e?"null":Array.isArray(e)?"array":Number.isInteger(e)?"integer":typeof e,foldType=e=>{if(Array.isArray(e)&&e.length>=1){if(e.includes("array"))return"array";if(e.includes("object"))return"object";{const t=pick(e);if(vo.includes(t))return t}}return vo.includes(e)?e:null},inferType=(e,t=new WeakSet)=>{if(!isJSONSchemaObject(e))return bo;if(t.has(e))return bo;t.add(e);let{type:r,const:a}=e;if(r=foldType(r),"string"!=typeof r){const t=Object.keys(wo);e:for(let a=0;a{if(Array.isArray(e[r])){const a=e[r].map((e=>inferType(e,t)));return foldType(a)}return null},a=combineTypes("allOf"),n=combineTypes("anyOf"),s=combineTypes("oneOf"),o=e.not?inferType(e.not,t):null;(a||n||s||o)&&(r=foldType([a,n,s,o].filter(Boolean)))}if("string"!=typeof r&&hasExample(e)){const t=extractExample(e),a=inferTypeFromValue(t);r="string"==typeof a?a:r}return t.delete(e),r||bo},type_getType=e=>inferType(e),typeCast=e=>predicates_isBooleanJSONSchema(e)?(e=>!1===e?{not:{}}:{})(e):isJSONSchemaObject(e)?e:{},merge=(e,t,r={})=>{if(predicates_isBooleanJSONSchema(e)&&!0===e)return!0;if(predicates_isBooleanJSONSchema(e)&&!1===e)return!1;if(predicates_isBooleanJSONSchema(t)&&!0===t)return!0;if(predicates_isBooleanJSONSchema(t)&&!1===t)return!1;if(!isJSONSchema(e))return t;if(!isJSONSchema(t))return e;const a={...t,...e};if(t.type&&e.type&&Array.isArray(t.type)&&"string"==typeof t.type){const r=normalizeArray(t.type).concat(e.type);a.type=Array.from(new Set(r))}if(Array.isArray(t.required)&&Array.isArray(e.required)&&(a.required=[...new Set([...e.required,...t.required])]),t.properties&&e.properties){const n=new Set([...Object.keys(t.properties),...Object.keys(e.properties)]);a.properties={};for(const s of n){const n=t.properties[s]||{},o=e.properties[s]||{};n.readOnly&&!r.includeReadOnly||n.writeOnly&&!r.includeWriteOnly?a.required=(a.required||[]).filter((e=>e!==s)):a.properties[s]=merge(o,n,r)}}return isJSONSchema(t.items)&&isJSONSchema(e.items)&&(a.items=merge(e.items,t.items,r)),isJSONSchema(t.contains)&&isJSONSchema(e.contains)&&(a.contains=merge(e.contains,t.contains,r)),isJSONSchema(t.contentSchema)&&isJSONSchema(e.contentSchema)&&(a.contentSchema=merge(e.contentSchema,t.contentSchema,r)),a},Co=merge,main_sampleFromSchemaGeneric=(e,t={},r=void 0,a=!1)=>{if(null==e&&void 0===r)return;"function"==typeof e?.toJS&&(e=e.toJS()),e=typeCast(e);let n=void 0!==r||hasExample(e);const s=!n&&Array.isArray(e.oneOf)&&e.oneOf.length>0,o=!n&&Array.isArray(e.anyOf)&&e.anyOf.length>0;if(!n&&(s||o)){const r=typeCast(pick(s?e.oneOf:e.anyOf));!(e=Co(e,r,t)).xml&&r.xml&&(e.xml=r.xml),hasExample(e)&&hasExample(r)&&(n=!0)}const l={};let{xml:c,properties:i,additionalProperties:p,items:m,contains:u}=e||{},d=type_getType(e),{includeReadOnly:h,includeWriteOnly:g}=t;c=c||{};let y,{name:f,prefix:S,namespace:E}=c,_={};if(Object.hasOwn(e,"type")||(e.type=d),a&&(f=f||"notagname",y=(S?`${S}:`:"")+f,E)){l[S?`xmlns:${S}`:"xmlns"]=E}a&&(_[y]=[]);const v=objectify(i);let w,b=0;const hasExceededMaxProperties=()=>Number.isInteger(e.maxProperties)&&e.maxProperties>0&&b>=e.maxProperties,canAddProperty=t=>!(Number.isInteger(e.maxProperties)&&e.maxProperties>0)||!hasExceededMaxProperties()&&(!(t=>!Array.isArray(e.required)||0===e.required.length||!e.required.includes(t))(t)||e.maxProperties-b-(()=>{if(!Array.isArray(e.required)||0===e.required.length)return 0;let t=0;return a?e.required.forEach((e=>t+=void 0===_[e]?0:1)):e.required.forEach((e=>{t+=void 0===_[y]?.find((t=>void 0!==t[e]))?0:1})),e.required.length-t})()>0);if(w=a?(r,n=void 0)=>{if(e&&v[r]){if(v[r].xml=v[r].xml||{},v[r].xml.attribute){const e=Array.isArray(v[r].enum)?pick(v[r].enum):void 0;if(hasExample(v[r]))l[v[r].xml.name||r]=extractExample(v[r]);else if(void 0!==e)l[v[r].xml.name||r]=e;else{const e=typeCast(v[r]),t=type_getType(e),a=v[r].xml.name||r;l[a]=_o[t](e)}return}v[r].xml.name=v[r].xml.name||r}else v[r]||!1===p||(v[r]={xml:{name:r}});let s=main_sampleFromSchemaGeneric(v[r],t,n,a);canAddProperty(r)&&(b++,Array.isArray(s)?_[y]=_[y].concat(s):_[y].push(s))}:(r,n)=>{if(canAddProperty(r)){if(Zs()(e.discriminator?.mapping)&&e.discriminator.propertyName===r&&"string"==typeof e.$$ref){for(const t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){_[r]=t;break}}else _[r]=main_sampleFromSchemaGeneric(v[r],t,n,a);b++}},n){let n;if(n=void 0!==r?r:extractExample(e),!a){if("number"==typeof n&&"string"===d)return`${n}`;if("string"!=typeof n||"string"===d)return n;try{return JSON.parse(n)}catch{return n}}if("array"===d){if(!Array.isArray(n)){if("string"==typeof n)return n;n=[n]}let r=[];return isJSONSchemaObject(m)&&(m.xml=m.xml||c||{},m.xml.name=m.xml.name||c.name,r=n.map((e=>main_sampleFromSchemaGeneric(m,t,e,a)))),isJSONSchemaObject(u)&&(u.xml=u.xml||c||{},u.xml.name=u.xml.name||c.name,r=[main_sampleFromSchemaGeneric(u,t,void 0,a),...r]),r=_o.array(e,{sample:r}),c.wrapped?(_[y]=r,kt()(l)||_[y].push({_attr:l})):_=r,_}if("object"===d){if("string"==typeof n)return n;for(const e in n)Object.hasOwn(n,e)&&(v[e]?.readOnly&&!h||v[e]?.writeOnly&&!g||(v[e]?.xml?.attribute?l[v[e].xml.name||e]=n[e]:w(e,n[e])));return kt()(l)||_[y].push({_attr:l}),_}return _[y]=kt()(l)?n:[{_attr:l},n],_}if("array"===d){let r=[];if(isJSONSchemaObject(u))if(a&&(u.xml=u.xml||e.xml||{},u.xml.name=u.xml.name||c.name),Array.isArray(u.anyOf)){const{anyOf:e,...n}=m;r.push(...u.anyOf.map((e=>main_sampleFromSchemaGeneric(Co(e,n,t),t,void 0,a))))}else if(Array.isArray(u.oneOf)){const{oneOf:e,...n}=m;r.push(...u.oneOf.map((e=>main_sampleFromSchemaGeneric(Co(e,n,t),t,void 0,a))))}else{if(!(!a||a&&c.wrapped))return main_sampleFromSchemaGeneric(u,t,void 0,a);r.push(main_sampleFromSchemaGeneric(u,t,void 0,a))}if(isJSONSchemaObject(m))if(a&&(m.xml=m.xml||e.xml||{},m.xml.name=m.xml.name||c.name),Array.isArray(m.anyOf)){const{anyOf:e,...n}=m;r.push(...m.anyOf.map((e=>main_sampleFromSchemaGeneric(Co(e,n,t),t,void 0,a))))}else if(Array.isArray(m.oneOf)){const{oneOf:e,...n}=m;r.push(...m.oneOf.map((e=>main_sampleFromSchemaGeneric(Co(e,n,t),t,void 0,a))))}else{if(!(!a||a&&c.wrapped))return main_sampleFromSchemaGeneric(m,t,void 0,a);r.push(main_sampleFromSchemaGeneric(m,t,void 0,a))}return r=_o.array(e,{sample:r}),a&&c.wrapped?(_[y]=r,kt()(l)||_[y].push({_attr:l}),_):r}if("object"===d){for(let e in v)Object.hasOwn(v,e)&&(v[e]?.deprecated||v[e]?.readOnly&&!h||v[e]?.writeOnly&&!g||w(e));if(a&&l&&_[y].push({_attr:l}),hasExceededMaxProperties())return _;if(predicates_isBooleanJSONSchema(p)&&p)a?_[y].push({additionalProp:"Anything can be here"}):_.additionalProp1={},b++;else if(isJSONSchemaObject(p)){const r=p,n=main_sampleFromSchemaGeneric(r,t,void 0,a);if(a&&"string"==typeof r?.xml?.name&&"notagname"!==r?.xml?.name)_[y].push(n);else{const t=Number.isInteger(e.minProperties)&&e.minProperties>0&&b{const a=main_sampleFromSchemaGeneric(e,t,r,!0);if(a)return"string"==typeof a?a:Ct()(a,{declaration:!0,indent:"\t"})},main_sampleFromSchema=(e,t,r)=>main_sampleFromSchemaGeneric(e,t,r,!1),main_resolver=(e,t,r)=>[e,JSON.stringify(t),JSON.stringify(r)],xo=utils_memoizeN(main_createXMLExample,main_resolver),Oo=utils_memoizeN(main_sampleFromSchema,main_resolver);const No=new class OptionRegistry extends eo{#e={};data={...this.#e};get defaults(){return{...this.#e}}},api_optionAPI=(e,t)=>(void 0!==t&&No.register(e,t),No.get(e)),ko=[{when:/json/,shouldStringifyTypes:["string"]}],Ao=["object"],fn_get_json_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.jsonSchema202012.memoizedSampleFromSchema(t,r,n),l=typeof o,c=ko.reduce(((e,t)=>t.when.test(a)?[...e,...t.shouldStringifyTypes]:e),Ao);return X()(c,(e=>e===l))?JSON.stringify(o,null,2):o},fn_get_yaml_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.jsonSchema202012.getJsonSampleSchema(t,r,a,n);let l;try{l=Me().dump(Me().load(o),{lineWidth:-1},{schema:Pe.JSON_SCHEMA}),"\n"===l[l.length-1]&&(l=l.slice(0,l.length-1))}catch(e){return console.error(e),"error: could not generate yaml example"}return l.replace(/\t/g," ")},fn_get_xml_sample_schema=e=>(t,r,a)=>{const{fn:n}=e();if(t&&!t.xml&&(t.xml={}),t&&!t.xml.name){if(!t.$$ref&&(t.type||t.items||t.properties||t.additionalProperties))return'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e';if(t.$$ref){let e=t.$$ref.match(/\S*\/(\S+)$/);t.xml.name=e[1]}}return n.jsonSchema202012.memoizedCreateXMLExample(t,r,a)},fn_get_sample_schema=e=>(t,r="",a={},n=void 0)=>{const{fn:s}=e();return"function"==typeof t?.toJS&&(t=t.toJS()),"function"==typeof n?.toJS&&(n=n.toJS()),/xml/.test(r)?s.jsonSchema202012.getXmlSampleSchema(t,a,n):/(yaml|yml)/.test(r)?s.jsonSchema202012.getYamlSampleSchema(t,a,r,n):s.jsonSchema202012.getJsonSampleSchema(t,a,r,n)},json_schema_2020_12_samples=({getSystem:e})=>{const t=fn_get_json_sample_schema(e),r=fn_get_yaml_sample_schema(e),a=fn_get_xml_sample_schema(e),n=fn_get_sample_schema(e);return{fn:{jsonSchema202012:{sampleFromSchema:main_sampleFromSchema,sampleFromSchemaGeneric:main_sampleFromSchemaGeneric,sampleOptionAPI:api_optionAPI,sampleEncoderAPI:mo,sampleFormatAPI:ro,sampleMediaTypeAPI:Eo,createXMLExample:main_createXMLExample,memoizedSampleFromSchema:Oo,memoizedCreateXMLExample:xo,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:a,getSampleSchema:n,mergeJsonSchema:Co}}}};function PresetApis(){return[base,oas3,json_schema_2020_12,json_schema_2020_12_samples,oas31]}const inline_plugin=e=>()=>({fn:e.fn,components:e.components}),factorization_system=e=>{const t=I()({layout:{layout:e.layout,filter:e.filter},spec:{spec:"",url:e.url},requestSnippets:e.requestSnippets},e.initialState);if(e.initialState)for(const[r,a]of Object.entries(e.initialState))void 0===a&&delete t[r];return{system:{configs:e.configs},plugins:e.presets,state:t}},query=()=>e=>{const t=e.queryConfigEnabled?(()=>{const e=new URLSearchParams(L.location.search);return Object.fromEntries(e)})():{};return Object.entries(t).reduce(((e,[t,r])=>("config"===t?e.configUrl=r:"urls.primaryName"===t?e[t]=r:e=br()(e,t,r),e)),{})},sources_url=({url:e,system:t})=>async r=>{if(!e)return{};if("function"!=typeof t.configsActions?.getConfigByUrl)return{};const a=(()=>{const e={};return e.promise=new Promise(((t,r)=>{e.resolve=t,e.reject=r})),e})();return t.configsActions.getConfigByUrl({url:e,loadRemoteConfig:!0,requestInterceptor:r.requestInterceptor,responseInterceptor:r.responseInterceptor},(e=>{a.resolve(e)})),a.promise},runtime=()=>()=>{const e={};return globalThis.location&&(e.oauth2RedirectUrl=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname.substring(0,globalThis.location.pathname.lastIndexOf("/"))}/oauth2-redirect.html`),e},Io=Object.freeze({dom_id:null,domNode:null,spec:{},url:"",urls:null,configUrl:null,layout:"BaseLayout",docExpansion:"list",maxDisplayedTags:-1,filter:!1,validatorUrl:"https://validator.swagger.io/validator",oauth2RedirectUrl:void 0,persistAuthorization:!1,configs:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:e=>(e.curlOptions=[],e),responseInterceptor:e=>e,showMutatedRequest:!0,defaultModelRendering:"example",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:!1,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:"cURL (bash)",syntax:"bash"},curl_powershell:{title:"cURL (PowerShell)",syntax:"powershell"},curl_cmd:{title:"cURL (CMD)",syntax:"bash"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:["get","put","post","delete","options","head","patch","trace"],queryConfigEnabled:!1,presets:[PresetApis],plugins:[],initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:"agate"},operationsSorter:null,tagsSorter:null,onComplete:null,modelPropertyMacro:null,parameterMacro:null}),qo=require("lodash/has");var jo=__webpack_require__.n(qo);const Po=require("lodash/fp/set");var Mo=__webpack_require__.n(Po);const type_casters_array=(e,t=[])=>Array.isArray(e)?e:t,type_casters_boolean=(e,t=!1)=>!0===e||"true"===e||1===e||"1"===e||!1!==e&&"false"!==e&&0!==e&&"0"!==e&&t,dom_node=e=>null===e||"null"===e?null:e,type_casters_filter=e=>{const t=String(e);return type_casters_boolean(e,t)},type_casters_function=(e,t)=>"function"==typeof e?e:t,nullable_array=e=>Array.isArray(e)?e:null,nullable_function=e=>"function"==typeof e?e:null,nullable_string=e=>null===e||"null"===e?null:String(e),type_casters_number=(e,t=-1)=>{const r=parseInt(e,10);return Number.isNaN(r)?t:r},type_casters_object=(e,t={})=>Zs()(e)?e:t,sorter=e=>"function"==typeof e||"string"==typeof e?e:null,type_casters_string=e=>String(e),syntax_highlight=(e,t)=>Zs()(e)?e:!1===e||"false"===e||0===e||"0"===e?{activated:!1}:t,undefined_string=e=>void 0===e||"undefined"===e?void 0:String(e),Ro={components:{typeCaster:type_casters_object},configs:{typeCaster:type_casters_object},configUrl:{typeCaster:nullable_string},deepLinking:{typeCaster:type_casters_boolean,defaultValue:Io.deepLinking},defaultModelExpandDepth:{typeCaster:type_casters_number,defaultValue:Io.defaultModelExpandDepth},defaultModelRendering:{typeCaster:type_casters_string},defaultModelsExpandDepth:{typeCaster:type_casters_number,defaultValue:Io.defaultModelsExpandDepth},displayOperationId:{typeCaster:type_casters_boolean,defaultValue:Io.displayOperationId},displayRequestDuration:{typeCaster:type_casters_boolean,defaultValue:Io.displayRequestDuration},docExpansion:{typeCaster:type_casters_string},dom_id:{typeCaster:nullable_string},domNode:{typeCaster:dom_node},filter:{typeCaster:type_casters_filter},fn:{typeCaster:type_casters_object},initialState:{typeCaster:type_casters_object},layout:{typeCaster:type_casters_string},maxDisplayedTags:{typeCaster:type_casters_number,defaultValue:Io.maxDisplayedTags},modelPropertyMacro:{typeCaster:nullable_function},oauth2RedirectUrl:{typeCaster:undefined_string},onComplete:{typeCaster:nullable_function},operationsSorter:{typeCaster:sorter},paramaterMacro:{typeCaster:nullable_function},persistAuthorization:{typeCaster:type_casters_boolean,defaultValue:Io.persistAuthorization},plugins:{typeCaster:type_casters_array,defaultValue:Io.plugins},presets:{typeCaster:type_casters_array,defaultValue:Io.presets},requestInterceptor:{typeCaster:type_casters_function,defaultValue:Io.requestInterceptor},requestSnippets:{typeCaster:type_casters_object,defaultValue:Io.requestSnippets},requestSnippetsEnabled:{typeCaster:type_casters_boolean,defaultValue:Io.requestSnippetsEnabled},responseInterceptor:{typeCaster:type_casters_function,defaultValue:Io.responseInterceptor},showCommonExtensions:{typeCaster:type_casters_boolean,defaultValue:Io.showCommonExtensions},showExtensions:{typeCaster:type_casters_boolean,defaultValue:Io.showExtensions},showMutatedRequest:{typeCaster:type_casters_boolean,defaultValue:Io.showMutatedRequest},spec:{typeCaster:type_casters_object,defaultValue:Io.spec},supportedSubmitMethods:{typeCaster:type_casters_array,defaultValue:Io.supportedSubmitMethods},syntaxHighlight:{typeCaster:syntax_highlight,defaultValue:Io.syntaxHighlight},"syntaxHighlight.activated":{typeCaster:type_casters_boolean,defaultValue:Io.syntaxHighlight.activated},"syntaxHighlight.theme":{typeCaster:type_casters_string},tagsSorter:{typeCaster:sorter},tryItOutEnabled:{typeCaster:type_casters_boolean,defaultValue:Io.tryItOutEnabled},url:{typeCaster:type_casters_string},urls:{typeCaster:nullable_array},"urls.primaryName":{typeCaster:type_casters_string},validatorUrl:{typeCaster:nullable_string},withCredentials:{typeCaster:type_casters_boolean,defaultValue:Io.withCredentials}},type_cast=e=>Object.entries(Ro).reduce(((e,[t,{typeCaster:r,defaultValue:a}])=>{if(jo()(e,t)){const n=r(He()(e,t),a);e=Mo()(t,n,e)}return e}),{...e}),config_merge=(e,...t)=>{let r=Symbol.for("domNode"),a=Symbol.for("primaryName");const n=[];for(const e of t){const t={...e};Object.hasOwn(t,"domNode")&&(r=t.domNode,delete t.domNode),Object.hasOwn(t,"urls.primaryName")?(a=t["urls.primaryName"],delete t["urls.primaryName"]):Array.isArray(t.urls)&&Object.hasOwn(t.urls,"primaryName")&&(a=t.urls.primaryName,delete t.urls.primaryName),n.push(t)}const s=I()(e,...n);return r!==Symbol.for("domNode")&&(s.domNode=r),a!==Symbol.for("primaryName")&&Array.isArray(s.urls)&&(s.urls.primaryName=a),type_cast(s)};function SwaggerUI(e){const t=query()(e),r=runtime()(),a=SwaggerUI.config.merge({},SwaggerUI.config.defaults,r,e,t),n=factorization_system(a),s=inline_plugin(a),o=new Store(n);o.register([a.plugins,s]);const l=o.getSystem(),persistConfigs=e=>{o.setConfigs(e),l.configsActions.loaded()},updateSpec=e=>{!t.url&&"object"==typeof e.spec&&Object.keys(e.spec).length>0?(l.specActions.updateUrl(""),l.specActions.updateLoadingStatus("success"),l.specActions.updateSpec(JSON.stringify(e.spec))):"function"==typeof l.specActions.download&&e.url&&!e.urls&&(l.specActions.updateUrl(e.url),l.specActions.download(e.url))},render=e=>{if(e.domNode)l.render(e.domNode,"App");else if(e.dom_id){const t=document.querySelector(e.dom_id);l.render(t,"App")}else null===e.dom_id||null===e.domNode||console.error("Skipped rendering: no `dom_id` or `domNode` was specified")};return a.configUrl?((async()=>{const{configUrl:e}=a,r=await sources_url({url:e,system:l})(a),n=SwaggerUI.config.merge({},a,r,t);persistConfigs(n),null!==r&&updateSpec(n),render(n)})(),l):(persistConfigs(a),updateSpec(a),render(a),l)}SwaggerUI.System=Store,SwaggerUI.config={defaults:Io,merge:config_merge,typeCast:type_cast,typeCastMappings:Ro},SwaggerUI.presets={base,apis:PresetApis},SwaggerUI.plugins={Auth:auth,Configs:configsPlugin,DeepLining:deep_linking,Err:err,Filter:filter,Icons:icons,JSONSchema5:json_schema_5,JSONSchema5Samples:json_schema_5_samples,JSONSchema202012:json_schema_2020_12,JSONSchema202012Samples:json_schema_2020_12_samples,Layout:plugins_layout,Logs:logs,OpenAPI30:oas3,OpenAPI31:oas3,OnComplete:on_complete,RequestSnippets:plugins_request_snippets,Spec:plugins_spec,SwaggerClient:swagger_client,Util:util,View:view,ViewLegacy:view_legacy,DownloadUrl:downloadUrlPlugin,SyntaxHighlighting:syntax_highlighting,Versions:versions,SafeRender:safe_render};const To=SwaggerUI})(),r=r.default})())); +//# sourceMappingURL=swagger-ui.js.map \ No newline at end of file diff --git a/src/main/resources/static/plugins/swaggerUI/swagger-ui.js.map b/src/main/resources/static/plugins/swaggerUI/swagger-ui.js.map new file mode 100644 index 0000000..e6414ba --- /dev/null +++ b/src/main/resources/static/plugins/swaggerUI/swagger-ui.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swagger-ui.js","mappings":"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","sources":["webpack://SwaggerUICore/webpack/universalModuleDefinition","webpack://SwaggerUICore/external commonjs \"buffer\"","webpack://SwaggerUICore/webpack/bootstrap","webpack://SwaggerUICore/webpack/runtime/compat get default export","webpack://SwaggerUICore/webpack/runtime/define property getters","webpack://SwaggerUICore/webpack/runtime/hasOwnProperty shorthand","webpack://SwaggerUICore/webpack/runtime/make namespace object","webpack://SwaggerUICore/external commonjs \"react\"","webpack://SwaggerUICore/external commonjs \"redux\"","webpack://SwaggerUICore/external commonjs \"immutable\"","webpack://SwaggerUICore/external commonjs \"deep-extend\"","webpack://SwaggerUICore/external commonjs \"redux-immutable\"","webpack://SwaggerUICore/external commonjs \"serialize-error\"","webpack://SwaggerUICore/external commonjs \"lodash/merge\"","webpack://SwaggerUICore/./src/core/plugins/err/actions.js","webpack://SwaggerUICore/./src/core/window.js","webpack://SwaggerUICore/external commonjs \"@braintree/sanitize-url\"","webpack://SwaggerUICore/external commonjs \"lodash/memoize\"","webpack://SwaggerUICore/external commonjs \"lodash/camelCase\"","webpack://SwaggerUICore/external commonjs \"lodash/upperFirst\"","webpack://SwaggerUICore/external commonjs \"lodash/find\"","webpack://SwaggerUICore/external commonjs \"lodash/some\"","webpack://SwaggerUICore/external commonjs \"lodash/eq\"","webpack://SwaggerUICore/external commonjs \"lodash/isFunction\"","webpack://SwaggerUICore/external commonjs \"css.escape\"","webpack://SwaggerUICore/external commonjs \"randombytes\"","webpack://SwaggerUICore/external commonjs \"sha.js\"","webpack://SwaggerUICore/./src/core/utils/get-parameter-schema.js","webpack://SwaggerUICore/./src/core/utils/index.js","webpack://SwaggerUICore/./src/core/system.js","webpack://SwaggerUICore/external commonjs \"url-parse\"","webpack://SwaggerUICore/./src/core/plugins/auth/actions.js","webpack://SwaggerUICore/./src/core/plugins/auth/reducers.js","webpack://SwaggerUICore/external commonjs \"reselect\"","webpack://SwaggerUICore/./src/core/plugins/auth/selectors.js","webpack://SwaggerUICore/./src/core/plugins/auth/spec-extensions/wrap-actions.js","webpack://SwaggerUICore/./src/core/plugins/auth/configs-extensions/wrap-actions.js","webpack://SwaggerUICore/./src/core/plugins/auth/wrap-actions.js","webpack://SwaggerUICore/external commonjs \"prop-types\"","webpack://SwaggerUICore/external commonjs \"lodash/omit\"","webpack://SwaggerUICore/./src/core/plugins/auth/components/lock-auth-icon.jsx","webpack://SwaggerUICore/./src/core/plugins/auth/components/unlock-auth-icon.jsx","webpack://SwaggerUICore/./src/core/plugins/auth/index.js","webpack://SwaggerUICore/external commonjs \"js-yaml\"","webpack://SwaggerUICore/./src/core/plugins/configs/fn.js","webpack://SwaggerUICore/./src/core/plugins/configs/actions.js","webpack://SwaggerUICore/./src/core/plugins/configs/selectors.js","webpack://SwaggerUICore/./src/core/plugins/configs/reducers.js","webpack://SwaggerUICore/./src/core/plugins/configs/index.js","webpack://SwaggerUICore/./src/core/plugins/deep-linking/helpers.js","webpack://SwaggerUICore/external commonjs \"zenscroll\"","webpack://SwaggerUICore/./src/core/plugins/deep-linking/layout.js","webpack://SwaggerUICore/external commonjs \"react-immutable-proptypes\"","webpack://SwaggerUICore/./src/core/plugins/deep-linking/operation-wrapper.jsx","webpack://SwaggerUICore/./src/core/plugins/deep-linking/operation-tag-wrapper.jsx","webpack://SwaggerUICore/./src/core/plugins/deep-linking/index.js","webpack://SwaggerUICore/external commonjs \"lodash/reduce\"","webpack://SwaggerUICore/./src/core/plugins/err/error-transformers/transformers/not-of-type.js","webpack://SwaggerUICore/external commonjs \"lodash/get\"","webpack://SwaggerUICore/./src/core/plugins/err/error-transformers/transformers/parameter-oneof.js","webpack://SwaggerUICore/./src/core/plugins/err/error-transformers/hook.js","webpack://SwaggerUICore/./src/core/plugins/err/reducers.js","webpack://SwaggerUICore/./src/core/plugins/err/selectors.js","webpack://SwaggerUICore/./src/core/plugins/err/index.js","webpack://SwaggerUICore/./src/core/plugins/filter/opsFilter.js","webpack://SwaggerUICore/./src/core/plugins/filter/index.js","webpack://SwaggerUICore/external commonjs \"@babel/runtime-corejs3/helpers/extends\"","webpack://SwaggerUICore/./src/core/plugins/icons/components/arrow-up.jsx","webpack://SwaggerUICore/./src/core/plugins/icons/components/arrow-down.jsx","webpack://SwaggerUICore/./src/core/plugins/icons/components/arrow.jsx","webpack://SwaggerUICore/./src/core/plugins/icons/components/close.jsx","webpack://SwaggerUICore/./src/core/plugins/icons/components/copy.jsx","webpack://SwaggerUICore/./src/core/plugins/icons/components/lock.jsx","webpack://SwaggerUICore/./src/core/plugins/icons/components/unlock.jsx","webpack://SwaggerUICore/./src/core/plugins/icons/index.js","webpack://SwaggerUICore/./src/core/plugins/layout/actions.js","webpack://SwaggerUICore/./src/core/plugins/layout/reducers.js","webpack://SwaggerUICore/./src/core/plugins/layout/selectors.js","webpack://SwaggerUICore/./src/core/plugins/layout/spec-extensions/wrap-selector.js","webpack://SwaggerUICore/./src/core/plugins/layout/index.js","webpack://SwaggerUICore/./src/core/plugins/logs/index.js","webpack://SwaggerUICore/./src/core/plugins/on-complete/index.js","webpack://SwaggerUICore/./src/core/plugins/request-snippets/fn.js","webpack://SwaggerUICore/./src/core/plugins/request-snippets/selectors.js","webpack://SwaggerUICore/external commonjs \"classnames\"","webpack://SwaggerUICore/external commonjs \"react-copy-to-clipboard\"","webpack://SwaggerUICore/./src/core/plugins/request-snippets/request-snippets.jsx","webpack://SwaggerUICore/./src/core/plugins/request-snippets/index.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/model-collapse.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/model-example.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/model-wrapper.jsx","webpack://SwaggerUICore/external commonjs \"react-immutable-pure-component\"","webpack://SwaggerUICore/./src/core/assets/rolling-load.svg","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/model.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/models.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/enum-model.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/object-model.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/array-model.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/primitive-model.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/schemes.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/containers/schemes.jsx","webpack://SwaggerUICore/external commonjs \"react-debounce-input\"","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/components/json-schema-components.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-5/index.js","webpack://SwaggerUICore/external commonjs \"xml\"","webpack://SwaggerUICore/external commonjs \"randexp\"","webpack://SwaggerUICore/external commonjs \"lodash/isEmpty\"","webpack://SwaggerUICore/./src/core/utils/memoizeN.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-5-samples/fn/index.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-5-samples/fn/get-json-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-5-samples/fn/get-yaml-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-5-samples/fn/get-xml-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-5-samples/fn/get-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-5-samples/index.js","webpack://SwaggerUICore/external commonjs \"lodash/constant\"","webpack://SwaggerUICore/./src/core/plugins/spec/selectors.js","webpack://SwaggerUICore/external commonjs \"lodash/isString\"","webpack://SwaggerUICore/external commonjs \"lodash/debounce\"","webpack://SwaggerUICore/external commonjs \"lodash/set\"","webpack://SwaggerUICore/external commonjs \"lodash/fp/assocPath\"","webpack://SwaggerUICore/./src/core/plugins/spec/actions.js","webpack://SwaggerUICore/./src/core/plugins/spec/reducers.js","webpack://SwaggerUICore/./src/core/plugins/spec/wrap-actions.js","webpack://SwaggerUICore/./src/core/plugins/spec/index.js","webpack://SwaggerUICore/external commonjs \"swagger-client/es/resolver/strategies/generic\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/resolver/strategies/openapi-2\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/resolver/strategies/openapi-3-0\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/resolver/strategies/openapi-3-1-apidom\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/resolver\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/execute\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/http\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/subtree-resolver\"","webpack://SwaggerUICore/external commonjs \"swagger-client/es/helpers\"","webpack://SwaggerUICore/./src/core/plugins/swagger-client/configs-wrap-actions.js","webpack://SwaggerUICore/./src/core/plugins/swagger-client/index.js","webpack://SwaggerUICore/./src/core/plugins/util/index.js","webpack://SwaggerUICore/external commonjs \"react-dom\"","webpack://SwaggerUICore/external commonjs \"react-redux\"","webpack://SwaggerUICore/external commonjs \"lodash/identity\"","webpack://SwaggerUICore/./src/core/plugins/view/root-injects.jsx","webpack://SwaggerUICore/./src/core/plugins/view/fn.js","webpack://SwaggerUICore/./src/core/plugins/view/index.js","webpack://SwaggerUICore/./src/core/plugins/view-legacy/index.js","webpack://SwaggerUICore/./src/core/plugins/view-legacy/root-injects.jsx","webpack://SwaggerUICore/./src/core/plugins/download-url/index.js","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/light\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/languages/hljs/javascript\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/languages/hljs/json\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/languages/hljs/xml\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/languages/hljs/bash\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/languages/hljs/yaml\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/languages/hljs/http\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/languages/hljs/powershell\"","webpack://SwaggerUICore/./src/core/plugins/syntax-highlighting/after-load.js","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/styles/hljs/agate\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/styles/hljs/arta\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/styles/hljs/monokai\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/styles/hljs/nord\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/styles/hljs/obsidian\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night\"","webpack://SwaggerUICore/external commonjs \"react-syntax-highlighter/dist/esm/styles/hljs/idea\"","webpack://SwaggerUICore/./src/core/plugins/syntax-highlighting/root-injects.js","webpack://SwaggerUICore/./src/core/plugins/syntax-highlighting/components/SyntaxHighlighter.jsx","webpack://SwaggerUICore/external commonjs \"js-file-download\"","webpack://SwaggerUICore/./src/core/plugins/syntax-highlighting/components/HighlightCode.jsx","webpack://SwaggerUICore/./src/core/plugins/syntax-highlighting/components/PlainTextViewer.jsx","webpack://SwaggerUICore/./src/core/plugins/syntax-highlighting/wrap-components/SyntaxHighlighter.jsx","webpack://SwaggerUICore/./src/core/plugins/syntax-highlighting/index.js","webpack://SwaggerUICore/./src/core/plugins/versions/after-load.js","webpack://SwaggerUICore/./src/core/plugins/versions/index.js","webpack://SwaggerUICore/external commonjs \"lodash/zipObject\"","webpack://SwaggerUICore/./src/core/plugins/safe-render/fn.jsx","webpack://SwaggerUICore/./src/core/plugins/safe-render/components/fallback.jsx","webpack://SwaggerUICore/./src/core/plugins/safe-render/components/error-boundary.jsx","webpack://SwaggerUICore/./src/core/plugins/safe-render/index.js","webpack://SwaggerUICore/./src/core/components/app.jsx","webpack://SwaggerUICore/./src/core/components/auth/authorization-popup.jsx","webpack://SwaggerUICore/./src/core/components/auth/authorize-btn.jsx","webpack://SwaggerUICore/./src/core/containers/authorize-btn.jsx","webpack://SwaggerUICore/./src/core/components/auth/authorize-operation-btn.jsx","webpack://SwaggerUICore/./src/core/components/auth/auths.jsx","webpack://SwaggerUICore/./src/core/components/auth/auth-item.jsx","webpack://SwaggerUICore/./src/core/components/auth/error.jsx","webpack://SwaggerUICore/./src/core/components/auth/api-key-auth.jsx","webpack://SwaggerUICore/./src/core/components/auth/basic-auth.jsx","webpack://SwaggerUICore/./src/core/components/example.jsx","webpack://SwaggerUICore/./src/core/components/examples-select.jsx","webpack://SwaggerUICore/./src/core/components/examples-select-value-retainer.jsx","webpack://SwaggerUICore/./src/core/oauth2-authorize.js","webpack://SwaggerUICore/./src/core/components/auth/oauth2.jsx","webpack://SwaggerUICore/./src/core/components/clear.jsx","webpack://SwaggerUICore/./src/core/components/live-response.jsx","webpack://SwaggerUICore/./src/core/components/online-validator-badge.jsx","webpack://SwaggerUICore/./src/core/components/operations.jsx","webpack://SwaggerUICore/./src/core/utils/url.js","webpack://SwaggerUICore/./src/core/components/operation-tag.jsx","webpack://SwaggerUICore/./src/core/components/operation.jsx","webpack://SwaggerUICore/./src/core/containers/OperationContainer.jsx","webpack://SwaggerUICore/external commonjs \"lodash/toString\"","webpack://SwaggerUICore/./src/core/components/operation-summary.jsx","webpack://SwaggerUICore/./src/core/components/operation-summary-method.jsx","webpack://SwaggerUICore/./src/core/components/operation-summary-path.jsx","webpack://SwaggerUICore/./src/core/components/operation-extensions.jsx","webpack://SwaggerUICore/./src/core/components/operation-extension-row.jsx","webpack://SwaggerUICore/./src/core/utils/create-html-ready-id.js","webpack://SwaggerUICore/./src/core/components/responses.jsx","webpack://SwaggerUICore/./src/core/utils/jsonParse.js","webpack://SwaggerUICore/./src/core/components/response.jsx","webpack://SwaggerUICore/./src/core/components/response-extension.jsx","webpack://SwaggerUICore/external commonjs \"xml-but-prettier\"","webpack://SwaggerUICore/external commonjs \"lodash/toLower\"","webpack://SwaggerUICore/./src/core/components/response-body.jsx","webpack://SwaggerUICore/./src/core/components/parameters/parameters.jsx","webpack://SwaggerUICore/./src/core/components/parameter-extension.jsx","webpack://SwaggerUICore/./src/core/components/parameter-include-empty.jsx","webpack://SwaggerUICore/./src/core/components/parameter-row.jsx","webpack://SwaggerUICore/./src/core/components/execute.jsx","webpack://SwaggerUICore/./src/core/components/headers.jsx","webpack://SwaggerUICore/./src/core/components/errors.jsx","webpack://SwaggerUICore/./src/core/components/content-type.jsx","webpack://SwaggerUICore/./src/core/components/layout-utils.jsx","webpack://SwaggerUICore/./src/core/components/overview.jsx","webpack://SwaggerUICore/./src/core/components/initialized-input.jsx","webpack://SwaggerUICore/./src/core/components/info.jsx","webpack://SwaggerUICore/./src/core/containers/info.jsx","webpack://SwaggerUICore/./src/core/components/contact.jsx","webpack://SwaggerUICore/./src/core/components/license.jsx","webpack://SwaggerUICore/./src/core/components/jump-to-path.jsx","webpack://SwaggerUICore/./src/core/components/copy-to-clipboard-btn.jsx","webpack://SwaggerUICore/./src/core/components/footer.jsx","webpack://SwaggerUICore/./src/core/containers/filter.jsx","webpack://SwaggerUICore/./src/core/components/param-body.jsx","webpack://SwaggerUICore/./src/core/components/curl.jsx","webpack://SwaggerUICore/./src/core/components/property.jsx","webpack://SwaggerUICore/./src/core/components/try-it-out-button.jsx","webpack://SwaggerUICore/./src/core/components/version-pragma-filter.jsx","webpack://SwaggerUICore/./src/core/components/version-stamp.jsx","webpack://SwaggerUICore/./src/core/components/openapi-version.jsx","webpack://SwaggerUICore/./src/core/components/deep-link.jsx","webpack://SwaggerUICore/./src/core/components/svg-assets.jsx","webpack://SwaggerUICore/external commonjs \"remarkable\"","webpack://SwaggerUICore/external commonjs \"remarkable/linkify\"","webpack://SwaggerUICore/external commonjs \"dompurify\"","webpack://SwaggerUICore/./src/core/components/providers/markdown.jsx","webpack://SwaggerUICore/./src/core/components/layouts/base.jsx","webpack://SwaggerUICore/./src/core/presets/base/plugins/core-components/index.js","webpack://SwaggerUICore/./src/core/presets/base/plugins/form-components/index.js","webpack://SwaggerUICore/./src/core/presets/base/index.js","webpack://SwaggerUICore/./src/core/plugins/oas3/spec-extensions/wrap-selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas3/auth-extensions/wrap-selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas3/helpers.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/spec-extensions/selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas3/components/callbacks.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/request-body.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/operation-link.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/servers.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/servers-container.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/request-body-editor.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/auth/http-auth.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/operation-servers.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/components/index.js","webpack://SwaggerUICore/./src/core/plugins/oas3/wrap-components/markdown.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/wrap-components/auth/auth-item.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/wrap-components/online-validator-badge.js","webpack://SwaggerUICore/./src/core/plugins/oas3/wrap-components/model.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/wrap-components/json-schema-string.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/wrap-components/index.js","webpack://SwaggerUICore/./src/core/plugins/oas3/wrap-components/openapi-version.jsx","webpack://SwaggerUICore/./src/core/plugins/oas3/actions.js","webpack://SwaggerUICore/external commonjs \"lodash/escapeRegExp\"","webpack://SwaggerUICore/./src/core/plugins/oas3/selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas3/reducers.js","webpack://SwaggerUICore/./src/core/plugins/oas3/index.js","webpack://SwaggerUICore/./src/core/plugins/oas31/components/webhooks.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/license.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/contact.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/info.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/json-schema-dialect.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/version-pragma-filter.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/model/model.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/models/models.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/auth/mutual-tls-auth.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/components/auth/auths.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/fn.js","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/license.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/contact.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/info.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/model.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/models.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/version-pragma-filter.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/auth/auth-item.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/wrap-components/auths.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/spec-extensions/selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas31/spec-extensions/wrap-selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas31/auth-extensions/wrap-selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas31/selectors.js","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Example.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Xml.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/DiscriminatorMapping.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Discriminator/Discriminator.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/ExternalDocs.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Description.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Description.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Default.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/components/keywords/Properties.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/wrap-components/keywords/Properties.jsx","webpack://SwaggerUICore/./src/core/plugins/oas31/json-schema-2020-12-extensions/fn.js","webpack://SwaggerUICore/./src/core/plugins/oas31/after-load.js","webpack://SwaggerUICore/./src/core/plugins/oas31/index.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/prop-types.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/context.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/hooks.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/JSONSchema/JSONSchema.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$schema.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$vocabulary/$vocabulary.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$id.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$anchor.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$dynamicAnchor.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$ref.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$dynamicRef.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$defs.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/$comment.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/AllOf.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/AnyOf.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/OneOf.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Not.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/If.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Then.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Else.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/DependentSchemas.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/PrefixItems.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Items.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Contains.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Properties/Properties.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/PatternProperties/PatternProperties.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/AdditionalProperties.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/PropertyNames.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/UnevaluatedItems.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/UnevaluatedProperties.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Type.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Enum/Enum.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Const.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Constraint/Constraint.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/DependentRequired/DependentRequired.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/ContentSchema.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Title/Title.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Description/Description.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Default.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/Deprecated.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/ReadOnly.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/keywords/WriteOnly.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/Accordion/Accordion.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/ExpandDeepButton/ExpandDeepButton.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/components/icons/ChevronRight.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/fn.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/hoc.jsx","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12/index.js","webpack://SwaggerUICore/external commonjs \"lodash/isPlainObject\"","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/array.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/object.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/core/random.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/core/predicates.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/class/Registry.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/int32.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/int64.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/float.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/double.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/email.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-email.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/hostname.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/idn-hostname.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv4.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/ipv6.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/uri.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-reference.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/iri.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/iri-reference.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/uuid.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/uri-template.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/json-pointer.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/relative-json-pointer.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/date-time.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/date.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/time.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/duration.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/password.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/regex.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/class/FormatRegistry.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/api/formatAPI.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/7bit.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/8bit.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/binary.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/quoted-printable.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/base16.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/base32.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/base64.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/encoders/base64url.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/class/EncoderRegistry.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/api/encoderAPI.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/text.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/image.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/audio.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/video.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/generators/media-types/application.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/class/MediaTypeRegistry.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/api/mediaTypeAPI.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/string.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/number.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/integer.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/boolean.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/index.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/types/null.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/core/constants.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/core/example.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/core/type.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/core/utils.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/core/merge.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/main.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/class/OptionRegistry.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/api/optionAPI.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/get-json-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/get-yaml-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/get-xml-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/fn/get-sample-schema.js","webpack://SwaggerUICore/./src/core/plugins/json-schema-2020-12-samples/index.js","webpack://SwaggerUICore/./src/core/presets/apis/index.js","webpack://SwaggerUICore/./src/core/config/factorization/inline-plugin.js","webpack://SwaggerUICore/./src/core/config/factorization/system.js","webpack://SwaggerUICore/./src/core/config/sources/query.js","webpack://SwaggerUICore/./src/core/config/sources/url.js","webpack://SwaggerUICore/./src/core/config/sources/runtime.js","webpack://SwaggerUICore/./src/core/config/defaults.js","webpack://SwaggerUICore/external commonjs \"lodash/has\"","webpack://SwaggerUICore/external commonjs \"lodash/fp/set\"","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/array.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/boolean.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/dom-node.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/filter.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/function.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/nullable-array.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/nullable-function.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/nullable-string.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/number.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/object.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/sorter.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/string.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/syntax-highlight.js","webpack://SwaggerUICore/./src/core/config/type-cast/type-casters/undefined-string.js","webpack://SwaggerUICore/./src/core/config/type-cast/mappings.js","webpack://SwaggerUICore/./src/core/config/type-cast/index.js","webpack://SwaggerUICore/./src/core/config/merge.js","webpack://SwaggerUICore/./src/core/index.js","webpack://SwaggerUICore/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SwaggerUICore\"] = factory();\n\telse\n\t\troot[\"SwaggerUICore\"] = factory();\n})(this, () => {\nreturn ","module.exports = require(\"buffer\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"redux\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"immutable\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"deep-extend\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"redux-immutable\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"serialize-error\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/merge\");","import { serializeError } from \"serialize-error\"\n\nexport const NEW_THROWN_ERR = \"err_new_thrown_err\"\nexport const NEW_THROWN_ERR_BATCH = \"err_new_thrown_err_batch\"\nexport const NEW_SPEC_ERR = \"err_new_spec_err\"\nexport const NEW_SPEC_ERR_BATCH = \"err_new_spec_err_batch\"\nexport const NEW_AUTH_ERR = \"err_new_auth_err\"\nexport const CLEAR = \"err_clear\"\nexport const CLEAR_BY = \"err_clear_by\"\n\nexport function newThrownErr(err) {\n return {\n type: NEW_THROWN_ERR,\n payload: serializeError(err)\n }\n}\n\nexport function newThrownErrBatch(errors) {\n return {\n type: NEW_THROWN_ERR_BATCH,\n payload: errors\n }\n}\n\nexport function newSpecErr(err) {\n return {\n type: NEW_SPEC_ERR,\n payload: err\n }\n}\n\nexport function newSpecErrBatch(errArray) {\n return {\n type: NEW_SPEC_ERR_BATCH,\n payload: errArray\n }\n}\n\nexport function newAuthErr(err) {\n return {\n type: NEW_AUTH_ERR,\n payload: err\n }\n}\n\nexport function clear(filter = {}) {\n // filter looks like: {type: 'spec'}, {source: 'parser'}\n return {\n type: CLEAR,\n payload: filter\n }\n}\n\nexport function clearBy(filter = () => true) {\n // filter is a function\n return {\n type: CLEAR_BY,\n payload: filter\n }\n}\n","function makeWindow() {\n var win = {\n location: {},\n history: {},\n open: () => {},\n close: () => {},\n File: function() {},\n FormData: function() {},\n }\n\n if(typeof window === \"undefined\") {\n return win\n }\n\n try {\n win = window\n var props = [\"File\", \"Blob\", \"FormData\"]\n for (var prop of props) {\n if (prop in window) {\n win[prop] = window[prop]\n }\n }\n } catch( e ) {\n console.error(e)\n }\n\n return win\n}\n\nexport default makeWindow()\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@braintree/sanitize-url\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/memoize\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/camelCase\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/upperFirst\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/find\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/some\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/eq\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/isFunction\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"css.escape\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"randombytes\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"sha.js\");","/**\n * @prettier\n */\n\nimport Im from \"immutable\"\n\nconst swagger2SchemaKeys = Im.Set.of(\n \"type\",\n \"format\",\n \"items\",\n \"default\",\n \"maximum\",\n \"exclusiveMaximum\",\n \"minimum\",\n \"exclusiveMinimum\",\n \"maxLength\",\n \"minLength\",\n \"pattern\",\n \"maxItems\",\n \"minItems\",\n \"uniqueItems\",\n \"enum\",\n \"multipleOf\"\n)\n\n/**\n * @typedef {Object} ParameterSchemaDescriptor\n * @property {Immutable.Map} schema - the parameter schema\n * @property {string|null} parameterContentMediaType - the effective media type, for `content`-based OpenAPI 3.0 Parameters, or `null` otherwise\n */\n\n/**\n * Get the effective schema value for a parameter, or an empty Immutable.Map if\n * no suitable schema can be found.\n *\n * Supports OpenAPI 3.0 `Parameter.content` priority -- since a Parameter Object\n * cannot have both `schema` and `content`, this function ignores `schema` when\n * `content` is present.\n *\n * @param {Immutable.Map} parameter The parameter to identify a schema for\n * @param {object} config\n * @param {boolean} config.isOAS3 Whether the parameter is from an OpenAPI 2.0\n * or OpenAPI 3.0 definition\n * @return {ParameterSchemaDescriptor} Information about the parameter schema\n */\nexport default function getParameterSchema(parameter, { isOAS3 } = {}) {\n // Return empty Map if `parameter` isn't a Map\n if (!Im.Map.isMap(parameter)) {\n return {\n schema: Im.Map(),\n parameterContentMediaType: null,\n }\n }\n\n if (!isOAS3) {\n // Swagger 2.0\n if (parameter.get(\"in\") === \"body\") {\n return {\n schema: parameter.get(\"schema\", Im.Map()),\n parameterContentMediaType: null,\n }\n } else {\n return {\n schema: parameter.filter((v, k) => swagger2SchemaKeys.includes(k)),\n parameterContentMediaType: null,\n }\n }\n }\n\n // If we've reached here, the parameter is OpenAPI 3.0\n\n if (parameter.get(\"content\")) {\n const parameterContentMediaTypes = parameter\n .get(\"content\", Im.Map({}))\n .keySeq()\n\n const parameterContentMediaType = parameterContentMediaTypes.first()\n\n return {\n schema: parameter.getIn(\n [\"content\", parameterContentMediaType, \"schema\"],\n Im.Map()\n ),\n parameterContentMediaType,\n }\n }\n\n return {\n schema: parameter.get(\"schema\") ? parameter.get(\"schema\", Im.Map()): Im.Map(),\n parameterContentMediaType: null,\n }\n}\n","/*\n ATTENTION! This file (but not the functions within) is deprecated.\n\n You should probably add a new file to `./helpers/` instead of adding a new\n function here.\n\n One-function-per-file is a better pattern than what we have here.\n\n If you're refactoring something in here, feel free to break it out to a file\n in `./helpers` if you have the time.\n*/\nimport Im, { fromJS, Set } from \"immutable\"\nimport { sanitizeUrl as braintreeSanitizeUrl } from \"@braintree/sanitize-url\"\nimport camelCase from \"lodash/camelCase\"\nimport upperFirst from \"lodash/upperFirst\"\nimport _memoize from \"lodash/memoize\"\nimport find from \"lodash/find\"\nimport some from \"lodash/some\"\nimport eq from \"lodash/eq\"\nimport isFunction from \"lodash/isFunction\"\nimport cssEscape from \"css.escape\"\nimport randomBytes from \"randombytes\"\nimport shaJs from \"sha.js\"\nimport win from \"core/window\"\nimport getParameterSchema from \"core/utils/get-parameter-schema\"\n\n\nconst DEFAULT_RESPONSE_KEY = \"default\"\n\nexport const isImmutable = (maybe) => Im.Iterable.isIterable(maybe)\n\nexport function objectify (thing) {\n if(!isObject(thing))\n return {}\n if(isImmutable(thing))\n return thing.toJS()\n return thing\n}\n\nexport function arrayify (thing) {\n if(!thing)\n return []\n\n if(thing.toArray)\n return thing.toArray()\n\n return normalizeArray(thing)\n}\n\nexport function fromJSOrdered(js) {\n if (isImmutable(js)) {\n return js // Can't do much here\n }\n if (js instanceof win.File) {\n return js\n }\n if (!isObject(js)) {\n return js\n }\n if (Array.isArray(js)) {\n return Im.Seq(js).map(fromJSOrdered).toList()\n }\n if (isFunction(js.entries)) {\n // handle multipart/form-data\n const objWithHashedKeys = createObjWithHashedKeys(js)\n return Im.OrderedMap(objWithHashedKeys).map(fromJSOrdered)\n }\n return Im.OrderedMap(js).map(fromJSOrdered)\n}\n\n/**\n * Convert a FormData object into plain object\n * Append a hashIdx and counter to the key name, if multiple exists\n * if single, key name = \n * if multiple, key name = \n * @example single entry for vegetable\n * fdObj.entries.vegtables: \"carrot\"\n * // returns newObj.vegetables : \"carrot\"\n * @example multiple entries for fruits[]\n * fdObj.entries.fruits[]: \"apple\"\n * // returns newObj.fruits[]_**[]1 : \"apple\"\n * fdObj.entries.fruits[]: \"banana\"\n * // returns newObj.fruits[]_**[]2 : \"banana\"\n * fdObj.entries.fruits[]: \"grape\"\n * // returns newObj.fruits[]_**[]3 : \"grape\"\n * @param {FormData} fdObj - a FormData object\n * @return {Object} - a plain object\n */\nexport function createObjWithHashedKeys (fdObj) {\n if (!isFunction(fdObj.entries)) {\n return fdObj // not a FormData object with iterable\n }\n const newObj = {}\n const hashIdx = \"_**[]\" // our internal identifier\n const trackKeys = {}\n for (let pair of fdObj.entries()) {\n if (!newObj[pair[0]] && !(trackKeys[pair[0]] && trackKeys[pair[0]].containsMultiple)) {\n newObj[pair[0]] = pair[1] // first key name: no hash required\n } else {\n if (!trackKeys[pair[0]]) {\n // initiate tracking key for multiple\n trackKeys[pair[0]] = {\n containsMultiple: true,\n length: 1\n }\n // \"reassign\" first pair to matching hashed format for multiple\n let hashedKeyFirst = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`\n newObj[hashedKeyFirst] = newObj[pair[0]]\n // remove non-hashed key of multiple\n delete newObj[pair[0]] // first\n }\n trackKeys[pair[0]].length += 1\n let hashedKeyCurrent = `${pair[0]}${hashIdx}${trackKeys[pair[0]].length}`\n newObj[hashedKeyCurrent] = pair[1]\n }\n }\n return newObj\n}\n\nexport function bindToState(obj, state) {\n var newObj = {}\n Object.keys(obj)\n .filter(key => typeof obj[key] === \"function\")\n .forEach(key => newObj[key] = obj[key].bind(null, state))\n return newObj\n}\n\nexport function normalizeArray(arr) {\n if(Array.isArray(arr))\n return arr\n return [arr]\n}\n\nexport function isFn(fn) {\n return typeof fn === \"function\"\n}\n\nexport function isObject(obj) {\n return !!obj && typeof obj === \"object\"\n}\n\nexport function isFunc(thing) {\n return typeof(thing) === \"function\"\n}\n\nexport function isArray(thing) {\n return Array.isArray(thing)\n}\n\n// I've changed memoize libs more than once, so I'm using this a way to make that simpler\nexport const memoize = _memoize\n\nexport function objMap(obj, fn) {\n return Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = fn(obj[key], key)\n return newObj\n }, {})\n}\n\nexport function objReduce(obj, fn) {\n return Object.keys(obj).reduce((newObj, key) => {\n let res = fn(obj[key], key)\n if(res && typeof res === \"object\")\n Object.assign(newObj, res)\n return newObj\n }, {})\n}\n\n// Redux middleware that exposes the system to async actions (like redux-thunk, but with out system instead of (dispatch, getState)\nexport function systemThunkMiddleware(getSystem) {\n return ({ dispatch, getState }) => { // eslint-disable-line no-unused-vars\n return next => action => {\n if (typeof action === \"function\") {\n return action(getSystem())\n }\n\n return next(action)\n }\n }\n}\n\nexport function defaultStatusCode ( responses ) {\n let codes = responses.keySeq()\n return codes.contains(DEFAULT_RESPONSE_KEY) ? DEFAULT_RESPONSE_KEY : codes.filter( key => (key+\"\")[0] === \"2\").sort().first()\n}\n\n\n/**\n * Returns an Immutable List, safely\n * @param {Immutable.Iterable} iterable the iterable to get the key from\n * @param {String|[String]} key either an array of keys, or a single key\n * @returns {Immutable.List} either iterable.get(keys) or an empty Immutable.List\n */\nexport function getList(iterable, keys) {\n if(!Im.Iterable.isIterable(iterable)) {\n return Im.List()\n }\n let val = iterable.getIn(Array.isArray(keys) ? keys : [keys])\n return Im.List.isList(val) ? val : Im.List()\n}\n\n/**\n * Take an immutable map, and convert to a list.\n * Where the keys are merged with the value objects\n * @param {Immutable.Map} map, the map to convert\n * @param {String} key the key to use, when merging the `key`\n * @returns {Immutable.List}\n */\nexport function mapToList(map, keyNames=\"key\", collectedKeys=Im.Map()) {\n if(!Im.Map.isMap(map) || !map.size) {\n return Im.List()\n }\n\n if(!Array.isArray(keyNames)) {\n keyNames = [ keyNames ]\n }\n\n if(keyNames.length < 1) {\n return map.merge(collectedKeys)\n }\n\n // I need to avoid `flatMap` from merging in the Maps, as well as the lists\n let list = Im.List()\n let keyName = keyNames[0]\n for(let entry of map.entries()) {\n let [key, val] = entry\n let nextList = mapToList(val, keyNames.slice(1), collectedKeys.set(keyName, key))\n if(Im.List.isList(nextList)) {\n list = list.concat(nextList)\n } else {\n list = list.push(nextList)\n }\n }\n\n return list\n}\n\nexport function extractFileNameFromContentDispositionHeader(value){\n let patterns = [\n /filename\\*=[^']+'\\w*'\"([^\"]+)\";?/i,\n /filename\\*=[^']+'\\w*'([^;]+);?/i,\n /filename=\"([^;]*);?\"/i,\n /filename=([^;]*);?/i\n ]\n\n let responseFilename\n patterns.some(regex => {\n responseFilename = regex.exec(value)\n return responseFilename !== null\n })\n\n if (responseFilename !== null && responseFilename.length > 1) {\n try {\n return decodeURIComponent(responseFilename[1])\n } catch(e) {\n console.error(e)\n }\n }\n\n return null\n}\n\n// PascalCase, aka UpperCamelCase\nexport function pascalCase(str) {\n return upperFirst(camelCase(str))\n}\n\n// Remove the ext of a filename, and pascalCase it\nexport function pascalCaseFilename(filename) {\n return pascalCase(filename.replace(/\\.[^./]*$/, \"\"))\n}\n\n// Check if ...\n// - new props\n// - If immutable, use .is()\n// - if in explicit objectList, then compare using _.eq\n// - else use ===\nexport const propChecker = (props, nextProps, objectList=[], ignoreList=[]) => {\n\n if(Object.keys(props).length !== Object.keys(nextProps).length) {\n return true\n }\n\n return (\n some(props, (a, name) => {\n if(ignoreList.includes(name)) {\n return false\n }\n let b = nextProps[name]\n\n if(Im.Iterable.isIterable(a)) {\n return !Im.is(a,b)\n }\n\n // Not going to compare objects\n if(typeof a === \"object\" && typeof b === \"object\") {\n return false\n }\n\n return a !== b\n })\n || objectList.some( objectPropName => !eq(props[objectPropName], nextProps[objectPropName])))\n}\n\nexport const validateMaximum = ( val, max ) => {\n if (val > max) {\n return `Value must be less than ${max}`\n }\n}\n\nexport const validateMinimum = ( val, min ) => {\n if (val < min) {\n return `Value must be greater than ${min}`\n }\n}\n\nexport const validateNumber = ( val ) => {\n if (!/^-?\\d+(\\.?\\d+)?$/.test(val)) {\n return \"Value must be a number\"\n }\n}\n\nexport const validateInteger = ( val ) => {\n if (!/^-?\\d+$/.test(val)) {\n return \"Value must be an integer\"\n }\n}\n\nexport const validateFile = ( val ) => {\n if ( val && !(val instanceof win.File) ) {\n return \"Value must be a file\"\n }\n}\n\nexport const validateBoolean = ( val ) => {\n if ( !(val === \"true\" || val === \"false\" || val === true || val === false) ) {\n return \"Value must be a boolean\"\n }\n}\n\nexport const validateString = ( val ) => {\n if ( val && typeof val !== \"string\" ) {\n return \"Value must be a string\"\n }\n}\n\nexport const validateDateTime = (val) => {\n if (isNaN(Date.parse(val))) {\n return \"Value must be a DateTime\"\n }\n}\n\nexport const validateGuid = (val) => {\n val = val.toString().toLowerCase()\n if (!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(val)) {\n return \"Value must be a Guid\"\n }\n}\n\nexport const validateMaxLength = (val, max) => {\n if (val.length > max) {\n return `Value must be no longer than ${max} character${max !== 1 ? \"s\" : \"\"}`\n }\n}\n\nexport const validateUniqueItems = (val, uniqueItems) => {\n if (!val) {\n return\n }\n if (uniqueItems === \"true\" || uniqueItems === true) {\n const list = fromJS(val)\n const set = list.toSet()\n const hasDuplicates = val.length > set.size\n if(hasDuplicates) {\n let errorsPerIndex = Set()\n list.forEach((item, i) => {\n if(list.filter(v => isFunc(v.equals) ? v.equals(item) : v === item).size > 1) {\n errorsPerIndex = errorsPerIndex.add(i)\n }\n })\n if(errorsPerIndex.size !== 0) {\n return errorsPerIndex.map(i => ({index: i, error: \"No duplicates allowed.\"})).toArray()\n }\n }\n }\n}\n\nexport const validateMinItems = (val, min) => {\n if (!val && min >= 1 || val && val.length < min) {\n return `Array must contain at least ${min} item${min === 1 ? \"\" : \"s\"}`\n }\n}\n\nexport const validateMaxItems = (val, max) => {\n if (val && val.length > max) {\n return `Array must not contain more then ${max} item${max === 1 ? \"\" : \"s\"}`\n }\n}\n\nexport const validateMinLength = (val, min) => {\n if (val.length < min) {\n return `Value must be at least ${min} character${min !== 1 ? \"s\" : \"\"}`\n }\n}\n\nexport const validatePattern = (val, rxPattern) => {\n var patt = new RegExp(rxPattern)\n if (!patt.test(val)) {\n return \"Value must follow pattern \" + rxPattern\n }\n}\n\nfunction validateValueBySchema(value, schema, requiredByParam, bypassRequiredCheck, parameterContentMediaType) {\n if(!schema) return []\n let errors = []\n let nullable = schema.get(\"nullable\")\n let requiredBySchema = schema.get(\"required\")\n let maximum = schema.get(\"maximum\")\n let minimum = schema.get(\"minimum\")\n let type = schema.get(\"type\")\n let format = schema.get(\"format\")\n let maxLength = schema.get(\"maxLength\")\n let minLength = schema.get(\"minLength\")\n let uniqueItems = schema.get(\"uniqueItems\")\n let maxItems = schema.get(\"maxItems\")\n let minItems = schema.get(\"minItems\")\n let pattern = schema.get(\"pattern\")\n\n const schemaRequiresValue = requiredByParam || requiredBySchema === true\n const hasValue = value !== undefined && value !== null\n const isValidEmpty = !schemaRequiresValue && !hasValue\n\n const needsExplicitConstraintValidation = hasValue && type === \"array\"\n\n const requiresFurtherValidation =\n schemaRequiresValue\n || needsExplicitConstraintValidation\n || !isValidEmpty\n\n const isValidNullable = nullable && value === null\n\n // required value is not provided and there's no type defined in the schema\n const requiredNotProvided =\n schemaRequiresValue\n && !hasValue\n && !isValidNullable\n && !bypassRequiredCheck\n && !type\n\n if (requiredNotProvided) {\n errors.push(\"Required field is not provided\")\n return errors\n }\n\n // will not be included in the request or [schema / value] does not [allow / require] further analysis.\n const noFurtherValidationNeeded =\n isValidNullable\n || !type\n || !requiresFurtherValidation\n\n if (noFurtherValidationNeeded) {\n return []\n }\n\n // Further this point the parameter is considered worth to validate\n let stringCheck = type === \"string\" && value\n let arrayCheck = type === \"array\" && Array.isArray(value) && value.length\n let arrayListCheck = type === \"array\" && Im.List.isList(value) && value.count()\n let arrayStringCheck = type === \"array\" && typeof value === \"string\" && value\n let fileCheck = type === \"file\" && value instanceof win.File\n let booleanCheck = type === \"boolean\" && (value || value === false)\n let numberCheck = type === \"number\" && (value || value === 0)\n let integerCheck = type === \"integer\" && (value || value === 0)\n let objectCheck = type === \"object\" && typeof value === \"object\" && value !== null\n let objectStringCheck = type === \"object\" && typeof value === \"string\" && value\n\n const allChecks = [\n stringCheck, arrayCheck, arrayListCheck, arrayStringCheck, fileCheck,\n booleanCheck, numberCheck, integerCheck, objectCheck, objectStringCheck,\n ]\n\n const passedAnyCheck = allChecks.some(v => !!v)\n\n if (schemaRequiresValue && !passedAnyCheck && !bypassRequiredCheck) {\n errors.push(\"Required field is not provided\")\n return errors\n }\n if (\n type === \"object\" &&\n (parameterContentMediaType === null ||\n parameterContentMediaType === \"application/json\")\n ) {\n let objectVal = value\n if(typeof value === \"string\") {\n try {\n objectVal = JSON.parse(value)\n } catch (e) {\n errors.push(\"Parameter string value must be valid JSON\")\n return errors\n }\n }\n if(schema && schema.has(\"required\") && isFunc(requiredBySchema.isList) && requiredBySchema.isList()) {\n requiredBySchema.forEach(key => {\n if(objectVal[key] === undefined) {\n errors.push({ propKey: key, error: \"Required property not found\" })\n }\n })\n }\n if(schema && schema.has(\"properties\")) {\n schema.get(\"properties\").forEach((val, key) => {\n const errs = validateValueBySchema(objectVal[key], val, false, bypassRequiredCheck, parameterContentMediaType)\n errors.push(...errs\n .map((error) => ({ propKey: key, error })))\n })\n }\n }\n\n if (pattern) {\n let err = validatePattern(value, pattern)\n if (err) errors.push(err)\n }\n\n if (minItems) {\n if (type === \"array\") {\n let err = validateMinItems(value, minItems)\n if (err) errors.push(err)\n }\n }\n\n if (maxItems) {\n if (type === \"array\") {\n let err = validateMaxItems(value, maxItems)\n if (err) errors.push({ needRemove: true, error: err })\n }\n }\n\n if (uniqueItems) {\n if (type === \"array\") {\n let errorPerItem = validateUniqueItems(value, uniqueItems)\n if (errorPerItem) errors.push(...errorPerItem)\n }\n }\n\n if (maxLength || maxLength === 0) {\n let err = validateMaxLength(value, maxLength)\n if (err) errors.push(err)\n }\n\n if (minLength) {\n let err = validateMinLength(value, minLength)\n if (err) errors.push(err)\n }\n\n if (maximum || maximum === 0) {\n let err = validateMaximum(value, maximum)\n if (err) errors.push(err)\n }\n\n if (minimum || minimum === 0) {\n let err = validateMinimum(value, minimum)\n if (err) errors.push(err)\n }\n\n if (type === \"string\") {\n let err\n if (format === \"date-time\") {\n err = validateDateTime(value)\n } else if (format === \"uuid\") {\n err = validateGuid(value)\n } else {\n err = validateString(value)\n }\n if (!err) return errors\n errors.push(err)\n } else if (type === \"boolean\") {\n let err = validateBoolean(value)\n if (!err) return errors\n errors.push(err)\n } else if (type === \"number\") {\n let err = validateNumber(value)\n if (!err) return errors\n errors.push(err)\n } else if (type === \"integer\") {\n let err = validateInteger(value)\n if (!err) return errors\n errors.push(err)\n } else if (type === \"array\") {\n if (!(arrayCheck || arrayListCheck)) {\n return errors\n }\n if(value) {\n value.forEach((item, i) => {\n const errs = validateValueBySchema(item, schema.get(\"items\"), false, bypassRequiredCheck, parameterContentMediaType)\n errors.push(...errs\n .map((err) => ({ index: i, error: err })))\n })\n }\n } else if (type === \"file\") {\n let err = validateFile(value)\n if (!err) return errors\n errors.push(err)\n }\n\n return errors\n}\n\n// validation of parameters before execute\nexport const validateParam = (param, value, { isOAS3 = false, bypassRequiredCheck = false } = {}) => {\n\n let paramRequired = param.get(\"required\")\n\n let {\n schema: paramDetails,\n parameterContentMediaType\n } = getParameterSchema(param, { isOAS3 })\n\n return validateValueBySchema(value, paramDetails, paramRequired, bypassRequiredCheck, parameterContentMediaType)\n}\n\nexport const parseSearch = () => {\n const searchParams = new URLSearchParams(win.location.search)\n return Object.fromEntries(searchParams)\n}\n\nexport const serializeSearch = (searchMap) => {\n const searchParams = new URLSearchParams(Object.entries(searchMap))\n return String(searchParams)\n}\n\nexport const btoa = (str) => {\n let buffer\n\n if (str instanceof Buffer) {\n buffer = str\n } else {\n buffer = Buffer.from(str.toString(), \"utf-8\")\n }\n\n return buffer.toString(\"base64\")\n}\n\nexport const sorters = {\n operationsSorter: {\n alpha: (a, b) => a.get(\"path\").localeCompare(b.get(\"path\")),\n method: (a, b) => a.get(\"method\").localeCompare(b.get(\"method\"))\n },\n tagsSorter: {\n alpha: (a, b) => a.localeCompare(b)\n }\n}\n\nexport const buildFormData = (data) => {\n let formArr = []\n\n for (let name in data) {\n let val = data[name]\n if (val !== undefined && val !== \"\") {\n formArr.push([name, \"=\", encodeURIComponent(val).replace(/%20/g,\"+\")].join(\"\"))\n }\n }\n return formArr.join(\"&\")\n}\n\n// Is this really required as a helper? Perhaps. TODO: expose the system of presets.apis in docs, so we know what is supported\nexport const shallowEqualKeys = (a,b, keys) => {\n return !!find(keys, (key) => {\n return eq(a[key], b[key])\n })\n}\n\nexport function sanitizeUrl(url) {\n if(typeof url !== \"string\" || url === \"\") {\n return \"\"\n }\n\n return braintreeSanitizeUrl(url)\n}\n\nexport function requiresValidationURL(uri) {\n if (!uri || uri.indexOf(\"localhost\") >= 0 || uri.indexOf(\"127.0.0.1\") >= 0 || uri === \"none\") {\n return false\n }\n return true\n}\n\n\nexport function getAcceptControllingResponse(responses) {\n if(!Im.OrderedMap.isOrderedMap(responses)) {\n // wrong type!\n return null\n }\n\n if(!responses.size) {\n // responses is empty\n return null\n }\n\n const suitable2xxResponse = responses.find((res, k) => {\n return k.startsWith(\"2\") && Object.keys(res.get(\"content\") || {}).length > 0\n })\n\n // try to find a suitable `default` responses\n const defaultResponse = responses.get(\"default\") || Im.OrderedMap()\n const defaultResponseMediaTypes = (defaultResponse.get(\"content\") || Im.OrderedMap()).keySeq().toJS()\n const suitableDefaultResponse = defaultResponseMediaTypes.length ? defaultResponse : null\n\n return suitable2xxResponse || suitableDefaultResponse\n}\n\n// suitable for use in URL fragments\nexport const createDeepLinkPath = (str) => typeof str == \"string\" || str instanceof String ? str.trim().replace(/\\s/g, \"%20\") : \"\"\n// suitable for use in CSS classes and ids\nexport const escapeDeepLinkPath = (str) => cssEscape( createDeepLinkPath(str).replace(/%20/g, \"_\") )\n\nexport const getExtensions = (defObj) => defObj.filter((v, k) => /^x-/.test(k))\nexport const getCommonExtensions = (defObj) => defObj.filter((v, k) => /^pattern|maxLength|minLength|maximum|minimum/.test(k))\n\n// Deeply strips a specific key from an object.\n//\n// `predicate` can be used to discriminate the stripping further,\n// by preserving the key's place in the object based on its value.\nexport function deeplyStripKey(input, keyToStrip, predicate = () => true) {\n if(typeof input !== \"object\" || Array.isArray(input) || input === null || !keyToStrip) {\n return input\n }\n\n const obj = Object.assign({}, input)\n\n Object.keys(obj).forEach(k => {\n if(k === keyToStrip && predicate(obj[k], k)) {\n delete obj[k]\n return\n }\n obj[k] = deeplyStripKey(obj[k], keyToStrip, predicate)\n })\n\n return obj\n}\n\nexport function stringify(thing) {\n if (typeof thing === \"string\") {\n return thing\n }\n\n if (thing && thing.toJS) {\n thing = thing.toJS()\n }\n\n if (typeof thing === \"object\" && thing !== null) {\n try {\n return JSON.stringify(thing, null, 2)\n }\n catch (e) {\n return String(thing)\n }\n }\n\n if(thing === null || thing === undefined) {\n return \"\"\n }\n\n return thing.toString()\n}\n\nexport function numberToString(thing) {\n if(typeof thing === \"number\") {\n return thing.toString()\n }\n\n return thing\n}\n\nexport function paramToIdentifier(param, { returnAll = false, allowHashes = true } = {}) {\n if(!Im.Map.isMap(param)) {\n throw new Error(\"paramToIdentifier: received a non-Im.Map parameter as input\")\n }\n const paramName = param.get(\"name\")\n const paramIn = param.get(\"in\")\n\n let generatedIdentifiers = []\n\n // Generate identifiers in order of most to least specificity\n\n if (param && param.hashCode && paramIn && paramName && allowHashes) {\n generatedIdentifiers.push(`${paramIn}.${paramName}.hash-${param.hashCode()}`)\n }\n\n if(paramIn && paramName) {\n generatedIdentifiers.push(`${paramIn}.${paramName}`)\n }\n\n generatedIdentifiers.push(paramName)\n\n // Return the most preferred identifier, or all if requested\n\n return returnAll ? generatedIdentifiers : (generatedIdentifiers[0] || \"\")\n}\n\nexport function paramToValue(param, paramValues) {\n const allIdentifiers = paramToIdentifier(param, { returnAll: true })\n\n // Map identifiers to values in the provided value hash, filter undefined values,\n // and return the first value found\n const values = allIdentifiers\n .map(id => {\n return paramValues[id]\n })\n .filter(value => value !== undefined)\n\n return values[0]\n}\n\n// adapted from https://auth0.com/docs/flows/guides/auth-code-pkce/includes/create-code-verifier\nexport function generateCodeVerifier() {\n return b64toB64UrlEncoded(\n randomBytes(32).toString(\"base64\")\n )\n}\n\nexport function createCodeChallenge(codeVerifier) {\n return b64toB64UrlEncoded(\n shaJs(\"sha256\")\n .update(codeVerifier)\n .digest(\"base64\")\n )\n}\n\nfunction b64toB64UrlEncoded(str) {\n return str\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\")\n}\n\nexport const isEmptyValue = (value) => {\n if (!value) {\n return true\n }\n\n if (isImmutable(value) && value.isEmpty()) {\n return true\n }\n\n return false\n}\n","import React from \"react\"\nimport { createStore, applyMiddleware, bindActionCreators, compose } from \"redux\"\nimport Im, { fromJS, Map } from \"immutable\"\nimport deepExtend from \"deep-extend\"\nimport { combineReducers } from \"redux-immutable\"\nimport { serializeError } from \"serialize-error\"\nimport merge from \"lodash/merge\"\nimport { NEW_THROWN_ERR } from \"core/plugins/err/actions\"\nimport win from \"core/window\"\n\nimport { systemThunkMiddleware, isFn, objMap, objReduce, isObject, isArray, isFunc } from \"core/utils\"\n\nconst idFn = a => a\n\n// Apply middleware that gets sandwitched between `dispatch` and the reducer function(s)\nfunction createStoreWithMiddleware(rootReducer, initialState, getSystem) {\n\n let middlwares = [\n // createLogger( {\n // stateTransformer: state => state && state.toJS()\n // } ),\n systemThunkMiddleware( getSystem )\n ]\n\n const composeEnhancers = win.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\n return createStore(rootReducer, initialState, composeEnhancers(\n applyMiddleware( ...middlwares )\n ))\n}\n\nexport default class Store {\n\n constructor(opts={}) {\n deepExtend(this, {\n state: {},\n plugins: [],\n system: {\n configs: {},\n fn: {},\n components: {},\n rootInjects: {},\n statePlugins: {}\n },\n boundSystem: {},\n toolbox: {}\n }, opts)\n\n this.getSystem = this._getSystem.bind(this)\n\n // Bare system (nothing in it, besides the state)\n this.store = configureStore(idFn, fromJS(this.state), this.getSystem )\n\n // will be the system + Im, we can add more tools when we need to\n this.buildSystem(false)\n\n // Bootstrap plugins\n this.register(this.plugins)\n }\n\n getStore() {\n return this.store\n }\n\n register(plugins, rebuild=true) {\n var pluginSystem = combinePlugins(plugins, this.getSystem())\n systemExtend(this.system, pluginSystem)\n if(rebuild) {\n this.buildSystem()\n }\n\n const needAnotherRebuild = callAfterLoad.call(this.system, plugins, this.getSystem())\n\n if(needAnotherRebuild) {\n this.buildSystem()\n }\n }\n\n buildSystem(buildReducer=true) {\n let dispatch = this.getStore().dispatch\n let getState = this.getStore().getState\n\n this.boundSystem = Object.assign({},\n this.getRootInjects(),\n this.getWrappedAndBoundActions(dispatch),\n this.getWrappedAndBoundSelectors(getState, this.getSystem),\n this.getStateThunks(getState),\n this.getFn(),\n this.getConfigs()\n )\n\n if(buildReducer)\n this.rebuildReducer()\n }\n\n _getSystem() {\n return this.boundSystem\n }\n\n getRootInjects() {\n return Object.assign({\n getSystem: this.getSystem,\n getStore: this.getStore.bind(this),\n getComponents: this.getComponents.bind(this),\n getState: this.getStore().getState,\n getConfigs: this._getConfigs.bind(this),\n Im,\n React\n }, this.system.rootInjects || {})\n }\n\n _getConfigs(){\n return this.system.configs\n }\n\n getConfigs() {\n return {\n configs: this.system.configs\n }\n }\n\n setConfigs(configs) {\n this.system.configs = configs\n }\n\n rebuildReducer() {\n this.store.replaceReducer(buildReducer(this.system.statePlugins))\n }\n\n /**\n * Generic getter from system.statePlugins\n *\n */\n getType(name) {\n let upName = name[0].toUpperCase() + name.slice(1)\n return objReduce(this.system.statePlugins, (val, namespace) => {\n let thing = val[name]\n if(thing)\n return {[namespace+upName]: thing}\n })\n }\n\n getSelectors() {\n return this.getType(\"selectors\")\n }\n\n getActions() {\n let actionHolders = this.getType(\"actions\")\n\n return objMap(actionHolders, (actions) => {\n return objReduce(actions, (action, actionName) => {\n if(isFn(action))\n return {[actionName]: action}\n })\n })\n }\n\n getWrappedAndBoundActions(dispatch) {\n let actionGroups = this.getBoundActions(dispatch)\n return objMap(actionGroups, (actions, actionGroupName) => {\n let wrappers = this.system.statePlugins[actionGroupName.slice(0,-7)].wrapActions\n if(wrappers) {\n return objMap(actions, (action, actionName) => {\n let wrap = wrappers[actionName]\n if(!wrap) {\n return action\n }\n\n if(!Array.isArray(wrap)) {\n wrap = [wrap]\n }\n return wrap.reduce((acc, fn) => {\n let newAction = (...args) => {\n return fn(acc, this.getSystem())(...args)\n }\n if(!isFn(newAction)) {\n throw new TypeError(\"wrapActions needs to return a function that returns a new function (ie the wrapped action)\")\n }\n return wrapWithTryCatch(newAction)\n }, action || Function.prototype)\n })\n }\n return actions\n })\n }\n\n getWrappedAndBoundSelectors(getState, getSystem) {\n let selectorGroups = this.getBoundSelectors(getState, getSystem)\n return objMap(selectorGroups, (selectors, selectorGroupName) => {\n let stateName = [selectorGroupName.slice(0, -9)] // selectors = 9 chars\n let wrappers = this.system.statePlugins[stateName].wrapSelectors\n if(wrappers) {\n return objMap(selectors, (selector, selectorName) => {\n let wrap = wrappers[selectorName]\n if(!wrap) {\n return selector\n }\n\n if(!Array.isArray(wrap)) {\n wrap = [wrap]\n }\n return wrap.reduce((acc, fn) => {\n let wrappedSelector = (...args) => {\n return fn(acc, this.getSystem())(getState().getIn(stateName), ...args)\n }\n if(!isFn(wrappedSelector)) {\n throw new TypeError(\"wrapSelector needs to return a function that returns a new function (ie the wrapped action)\")\n }\n return wrappedSelector\n }, selector || Function.prototype)\n })\n }\n return selectors\n })\n }\n\n getStates(state) {\n return Object.keys(this.system.statePlugins).reduce((obj, key) => {\n obj[key] = state.get(key)\n return obj\n }, {})\n }\n\n getStateThunks(getState) {\n return Object.keys(this.system.statePlugins).reduce((obj, key) => {\n obj[key] = ()=> getState().get(key)\n return obj\n }, {})\n }\n\n getFn() {\n return {\n fn: this.system.fn\n }\n }\n\n getComponents(component) {\n const res = this.system.components[component]\n\n if(Array.isArray(res)) {\n return res.reduce((ori, wrapper) => {\n return wrapper(ori, this.getSystem())\n })\n }\n if(typeof component !== \"undefined\") {\n return this.system.components[component]\n }\n\n return this.system.components\n }\n\n getBoundSelectors(getState, getSystem) {\n return objMap(this.getSelectors(), (obj, key) => {\n let stateName = [key.slice(0, -9)] // selectors = 9 chars\n const getNestedState = ()=> getState().getIn(stateName)\n\n return objMap(obj, (fn) => {\n return (...args) => {\n let res = wrapWithTryCatch(fn).apply(null, [getNestedState(), ...args])\n\n // If a selector returns a function, give it the system - for advanced usage\n if(typeof(res) === \"function\")\n res = wrapWithTryCatch(res)(getSystem())\n\n return res\n }\n })\n })\n }\n\n getBoundActions(dispatch) {\n\n dispatch = dispatch || this.getStore().dispatch\n\n const actions = this.getActions()\n\n const process = creator =>{\n if( typeof( creator ) !== \"function\" ) {\n return objMap(creator, prop => process(prop))\n }\n\n return ( ...args )=>{\n var action = null\n try{\n action = creator( ...args )\n }\n catch( e ){\n action = {type: NEW_THROWN_ERR, error: true, payload: serializeError(e) }\n }\n finally{\n return action // eslint-disable-line no-unsafe-finally\n }\n }\n\n }\n return objMap(actions, actionCreator => bindActionCreators( process( actionCreator ), dispatch ) )\n }\n\n getMapStateToProps() {\n return () => {\n return Object.assign({}, this.getSystem())\n }\n }\n\n getMapDispatchToProps(extras) {\n return (dispatch) => {\n return deepExtend({}, this.getWrappedAndBoundActions(dispatch), this.getFn(), extras)\n }\n }\n\n}\n\nfunction combinePlugins(plugins, toolbox) {\n if(isObject(plugins) && !isArray(plugins)) {\n return merge({}, plugins)\n }\n\n if(isFunc(plugins)) {\n return combinePlugins(plugins(toolbox), toolbox)\n }\n\n if(isArray(plugins)) {\n return plugins\n .map(plugin => combinePlugins(plugin, toolbox))\n .reduce(systemExtend, { components: toolbox.getComponents() })\n }\n\n return {}\n}\n\nfunction callAfterLoad(plugins, system, { hasLoaded } = {}) {\n let calledSomething = hasLoaded\n if(isObject(plugins) && !isArray(plugins)) {\n if(typeof plugins.afterLoad === \"function\") {\n calledSomething = true\n wrapWithTryCatch(plugins.afterLoad).call(this, system)\n }\n }\n\n if(isFunc(plugins))\n return callAfterLoad.call(this, plugins(system), system, { hasLoaded: calledSomething })\n\n if(isArray(plugins)) {\n return plugins.map(plugin => callAfterLoad.call(this, plugin, system, { hasLoaded: calledSomething }))\n }\n\n return calledSomething\n}\n\n// Wraps deepExtend, to account for certain fields, being wrappers.\n// Ie: we need to convert some fields into arrays, and append to them.\n// Rather than overwrite\nfunction systemExtend(dest={}, src={}) {\n\n if(!isObject(dest)) {\n return {}\n }\n if(!isObject(src)) {\n return dest\n }\n\n // Wrap components\n // Parses existing components in the system, and prepares them for wrapping via getComponents\n if(src.wrapComponents) {\n objMap(src.wrapComponents, (wrapperFn, key) => {\n const ori = dest.components && dest.components[key]\n if(ori && Array.isArray(ori)) {\n dest.components[key] = ori.concat([wrapperFn])\n delete src.wrapComponents[key]\n } else if(ori) {\n dest.components[key] = [ori, wrapperFn]\n delete src.wrapComponents[key]\n }\n })\n\n if(!Object.keys(src.wrapComponents).length) {\n // only delete wrapComponents if we've matched all of our wrappers to components\n // this handles cases where the component to wrap may be out of our scope,\n // but a higher recursive `combinePlugins` call will be able to handle it.\n delete src.wrapComponents\n }\n }\n\n\n // Account for wrapActions, make it an array and append to it\n // Modifies `src`\n // 80% of this code is just safe traversal. We need to address that ( ie: use a lib )\n const { statePlugins } = dest\n if(isObject(statePlugins)) {\n for(let namespace in statePlugins) {\n const namespaceObj = statePlugins[namespace]\n if(!isObject(namespaceObj)) {\n continue\n }\n\n const { wrapActions, wrapSelectors } = namespaceObj\n\n // process action wrapping\n if (isObject(wrapActions)) {\n for(let actionName in wrapActions) {\n let action = wrapActions[actionName]\n\n // This should only happen if dest is the first plugin, since invocations after that will ensure its an array\n if(!Array.isArray(action)) {\n action = [action]\n wrapActions[actionName] = action // Put the value inside an array\n }\n\n if(src && src.statePlugins && src.statePlugins[namespace] && src.statePlugins[namespace].wrapActions && src.statePlugins[namespace].wrapActions[actionName]) {\n src.statePlugins[namespace].wrapActions[actionName] = wrapActions[actionName].concat(src.statePlugins[namespace].wrapActions[actionName])\n }\n\n }\n }\n\n // process selector wrapping\n if (isObject(wrapSelectors)) {\n for(let selectorName in wrapSelectors) {\n let selector = wrapSelectors[selectorName]\n\n // This should only happen if dest is the first plugin, since invocations after that will ensure its an array\n if(!Array.isArray(selector)) {\n selector = [selector]\n wrapSelectors[selectorName] = selector // Put the value inside an array\n }\n\n if(src && src.statePlugins && src.statePlugins[namespace] && src.statePlugins[namespace].wrapSelectors && src.statePlugins[namespace].wrapSelectors[selectorName]) {\n src.statePlugins[namespace].wrapSelectors[selectorName] = wrapSelectors[selectorName].concat(src.statePlugins[namespace].wrapSelectors[selectorName])\n }\n\n }\n }\n }\n }\n\n return deepExtend(dest, src)\n}\n\nfunction buildReducer(states) {\n let reducerObj = objMap(states, (val) => {\n return val.reducers\n })\n return allReducers(reducerObj)\n}\n\nfunction allReducers(reducerSystem) {\n let reducers = Object.keys(reducerSystem).reduce((obj, key) => {\n obj[key] = makeReducer(reducerSystem[key])\n return obj\n },{})\n\n if(!Object.keys(reducers).length) {\n return idFn\n }\n\n return combineReducers(reducers)\n}\n\nfunction makeReducer(reducerObj) {\n return (state = new Map(), action) => {\n if(!reducerObj)\n return state\n\n let redFn = (reducerObj[action.type])\n if(redFn) {\n const res = wrapWithTryCatch(redFn)(state, action)\n // If the try/catch wrapper kicks in, we'll get null back...\n // in that case, we want to avoid making any changes to state\n return res === null ? state : res\n }\n return state\n }\n}\n\nfunction wrapWithTryCatch(fn, {\n logErrors = true\n} = {}) {\n if(typeof fn !== \"function\") {\n return fn\n }\n\n return function(...args) {\n try {\n return fn.call(this, ...args)\n } catch(e) {\n if(logErrors) {\n console.error(e)\n }\n return null\n }\n }\n}\n\nfunction configureStore(rootReducer, initialState, getSystem) {\n const store = createStoreWithMiddleware(rootReducer, initialState, getSystem)\n\n // if (module.hot) {\n // // Enable Webpack hot module replacement for reducers\n // module.hot.accept(\"reducers/index\", () => {\n // const nextRootReducer = require(\"reducers/index\")\n // store.replaceReducer(nextRootReducer)\n // })\n // }\n\n return store\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"url-parse\");","import parseUrl from \"url-parse\"\nimport win from \"core/window\"\nimport { btoa, buildFormData } from \"core/utils\"\n\nexport const SHOW_AUTH_POPUP = \"show_popup\"\nexport const AUTHORIZE = \"authorize\"\nexport const LOGOUT = \"logout\"\nexport const PRE_AUTHORIZE_OAUTH2 = \"pre_authorize_oauth2\"\nexport const AUTHORIZE_OAUTH2 = \"authorize_oauth2\"\nexport const VALIDATE = \"validate\"\nexport const CONFIGURE_AUTH = \"configure_auth\"\nexport const RESTORE_AUTHORIZATION = \"restore_authorization\"\n\nconst scopeSeparator = \" \"\n\nexport function showDefinitions(payload) {\n return {\n type: SHOW_AUTH_POPUP,\n payload: payload\n }\n}\n\nexport function authorize(payload) {\n return {\n type: AUTHORIZE,\n payload: payload\n }\n}\n\nexport const authorizeWithPersistOption = (payload) => ( { authActions } ) => {\n authActions.authorize(payload)\n authActions.persistAuthorizationIfNeeded()\n}\n\nexport function logout(payload) {\n return {\n type: LOGOUT,\n payload: payload\n }\n}\n\nexport const logoutWithPersistOption = (payload) => ( { authActions } ) => {\n authActions.logout(payload)\n authActions.persistAuthorizationIfNeeded()\n}\n\nexport const preAuthorizeImplicit = (payload) => ( { authActions, errActions } ) => {\n let { auth , token, isValid } = payload\n let { schema, name } = auth\n let flow = schema.get(\"flow\")\n\n // remove oauth2 property from window after redirect from authentication\n delete win.swaggerUIRedirectOauth2\n\n if ( flow !== \"accessCode\" && !isValid ) {\n errActions.newAuthErr( {\n authId: name,\n source: \"auth\",\n level: \"warning\",\n message: \"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server\"\n })\n }\n\n if ( token.error ) {\n errActions.newAuthErr({\n authId: name,\n source: \"auth\",\n level: \"error\",\n message: JSON.stringify(token)\n })\n return\n }\n\n authActions.authorizeOauth2WithPersistOption({ auth, token })\n}\n\n\nexport function authorizeOauth2(payload) {\n return {\n type: AUTHORIZE_OAUTH2,\n payload: payload\n }\n}\n\n\nexport const authorizeOauth2WithPersistOption = (payload) => ( { authActions } ) => {\n authActions.authorizeOauth2(payload)\n authActions.persistAuthorizationIfNeeded()\n}\n\nexport const authorizePassword = ( auth ) => ( { authActions } ) => {\n let { schema, name, username, password, passwordType, clientId, clientSecret } = auth\n let form = {\n grant_type: \"password\",\n scope: auth.scopes.join(scopeSeparator),\n username,\n password\n }\n let query = {}\n let headers = {}\n\n switch (passwordType) {\n case \"request-body\":\n setClientIdAndSecret(form, clientId, clientSecret)\n break\n\n case \"basic\":\n headers.Authorization = \"Basic \" + btoa(clientId + \":\" + clientSecret)\n break\n default:\n console.warn(`Warning: invalid passwordType ${passwordType} was passed, not including client id and secret`)\n }\n\n return authActions.authorizeRequest({ body: buildFormData(form), url: schema.get(\"tokenUrl\"), name, headers, query, auth})\n}\n\nfunction setClientIdAndSecret(target, clientId, clientSecret) {\n if ( clientId ) {\n Object.assign(target, {client_id: clientId})\n }\n\n if ( clientSecret ) {\n Object.assign(target, {client_secret: clientSecret})\n }\n}\n\nexport const authorizeApplication = ( auth ) => ( { authActions } ) => {\n let { schema, scopes, name, clientId, clientSecret } = auth\n let headers = {\n Authorization: \"Basic \" + btoa(clientId + \":\" + clientSecret)\n }\n let form = {\n grant_type: \"client_credentials\",\n scope: scopes.join(scopeSeparator)\n }\n\n return authActions.authorizeRequest({body: buildFormData(form), name, url: schema.get(\"tokenUrl\"), auth, headers })\n}\n\nexport const authorizeAccessCodeWithFormParams = ( { auth, redirectUrl } ) => ( { authActions } ) => {\n let { schema, name, clientId, clientSecret, codeVerifier } = auth\n let form = {\n grant_type: \"authorization_code\",\n code: auth.code,\n client_id: clientId,\n client_secret: clientSecret,\n redirect_uri: redirectUrl,\n code_verifier: codeVerifier\n }\n\n return authActions.authorizeRequest({body: buildFormData(form), name, url: schema.get(\"tokenUrl\"), auth})\n}\n\nexport const authorizeAccessCodeWithBasicAuthentication = ( { auth, redirectUrl } ) => ( { authActions } ) => {\n let { schema, name, clientId, clientSecret, codeVerifier } = auth\n let headers = {\n Authorization: \"Basic \" + btoa(clientId + \":\" + clientSecret)\n }\n let form = {\n grant_type: \"authorization_code\",\n code: auth.code,\n client_id: clientId,\n redirect_uri: redirectUrl,\n code_verifier: codeVerifier\n }\n\n return authActions.authorizeRequest({body: buildFormData(form), name, url: schema.get(\"tokenUrl\"), auth, headers})\n}\n\nexport const authorizeRequest = ( data ) => ( { fn, getConfigs, authActions, errActions, oas3Selectors, specSelectors, authSelectors } ) => {\n let { body, query={}, headers={}, name, url, auth } = data\n\n let { additionalQueryStringParams } = authSelectors.getConfigs() || {}\n\n let parsedUrl\n\n if (specSelectors.isOAS3()) {\n let finalServerUrl = oas3Selectors.serverEffectiveValue(oas3Selectors.selectedServer())\n parsedUrl = parseUrl(url, finalServerUrl, true)\n } else {\n parsedUrl = parseUrl(url, specSelectors.url(), true)\n }\n\n if(typeof additionalQueryStringParams === \"object\") {\n parsedUrl.query = Object.assign({}, parsedUrl.query, additionalQueryStringParams)\n }\n\n const fetchUrl = parsedUrl.toString()\n\n let _headers = Object.assign({\n \"Accept\":\"application/json, text/plain, */*\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n }, headers)\n\n fn.fetch({\n url: fetchUrl,\n method: \"post\",\n headers: _headers,\n query: query,\n body: body,\n requestInterceptor: getConfigs().requestInterceptor,\n responseInterceptor: getConfigs().responseInterceptor\n })\n .then(function (response) {\n let token = JSON.parse(response.data)\n let error = token && ( token.error || \"\" )\n let parseError = token && ( token.parseError || \"\" )\n\n if ( !response.ok ) {\n errActions.newAuthErr( {\n authId: name,\n level: \"error\",\n source: \"auth\",\n message: response.statusText\n } )\n return\n }\n\n if ( error || parseError ) {\n errActions.newAuthErr({\n authId: name,\n level: \"error\",\n source: \"auth\",\n message: JSON.stringify(token)\n })\n return\n }\n\n authActions.authorizeOauth2WithPersistOption({ auth, token})\n })\n .catch(e => {\n let err = new Error(e)\n let message = err.message\n // swagger-js wraps the response (if available) into the e.response property;\n // investigate to check whether there are more details on why the authorization\n // request failed (according to RFC 6479).\n // See also https://github.com/swagger-api/swagger-ui/issues/4048\n if (e.response && e.response.data) {\n const errData = e.response.data\n try {\n const jsonResponse = typeof errData === \"string\" ? JSON.parse(errData) : errData\n if (jsonResponse.error)\n message += `, error: ${jsonResponse.error}`\n if (jsonResponse.error_description)\n message += `, description: ${jsonResponse.error_description}`\n } catch (jsonError) {\n // Ignore\n }\n }\n errActions.newAuthErr( {\n authId: name,\n level: \"error\",\n source: \"auth\",\n message: message\n } )\n })\n}\n\nexport function configureAuth(payload) {\n return {\n type: CONFIGURE_AUTH,\n payload: payload\n }\n}\n\nexport function restoreAuthorization(payload) {\n return {\n type: RESTORE_AUTHORIZATION,\n payload: payload\n }\n}\n\nexport const persistAuthorizationIfNeeded = () => ( { authSelectors, getConfigs } ) => {\n const configs = getConfigs()\n\n if (!configs.persistAuthorization) return\n\n // persist authorization to local storage\n const authorized = authSelectors.authorized().toJS()\n localStorage.setItem(\"authorized\", JSON.stringify(authorized))\n}\n\nexport const authPopup = (url, swaggerUIRedirectOauth2) => ( ) => {\n win.swaggerUIRedirectOauth2 = swaggerUIRedirectOauth2\n\n win.open(url)\n}\n","import { fromJS, Map } from \"immutable\"\nimport { btoa, isFunc } from \"core/utils\"\n\nimport {\n SHOW_AUTH_POPUP,\n AUTHORIZE,\n AUTHORIZE_OAUTH2,\n LOGOUT,\n CONFIGURE_AUTH,\n RESTORE_AUTHORIZATION\n} from \"./actions\"\n\nexport default {\n [SHOW_AUTH_POPUP]: (state, { payload } ) =>{\n return state.set( \"showDefinitions\", payload )\n },\n\n [AUTHORIZE]: (state, { payload } ) =>{\n let securities = fromJS(payload)\n let map = state.get(\"authorized\") || Map()\n\n // refactor withMutations\n securities.entrySeq().forEach( ([ key, security ]) => {\n if (!isFunc(security.getIn)) {\n return state.set(\"authorized\", map)\n }\n let type = security.getIn([\"schema\", \"type\"])\n\n if ( type === \"apiKey\" || type === \"http\" ) {\n map = map.set(key, security)\n } else if ( type === \"basic\" ) {\n let username = security.getIn([\"value\", \"username\"])\n let password = security.getIn([\"value\", \"password\"])\n\n map = map.setIn([key, \"value\"], {\n username: username,\n header: \"Basic \" + btoa(username + \":\" + password)\n })\n\n map = map.setIn([key, \"schema\"], security.get(\"schema\"))\n }\n })\n\n return state.set( \"authorized\", map )\n },\n\n [AUTHORIZE_OAUTH2]: (state, { payload } ) =>{\n let { auth, token } = payload\n let parsedAuth\n\n auth.token = Object.assign({}, token)\n parsedAuth = fromJS(auth)\n\n let map = state.get(\"authorized\") || Map()\n map = map.set(parsedAuth.get(\"name\"), parsedAuth)\n \n return state.set( \"authorized\", map )\n },\n\n [LOGOUT]: (state, { payload } ) =>{\n let result = state.get(\"authorized\").withMutations((authorized) => {\n payload.forEach((auth) => {\n authorized.delete(auth)\n })\n })\n\n return state.set(\"authorized\", result)\n },\n\n [CONFIGURE_AUTH]: (state, { payload } ) =>{\n return state.set(\"configs\", payload)\n },\n\n [RESTORE_AUTHORIZATION]: (state, { payload } ) =>{ \n return state.set(\"authorized\", fromJS(payload.authorized))\n },\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"reselect\");","import { createSelector } from \"reselect\"\nimport { List, Map } from \"immutable\"\n\nconst state = state => state\n\nexport const shownDefinitions = createSelector(\n state,\n auth => auth.get( \"showDefinitions\" )\n)\n\nexport const definitionsToAuthorize = createSelector(\n state,\n () => ( { specSelectors } ) => {\n let definitions = specSelectors.securityDefinitions() || Map({})\n let list = List()\n\n //todo refactor\n definitions.entrySeq().forEach( ([ key, val ]) => {\n let map = Map()\n\n map = map.set(key, val)\n list = list.push(map)\n })\n\n return list\n }\n)\n\n\nexport const getDefinitionsByNames = ( state, securities ) => ( { specSelectors } ) => {\n console.warn(\"WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.\")\n let securityDefinitions = specSelectors.securityDefinitions()\n let result = List()\n\n securities.valueSeq().forEach( (names) => {\n let map = Map()\n names.entrySeq().forEach( ([name, scopes]) => {\n let definition = securityDefinitions.get(name)\n let allowedScopes\n\n if ( definition.get(\"type\") === \"oauth2\" && scopes.size ) {\n allowedScopes = definition.get(\"scopes\")\n\n allowedScopes.keySeq().forEach( (key) => {\n if ( !scopes.contains(key) ) {\n allowedScopes = allowedScopes.delete(key)\n }\n })\n\n definition = definition.set(\"allowedScopes\", allowedScopes)\n }\n\n map = map.set(name, definition)\n })\n\n result = result.push(map)\n })\n\n return result\n}\n\nexport const definitionsForRequirements = (state, securities = List()) => ({ authSelectors }) => {\n const allDefinitions = authSelectors.definitionsToAuthorize() || List()\n let result = List()\n allDefinitions.forEach( (definition) => {\n let security = securities.find(sec => sec.get(definition.keySeq().first()))\n if ( security ) {\n definition.forEach( (props, name) => {\n if ( props.get(\"type\") === \"oauth2\" ) {\n const securityScopes = security.get(name)\n let definitionScopes = props.get(\"scopes\")\n if( List.isList(securityScopes) && Map.isMap(definitionScopes) ) {\n definitionScopes.keySeq().forEach( (key) => {\n if ( !securityScopes.contains(key) ) {\n definitionScopes = definitionScopes.delete(key)\n }\n })\n definition = definition.set(name, props.set(\"scopes\", definitionScopes))\n }\n }\n })\n result = result.push(definition)\n }\n })\n return result\n}\n\nexport const authorized = createSelector(\n state,\n auth => auth.get(\"authorized\") || Map()\n)\n\n\nexport const isAuthorized = ( state, securities ) => ( { authSelectors } ) => {\n let authorized = authSelectors.authorized()\n\n if(!List.isList(securities)) {\n return null\n }\n\n return !!securities.toJS().filter( ( security ) => {\n let isAuthorized = true\n\n return Object.keys(security).map((key) => {\n return !isAuthorized || !!authorized.get(key)\n }).indexOf(false) === -1\n }).length\n}\n\nexport const getConfigs = createSelector(\n state,\n auth => auth.get( \"configs\" )\n)\n","// Add security to the final `execute` call ( via `extras` )\nexport const execute = ( oriAction, { authSelectors, specSelectors }) => ({ path, method, operation, extras }) => {\n let securities = {\n authorized: authSelectors.authorized() && authSelectors.authorized().toJS(),\n definitions: specSelectors.securityDefinitions() && specSelectors.securityDefinitions().toJS(),\n specSecurity: specSelectors.security() && specSelectors.security().toJS()\n }\n\n return oriAction({ path, method, operation, securities, ...extras })\n}\n","/**\n * @prettier\n */\nexport const loaded = (oriAction, system) => (payload) => {\n const { getConfigs, authActions } = system\n const configs = getConfigs()\n\n oriAction(payload)\n\n // check if we should restore authorization data from localStorage\n if (configs.persistAuthorization) {\n const authorized = localStorage.getItem(\"authorized\")\n if (authorized) {\n authActions.restoreAuthorization({\n authorized: JSON.parse(authorized),\n })\n }\n }\n}\n","/**\n * @prettier\n */\n\n/**\n * `authorize` and `logout` wrapped actions provide capacity\n * to persist cookie based apiKey in document.cookie.\n *\n * `persistAuthorization` SwaggerUI options needs to set to `true`\n * for document.cookie persistence to work.\n */\nexport const authorize = (oriAction, system) => (payload) => {\n oriAction(payload)\n\n const configs = system.getConfigs()\n\n if (!configs.persistAuthorization) return\n\n // create cookie\n try {\n const [{ schema, value }] = Object.values(payload)\n const isApiKeyAuth = schema.get(\"type\") === \"apiKey\"\n const isInCookie = schema.get(\"in\") === \"cookie\"\n const isApiKeyInCookie = isApiKeyAuth && isInCookie\n\n if (isApiKeyInCookie) {\n document.cookie = `${schema.get(\"name\")}=${value}; SameSite=None; Secure`\n }\n } catch (error) {\n console.error(\n \"Error persisting cookie based apiKey in document.cookie.\",\n error\n )\n }\n}\n\nexport const logout = (oriAction, system) => (payload) => {\n const configs = system.getConfigs()\n const authorized = system.authSelectors.authorized()\n\n // deleting cookie\n try {\n if (configs.persistAuthorization && Array.isArray(payload)) {\n payload.forEach((authorizedName) => {\n const auth = authorized.get(authorizedName, {})\n const isApiKeyAuth = auth.getIn([\"schema\", \"type\"]) === \"apiKey\"\n const isInCookie = auth.getIn([\"schema\", \"in\"]) === \"cookie\"\n const isApiKeyInCookie = isApiKeyAuth && isInCookie\n\n if (isApiKeyInCookie) {\n const cookieName = auth.getIn([\"schema\", \"name\"])\n document.cookie = `${cookieName}=; Max-Age=-99999999`\n }\n })\n }\n } catch (error) {\n console.error(\n \"Error deleting cookie based apiKey from document.cookie.\",\n error\n )\n }\n\n oriAction(payload)\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/omit\");","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport omit from \"lodash/omit\"\n\nclass LockAuthIcon extends React.Component {\n mapStateToProps(state, props) {\n const ownProps = omit(props, Object.keys(props.getSystem()))\n return { state, ownProps }\n }\n\n render() {\n const { getComponent, ownProps } = this.props\n const LockIcon = getComponent(\"LockIcon\")\n\n return \n }\n}\n\nLockAuthIcon.propTypes = {\n getComponent: PropTypes.func.isRequired,\n ownProps: PropTypes.shape({}).isRequired,\n}\n\nexport default LockAuthIcon\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport omit from \"lodash/omit\"\n\nclass UnlockAuthIcon extends React.Component {\n mapStateToProps(state, props) {\n const ownProps = omit(props, Object.keys(props.getSystem()))\n return { state, ownProps }\n }\n\n render() {\n const { getComponent, ownProps } = this.props\n const UnlockIcon = getComponent(\"UnlockIcon\")\n\n return \n }\n}\n\nUnlockAuthIcon.propTypes = {\n getComponent: PropTypes.func.isRequired,\n ownProps: PropTypes.shape({}).isRequired,\n}\n\nexport default UnlockAuthIcon\n","import reducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport { execute as wrappedExecuteAction } from \"./spec-extensions/wrap-actions\"\nimport { loaded as wrappedLoadedAction } from \"./configs-extensions/wrap-actions\"\nimport { authorize as wrappedAuthorizeAction, logout as wrappedLogoutAction } from \"./wrap-actions\"\n\nimport LockAuthIcon from \"./components/lock-auth-icon\"\nimport UnlockAuthIcon from \"./components/unlock-auth-icon\"\n\nexport default function() {\n return {\n afterLoad(system) {\n this.rootInjects = this.rootInjects || {}\n this.rootInjects.initOAuth = system.authActions.configureAuth\n this.rootInjects.preauthorizeApiKey = preauthorizeApiKey.bind(null, system)\n this.rootInjects.preauthorizeBasic = preauthorizeBasic.bind(null, system)\n },\n components: {\n LockAuthIcon: LockAuthIcon,\n UnlockAuthIcon: UnlockAuthIcon,\n LockAuthOperationIcon: LockAuthIcon,\n UnlockAuthOperationIcon: UnlockAuthIcon,\n },\n statePlugins: {\n auth: {\n reducers,\n actions,\n selectors,\n wrapActions: {\n authorize: wrappedAuthorizeAction,\n logout: wrappedLogoutAction,\n }\n },\n configs: {\n wrapActions: {\n loaded: wrappedLoadedAction,\n },\n },\n spec: {\n wrapActions: {\n execute: wrappedExecuteAction,\n },\n },\n }\n }\n}\n\nexport function preauthorizeBasic(system, key, username, password) {\n const {\n authActions: { authorize },\n specSelectors: { specJson, isOAS3 }\n } = system\n\n const definitionBase = isOAS3() ? [\"components\", \"securitySchemes\"] : [\"securityDefinitions\"]\n\n const schema = specJson().getIn([...definitionBase, key])\n\n if(!schema) {\n return null\n }\n\n return authorize({\n [key]: {\n value: {\n username,\n password,\n },\n schema: schema.toJS()\n }\n })\n}\n\nexport function preauthorizeApiKey(system, key, value) {\n const {\n authActions: { authorize },\n specSelectors: { specJson, isOAS3 }\n } = system\n\n const definitionBase = isOAS3() ? [\"components\", \"securitySchemes\"] : [\"securityDefinitions\"]\n\n const schema = specJson().getIn([...definitionBase, key])\n\n if(!schema) {\n return null\n }\n\n return authorize({\n [key]: {\n value,\n schema: schema.toJS()\n }\n })\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"js-yaml\");","import YAML from \"js-yaml\"\n\nexport const parseConfig = (yaml, system) => {\n try {\n return YAML.load(yaml)\n } catch(e) {\n if (system) {\n system.errActions.newThrownErr( new Error(e) )\n }\n return {}\n }\n}\n","/**\n * @prettier\n */\nimport { parseConfig } from \"./fn\"\n\nexport const UPDATE_CONFIGS = \"configs_update\"\nexport const TOGGLE_CONFIGS = \"configs_toggle\"\n\n// Update the configs, with a merge ( not deep )\nexport function update(configName, configValue) {\n return {\n type: UPDATE_CONFIGS,\n payload: {\n [configName]: configValue,\n },\n }\n}\n\n// Toggle's the config, by name\nexport function toggle(configName) {\n return {\n type: TOGGLE_CONFIGS,\n payload: configName,\n }\n}\n\n// Hook\nexport const loaded = () => () => {\n // noop\n}\n\nexport const downloadConfig = (req) => (system) => {\n const {\n fn: { fetch },\n } = system\n\n return fetch(req)\n}\n\nexport const getConfigByUrl = (req, cb) => (system) => {\n const { specActions, configsActions } = system\n\n if (req) {\n return configsActions.downloadConfig(req).then(next, next)\n }\n\n function next(res) {\n if (res instanceof Error || res.status >= 400) {\n specActions.updateLoadingStatus(\"failedConfig\")\n specActions.updateLoadingStatus(\"failedConfig\")\n specActions.updateUrl(\"\")\n console.error(res.statusText + \" \" + req.url)\n cb(null)\n } else {\n cb(parseConfig(res.text, system))\n }\n }\n}\n","// Just get the config value ( it can possibly be an immutable object)\nexport const get = (state, path) => {\n return state.getIn(Array.isArray(path) ? path : [path])\n}\n","import { fromJS } from \"immutable\"\n\nimport {\n\tUPDATE_CONFIGS,\n\tTOGGLE_CONFIGS,\n} from \"./actions\"\n\nexport default {\n\n [UPDATE_CONFIGS]: (state, action) => {\n return state.merge(fromJS(action.payload))\n },\n\n [TOGGLE_CONFIGS]: (state, action) => {\n const configName = action.payload\n const oriVal = state.get(configName)\n return state.set(configName, !oriVal)\n },\n\n}\n","import * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport reducers from \"./reducers\"\n\nexport default function configsPlugin() {\n\n return {\n statePlugins: {\n configs: {\n reducers,\n actions,\n selectors,\n }\n }\n }\n}\n","export const setHash = (value) => {\n if(value) {\n return history.pushState(null, null, `#${value}`)\n } else {\n return window.location.hash = \"\"\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"zenscroll\");","import { setHash } from \"./helpers\"\nimport zenscroll from \"zenscroll\"\nimport { createDeepLinkPath } from \"core/utils\"\nimport Im, { fromJS } from \"immutable\"\n\nconst SCROLL_TO = \"layout_scroll_to\"\nconst CLEAR_SCROLL_TO = \"layout_clear_scroll\"\n\nexport const show = (ori, { getConfigs, layoutSelectors }) => (...args) => {\n ori(...args)\n\n if(!getConfigs().deepLinking) {\n return\n }\n\n try {\n let [tokenArray, shown] = args\n //Coerce in to array\n tokenArray = Array.isArray(tokenArray) ? tokenArray : [tokenArray]\n // Convert into something we can put in the URL hash\n // Or return empty, if we cannot\n const urlHashArray = layoutSelectors.urlHashArrayFromIsShownKey(tokenArray) // Will convert\n\n // No hash friendly list?\n if(!urlHashArray.length)\n return\n\n const [type, assetName] = urlHashArray\n\n if (!shown) {\n return setHash(\"/\")\n }\n\n if (urlHashArray.length === 2) {\n setHash(createDeepLinkPath(`/${encodeURIComponent(type)}/${encodeURIComponent(assetName)}`))\n } else if (urlHashArray.length === 1) {\n setHash(createDeepLinkPath(`/${encodeURIComponent(type)}`))\n }\n\n } catch (e) {\n // This functionality is not mission critical, so if something goes wrong\n // we'll just move on\n console.error(e) // eslint-disable-line no-console\n }\n}\n\nexport const scrollTo = (path) => {\n return {\n type: SCROLL_TO,\n payload: Array.isArray(path) ? path : [path]\n }\n}\n\nexport const parseDeepLinkHash = (rawHash) => ({ layoutActions, layoutSelectors, getConfigs }) => {\n\n if(!getConfigs().deepLinking) {\n return\n }\n\n if(rawHash) {\n let hash = rawHash.slice(1) // # is first character\n\n\n if(hash[0] === \"!\") {\n // Parse UI 2.x shebangs\n hash = hash.slice(1)\n }\n\n if(hash[0] === \"/\") {\n // \"/pet/addPet\" => \"pet/addPet\"\n // makes the split result cleaner\n // also handles forgotten leading slash\n hash = hash.slice(1)\n }\n\n const hashArray = hash.split(\"/\").map(val => (val || \"\"))\n\n const isShownKey = layoutSelectors.isShownKeyFromUrlHashArray(hashArray)\n\n const [type, tagId = \"\", maybeOperationId = \"\"] = isShownKey\n\n if(type === \"operations\") {\n // we're going to show an operation, so we need to expand the tag as well\n const tagIsShownKey = layoutSelectors.isShownKeyFromUrlHashArray([tagId])\n\n // If an `_` is present, trigger the legacy escaping behavior to be safe\n // TODO: remove this in v4.0, it is deprecated\n if(tagId.indexOf(\"_\") > -1) {\n console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\")\n layoutActions.show(tagIsShownKey.map(val => val.replace(/_/g, \" \")), true)\n }\n\n layoutActions.show(tagIsShownKey, true)\n }\n\n // If an `_` is present, trigger the legacy escaping behavior to be safe\n // TODO: remove this in v4.0, it is deprecated\n if (tagId.indexOf(\"_\") > -1 || maybeOperationId.indexOf(\"_\") > -1) {\n console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\")\n layoutActions.show(isShownKey.map(val => val.replace(/_/g, \" \")), true)\n }\n\n layoutActions.show(isShownKey, true)\n\n // Scroll to the newly expanded entity\n layoutActions.scrollTo(isShownKey)\n }\n}\n\nexport const readyToScroll = (isShownKey, ref) => (system) => {\n const scrollToKey = system.layoutSelectors.getScrollToKey()\n\n if(Im.is(scrollToKey, fromJS(isShownKey))) {\n system.layoutActions.scrollToElement(ref)\n system.layoutActions.clearScrollTo()\n }\n}\n\n// Scroll to \"ref\" (dom node) with the scrollbar on \"container\" or the nearest parent\nexport const scrollToElement = (ref, container) => (system) => {\n try {\n container = container || system.fn.getScrollParent(ref)\n let myScroller = zenscroll.createScroller(container)\n myScroller.to(ref)\n } catch(e) {\n console.error(e) // eslint-disable-line no-console\n }\n}\n\nexport const clearScrollTo = () => {\n return {\n type: CLEAR_SCROLL_TO,\n }\n}\n\n// From: https://stackoverflow.com/a/42543908/3933724\n// Modified to return html instead of body element as last resort\nfunction getScrollParent(element, includeHidden) {\n const LAST_RESORT = document.documentElement\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === \"absolute\"\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n\n if (style.position === \"fixed\")\n return LAST_RESORT\n for (let parent = element; (parent = parent.parentElement);) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === \"static\") {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX))\n return parent\n }\n\n return LAST_RESORT\n}\n\nexport default {\n fn: {\n getScrollParent,\n },\n statePlugins: {\n layout: {\n actions: {\n scrollToElement,\n scrollTo,\n clearScrollTo,\n readyToScroll,\n parseDeepLinkHash\n },\n selectors: {\n getScrollToKey(state) {\n return state.get(\"scrollToKey\")\n },\n isShownKeyFromUrlHashArray(state, urlHashArray) {\n const [tag, operationId] = urlHashArray\n // We only put operations in the URL\n if(operationId) {\n return [\"operations\", tag, operationId]\n } else if (tag) {\n return [\"operations-tag\", tag]\n }\n return []\n },\n urlHashArrayFromIsShownKey(state, isShownKey) {\n let [type, tag, operationId] = isShownKey\n // We only put operations in the URL\n if(type == \"operations\") {\n return [tag, operationId]\n } else if (type == \"operations-tag\") {\n return [tag]\n }\n return []\n },\n },\n reducers: {\n [SCROLL_TO](state, action) {\n return state.set(\"scrollToKey\", Im.fromJS(action.payload))\n },\n [CLEAR_SCROLL_TO](state) {\n return state.delete(\"scrollToKey\")\n }\n },\n wrapActions: {\n show\n }\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-immutable-proptypes\");","import React from \"react\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst Wrapper = (Ori, system) => class OperationWrapper extends React.Component {\n\n static propTypes = {\n operation: ImPropTypes.map.isRequired,\n }\n\n onLoad = (ref) => {\n const { operation } = this.props\n const { tag, operationId } = operation.toObject()\n let { isShownKey } = operation.toObject()\n isShownKey = isShownKey || [\"operations\", tag, operationId]\n system.layoutActions.readyToScroll(isShownKey, ref)\n }\n\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport default Wrapper\n","import React from \"react\"\nimport { PropTypes } from \"prop-types\"\n\nconst Wrapper = (Ori, system) => class OperationTagWrapper extends React.Component {\n\n static propTypes = {\n tag: PropTypes.object.isRequired,\n }\n\n onLoad = (ref) => {\n const { tag } = this.props\n const isShownKey = [\"operations-tag\", tag]\n system.layoutActions.readyToScroll(isShownKey, ref)\n }\n\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport default Wrapper\n","import layout from \"./layout\"\nimport OperationWrapper from \"./operation-wrapper\"\nimport OperationTagWrapper from \"./operation-tag-wrapper\"\n\nexport default function() {\n return [layout, {\n statePlugins: {\n configs: {\n wrapActions: {\n loaded: (ori, system) => (...args) => {\n ori(...args)\n // location.hash was an UTF-16 String, here is required UTF-8\n const hash = decodeURIComponent(window.location.hash)\n system.layoutActions.parseDeepLinkHash(hash)\n }\n }\n }\n },\n wrapComponents: {\n operation: OperationWrapper,\n OperationTag: OperationTagWrapper,\n },\n }]\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/reduce\");","export function transform(errors) {\n // JSONSchema refers to the current object being validated\n // as 'instance'. This isn't helpful to users, so we remove it.\n return errors\n .map(err => {\n let seekStr = \"is not of a type(s)\"\n let i = err.get(\"message\").indexOf(seekStr)\n if(i > -1) {\n let types = err.get(\"message\").slice(i + seekStr.length).split(\",\")\n return err.set(\"message\", err.get(\"message\").slice(0, i) + makeNewMessage(types))\n } else {\n return err\n }\n })\n}\n\nfunction makeNewMessage(types) {\n return types.reduce((p, c, i, arr) => {\n if(i === arr.length - 1 && arr.length > 1) {\n return p + \"or \" + c\n } else if(arr[i+1] && arr.length > 2) {\n return p + c + \", \"\n } else if(arr[i+1]) {\n return p + c + \" \"\n } else {\n return p + c\n }\n }, \"should be a\")\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/get\");","import get from \"lodash/get\"\nimport { fromJS } from \"immutable\"\n\nexport function transform(errors, { jsSpec }) {\n // LOOK HERE THIS TRANSFORMER IS CURRENTLY DISABLED 😃\n // TODO: finish implementing, fix flattening problem\n /* eslint-disable no-unreachable */\n return errors\n\n\n // JSONSchema gives us very little to go on\n let searchStr = \"is not exactly one from <#/definitions/parameter>,<#/definitions/jsonReference>\"\n return errors\n .map(err => {\n let message = err.get(\"message\")\n let isParameterOneOfError = message.indexOf(searchStr) > -1\n if(isParameterOneOfError) {\n // try to find what's wrong\n return createTailoredParameterError(err, jsSpec)\n } else {\n return err\n }\n })\n .flatten(true) // shallow Immutable flatten\n}\n\nconst VALID_IN_VALUES = [\"path\", \"query\", \"header\", \"body\", \"formData\"]\nconst VALID_COLLECTIONFORMAT_VALUES = [\"csv\", \"ssv\", \"tsv\", \"pipes\", \"multi\"]\n\nfunction createTailoredParameterError(err, jsSpec) {\n let newErrs = []\n let parameter = get(jsSpec, err.get(\"path\"))\n\n // find addressable cases\n if(parameter.in && VALID_IN_VALUES.indexOf(parameter.in) === -1) {\n let message = `Wrong value for the \"in\" keyword. Expected one of: ${VALID_IN_VALUES.join(\", \")}.`\n newErrs.push({\n message,\n path: err.get(\"path\") + \".in\",\n type: \"spec\",\n source: \"structural\",\n level: \"error\"\n })\n }\n\n if(parameter.collectionFormat && VALID_COLLECTIONFORMAT_VALUES.indexOf(parameter.collectionFormat) === -1) {\n let message = `Wrong value for the \"collectionFormat\" keyword. Expected one of: ${VALID_COLLECTIONFORMAT_VALUES.join(\", \")}.`\n newErrs.push({\n message,\n path: err.get(\"path\") + \".collectionFormat\",\n type: \"spec\",\n source: \"structural\",\n level: \"error\"\n })\n }\n\n return newErrs.length ? fromJS(newErrs) : err // fall back to making no changes\n\n}\n","import reduce from \"lodash/reduce\"\nimport * as NotOfType from \"./transformers/not-of-type\"\nimport * as ParameterOneOf from \"./transformers/parameter-oneof\"\n\nconst errorTransformers = [\n NotOfType,\n ParameterOneOf\n]\n\nexport default function transformErrors (errors) {\n // Dev note: unimplemented artifact where\n // jsSpec: system.specSelectors.specJS()\n // regardless, to be compliant with redux@4, instead of calling the store method here,\n // jsSpec should be pass down as an argument,\n let inputs = {\n jsSpec: {}\n }\n\n let transformedErrors = reduce(errorTransformers, (result, transformer) => {\n try {\n let newlyTransformedErrors = transformer.transform(result, inputs)\n return newlyTransformedErrors.filter(err => !!err) // filter removed errors\n } catch(e) {\n console.error(\"Transformer error:\", e)\n return result\n }\n }, errors)\n\n return transformedErrors\n .filter(err => !!err) // filter removed errors\n .map(err => {\n if(!err.get(\"line\") && err.get(\"path\")) {\n // TODO: re-resolve line number if we've transformed it away\n }\n return err\n })\n\n}\n","import {\n NEW_THROWN_ERR,\n NEW_THROWN_ERR_BATCH,\n NEW_SPEC_ERR,\n NEW_SPEC_ERR_BATCH,\n NEW_AUTH_ERR,\n CLEAR,\n CLEAR_BY,\n} from \"./actions\"\n\nimport { fromJS, List } from \"immutable\"\n\nimport transformErrors from \"./error-transformers/hook\"\n\nlet DEFAULT_ERROR_STRUCTURE = {\n // defaults\n line: 0,\n level: \"error\",\n message: \"Unknown error\"\n}\n\nexport default function() {\n return {\n [NEW_THROWN_ERR]: (state, { payload }) => {\n let error = Object.assign(DEFAULT_ERROR_STRUCTURE, payload, {type: \"thrown\"})\n return state\n .update(\"errors\", errors => (errors || List()).push( fromJS( error )) )\n .update(\"errors\", errors => transformErrors(errors))\n },\n\n [NEW_THROWN_ERR_BATCH]: (state, { payload }) => {\n payload = payload.map(err => {\n return fromJS(Object.assign(DEFAULT_ERROR_STRUCTURE, err, { type: \"thrown\" }))\n })\n return state\n .update(\"errors\", errors => (errors || List()).concat( fromJS( payload )) )\n .update(\"errors\", errors => transformErrors(errors))\n },\n\n [NEW_SPEC_ERR]: (state, { payload }) => {\n let error = fromJS(payload)\n error = error.set(\"type\", \"spec\")\n return state\n .update(\"errors\", errors => (errors || List()).push( fromJS(error)).sortBy(err => err.get(\"line\")) )\n .update(\"errors\", errors => transformErrors(errors))\n },\n\n [NEW_SPEC_ERR_BATCH]: (state, { payload }) => {\n payload = payload.map(err => {\n return fromJS(Object.assign(DEFAULT_ERROR_STRUCTURE, err, { type: \"spec\" }))\n })\n return state\n .update(\"errors\", errors => (errors || List()).concat(fromJS(payload)))\n .update(\"errors\", errors => transformErrors(errors))\n },\n\n [NEW_AUTH_ERR]: (state, { payload }) => {\n let error = fromJS(Object.assign({}, payload))\n\n error = error.set(\"type\", \"auth\")\n return state\n .update(\"errors\", errors => (errors || List()).push( fromJS(error)) )\n .update(\"errors\", errors => transformErrors(errors))\n },\n\n [CLEAR]: (state, { payload }) => {\n if(!payload || !state.get(\"errors\")) {\n return state\n }\n\n let newErrors = state.get(\"errors\")\n .filter(err => {\n return err.keySeq().every(k => {\n const errValue = err.get(k)\n const filterValue = payload[k]\n\n if(!filterValue) return true\n\n return errValue !== filterValue\n })\n })\n return state.merge({\n errors: newErrors\n })\n },\n\n [CLEAR_BY]: (state, { payload }) => {\n if(!payload || typeof payload !== \"function\") {\n return state\n }\n let newErrors = state.get(\"errors\")\n .filter(err => {\n return payload(err)\n })\n return state.merge({\n errors: newErrors\n })\n }\n }\n}\n","import { List } from \"immutable\"\nimport { createSelector } from \"reselect\"\n\nconst state = state => state\n\nexport const allErrors = createSelector(\n state,\n err => err.get(\"errors\", List())\n)\n\nexport const lastError = createSelector(\n allErrors,\n all => all.last()\n)\n\n","import makeReducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\n\nexport default function(system) {\n return {\n statePlugins: {\n err: {\n reducers: makeReducers(system),\n actions,\n selectors\n }\n }\n }\n}\n","export default function(taggedOps, phrase) {\n return taggedOps.filter((tagObj, tag) => tag.indexOf(phrase) !== -1)\n}\n","import opsFilter from \"./opsFilter\"\n\nexport default function() {\n return {\n fn: {\n opsFilter\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime-corejs3/helpers/extends\");","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst ArrowUp = ({ className = null, width = 20, height = 20, ...rest }) => (\n \n \n \n)\n\nArrowUp.propTypes = {\n className: PropTypes.string,\n width: PropTypes.string,\n height: PropTypes.string,\n}\n\nexport default ArrowUp\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst ArrowDown = ({ className = null, width = 20, height = 20, ...rest }) => (\n \n \n \n)\n\nArrowDown.propTypes = {\n className: PropTypes.string,\n width: PropTypes.string,\n height: PropTypes.string,\n}\n\nexport default ArrowDown\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Arrow = ({ className = null, width = 20, height = 20, ...rest }) => (\n \n \n \n)\n\nArrow.propTypes = {\n className: PropTypes.string,\n width: PropTypes.string,\n height: PropTypes.string,\n}\n\nexport default Arrow\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Close = ({ className = null, width = 20, height = 20, ...rest }) => (\n \n \n \n)\n\nClose.propTypes = {\n className: PropTypes.string,\n width: PropTypes.string,\n height: PropTypes.string,\n}\n\nexport default Close\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Copy = ({ className = null, width = 15, height = 16, ...rest }) => (\n \n \n \n \n \n)\n\nCopy.propTypes = {\n className: PropTypes.string,\n width: PropTypes.string,\n height: PropTypes.string,\n}\n\nexport default Copy\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Lock = ({ className = null, width = 20, height = 20, ...rest }) => (\n \n \n \n)\n\nLock.propTypes = {\n className: PropTypes.string,\n width: PropTypes.string,\n height: PropTypes.string,\n}\n\nexport default Lock\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Unlock = ({ className = null, width = 20, height = 20, ...rest }) => (\n \n \n \n)\n\nUnlock.propTypes = {\n className: PropTypes.string,\n width: PropTypes.string,\n height: PropTypes.string,\n}\n\nexport default Unlock\n","/**\n * @prettier\n */\nimport ArrowUpIcon from \"./components/arrow-up\"\nimport ArrowDownIcon from \"./components/arrow-down\"\nimport ArrowIcon from \"./components/arrow\"\nimport CloseIcon from \"./components/close\"\nimport CopyIcon from \"./components/copy\"\nimport LockIcon from \"./components/lock\"\nimport UnlockIcon from \"./components/unlock\"\n\nconst IconsPlugin = () => ({\n components: {\n ArrowUpIcon,\n ArrowDownIcon,\n ArrowIcon,\n CloseIcon,\n CopyIcon,\n LockIcon,\n UnlockIcon,\n }\n})\n\nexport default IconsPlugin","import { normalizeArray } from \"core/utils\"\n\nexport const UPDATE_LAYOUT = \"layout_update_layout\"\nexport const UPDATE_FILTER = \"layout_update_filter\"\nexport const UPDATE_MODE = \"layout_update_mode\"\nexport const SHOW = \"layout_show\"\n\n// export const ONLY_SHOW = \"layout_only_show\"\n\nexport function updateLayout(layout) {\n return {\n type: UPDATE_LAYOUT,\n payload: layout\n }\n}\n\nexport function updateFilter(filter) {\n return {\n type: UPDATE_FILTER,\n payload: filter\n }\n}\n\nexport function show(thing, shown=true) {\n thing = normalizeArray(thing)\n return {\n type: SHOW,\n payload: {thing, shown}\n }\n}\n\n// Simple string key-store, used for\nexport function changeMode(thing, mode=\"\") {\n thing = normalizeArray(thing)\n return {\n type: UPDATE_MODE,\n payload: {thing, mode}\n }\n}\n","import { fromJS } from \"immutable\"\nimport {\n UPDATE_LAYOUT,\n UPDATE_FILTER,\n UPDATE_MODE,\n SHOW\n} from \"./actions\"\n\nexport default {\n\n [UPDATE_LAYOUT]: (state, action) => state.set(\"layout\", action.payload),\n\n [UPDATE_FILTER]: (state, action) => state.set(\"filter\", action.payload),\n\n [SHOW]: (state, action) => {\n const isShown = action.payload.shown\n // This is one way to serialize an array, another (preferred) is to convert to json-pointer\n // TODO: use json-pointer serilization instead of fromJS(...), for performance\n const thingToShow = fromJS(action.payload.thing)\n // This is a map of paths to bools\n // eg: [one, two] => true\n // eg: [one] => false\n return state.update(\"shown\", fromJS({}), a => a.set(thingToShow, isShown))\n },\n\n [UPDATE_MODE]: (state, action) => {\n let thing = action.payload.thing\n let mode = action.payload.mode\n return state.setIn([\"modes\"].concat(thing), (mode || \"\") + \"\")\n }\n\n}\n","import { createSelector } from \"reselect\"\nimport { normalizeArray } from \"core/utils\"\nimport { fromJS } from \"immutable\"\n\nconst state = state => state\n\nexport const current = state => state.get(\"layout\")\n\nexport const currentFilter = state => state.get(\"filter\")\n\nexport const isShown = (state, thing, def) => {\n thing = normalizeArray(thing)\n return state.get(\"shown\", fromJS({})).get(fromJS(thing), def)\n}\n\nexport const whatMode = (state, thing, def=\"\") => {\n thing = normalizeArray(thing)\n return state.getIn([\"modes\", ...thing], def)\n}\n\nexport const showSummary = createSelector(\n state,\n state => !isShown(state, \"editor\")\n)\n","\nexport const taggedOperations = (oriSelector, system) => (state, ...args) => {\n let taggedOps = oriSelector(state, ...args)\n\n const { fn, layoutSelectors, getConfigs } = system.getSystem()\n const configs = getConfigs()\n const { maxDisplayedTags } = configs\n\n // Filter, if requested\n let filter = layoutSelectors.currentFilter()\n if (filter) {\n if (filter !== true) {\n taggedOps = fn.opsFilter(taggedOps, filter)\n }\n }\n // Limit to [max] items, if specified\n if (maxDisplayedTags >= 0) {\n taggedOps = taggedOps.slice(0, maxDisplayedTags)\n }\n\n return taggedOps\n}\n","import reducers from \"./reducers\"\nimport * as actions from \"./actions\"\nimport * as selectors from \"./selectors\"\nimport * as wrapSelectors from \"./spec-extensions/wrap-selector\"\n\nexport default function() {\n return {\n statePlugins: {\n layout: {\n reducers,\n actions,\n selectors\n },\n spec: {\n wrapSelectors\n }\n }\n }\n}\n","export default function ({configs}) {\n\n const levels = {\n \"debug\": 0,\n \"info\": 1,\n \"log\": 2,\n \"warn\": 3,\n \"error\": 4\n }\n\n const getLevel = (level) => levels[level] || -1\n\n let { logLevel } = configs\n let logLevelInt = getLevel(logLevel)\n\n function log(level, ...args) {\n if(getLevel(level) >= logLevelInt)\n // eslint-disable-next-line no-console\n console[level](...args)\n }\n\n log.warn = log.bind(null, \"warn\")\n log.error = log.bind(null, \"error\")\n log.info = log.bind(null, \"info\")\n log.debug = log.bind(null, \"debug\")\n\n return { rootInjects: { log } }\n}\n","let engaged = false\n\nexport default function() {\n\n return {\n statePlugins: {\n spec: {\n wrapActions: {\n updateSpec: (ori) => (...args) => {\n engaged = true\n return ori(...args)\n },\n updateJsonSpec: (ori, system) => (...args) => {\n const cb = system.getConfigs().onComplete\n if(engaged && typeof cb === \"function\") {\n // call `onComplete` on next tick, which allows React to\n // reconcile the DOM before we notify the user\n setTimeout(cb, 0)\n engaged = false\n }\n\n return ori(...args)\n }\n }\n }\n }\n }\n}\n","import { List, Map } from \"immutable\"\nimport win from \"../../window\"\n\n\n/**\n * if duplicate key name existed from FormData entries,\n * we mutated the key name by appending a hashIdx\n * @param {String} k - possibly mutated key name\n * @return {String} - src key name\n */\nconst extractKey = (k) => {\n const hashIdx = \"_**[]\"\n if (k.indexOf(hashIdx) < 0) {\n return k\n }\n return k.split(hashIdx)[0].trim()\n}\n\nconst escapeShell = (str) => {\n if (str === \"-d \") {\n return str\n }\n // eslint-disable-next-line no-useless-escape\n if (!/^[_\\/-]/g.test(str))\n return (\"'\" + str\n .replace(/'/g, \"'\\\\''\") + \"'\")\n else\n return str\n}\n\nconst escapeCMD = (str) => {\n str = str\n .replace(/\\^/g, \"^^\")\n .replace(/\\\\\"/g, \"\\\\\\\\\\\"\")\n .replace(/\"/g, \"\\\"\\\"\")\n .replace(/\\n/g, \"^\\n\")\n if (str === \"-d \") {\n return str\n .replace(/-d /g, \"-d ^\\n\")\n }\n // eslint-disable-next-line no-useless-escape\n if (!/^[_\\/-]/g.test(str))\n return \"\\\"\" + str + \"\\\"\"\n else\n return str\n}\n\nconst escapePowershell = (str) => {\n if (str === \"-d \") {\n return str\n }\n if (/\\n/.test(str)) {\n const escaped = str.replace(/`/g, \"``\").replace(/\\$/g, \"`$\")\n return `@\"\\n${escaped}\\n\"@`\n }\n if (!/^[_\\/-]/.test(str)) { // eslint-disable-line no-useless-escape\n const escaped = str.replace(/'/g, \"''\")\n return `'${escaped}'`\n }\n return str\n}\n\nfunction getStringBodyOfMap(request) {\n let curlifyToJoin = []\n for (let [k, v] of request.get(\"body\").entrySeq()) {\n let extractedKey = extractKey(k)\n if (v instanceof win.File) {\n curlifyToJoin.push(` \"${extractedKey}\": {\\n \"name\": \"${v.name}\"${v.type ? `,\\n \"type\": \"${v.type}\"` : \"\"}\\n }`)\n } else {\n curlifyToJoin.push(` \"${extractedKey}\": ${JSON.stringify(v, null, 2).replace(/(\\r\\n|\\r|\\n)/g, \"\\n \")}`)\n }\n }\n return `{\\n${curlifyToJoin.join(\",\\n\")}\\n}`\n}\n\nconst curlify = (request, escape, newLine, ext = \"\") => {\n let isMultipartFormDataRequest = false\n let curlified = \"\"\n const addWords = (...args) => curlified += \" \" + args.map(escape).join(\" \")\n const addWordsWithoutLeadingSpace = (...args) => curlified += args.map(escape).join(\" \")\n const addNewLine = () => curlified += ` ${newLine}`\n const addIndent = (level = 1) => curlified += \" \".repeat(level)\n let headers = request.get(\"headers\")\n curlified += \"curl\" + ext\n\n const curlOptions = request.get(\"curlOptions\")\n if (List.isList(curlOptions) && !curlOptions.isEmpty()) {\n addWords(...request.get(\"curlOptions\"))\n }\n\n addWords(\"-X\", request.get(\"method\"))\n\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(`${request.get(\"url\")}`)\n\n if (headers && headers.size) {\n for (let p of request.get(\"headers\").entries()) {\n addNewLine()\n addIndent()\n let [h, v] = p\n addWordsWithoutLeadingSpace(\"-H\", `${h}: ${v}`)\n isMultipartFormDataRequest = isMultipartFormDataRequest || /^content-type$/i.test(h) && /^multipart\\/form-data$/i.test(v)\n }\n }\n\n const body = request.get(\"body\")\n if (body) {\n if (isMultipartFormDataRequest && [\"POST\", \"PUT\", \"PATCH\"].includes(request.get(\"method\"))) {\n for (let [k, v] of body.entrySeq()) {\n let extractedKey = extractKey(k)\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(\"-F\")\n\n /**\n * SwaggerClient produces specialized sub-class of File class, that only\n * accepts string data and retain this data in `data`\n * public property throughout the lifecycle of its instances.\n *\n * This sub-class is exclusively used only when Encoding Object\n * is defined within the Media Type Object (OpenAPI 3.x.y).\n */\n if (v instanceof win.File && typeof v.valueOf() === \"string\") {\n addWords(`${extractedKey}=${v.data}${v.type ? `;type=${v.type}` : \"\"}`)\n } else if (v instanceof win.File) {\n addWords(`${extractedKey}=@${v.name}${v.type ? `;type=${v.type}` : \"\"}`)\n } else {\n addWords(`${extractedKey}=${v}`)\n }\n }\n } else if(body instanceof win.File) {\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(`--data-binary '@${body.name}'`)\n } else {\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(\"-d \")\n let reqBody = body\n if (!Map.isMap(reqBody)) {\n if (typeof reqBody !== \"string\") {\n reqBody = JSON.stringify(reqBody)\n }\n addWordsWithoutLeadingSpace(reqBody)\n } else {\n addWordsWithoutLeadingSpace(getStringBodyOfMap(request))\n }\n }\n } else if (!body && request.get(\"method\") === \"POST\") {\n addNewLine()\n addIndent()\n addWordsWithoutLeadingSpace(\"-d ''\")\n }\n\n return curlified\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_powershell = (request) => {\n return curlify(request, escapePowershell, \"`\\n\", \".exe\")\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_bash = (request) => {\n return curlify(request, escapeShell, \"\\\\\\n\")\n}\n\n// eslint-disable-next-line camelcase\nexport const requestSnippetGenerator_curl_cmd = (request) => {\n return curlify(request, escapeCMD, \"^\\n\")\n}\n","import { createSelector } from \"reselect\"\nimport { Map } from \"immutable\"\n\nconst state = state => state || Map()\n\nexport const getGenerators = createSelector(\n state,\n state => {\n const languageKeys = state\n .get(\"languages\")\n const generators = state\n .get(\"generators\", Map())\n if(!languageKeys || languageKeys.isEmpty()) {\n return generators\n }\n return generators\n .filter((v, key) => languageKeys.includes(key))\n }\n)\n\nexport const getSnippetGenerators = (state) => ({ fn }) => {\n const getGenFn = (key) => fn[`requestSnippetGenerator_${key}`]\n return getGenerators(state)\n .map((gen, key) => {\n const genFn = getGenFn(key)\n if(typeof genFn !== \"function\") {\n return null\n }\n\n return gen.set(\"fn\", genFn)\n })\n .filter(v => v)\n}\n\nexport const getActiveLanguage = createSelector(\n state,\n state => state\n .get(\"activeLanguage\")\n)\n\nexport const getDefaultExpanded = createSelector(\n state,\n state => state\n .get(\"defaultExpanded\")\n)\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"classnames\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-copy-to-clipboard\");","import React, { useRef, useEffect, useState } from \"react\"\nimport classNames from \"classnames\"\nimport PropTypes from \"prop-types\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\n\nconst style = {\n cursor: \"pointer\",\n lineHeight: 1,\n display: \"inline-flex\",\n backgroundColor: \"rgb(250, 250, 250)\",\n paddingBottom: \"0\",\n paddingTop: \"0\",\n border: \"1px solid rgb(51, 51, 51)\",\n borderRadius: \"4px 4px 0 0\",\n boxShadow: \"none\",\n borderBottom: \"none\"\n}\n\nconst activeStyle = {\n cursor: \"pointer\",\n lineHeight: 1,\n display: \"inline-flex\",\n backgroundColor: \"rgb(51, 51, 51)\",\n boxShadow: \"none\",\n border: \"1px solid rgb(51, 51, 51)\",\n paddingBottom: \"0\",\n paddingTop: \"0\",\n borderRadius: \"4px 4px 0 0\",\n marginTop: \"-5px\",\n marginRight: \"-5px\",\n marginLeft: \"-5px\",\n zIndex: \"9999\",\n borderBottom: \"none\"\n}\n\nconst RequestSnippets = ({ request, requestSnippetsSelectors, getComponent }) => {\n const rootRef = useRef(null)\n\n const ArrowIcon = getComponent(\"ArrowUpIcon\")\n const ArrowDownIcon = getComponent(\"ArrowDownIcon\")\n const SyntaxHighlighter = getComponent(\"SyntaxHighlighter\", true)\n\n const [activeLanguage, setActiveLanguage] = useState(requestSnippetsSelectors.getSnippetGenerators()?.keySeq().first())\n const [isExpanded, setIsExpanded] = useState(requestSnippetsSelectors?.getDefaultExpanded())\n\n const snippetGenerators = requestSnippetsSelectors.getSnippetGenerators()\n const activeGenerator = snippetGenerators.get(activeLanguage)\n const snippet = activeGenerator.get(\"fn\")(request)\n\n const handleGenChange = (key) => {\n const needsChange = activeLanguage !== key\n if (needsChange) {\n setActiveLanguage(key)\n }\n }\n\n const handleSetIsExpanded = () => {\n setIsExpanded(!isExpanded)\n }\n\n const handleGetBtnStyle = (key) => {\n if (key === activeLanguage) {\n return activeStyle\n }\n return style\n }\n\n const handlePreventYScrollingBeyondElement = (e) => {\n const { target, deltaY } = e\n const { scrollHeight: contentHeight, offsetHeight: visibleHeight, scrollTop } = target\n const scrollOffset = visibleHeight + scrollTop\n const isElementScrollable = contentHeight > visibleHeight\n const isScrollingPastTop = scrollTop === 0 && deltaY < 0\n const isScrollingPastBottom = scrollOffset >= contentHeight && deltaY > 0\n\n if (isElementScrollable && (isScrollingPastTop || isScrollingPastBottom)) {\n e.preventDefault()\n }\n }\n\n useEffect(() => {\n const doIt = () => {\n\n }\n doIt()\n }, [])\n\n useEffect(() => {\n const childNodes = Array\n .from(rootRef.current.childNodes)\n .filter(node => !!node.nodeType && node.classList?.contains(\"curl-command\"))\n // eslint-disable-next-line no-use-before-define\n childNodes.forEach(node => node.addEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement, { passive: false }))\n\n return () => {\n // eslint-disable-next-line no-use-before-define\n childNodes.forEach(node => node.removeEventListener(\"mousewheel\", handlePreventYScrollingBeyondElement))\n }\n }, [request])\n\n return (\n
      \n
      \n handleSetIsExpanded()}\n style={{ cursor: \"pointer\" }}\n >Snippets\n handleSetIsExpanded()}\n style={{ border: \"none\", background: \"none\" }}\n title={isExpanded ? \"Collapse operation\" : \"Expand operation\"}\n >\n {isExpanded ? : }\n \n
      \n {\n isExpanded &&
      \n
      \n {\n snippetGenerators.entrySeq().map(([key, gen]) => {\n return (\n handleGenChange(key)}\n >\n

      {gen.get(\"title\")}

      \n
      \n )\n })\n }\n
      \n
      \n \n
      \n
      \n (\n {children}\n )}\n >\n {snippet}\n \n
      \n
      \n }\n
      \n )\n}\n\nRequestSnippets.propTypes = {\n request: PropTypes.object.isRequired,\n requestSnippetsSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n requestSnippetsActions: PropTypes.object,\n}\n\nexport default RequestSnippets\n","import * as fn from \"./fn\"\nimport * as selectors from \"./selectors\"\nimport RequestSnippets from \"./request-snippets\"\nexport default () => {\n return {\n components: {\n RequestSnippets\n },\n fn,\n statePlugins: {\n requestSnippets: {\n selectors\n }\n }\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport Im from \"immutable\"\n\nexport default class ModelCollapse extends Component {\n static propTypes = {\n collapsedContent: PropTypes.any,\n expanded: PropTypes.bool,\n children: PropTypes.any,\n title: PropTypes.element,\n modelName: PropTypes.string,\n classes: PropTypes.string,\n onToggle: PropTypes.func,\n hideSelfOnExpand: PropTypes.bool,\n layoutActions: PropTypes.object,\n layoutSelectors: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n }\n\n static defaultProps = {\n collapsedContent: \"{...}\",\n expanded: false,\n title: null,\n onToggle: () => {},\n hideSelfOnExpand: false,\n specPath: Im.List([]),\n }\n\n constructor(props, context) {\n super(props, context)\n\n let { expanded, collapsedContent } = this.props\n\n this.state = {\n expanded : expanded,\n collapsedContent: collapsedContent || ModelCollapse.defaultProps.collapsedContent\n }\n }\n\n componentDidMount() {\n const { hideSelfOnExpand, expanded, modelName } = this.props\n if(hideSelfOnExpand && expanded) {\n // We just mounted pre-expanded, and we won't be going back..\n // So let's give our parent an `onToggle` call..\n // Since otherwise it will never be called.\n this.props.onToggle(modelName, expanded)\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps){\n if(this.props.expanded !== nextProps.expanded){\n this.setState({expanded: nextProps.expanded})\n }\n }\n\n toggleCollapsed=()=>{\n if(this.props.onToggle){\n this.props.onToggle(this.props.modelName,!this.state.expanded)\n }\n\n this.setState({\n expanded: !this.state.expanded\n })\n }\n\n onLoad = (ref) => {\n if (ref && this.props.layoutSelectors) {\n const scrollToKey = this.props.layoutSelectors.getScrollToKey()\n\n if( Im.is(scrollToKey, this.props.specPath) ) this.toggleCollapsed()\n this.props.layoutActions.readyToScroll(this.props.specPath, ref.parentElement)\n }\n }\n\n render () {\n const { title, classes } = this.props\n\n if(this.state.expanded ) {\n if(this.props.hideSelfOnExpand) {\n return \n {this.props.children}\n \n }\n }\n\n return (\n \n \n\n { this.state.expanded && this.props.children }\n \n )\n }\n}\n","/**\n * @prettier\n */\nimport React, { useMemo, useState, useEffect, useCallback, useRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport cx from \"classnames\"\nimport randomBytes from \"randombytes\"\n\nconst usePrevious = (value) => {\n const ref = useRef()\n useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n\nconst useTabs = ({ initialTab, isExecute, schema, example }) => {\n const tabs = useMemo(() => ({ example: \"example\", model: \"model\" }), [])\n const allowedTabs = useMemo(() => Object.keys(tabs), [tabs])\n const tab =\n !allowedTabs.includes(initialTab) || !schema || isExecute\n ? tabs.example\n : initialTab\n const prevIsExecute = usePrevious(isExecute)\n const [activeTab, setActiveTab] = useState(tab)\n const handleTabChange = useCallback((e) => {\n setActiveTab(e.target.dataset.name)\n }, [])\n\n useEffect(() => {\n if (prevIsExecute && !isExecute && example) {\n setActiveTab(tabs.example)\n }\n }, [prevIsExecute, isExecute, example])\n\n return { activeTab, onTabChange: handleTabChange, tabs }\n}\n\nconst ModelExample = ({\n schema,\n example,\n isExecute = false,\n specPath,\n includeWriteOnly = false,\n includeReadOnly = false,\n getComponent,\n getConfigs,\n specSelectors,\n}) => {\n const { defaultModelRendering, defaultModelExpandDepth } = getConfigs()\n const ModelWrapper = getComponent(\"ModelWrapper\")\n const HighlightCode = getComponent(\"HighlightCode\", true)\n const exampleTabId = randomBytes(5).toString(\"base64\")\n const examplePanelId = randomBytes(5).toString(\"base64\")\n const modelTabId = randomBytes(5).toString(\"base64\")\n const modelPanelId = randomBytes(5).toString(\"base64\")\n const isOAS3 = specSelectors.isOAS3()\n const { activeTab, tabs, onTabChange } = useTabs({\n initialTab: defaultModelRendering,\n isExecute,\n schema,\n example,\n })\n\n return (\n
      \n
        \n \n \n {isExecute ? \"Edit Value\" : \"Example Value\"}\n \n \n {schema && (\n \n \n {isOAS3 ? \"Schema\" : \"Model\"}\n \n \n )}\n
      \n {activeTab === tabs.example && (\n \n {example ? (\n example\n ) : (\n (no example available\n )}\n
      \n )}\n\n {activeTab === tabs.model && (\n \n \n
    • \n )}\n
    \n )\n}\n\nModelExample.propTypes = {\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.shape({ isOAS3: PropTypes.func.isRequired })\n .isRequired,\n schema: PropTypes.object.isRequired,\n example: PropTypes.any.isRequired,\n isExecute: PropTypes.bool,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n}\n\nexport default ModelExample\n","import React, { Component, } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class ModelWrapper extends Component {\n\n static propTypes = {\n schema: PropTypes.object.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n fullPath: PropTypes.array.isRequired,\n specPath: ImPropTypes.list.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n expandDepth: PropTypes.number,\n layoutActions: PropTypes.object,\n layoutSelectors: PropTypes.object.isRequired,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n onToggle = (name,isShown) => {\n // If this prop is present, we'll have deepLinking for it\n if(this.props.layoutActions) {\n this.props.layoutActions.show(this.props.fullPath, isShown)\n }\n }\n\n render(){\n let { getComponent, getConfigs } = this.props\n const Model = getComponent(\"Model\")\n\n let expanded\n if(this.props.layoutSelectors) {\n // If this is prop is present, we'll have deepLinking for it\n expanded = this.props.layoutSelectors.isShown(this.props.fullPath)\n }\n\n return
    \n \n
    \n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-immutable-pure-component\");","var _circle;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgRollingLoad = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 200,\n height: 200,\n className: \"rolling-load_svg__lds-rolling\",\n preserveAspectRatio: \"xMidYMid\",\n style: {\n backgroundImage: \"none\",\n backgroundPosition: \"initial initial\",\n backgroundRepeat: \"initial initial\"\n },\n viewBox: \"0 0 100 100\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 50,\n cy: 50,\n r: 35,\n fill: \"none\",\n stroke: \"#555\",\n strokeDasharray: \"164.93361431346415 56.97787143782138\",\n strokeWidth: 10\n}, /*#__PURE__*/React.createElement(\"animateTransform\", {\n attributeName: \"transform\",\n begin: \"0s\",\n calcMode: \"linear\",\n dur: \"1s\",\n keyTimes: \"0;1\",\n repeatCount: \"indefinite\",\n type: \"rotate\",\n values: \"0 50 50;360 50 50\"\n}))));\nexport default SvgRollingLoad;","import React from \"react\"\nimport ImmutablePureComponent from \"react-immutable-pure-component\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport PropTypes from \"prop-types\"\nimport { Map } from \"immutable\"\n\nimport RollingLoadSVG from \"core/assets/rolling-load.svg\"\n\nconst decodeRefName = uri => {\n const unescaped = uri.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n\n try {\n return decodeURIComponent(unescaped)\n } catch {\n return unescaped\n }\n}\n\nexport default class Model extends ImmutablePureComponent {\n static propTypes = {\n schema: ImPropTypes.map.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n isRef: PropTypes.bool,\n required: PropTypes.bool,\n expandDepth: PropTypes.number,\n depth: PropTypes.number,\n specPath: ImPropTypes.list.isRequired,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n getModelName =( ref )=> {\n if ( ref.indexOf(\"#/definitions/\") !== -1 ) {\n return decodeRefName(ref.replace(/^.*#\\/definitions\\//, \"\"))\n }\n if ( ref.indexOf(\"#/components/schemas/\") !== -1 ) {\n return decodeRefName(ref.replace(/^.*#\\/components\\/schemas\\//, \"\"))\n }\n }\n\n getRefSchema =( model )=> {\n let { specSelectors } = this.props\n\n return specSelectors.findDefinition(model)\n }\n\n render () {\n let { getComponent, getConfigs, specSelectors, schema, required, name, isRef, specPath, displayName,\n includeReadOnly, includeWriteOnly} = this.props\n const ObjectModel = getComponent(\"ObjectModel\")\n const ArrayModel = getComponent(\"ArrayModel\")\n const PrimitiveModel = getComponent(\"PrimitiveModel\")\n let type = \"object\"\n let $$ref = schema && schema.get(\"$$ref\")\n let $ref = schema && schema.get(\"$ref\")\n\n // If we weren't passed a `name` but have a resolved ref, grab the name from the ref\n if (!name && $$ref) {\n name = this.getModelName($$ref)\n }\n\n /*\n * If we have an unresolved ref, get the schema and name from the ref.\n * If the ref is external, we can't resolve it, so we just display the ref location.\n * This is for situations where: \n * - the ref was not resolved by Swagger Client because we reached the traversal depth limit\n * - we had a circular ref inside the allOf keyword\n */\n if ($ref) {\n const refName = this.getModelName($ref)\n const refSchema = this.getRefSchema(refName)\n if (Map.isMap(refSchema)) {\n schema = refSchema.mergeDeep(schema) \n if (!$$ref) {\n schema = schema.set(\"$$ref\", $ref) \n $$ref = $ref\n }\n } else if (Map.isMap(schema) && schema.size === 1) {\n schema = null\n name = $ref\n }\n }\n\n if(!schema) {\n return \n { displayName || name }\n {!$ref && }\n \n }\n\n const deprecated = specSelectors.isOAS3() && schema.get(\"deprecated\")\n isRef = isRef !== undefined ? isRef : !!$$ref\n type = schema && schema.get(\"type\") || type\n\n switch(type) {\n case \"object\":\n return \n case \"array\":\n return \n case \"string\":\n case \"number\":\n case \"integer\":\n case \"boolean\":\n default:\n return \n }\n }\n}\n","import React, { Component } from \"react\"\nimport Im, { Map } from \"immutable\"\nimport PropTypes from \"prop-types\"\n\nexport default class Models extends Component {\n static propTypes = {\n getComponent: PropTypes.func,\n specSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object,\n layoutActions: PropTypes.object,\n getConfigs: PropTypes.func.isRequired\n }\n\n getSchemaBasePath = () => {\n const isOAS3 = this.props.specSelectors.isOAS3()\n return isOAS3 ? [\"components\", \"schemas\"] : [\"definitions\"]\n }\n\n getCollapsedContent = () => {\n return \" \"\n }\n\n handleToggle = (name, isExpanded) => {\n const { layoutActions } = this.props\n layoutActions.show([...this.getSchemaBasePath(), name], isExpanded)\n if(isExpanded) {\n this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(), name])\n }\n }\n\n onLoadModels = (ref) => {\n if (ref) {\n this.props.layoutActions.readyToScroll(this.getSchemaBasePath(), ref)\n }\n }\n\n onLoadModel = (ref) => {\n if (ref) {\n const name = ref.getAttribute(\"data-name\")\n this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(), name], ref)\n }\n }\n\n render(){\n let { specSelectors, getComponent, layoutSelectors, layoutActions, getConfigs } = this.props\n let definitions = specSelectors.definitions()\n let { docExpansion, defaultModelsExpandDepth } = getConfigs()\n if (!definitions.size || defaultModelsExpandDepth < 0) return null\n\n const specPathBase = this.getSchemaBasePath()\n let showModels = layoutSelectors.isShown(specPathBase, defaultModelsExpandDepth > 0 && docExpansion !== \"none\")\n const isOAS3 = specSelectors.isOAS3()\n\n const ModelWrapper = getComponent(\"ModelWrapper\")\n const Collapse = getComponent(\"Collapse\")\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const ArrowUpIcon = getComponent(\"ArrowUpIcon\")\n const ArrowDownIcon = getComponent(\"ArrowDownIcon\")\n\n return
    \n

    \n layoutActions.show(specPathBase, !showModels)}\n >\n {isOAS3 ? \"Schemas\" : \"Models\"}\n {showModels ? : }\n \n

    \n \n {\n definitions.entrySeq().map(([name])=>{\n\n const fullPath = [...specPathBase, name]\n const specPath = Im.List(fullPath)\n\n const schemaValue = specSelectors.specResolvedSubtree(fullPath)\n const rawSchemaValue = specSelectors.specJson().getIn(fullPath)\n\n const schema = Map.isMap(schemaValue) ? schemaValue : Im.Map()\n const rawSchema = Map.isMap(rawSchemaValue) ? rawSchemaValue : Im.Map()\n\n const displayName = schema.get(\"title\") || rawSchema.get(\"title\") || name\n const isShown = layoutSelectors.isShown(fullPath, false)\n\n if( isShown && (schema.size === 0 && rawSchema.size > 0) ) {\n // Firing an action in a container render is not great,\n // but it works for now.\n this.props.specActions.requestResolvedSubtree(fullPath)\n }\n\n const content = \n\n const title = \n \n {displayName}\n \n \n\n return
    \n \n 0 && isShown }\n >{content}\n
    \n }).toArray()\n }\n
    \n
    \n }\n}\n","import React from \"react\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst EnumModel = ({ value, getComponent }) => {\n let ModelCollapse = getComponent(\"ModelCollapse\")\n let collapsedContent = Array [ { value.count() } ]\n return \n Enum:
    \n \n [ { value.map(String).join(\", \") } ]\n \n
    \n}\nEnumModel.propTypes = {\n value: ImPropTypes.iterable,\n getComponent: ImPropTypes.func\n}\n\nexport default EnumModel\n","import React, { Component, } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { sanitizeUrl } from \"core/utils\"\n\nconst braceOpen = \"{\"\nconst braceClose = \"}\"\nconst propClass = \"property\"\n\nexport default class ObjectModel extends Component {\n static propTypes = {\n schema: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n expanded: PropTypes.bool,\n onToggle: PropTypes.func,\n specSelectors: PropTypes.object.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n isRef: PropTypes.bool,\n expandDepth: PropTypes.number,\n depth: PropTypes.number,\n specPath: ImPropTypes.list.isRequired,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n render(){\n let { schema, name, displayName, isRef, getComponent, getConfigs, depth, onToggle, expanded, specPath, ...otherProps } = this.props\n let { specSelectors,expandDepth, includeReadOnly, includeWriteOnly} = otherProps\n const { isOAS3 } = specSelectors\n\n if(!schema) {\n return null\n }\n\n const { showExtensions } = getConfigs()\n\n let description = schema.get(\"description\")\n let properties = schema.get(\"properties\")\n let additionalProperties = schema.get(\"additionalProperties\")\n let title = schema.get(\"title\") || displayName || name\n let requiredProperties = schema.get(\"required\")\n let infoProperties = schema\n .filter( ( v, key) => [\"maxProperties\", \"minProperties\", \"nullable\", \"example\"].indexOf(key) !== -1 )\n let deprecated = schema.get(\"deprecated\")\n let externalDocsUrl = schema.getIn([\"externalDocs\", \"url\"])\n let externalDocsDescription = schema.getIn([\"externalDocs\", \"description\"])\n\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const Model = getComponent(\"Model\")\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const Property = getComponent(\"Property\")\n const Link = getComponent(\"Link\")\n\n const JumpToPathSection = () => {\n return \n }\n const collapsedContent = (\n { braceOpen }...{ braceClose }\n {\n isRef ? : \"\"\n }\n )\n\n const allOf = specSelectors.isOAS3() ? schema.get(\"allOf\") : null\n const anyOf = specSelectors.isOAS3() ? schema.get(\"anyOf\") : null\n const oneOf = specSelectors.isOAS3() ? schema.get(\"oneOf\") : null\n const not = specSelectors.isOAS3() ? schema.get(\"not\") : null\n\n const titleEl = title && \n { isRef && schema.get(\"$$ref\") && { schema.get(\"$$ref\") } }\n { title }\n \n\n return \n \n\n { braceOpen }\n {\n !isRef ? null : \n }\n \n {\n \n {\n !description ? null : \n \n \n \n }\n {\n externalDocsUrl &&\n \n \n \n \n }\n {\n !deprecated ? null :\n \n \n \n \n }\n {\n !(properties && properties.size) ? null : properties.entrySeq().filter(\n ([, value]) => {\n return (!value.get(\"readOnly\") || includeReadOnly) &&\n (!value.get(\"writeOnly\") || includeWriteOnly)\n }\n ).map(\n ([key, value]) => {\n let isDeprecated = isOAS3() && value.get(\"deprecated\")\n let isRequired = List.isList(requiredProperties) && requiredProperties.contains(key)\n\n let classNames = [\"property-row\"]\n\n if (isDeprecated) {\n classNames.push(\"deprecated\")\n }\n\n if (isRequired) {\n classNames.push(\"required\")\n }\n\n return (\n \n \n )\n }).toArray()\n }\n {\n // empty row before extensions...\n !showExtensions ? null : \n }\n {\n !showExtensions ? null :\n schema.entrySeq().map(\n ([key, value]) => {\n if(key.slice(0,2) !== \"x-\") {\n return\n }\n\n const normalizedValue = !value ? null : value.toJS ? value.toJS() : value\n\n return (\n \n \n )\n }).toArray()\n }\n {\n !additionalProperties || !additionalProperties.size ? null\n : \n \n \n \n }\n {\n !allOf ? null\n : \n \n \n \n }\n {\n !anyOf ? null\n : \n \n \n \n }\n {\n !oneOf ? null\n : \n \n \n \n }\n {\n !not ? null\n : \n \n \n \n }\n
    description:\n \n
    \n externalDocs:\n \n {externalDocsDescription || externalDocsUrl}\n
    \n deprecated:\n \n true\n
    \n { key }{ isRequired && * }\n \n \n
     
    \n { key }\n \n { JSON.stringify(normalizedValue) }\n
    { \"< * >:\" }\n \n
    { \"allOf ->\" }\n {allOf.map((schema, k) => {\n return
    \n })}\n
    { \"anyOf ->\" }\n {anyOf.map((schema, k) => {\n return
    \n })}\n
    { \"oneOf ->\" }\n {oneOf.map((schema, k) => {\n return
    \n })}\n
    { \"not ->\" }\n
    \n \n
    \n
    \n }\n
    \n { braceClose }\n \n {\n infoProperties.size ? infoProperties.entrySeq().map( ( [ key, v ] ) => ) : null\n }\n
    \n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { sanitizeUrl } from \"core/utils\"\n\nconst propClass = \"property\"\n\nexport default class ArrayModel extends Component {\n static propTypes = {\n schema: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n required: PropTypes.bool,\n expandDepth: PropTypes.number,\n specPath: ImPropTypes.list.isRequired,\n depth: PropTypes.number,\n includeReadOnly: PropTypes.bool,\n includeWriteOnly: PropTypes.bool,\n }\n\n render(){\n let { getComponent, getConfigs, schema, depth, expandDepth, name, displayName, specPath } = this.props\n let description = schema.get(\"description\")\n let items = schema.get(\"items\")\n let title = schema.get(\"title\") || displayName || name\n let properties = schema.filter( ( v, key) => [\"type\", \"items\", \"description\", \"$$ref\", \"externalDocs\"].indexOf(key) === -1 )\n let externalDocsUrl = schema.getIn([\"externalDocs\", \"url\"])\n let externalDocsDescription = schema.getIn([\"externalDocs\", \"description\"])\n\n\n const Markdown = getComponent(\"Markdown\", true)\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const Model = getComponent(\"Model\")\n const Property = getComponent(\"Property\")\n const Link = getComponent(\"Link\")\n\n const titleEl = title &&\n \n { title }\n \n\n /*\n Note: we set `name={null}` in below because we don't want\n the name of the current Model passed (and displayed) as the name of the array element Model\n */\n\n return \n \n [\n {\n properties.size ? properties.entrySeq().map( ( [ key, v ] ) => ) : null\n }\n {\n !description ? (properties.size ?
    : null) :\n \n }\n { externalDocsUrl &&\n
    \n {externalDocsDescription || externalDocsUrl}\n
    \n }\n \n \n \n ]\n
    \n
    \n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { getExtensions, sanitizeUrl } from \"core/utils\"\n\nconst propClass = \"property primitive\"\n\nexport default class Primitive extends Component {\n static propTypes = {\n schema: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n name: PropTypes.string,\n displayName: PropTypes.string,\n depth: PropTypes.number,\n expandDepth: PropTypes.number\n }\n\n render() {\n let { schema, getComponent, getConfigs, name, displayName, depth, expandDepth } = this.props\n\n const { showExtensions } = getConfigs()\n\n if (!schema || !schema.get) {\n // don't render if schema isn't correctly formed\n return
    \n }\n\n let type = schema.get(\"type\")\n let format = schema.get(\"format\")\n let xml = schema.get(\"xml\")\n let enumArray = schema.get(\"enum\")\n let title = schema.get(\"title\") || displayName || name\n let description = schema.get(\"description\")\n let extensions = getExtensions(schema)\n let properties = schema\n .filter((_, key) => [\"enum\", \"type\", \"format\", \"description\", \"$$ref\", \"externalDocs\"].indexOf(key) === -1)\n .filterNot((_, key) => extensions.has(key))\n let externalDocsUrl = schema.getIn([\"externalDocs\", \"url\"])\n let externalDocsDescription = schema.getIn([\"externalDocs\", \"description\"])\n\n const Markdown = getComponent(\"Markdown\", true)\n const EnumModel = getComponent(\"EnumModel\")\n const Property = getComponent(\"Property\")\n const ModelCollapse = getComponent(\"ModelCollapse\")\n const Link = getComponent(\"Link\")\n\n const titleEl = title &&\n \n {title}\n \n\n return \n \n \n {name && depth > 1 && {title}}\n {type}\n {format && (${format})}\n {\n properties.size ? properties.entrySeq().map(([key, v]) => ) : null\n }\n {\n showExtensions && extensions.size ? extensions.entrySeq().map(([key, v]) => ) : null\n }\n {\n !description ? null :\n \n }\n {\n externalDocsUrl &&\n
    \n {externalDocsDescription || externalDocsUrl}\n
    \n }\n {\n xml && xml.size ? (
    xml:\n {\n xml.entrySeq().map(([key, v]) =>
       {key}: {String(v)}
    ).toArray()\n }\n
    ) : null\n }\n {\n enumArray && \n }\n
    \n
    \n
    \n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Schemes extends React.Component {\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n schemes: PropTypes.object.isRequired,\n currentScheme: PropTypes.string.isRequired,\n path: PropTypes.string,\n method: PropTypes.string,\n }\n\n UNSAFE_componentWillMount() {\n let { schemes } = this.props\n\n //fire 'change' event to set default 'value' of select\n this.setScheme(schemes.first())\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if ( !this.props.currentScheme || !nextProps.schemes.includes(this.props.currentScheme) ) {\n // if we don't have a selected currentScheme or if our selected scheme is no longer an option,\n // then fire 'change' event and select the first scheme in the list of options\n this.setScheme(nextProps.schemes.first())\n }\n }\n\n onChange =( e ) => {\n this.setScheme( e.target.value )\n }\n\n setScheme = ( value ) => {\n let { path, method, specActions } = this.props\n\n specActions.setScheme( value, path, method )\n }\n\n render() {\n let { schemes, currentScheme } = this.props\n\n return (\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class SchemesContainer extends React.Component {\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n }\n\n render () {\n const {specActions, specSelectors, getComponent} = this.props\n\n const currentScheme = specSelectors.operationScheme()\n const schemes = specSelectors.schemes()\n\n const Schemes = getComponent(\"schemes\")\n\n const schemesArePresent = schemes && schemes.size\n\n return schemesArePresent ? (\n \n ) : null\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-debounce-input\");","import React, { PureComponent, Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List, fromJS } from \"immutable\"\nimport cx from \"classnames\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport DebounceInput from \"react-debounce-input\"\nimport { stringify } from \"core/utils\"\n\nconst noop = ()=> {}\nconst JsonSchemaPropShape = {\n getComponent: PropTypes.func.isRequired,\n value: PropTypes.any,\n onChange: PropTypes.func,\n keyName: PropTypes.any,\n fn: PropTypes.object.isRequired,\n schema: PropTypes.object,\n errors: ImPropTypes.list,\n required: PropTypes.bool,\n dispatchInitialValue: PropTypes.bool,\n description: PropTypes.any,\n disabled: PropTypes.bool,\n}\n\nconst JsonSchemaDefaultProps = {\n value: \"\",\n onChange: noop,\n schema: {},\n keyName: \"\",\n required: false,\n errors: List()\n}\n\nexport class JsonSchemaForm extends Component {\n\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n componentDidMount() {\n const { dispatchInitialValue, value, onChange } = this.props\n if(dispatchInitialValue) {\n onChange(value)\n } else if(dispatchInitialValue === false) {\n onChange(\"\")\n }\n }\n\n render() {\n let { schema, errors, value, onChange, getComponent, fn, disabled } = this.props\n const format = schema && schema.get ? schema.get(\"format\") : null\n const type = schema && schema.get ? schema.get(\"type\") : null\n\n let getComponentSilently = (name) => getComponent(name, false, { failSilently: true })\n let Comp = type ? format ?\n getComponentSilently(`JsonSchema_${type}_${format}`) :\n getComponentSilently(`JsonSchema_${type}`) :\n getComponent(\"JsonSchema_string\")\n if (!Comp) {\n Comp = getComponent(\"JsonSchema_string\")\n }\n return \n }\n}\n\nexport class JsonSchema_string extends Component {\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n onChange = (e) => {\n const value = this.props.schema && this.props.schema.get(\"type\") === \"file\" ? e.target.files[0] : e.target.value\n this.props.onChange(value, this.props.keyName)\n }\n onEnumChange = (val) => this.props.onChange(val)\n render() {\n let { getComponent, value, schema, errors, required, description, disabled } = this.props\n const enumValue = schema && schema.get ? schema.get(\"enum\") : null\n const format = schema && schema.get ? schema.get(\"format\") : null\n const type = schema && schema.get ? schema.get(\"type\") : null\n const schemaIn = schema && schema.get ? schema.get(\"in\") : null\n if (!value) {\n value = \"\" // value should not be null; this fixes a Debounce error\n }\n errors = errors.toJS ? errors.toJS() : []\n\n if ( enumValue ) {\n const Select = getComponent(\"Select\")\n return (\n )\n }\n else {\n return (\n \n )\n }\n }\n}\n\nexport class JsonSchema_array extends PureComponent {\n\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n constructor(props, context) {\n super(props, context)\n this.state = { value: valueOrEmptyList(props.value), schema: props.schema}\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const value = valueOrEmptyList(props.value)\n if(value !== this.state.value)\n this.setState({ value })\n\n if(props.schema !== this.state.schema)\n this.setState({ schema: props.schema })\n }\n\n onChange = () => {\n this.props.onChange(this.state.value)\n }\n\n onItemChange = (itemVal, i) => {\n this.setState(({ value }) => ({\n value: value.set(i, itemVal)\n }), this.onChange)\n }\n\n removeItem = (i) => {\n this.setState(({ value }) => ({\n value: value.delete(i)\n }), this.onChange)\n }\n\n addItem = () => {\n const { fn } = this.props\n let newValue = valueOrEmptyList(this.state.value)\n this.setState(() => ({\n value: newValue.push(fn.getSampleSchema(this.state.schema.get(\"items\"), false, {\n includeWriteOnly: true\n }))\n }), this.onChange)\n }\n\n onEnumChange = (value) => {\n this.setState(() => ({\n value: value\n }), this.onChange)\n }\n\n render() {\n let { getComponent, required, schema, errors, fn, disabled } = this.props\n\n errors = errors.toJS ? errors.toJS() : Array.isArray(errors) ? errors : []\n const arrayErrors = errors.filter(e => typeof e === \"string\")\n const needsRemoveError = errors.filter(e => e.needRemove !== undefined)\n .map(e => e.error)\n const value = this.state.value // expect Im List\n const shouldRenderValue =\n value && value.count && value.count() > 0 ? true : false\n const schemaItemsEnum = schema.getIn([\"items\", \"enum\"])\n const schemaItemsType = schema.getIn([\"items\", \"type\"])\n const schemaItemsFormat = schema.getIn([\"items\", \"format\"])\n const schemaItemsSchema = schema.get(\"items\")\n let ArrayItemsComponent\n let isArrayItemText = false\n let isArrayItemFile = (schemaItemsType === \"file\" || (schemaItemsType === \"string\" && schemaItemsFormat === \"binary\")) ? true : false\n if (schemaItemsType && schemaItemsFormat) {\n ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}_${schemaItemsFormat}`)\n } else if (schemaItemsType === \"boolean\" || schemaItemsType === \"array\" || schemaItemsType === \"object\") {\n ArrayItemsComponent = getComponent(`JsonSchema_${schemaItemsType}`)\n }\n // if ArrayItemsComponent not assigned or does not exist,\n // use default schemaItemsType === \"string\" & JsonSchemaArrayItemText component\n if (!ArrayItemsComponent && !isArrayItemFile) {\n isArrayItemText = true\n }\n\n if ( schemaItemsEnum ) {\n const Select = getComponent(\"Select\")\n return ()\n }\n}\n\nexport class JsonSchema_boolean extends Component {\n static propTypes = JsonSchemaPropShape\n static defaultProps = JsonSchemaDefaultProps\n\n onEnumChange = (val) => this.props.onChange(val)\n render() {\n let { getComponent, value, errors, schema, required, disabled } = this.props\n errors = errors.toJS ? errors.toJS() : []\n let enumValue = schema && schema.get ? schema.get(\"enum\") : null\n let allowEmptyValue = !enumValue || !required\n let booleanValue = !enumValue && [\"true\", \"false\"]\n const Select = getComponent(\"Select\")\n\n return (\n \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class BasicAuth extends React.Component {\n static propTypes = {\n authorized: ImPropTypes.map,\n schema: ImPropTypes.map,\n getComponent: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n errSelectors: PropTypes.object.isRequired,\n }\n\n constructor(props, context) {\n super(props, context)\n let { schema, name } = this.props\n\n let value = this.getValue()\n let username = value.username\n\n this.state = {\n name: name,\n schema: schema,\n value: !username ? {} : {\n username: username\n }\n }\n }\n\n getValue () {\n let { authorized, name } = this.props\n\n return authorized && authorized.getIn([name, \"value\"]) || {}\n }\n\n onChange =(e) => {\n let { onChange } = this.props\n let { value, name } = e.target\n\n let newValue = this.state.value\n newValue[name] = value\n\n this.setState({ value: newValue })\n\n onChange(this.state)\n }\n\n render() {\n let { schema, getComponent, name, errSelectors } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const AuthError = getComponent(\"authError\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n let username = this.getValue().username\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n\n return (\n
    \n

    Basic authorization

    \n { username &&
    Authorized
    }\n \n \n \n \n \n {\n username ? { username } \n : \n \n \n }\n \n \n \n {\n username ? ****** \n : \n \n \n }\n \n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n )\n }\n\n}\n","/**\n * @prettier\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { stringify } from \"core/utils\"\n\nexport default function Example(props) {\n const { example, showValue, getComponent } = props\n\n const Markdown = getComponent(\"Markdown\", true)\n const HighlightCode = getComponent(\"HighlightCode\", true)\n\n if (!example) return null\n\n return (\n
    \n {example.get(\"description\") ? (\n
    \n
    Example Description
    \n

    \n \n

    \n
    \n ) : null}\n {showValue && example.has(\"value\") ? (\n
    \n
    Example Value
    \n {stringify(example.get(\"value\"))}\n
    \n ) : null}\n
    \n )\n}\n\nExample.propTypes = {\n example: ImPropTypes.map.isRequired,\n showValue: PropTypes.bool,\n getComponent: PropTypes.func.isRequired,\n}\n","/**\n * @prettier\n */\n\nimport React from \"react\"\nimport Im from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class ExamplesSelect extends React.PureComponent {\n static propTypes = {\n examples: ImPropTypes.map.isRequired,\n onSelect: PropTypes.func,\n currentExampleKey: PropTypes.string,\n isModifiedValueAvailable: PropTypes.bool,\n isValueModified: PropTypes.bool,\n showLabels: PropTypes.bool,\n }\n\n static defaultProps = {\n examples: Im.Map({}),\n onSelect: (...args) =>\n console.log( // eslint-disable-line no-console\n // FIXME: remove before merging to master...\n `DEBUG: ExamplesSelect was not given an onSelect callback`,\n ...args\n ),\n currentExampleKey: null,\n showLabels: true,\n }\n\n _onSelect = (key, { isSyntheticChange = false } = {}) => {\n if (typeof this.props.onSelect === \"function\") {\n this.props.onSelect(key, {\n isSyntheticChange,\n })\n }\n }\n\n _onDomSelect = e => {\n if (typeof this.props.onSelect === \"function\") {\n const element = e.target.selectedOptions[0]\n const key = element.getAttribute(\"value\")\n\n this._onSelect(key, {\n isSyntheticChange: false,\n })\n }\n }\n\n getCurrentExample = () => {\n const { examples, currentExampleKey } = this.props\n\n const currentExamplePerProps = examples.get(currentExampleKey)\n\n const firstExamplesKey = examples.keySeq().first()\n const firstExample = examples.get(firstExamplesKey)\n\n return currentExamplePerProps || firstExample || Map({})\n }\n\n componentDidMount() {\n // this is the not-so-great part of ExamplesSelect... here we're\n // artificially kicking off an onSelect event in order to set a default\n // value in state. the consumer has the option to avoid this by checking\n // `isSyntheticEvent`, but we should really be doing this in a selector.\n // TODO: clean this up\n // FIXME: should this only trigger if `currentExamplesKey` is nullish?\n const { onSelect, examples } = this.props\n\n if (typeof onSelect === \"function\") {\n const firstExample = examples.first()\n const firstExampleKey = examples.keyOf(firstExample)\n\n this._onSelect(firstExampleKey, {\n isSyntheticChange: true,\n })\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { currentExampleKey, examples } = nextProps\n if (examples !== this.props.examples && !examples.has(currentExampleKey)) {\n // examples have changed from under us, and the currentExampleKey is no longer\n // valid.\n const firstExample = examples.first()\n const firstExampleKey = examples.keyOf(firstExample)\n\n this._onSelect(firstExampleKey, {\n isSyntheticChange: true,\n })\n }\n }\n\n render() {\n const {\n examples,\n currentExampleKey,\n isValueModified,\n isModifiedValueAvailable,\n showLabels,\n } = this.props\n\n return (\n
    \n {\n showLabels ? (\n Examples: \n ) : null\n }\n \n {isModifiedValueAvailable ? (\n \n ) : null}\n {examples\n .map((example, exampleName) => {\n return (\n \n {example.get(\"summary\") || exampleName}\n \n )\n })\n .valueSeq()}\n \n
    \n )\n }\n}\n","/**\n * @prettier\n */\nimport React from \"react\"\nimport { Map, List } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nimport { stringify } from \"core/utils\"\n\n// This stateful component lets us avoid writing competing values (user\n// modifications vs example values) into global state, and the mess that comes\n// with that: tracking which of the two values are currently used for\n// Try-It-Out, which example a modified value came from, etc...\n//\n// The solution here is to retain the last user-modified value in\n// ExamplesSelectValueRetainer's component state, so that our global state can stay\n// clean, always simply being the source of truth for what value should be both\n// displayed to the user and used as a value during request execution.\n//\n// This approach/tradeoff was chosen in order to encapsulate the particular\n// logic of Examples within the Examples component tree, and to avoid\n// regressions within our current implementation elsewhere (non-Examples\n// definitions, OpenAPI 2.0, etc). A future refactor to global state might make\n// this component unnecessary.\n//\n// TL;DR: this is not our usual approach, but the choice was made consciously.\n\n// Note that `currentNamespace` isn't currently used anywhere!\n\nconst stringifyUnlessList = input =>\n List.isList(input) ? input : stringify(input)\n\nexport default class ExamplesSelectValueRetainer extends React.PureComponent {\n static propTypes = {\n examples: ImPropTypes.map,\n onSelect: PropTypes.func,\n updateValue: PropTypes.func, // mechanism to update upstream value\n userHasEditedBody: PropTypes.bool,\n getComponent: PropTypes.func.isRequired,\n currentUserInputValue: PropTypes.any,\n currentKey: PropTypes.string,\n currentNamespace: PropTypes.string,\n setRetainRequestBodyValueFlag: PropTypes.func.isRequired,\n // (also proxies props for Examples)\n }\n\n static defaultProps = {\n userHasEditedBody: false,\n examples: Map({}),\n currentNamespace: \"__DEFAULT__NAMESPACE__\",\n setRetainRequestBodyValueFlag: () => {\n // NOOP\n },\n onSelect: (...args) =>\n console.log( // eslint-disable-line no-console\n \"ExamplesSelectValueRetainer: no `onSelect` function was provided\",\n ...args\n ),\n updateValue: (...args) =>\n console.log( // eslint-disable-line no-console\n \"ExamplesSelectValueRetainer: no `updateValue` function was provided\",\n ...args\n ),\n }\n\n constructor(props) {\n super(props)\n\n const valueFromExample = this._getCurrentExampleValue()\n\n this.state = {\n // user edited: last value that came from the world around us, and didn't\n // match the current example's value\n // internal: last value that came from user selecting an Example\n [props.currentNamespace]: Map({\n lastUserEditedValue: this.props.currentUserInputValue,\n lastDownstreamValue: valueFromExample,\n isModifiedValueSelected:\n // valueFromExample !== undefined &&\n this.props.userHasEditedBody ||\n this.props.currentUserInputValue !== valueFromExample,\n }),\n }\n }\n\n componentWillUnmount() {\n this.props.setRetainRequestBodyValueFlag(false)\n }\n\n _getStateForCurrentNamespace = () => {\n const { currentNamespace } = this.props\n\n return (this.state[currentNamespace] || Map()).toObject()\n }\n\n _setStateForCurrentNamespace = obj => {\n const { currentNamespace } = this.props\n\n return this._setStateForNamespace(currentNamespace, obj)\n }\n\n _setStateForNamespace = (namespace, obj) => {\n const oldStateForNamespace = this.state[namespace] || Map()\n const newStateForNamespace = oldStateForNamespace.mergeDeep(obj)\n return this.setState({\n [namespace]: newStateForNamespace,\n })\n }\n\n _isCurrentUserInputSameAsExampleValue = () => {\n const { currentUserInputValue } = this.props\n\n const valueFromExample = this._getCurrentExampleValue()\n\n return valueFromExample === currentUserInputValue\n }\n\n _getValueForExample = (exampleKey, props) => {\n // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n // which has access to `nextProps`\n const { examples } = props || this.props\n return stringifyUnlessList(\n (examples || Map({})).getIn([exampleKey, \"value\"])\n )\n }\n\n _getCurrentExampleValue = props => {\n // props are accepted so that this can be used in UNSAFE_componentWillReceiveProps,\n // which has access to `nextProps`\n const { currentKey } = props || this.props\n return this._getValueForExample(currentKey, props || this.props)\n }\n\n _onExamplesSelect = (key, { isSyntheticChange } = {}, ...otherArgs) => {\n const {\n onSelect,\n updateValue,\n currentUserInputValue,\n userHasEditedBody,\n } = this.props\n const { lastUserEditedValue } = this._getStateForCurrentNamespace()\n\n const valueFromExample = this._getValueForExample(key)\n\n if (key === \"__MODIFIED__VALUE__\") {\n updateValue(stringifyUnlessList(lastUserEditedValue))\n return this._setStateForCurrentNamespace({\n isModifiedValueSelected: true,\n })\n }\n\n if (typeof onSelect === \"function\") {\n onSelect(key, { isSyntheticChange }, ...otherArgs)\n }\n\n this._setStateForCurrentNamespace({\n lastDownstreamValue: valueFromExample,\n isModifiedValueSelected:\n (isSyntheticChange && userHasEditedBody) ||\n (!!currentUserInputValue && currentUserInputValue !== valueFromExample),\n })\n\n // we never want to send up value updates from synthetic changes\n if (isSyntheticChange) return\n\n if (typeof updateValue === \"function\") {\n updateValue(stringifyUnlessList(valueFromExample))\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n // update `lastUserEditedValue` as new currentUserInput values come in\n\n const {\n currentUserInputValue: newValue,\n examples,\n onSelect,\n userHasEditedBody,\n } = nextProps\n\n const {\n lastUserEditedValue,\n lastDownstreamValue,\n } = this._getStateForCurrentNamespace()\n\n const valueFromCurrentExample = this._getValueForExample(\n nextProps.currentKey,\n nextProps\n )\n\n const examplesMatchingNewValue = examples.filter(\n (example) =>\n example.get(\"value\") === newValue ||\n // sometimes data is stored as a string (e.g. in Request Bodies), so\n // let's check against a stringified version of our example too\n stringify(example.get(\"value\")) === newValue\n )\n\n if (examplesMatchingNewValue.size) {\n let key\n if(examplesMatchingNewValue.has(nextProps.currentKey))\n {\n key = nextProps.currentKey\n } else {\n key = examplesMatchingNewValue.keySeq().first()\n }\n onSelect(key, {\n isSyntheticChange: true,\n })\n } else if (\n newValue !== this.props.currentUserInputValue && // value has changed\n newValue !== lastUserEditedValue && // value isn't already tracked\n newValue !== lastDownstreamValue // value isn't what we've seen on the other side\n ) {\n this.props.setRetainRequestBodyValueFlag(true)\n this._setStateForNamespace(nextProps.currentNamespace, {\n lastUserEditedValue: nextProps.currentUserInputValue,\n isModifiedValueSelected:\n userHasEditedBody || newValue !== valueFromCurrentExample,\n })\n }\n }\n\n render() {\n const {\n currentUserInputValue,\n examples,\n currentKey,\n getComponent,\n userHasEditedBody,\n } = this.props\n const {\n lastDownstreamValue,\n lastUserEditedValue,\n isModifiedValueSelected,\n } = this._getStateForCurrentNamespace()\n\n const ExamplesSelect = getComponent(\"ExamplesSelect\")\n\n return (\n \n )\n }\n}\n","import parseUrl from \"url-parse\"\nimport Im from \"immutable\"\nimport { btoa, sanitizeUrl, generateCodeVerifier, createCodeChallenge } from \"core/utils\"\n\nexport default function authorize ( { auth, authActions, errActions, configs, authConfigs={}, currentServer } ) {\n let { schema, scopes, name, clientId } = auth\n let flow = schema.get(\"flow\")\n let query = []\n\n switch (flow) {\n case \"password\":\n authActions.authorizePassword(auth)\n return\n\n case \"application\":\n authActions.authorizeApplication(auth)\n return\n\n case \"accessCode\":\n query.push(\"response_type=code\")\n break\n\n case \"implicit\":\n query.push(\"response_type=token\")\n break\n\n case \"clientCredentials\":\n case \"client_credentials\":\n // OAS3\n authActions.authorizeApplication(auth)\n return\n\n case \"authorizationCode\":\n case \"authorization_code\":\n // OAS3\n query.push(\"response_type=code\")\n break\n }\n\n if (typeof clientId === \"string\") {\n query.push(\"client_id=\" + encodeURIComponent(clientId))\n }\n\n let redirectUrl = configs.oauth2RedirectUrl\n\n // todo move to parser\n if (typeof redirectUrl === \"undefined\") {\n errActions.newAuthErr( {\n authId: name,\n source: \"validation\",\n level: \"error\",\n message: \"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"\n })\n return\n }\n query.push(\"redirect_uri=\" + encodeURIComponent(redirectUrl))\n\n let scopesArray = []\n if (Array.isArray(scopes)) {\n scopesArray = scopes\n } else if (Im.List.isList(scopes)) {\n scopesArray = scopes.toArray()\n }\n\n if (scopesArray.length > 0) {\n let scopeSeparator = authConfigs.scopeSeparator || \" \"\n\n query.push(\"scope=\" + encodeURIComponent(scopesArray.join(scopeSeparator)))\n }\n\n let state = btoa(new Date())\n\n query.push(\"state=\" + encodeURIComponent(state))\n\n if (typeof authConfigs.realm !== \"undefined\") {\n query.push(\"realm=\" + encodeURIComponent(authConfigs.realm))\n }\n\n if ((flow === \"authorizationCode\" || flow === \"authorization_code\" || flow === \"accessCode\") && authConfigs.usePkceWithAuthorizationCodeGrant) {\n const codeVerifier = generateCodeVerifier()\n const codeChallenge = createCodeChallenge(codeVerifier)\n\n query.push(\"code_challenge=\" + codeChallenge)\n query.push(\"code_challenge_method=S256\")\n\n // storing the Code Verifier so it can be sent to the token endpoint\n // when exchanging the Authorization Code for an Access Token\n auth.codeVerifier = codeVerifier\n }\n\n let { additionalQueryStringParams } = authConfigs\n\n for (let key in additionalQueryStringParams) {\n if (typeof additionalQueryStringParams[key] !== \"undefined\") {\n query.push([key, additionalQueryStringParams[key]].map(encodeURIComponent).join(\"=\"))\n }\n }\n\n const authorizationUrl = schema.get(\"authorizationUrl\")\n let sanitizedAuthorizationUrl\n if (currentServer) {\n // OpenAPI 3\n sanitizedAuthorizationUrl = parseUrl(\n sanitizeUrl(authorizationUrl),\n currentServer,\n true\n ).toString()\n } else {\n sanitizedAuthorizationUrl = sanitizeUrl(authorizationUrl)\n }\n let url = [sanitizedAuthorizationUrl, query.join(\"&\")].join(authorizationUrl.indexOf(\"?\") === -1 ? \"?\" : \"&\")\n\n // pass action authorizeOauth2 and authentication data through window\n // to authorize with oauth2\n\n let callback\n if (flow === \"implicit\") {\n callback = authActions.preAuthorizeImplicit\n } else if (authConfigs.useBasicAuthenticationWithAccessCodeGrant) {\n callback = authActions.authorizeAccessCodeWithBasicAuthentication\n } else {\n callback = authActions.authorizeAccessCodeWithFormParams\n }\n\n authActions.authPopup(url, {\n auth: auth,\n state: state,\n redirectUrl: redirectUrl,\n callback: callback,\n errCb: errActions.newAuthErr\n })\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport oauth2Authorize from \"core/oauth2-authorize\"\n\nexport default class Oauth2 extends React.Component {\n static propTypes = {\n name: PropTypes.string,\n authorized: PropTypes.object,\n getComponent: PropTypes.func.isRequired,\n schema: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n errSelectors: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n errActions: PropTypes.object.isRequired,\n getConfigs: PropTypes.any\n }\n\n constructor(props, context) {\n super(props, context)\n let { name, schema, authorized, authSelectors } = this.props\n let auth = authorized && authorized.get(name)\n let authConfigs = authSelectors.getConfigs() || {}\n let username = auth && auth.get(\"username\") || \"\"\n let clientId = auth && auth.get(\"clientId\") || authConfigs.clientId || \"\"\n let clientSecret = auth && auth.get(\"clientSecret\") || authConfigs.clientSecret || \"\"\n let passwordType = auth && auth.get(\"passwordType\") || \"basic\"\n let scopes = auth && auth.get(\"scopes\") || authConfigs.scopes || []\n if (typeof scopes === \"string\") {\n scopes = scopes.split(authConfigs.scopeSeparator || \" \")\n }\n\n this.state = {\n appName: authConfigs.appName,\n name: name,\n schema: schema,\n scopes: scopes,\n clientId: clientId,\n clientSecret: clientSecret,\n username: username,\n password: \"\",\n passwordType: passwordType\n }\n }\n\n close = (e) => {\n e.preventDefault()\n let { authActions } = this.props\n\n authActions.showDefinitions(false)\n }\n\n authorize =() => {\n let { authActions, errActions, getConfigs, authSelectors, oas3Selectors } = this.props\n let configs = getConfigs()\n let authConfigs = authSelectors.getConfigs()\n\n errActions.clear({authId: name,type: \"auth\", source: \"auth\"})\n oauth2Authorize({\n auth: this.state,\n currentServer: oas3Selectors.serverEffectiveValue(oas3Selectors.selectedServer()),\n authActions,\n errActions,\n configs,\n authConfigs\n })\n }\n\n onScopeChange =(e) => {\n let { target } = e\n let { checked } = target\n let scope = target.dataset.value\n\n if ( checked && this.state.scopes.indexOf(scope) === -1 ) {\n let newScopes = this.state.scopes.concat([scope])\n this.setState({ scopes: newScopes })\n } else if ( !checked && this.state.scopes.indexOf(scope) > -1) {\n this.setState({ scopes: this.state.scopes.filter((val) => val !== scope) })\n }\n }\n\n onInputChange =(e) => {\n let { target : { dataset : { name }, value } } = e\n let state = {\n [name]: value\n }\n\n this.setState(state)\n }\n\n selectScopes =(e) => {\n if (e.target.dataset.all) {\n this.setState({\n scopes: Array.from((this.props.schema.get(\"allowedScopes\") || this.props.schema.get(\"scopes\")).keys())\n })\n } else {\n this.setState({ scopes: [] })\n }\n }\n\n logout =(e) => {\n e.preventDefault()\n let { authActions, errActions, name } = this.props\n\n errActions.clear({authId: name, type: \"auth\", source: \"auth\"})\n authActions.logoutWithPersistOption([ name ])\n }\n\n render() {\n let {\n schema, getComponent, authSelectors, errSelectors, name, specSelectors\n } = this.props\n const Input = getComponent(\"Input\")\n const Row = getComponent(\"Row\")\n const Col = getComponent(\"Col\")\n const Button = getComponent(\"Button\")\n const AuthError = getComponent(\"authError\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const Markdown = getComponent(\"Markdown\", true)\n const InitializedInput = getComponent(\"InitializedInput\")\n\n const { isOAS3 } = specSelectors\n\n let oidcUrl = isOAS3() ? schema.get(\"openIdConnectUrl\") : null\n\n // Auth type consts\n const AUTH_FLOW_IMPLICIT = \"implicit\"\n const AUTH_FLOW_PASSWORD = \"password\"\n const AUTH_FLOW_ACCESS_CODE = isOAS3() ? (oidcUrl ? \"authorization_code\" : \"authorizationCode\") : \"accessCode\"\n const AUTH_FLOW_APPLICATION = isOAS3() ? (oidcUrl ? \"client_credentials\" : \"clientCredentials\") : \"application\"\n\n let authConfigs = authSelectors.getConfigs() || {}\n let isPkceCodeGrant = !!authConfigs.usePkceWithAuthorizationCodeGrant\n\n let flow = schema.get(\"flow\")\n let flowToDisplay = flow === AUTH_FLOW_ACCESS_CODE && isPkceCodeGrant ? flow + \" with PKCE\" : flow\n let scopes = schema.get(\"allowedScopes\") || schema.get(\"scopes\")\n let authorizedAuth = authSelectors.authorized().get(name)\n let isAuthorized = !!authorizedAuth\n let errors = errSelectors.allErrors().filter( err => err.get(\"authId\") === name)\n let isValid = !errors.filter( err => err.get(\"source\") === \"validation\").size\n let description = schema.get(\"description\")\n\n return (\n
    \n

    {name} (OAuth2, { flowToDisplay })

    \n { !this.state.appName ? null :
    Application: { this.state.appName }
    }\n { description && }\n\n { isAuthorized &&
    Authorized
    }\n\n { oidcUrl &&

    OpenID Connect URL: { oidcUrl }

    }\n { ( flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE ) &&

    Authorization URL: { schema.get(\"authorizationUrl\") }

    }\n { ( flow === AUTH_FLOW_PASSWORD || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_APPLICATION ) &&

    Token URL: { schema.get(\"tokenUrl\") }

    }\n

    Flow: { flowToDisplay }

    \n\n {\n flow !== AUTH_FLOW_PASSWORD ? null\n : \n \n \n {\n isAuthorized ? { this.state.username } \n : \n \n \n }\n \n {\n\n }\n \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n \n \n \n {\n isAuthorized ? { this.state.passwordType } \n : \n \n \n }\n \n \n }\n {\n ( flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_IMPLICIT || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD ) &&\n ( !isAuthorized || isAuthorized && this.state.clientId) && \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n \n }\n\n {\n ( (flow === AUTH_FLOW_APPLICATION || flow === AUTH_FLOW_ACCESS_CODE || flow === AUTH_FLOW_PASSWORD) && \n \n {\n isAuthorized ? ****** \n : \n \n \n }\n\n \n )}\n\n {\n !isAuthorized && scopes && scopes.size ?
    \n

    \n Scopes:\n select all\n select none\n

    \n { scopes.map((description, name) => {\n return (\n \n
    \n \n \n
    \n
    \n )\n }).toArray()\n }\n
    : null\n }\n\n {\n errors.valueSeq().map( (error, key) => {\n return \n } )\n }\n
    \n { isValid &&\n ( isAuthorized ? \n : \n )\n }\n \n
    \n\n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Clear extends Component {\n\n onClick =() => {\n let { specActions, path, method } = this.props\n specActions.clearResponse( path, method )\n specActions.clearRequest( path, method )\n }\n\n render(){\n return (\n \n )\n }\n\n static propTypes = {\n specActions: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nconst Headers = ( { headers } )=>{\n return (\n
    \n
    Response headers
    \n
    {headers}
    \n
    )\n}\nHeaders.propTypes = {\n headers: PropTypes.array.isRequired\n}\n\nconst Duration = ( { duration } ) => {\n return (\n
    \n
    Request duration
    \n
    {duration} ms
    \n
    \n )\n}\nDuration.propTypes = {\n duration: PropTypes.number.isRequired\n}\n\n\nexport default class LiveResponse extends React.Component {\n static propTypes = {\n response: ImPropTypes.map,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n displayRequestDuration: PropTypes.bool.isRequired,\n specSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired\n }\n\n shouldComponentUpdate(nextProps) {\n // BUG: props.response is always coming back as a new Immutable instance\n // same issue as responses.jsx (tryItOutResponse)\n return this.props.response !== nextProps.response\n || this.props.path !== nextProps.path\n || this.props.method !== nextProps.method\n || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n }\n\n render() {\n const { response, getComponent, getConfigs, displayRequestDuration, specSelectors, path, method } = this.props\n const { showMutatedRequest, requestSnippetsEnabled } = getConfigs()\n\n const curlRequest = showMutatedRequest ? specSelectors.mutatedRequestFor(path, method) : specSelectors.requestFor(path, method)\n const status = response.get(\"status\")\n const url = curlRequest.get(\"url\")\n const headers = response.get(\"headers\").toJS()\n const notDocumented = response.get(\"notDocumented\")\n const isError = response.get(\"error\")\n const body = response.get(\"text\")\n const duration = response.get(\"duration\")\n const headersKeys = Object.keys(headers)\n const contentType = headers[\"content-type\"] || headers[\"Content-Type\"]\n\n const ResponseBody = getComponent(\"responseBody\")\n const returnObject = headersKeys.map(key => {\n var joinedHeaders = Array.isArray(headers[key]) ? headers[key].join() : headers[key]\n return {key}: {joinedHeaders} \n })\n const hasHeaders = returnObject.length !== 0\n const Markdown = getComponent(\"Markdown\", true)\n const RequestSnippets = getComponent(\"RequestSnippets\", true)\n const Curl = getComponent(\"curl\", true)\n\n return (\n
    \n { curlRequest && requestSnippetsEnabled \n ? \n : \n }\n { url &&
    \n
    \n

    Request URL

    \n
    {url}
    \n
    \n
    \n }\n

    Server response

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    CodeDetails
    \n { status }\n {\n notDocumented ?
    \n Undocumented \n
    \n : null\n }\n
    \n {\n isError ? \n : null\n }\n {\n body ? \n : null\n }\n {\n hasHeaders ? : null\n }\n {\n displayRequestDuration && duration ? : null\n }\n
    \n
    \n )\n }\n}\n","import React from \"react\"\nimport URL from \"url-parse\"\n\nimport PropTypes from \"prop-types\"\nimport { sanitizeUrl, requiresValidationURL } from \"core/utils\"\nimport win from \"core/window\"\n\nexport default class OnlineValidatorBadge extends React.Component {\n static propTypes = {\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired\n }\n\n constructor(props, context) {\n super(props, context)\n let { getConfigs } = props\n let { validatorUrl } = getConfigs()\n this.state = {\n url: this.getDefinitionUrl(),\n validatorUrl: validatorUrl === undefined ? \"https://validator.swagger.io/validator\" : validatorUrl\n }\n }\n\n getDefinitionUrl = () => {\n // TODO: test this behavior by stubbing `window.location` in an Enzyme/JSDom env\n let { specSelectors } = this.props\n\n const urlObject = new URL(specSelectors.url(), win.location)\n return urlObject.toString()\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n let { getConfigs } = nextProps\n let { validatorUrl } = getConfigs()\n\n this.setState({\n url: this.getDefinitionUrl(),\n validatorUrl: validatorUrl === undefined ? \"https://validator.swagger.io/validator\" : validatorUrl\n })\n }\n\n render() {\n let { getConfigs } = this.props\n let { spec } = getConfigs()\n\n let sanitizedValidatorUrl = sanitizeUrl(this.state.validatorUrl)\n\n if ( typeof spec === \"object\" && Object.keys(spec).length) return null\n\n if (!this.state.url || !requiresValidationURL(this.state.validatorUrl)\n || !requiresValidationURL(this.state.url)) {\n return null\n }\n\n return (\n \n \n \n )\n }\n}\n\n\nclass ValidatorImage extends React.Component {\n static propTypes = {\n src: PropTypes.string,\n alt: PropTypes.string\n }\n\n constructor(props) {\n super(props)\n this.state = {\n loaded: false,\n error: false\n }\n }\n\n componentDidMount() {\n const img = new Image()\n img.onload = () => {\n this.setState({\n loaded: true\n })\n }\n img.onerror = () => {\n this.setState({\n error: true\n })\n }\n img.src = this.props.src\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.src !== this.props.src) {\n const img = new Image()\n img.onload = () => {\n this.setState({\n loaded: true\n })\n }\n img.onerror = () => {\n this.setState({\n error: true\n })\n }\n img.src = nextProps.src\n }\n }\n\n render() {\n if (this.state.error) {\n return {\"Error\"}\n } else if (!this.state.loaded) {\n return null\n }\n return {this.props.alt}\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Im from \"immutable\"\n\nexport default class Operations extends React.Component {\n\n static propTypes = {\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n oas3Selectors: PropTypes.func.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n authActions: PropTypes.object.isRequired,\n authSelectors: PropTypes.object.isRequired,\n getConfigs: PropTypes.func.isRequired,\n fn: PropTypes.func.isRequired\n }\n\n render() {\n let {\n specSelectors,\n } = this.props\n\n const taggedOps = specSelectors.taggedOperations()\n\n if(taggedOps.size === 0) {\n return

    No operations defined in spec!

    \n }\n\n return (\n
    \n { taggedOps.map(this.renderOperationTag).toArray() }\n { taggedOps.size < 1 ?

    No operations defined in spec!

    : null }\n
    \n )\n }\n\n renderOperationTag = (tagObj, tag) => {\n const {\n specSelectors,\n getComponent,\n oas3Selectors,\n layoutSelectors,\n layoutActions,\n getConfigs,\n } = this.props\n const validOperationMethods = specSelectors.validOperationMethods()\n const OperationContainer = getComponent(\"OperationContainer\", true)\n const OperationTag = getComponent(\"OperationTag\")\n const operations = tagObj.get(\"operations\")\n return (\n \n
    \n {\n operations.map(op => {\n const path = op.get(\"path\")\n const method = op.get(\"method\")\n const specPath = Im.List([\"paths\", path, method])\n\n if (validOperationMethods.indexOf(method) === -1) {\n return null\n }\n\n return (\n \n )\n }).toArray()\n }\n
    \n \n )\n }\n\n}\n\nOperations.propTypes = {\n layoutActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n fn: PropTypes.object.isRequired\n}\n","export function isAbsoluteUrl(url) {\n return url.match(/^(?:[a-z]+:)?\\/\\//i) // Matches http://, HTTP://, https://, ftp://, //example.com,\n}\n\nexport function addProtocol(url) {\n if (!url.match(/^\\/\\//i)) return url // Checks if protocol is missing e.g. //example.com\n\n return `${window.location.protocol}${url}`\n}\n\nexport function buildBaseUrl(selectedServer, specUrl) {\n if (!selectedServer) return specUrl\n if (isAbsoluteUrl(selectedServer)) return addProtocol(selectedServer)\n\n return new URL(selectedServer, specUrl).href\n}\n\nexport function buildUrl(url, specUrl, { selectedServer=\"\" } = {}) {\n if (!url) return undefined\n if (isAbsoluteUrl(url)) return url\n\n const baseUrl = buildBaseUrl(selectedServer, specUrl)\n if (!isAbsoluteUrl(baseUrl)) {\n return new URL(url, window.location.href).href\n }\n return new URL(url, baseUrl).href\n}\n\n/**\n * Safe version of buildUrl function. `selectedServer` can contain server variables\n * which can fail the URL resolution.\n */\nexport function safeBuildUrl(url, specUrl, { selectedServer=\"\" } = {}) {\n try {\n return buildUrl(url, specUrl, { selectedServer })\n } catch {\n return undefined\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport Im from \"immutable\"\nimport { createDeepLinkPath, escapeDeepLinkPath, sanitizeUrl } from \"core/utils\"\nimport { safeBuildUrl } from \"core/utils/url\"\nimport { isFunc } from \"core/utils\"\n\nexport default class OperationTag extends React.Component {\n\n static defaultProps = {\n tagObj: Im.fromJS({}),\n tag: \"\",\n }\n\n static propTypes = {\n tagObj: ImPropTypes.map.isRequired,\n tag: PropTypes.string.isRequired,\n\n oas3Selectors: PropTypes.func.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n\n getConfigs: PropTypes.func.isRequired,\n getComponent: PropTypes.func.isRequired,\n\n specUrl: PropTypes.string.isRequired,\n\n children: PropTypes.element,\n }\n\n render() {\n const {\n tagObj,\n tag,\n children,\n oas3Selectors,\n layoutSelectors,\n layoutActions,\n getConfigs,\n getComponent,\n specUrl,\n } = this.props\n\n let {\n docExpansion,\n deepLinking,\n } = getConfigs()\n\n const Collapse = getComponent(\"Collapse\")\n const Markdown = getComponent(\"Markdown\", true)\n const DeepLink = getComponent(\"DeepLink\")\n const Link = getComponent(\"Link\")\n const ArrowUpIcon = getComponent(\"ArrowUpIcon\")\n const ArrowDownIcon = getComponent(\"ArrowDownIcon\")\n\n let tagDescription = tagObj.getIn([\"tagDetails\", \"description\"], null)\n let tagExternalDocsDescription = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"description\"])\n let rawTagExternalDocsUrl = tagObj.getIn([\"tagDetails\", \"externalDocs\", \"url\"])\n let tagExternalDocsUrl\n if (isFunc(oas3Selectors) && isFunc(oas3Selectors.selectedServer)) {\n tagExternalDocsUrl = safeBuildUrl(rawTagExternalDocsUrl, specUrl, { selectedServer: oas3Selectors.selectedServer() })\n } else {\n tagExternalDocsUrl = rawTagExternalDocsUrl\n }\n\n let isShownKey = [\"operations-tag\", tag]\n let showTag = layoutSelectors.isShown(isShownKey, docExpansion === \"full\" || docExpansion === \"list\")\n\n return (\n
    \n\n layoutActions.show(isShownKey, !showTag)}\n className={!tagDescription ? \"opblock-tag no-desc\" : \"opblock-tag\"}\n id={isShownKey.map(v => escapeDeepLinkPath(v)).join(\"-\")}\n data-tag={tag}\n data-is-open={showTag}\n >\n \n {!tagDescription ? :\n \n \n \n }\n\n {!tagExternalDocsUrl ? null :\n
    \n \n e.stopPropagation()}\n target=\"_blank\"\n >{tagExternalDocsDescription || tagExternalDocsUrl}\n \n
    \n }\n\n\n layoutActions.show(isShownKey, !showTag)}>\n\n {showTag ? : }\n \n \n\n \n {children}\n \n
    \n )\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { getList } from \"core/utils\"\nimport { getExtensions, sanitizeUrl, escapeDeepLinkPath } from \"core/utils\"\nimport { safeBuildUrl } from \"core/utils/url\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nimport RollingLoadSVG from \"core/assets/rolling-load.svg\"\n\nexport default class Operation extends PureComponent {\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operation: PropTypes.instanceOf(Iterable).isRequired,\n summary: PropTypes.string,\n response: PropTypes.instanceOf(Iterable),\n request: PropTypes.instanceOf(Iterable),\n\n toggleShown: PropTypes.func.isRequired,\n onTryoutClick: PropTypes.func.isRequired,\n onResetClick: PropTypes.func.isRequired,\n onCancelClick: PropTypes.func.isRequired,\n onExecute: PropTypes.func.isRequired,\n\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n authSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired\n }\n\n static defaultProps = {\n operation: null,\n response: null,\n request: null,\n specPath: List(),\n summary: \"\"\n }\n\n render() {\n let {\n specPath,\n response,\n request,\n toggleShown,\n onTryoutClick,\n onResetClick,\n onCancelClick,\n onExecute,\n fn,\n getComponent,\n getConfigs,\n specActions,\n specSelectors,\n authActions,\n authSelectors,\n oas3Actions,\n oas3Selectors\n } = this.props\n let operationProps = this.props.operation\n\n let {\n deprecated,\n isShown,\n path,\n method,\n op,\n tag,\n operationId,\n allowTryItOut,\n displayRequestDuration,\n tryItOutEnabled,\n executeInProgress\n } = operationProps.toJS()\n\n let {\n description,\n externalDocs,\n schemes\n } = op\n\n const externalDocsUrl = externalDocs ? safeBuildUrl(externalDocs.url, specSelectors.url(), { selectedServer: oas3Selectors.selectedServer() }) : \"\"\n let operation = operationProps.getIn([\"op\"])\n let responses = operation.get(\"responses\")\n let parameters = getList(operation, [\"parameters\"])\n let operationScheme = specSelectors.operationScheme(path, method)\n let isShownKey = [\"operations\", tag, operationId]\n let extensions = getExtensions(operation)\n\n const Responses = getComponent(\"responses\")\n const Parameters = getComponent( \"parameters\" )\n const Execute = getComponent( \"execute\" )\n const Clear = getComponent( \"clear\" )\n const Collapse = getComponent( \"Collapse\" )\n const Markdown = getComponent(\"Markdown\", true)\n const Schemes = getComponent( \"schemes\" )\n const OperationServers = getComponent( \"OperationServers\" )\n const OperationExt = getComponent( \"OperationExt\" )\n const OperationSummary = getComponent( \"OperationSummary\" )\n const Link = getComponent( \"Link\" )\n\n const { showExtensions } = getConfigs()\n\n // Merge in Live Response\n if(responses && response && response.size > 0) {\n let notDocumented = !responses.get(String(response.get(\"status\"))) && !responses.get(\"default\")\n response = response.set(\"notDocumented\", notDocumented)\n }\n\n let onChangeKey = [ path, method ] // Used to add values to _this_ operation ( indexed by path and method )\n\n const validationErrors = specSelectors.validationErrors([path, method])\n\n return (\n
    \n \n \n
    \n { (operation && operation.size) || operation === null ? null :\n \n }\n { deprecated &&

    Warning: Deprecated

    }\n { description &&\n
    \n
    \n \n
    \n
    \n }\n {\n externalDocsUrl ?\n
    \n

    Find more details

    \n
    \n {externalDocs.description &&\n \n \n \n }\n {externalDocsUrl}\n
    \n
    : null\n }\n\n { !operation || !operation.size ? null :\n \n }\n\n { !tryItOutEnabled ? null :\n \n }\n\n {!tryItOutEnabled || !allowTryItOut ? null : schemes && schemes.size ?
    \n \n
    : null\n }\n\n { !tryItOutEnabled || !allowTryItOut || validationErrors.length <= 0 ? null :
    \n Please correct the following validation errors and try again.\n
      \n { validationErrors.map((error, index) =>
    • { error }
    • ) }\n
    \n
    \n }\n\n
    \n { !tryItOutEnabled || !allowTryItOut ? null :\n\n \n }\n\n { (!tryItOutEnabled || !response || !allowTryItOut) ? null :\n \n }\n
    \n\n {executeInProgress ?
    : null}\n\n { !responses ? null :\n \n }\n\n { !showExtensions || !extensions.size ? null :\n \n }\n
    \n
    \n
    \n )\n }\n\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { opId } from \"swagger-client/es/helpers\"\nimport { Iterable, fromJS, Map } from \"immutable\"\n\nexport default class OperationContainer extends PureComponent {\n constructor(props, context) {\n super(props, context)\n\n const { tryItOutEnabled } = props.getConfigs()\n\n this.state = {\n tryItOutEnabled,\n executeInProgress: false\n }\n }\n\n static propTypes = {\n op: PropTypes.instanceOf(Iterable).isRequired,\n tag: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n operationId: PropTypes.string.isRequired,\n showSummary: PropTypes.bool.isRequired,\n isShown: PropTypes.bool.isRequired,\n jumpToKey: PropTypes.string.isRequired,\n allowTryItOut: PropTypes.bool,\n displayOperationId: PropTypes.bool,\n isAuthorized: PropTypes.bool,\n displayRequestDuration: PropTypes.bool,\n response: PropTypes.instanceOf(Iterable),\n request: PropTypes.instanceOf(Iterable),\n security: PropTypes.instanceOf(Iterable),\n isDeepLinkingEnabled: PropTypes.bool.isRequired,\n specPath: ImPropTypes.list.isRequired,\n getComponent: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n oas3Actions: PropTypes.object,\n oas3Selectors: PropTypes.object,\n authSelectors: PropTypes.object,\n specActions: PropTypes.object.isRequired,\n specSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired,\n getConfigs: PropTypes.func.isRequired\n }\n\n static defaultProps = {\n showSummary: true,\n response: null,\n allowTryItOut: true,\n displayOperationId: false,\n displayRequestDuration: false\n }\n\n mapStateToProps(nextState, props) {\n const { op, layoutSelectors, getConfigs } = props\n const { docExpansion, deepLinking, displayOperationId, displayRequestDuration, supportedSubmitMethods } = getConfigs()\n const showSummary = layoutSelectors.showSummary()\n const operationId = op.getIn([\"operation\", \"__originalOperationId\"]) || op.getIn([\"operation\", \"operationId\"]) || opId(op.get(\"operation\"), props.path, props.method) || op.get(\"id\")\n const isShownKey = [\"operations\", props.tag, operationId]\n const allowTryItOut = supportedSubmitMethods.indexOf(props.method) >= 0 && (typeof props.allowTryItOut === \"undefined\" ?\n props.specSelectors.allowTryItOutFor(props.path, props.method) : props.allowTryItOut)\n const security = op.getIn([\"operation\", \"security\"]) || props.specSelectors.security()\n\n return {\n operationId,\n isDeepLinkingEnabled: deepLinking,\n showSummary,\n displayOperationId,\n displayRequestDuration,\n allowTryItOut,\n security,\n isAuthorized: props.authSelectors.isAuthorized(security),\n isShown: layoutSelectors.isShown(isShownKey, docExpansion === \"full\" ),\n jumpToKey: `paths.${props.path}.${props.method}`,\n response: props.specSelectors.responseFor(props.path, props.method),\n request: props.specSelectors.requestFor(props.path, props.method)\n }\n }\n\n componentDidMount() {\n const { isShown } = this.props\n const resolvedSubtree = this.getResolvedSubtree()\n\n if(isShown && resolvedSubtree === undefined) {\n this.requestResolvedSubtree()\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { response, isShown } = nextProps\n const resolvedSubtree = this.getResolvedSubtree()\n\n if(response !== this.props.response) {\n this.setState({ executeInProgress: false })\n }\n\n if(isShown && resolvedSubtree === undefined) {\n this.requestResolvedSubtree()\n }\n }\n\n toggleShown =() => {\n let { layoutActions, tag, operationId, isShown } = this.props\n const resolvedSubtree = this.getResolvedSubtree()\n if(!isShown && resolvedSubtree === undefined) {\n // transitioning from collapsed to expanded\n this.requestResolvedSubtree()\n }\n layoutActions.show([\"operations\", tag, operationId], !isShown)\n }\n\n onCancelClick=() => {\n this.setState({tryItOutEnabled: !this.state.tryItOutEnabled})\n }\n\n onTryoutClick =() => {\n this.setState({tryItOutEnabled: !this.state.tryItOutEnabled})\n }\n\n onResetClick = (pathMethod) => {\n const defaultRequestBodyValue = this.props.oas3Selectors.selectDefaultRequestBodyValue(...pathMethod)\n this.props.oas3Actions.setRequestBodyValue({ value: defaultRequestBodyValue, pathMethod })\n }\n\n onExecute = () => {\n this.setState({ executeInProgress: true })\n }\n\n getResolvedSubtree = () => {\n const {\n specSelectors,\n path,\n method,\n specPath\n } = this.props\n\n if(specPath) {\n return specSelectors.specResolvedSubtree(specPath.toJS())\n }\n\n return specSelectors.specResolvedSubtree([\"paths\", path, method])\n }\n\n requestResolvedSubtree = () => {\n const {\n specActions,\n path,\n method,\n specPath\n } = this.props\n\n\n if(specPath) {\n return specActions.requestResolvedSubtree(specPath.toJS())\n }\n\n return specActions.requestResolvedSubtree([\"paths\", path, method])\n }\n\n render() {\n let {\n op: unresolvedOp,\n tag,\n path,\n method,\n security,\n isAuthorized,\n operationId,\n showSummary,\n isShown,\n jumpToKey,\n allowTryItOut,\n response,\n request,\n displayOperationId,\n displayRequestDuration,\n isDeepLinkingEnabled,\n specPath,\n specSelectors,\n specActions,\n getComponent,\n getConfigs,\n layoutSelectors,\n layoutActions,\n authActions,\n authSelectors,\n oas3Actions,\n oas3Selectors,\n fn\n } = this.props\n\n const Operation = getComponent( \"operation\" )\n\n const resolvedSubtree = this.getResolvedSubtree() || Map()\n\n const operationProps = fromJS({\n op: resolvedSubtree,\n tag,\n path,\n summary: unresolvedOp.getIn([\"operation\", \"summary\"]) || \"\",\n deprecated: resolvedSubtree.get(\"deprecated\") || unresolvedOp.getIn([\"operation\", \"deprecated\"]) || false,\n method,\n security,\n isAuthorized,\n operationId,\n originalOperationId: resolvedSubtree.getIn([\"operation\", \"__originalOperationId\"]),\n showSummary,\n isShown,\n jumpToKey,\n allowTryItOut,\n request,\n displayOperationId,\n displayRequestDuration,\n isDeepLinkingEnabled,\n executeInProgress: this.state.executeInProgress,\n tryItOutEnabled: this.state.tryItOutEnabled\n })\n\n return (\n \n )\n }\n\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/toString\");","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport toString from \"lodash/toString\"\n\n\nexport default class OperationSummary extends PureComponent {\n\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n isShown: PropTypes.bool.isRequired,\n toggleShown: PropTypes.func.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n authActions: PropTypes.object,\n authSelectors: PropTypes.object,\n }\n\n static defaultProps = {\n operationProps: null,\n specPath: List(),\n summary: \"\"\n }\n\n render() {\n\n let {\n isShown,\n toggleShown,\n getComponent,\n authActions,\n authSelectors,\n operationProps,\n specPath,\n } = this.props\n\n let {\n summary,\n isAuthorized,\n method,\n op,\n showSummary,\n path,\n operationId,\n originalOperationId,\n displayOperationId,\n } = operationProps.toJS()\n\n let {\n summary: resolvedSummary,\n } = op\n\n let security = operationProps.get(\"security\")\n\n const AuthorizeOperationBtn = getComponent(\"authorizeOperationBtn\", true)\n const OperationSummaryMethod = getComponent(\"OperationSummaryMethod\")\n const OperationSummaryPath = getComponent(\"OperationSummaryPath\")\n const JumpToPath = getComponent(\"JumpToPath\", true)\n const CopyToClipboardBtn = getComponent(\"CopyToClipboardBtn\", true)\n const ArrowUpIcon = getComponent(\"ArrowUpIcon\")\n const ArrowDownIcon = getComponent(\"ArrowDownIcon\")\n\n const hasSecurity = security && !!security.count()\n const securityIsOptional = hasSecurity && security.size === 1 && security.first().isEmpty()\n const allowAnonymous = !hasSecurity || securityIsOptional\n return (\n
    \n \n \n
    \n \n\n {!showSummary ? null :\n
    \n {toString(resolvedSummary || summary)}\n
    \n }\n
    \n\n {displayOperationId && (originalOperationId || operationId) ? {originalOperationId || operationId} : null}\n \n \n {\n allowAnonymous ? null :\n {\n const applicableDefinitions = authSelectors.definitionsForRequirements(security)\n authActions.showDefinitions(applicableDefinitions)\n }}\n />\n }\n {/* TODO: use wrapComponents here, swagger-ui doesn't care about jumpToPath */}\n \n {isShown ? : }\n \n
    \n )\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\n\nexport default class OperationSummaryMethod extends PureComponent {\n\n static propTypes = {\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n method: PropTypes.string.isRequired,\n }\n\n static defaultProps = {\n operationProps: null,\n }\n render() {\n\n let {\n method,\n } = this.props\n\n return (\n {method.toUpperCase()}\n )\n }\n}\n","import React, { PureComponent } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Iterable } from \"immutable\"\nimport { createDeepLinkPath } from \"core/utils\"\nimport ImPropTypes from \"react-immutable-proptypes\"\n\nexport default class OperationSummaryPath extends PureComponent{\n\n static propTypes = {\n specPath: ImPropTypes.list.isRequired,\n operationProps: PropTypes.instanceOf(Iterable).isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render(){\n let {\n getComponent,\n operationProps,\n } = this.props\n\n\n let {\n deprecated,\n isShown,\n path,\n tag,\n operationId,\n isDeepLinkingEnabled,\n } = operationProps.toJS()\n\n /**\n * Add word-break elements between each segment, before the slash\n * to allow browsers an opportunity to break long paths into sensible segments.\n */\n const pathParts = path.split(/(?=\\/)/g)\n for (let i = 1; i < pathParts.length; i += 2) {\n pathParts.splice(i, 0, )\n }\n\n const DeepLink = getComponent( \"DeepLink\" )\n\n return(\n \n \n \n\n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExt = ({ extensions, getComponent }) => {\n let OperationExtRow = getComponent(\"OperationExtRow\")\n return (\n
    \n
    \n

    Extensions

    \n
    \n
    \n\n \n \n \n \n \n \n \n \n {\n extensions.entrySeq().map(([k, v]) => )\n }\n \n
    FieldValue
    \n
    \n
    \n )\n}\nOperationExt.propTypes = {\n extensions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n}\n\nexport default OperationExt\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const OperationExtRow = ({ xKey, xVal }) => {\n const xNormalizedValue = !xVal ? null : xVal.toJS ? xVal.toJS() : xVal\n\n return (\n { xKey }\n { JSON.stringify(xNormalizedValue) }\n )\n}\nOperationExtRow.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default OperationExtRow\n","/**\n * Replace invalid characters from a string to create an html-ready ID\n *\n * @param {string} id A string that may contain invalid characters for the HTML ID attribute\n * @param {string} [replacement=_] The string to replace invalid characters with; \"_\" by default\n * @return {string} Information about the parameter schema\n */\nexport default function createHtmlReadyId(id, replacement = \"_\") {\n return id.replace(/[^\\w-]/g, replacement)\n}\n","import React from \"react\"\nimport { fromJS, Iterable } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { defaultStatusCode, getAcceptControllingResponse } from \"core/utils\"\nimport createHtmlReadyId from \"core/utils/create-html-ready-id\"\n\nexport default class Responses extends React.Component {\n static propTypes = {\n tryItOutResponse: PropTypes.instanceOf(Iterable),\n responses: PropTypes.instanceOf(Iterable).isRequired,\n produces: PropTypes.instanceOf(Iterable),\n producesValue: PropTypes.any,\n displayRequestDuration: PropTypes.bool.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n fn: PropTypes.object.isRequired\n }\n\n static defaultProps = {\n tryItOutResponse: null,\n produces: fromJS([\"application/json\"]),\n displayRequestDuration: false\n }\n\n // These performance-enhancing checks were disabled as part of Multiple Examples\n // because they were causing data-consistency issues\n //\n // shouldComponentUpdate(nextProps) {\n // // BUG: props.tryItOutResponse is always coming back as a new Immutable instance\n // let render = this.props.tryItOutResponse !== nextProps.tryItOutResponse\n // || this.props.responses !== nextProps.responses\n // || this.props.produces !== nextProps.produces\n // || this.props.producesValue !== nextProps.producesValue\n // || this.props.displayRequestDuration !== nextProps.displayRequestDuration\n // || this.props.path !== nextProps.path\n // || this.props.method !== nextProps.method\n // return render\n // }\n\n\tonChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n onResponseContentTypeChange = ({ controlsAcceptHeader, value }) => {\n const { oas3Actions, path, method } = this.props\n if(controlsAcceptHeader) {\n oas3Actions.setResponseContentType({\n value,\n path,\n method\n })\n }\n }\n\n render() {\n let {\n responses,\n tryItOutResponse,\n getComponent,\n getConfigs,\n specSelectors,\n fn,\n producesValue,\n displayRequestDuration,\n specPath,\n path,\n method,\n oas3Selectors,\n oas3Actions,\n } = this.props\n let defaultCode = defaultStatusCode( responses )\n\n const ContentType = getComponent( \"contentType\" )\n const LiveResponse = getComponent( \"liveResponse\" )\n const Response = getComponent( \"response\" )\n\n let produces = this.props.produces && this.props.produces.size ? this.props.produces : Responses.defaultProps.produces\n\n const isSpecOAS3 = specSelectors.isOAS3()\n\n const acceptControllingResponse = isSpecOAS3 ?\n getAcceptControllingResponse(responses) : null\n\n const regionId = createHtmlReadyId(`${method}${path}_responses`)\n const controlId = `${regionId}_select`\n\n return (\n
    \n
    \n

    Responses

    \n { specSelectors.isOAS3() ? null : }\n
    \n
    \n {\n !tryItOutResponse ? null\n :
    \n \n

    Responses

    \n
    \n\n }\n\n \n \n \n \n \n { specSelectors.isOAS3() ? : null }\n \n \n \n {\n responses.entrySeq().map( ([code, response]) => {\n\n let className = tryItOutResponse && tryItOutResponse.get(\"status\") == code ? \"response_current\" : \"\"\n return (\n \n )\n }).toArray()\n }\n \n
    CodeDescriptionLinks
    \n
    \n
    \n )\n }\n}\n","export function canJsonParse(str) {\n try {\n let testValueForJson = JSON.parse(str)\n return testValueForJson ? true : false\n } catch (e) {\n // exception: string is not valid json\n return null\n }\n}\n\nexport function getKnownSyntaxHighlighterLanguage(val) {\n // to start, only check for json. can expand as needed in future\n const isValidJson = canJsonParse(val)\n return isValidJson ? \"json\" : null\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport cx from \"classnames\"\nimport { fromJS, Seq, Iterable, List, Map } from \"immutable\"\nimport { getExtensions, fromJSOrdered, stringify } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\n\n\nconst getExampleComponent = ( sampleResponse, HighlightCode ) => {\n if (sampleResponse == null) return null\n\n const testValueForJson = getKnownSyntaxHighlighterLanguage(sampleResponse)\n const language = testValueForJson ? \"json\" : null\n\n return (\n
    \n {stringify(sampleResponse)}\n
    \n )\n}\n\nexport default class Response extends React.Component {\n constructor(props, context) {\n super(props, context)\n\n this.state = {\n responseContentType: \"\",\n }\n }\n\n static propTypes = {\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n code: PropTypes.string.isRequired,\n response: PropTypes.instanceOf(Iterable),\n className: PropTypes.string,\n getComponent: PropTypes.func.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n specPath: ImPropTypes.list.isRequired,\n fn: PropTypes.object.isRequired,\n contentType: PropTypes.string,\n activeExamplesKey: PropTypes.string,\n controlsAcceptHeader: PropTypes.bool,\n onContentTypeChange: PropTypes.func\n }\n\n static defaultProps = {\n response: fromJS({}),\n onContentTypeChange: () => {}\n }\n\n _onContentTypeChange = (value) => {\n const { onContentTypeChange, controlsAcceptHeader } = this.props\n this.setState({ responseContentType: value })\n onContentTypeChange({\n value: value,\n controlsAcceptHeader\n })\n }\n\n getTargetExamplesKey = () => {\n const { response, contentType, activeExamplesKey } = this.props\n\n const activeContentType = this.state.responseContentType || contentType\n const activeMediaType = response.getIn([\"content\", activeContentType], Map({}))\n const examplesForMediaType = activeMediaType.get(\"examples\", null)\n\n const firstExamplesKey = examplesForMediaType.keySeq().first()\n return activeExamplesKey || firstExamplesKey\n }\n\n render() {\n let {\n path,\n method,\n code,\n response,\n className,\n specPath,\n fn,\n getComponent,\n getConfigs,\n specSelectors,\n contentType,\n controlsAcceptHeader,\n oas3Actions,\n } = this.props\n\n let { inferSchema, getSampleSchema } = fn\n let isOAS3 = specSelectors.isOAS3()\n const { showExtensions } = getConfigs()\n\n let extensions = showExtensions ? getExtensions(response) : null\n let headers = response.get(\"headers\")\n let links = response.get(\"links\")\n const ResponseExtension = getComponent(\"ResponseExtension\")\n const Headers = getComponent(\"headers\")\n const HighlightCode = getComponent(\"HighlightCode\", true)\n const ModelExample = getComponent(\"modelExample\")\n const Markdown = getComponent(\"Markdown\", true)\n const OperationLink = getComponent(\"operationLink\")\n const ContentType = getComponent(\"contentType\")\n const ExamplesSelect = getComponent(\"ExamplesSelect\")\n const Example = getComponent(\"Example\")\n\n\n var schema, specPathWithPossibleSchema\n\n const activeContentType = this.state.responseContentType || contentType\n const activeMediaType = response.getIn([\"content\", activeContentType], Map({}))\n const examplesForMediaType = activeMediaType.get(\"examples\", null)\n\n // Goal: find a schema value for `schema`\n if(isOAS3) {\n const oas3SchemaForContentType = activeMediaType.get(\"schema\")\n\n schema = oas3SchemaForContentType ? inferSchema(oas3SchemaForContentType.toJS()) : null\n specPathWithPossibleSchema = oas3SchemaForContentType ? List([\"content\", this.state.responseContentType, \"schema\"]) : specPath\n } else {\n schema = response.get(\"schema\")\n specPathWithPossibleSchema = response.has(\"schema\") ? specPath.push(\"schema\") : specPath\n }\n\n let mediaTypeExample\n let shouldOverrideSchemaExample = false\n let sampleSchema\n let sampleGenConfig = {\n includeReadOnly: true\n }\n\n // Goal: find an example value for `sampleResponse`\n if(isOAS3) {\n sampleSchema = activeMediaType.get(\"schema\")?.toJS()\n if(Map.isMap(examplesForMediaType) && !examplesForMediaType.isEmpty()) {\n const targetExamplesKey = this.getTargetExamplesKey()\n const targetExample = examplesForMediaType\n .get(targetExamplesKey, Map({}))\n const getMediaTypeExample = (targetExample) =>\n targetExample.get(\"value\")\n mediaTypeExample = getMediaTypeExample(targetExample)\n if(mediaTypeExample === undefined) {\n mediaTypeExample = getMediaTypeExample(examplesForMediaType.values().next().value)\n }\n shouldOverrideSchemaExample = true\n } else if(activeMediaType.get(\"example\") !== undefined) {\n // use the example key's value\n mediaTypeExample = activeMediaType.get(\"example\")\n shouldOverrideSchemaExample = true\n }\n } else {\n sampleSchema = schema\n sampleGenConfig = {...sampleGenConfig, includeWriteOnly: true}\n const oldOASMediaTypeExample = response.getIn([\"examples\", activeContentType])\n if(oldOASMediaTypeExample) {\n mediaTypeExample = oldOASMediaTypeExample\n shouldOverrideSchemaExample = true\n }\n }\n\n const sampleResponse = getSampleSchema(\n sampleSchema,\n activeContentType,\n sampleGenConfig,\n shouldOverrideSchemaExample ? mediaTypeExample : undefined\n )\n\n const example = getExampleComponent( sampleResponse, HighlightCode )\n\n return (\n \n \n { code }\n \n \n\n
    \n \n
    \n\n { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => )}\n\n {isOAS3 && response.get(\"content\") ? (\n
    \n \n \n Media type\n \n \n {controlsAcceptHeader ? (\n \n Controls Accept header.\n \n ) : null}\n
    \n {Map.isMap(examplesForMediaType) && !examplesForMediaType.isEmpty() ? (\n
    \n \n Examples\n \n \n oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: [path, method],\n contextType: \"responses\",\n contextName: code\n })\n }\n showLabels={false}\n />\n
    \n ) : null}\n \n ) : null}\n\n { example || schema ? (\n \n ) : null }\n\n { isOAS3 && examplesForMediaType ? (\n \n ) : null}\n\n { headers ? (\n \n ) : null}\n\n \n {isOAS3 ? \n { links ?\n links.toSeq().entrySeq().map(([key, link]) => {\n return \n })\n : No links}\n : null}\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ResponseExtension = ({ xKey, xVal }) => {\n return
    { xKey }: { String(xVal) }
    \n}\nResponseExtension.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default ResponseExtension\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"xml-but-prettier\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/toLower\");","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport formatXml from \"xml-but-prettier\"\nimport toLower from \"lodash/toLower\"\nimport { extractFileNameFromContentDispositionHeader } from \"core/utils\"\nimport { getKnownSyntaxHighlighterLanguage } from \"core/utils/jsonParse\"\nimport win from \"core/window\"\n\nexport default class ResponseBody extends React.PureComponent {\n state = {\n parsedContent: null\n }\n\n static propTypes = {\n content: PropTypes.any.isRequired,\n contentType: PropTypes.string,\n getComponent: PropTypes.func.isRequired,\n headers: PropTypes.object,\n url: PropTypes.string\n }\n\n updateParsedContent = (prevContent) => {\n const { content } = this.props\n\n if(prevContent === content) {\n return\n }\n\n if(content && content instanceof Blob) {\n var reader = new FileReader()\n reader.onload = () => {\n this.setState({\n parsedContent: reader.result\n })\n }\n reader.readAsText(content)\n } else {\n this.setState({\n parsedContent: content.toString()\n })\n }\n }\n\n componentDidMount() {\n this.updateParsedContent(null)\n }\n\n componentDidUpdate(prevProps) {\n this.updateParsedContent(prevProps.content)\n }\n\n render() {\n let { content, contentType, url, headers={}, getComponent } = this.props\n const { parsedContent } = this.state\n const HighlightCode = getComponent(\"HighlightCode\", true)\n const downloadName = \"response_\" + new Date().getTime()\n let body, bodyEl\n url = url || \"\"\n\n if (\n (/^application\\/octet-stream/i.test(contentType) ||\n (headers[\"Content-Disposition\"] && /attachment/i.test(headers[\"Content-Disposition\"])) ||\n (headers[\"content-disposition\"] && /attachment/i.test(headers[\"content-disposition\"])) ||\n (headers[\"Content-Description\"] && /File Transfer/i.test(headers[\"Content-Description\"])) ||\n (headers[\"content-description\"] && /File Transfer/i.test(headers[\"content-description\"]))) &&\n (content.size > 0 || content.length > 0)\n ) {\n // Download\n\n if (\"Blob\" in window) {\n let type = contentType || \"text/html\"\n let blob = (content instanceof Blob) ? content : new Blob([content], {type: type})\n let href = window.URL.createObjectURL(blob)\n let fileName = url.substr(url.lastIndexOf(\"/\") + 1)\n let download = [type, fileName, href].join(\":\")\n\n // Use filename from response header,\n // First check if filename is quoted (e.g. contains space), if no, fallback to not quoted check\n let disposition = headers[\"content-disposition\"] || headers[\"Content-Disposition\"]\n if (typeof disposition !== \"undefined\") {\n let responseFilename = extractFileNameFromContentDispositionHeader(disposition)\n if (responseFilename !== null) {\n download = responseFilename\n }\n }\n\n if(win.navigator && win.navigator.msSaveOrOpenBlob) {\n bodyEl = \n } else {\n bodyEl = \n }\n } else {\n bodyEl =
    Download headers detected but your browser does not support downloading binary via XHR (Blob).
    \n }\n\n // Anything else (CORS)\n } else if (/json/i.test(contentType)) {\n // JSON\n let language = null\n let testValueForJson = getKnownSyntaxHighlighterLanguage(content)\n if (testValueForJson) {\n language = \"json\"\n }\n try {\n body = JSON.stringify(JSON.parse(content), null, \" \")\n } catch (error) {\n body = \"can't parse JSON. Raw result:\\n\\n\" + content\n }\n\n bodyEl = {body}\n\n // XML\n } else if (/xml/i.test(contentType)) {\n body = formatXml(content, {\n textNodesOnSameLine: true,\n indentor: \" \"\n })\n bodyEl = {body}\n\n // HTML or Plain Text\n } else if (toLower(contentType) === \"text/html\" || /text\\/plain/.test(contentType)) {\n bodyEl = {content}\n\n // CSV\n } else if (toLower(contentType) === \"text/csv\" || /text\\/csv/.test(contentType)) {\n bodyEl = {content}\n\n // Image\n } else if (/^image\\//i.test(contentType)) {\n if(contentType.includes(\"svg\")) {\n bodyEl =
    { content }
    \n } else {\n bodyEl = \n }\n\n // Audio\n } else if (/^audio\\//i.test(contentType)) {\n bodyEl =
    \n } else if (typeof content === \"string\") {\n bodyEl = {content}\n } else if ( content.size > 0 ) {\n // We don't know the contentType, but there was some content returned\n if(parsedContent) {\n // We were able to squeeze something out of content\n // in `updateParsedContent`, so let's display it\n bodyEl =
    \n

    \n Unrecognized response type; displaying content as text.\n

    \n {parsedContent}\n
    \n\n } else {\n // Give up\n bodyEl =

    \n Unrecognized response type; unable to display.\n

    \n }\n } else {\n // We don't know the contentType and there was no content returned\n bodyEl = null\n }\n\n return ( !bodyEl ? null :
    \n
    Response body
    \n { bodyEl }\n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Map, List } from \"immutable\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport createHtmlReadyId from \"core/utils/create-html-ready-id\"\n\nexport default class Parameters extends Component {\n\n constructor(props) {\n super(props)\n this.state = {\n callbackVisible: false,\n parametersVisible: true,\n }\n }\n\n static propTypes = {\n parameters: ImPropTypes.list.isRequired,\n operation: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n fn: PropTypes.object.isRequired,\n tryItOutEnabled: PropTypes.bool,\n allowTryItOut: PropTypes.bool,\n onTryoutClick: PropTypes.func,\n onResetClick: PropTypes.func,\n onCancelClick: PropTypes.func,\n onChangeKey: PropTypes.array,\n pathMethod: PropTypes.array.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n }\n\n\n static defaultProps = {\n onTryoutClick: Function.prototype,\n onCancelClick: Function.prototype,\n tryItOutEnabled: false,\n allowTryItOut: true,\n onChangeKey: [],\n specPath: [],\n }\n\n onChange = (param, value, isXml) => {\n let {\n specActions: { changeParamByIdentity },\n onChangeKey,\n } = this.props\n\n changeParamByIdentity(onChangeKey, param, value, isXml)\n }\n\n onChangeConsumesWrapper = (val) => {\n let {\n specActions: { changeConsumesValue },\n onChangeKey,\n } = this.props\n\n changeConsumesValue(onChangeKey, val)\n }\n\n toggleTab = (tab) => {\n if (tab === \"parameters\") {\n return this.setState({\n parametersVisible: true,\n callbackVisible: false,\n })\n } else if (tab === \"callbacks\") {\n return this.setState({\n callbackVisible: true,\n parametersVisible: false,\n })\n }\n }\n \n onChangeMediaType = ({ value, pathMethod }) => {\n let { specActions, oas3Selectors, oas3Actions } = this.props\n const userHasEditedBody = oas3Selectors.hasUserEditedBody(...pathMethod)\n const shouldRetainRequestBodyValue = oas3Selectors.shouldRetainRequestBodyValue(...pathMethod)\n oas3Actions.setRequestContentType({ value, pathMethod })\n oas3Actions.initRequestBodyValidateError({ pathMethod })\n if (!userHasEditedBody) {\n if(!shouldRetainRequestBodyValue) {\n oas3Actions.setRequestBodyValue({ value: undefined, pathMethod })\n }\n specActions.clearResponse(...pathMethod)\n specActions.clearRequest(...pathMethod)\n specActions.clearValidateParams(pathMethod)\n }\n }\n\n render() {\n\n let {\n onTryoutClick,\n onResetClick,\n parameters,\n allowTryItOut,\n tryItOutEnabled,\n specPath,\n fn,\n getComponent,\n getConfigs,\n specSelectors,\n specActions,\n pathMethod,\n oas3Actions,\n oas3Selectors,\n operation,\n } = this.props\n\n const ParameterRow = getComponent(\"parameterRow\")\n const TryItOutButton = getComponent(\"TryItOutButton\")\n const ContentType = getComponent(\"contentType\")\n const Callbacks = getComponent(\"Callbacks\", true)\n const RequestBody = getComponent(\"RequestBody\", true)\n\n const isExecute = tryItOutEnabled && allowTryItOut\n const isOAS3 = specSelectors.isOAS3()\n\n const regionId = createHtmlReadyId(`${pathMethod[1]}${pathMethod[0]}_requests`)\n const controlId = `${regionId}_select`\n\n const requestBody = operation.get(\"requestBody\")\n\n const groupedParametersArr = Object.values(parameters\n .reduce((acc, x) => {\n const key = x.get(\"in\")\n acc[key] ??= []\n acc[key].push(x)\n return acc\n }, {}))\n .reduce((acc, x) => acc.concat(x), [])\n\n const retainRequestBodyValueFlagForOperation = (f) => oas3Actions.setRetainRequestBodyValueFlag({ value: f, pathMethod })\n return (\n
    \n
    \n {isOAS3 ? (\n
    \n
    this.toggleTab(\"parameters\")}\n className={`tab-item ${this.state.parametersVisible && \"active\"}`}>\n

    Parameters

    \n
    \n {operation.get(\"callbacks\") ?\n (\n
    this.toggleTab(\"callbacks\")}\n className={`tab-item ${this.state.callbackVisible && \"active\"}`}>\n

    Callbacks

    \n
    \n ) : null\n }\n
    \n ) : (\n
    \n

    Parameters

    \n
    \n )}\n {allowTryItOut ? (\n onResetClick(pathMethod)}/>\n ) : null}\n
    \n {this.state.parametersVisible ?
    \n {!groupedParametersArr.length ?

    No parameters

    :\n
    \n \n \n \n \n \n \n \n \n {\n groupedParametersArr.map((parameter, i) => (\n \n ))\n }\n \n
    NameDescription
    \n
    \n }\n
    : null}\n\n {this.state.callbackVisible ?
    \n \n
    : null}\n {\n isOAS3 && requestBody && this.state.parametersVisible &&\n
    \n
    \n

    Request\n body

    \n \n
    \n
    \n {\n this.props.oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: this.props.pathMethod,\n contextType: \"requestBody\",\n contextName: \"requestBody\", // RBs are currently not stored per-mediaType\n })\n }\n }\n onChange={(value, path) => {\n if (path) {\n const lastValue = oas3Selectors.requestBodyValue(...pathMethod)\n const usableValue = Map.isMap(lastValue) ? lastValue : Map()\n return oas3Actions.setRequestBodyValue({\n pathMethod,\n value: usableValue.setIn(path, value),\n })\n }\n oas3Actions.setRequestBodyValue({ value, pathMethod })\n }}\n onChangeIncludeEmpty={(name, value) => {\n oas3Actions.setRequestBodyInclusion({\n pathMethod,\n value,\n name,\n })\n }}\n contentType={oas3Selectors.requestContentType(...pathMethod)} />\n
    \n
    \n }\n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport const ParameterExt = ({ xKey, xVal }) => {\n return
    { xKey }: { String(xVal) }
    \n}\nParameterExt.propTypes = {\n xKey: PropTypes.string,\n xVal: PropTypes.any\n}\n\nexport default ParameterExt\n","import React, { Component } from \"react\"\nimport cx from \"classnames\"\nimport PropTypes from \"prop-types\"\n\n\nconst noop = () => { }\n\nconst ParameterIncludeEmptyPropTypes = {\n isIncluded: PropTypes.bool.isRequired,\n isDisabled: PropTypes.bool.isRequired,\n isIncludedOptions: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n}\n\nconst ParameterIncludeEmptyDefaultProps = {\n onChange: noop,\n isIncludedOptions: {},\n}\nexport default class ParameterIncludeEmpty extends Component {\n static propTypes = ParameterIncludeEmptyPropTypes\n static defaultProps = ParameterIncludeEmptyDefaultProps\n\n componentDidMount() {\n const { isIncludedOptions, onChange } = this.props\n const { shouldDispatchInit, defaultValue } = isIncludedOptions\n if (shouldDispatchInit) {\n onChange(defaultValue)\n }\n }\n\n onCheckboxChange = e => {\n const { onChange } = this.props\n onChange(e.target.checked)\n }\n\n render() {\n let { isIncluded, isDisabled } = this.props\n\n return (\n
    \n \n
    \n )\n }\n}\n","import React, { Component } from \"react\"\nimport { Map, List, fromJS } from \"immutable\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport win from \"core/window\"\nimport { getExtensions, getCommonExtensions, numberToString, stringify, isEmptyValue } from \"core/utils\"\nimport getParameterSchema from \"core/utils/get-parameter-schema.js\"\n\nexport default class ParameterRow extends Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n param: PropTypes.object.isRequired,\n rawParam: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n fn: PropTypes.object.isRequired,\n isExecute: PropTypes.bool,\n onChangeConsumes: PropTypes.func.isRequired,\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n pathMethod: PropTypes.array.isRequired,\n getConfigs: PropTypes.func.isRequired,\n specPath: ImPropTypes.list.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n }\n\n constructor(props, context) {\n super(props, context)\n\n this.setDefaultValue()\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n let { specSelectors, pathMethod, rawParam } = props\n let isOAS3 = specSelectors.isOAS3()\n\n let parameterWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || new Map()\n // fallback, if the meta lookup fails\n parameterWithMeta = parameterWithMeta.isEmpty() ? rawParam : parameterWithMeta\n\n let enumValue\n\n if(isOAS3) {\n let { schema } = getParameterSchema(parameterWithMeta, { isOAS3 })\n enumValue = schema ? schema.get(\"enum\") : undefined\n } else {\n enumValue = parameterWithMeta ? parameterWithMeta.get(\"enum\") : undefined\n }\n let paramValue = parameterWithMeta ? parameterWithMeta.get(\"value\") : undefined\n\n let value\n\n if ( paramValue !== undefined ) {\n value = paramValue\n } else if ( rawParam.get(\"required\") && enumValue && enumValue.size ) {\n value = enumValue.first()\n }\n\n if ( value !== undefined && value !== paramValue ) {\n this.onChangeWrapper(numberToString(value))\n }\n // todo: could check if schema here; if not, do not call. impact?\n this.setDefaultValue()\n }\n\n onChangeWrapper = (value, isXml = false) => {\n let { onChange, rawParam } = this.props\n let valueForUpstream\n\n // Coerce empty strings and empty Immutable objects to null\n if(value === \"\" || (value && value.size === 0)) {\n valueForUpstream = null\n } else {\n valueForUpstream = value\n }\n\n return onChange(rawParam, valueForUpstream, isXml)\n }\n\n _onExampleSelect = (key, /* { isSyntheticChange } = {} */) => {\n this.props.oas3Actions.setActiveExamplesMember({\n name: key,\n pathMethod: this.props.pathMethod,\n contextType: \"parameters\",\n contextName: this.getParamKey()\n })\n }\n\n onChangeIncludeEmpty = (newValue) => {\n let { specActions, param, pathMethod } = this.props\n const paramName = param.get(\"name\")\n const paramIn = param.get(\"in\")\n return specActions.updateEmptyParamInclusion(pathMethod, paramName, paramIn, newValue)\n }\n\n setDefaultValue = () => {\n let { specSelectors, pathMethod, rawParam, oas3Selectors, fn } = this.props\n\n const paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n let { schema } = getParameterSchema(paramWithMeta, { isOAS3: specSelectors.isOAS3() })\n const parameterMediaType = paramWithMeta\n .get(\"content\", Map())\n .keySeq()\n .first()\n\n // getSampleSchema could return null\n const generatedSampleValue = schema ? fn.getSampleSchema(schema.toJS(), parameterMediaType, {\n\n includeWriteOnly: true\n }) : null\n\n if (!paramWithMeta || paramWithMeta.get(\"value\") !== undefined) {\n return\n }\n\n if( paramWithMeta.get(\"in\") !== \"body\" ) {\n let initialValue\n\n //// Find an initial value\n\n if (specSelectors.isSwagger2()) {\n initialValue =\n paramWithMeta.get(\"x-example\") !== undefined\n ? paramWithMeta.get(\"x-example\")\n : paramWithMeta.getIn([\"schema\", \"example\"]) !== undefined\n ? paramWithMeta.getIn([\"schema\", \"example\"])\n : (schema && schema.getIn([\"default\"]))\n } else if (specSelectors.isOAS3()) {\n schema = this.composeJsonSchema(schema)\n\n const currentExampleKey = oas3Selectors.activeExamplesMember(...pathMethod, \"parameters\", this.getParamKey())\n initialValue =\n paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"]) !== undefined\n ? paramWithMeta.getIn([\"examples\", currentExampleKey, \"value\"])\n : paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"]) !== undefined\n ? paramWithMeta.getIn([\"content\", parameterMediaType, \"example\"])\n : paramWithMeta.get(\"example\") !== undefined\n ? paramWithMeta.get(\"example\")\n : (schema && schema.get(\"example\")) !== undefined\n ? (schema && schema.get(\"example\"))\n : (schema && schema.get(\"default\")) !== undefined\n ? (schema && schema.get(\"default\"))\n : paramWithMeta.get(\"default\") // ensures support for `parameterMacro`\n }\n\n //// Process the initial value\n\n if(initialValue !== undefined && !List.isList(initialValue)) {\n // Stringify if it isn't a List\n initialValue = stringify(initialValue)\n }\n\n //// Dispatch the initial value\n\n if(initialValue !== undefined) {\n this.onChangeWrapper(initialValue)\n } else if(\n schema && schema.get(\"type\") === \"object\"\n && generatedSampleValue\n && !paramWithMeta.get(\"examples\")\n ) {\n // Object parameters get special treatment.. if the user doesn't set any\n // default or example values, we'll provide initial values generated from\n // the schema.\n // However, if `examples` exist for the parameter, we won't do anything,\n // so that the appropriate `examples` logic can take over.\n this.onChangeWrapper(\n List.isList(generatedSampleValue) ? (\n generatedSampleValue\n ) : (\n stringify(generatedSampleValue)\n )\n )\n }\n }\n }\n\n getParamKey() {\n const { param } = this.props\n\n if(!param) return null\n\n return `${param.get(\"name\")}-${param.get(\"in\")}`\n }\n\n composeJsonSchema(schema) {\n const { fn } = this.props\n const oneOf = schema.get(\"oneOf\")?.get(0)?.toJS()\n const anyOf = schema.get(\"anyOf\")?.get(0)?.toJS()\n return fromJS(fn.mergeJsonSchema(schema.toJS(), oneOf ?? anyOf ?? {}))\n }\n\n render() {\n let {param, rawParam, getComponent, getConfigs, isExecute, fn, onChangeConsumes, specSelectors, pathMethod, specPath, oas3Selectors} = this.props\n\n let isOAS3 = specSelectors.isOAS3()\n\n const { showExtensions, showCommonExtensions } = getConfigs()\n\n if(!param) {\n param = rawParam\n }\n\n if(!rawParam) return null\n\n // const onChangeWrapper = (value) => onChange(param, value)\n const JsonSchemaForm = getComponent(\"JsonSchemaForm\")\n const ParamBody = getComponent(\"ParamBody\")\n let inType = param.get(\"in\")\n let bodyParam = inType !== \"body\" ? null\n : \n\n const ModelExample = getComponent(\"modelExample\")\n const Markdown = getComponent(\"Markdown\", true)\n const ParameterExt = getComponent(\"ParameterExt\")\n const ParameterIncludeEmpty = getComponent(\"ParameterIncludeEmpty\")\n const ExamplesSelectValueRetainer = getComponent(\"ExamplesSelectValueRetainer\")\n const Example = getComponent(\"Example\")\n\n let { schema } = getParameterSchema(param, { isOAS3 })\n let paramWithMeta = specSelectors.parameterWithMetaByIdentity(pathMethod, rawParam) || Map()\n\n if (isOAS3) {\n schema = this.composeJsonSchema(schema)\n }\n \n let format = schema ? schema.get(\"format\") : null\n let type = schema ? schema.get(\"type\") : null\n let itemType = schema ? schema.getIn([\"items\", \"type\"]) : null\n let isFormData = inType === \"formData\"\n let isFormDataSupported = \"FormData\" in win\n let required = param.get(\"required\")\n\n let value = paramWithMeta ? paramWithMeta.get(\"value\") : \"\"\n let commonExt = showCommonExtensions ? getCommonExtensions(schema) : null\n let extensions = showExtensions ? getExtensions(param) : null\n\n let paramItems // undefined\n let paramEnum // undefined\n let paramDefaultValue // undefined\n let paramExample // undefined\n let isDisplayParamEnum = false\n\n if ( param !== undefined && schema ) {\n paramItems = schema.get(\"items\")\n }\n\n if (paramItems !== undefined) {\n paramEnum = paramItems.get(\"enum\")\n paramDefaultValue = paramItems.get(\"default\")\n } else if (schema) {\n paramEnum = schema.get(\"enum\")\n }\n\n if ( paramEnum && paramEnum.size && paramEnum.size > 0) {\n isDisplayParamEnum = true\n }\n\n // Default and Example Value for readonly doc\n if ( param !== undefined ) {\n if (schema) {\n paramDefaultValue = schema.get(\"default\")\n }\n if (paramDefaultValue === undefined) {\n paramDefaultValue = param.get(\"default\")\n }\n paramExample = param.get(\"example\")\n if (paramExample === undefined) {\n paramExample = param.get(\"x-example\")\n }\n }\n\n return (\n \n \n
    \n { param.get(\"name\") }\n { !required ? null :  * }\n
    \n
    \n { type }\n { itemType && `[${itemType}]` }\n { format && (${format})}\n
    \n
    \n { isOAS3 && param.get(\"deprecated\") ? \"deprecated\": null }\n
    \n
    ({ param.get(\"in\") })
    \n \n\n \n { param.get(\"description\") ? : null }\n\n { (bodyParam || !isExecute) && isDisplayParamEnum ?\n Available values
    : \" + paramEnum.map(function(item) {\n return item\n }).toArray().map(String).join(\", \")}/>\n : null\n }\n\n { (bodyParam || !isExecute) && paramDefaultValue !== undefined ?\n Default value
    : \" + paramDefaultValue}/>\n : null\n }\n\n { (bodyParam || !isExecute) && paramExample !== undefined ?\n Example : \" + paramExample}/>\n : null\n }\n\n {(isFormData && !isFormDataSupported) &&
    Error: your browser does not support FormData
    }\n\n {\n isOAS3 && param.get(\"examples\") ? (\n
    \n \n
    \n ) : null\n }\n\n { bodyParam ? null\n : \n }\n\n\n {\n bodyParam && schema ? \n : null\n }\n\n {\n !bodyParam && isExecute && param.get(\"allowEmptyValue\") ?\n \n : null\n }\n\n {\n isOAS3 && param.get(\"examples\") ? (\n \n ) : null\n }\n\n { !showCommonExtensions || !commonExt.size ? null : commonExt.entrySeq().map(([key, v]) => )}\n { !showExtensions || !extensions.size ? null : extensions.entrySeq().map(([key, v]) => )}\n\n \n\n \n )\n\n }\n\n}\n","import React, { Component } from \"react\"\nimport PropTypes from \"prop-types\"\n\nexport default class Execute extends Component {\n\n static propTypes = {\n specSelectors: PropTypes.object.isRequired,\n specActions: PropTypes.object.isRequired,\n operation: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n method: PropTypes.string.isRequired,\n oas3Selectors: PropTypes.object.isRequired,\n oas3Actions: PropTypes.object.isRequired,\n onExecute: PropTypes.func,\n disabled: PropTypes.bool\n }\n\n handleValidateParameters = () => {\n let { specSelectors, specActions, path, method } = this.props\n specActions.validateParams([path, method])\n return specSelectors.validateBeforeExecute([path, method])\n }\n\n handleValidateRequestBody = () => {\n let { path, method, specSelectors, oas3Selectors, oas3Actions } = this.props\n let validationErrors = {\n missingBodyValue: false,\n missingRequiredKeys: []\n }\n // context: reset errors, then (re)validate\n oas3Actions.clearRequestBodyValidateError({ path, method })\n let oas3RequiredRequestBodyContentType = specSelectors.getOAS3RequiredRequestBodyContentType([path, method])\n let oas3RequestBodyValue = oas3Selectors.requestBodyValue(path, method)\n let oas3ValidateBeforeExecuteSuccess = oas3Selectors.validateBeforeExecute([path, method])\n let oas3RequestContentType = oas3Selectors.requestContentType(path, method)\n\n if (!oas3ValidateBeforeExecuteSuccess) {\n validationErrors.missingBodyValue = true\n oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n return false\n }\n if (!oas3RequiredRequestBodyContentType) {\n return true\n }\n let missingRequiredKeys = oas3Selectors.validateShallowRequired({\n oas3RequiredRequestBodyContentType,\n oas3RequestContentType,\n oas3RequestBodyValue\n })\n if (!missingRequiredKeys || missingRequiredKeys.length < 1) {\n return true\n }\n missingRequiredKeys.forEach((missingKey) => {\n validationErrors.missingRequiredKeys.push(missingKey)\n })\n oas3Actions.setRequestBodyValidateError({ path, method, validationErrors })\n return false\n }\n\n handleValidationResultPass = () => {\n let { specActions, operation, path, method } = this.props\n if (this.props.onExecute) {\n // loading spinner\n this.props.onExecute()\n }\n specActions.execute({ operation, path, method })\n }\n\n handleValidationResultFail = () => {\n let { specActions, path, method } = this.props\n // deferred by 40ms, to give element class change time to settle.\n specActions.clearValidateParams([path, method])\n setTimeout(() => {\n specActions.validateParams([path, method])\n }, 40)\n }\n\n handleValidationResult = (isPass) => {\n if (isPass) {\n this.handleValidationResultPass()\n } else {\n this.handleValidationResultFail()\n }\n }\n\n onClick = () => {\n let paramsResult = this.handleValidateParameters()\n let requestBodyResult = this.handleValidateRequestBody()\n let isPass = paramsResult && requestBodyResult\n this.handleValidationResult(isPass)\n }\n\n onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)\n\n render(){\n const { disabled } = this.props\n return (\n \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Im from \"immutable\"\n\nconst propClass = \"header-example\"\n\nexport default class Headers extends React.Component {\n static propTypes = {\n headers: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired\n }\n\n render() {\n let { headers, getComponent } = this.props\n\n const Property = getComponent(\"Property\")\n const Markdown = getComponent(\"Markdown\", true)\n\n if ( !headers || !headers.size )\n return null\n\n return (\n
    \n

    Headers:

    \n \n \n \n \n \n \n \n \n \n {\n headers.entrySeq().map( ([ key, header ]) => {\n if(!Im.Map.isMap(header)) {\n return null\n }\n\n const description = header.get(\"description\")\n const type = header.getIn([\"schema\"]) ? header.getIn([\"schema\", \"type\"]) : header.getIn([\"type\"])\n const schemaExample = header.getIn([\"schema\", \"example\"])\n\n return (\n \n \n \n )\n }).toArray()\n }\n \n
    NameDescriptionType
    { key }{\n !description ? null : \n }{ type } { schemaExample ? : null }
    \n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { List } from \"immutable\"\n\nexport default class Errors extends React.Component {\n\n static propTypes = {\n editorActions: PropTypes.object,\n errSelectors: PropTypes.object.isRequired,\n layoutSelectors: PropTypes.object.isRequired,\n layoutActions: PropTypes.object.isRequired,\n getComponent: PropTypes.func.isRequired,\n }\n\n render() {\n let { editorActions, errSelectors, layoutSelectors, layoutActions, getComponent } = this.props\n\n const Collapse = getComponent(\"Collapse\")\n\n if(editorActions && editorActions.jumpToLine) {\n var jumpToLine = editorActions.jumpToLine\n }\n\n let errors = errSelectors.allErrors()\n\n // all thrown errors, plus error-level everything else\n let allErrorsToDisplay = errors.filter(err => err.get(\"type\") === \"thrown\" ? true :err.get(\"level\") === \"error\")\n\n if(!allErrorsToDisplay || allErrorsToDisplay.count() < 1) {\n return null\n }\n\n let isVisible = layoutSelectors.isShown([\"errorPane\"], true)\n let toggleVisibility = () => layoutActions.show([\"errorPane\"], !isVisible)\n\n let sortedJSErrors = allErrorsToDisplay.sortBy(err => err.get(\"line\"))\n\n return (\n
    \n        
    \n

    Errors

    \n \n
    \n \n
    \n { sortedJSErrors.map((err, i) => {\n let type = err.get(\"type\")\n if(type === \"thrown\" || type === \"auth\") {\n return \n }\n if(type === \"spec\") {\n return \n }\n }) }\n
    \n
    \n
    \n )\n }\n}\n\nconst ThrownErrorItem = ( { error, jumpToLine } ) => {\n if(!error) {\n return null\n }\n let errorLine = error.get(\"line\")\n\n return (\n
    \n { !error ? null :\n
    \n

    { (error.get(\"source\") && error.get(\"level\")) ?\n toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") : \"\" }\n { error.get(\"path\") ? at {error.get(\"path\")}: null }

    \n \n { error.get(\"message\") }\n \n
    \n { errorLine && jumpToLine ? Jump to line { errorLine } : null }\n
    \n
    \n }\n
    \n )\n }\n\nconst SpecErrorItem = ( { error, jumpToLine = null } ) => {\n let locationMessage = null\n\n if(error.get(\"path\")) {\n if(List.isList(error.get(\"path\"))) {\n locationMessage = at { error.get(\"path\").join(\".\") }\n } else {\n locationMessage = at { error.get(\"path\") }\n }\n } else if(error.get(\"line\") && !jumpToLine) {\n locationMessage = on line { error.get(\"line\") }\n }\n\n return (\n
    \n { !error ? null :\n
    \n

    { toTitleCase(error.get(\"source\")) + \" \" + error.get(\"level\") } { locationMessage }

    \n { error.get(\"message\") }\n
    \n { jumpToLine ? (\n Jump to line { error.get(\"line\") }\n ) : null }\n
    \n
    \n }\n
    \n )\n }\n\nfunction toTitleCase(str) {\n return (str || \"\")\n .split(\" \")\n .map(substr => substr[0].toUpperCase() + substr.slice(1))\n .join(\" \")\n}\n\nThrownErrorItem.propTypes = {\n error: PropTypes.object.isRequired,\n jumpToLine: PropTypes.func\n}\n\nSpecErrorItem.propTypes = {\n error: PropTypes.object.isRequired,\n jumpToLine: PropTypes.func\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport ImPropTypes from \"react-immutable-proptypes\"\nimport { fromJS } from \"immutable\"\n\nconst noop = ()=>{}\n\nexport default class ContentType extends React.Component {\n\n static propTypes = {\n ariaControls: PropTypes.string,\n contentTypes: PropTypes.oneOfType([ImPropTypes.list, ImPropTypes.set, ImPropTypes.seq]),\n controlId: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n className: PropTypes.string,\n ariaLabel: PropTypes.string\n }\n\n static defaultProps = {\n onChange: noop,\n value: null,\n contentTypes: fromJS([\"application/json\"]),\n }\n\n componentDidMount() {\n // Needed to populate the form, initially\n if(this.props.contentTypes) {\n this.props.onChange(this.props.contentTypes.first())\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if(!nextProps.contentTypes || !nextProps.contentTypes.size) {\n return\n }\n\n if(!nextProps.contentTypes.includes(nextProps.value)) {\n nextProps.onChange(nextProps.contentTypes.first())\n }\n }\n\n onChangeWrapper = e => this.props.onChange(e.target.value)\n\n render() {\n let { ariaControls, ariaLabel, className, contentTypes, controlId, value } = this.props\n\n if ( !contentTypes || !contentTypes.size )\n return null\n\n return (\n
    \n \n
    \n )\n }\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nfunction xclass(...args) {\n return args.filter(a => !!a).join(\" \").trim()\n}\n\nexport class Container extends React.Component {\n render() {\n let { fullscreen, full, ...rest } = this.props\n // Normal element\n\n if(fullscreen)\n return
    \n\n let containerClass = \"swagger-container\" + (full ? \"-full\" : \"\")\n return (\n
    \n )\n }\n}\n\nContainer.propTypes = {\n fullscreen: PropTypes.bool,\n full: PropTypes.bool,\n className: PropTypes.string\n}\n\nconst DEVICES = {\n \"mobile\": \"\",\n \"tablet\": \"-tablet\",\n \"desktop\": \"-desktop\",\n \"large\": \"-hd\"\n}\n\nexport class Col extends React.Component {\n\n render() {\n const {\n hide,\n keepContents,\n /* we don't want these in the `rest` object that passes to the final component,\n since React now complains. So we extract them */\n /* eslint-disable no-unused-vars */\n mobile,\n tablet,\n desktop,\n large,\n /* eslint-enable no-unused-vars */\n ...rest\n } = this.props\n\n if(hide && !keepContents)\n return \n\n let classesAr = []\n\n for (let device in DEVICES) {\n if (!Object.prototype.hasOwnProperty.call(DEVICES, device)) {\n continue\n }\n let deviceClass = DEVICES[device]\n if(device in this.props) {\n let val = this.props[device]\n\n if(val < 1) {\n classesAr.push(\"none\" + deviceClass)\n continue\n }\n\n classesAr.push(\"block\" + deviceClass)\n classesAr.push(\"col-\" + val + deviceClass)\n }\n }\n\n if (hide) {\n classesAr.push(\"hidden\")\n }\n\n let classes = xclass(rest.className, ...classesAr)\n\n return (\n
    \n )\n }\n\n}\n\nCol.propTypes = {\n hide: PropTypes.bool,\n keepContents: PropTypes.bool,\n mobile: PropTypes.number,\n tablet: PropTypes.number,\n desktop: PropTypes.number,\n large: PropTypes.number,\n className: PropTypes.string\n}\n\nexport class Row extends React.Component {\n\n render() {\n return
    \n }\n\n}\n\nRow.propTypes = {\n className: PropTypes.string\n}\n\nexport class Button extends React.Component {\n\n static propTypes = {\n className: PropTypes.string\n }\n\n static defaultProps = {\n className: \"\"\n }\n\n render() {\n return
    + +
+ + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/views/apps/apis/mainApiDetail.html b/src/main/resources/templates/views/apps/apis/mainApiDetail.html new file mode 100644 index 0000000..5619f60 --- /dev/null +++ b/src/main/resources/templates/views/apps/apis/mainApiDetail.html @@ -0,0 +1,204 @@ + + + + +
+ +
+
+

+

+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + +
API 명 (URI)
Method[[${apiSpecInfo.apiMethod}]]
Content-Type[[${apiSpecInfo.apiContentType}]]
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +
API 명 (URI)
Method[[${apiSpecInfo.apiMethod}]]
Content-Type[[${apiSpecInfo.apiContentType}]]
+
+
+
+ +
+

요청 메시지

+
+ +
+
+
+
+
+

요청 메시지 예제

+
    +
  • +

    + Header +

    +
    +

    + Content-Type: application/json +

    +
    +
  • +
+
+
+
    +
  • +

    + Body +

    +
    + +
    +
  • +
+
+ +
+ +
+

응답 메시지

+
+
+
+
+

응답 메시지 예제

+
    +
  • +

    + Body +

    +
    + +
    +
  • +
+
+ + +
+
+
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/apis/mainApiKeyNew.html b/src/main/resources/templates/views/apps/apis/mainApiKeyNew.html new file mode 100644 index 0000000..91eb16f --- /dev/null +++ b/src/main/resources/templates/views/apps/apis/mainApiKeyNew.html @@ -0,0 +1,141 @@ + + + + +
+ +
+
+

API키 신청

+
+
+
+
+

+ API키 이름 +

+
+
+ +
+
+
+
+
    +
  • +

    인증키가 없을 경우, 승인 시, 인증키는 신규로 발급 됩니다.

    +
  • +
+
+
+

API

+ +
+
+ + + + + + + + + + + + + + + +
+
+ + + + +
+
서비스API
+
+
+ 올리기 + 내리기 +
+
+

+ 넣기 +

+

+ 빼기 +

+
+
+ + + + + + + + + + + + + + + +
+
+ + + + +
+
서비스API
+
+
+ +

신청사유

+
+ +
+
+
+ 취소 +
+ 확인 +
+
+
+
+ +
+
+ +
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/apis/mainApiKeyProd.html b/src/main/resources/templates/views/apps/apis/mainApiKeyProd.html new file mode 100644 index 0000000..d8b4f5f --- /dev/null +++ b/src/main/resources/templates/views/apps/apis/mainApiKeyProd.html @@ -0,0 +1,162 @@ + + + +
+
+
+

인증키 운영 전환 신청

+
+
+
+
+

+ API키 이름 +

+
+
+ +
+
+
+
+
    +
  • +

    인증키가 없을 경우, 승인 시, 인증키는 신규로 발급 됩니다.

    +
  • +
+
+
+
+
+

+ API키 선택 +

+
+
+
+ +
API키 선택
+
    +
+
+
+
+
+
+

API

+ +
+
+ + + + + + + + + + + + + + + +
+
+ + + + +
+
서비스API
+
+
+ 올리기 + 내리기 +
+
+

+ 넣기 +

+

+ 빼기 +

+
+

운영 이관 신청 API

+
+ + + + + + + + + + + + + + + + +
+
+ + + + +
+
서비스API
+
+
+ + +

신청사유

+
+ +
+ +
+
+ +
+ +
+
+
+ + +
+
+ +
+ +
+ + + + + + + diff --git a/src/main/resources/templates/views/apps/apis/mainApiList.html b/src/main/resources/templates/views/apps/apis/mainApiList.html new file mode 100644 index 0000000..2e22997 --- /dev/null +++ b/src/main/resources/templates/views/apps/apis/mainApiList.html @@ -0,0 +1,153 @@ + + + + + + +
+ +
+
+ Kbank API 서비스 +
+

Kbank API 서비스

+ + API를 활용해 당신의 비즈니스 모델을
+ 혁신하여 창의적이고 차별화된 서비스를
+ 제작하세요. +
+
+
+
+ Kbank API 서비스 +
+

Kbank API 서비스

+ + Kbank가 제공하는 다양한 API를 소개합니다.
+ API를 활용해 당신의 비즈니스 모델을 혁신하여 창의적이고
+ 차별화된 서비스를 제작하세요. +
+
+
+
+
+
+
+
+ + + +
+
+
+ +
+
+
+
+
+

+

+
+
+ +
+
+
+
+
+
+
[[${selectedApiCount}]]건 검색
+
+
+
+
+

+

+
+
+ +
+
+
+
+
+
+
+
+
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/apis/mainTestbed.html b/src/main/resources/templates/views/apps/apis/mainTestbed.html new file mode 100644 index 0000000..bb4b873 --- /dev/null +++ b/src/main/resources/templates/views/apps/apis/mainTestbed.html @@ -0,0 +1,190 @@ + + + + +
+ + + +
+
+

API 테스트 베드

+
+
+
+

API 테스트 베드

+

Kbank API Portal은 Swagger를 이용해 API를 테스트 할 수 있습니다.

+
+ +
+
API 선택
+
    +
  • API
  • +
+
+ +
+

인증키가 없는 경우 입력란에 "Kbank"라고 입력하시면 API요청 테스트를 할 수 있습니다.

+
+ +
+ + + +
+
+
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/apis/static/tokenApiSpec.html b/src/main/resources/templates/views/apps/apis/static/tokenApiSpec.html new file mode 100644 index 0000000..d007700 --- /dev/null +++ b/src/main/resources/templates/views/apps/apis/static/tokenApiSpec.html @@ -0,0 +1,382 @@ + + + + +
+ +
+
+

케이뱅크 OAuth 2.0 토큰 발급

+

OAuth 2.0 토큰 발급을 위한 API 문서입니다.

+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + +
API 명 (URI)/api/v1/oauth/token
MethodPOST
Content-Typeapplication/x-www-form-urlencoded
+
+
+
+ +
+
+

요청 메시지

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No구분이름설명필수여부항목유형데이터유형길이
1Bodygrant_type권한 부여 방식 (client_credentials)YFieldString50
2Bodyclient_id케이뱅크에서 발급한 client idYFieldString256
3Bodyclient_secret케이뱅크에서 발급한 client secretYFieldString512
4Bodyscope해당 업무의 Access Token 권한 범위YFieldString100
+
+ +
+

요청 메시지 예제

+
    +
  • +

    + Header +

    +
    +

    Content-Type: application/x-www-form-urlencoded

    +
    +
  • +
+
+ +
+
    +
  • +
    +
      +
    • +

      + Body +

      +
      + +
      +
    • +
    +
    +
  • +
+
+ +
+ +
+

응답 메시지

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No구분이름설명필수여부항목유형데이터유형길이
1Bodyaccess_tokenJWT 형식의 액세스 토큰YFieldString600
2Bodytoken_type토큰 타입YFieldString6
3Bodyexpires_in토큰 만료 시간(초)YFieldInteger11
4Bodyscope부여된 scopeYFieldString100
5BodyjtiJWT IDYFieldString256
+
+ +
+

응답 메시지 예제

+
    +
  • +

    + Body +

    +
    + +
    +
  • +
+
+ + +
+
+
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/apiservice/apiServiceDetail.html b/src/main/resources/templates/views/apps/apiservice/apiServiceDetail.html new file mode 100644 index 0000000..3302f44 --- /dev/null +++ b/src/main/resources/templates/views/apps/apiservice/apiServiceDetail.html @@ -0,0 +1,78 @@ + + + + + API 서비스 상세 + + +
+ +
+
+

API 제목

+
+
+ +
+ + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+

API 목록

+
+
+
+
+
+
+

+ + API 설명 +

+

+ API 명 +

+
+ GET +
+
+ URL + /api/example +
+
+
+
+
+
+
+
+ + +
+ + + + diff --git a/src/main/resources/templates/views/apps/apiservice/apiServiceList.html b/src/main/resources/templates/views/apps/apiservice/apiServiceList.html new file mode 100644 index 0000000..dd33d4f --- /dev/null +++ b/src/main/resources/templates/views/apps/apiservice/apiServiceList.html @@ -0,0 +1,72 @@ + + + + + +
+
+

Kbank API 서비스

+

Kbank가 제공하는 다양한 API를 소개합니다.
+ API를 활용해 당신의 비즈니스 모델을 혁신하여 창의적이고 차별화된 서비스를 제작하세요.

+ +
+
+
+
+ + +
+
+
+
+ +
+ 인기검색어 + #1원이체 + #카드 + #대출 + #간편결제 + #거래내역 + #이체업무 +
+ + + +
+
+
+
+
+

+
+ API Icon + 자세히 보기 +
+
+
+
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/community/mainFaqList.html b/src/main/resources/templates/views/apps/community/mainFaqList.html new file mode 100644 index 0000000..d8facf1 --- /dev/null +++ b/src/main/resources/templates/views/apps/community/mainFaqList.html @@ -0,0 +1,123 @@ + + + + + + +
+
+
+

FAQ

+
+
+ +
+ +
+
+ + 총 건 + +
+ + +
+
+
    +
  • +
    + +
    +
    +
    +
    +
  • +
  • +
    +
    + +

    조회된 검색 결과가 없습니다.

    +
    +
    + +

    조회된 검색 결과가 없습니다.

    +
    +
    +
  • +
+
+
+ + + + +
+
+
+ + + + + + + + + + diff --git a/src/main/resources/templates/views/apps/community/mainInquiryDetail.html b/src/main/resources/templates/views/apps/community/mainInquiryDetail.html new file mode 100644 index 0000000..dc9cb90 --- /dev/null +++ b/src/main/resources/templates/views/apps/community/mainInquiryDetail.html @@ -0,0 +1,110 @@ + + + + + +
+ +
+
+

Q&A

+
+
+ +
+
+
+ +
+
+ +
+
+

+ 등록일 : [[${#temporals.format(inquiry.createdDate, 'yyyy-MM-dd HH:mm')}]] + 작성자 : [[${inquiry.maskedInquirerName}]] +

+
+
+ +
+ +
+
+ +
+
+ + [[${inquiry.responderName}]] (등록일 : [[${#temporals.format(inquiry.responseDate, 'yyyy-MM-dd HH:mm')}]]) + +
+ +
+
+ +
+
+
+
+ +
+ 수정 + 삭제 +
+
+
+ 목록 +
+
+ +
+ +
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/community/mainInquiryForm.html b/src/main/resources/templates/views/apps/community/mainInquiryForm.html new file mode 100644 index 0000000..eceb301 --- /dev/null +++ b/src/main/resources/templates/views/apps/community/mainInquiryForm.html @@ -0,0 +1,156 @@ + + + + + +
+ +
+
+

+
+
+
+ +
+
+

+ 제목 +

+
+
+ +
+
+
+ +
+

+ 내용 +

+
+
+ + +
+
+
+ +
+

첨부파일

+
+
+ +
+ + +
+
+
+ + +
+
+
+ +
+

첨부파일은 10MB 이내로 등록해 주세요.

+

문서파일과 이미지 파일만 등록 가능합니다. (pdf, doc, docx, xls, xlsx, ppt, pptx, hwp, gif, jpg, + png)

+
+
+
+ +
+ 취소 +
+ 확인 +
+
+
+
+
+
+ + + + + + + diff --git a/src/main/resources/templates/views/apps/community/mainInquiryList.html b/src/main/resources/templates/views/apps/community/mainInquiryList.html new file mode 100644 index 0000000..6dd6850 --- /dev/null +++ b/src/main/resources/templates/views/apps/community/mainInquiryList.html @@ -0,0 +1,134 @@ + + + + + +
+
+
+

Q&A

+
+
+ + +
+ +
+
+ + 총 건 + +
+ + +
+
    +
  • +
    + No + 제목 + 작성자 + 처리상태 + 등록일 +
    +
  • +
  • +
    + + + + [[${inquiry.inquirySubject}]] + + + + + + + + +
    +
  • +
  • +
    +
    + +

    조회된 검색 결과가 없습니다.

    +
    +
    + +

    조회된 검색 결과가 없습니다.

    +
    +
    +
  • +
+
+ +
+ + + + +
+
+
+
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/community/mainNoticeDetail.html b/src/main/resources/templates/views/apps/community/mainNoticeDetail.html new file mode 100644 index 0000000..e0eaa29 --- /dev/null +++ b/src/main/resources/templates/views/apps/community/mainNoticeDetail.html @@ -0,0 +1,70 @@ + + + + + +
+
+
+

공지사항

+
+
+ + +
+ 목록 +
+
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/community/mainNoticeList.html b/src/main/resources/templates/views/apps/community/mainNoticeList.html new file mode 100644 index 0000000..ee49e5d --- /dev/null +++ b/src/main/resources/templates/views/apps/community/mainNoticeList.html @@ -0,0 +1,111 @@ + + + + +
+
+
+

공지사항

+
+
+ + +
+ +
+
+ + 총 건 + +
+ + +
+
    +
  • +
    + NO + 제목 + 등록일 +
    +
  • +
  • +
    + + + + + + + 첨부파일 + + + + + +
    +
  • +
  • +
    +
    +
    + +

    조회된 데이터가 없습니다.

    +
    +
    + +

    조회된 데이터가 없습니다.

    +
    +
    +
    +
  • +
+
+ + + + +
+
+
+ + + + + + diff --git a/src/main/resources/templates/views/apps/community/mainPartnershipForm.html b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html new file mode 100644 index 0000000..96c0272 --- /dev/null +++ b/src/main/resources/templates/views/apps/community/mainPartnershipForm.html @@ -0,0 +1,176 @@ + + + + + +
+
+
+

사업 제휴 신청

+
+
+
+

Kbank는 온라인 비즈니스 혁신을 위한 사업 제안을 환영합니다.

+
+ +
+
+
+

+ 사업 제목 +

+
+
+ +
+
+
+
+ +
+

+ 사업 내용 +

+
+
+ +
+
+
+
+ +
+

첨부파일

+
+
+
+ +
+
+
+ + +
+
+
+ +
+

첨부파일은 10MB 이내로 등록해 주세요.

+

문서파일과 이미지 파일만 등록 가능합니다. (pdf, doc, docx, xls, xlsx, ppt, pptx, hwp, gif, jpg, + png)

+
+
+
+ +
+ 취소 +
+ +
+
+
+
+
+
+ + + + + + + + + + diff --git a/src/main/resources/templates/views/apps/community/qnaPasswordForm.html b/src/main/resources/templates/views/apps/community/qnaPasswordForm.html new file mode 100644 index 0000000..979f57f --- /dev/null +++ b/src/main/resources/templates/views/apps/community/qnaPasswordForm.html @@ -0,0 +1,52 @@ + + + + + 비밀번호 확인 + + + +
+
+
+
+
+
+

비밀번호 확인

+
+
+
+ + +
+ + +
+ +
+ + 취소 +
+
+
+
+ + + +
+
+
+
+ + + + + + + diff --git a/src/main/resources/templates/views/apps/login/account_recovery.html b/src/main/resources/templates/views/apps/login/account_recovery.html new file mode 100644 index 0000000..2ae974d --- /dev/null +++ b/src/main/resources/templates/views/apps/login/account_recovery.html @@ -0,0 +1,282 @@ + + + +
+
+ +
+

아이디 찾기

+
+ + + +
+ +
+
+ + + +
+
+
+ + + + +
+

+ 성명 +

+
+
+ +
+
+
+ + +
+

+ 휴대폰 번호 +

+
+
+ +
+
선택
+
    +
  • 010
  • +
  • 011
  • +
  • 016
  • +
  • 017
  • +
  • 018
  • +
+
+
+ - + + + + - + + + +
+ +
+
+ + + + + +
+ 취소 +
+ +
+
+
+
+ + +
+
+
+ + + + +
+

비밀번호 초기화 방법 선택

+
+
+ + + + +
+
+
+ + +
+

+ 성명 +

+
+
+ +
+
+
+ + + + + +
+

+ 휴대폰 번호 +

+
+
+ +
+
선택
+
    +
  • 010
  • +
  • 011
  • +
  • 016
  • +
  • 017
  • +
  • 018
  • +
+
+
+ - + + + + - + + + +
+ +
+
+ + + + + +
+ 취소 +
+ +
+
+
+
+
+
+
+
+
+ + + + + diff --git a/src/main/resources/templates/views/apps/login/findId.html b/src/main/resources/templates/views/apps/login/findId.html new file mode 100644 index 0000000..353a584 --- /dev/null +++ b/src/main/resources/templates/views/apps/login/findId.html @@ -0,0 +1,415 @@ + + + +
+
+ +
+

아이디 찾기

+
+ +
+ +
+
+ + + +
+
+
+ + + + +
+

+ 성명 +

+
+
+ +
+
+
+ + +
+

+ 휴대폰 번호 +

+
+
+ +
+
선택
+
    +
  • 010
  • +
  • 011
  • +
  • 016
  • +
  • 017
  • +
  • 018
  • +
+
+
+ - + + + + - + + + +
+ +
+
+ +
+

+ 인증번호 입력 +

+
+
+
+ + 03:00 +
+
+ +
+
+
+ +
+ 취소 +
+ +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/src/main/resources/templates/views/apps/login/findIdResult.html b/src/main/resources/templates/views/apps/login/findIdResult.html new file mode 100644 index 0000000..f4dfd9d --- /dev/null +++ b/src/main/resources/templates/views/apps/login/findIdResult.html @@ -0,0 +1,44 @@ + + + +
+
+ +
+

아이디 찾기

+
+ +
+ +
+
+
+
+ +
+

회원님의 아이디는 아래와 같습니다.

+
    +
  • + + +
  • +
+
+

비밀번호가 기억나지 않는 경우에는 비밀번호 초기화를 이용해 주세요.

+
+
+
+ 로그인 +
+
+
+
+
+
+
+
+ + + + diff --git a/src/main/resources/templates/views/apps/login/forgotPassword.html b/src/main/resources/templates/views/apps/login/forgotPassword.html new file mode 100644 index 0000000..524eddf --- /dev/null +++ b/src/main/resources/templates/views/apps/login/forgotPassword.html @@ -0,0 +1,74 @@ + + + + + + +
+ +
+
+

비밀번호 초기화

+
+
+
+
+
+ +
+ + +
+
+ +
+

비밀번호 초기화 링크가 이메일로 발송되었습니다.

+
+
+

비밀번호 초기화 링크가 만료되었습니다.

+
+
+

+
+
+ +
+
+
+ 로그인 +
+
+ +
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/login/idPasswordResult.html b/src/main/resources/templates/views/apps/login/idPasswordResult.html new file mode 100644 index 0000000..a3aaa39 --- /dev/null +++ b/src/main/resources/templates/views/apps/login/idPasswordResult.html @@ -0,0 +1,32 @@ + + + + + + +
+
+
+

찾기 결과

+
+ +
+
+

+


+
+
+ +
+
+ + + + + + + diff --git a/src/main/resources/templates/views/apps/login/inactiveAccountRecovery.html b/src/main/resources/templates/views/apps/login/inactiveAccountRecovery.html new file mode 100644 index 0000000..bacb9af --- /dev/null +++ b/src/main/resources/templates/views/apps/login/inactiveAccountRecovery.html @@ -0,0 +1,415 @@ + + + +
+
+
+

장기미사용 제한 해제

+
+
+
+

Kbank API Portal을 90일 이상 접속하지 않았을 경우 로그인이 제한됩니다.
+ 다시 서비스를 이용하시려면 '장기미사용 제한 해제'를 하셔야 이용하실 수 있습니다.

+
+
+
+ + + +
+

+ 아이디 +

+
+
+ +
+
+
+ +
+

+ 비밀번호 +

+
+
+ +
+
+
+ +
+

+ 휴대폰 번호 +

+
+
+ +
+
선택
+
    +
  • 010
  • +
  • 011
  • +
  • 016
  • +
  • 017
  • +
  • 018
  • +
+
+
+ - + + + + - + + + +
+ +
+
+ +
+

+ 인증번호 입력 +

+
+
+
+ + 03:00 +
+
+ +
+
+
+ +
+ 취소 +
+ +
+
+
+
+
+
+ + + + + + + diff --git a/src/main/resources/templates/views/apps/login/login.html b/src/main/resources/templates/views/apps/login/login.html new file mode 100644 index 0000000..b2eb5da --- /dev/null +++ b/src/main/resources/templates/views/apps/login/login.html @@ -0,0 +1,216 @@ + + + +
+
+
+

로그인

+
+
+
+
+ + +
+
+

+ 아이디 +

+
+
+ + +
+
+
+ +
+

+ 비밀번호 +

+
+
+ +
+
+
+
+
+ + + + +
+
+ + + +
+

로그아웃되었습니다.

+
+
+
+
+ +
+ + + + + diff --git a/src/main/resources/templates/views/apps/login/resetPassword.html b/src/main/resources/templates/views/apps/login/resetPassword.html new file mode 100644 index 0000000..d833ca3 --- /dev/null +++ b/src/main/resources/templates/views/apps/login/resetPassword.html @@ -0,0 +1,462 @@ + + + +
+
+ +
+

비밀번호 초기화

+
+ +
+ +
+
+ + + +
+
+
+ + + + +
+

+ 성명 +

+
+
+ +
+
+
+ + +
+

+ 이메일 아이디 +

+
+
+ +
+
+
+ + +
+

+ 휴대폰 번호 +

+
+
+ +
+
선택
+
    +
  • 010
  • +
  • 011
  • +
  • 016
  • +
  • 017
  • +
  • 018
  • +
+
+
+ - + + + + - + + + +
+ +
+
+ +
+

+ 인증번호 입력 +

+
+
+
+ + 03:00 +
+
+ +
+
+
+ +
+ 취소 +
+ +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/src/main/resources/templates/views/apps/login/resetPasswordResult.html b/src/main/resources/templates/views/apps/login/resetPasswordResult.html new file mode 100644 index 0000000..d05ca5d --- /dev/null +++ b/src/main/resources/templates/views/apps/login/resetPasswordResult.html @@ -0,0 +1,39 @@ + + + +
+
+ +
+

비밀번호 초기화

+
+ +
+ +
+
+ +
+
+
+

+
+
+ 로그인 +
+
+
+ +
+
+
+
+
+ + + + diff --git a/src/main/resources/templates/views/apps/login/userRegister.cellPhone.html b/src/main/resources/templates/views/apps/login/userRegister.cellPhone.html new file mode 100644 index 0000000..429b747 --- /dev/null +++ b/src/main/resources/templates/views/apps/login/userRegister.cellPhone.html @@ -0,0 +1,273 @@ + + + + + + +
+ + +
+
+

회원 가입

+
+
+
+
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+
+
+ + +
+
+
+ +
+ +
+
+
+
+ + + + +
+
+
+
+ +
+ +
+
+ +
+
+ +
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/main/agreementsHistory.html b/src/main/resources/templates/views/apps/main/agreementsHistory.html new file mode 100644 index 0000000..a13b44d --- /dev/null +++ b/src/main/resources/templates/views/apps/main/agreementsHistory.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/main/apiListFragment.html b/src/main/resources/templates/views/apps/main/apiListFragment.html new file mode 100644 index 0000000..1bc8f08 --- /dev/null +++ b/src/main/resources/templates/views/apps/main/apiListFragment.html @@ -0,0 +1,13 @@ + +
+
+

+

+
+
+ + + +
+
+
diff --git a/src/main/resources/templates/views/apps/main/guide.html b/src/main/resources/templates/views/apps/main/guide.html new file mode 100644 index 0000000..ad8184b --- /dev/null +++ b/src/main/resources/templates/views/apps/main/guide.html @@ -0,0 +1,81 @@ + + + + + + +
+
+ + +
+
+

+ API Portal
+ 이용 안내 +

+

+ API Portal은 간단한 회원가입
+ 절차만으로 개발/테스트를 진행할 수 있습니다. +

+
+
+

+ API Portal 이용 안내 +

+

+ API Portal은 간단한 회원가입 절차만으로 개발/테스트를 진행할 수 있습니다. +

+
+
    +
  • + API Portal 회원가입 및 인증키 발급 +

    Step 01

    +

    API Portal 회원가입 및 인증키 발급

    +
    +

    회원가입

    +

    개발인증키 발급 신청

    +
    +
  • +
  • + API 이용 +

    Step 02

    +

    API 이용

    +
    +

    API 이용 신청

    +
    +
  • +
  • + 개발 & 테스트베드 +

    Step 03

    +

    개발 & 테스트베드

    +
    +

    서비스 어플리케이션

    +

    API 연동 개발

    +
    +
  • +
  • + 운영 전환 +

    Step 04

    +

    운영 전환

    +
    +

    운영전환 신청

    +

    운영인증키 발급

    +

    시스템운영 전환

    +
    +
  • +
+
+ +
+
+ + + + + + + diff --git a/src/main/resources/templates/views/apps/main/howto.html b/src/main/resources/templates/views/apps/main/howto.html new file mode 100644 index 0000000..4691c64 --- /dev/null +++ b/src/main/resources/templates/views/apps/main/howto.html @@ -0,0 +1,23 @@ + + + + + + +
+ +
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/main/index.html b/src/main/resources/templates/views/apps/main/index.html new file mode 100644 index 0000000..c6e38d8 --- /dev/null +++ b/src/main/resources/templates/views/apps/main/index.html @@ -0,0 +1,460 @@ + + + + + +
+ + +
+
+
+ + 슬라이드 1 +
+

디지털 금융 리더 케이뱅크
새로운 비즈니스 기회를
제공합니다.

+
+
+
+ 슬라이드 2 +
+

차별화된 API와
편리한 테스트 환경

지원합니다

+
+
+
+ 슬라이드 3 +
+

디지털 금융 혁신
케이뱅크가
함께합니다

+
+
+
+
+
+ 슬라이드 1 +
+

케이뱅크가 새로운 비즈니스
기회를 제공합니다

+
+
+
+ 슬라이드 2 +
+

차별화된 API와
+ 편리한 테스트 환경
지원합니다

+
+
+
+ 슬라이드 3 +
+

디지털 금융 혁신
케이뱅크가
함께합니다

+
+
+
+ + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+ +
+
+

가장 많이 찾는 API

+

+ 전체보기 +

+
+
+ +
+ +
+
+ +
+
+ +
+
+
+

+

+
+
+ + + +
+
+
+
+ +
+

Kbank API PORTAL

+

Kbank API PORTAL

+

Kbank API PORTAL

+

Kbank API PORTAL

+

+ Kbank API Portal은 기업이 금융서비스를
+ 편리하게 개발할 수 있도록 차별화된
+ API와 테스트환경을 제공합니다.
+

+

+ Kbank API Portal은 기업이 금융서비스를 편리하게 개발할 수 있도록 차별화된 API와 테스트환경을 제공합니다. +

+ +
+
+ + + +
+
+

우리곁의 수많은 서비스들이
케이뱅크API
함께하고 있습니다

+

우리곁의 수많은 서비스들이
케이뱅크API와 함께하고 있습니다

+
+
    +
  • + 서비스 이용 수 +
    +

    + 서비스 이용 +
    +
  • +
  • + API 이용건수 +
    +

    + API 이용 +
    +
  • +
  • + API 활용기업 +
    +

    + API 활용 기업 +
    +
  • +
+
+
+
+ +
+
+ + + + + + diff --git a/src/main/resources/templates/views/apps/main/intro.html b/src/main/resources/templates/views/apps/main/intro.html new file mode 100644 index 0000000..3c9c05a --- /dev/null +++ b/src/main/resources/templates/views/apps/main/intro.html @@ -0,0 +1,78 @@ + + + + + + +
+
+
+

+ 경계를 허물다, + 혁신을 앞당기다 +

+

+ 비즈니스의 성공은 창의적이고
+ 혁신적인 서비스에 달려있습니다. +

+

+ 비즈니스의 성공은 창의적이고 혁신적인 서비스에 달려있습니다. +

+
+ +
+
+ 아이디어 +

+ Kbank API Portal은
+ 아이디어 실현과 혁신의
+ 기회를 제공 합니다. +

+

+ Kbank API Portal은
+ 아이디어 실현과 혁신의 기회를 제공 합니다. +

+
+
+ +
+

경쟁력 강화

+
+ +
+ 첫번째 이미지 + API 활용한 혁신적인
+ 비즈니스 모델과 서비스 제공 + 두번째 이미지 +
+
+ 세번째 이미지 + 데이터 확보의 용이성으로
+ 비즈니스 성장의 기회 마련 +
+
+
+ +
+
+ 카드 이미지 +
+

차별화된 디지털 금융 서비스

+

+ 금융서비스를 손쉽게 개발할 수 있도록
+ 다양한 API와 테스트 환경을 제공합니다. +

+
+
+
+ +
+
+ + + + + + + diff --git a/src/main/resources/templates/views/apps/main/newPolicyAgreement.html b/src/main/resources/templates/views/apps/main/newPolicyAgreement.html new file mode 100644 index 0000000..d95fde0 --- /dev/null +++ b/src/main/resources/templates/views/apps/main/newPolicyAgreement.html @@ -0,0 +1,55 @@ + + + +
+
+
+

개인정보처리방침 개정 안내

+
+
+
+
    +
  • 개인정보처리방침이 개정되어 회원님의 동의가 필요합니다.
  • +
+
+ +
+
+ +
+
+
+
+

+ + 개정일: + +

+
+
+
+
+ +
+
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/main/userAgreement.html b/src/main/resources/templates/views/apps/main/userAgreement.html new file mode 100644 index 0000000..f8f3236 --- /dev/null +++ b/src/main/resources/templates/views/apps/main/userAgreement.html @@ -0,0 +1,13 @@ + + + + +
+
+
+ +
+
+ + diff --git a/src/main/resources/templates/views/apps/mypage/UserConversionCompleted.html b/src/main/resources/templates/views/apps/mypage/UserConversionCompleted.html new file mode 100644 index 0000000..9102bfe --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/UserConversionCompleted.html @@ -0,0 +1,49 @@ + + + +
+
+ +
+ +
+
+ + + +
+
+ +
+
+ +
+
+

+ Kbank 담당자 승인 후,
+ Kbank API Portal 이용이 가능 합니다. +

+
+
+ 홈으로 +
+
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/mypage/apiKeyDetail.html b/src/main/resources/templates/views/apps/mypage/apiKeyDetail.html new file mode 100644 index 0000000..3bedb85 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiKeyDetail.html @@ -0,0 +1,272 @@ + + + + API 키 상세 + + +
+
+
+

인증키 정보

+
+ +
+ +
+ +
+

+ 인증키 이름 +

+
+
+ +
+
+
+
+

+ Client Id +

+
+
+ +
+
+
+ +
+

+ Client Secret +

+
+
+
+

+ client_key +

+
+
+
+
+ +
+

+
+
+
+ +
+
+
+
+ +
+

+ 변경일 +

+
+
+ +
+
+
+ +
+

+ 인증키 상태 +

+
+
+ +
+
+
+ +
+ +
+

API 정보

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명비고
14공통회원여부조회 +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명비고
14공통회원여부조회 +
+
+
+ + +
+

운영 전환 신청 내역

+
+
+
+ + + + + + + + + + + + + + + + + + + + +
상태일시상세내용
요청2024.06.01 + 12:12:12 + 운영 전환 요청
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
상태일시상세내용
요청2024.06.01 + 12:12:12 + 운영 전환 요청
+
+
+
+ + +
+
+ 목록 +
+ +
+
+
+ +
+ + + + +
+ + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/apiKeyList.html b/src/main/resources/templates/views/apps/mypage/apiKeyList.html new file mode 100644 index 0000000..aae847c --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiKeyList.html @@ -0,0 +1,93 @@ + + + + +
+
+
+

인증키 목록

+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No이름인증키인증키상태사용 API 수마지막수정일
1 + 수신 + + + 활성화1
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
+
+ + +
+ + + + + diff --git a/src/main/resources/templates/views/apps/mypage/apiKeyProdDetail.html b/src/main/resources/templates/views/apps/mypage/apiKeyProdDetail.html new file mode 100644 index 0000000..fc38639 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiKeyProdDetail.html @@ -0,0 +1,165 @@ + + + + API 키 상세 + + +
+
+
+

인증키 정보

+
+ +
+ +
+ +
+

+ 인증키 이름 +

+
+
+ + +
+
+
+ +
+

+ 변경일 +

+
+
+ +
+
+
+ +
+

+ 인증키 상태 +

+
+
+ +
+
+
+ +
+ +
+

API 정보

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명비고
14공통회원여부조회 +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명비고
14공통회원여부조회 +
+
+
+
+ +
+
+ 목록 +
+ +
+
+
+ +
+ + + + +
+ + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/apiKeyProdList.html b/src/main/resources/templates/views/apps/mypage/apiKeyProdList.html new file mode 100644 index 0000000..8eabc6b --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiKeyProdList.html @@ -0,0 +1,89 @@ + + + + +
+
+
+

인증키 목록

+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
No이름인증키상태사용 API 수마지막수정일
1 + 수신 + 활성화1
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+
+
+
+ + +
+ + + + + diff --git a/src/main/resources/templates/views/apps/mypage/apiRequestDetail.html b/src/main/resources/templates/views/apps/mypage/apiRequestDetail.html new file mode 100644 index 0000000..0c460de --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiRequestDetail.html @@ -0,0 +1,187 @@ + + + + API 요청 상세 + + +
+
+
+

인증키 요청 정보

+
+ +
+
+
+

+ 이름 +

+
+
+ +
+
+
+
+

+ 유형 +

+
+
+ +
+
+
+
+

+ 상태 +

+
+
+ +
+
+
+
+

+ 요청일시 +

+
+
+ +
+
+
+
+
+

API 정보

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명
삭제
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명
삭제
+
+
+ +
+
+ + +
+
+
+ 목록 +
+
+
+ + +
+ + + + diff --git a/src/main/resources/templates/views/apps/mypage/apiRequestHistory.html b/src/main/resources/templates/views/apps/mypage/apiRequestHistory.html new file mode 100644 index 0000000..a224f16 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiRequestHistory.html @@ -0,0 +1,121 @@ + + + + 인증키 신청 목록 + + +
+
+
+

인증키 신청 목록

+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No신청명신청상태신청일처리일자신청사유사용 API 수
1110
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No신청명신청상태신청일처리일자신청사유사용 API 수
1110
+
+
+
+ +
+ +
+
+
+
+ +
+
+
+ + + + + diff --git a/src/main/resources/templates/views/apps/mypage/apiRequestProdDetail.html b/src/main/resources/templates/views/apps/mypage/apiRequestProdDetail.html new file mode 100644 index 0000000..d3555c5 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiRequestProdDetail.html @@ -0,0 +1,191 @@ + + + + API 요청 상세 + + +
+
+
+

운영 인증키 요청 정보

+
+ +
+
+
+

+ 이름 +

+
+
+ +
+
+
+
+

+ 유형 +

+
+
+ +
+
+
+
+

+ 상태 +

+
+
+ +
+
+
+
+

+ 사유 +

+
+
+ +
+
+
+
+

+ 요청일시 +

+
+
+ +
+
+
+
+
+

API 정보

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명
삭제
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No서비스API명
삭제
+
+
+ +
+
+ + +
+
+
+ 목록 +
+
+
+ + +
+ + + + diff --git a/src/main/resources/templates/views/apps/mypage/apiRequestProdHistory.html b/src/main/resources/templates/views/apps/mypage/apiRequestProdHistory.html new file mode 100644 index 0000000..47860d7 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/apiRequestProdHistory.html @@ -0,0 +1,114 @@ + + + +
+
+
+

인증키 신청 목록

+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No신청명신청상태신청일처리일자신청사유사용 API 수
110
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No신청명신청상태신청일신청사유사용 API 수
1110
+
+
+
+ +
+ +
+
+
+
+ +
+
+
+ + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/components/commonUserInfo.html b/src/main/resources/templates/views/apps/mypage/components/commonUserInfo.html new file mode 100644 index 0000000..751dcd4 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/components/commonUserInfo.html @@ -0,0 +1,446 @@ + + + + +
+

+ 이메일 아이디 +

+
+
+ + +
+
+
+ +
+

+ 성명 +

+
+
+ +
+
+
+
+

+ 휴대폰 번호 +

+
+
+ + + + - + + + + - + + + +
+
+ 변경 +
+
+
+ + +
+
+ + + + + diff --git a/src/main/resources/templates/views/apps/mypage/dailyApiUsage.html b/src/main/resources/templates/views/apps/mypage/dailyApiUsage.html new file mode 100644 index 0000000..0d28767 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/dailyApiUsage.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + +
+
+
+ +

데이터가 없습니다.

+
+
diff --git a/src/main/resources/templates/views/apps/mypage/dashboard.html b/src/main/resources/templates/views/apps/mypage/dashboard.html new file mode 100644 index 0000000..5e35e15 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/dashboard.html @@ -0,0 +1,173 @@ + + + + +
+
+
+

기준

+ +
+
+ API키 +

API 키 현황

+
+
+
    +
  • +
    +

    테스트 키 승인 대기

    +

    5

    +
    +
  • +
  • +
    +

    테스트 키 보유 건수

    +

    1

    +
    +
  • +
  • +
    +

    운영 승인 대기

    +

    1

    +
    +
  • +
  • +
    +

    운영 키 보유 건수

    +

    1

    +
    +
  • +
+
+
+ +
+
+ 이용API +

이용 API

+
+

1000

+
+ +
+
+ API사용량 +

API 사용량

+
+
+
    +
  • +
    + 월간 사용량 +

    월간 사용량

    +

    999,999,999

    +
    +
  • +
  • +
    + 주간 사용량 +

    주간 사용량

    +

    999,999

    +
    +
  • +
  • +
    + 일간 사용량 +

    일간 사용량

    +

    999,999

    +
    +
  • +
+
+
+ +
+
+ 이용API +

주 사용 API

+
+
+
    +
  • + 1번 + API1 +
  • +
  • + 2번 + API2 +
  • +
  • + 3번 + API3 +
  • +
+
+
+ +
+

일별 API 이용현황

+
+ +
+ + +
+ + 달력 +
+ +
+
+
+
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/myApiKeyEdit.html b/src/main/resources/templates/views/apps/mypage/myApiKeyEdit.html new file mode 100644 index 0000000..38bc31d --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/myApiKeyEdit.html @@ -0,0 +1,284 @@ + + + + + + +
+
+
+

API 키 관리

+
+
+
+
API 키 정보 등록
+
+ + + + +
+ + + +
+
+
+
+ + +
+ +
+
+ + +
+ +
+
+
+ + +
+ +
+
+ +
+
+
+
+
+
+
+ 전체 API +
+
+ + + + + + + + + +
이름
+
+
+
+
+
+
+ 선택한 API +
+
+ + + + + + + + + + + + + +
이름
+
+ + +
+
+
+
+
+
+
+ +
+
+
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/myApiKeyList.html b/src/main/resources/templates/views/apps/mypage/myApiKeyList.html new file mode 100644 index 0000000..153e7c9 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/myApiKeyList.html @@ -0,0 +1,132 @@ + + + + + + +
+
+
+

API 키 관리

+
+
+
+
+ + +
+ +
+
+ API 키 정보 +
+
    +
  • +
+ +
+
+

+ +

+
+
+
+
+ + +
+ +
+
+
+
+
+

+ +

+
+
+
+
+ + +
+ +
+
+
+
+
+ +
+
+
+
+ Notification + +
+
+ 복사되었습니다 +
+
+
+
+
개발 키 추가
+

승인 후 개발환경에서 사용가능한 키가 발급됩니다.

+

발급하기

+
+
+ + +
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/myUpdatePw.html b/src/main/resources/templates/views/apps/mypage/myUpdatePw.html new file mode 100644 index 0000000..7c21b9f --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/myUpdatePw.html @@ -0,0 +1,91 @@ + + + + + + +
+
+ +
+
+
+ +
+ + + +
+
+
+
+ + + +
+
+
+ +
+ + + +
+
+
+
+
+ +
+
+
+ + + + + + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/orgTransfer.html b/src/main/resources/templates/views/apps/mypage/orgTransfer.html new file mode 100644 index 0000000..6ca46c9 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/orgTransfer.html @@ -0,0 +1,196 @@ + + + +
+ +
+
+

법인회원 전환

+
+ +
+ + + + + + + +
+

법인 기본 정보

+ 필수 입력 +
+ + +
+ + + +
+
+

법인 관리자 정보

+ 필수 입력 +
+
+
    +
  • 법인 관리자는 API 신청 및 이용자 초대 등 모든 권한을 보유합니다.
  • +
  • 법인회원 전환은 반드시 법인이메일 주소로 입력하시기 바랍니다. 개인이메일로 전환 신청시, 법인 승인이 거절 될 수 있습니다
  • +
+
+
+
+

+ 이메일 아이디 +

+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/passwordChange.html b/src/main/resources/templates/views/apps/mypage/passwordChange.html new file mode 100644 index 0000000..b8a6ca5 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/passwordChange.html @@ -0,0 +1,66 @@ + + + + 비밀번호 변경 + + +
+
+
+

비밀번호 변경

+
+
+
+

소중한 계정 보호를 위해 비밀번호를 변경해 주세요!

+

소중한 계정 보호를 위해
비밀번호를 변경해 주세요!

+
+
+ +
+
+

+ 새 비밀번호 +

+
+
+ +
+
+
+ +
+

+ 새 비밀번호 확인 +

+
+
+ +
+
+
+ +
+

영문 대문자, 소문자, 숫자, 특수문자 포함 8~20자 (아이디, 휴대전화, 3자리 이상 연속,반복문자 사용 불가)

+
+
+ +
+ 취소 +
+ +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/mypage/passwordChangeEntry.html b/src/main/resources/templates/views/apps/mypage/passwordChangeEntry.html new file mode 100644 index 0000000..8631584 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/passwordChangeEntry.html @@ -0,0 +1,44 @@ + + + +
+
+
+

비밀번호 변경

+
+
+
+

비밀번호 변경을 위하여 현재 비밀번호를 입력해 주세요

+
+
+ +
+
+

+ 현재 비밀번호 +

+
+
+ +
+
+
+
+
+ 취소 +
+ +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/mypage/updateCorporateManager.html b/src/main/resources/templates/views/apps/mypage/updateCorporateManager.html new file mode 100644 index 0000000..864127a --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/updateCorporateManager.html @@ -0,0 +1,945 @@ + + + +
+
+
+

내 정보 관리

+
+
+
+ + +
+

법인 기본 정보

+
+
+
+

+ 제휴기관 ID +

+
+
+ +
+
+
+
+

+ 사업자등록정보 +

+
+
+ + + - + + - + +
+
+
+
+

+ 법인등록번호 +

+
+
+ + + - + +
+
+
+
+

+ 법인명 +

+
+
+ +
+
+
+
+

+ 대표자 성명 +

+
+
+ +
+
+
+
+

+ 사업장 소재지 +

+
+
+ +
+
+
+
+

+ 업태 +

+
+
+ +
+
+
+
+

+ 업종 +

+
+
+ +
+
+
+
+

+ 회사 전화번호 +

+
+
+ + +
+
+
    +
  • 국번없음
  • +
  • 02
  • +
  • 031
  • +
  • 032
  • +
  • 033
  • +
  • 041
  • +
  • 042
  • +
  • 043
  • +
  • 044
  • +
  • 051
  • +
  • 052
  • +
  • 053
  • +
  • 054
  • +
  • 055
  • +
  • 061
  • +
  • 062
  • +
  • 063
  • +
  • 064
  • +
  • 070
  • +
+
+
+ - + + + + - + + + +
+
+
+
+

+ 서비스명 +

+
+
+ +
+
+
+
+

+ 고객센터 전화번호 +

+
+
+ + +
+
+
    +
  • 국번없음
  • +
  • 02
  • +
  • 031
  • +
  • 032
  • +
  • 033
  • +
  • 041
  • +
  • 042
  • +
  • 043
  • +
  • 044
  • +
  • 051
  • +
  • 052
  • +
  • 053
  • +
  • 054
  • +
  • 055
  • +
  • 061
  • +
  • 062
  • +
  • 063
  • +
  • 064
  • +
  • 070
  • +
+
+
+ - + + + + - + + + +
+
+
+
+ +
+

법인 관리자 정보

+ 필수 입력 +
+
+ +
+ +
+

사용 서버 IP 목록(화이트리스트)

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
NoIP삭제
1128.255.255.254 + +
+
+
+
+
+
+
+

+ 사용 서버 IP 추가 +

+
+
+
+ +
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/updateCorporateUser.html b/src/main/resources/templates/views/apps/mypage/updateCorporateUser.html new file mode 100644 index 0000000..9868f37 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/updateCorporateUser.html @@ -0,0 +1,159 @@ + + + +
+
+
+

내 정보 관리

+
+
+
+
+

기본 정보

+ 필수 입력란입니다 +
+
+
+

+ 소속기관 +

+
+
+ +
+
+
+ +
+
+ +
+ +
+
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/mypage/updatePersonalUser.html b/src/main/resources/templates/views/apps/mypage/updatePersonalUser.html new file mode 100644 index 0000000..8838544 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/updatePersonalUser.html @@ -0,0 +1,182 @@ + + + +
+ +
+
+

내 정보 관리

+
+ +
+
+
+

기본 정보

+ 필수 입력 +
+ +
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ 취소 +
+ 수정 +
+
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/mypage/updatePw.html b/src/main/resources/templates/views/apps/mypage/updatePw.html new file mode 100644 index 0000000..91232d1 --- /dev/null +++ b/src/main/resources/templates/views/apps/mypage/updatePw.html @@ -0,0 +1,83 @@ + + + + + + +
+
+
+
+

비밀 번호 변경

+
+
+
+ +
+ + + +
+
+
+
+ + + +
+
+
+ +
+ + + +
+
+
+
+
+ +
+
+
+ + + + + + + + + + diff --git a/src/main/resources/templates/views/apps/register/components/commonUserInfoForm.html b/src/main/resources/templates/views/apps/register/components/commonUserInfoForm.html new file mode 100644 index 0000000..2d8c7a1 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/components/commonUserInfoForm.html @@ -0,0 +1,181 @@ + + + + +
+

+ 이메일 아이디 +

+
+
+ + @ + + + + +
+ +
+
+
+
+ + + + + diff --git a/src/main/resources/templates/views/apps/register/components/emailChangeForm.html b/src/main/resources/templates/views/apps/register/components/emailChangeForm.html new file mode 100644 index 0000000..dfe0956 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/components/emailChangeForm.html @@ -0,0 +1,69 @@ + + + + +
+

+ 비밀번호 확인 +

+
+
+ +
+
+
+
+
+

+ 신규 이메일 아이디 +

+
+
+ + @ + + +
+ +
+
+
+
+ + + + + diff --git a/src/main/resources/templates/views/apps/register/components/individualConversionForm.html b/src/main/resources/templates/views/apps/register/components/individualConversionForm.html new file mode 100644 index 0000000..58b7946 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/components/individualConversionForm.html @@ -0,0 +1,22 @@ + + + + +
+

+ 비밀번호 확인 +

+
+
+ +
+
+
+
+
+ + diff --git a/src/main/resources/templates/views/apps/register/components/newUserInfoForm.html b/src/main/resources/templates/views/apps/register/components/newUserInfoForm.html new file mode 100644 index 0000000..35e40dc --- /dev/null +++ b/src/main/resources/templates/views/apps/register/components/newUserInfoForm.html @@ -0,0 +1,352 @@ + + + + +
+ +
+

+ 성명 +

+
+
+ +
+
+
+
+ +
+

+ 휴대폰 번호 +

+
+
+ +
+
선택
+
    +
  • 010
  • +
  • 011
  • +
  • 017
  • +
  • 016
  • +
  • 018
  • +
+
+
+ - + + + + - + + + + +
+ +
+
+
+ + +
+

+ 인증번호 입력 +

+
+
+
+ + 03:00 +
+
+ +
+
+
+ +
+

+ 비밀번호 +

+
+
+ + +
+
+
+
+
+ +
+

+ 비밀번호 확인 +

+
+
+ + +
+
+
+
+
+ +
+
+ + + + + diff --git a/src/main/resources/templates/views/apps/register/components/orgBasicInfoForm.html b/src/main/resources/templates/views/apps/register/components/orgBasicInfoForm.html new file mode 100644 index 0000000..9b38082 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/components/orgBasicInfoForm.html @@ -0,0 +1,455 @@ + + + + +
+
+

+ 사업자등록번호 +

+
+
+ + - + + - + +
+
+ +
+
+ +
+

+ 법인등록번호 +

+
+
+ + - + +
+
+ +
+
+ +
+

+ 법인명 +

+
+
+ +
+
+
+ +
+
+
+ +
+

+ 대표자 성명 +

+
+
+ +
+
+
+ +
+
+
+ +
+

+ 사업장 소재지 +

+
+
+ +
+
+
+ +
+
+
+ +
+

+ 업태 +

+
+
+ +
+
+
+
+ +
+

+ 업종 +

+
+
+ +
+
+
+
+ +
+

+ 회사 전화번호 +

+
+
+ +
+
선택
+
    +
  • 국번없음
  • +
  • 02
  • +
  • 031
  • +
  • 032
  • +
  • 033
  • +
  • 041
  • +
  • 042
  • +
  • 043
  • +
  • 044
  • +
  • 051
  • +
  • 052
  • +
  • 053
  • +
  • 054
  • +
  • 055
  • +
  • 061
  • +
  • 062
  • +
  • 063
  • +
  • 064
  • +
  • 060
  • +
  • 070
  • +
  • 080
  • +
  • 010
  • +
  • 011
  • +
  • 016
  • +
  • 017
  • +
  • 018
  • +
  • 019
  • +
+
+
+ - + + + + - + + + +
+ +
+
+
+
+

+ 서비스명 +

+
+
+ +
+
+
+ +
+
+
+
+

+ 고객센터 전화번호 +

+
+
+ +
+
선택
+
    +
  • 국번없음
  • +
  • 02
  • +
  • 031
  • +
  • 032
  • +
  • 033
  • +
  • 041
  • +
  • 042
  • +
  • 043
  • +
  • 044
  • +
  • 051
  • +
  • 052
  • +
  • 053
  • +
  • 054
  • +
  • 055
  • +
  • 061
  • +
  • 062
  • +
  • 063
  • +
  • 064
  • +
  • 060
  • +
  • 070
  • +
  • 080
  • +
  • 010
  • +
  • 011
  • +
  • 016
  • +
  • 017
  • +
  • 018
  • +
  • 019
  • +
+
+
+ - + + + + - + + + +
+ +
+
+
+
+

+ 사업자 등록증 +

+
+
+
+ + +
+
+
+ + +
+
+
+
+ +
+
+

첨부파일은 10MB 이내로 등록해 주세요.

+

문서파일과 이미지 파일만 등록 가능합니다. (pdf, doc, docx, xls, xlsx, ppt, pptx, hwp, gif, jpg, png)

+
+
+
+
+
+ + + + + diff --git a/src/main/resources/templates/views/apps/register/components/orgUserInfoForm.html b/src/main/resources/templates/views/apps/register/components/orgUserInfoForm.html new file mode 100644 index 0000000..b1c0c85 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/components/orgUserInfoForm.html @@ -0,0 +1,181 @@ + + + + +
+

+ 이메일 아이디 +

+
+
+ + @ + + + + +
+ +
+
+
+
+ + + +
+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/register/emailValidationResultCorpManager.html b/src/main/resources/templates/views/apps/register/emailValidationResultCorpManager.html new file mode 100644 index 0000000..811c731 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/emailValidationResultCorpManager.html @@ -0,0 +1,49 @@ + + + +
+
+ +
+ +
+
+ + + +
+
+ +
+
+ +
+
+

+ Kbank 담당자 승인 후,
+ Kbank API Portal 이용이 가능 합니다. +

+
+
+ 홈으로 +
+
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+
+
+
+ + + + diff --git a/src/main/resources/templates/views/apps/register/emailValidationResultUser.html b/src/main/resources/templates/views/apps/register/emailValidationResultUser.html new file mode 100644 index 0000000..05f75da --- /dev/null +++ b/src/main/resources/templates/views/apps/register/emailValidationResultUser.html @@ -0,0 +1,45 @@ + + + +
+
+ +
+ +
+
+ + + +
+
+ +
+
+ +
+ +
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+ + +
+
+
+ + + + diff --git a/src/main/resources/templates/views/apps/register/joinCompleted.html b/src/main/resources/templates/views/apps/register/joinCompleted.html new file mode 100644 index 0000000..5459d88 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/joinCompleted.html @@ -0,0 +1,45 @@ + + + +
+
+ +
+ +
+
+ + + +
+
+ +
+
+ +
+ +
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/register/orgUserRegister.html b/src/main/resources/templates/views/apps/register/orgUserRegister.html new file mode 100644 index 0000000..62d04e2 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/orgUserRegister.html @@ -0,0 +1,501 @@ + + + +
+ +
+
+

법인회원가입

+
+
+ + + + + +
+ +
+

법인 기본 정보

+ 필수 입력 +
+
+ +
+ + +
+

법인 관리자 정보

+ 필수 입력 +
+
+
    +
  • 법인관리자는 API 신청 및 이용자 초대 등 모든 권한을 보유합니다.
  • +
+
+
+ +
+ + +
+ +
+
+
+
+
+ + + + + + + + + + + diff --git a/src/main/resources/templates/views/apps/register/signupSelection.html b/src/main/resources/templates/views/apps/register/signupSelection.html new file mode 100644 index 0000000..f907403 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/signupSelection.html @@ -0,0 +1,81 @@ + + + +
+
+
+

회원가입

+
+
+
+

Kbank API Portal을 사용하기 위해
+ 회원가입해 주세요. +

+
+ + + + + +
+
+
+ + + + + + + + + + + diff --git a/src/main/resources/templates/views/apps/register/userAgreementContent.html b/src/main/resources/templates/views/apps/register/userAgreementContent.html new file mode 100644 index 0000000..e88151e --- /dev/null +++ b/src/main/resources/templates/views/apps/register/userAgreementContent.html @@ -0,0 +1,120 @@ + + + + +
+

약관 동의

+
+
+
+ + + + +
+
+
    +
  • + + + + + + +
  • +
+
+ +
+
    +
  • + + + + + + + + + +
  • +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/register/userDecisionAccept.html b/src/main/resources/templates/views/apps/register/userDecisionAccept.html new file mode 100644 index 0000000..a7b0c5a --- /dev/null +++ b/src/main/resources/templates/views/apps/register/userDecisionAccept.html @@ -0,0 +1,54 @@ + + + +
+
+
+

법인회원 초대

+
+
+
+ + + + +
+

+ 님 안녕하세요.

+ 에서 귀하를 Kbank API Portal 법인회원으로 초대하였습니다.
+
Kbank와 함께 금융서비스를 손쉽게 개발해 보세요.

+ 로그인 하여 법인회원 전환을 진행하세요.
+

+
+
+ +
+ +
+
+
+
+ + +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/register/userDecisionProcess.html b/src/main/resources/templates/views/apps/register/userDecisionProcess.html new file mode 100644 index 0000000..17b7263 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/userDecisionProcess.html @@ -0,0 +1,84 @@ + + + +
+
+
+

법인회원 초대

+
+
+ +
+ + + + +
+

초대 수락

+
+
+

+ 님 안녕하세요.

+ 에서 귀하를 Kbank API Portal 법인회원으로 초대하였습니다.
+
Kbank와 함께 금융서비스를 손쉽게 개발해 보세요.

+ 초대를 수락하시면 법인회원으로 전환됩니다.
+

+
+
+ +
+ +
+
+
+
+ + + +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/views/apps/register/userEmailCompleted.html b/src/main/resources/templates/views/apps/register/userEmailCompleted.html new file mode 100644 index 0000000..7f768dc --- /dev/null +++ b/src/main/resources/templates/views/apps/register/userEmailCompleted.html @@ -0,0 +1,37 @@ + + + +
+
+
+

회원가입 완료

+
+
+
+

이메일 인증이 완료되었습니다.

+
+
+
+ 완료 아이콘 +
+
+

+
+
+ 로그인 +
+
+
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/register/userRegister.html b/src/main/resources/templates/views/apps/register/userRegister.html new file mode 100644 index 0000000..b8fae70 --- /dev/null +++ b/src/main/resources/templates/views/apps/register/userRegister.html @@ -0,0 +1,199 @@ + + + +
+ +
+
+

개인회원가입

+

법인회원가입

+
+
+
+
    +
  • 서비스 또는 API 사용을 원하실 경우 법인회원 승인 후 이용하실 수 있습니다.
  • +
+
+ + + + +
+ +
+

법인 정보

+
+ +
+
+

+ 법인명 +

+
+
+ +
+
+
+
+ +
+

기본 정보

+ 필수 입력란입니다 +
+
+ + +
+
+ +
+
+
+
+
+ + + + + + + + + diff --git a/src/main/resources/templates/views/apps/register/userRegisterResult.html b/src/main/resources/templates/views/apps/register/userRegisterResult.html new file mode 100644 index 0000000..d2dd77c --- /dev/null +++ b/src/main/resources/templates/views/apps/register/userRegisterResult.html @@ -0,0 +1,40 @@ + + + +
+
+
+

회원가입 완료

+
+
+
+

회원 가입신청이 되었습니다.

+
+
+
+ 완료 아이콘 +
+
+

+ API Portal 서비스를 이용하기 위해서
+ 이메일 인증을 완료 해주세요. +

+
+
+ 홈으로 +
+
+
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/views/apps/users/userDetail.html b/src/main/resources/templates/views/apps/users/userDetail.html new file mode 100644 index 0000000..51d300c --- /dev/null +++ b/src/main/resources/templates/views/apps/users/userDetail.html @@ -0,0 +1,113 @@ + + + + +
+
+
+

이용자 정보

+
+ +
+ + +
+

기본정보

+
+ +
+ +
+

+ 이메일 아이디 +

+
+
+ + @ + +
+
+
+ +
+

+ 성명 +

+
+
+ +
+
+
+ +
+

+ 휴대폰 번호 +

+
+
+ +
+
+
+ +
+

+ 권한 +

+
+
+ +
+
+
+ +
+

+ 계정상태 +

+
+
+ +
+
+
+
+

+ 가입일 +

+
+
+ +
+
+
+ +
+

+ 마지막 로그인 +

+
+
+ +
+
+
+
+
+ 목록 +
+ +
+
+
+ + + + + + diff --git a/src/main/resources/templates/views/apps/users/userList.html b/src/main/resources/templates/views/apps/users/userList.html new file mode 100644 index 0000000..1452d7c --- /dev/null +++ b/src/main/resources/templates/views/apps/users/userList.html @@ -0,0 +1,366 @@ + + + + +
+
+
+

이용자 목록

+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No성명이메일 아이디권한계정상태설정
No + 성명 + 이메일 아이디 + 권한 + 계정상태 +
+ 현재 사용자 +
+ +
+ 이메일 아이디 + + +
+
+ +
+ +
+ +
+ +
+
+
+ +
+ + +
+ + + + + diff --git a/src/main/resources/templates/views/common/error/error.html b/src/main/resources/templates/views/common/error/error.html new file mode 100644 index 0000000..b4e0440 --- /dev/null +++ b/src/main/resources/templates/views/common/error/error.html @@ -0,0 +1,66 @@ + + + + + + + + + + + + + 개발자 포털 + + + + + + + + +
+
+
+ +
+ +
+
+
+ Kbank API Portal +
+
+ Kbank API Portal +
+ + +
+
+ ERROR 이미지 +
+
+ ERROR 이미지 +
+
+

+
+
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+ + +
+
+ + +
+
+ + diff --git a/src/main/resources/templates/views/common/error/notFoundError.html b/src/main/resources/templates/views/common/error/notFoundError.html new file mode 100644 index 0000000..3b1dbdc --- /dev/null +++ b/src/main/resources/templates/views/common/error/notFoundError.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + 개발자 포털 + + + + + + + + +
+
+
+ +
+ +
+
+
+ Kbank API Portal +
+
+ Kbank API Portal +
+ + +
+
+ ERROR 이미지 +
+
+ ERROR 이미지 +
+
+

서비스 이용에 불편을 드려 죄송합니다.
+ 빠른 서비스를 제공할 수 있게 준비하겠습니다.

+
+
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+ + +
+
+ + +
+
+ + diff --git a/src/main/resources/templates/views/common/error/validationError.html b/src/main/resources/templates/views/common/error/validationError.html new file mode 100644 index 0000000..0c48299 --- /dev/null +++ b/src/main/resources/templates/views/common/error/validationError.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + 개발자 포털 + + + + + + + + +
+
+
+ +
+ +
+
+
+ Kbank API Portal +
+
+ Kbank API Portal +
+ + +
+
+ ERROR 이미지 +
+
+ ERROR 이미지 +
+
+

서비스 이용에 불편을 드려 죄송합니다.
+ 빠른 서비스를 제공할 수 있게 준비하겠습니다.

+
+
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+ + +
+
+ + +
+
+ + diff --git a/src/main/resources/templates/views/error.html b/src/main/resources/templates/views/error.html new file mode 100644 index 0000000..d5c8696 --- /dev/null +++ b/src/main/resources/templates/views/error.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + 개발자 포털 + + + + + + + + +
+
+
+ +
+ +
+
+
+ Kbank API Portal +
+
+ Kbank API Portal +
+ + +
+
+ ERROR 이미지 +
+
+ ERROR 이미지 +
+
+

서비스 이용에 불편을 드려 죄송합니다.
+ 빠른 서비스를 제공할 수 있게 준비하겠습니다.

+
+
+

고객센터 : 1522-1000 / 해외 : +82-2-3778-9111

+
+
+ + +
+
+ + +
+
+ + diff --git a/src/main/resources/templates/views/fragment/apikey-request-prod.html b/src/main/resources/templates/views/fragment/apikey-request-prod.html new file mode 100644 index 0000000..d5a19b0 --- /dev/null +++ b/src/main/resources/templates/views/fragment/apikey-request-prod.html @@ -0,0 +1,628 @@ +
+
+ +
+
+ + + + + diff --git a/src/main/resources/templates/views/fragment/apikey-request.html b/src/main/resources/templates/views/fragment/apikey-request.html new file mode 100644 index 0000000..91a5919 --- /dev/null +++ b/src/main/resources/templates/views/fragment/apikey-request.html @@ -0,0 +1,487 @@ +
+
+ +
+
+ + + + diff --git a/src/main/resources/templates/views/fragment/auth-number-validation.html b/src/main/resources/templates/views/fragment/auth-number-validation.html new file mode 100644 index 0000000..3c55cd4 --- /dev/null +++ b/src/main/resources/templates/views/fragment/auth-number-validation.html @@ -0,0 +1,8 @@ +
+
+ 올바른 인증번호를 입력해주세요. +
+
+ 인증되었습니다. +
+
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/comp-reg-no-validation.html b/src/main/resources/templates/views/fragment/comp-reg-no-validation.html new file mode 100644 index 0000000..d96b755 --- /dev/null +++ b/src/main/resources/templates/views/fragment/comp-reg-no-validation.html @@ -0,0 +1,6 @@ +
+ + +
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/corp-reg-no-validation.html b/src/main/resources/templates/views/fragment/corp-reg-no-validation.html new file mode 100644 index 0000000..d658562 --- /dev/null +++ b/src/main/resources/templates/views/fragment/corp-reg-no-validation.html @@ -0,0 +1,6 @@ +
+ + +
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/email-validation.html b/src/main/resources/templates/views/fragment/email-validation.html new file mode 100644 index 0000000..297b94a --- /dev/null +++ b/src/main/resources/templates/views/fragment/email-validation.html @@ -0,0 +1,16 @@ +
+
+ 올바른 이메일 형식이 아닙니다. +
+
+
+ 이미 등록된 이메일입니다. +
+
+ 사용 가능한 이메일입니다. +
+
+ +
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/fileList.html b/src/main/resources/templates/views/fragment/fileList.html new file mode 100644 index 0000000..72c4c6f --- /dev/null +++ b/src/main/resources/templates/views/fragment/fileList.html @@ -0,0 +1,48 @@ + + + + +
+
첨부 파일 목록
+ + + + + + + + +
+ + [[${fileDetail.originalFileName}]].[[${fileDetail.fileExtension}]] / [[${#numbers.formatDecimal(fileDetail.fileSize / 1024 / 1024, 1, 2)}]] MB + + + + +
첨부 파일 없음
+ + + +
+ + + + diff --git a/src/main/resources/templates/views/fragment/footer.html b/src/main/resources/templates/views/fragment/footer.html new file mode 100644 index 0000000..2d885ed --- /dev/null +++ b/src/main/resources/templates/views/fragment/footer.html @@ -0,0 +1,19 @@ + + + + + + + + +
+ +
+ + diff --git a/src/main/resources/templates/views/fragment/kbank/api_lnb.html b/src/main/resources/templates/views/fragment/kbank/api_lnb.html new file mode 100644 index 0000000..ae54345 --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/api_lnb.html @@ -0,0 +1,32 @@ + + + + diff --git a/src/main/resources/templates/views/fragment/kbank/footer.html b/src/main/resources/templates/views/fragment/kbank/footer.html new file mode 100644 index 0000000..b2c66d4 --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/footer.html @@ -0,0 +1,29 @@ + + + + + + + diff --git a/src/main/resources/templates/views/fragment/kbank/head.html b/src/main/resources/templates/views/fragment/kbank/head.html new file mode 100644 index 0000000..1df30f8 --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/head.html @@ -0,0 +1,52 @@ + + + + + 개발자 포털 + + + + + + + + + + + + + + + askdaskjdhalksdjksaS asdㄴㅁㅇㅁㄴㅇ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/views/fragment/kbank/header.html b/src/main/resources/templates/views/fragment/kbank/header.html new file mode 100644 index 0000000..9812a8c --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/header.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/views/fragment/kbank/header_container.html b/src/main/resources/templates/views/fragment/kbank/header_container.html new file mode 100644 index 0000000..05dfe5f --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/header_container.html @@ -0,0 +1,199 @@ + + + + + + + + +
+

kbank

+

+

API Portal

+

+
+ home +
+ + + + +
+ + + diff --git a/src/main/resources/templates/views/fragment/kbank/header_nav.html b/src/main/resources/templates/views/fragment/kbank/header_nav.html new file mode 100644 index 0000000..4133285 --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/header_nav.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/src/main/resources/templates/views/fragment/kbank/index_header.html b/src/main/resources/templates/views/fragment/kbank/index_header.html new file mode 100644 index 0000000..8aad6ff --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/index_header.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/views/fragment/kbank/menu.html b/src/main/resources/templates/views/fragment/kbank/menu.html new file mode 100644 index 0000000..93a7750 --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/menu.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/views/fragment/kbank/terms_agreements.html b/src/main/resources/templates/views/fragment/kbank/terms_agreements.html new file mode 100644 index 0000000..940f3c8 --- /dev/null +++ b/src/main/resources/templates/views/fragment/kbank/terms_agreements.html @@ -0,0 +1,74 @@ + + + +
+
+
+

이용약관

+
+
+
+
+ +
+
+
+
+
+ +
+ +
+
+ 시행일자 : +
+
    +
  • +
  • +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + diff --git a/src/main/resources/templates/views/fragment/org-phone-number-validation.html b/src/main/resources/templates/views/fragment/org-phone-number-validation.html new file mode 100644 index 0000000..28d7342 --- /dev/null +++ b/src/main/resources/templates/views/fragment/org-phone-number-validation.html @@ -0,0 +1,6 @@ +
+ + +
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/pagination.html b/src/main/resources/templates/views/fragment/pagination.html new file mode 100644 index 0000000..4186256 --- /dev/null +++ b/src/main/resources/templates/views/fragment/pagination.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/views/fragment/password-validation.html b/src/main/resources/templates/views/fragment/password-validation.html new file mode 100644 index 0000000..a55e0cd --- /dev/null +++ b/src/main/resources/templates/views/fragment/password-validation.html @@ -0,0 +1,4 @@ +
+
+
+
diff --git a/src/main/resources/templates/views/fragment/popup/apiKeyRequestPopup.html b/src/main/resources/templates/views/fragment/popup/apiKeyRequestPopup.html new file mode 100644 index 0000000..eda9288 --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/apiKeyRequestPopup.html @@ -0,0 +1,50 @@ + + +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/popup/customPopup.html b/src/main/resources/templates/views/fragment/popup/customPopup.html new file mode 100644 index 0000000..88e788a --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/customPopup.html @@ -0,0 +1,21 @@ + + diff --git a/src/main/resources/templates/views/fragment/popup/customPopup2.html b/src/main/resources/templates/views/fragment/popup/customPopup2.html new file mode 100644 index 0000000..c2f946e --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/customPopup2.html @@ -0,0 +1,20 @@ + + diff --git a/src/main/resources/templates/views/fragment/popup/customPopups.html b/src/main/resources/templates/views/fragment/popup/customPopups.html new file mode 100644 index 0000000..83c051b --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/customPopups.html @@ -0,0 +1,7 @@ + +
+
+
+
+
+
diff --git a/src/main/resources/templates/views/fragment/popup/email-validation-popup.html b/src/main/resources/templates/views/fragment/popup/email-validation-popup.html new file mode 100644 index 0000000..cf8491b --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/email-validation-popup.html @@ -0,0 +1,22 @@ + + \ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/popup/emailResendPopup.html b/src/main/resources/templates/views/fragment/popup/emailResendPopup.html new file mode 100644 index 0000000..7e74331 --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/emailResendPopup.html @@ -0,0 +1,63 @@ +
+ + + +
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/popup/emailValidationPopup.html b/src/main/resources/templates/views/fragment/popup/emailValidationPopup.html new file mode 100644 index 0000000..ff7b972 --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/emailValidationPopup.html @@ -0,0 +1,22 @@ + + \ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/popup/withdrawalPopup.html b/src/main/resources/templates/views/fragment/popup/withdrawalPopup.html new file mode 100644 index 0000000..dd10383 --- /dev/null +++ b/src/main/resources/templates/views/fragment/popup/withdrawalPopup.html @@ -0,0 +1,65 @@ +
+ + + +
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/register-auth-validation.html b/src/main/resources/templates/views/fragment/register-auth-validation.html new file mode 100644 index 0000000..fe526a2 --- /dev/null +++ b/src/main/resources/templates/views/fragment/register-auth-validation.html @@ -0,0 +1,8 @@ +
+
+ 인증번호를 발송하였습니다. +
+
+ 인증번호 발송 중 오류가 발생했습니다. +
+
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/sc-phone-number-validation.html b/src/main/resources/templates/views/fragment/sc-phone-number-validation.html new file mode 100644 index 0000000..28d7342 --- /dev/null +++ b/src/main/resources/templates/views/fragment/sc-phone-number-validation.html @@ -0,0 +1,6 @@ +
+ + +
\ No newline at end of file diff --git a/src/main/resources/templates/views/fragment/validator.html b/src/main/resources/templates/views/fragment/validator.html new file mode 100644 index 0000000..af0bd87 --- /dev/null +++ b/src/main/resources/templates/views/fragment/validator.html @@ -0,0 +1,14 @@ + + + + + + + + +
+
+ + + + diff --git a/src/main/resources/templates/views/layout/base_layout.html b/src/main/resources/templates/views/layout/base_layout.html new file mode 100644 index 0000000..3666209 --- /dev/null +++ b/src/main/resources/templates/views/layout/base_layout.html @@ -0,0 +1,30 @@ + + + + + + + + + + + +
+ + + + +
+
+
+
+ + + +
+ +
+ + + diff --git a/src/main/resources/templates/views/layout/index_layout.html b/src/main/resources/templates/views/layout/index_layout.html new file mode 100644 index 0000000..edef4ea --- /dev/null +++ b/src/main/resources/templates/views/layout/index_layout.html @@ -0,0 +1,28 @@ + + + + + + + + + + + +
+ + + +
+
+
+ + + +
+ +
+ + + diff --git a/src/main/resources/templates/views/layout/kbank_api_layout.html b/src/main/resources/templates/views/layout/kbank_api_layout.html new file mode 100644 index 0000000..5b3d93b --- /dev/null +++ b/src/main/resources/templates/views/layout/kbank_api_layout.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + +
+ +
+ + + +
+
+ + + + +
+ + +
+
+
+ + + diff --git a/src/main/resources/templates/views/layout/kbank_apikey_layout.html b/src/main/resources/templates/views/layout/kbank_apikey_layout.html new file mode 100644 index 0000000..29cf402 --- /dev/null +++ b/src/main/resources/templates/views/layout/kbank_apikey_layout.html @@ -0,0 +1,42 @@ + + + + + + + + + + + +
+ +
+ + +
+
+ + + + +
+ + +
+
+
+
+ + + diff --git a/src/main/resources/templates/views/layout/kbank_base_layout.html b/src/main/resources/templates/views/layout/kbank_base_layout.html new file mode 100644 index 0000000..042fbf5 --- /dev/null +++ b/src/main/resources/templates/views/layout/kbank_base_layout.html @@ -0,0 +1,40 @@ + + + + + + + + + + + +
+ +
+ + +
+
+ + + +
+ + +
+
+
+ + + diff --git a/src/main/resources/templates/views/layout/kbank_index_layout.html b/src/main/resources/templates/views/layout/kbank_index_layout.html new file mode 100644 index 0000000..dff72bc --- /dev/null +++ b/src/main/resources/templates/views/layout/kbank_index_layout.html @@ -0,0 +1,39 @@ + + + + + + + + + + + +
+ +
+ + +
+
+ + + + +
+ + + +
+
+ + + diff --git a/src/main/resources/templates/views/layout/kbank_mypage_layout.html b/src/main/resources/templates/views/layout/kbank_mypage_layout.html new file mode 100644 index 0000000..a8d3bcd --- /dev/null +++ b/src/main/resources/templates/views/layout/kbank_mypage_layout.html @@ -0,0 +1,39 @@ + + + + + + + + + + +
+ +
+ + +
+
+ + + +
+ + +
+
+
+ +
+ + + diff --git a/src/main/resources/templates/views/layout/kbank_nohead_layout.html b/src/main/resources/templates/views/layout/kbank_nohead_layout.html new file mode 100644 index 0000000..98d446e --- /dev/null +++ b/src/main/resources/templates/views/layout/kbank_nohead_layout.html @@ -0,0 +1,19 @@ + + + + + + + + + +
+
+
+ + + +
+ + diff --git a/src/main/resources/templates/views/layout/side_menu_layout.html b/src/main/resources/templates/views/layout/side_menu_layout.html new file mode 100644 index 0000000..1391723 --- /dev/null +++ b/src/main/resources/templates/views/layout/side_menu_layout.html @@ -0,0 +1,34 @@ + + + + + + + + + + + +
+ + + + + + + +
+ + + +
+
+
+ + +
+
+
+ + diff --git a/src/main/resources/templates/views/samples/demo-index.html b/src/main/resources/templates/views/samples/demo-index.html new file mode 100644 index 0000000..53b5448 --- /dev/null +++ b/src/main/resources/templates/views/samples/demo-index.html @@ -0,0 +1,14 @@ + + + + Demo Index + + +

Demo Index

+ + + diff --git a/src/main/resources/templates/views/samples/portal.html b/src/main/resources/templates/views/samples/portal.html new file mode 100644 index 0000000..dab52dd --- /dev/null +++ b/src/main/resources/templates/views/samples/portal.html @@ -0,0 +1,142 @@ + + + + + 사용자 정의 Thymeleaf 기능 데모 + + + +
+

사용자 정의 Thymeleaf 기능 데모

+ +
+

2. 프래그먼트 대체

+
+
+ +
+

3. 동적 탭 선택

+ +
+ +
+

4. 조건부 속성

mo + +
+ +
+

5. 상태 변수를 이용한 동적 반복

+ + + + + +
+ + 결과 이름
+
+ +
+

6. 복잡한 조건문

+ +
+ +
+

7. 동적 액션이 있는 폼

+
+ + +
+
+ +
+

8. null 값 처리

+ +
+ +
+

9. 환경 속성 사용

+
+

공지사항 ID: 1

+
+
+ +
+

10. 사용자 정의 데이터 속성

+ + + + +
파일 이름
+
+ +
+

11. Thymeleaf를 사용한 인라인 JavaScript

+ +
+ +
+

12. 동적 스타일링

+ 이 텍스트는 굵게 표시될 수 있습니다 +
+ +
+

13. 복잡한 URL 생성

+ + 게시글 보기 + +
+ +
+

14. 유틸리티 객체 사용

+ 2023-01-01 12:00 +
+ +
+

15. 조건부 폼 제출

+
+ + +
+
+
+ + + + diff --git a/src/main/resources/templates/views/samples/security.html b/src/main/resources/templates/views/samples/security.html new file mode 100644 index 0000000..b0d046e --- /dev/null +++ b/src/main/resources/templates/views/samples/security.html @@ -0,0 +1,117 @@ + + + + + Spring Security Thymeleaf 데모 + + + +
+

Spring Security Thymeleaf 데모

+ +
+

1. 사용자 인증 여부 확인

+
+ 이 내용은 인증된 사용자에게만 보입니다 +
+
+ +
+

2. 익명 사용자 확인

+
+ 이 내용은 익명 사용자에게만 보입니다 +
+
+ +
+

3. 사용자 역할에 따른 내용 표시

+
+ 이 내용은 관리자에게만 보입니다 +
+
+ +
+

4. 여러 역할 확인

+
+ 이 내용은 관리자와 매니저 모두에게 보입니다 +
+
+ +
+

5. 특정 권한 확인

+
+ 이 내용은 EDIT_PROFILE 권한을 가진 사용자에게만 보입니다 +
+
+ +
+

6. 인증 객체 접근

+

사용자 이름이 여기에 표시됩니다

+
+ +
+

7. 주체 객체 접근

+

사용자의 이메일이 여기에 표시됩니다

+
+ +
+

8. 조건부로 요소 표시/숨기기

+ 로그인 + 로그아웃 +
+ +
+

9. sec:authorize 속성 사용 (간결한 문법)

+
+ 이 섹션은 관리자 전용입니다 +
+
+ +
+

10. 여러 보안 표현식 결합

+
+ 인증된 사용자 중 USER 역할을 가진 사용자를 위한 내용 +
+
+ +
+

11. 폼에서 인증 정보 사용

+
+ + + +
+
+ +
+

12. 현재 사용자의 모든 역할 표시

+
    +
  • +
+
+ +
+

13. URL에서 인증 정보 사용

+ 내 프로필 +
+ +
+

14. 보안 메소드 호출

+

보안 데이터

+
+ +
+

15. 사용자 정의 보안 표현식

+ +
+ 현재 사용자별 컨텐츠 +
+
+
+ + diff --git a/src/main/resources/templates/views/samples/thymeleaf.html b/src/main/resources/templates/views/samples/thymeleaf.html new file mode 100644 index 0000000..9ac6da0 --- /dev/null +++ b/src/main/resources/templates/views/samples/thymeleaf.html @@ -0,0 +1,116 @@ + + + + + Thymeleaf 데모 페이지 + + + +
+

Thymeleaf 데모 페이지

+ +
+

1. 기본 변수 표현식

+

이 내용은 대체될 것입니다

+
+ +
+

2. 문자열 연결

+

안녕하세요, 사용자님!

+
+ +
+

3. 조건부 렌더링

+
+ 이 내용은 조건이 참일 때만 표시됩니다 +
+
+ 이 내용은 조건이 거짓일 때 표시됩니다 +
+
+ +
+

4. 컬렉션 반복

+
    +
  • 항목 이름
  • +
+
+ +
+

5. 반복 상태

+ + + + + +
0항목 이름
+
+ +
+

6. 날짜 형식 지정

+

2023-01-01 12:00

+
+ +
+

7. URL 생성

+ 사용자 프로필 +
+ +
+

8. 폼 처리

+
+ + + +
+
+ +
+

9. 인라인 자바스크립트

+ +
+ +
+

10. 스위치 문

+
+

사용자는 관리자입니다

+

사용자는 매니저입니다

+

사용자는 다른 역할입니다

+
+
+ +
+

11. 엘비스 연산자

+

익명

+
+ +
+

12. 속성 설정

+
사용자 정보
+
+ +
+

13. 클래스 속성

+
동적 클래스
+
+ +
+

14. 프래그먼트

+
여기에 푸터가 들어갑니다
+
+ +
+

15. 숫자 형식 지정

+

0.00

+
+
+ + diff --git a/src/test/java/com/eactive/apim/portal/apps/DTOFieldUtils.java b/src/test/java/com/eactive/apim/portal/apps/DTOFieldUtils.java new file mode 100644 index 0000000..3dca4fa --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/DTOFieldUtils.java @@ -0,0 +1,26 @@ +package com.eactive.apim.portal.apps; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +public class DTOFieldUtils { + public static List getFieldNames(Class dtoClass) { + List fieldNames = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + fieldNames.add(field.getName()); + } + return fieldNames; + } + + // Optional: Retrieve fields with specific annotations (e.g., @NotNull) + public static List getFieldNamesWithAnnotation(Class dtoClass, Class annotationClass) { + List fieldNames = new ArrayList<>(); + for (Field field : dtoClass.getDeclaredFields()) { + if (field.isAnnotationPresent(annotationClass)) { + fieldNames.add(field.getName()); + } + } + return fieldNames; + } +} diff --git a/src/test/java/com/eactive/apim/portal/apps/user/AccountControllerTest.java b/src/test/java/com/eactive/apim/portal/apps/user/AccountControllerTest.java new file mode 100644 index 0000000..c0e085e --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/user/AccountControllerTest.java @@ -0,0 +1,161 @@ +package com.eactive.apim.portal.apps.user; + + +import com.eactive.apim.portal.apps.user.controller.AccountController; +import com.eactive.apim.portal.apps.user.dto.PasswordChangeRequestDTO; +import com.eactive.apim.portal.apps.user.dto.PortalOrgDTO; +import com.eactive.apim.portal.apps.user.service.PortalUserService; +import com.eactive.apim.portal.common.user.PortalAuthenticatedUser; +import com.eactive.apim.portal.common.util.SecurityUtil; +import com.eactive.apim.portal.file.service.FileService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.validation.BindingResult; +import org.springframework.validation.Validator; +import org.springframework.web.servlet.ModelAndView; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +@SuppressWarnings("all") +@ExtendWith(MockitoExtension.class) +class AccountControllerTest { + + @Mock + private Validator validator; + + @Mock + private PortalUserService userService; + + @Mock + private FileService fileService; + + @InjectMocks + private AccountController accountController; + + private MockMvc mockMvc; + + @BeforeEach + void setUp() { + mockMvc = MockMvcBuilders.standaloneSetup(accountController).build(); + } + + @Test + void testChangePassword() throws Exception { + mockMvc.perform(get("/change_password.do")) + .andExpect(status().isOk()) + .andExpect(view().name("apps/main/myUpdatePw")) + .andExpect(model().attributeExists("passwordChangeRequest")); + } + + @Test + void testUpdatePassword() throws Exception { + PasswordChangeRequestDTO dto = new PasswordChangeRequestDTO(); + dto.setOldPassword("old"); + dto.setNewPassword("new"); + dto.setNewPassword2("new"); + + try (MockedStatic securityUtil = mockStatic(SecurityUtil.class)) { + securityUtil.when(SecurityUtil::getCurrentLoginId).thenReturn("testUser"); + +// when(userService.findByLoginId("testUser")).thenReturn(true); + + mockMvc.perform(post("/update_password.do") + .flashAttr("passwordChangeRequest", dto)) + .andExpect(status().isOk()) + .andExpect(view().name("apps/main/myUpdatePw")) + .andExpect(model().attributeExists("passwordChangeRequest")); + + verify(validator).validate(any(), any()); + } + } + + @Test + void testUpdatePasswordWithErrors() throws Exception { + PasswordChangeRequestDTO dto = new PasswordChangeRequestDTO(); + dto.setOldPassword("old"); + dto.setNewPassword("new"); + dto.setNewPassword2("different"); + + doAnswer(invocation -> { + BindingResult bindingResult = invocation.getArgument(1); + bindingResult.rejectValue("newPassword2", "error.password", "Passwords do not match"); + return null; + }).when(validator).validate(any(), any(BindingResult.class)); + + mockMvc.perform(post("/update_password.do") + .flashAttr("passwordChangeRequest", dto)) + .andExpect(status().isOk()) + .andExpect(view().name("apps/main/myUpdatePw")) + .andExpect(model().attributeExists("errors")); + } + + @Test + void testMypage() { + try (MockedStatic securityUtil = mockStatic(SecurityUtil.class)) { + PortalAuthenticatedUser user = new PortalAuthenticatedUser(); + securityUtil.when(SecurityUtil::getPortalAuthenticatedUser).thenReturn(user); + + ModelAndView mav = accountController.mypage(); + + assertEquals("apps/main/myPageEnt", mav.getViewName()); + assertEquals(user, mav.getModel().get("user")); + } + } + + @Test + void testMyCompanyInfo() throws Exception { + try (MockedStatic securityUtil = mockStatic(SecurityUtil.class)) { + securityUtil.when(SecurityUtil::getPortalAuthenticatedUser).thenReturn(new PortalAuthenticatedUser()); + + mockMvc.perform(get("/my_company_info.do")) + .andExpect(status().isOk()) + .andExpect(view().name("apps/main/myPageEntCompany")) + .andExpect(model().attributeExists("user")); + } + } + + @Test + void testUpdateCompanyInfo() throws Exception { + PortalOrgDTO dto = new PortalOrgDTO(); + dto.setOrgName("Test Company"); + + try (MockedStatic securityUtil = mockStatic(SecurityUtil.class)) { + securityUtil.when(SecurityUtil::getCurrentLoginId).thenReturn("testUser"); + + mockMvc.perform(post("/update_my_company_info.do") + .flashAttr("user", dto)) + .andExpect(status().is3xxRedirection()) + .andExpect(redirectedUrl("/my_company_info.do")); + + verify(validator).validate(eq(dto), any()); + } + } + + @Test + void testUpdateCompanyInfoWithErrors() throws Exception { + PortalOrgDTO dto = new PortalOrgDTO(); + + doAnswer(invocation -> { + BindingResult bindingResult = invocation.getArgument(1); + bindingResult.rejectValue("companyName", "error.companyName", "Company name is required"); + return null; + }).when(validator).validate(any(), any(BindingResult.class)); + + mockMvc.perform(post("/update_my_company_info.do") + .flashAttr("user", dto)) + .andExpect(status().isOk()) + .andExpect(view().name("apps/main/myPageEntCompany")); + } +} diff --git a/src/test/java/com/eactive/apim/portal/apps/user/BaseWebTest.java b/src/test/java/com/eactive/apim/portal/apps/user/BaseWebTest.java new file mode 100644 index 0000000..a1f0776 --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/user/BaseWebTest.java @@ -0,0 +1,237 @@ +package com.eactive.apim.portal.apps.user; + +import io.github.bonigarcia.wdm.WebDriverManager; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; +import org.junit.jupiter.api.*; +import org.openqa.selenium.*; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeDriverService; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.time.Duration; +import java.util.concurrent.TimeUnit; + +@SuppressWarnings("all") +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public abstract class BaseWebTest { + + public static final String HOST_URL = "http://localhost:8080"; + protected static final String TEST_FILES_DIR = "src/test/resources/test-files"; + protected static final int INPUT_DELAY_MILLIS = 1500; // 대기 시간 + + protected WebDriver driver; + protected WebDriverWait wait; + protected JavascriptExecutor js; + protected Actions actions; + + @BeforeAll + public void setupClass() { + WebDriverManager.chromedriver().setup(); + } + + @BeforeEach + public void setupTest() { + ChromeOptions options = new ChromeOptions(); + options.addArguments("--no-sandbox"); + options.addArguments("--disable-dev-shm-usage"); + options.addArguments("--remote-allow-origins=*"); + + ChromeDriverService service = new ChromeDriverService.Builder() + .usingAnyFreePort() + .build(); + + driver = new ChromeDriver(service, options); + driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); + driver.manage().window().setSize(new Dimension(1280, 800)); // Set window size + wait = new WebDriverWait(driver, Duration.ofSeconds(60)); // 대기 시간을 60초로 늘림 + js = (JavascriptExecutor) driver; + actions = new Actions(driver); + } + + @AfterEach + public void teardown() { + if (driver != null) { + driver.quit(); + } + } + + protected void navigateTo(String url) { + driver.get(url); + } + + + protected void triggerBlurEvent(By locator) { + try { + WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(locator)); + // First try using JavaScript blur() + try { + js.executeScript("arguments[0].blur();", element); + } catch (Exception jsException) { + // If JavaScript fails, try simulating tab key press + actions.moveToElement(element) + .click() + .sendKeys(Keys.TAB) + .perform(); + } + // Add a small delay to allow blur event handlers to execute + Thread.sleep(500); + } catch (Exception e) { + System.err.println("Failed to trigger blur event: " + e.getMessage()); + throw new RuntimeException("Failed to trigger blur event", e); + } + } + + protected void slowSendKeys(By by, String keys) throws InterruptedException { + WebElement element = driver.findElement(by); + for (char c : keys.toCharArray()) { + element.sendKeys(String.valueOf(c)); + Thread.sleep(10); + } + } + + private void createTestFilesDirectoryIfNotExists() { + File directory = new File(TEST_FILES_DIR); + if (!directory.exists()) { + directory.mkdirs(); + } + } + + private String getTestFilePath(String fileName) { + Path resourcePath = Paths.get(TEST_FILES_DIR, fileName); + return resourcePath.toAbsolutePath().toString(); + } + + protected void uploadFile(String inputId, String fileName) throws InterruptedException { + try { + String filePath = getTestFilePath(fileName); + File file = new File(filePath); + + if (!file.exists()) { + System.err.println("Warning: Test file not found at " + filePath); + return; + } + + // Wait for file input to be present + WebElement fileInput = wait.until(ExpectedConditions.presenceOfElementLocated(By.id(inputId))); + + // Send the file path to the input + fileInput.sendKeys(filePath); + + Thread.sleep(INPUT_DELAY_MILLIS); + + } catch (Exception e) { + System.err.println("Failed to upload file: " + e.getMessage()); + throw e; + } + } + + protected void clickElement(By by) { + WebElement element = wait.until(ExpectedConditions.elementToBeClickable(by)); + try { + element.click(); + } catch (Exception e) { + try { + ((JavascriptExecutor) driver).executeScript("arguments[0].click();", element); + } catch (Exception jsException) { + new Actions(driver).moveToElement(element).click().perform(); + } + } + } + + protected void slowClick(By by) throws InterruptedException { + Thread.sleep(500); + clickElement(by); + Thread.sleep(500); + } + + protected void checkCheckbox(By by) throws InterruptedException { + WebElement checkbox = wait.until(ExpectedConditions.elementToBeClickable(by)); + if (!checkbox.isSelected()) { + clickElement(by); + } + } + + protected void scrollIntoView(WebElement element) { + ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); + } + + protected boolean isButtonDisabled(By locator) { + WebElement button = driver.findElement(locator); + return !button.isEnabled() || button.getAttribute("disabled") != null; + } + + protected void handleEmailValidationAlert(String buttonId, String buttonName) { + try { + WebDriverWait alertWait = new WebDriverWait(driver, Duration.ofSeconds(5)); + WebElement customAlert = alertWait.until(ExpectedConditions.visibilityOfElementLocated(By.id("emailValidationPopup"))); + + // 커스텀 알림 메시지 출력 + //WebElement alertMessage = customAlert.findElement(By.id("customAlertMessage")); + //System.out.println("Custom Alert message: " + alertMessage.getText()); + + // '확인' 버튼 클릭 + WebElement okButton = customAlert.findElement(By.id(buttonId)); + clickButtonSafely(okButton, buttonName); + + // 알림창이 사라질 때까지 대기 + alertWait.until(ExpectedConditions.invisibilityOf(customAlert)); + } catch (TimeoutException e) { + System.out.println("No custom alert appeared."); + } + } + + protected void handleAlert() { + try { + WebDriverWait alertWait = new WebDriverWait(driver, Duration.ofSeconds(5)); + WebElement customAlert = alertWait.until(ExpectedConditions.visibilityOfElementLocated(By.id("customAlert"))); + + // 커스텀 알림 메시지 출력 + WebElement alertMessage = customAlert.findElement(By.id("customAlertMessage")); + System.out.println("Custom Alert message: " + alertMessage.getText()); + + // '확인' 버튼 클릭 + WebElement okButton = customAlert.findElement(By.id("customAlertOkButton")); + clickButtonSafely(okButton, "알림 확인"); + + // 알림창이 사라질 때까지 대기 + alertWait.until(ExpectedConditions.invisibilityOf(customAlert)); + } catch (TimeoutException e) { + System.out.println("No custom alert appeared."); + } + } + + protected void clickButtonSafely(WebElement button, String buttonName) { + try { + // 버튼이 보이도록 스크롤 + ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", button); + Thread.sleep(500); // 스크롤 후 잠시 대기 + + // 먼저 일반적인 클릭 시도 + button.click(); + } catch (ElementClickInterceptedException | InterruptedException e) { + System.out.println(buttonName + " 버튼 클릭 실패. JavaScript로 클릭을 시도합니다."); + try { + // JavaScript를 사용하여 클릭 + js.executeScript("arguments[0].click();", button); + } catch (Exception jsException) { + System.out.println(buttonName + " 버튼 JavaScript 클릭도 실패. Actions를 사용하여 클릭을 시도합니다."); + // Actions를 사용하여 클릭 + actions.moveToElement(button).click().perform(); + } + } + } + + protected void assertElementText(By locator, String expectedText) { + WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(locator)); + Assertions.assertEquals(expectedText, element.getText(), "Element text does not match expected value"); + } + + protected void assertUrlContains(String expectedUrlPart) { + wait.until(ExpectedConditions.urlContains(expectedUrlPart)); + } +} diff --git a/src/test/java/com/eactive/apim/portal/apps/user/PortalOrgRegistrationRetainTest.java b/src/test/java/com/eactive/apim/portal/apps/user/PortalOrgRegistrationRetainTest.java new file mode 100644 index 0000000..3254c3d --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/user/PortalOrgRegistrationRetainTest.java @@ -0,0 +1,297 @@ +package com.eactive.apim.portal.apps.user; + +import io.github.bonigarcia.wdm.WebDriverManager; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.openqa.selenium.By; +import org.openqa.selenium.NoSuchElementException; +import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; + +@SuppressWarnings("all") +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class PortalOrgRegistrationRetainTest extends BaseWebTest { + + + public static final String HOST_URL = "http://localhost:8080"; + + private final String USER_ID_FILE = "user_id_counter.txt"; + + private static final String BUSINESS_LICENSE_FILE = "business-license.pptx"; + + @BeforeAll + public void setupClass() { + WebDriverManager.chromedriver().setup(); + } + + @AfterEach + public void teardown() { + if (driver != null) { + driver.quit(); + } + } + + @Test + public void testSignupScenarios() throws InterruptedException { + navigateToRegistrationPage(); + fillRegistrationForm(); + } + + public void navigateToRegistrationPage() throws InterruptedException { + driver.get(HOST_URL + "/signup"); + + // '기관회원가입' 링크를 찾아 클릭 + WebElement orgSignupLink = wait.until(ExpectedConditions.elementToBeClickable( + By.xpath("//div[contains(@class, 'mb_group2')]/a/span[text()='법인회원가입']"))); + orgSignupLink.click(); + + // 새 URL로 이동했는지 확인 + wait.until(ExpectedConditions.urlToBe(HOST_URL + "/signup/portalOrg")); + + // 페이지 로딩을 위한 추가 대기 시간 + Thread.sleep(INPUT_DELAY_MILLIS); + } + + public void fillRegistrationForm() throws InterruptedException { + Thread.sleep(INPUT_DELAY_MILLIS); + + // 약관 동의 + WebElement agreeAll = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("agree_all"))); + scrollIntoView(agreeAll); + checkCheckbox(By.id("agree_all")); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 사업자 등록번호 + slowSendKeys(By.id("compRegNo1"), "527"); + slowSendKeys(By.id("compRegNo2"), "88"); + slowSendKeys(By.id("compRegNo3"), "00686"); + handleAlert(); + Thread.sleep(3000); + + // 법인 등록번호 + slowSendKeys(By.id("corpRegNo1"), "131111"); + slowSendKeys(By.id("corpRegNo2"), "0478337"); + handleAlert(); + Thread.sleep(3000); + // 기관명 + slowSendKeys(By.id("orgName"), "카카오페이"); + + // 대표자 성명 + slowSendKeys(By.id("ceoName"), "신원근"); + + // 사업장 소재지 주소 + WebElement field = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("ceoName"))); + scrollIntoView(field); + + slowSendKeys(By.id("orgAddr"), "경기도 성남시 분당구 판교역로 166, 비동 15층(백현동)"); + + // 업태 + slowSendKeys(By.id("orgSectors"), "금융 지원 서비스업"); + + // 종목 + slowSendKeys(By.id("orgIndustryType"), "전자상거래 소매업"); + + // 회사 전화번호 + closeDropdownIfOpen("orgAreaCode"); + selectCustomOption("orgAreaCode", "없음"); + slowSendKeys(By.id("orgPhoneNumber1"), "1644"); + slowSendKeys(By.id("orgPhoneNumber2"), "7405"); + + // 서비스명 + slowSendKeys(By.id("serviceName"), "카카오페이"); + + // 고객센터 전화번호 + selectCustomOption("scAreaCode", "없음"); + slowSendKeys(By.id("scPhoneNumber1"), "1644"); + slowSendKeys(By.id("scPhoneNumber2"), "7405"); + + // 여기에 파일 업로드 로직 추가 (사업자 등록증) + uploadFile("files", BUSINESS_LICENSE_FILE); + + // 기본 관리자 정보 + slowSendKeys(By.id("userId"), "user"); + slowSendKeys(By.id("domain"), "eee.com"); + WebElement checkEmailButton = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".btn_check .btn_check_email"))); + clickButtonSafely(checkEmailButton, "이메일 중복체크"); + handleEmailValidationAlert("emailConvertButton", "이메일 유지"); + Thread.sleep(INPUT_DELAY_MILLIS); + + slowSendKeys(By.id("passwordConfirmIndividual"), "bravo135!"); + Thread.sleep(INPUT_DELAY_MILLIS); //추가 대기 시간 + + // 가입신청 버튼 클릭 (실제 제출은 하지 않습니다) + WebElement submitButton = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".btn_register"))); + submitButton.click(); // 주석 처리하여 실제 제출은 하지 않습니다 + Thread.sleep(10000); + } + + private void fillFieldAndHandleAlert(String fieldName, String value) throws InterruptedException { + WebElement field = wait.until(ExpectedConditions.presenceOfElementLocated(By.id(fieldName))); + field.clear(); + field.sendKeys(value); + Thread.sleep(INPUT_DELAY_MILLIS); + handleAlert(); + } + + + private void verifyPhoneNumber() throws InterruptedException { + + // 인증번호 받기 버튼 찾기 (여러 방법 시도) + WebElement getAuthButton = null; + try { + getAuthButton = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector(".btn_check .common_btn_type_2.cbt.btn_auth"))); + } catch (TimeoutException e) { + try { + getAuthButton = wait.until(ExpectedConditions.elementToBeClickable( + By.xpath("//a[contains(@class, 'btn_auth') and .//span[text()='인증번호 받기']]"))); + } catch (TimeoutException e2) { + getAuthButton = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("[hx-post*='/request_register_auth.do']"))); + } + } + + if (getAuthButton == null) { + throw new NoSuchElementException("인증번호 받기 버튼을 찾을 수 없습니다."); + } + + // 버튼 클릭 + clickButtonSafely(getAuthButton, "인증번호 받기"); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 알림창 처리 + handleAlert(); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 인증번호 입력 컨테이너가 나타날 때까지 대기 + WebElement authNumberContainer = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("authNumberContainer"))); + + // 인증번호 입력 + slowSendKeys(By.id("authNumber"), "123456"); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 인증번호 확인 버튼 클릭 + WebElement verifyButton = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector(".btn_verify_auth"))); + clickButtonSafely(verifyButton, "인증번호 확인"); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 추가적인 알림창이 있다면 처리 + handleAlert(); + } + + + private void fillSplitFieldByName(String fieldName, String[] values) throws InterruptedException { + for (int i = 0; i < values.length; i++) { + WebElement field = wait.until(ExpectedConditions.presenceOfElementLocated(By.name(fieldName + (i + 1)))); + field.clear(); + field.sendKeys(values[i]); + Thread.sleep(INPUT_DELAY_MILLIS); + } + } + + + private void selectCustomOption(String selectId, String optionValue) throws InterruptedException { + try { + // Wait for and click the select_selected div to open dropdown + WebElement selectSelected = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("#" + selectId + " .select_selected"))); + + // Wait for and verify the element doesn't have 'active' class before clicking + wait.until(ExpectedConditions.not( + ExpectedConditions.attributeContains(selectSelected, "class", "active"))); + + actions.moveToElement(selectSelected).click().perform(); + + // Wait for the dropdown to become visible by checking both conditions: + // 1. select_selected should have 'active' class + // 2. common_selecttype should not have 'select_hide' class + wait.until(ExpectedConditions.attributeContains(selectSelected, "class", "active")); + wait.until(ExpectedConditions.presenceOfElementLocated( + By.cssSelector("#" + selectId + " .common_selecttype:not(.select_hide)"))); + + // Find and click the option + WebElement option = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("#" + selectId + " .common_selecttype li"))); + actions.moveToElement(option).click().perform(); + + // After clicking, verify: + // 1. The dropdown is hidden again (select_hide class is present) + // 2. select_selected no longer has active class + // 3. The selected text is updated + wait.until(ExpectedConditions.presenceOfElementLocated( + By.cssSelector("#" + selectId + " .common_selecttype.select_hide"))); + wait.until(ExpectedConditions.not( + ExpectedConditions.attributeContains(selectSelected, "class", "active"))); + wait.until(ExpectedConditions.textToBe( + By.cssSelector("#" + selectId + " .select_selected"), optionValue)); + + Thread.sleep(INPUT_DELAY_MILLIS); + } catch (TimeoutException e) { + throw new RuntimeException("Failed to select option '" + optionValue + + "' from custom select '" + selectId + "'", e); + } + } + + // Utility method to check if dropdown is open + private boolean isDropdownOpen(String selectId) { + try { + WebElement selectSelected = driver.findElement(By.cssSelector("#" + selectId + " .select_selected")); + WebElement selectItems = driver.findElement(By.cssSelector("#" + selectId + " .common_selecttype")); + + return selectSelected.getAttribute("class").contains("active") && + !selectItems.getAttribute("class").contains("select_hide"); + } catch (Exception e) { + return false; + } + } + + // Utility method to get currently selected value + private String getSelectedValue(String selectId) { + return driver.findElement(By.cssSelector("#" + selectId + " .select_selected")) + .getText(); + } + + // Utility method to close dropdown if open + private void closeDropdownIfOpen(String selectId) { + if (isDropdownOpen(selectId)) { + actions.click(driver.findElement(By.cssSelector("body"))).perform(); + wait.until(ExpectedConditions.presenceOfElementLocated( + By.cssSelector("#" + selectId + " .common_selecttype.select_hide"))); + } + } + + + private String generateUserId() { + int currentId = readUserIdFromFile(); + int newId = currentId + 1; + writeUserIdToFile(newId); + return String.format("user%03d", newId); + } + + private int readUserIdFromFile() { + try (BufferedReader reader = new BufferedReader(new FileReader(USER_ID_FILE))) { + String line = reader.readLine(); + return line != null ? Integer.parseInt(line.trim()) : 0; + } catch (IOException e) { + System.out.println("파일을 읽는 중 오류가 발생했습니다. 새로운 ID를 1부터 시작합니다."); + return 0; + } + } + + private void writeUserIdToFile(int id) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(USER_ID_FILE))) { + writer.write(String.valueOf(id)); + } catch (IOException e) { + System.out.println("파일에 ID를 쓰는 중 오류가 발생했습니다."); + } + } +} diff --git a/src/test/java/com/eactive/apim/portal/apps/user/PortalOrgRegistrationTest.java b/src/test/java/com/eactive/apim/portal/apps/user/PortalOrgRegistrationTest.java new file mode 100644 index 0000000..a0e6086 --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/user/PortalOrgRegistrationTest.java @@ -0,0 +1,318 @@ +package com.eactive.apim.portal.apps.user; + +import io.github.bonigarcia.wdm.WebDriverManager; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.openqa.selenium.By; +import org.openqa.selenium.NoSuchElementException; +import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; + +@SuppressWarnings("all") +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class PortalOrgRegistrationTest extends BaseWebTest { + + public static final int INPUT_DELAY_MILLIS = 1500; // 대기 시간을 2000ms로 늘림 + private static final String BUSINESS_LICENSE_FILE = "business-license.pptx"; + private final String USER_ID_FILE = "user_id_counter.txt"; + + @BeforeAll + public void setupClass() { + WebDriverManager.chromedriver().setup(); + } + + @AfterEach + public void teardown() { + if (driver != null) { + driver.quit(); + } + } + + @Test + public void testSignupScenarios() throws InterruptedException { + navigateToRegistrationPage(); + fillRegistrationForm(); + } + + public void navigateToRegistrationPage() throws InterruptedException { + driver.get(HOST_URL + "/signup"); + + // '기관회원가입' 링크를 찾아 클릭 + WebElement orgSignupLink = wait.until(ExpectedConditions.elementToBeClickable( + By.xpath("//div[contains(@class, 'mb_group2')]/a/span[text()='법인회원가입']"))); + orgSignupLink.click(); + + // 새 URL로 이동했는지 확인 + wait.until(ExpectedConditions.urlToBe(HOST_URL + "/signup/portalOrg")); + + // 페이지 로딩을 위한 추가 대기 시간 + Thread.sleep(INPUT_DELAY_MILLIS); + } + + public void fillRegistrationForm() throws InterruptedException { + Thread.sleep(INPUT_DELAY_MILLIS); + + // 약관 동의 + WebElement agreeAll = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("agree_all"))); + scrollIntoView(agreeAll); + checkCheckbox(By.id("agree_all")); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 사업자 등록번호 + slowSendKeys(By.id("compRegNo1"), "527"); + slowSendKeys(By.id("compRegNo2"), "88"); + slowSendKeys(By.id("compRegNo3"), "00686"); + handleAlert(); + Thread.sleep(3000); + + // 법인 등록번호 + slowSendKeys(By.id("corpRegNo1"), "131111"); + slowSendKeys(By.id("corpRegNo2"), "0478337"); + handleAlert(); + Thread.sleep(3000); + // 기관명 + slowSendKeys(By.id("orgName"), "카카오페이"); + + // 대표자 성명 + slowSendKeys(By.id("ceoName"), "신원근"); + + // 사업장 소재지 주소 + WebElement field = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("orgAddr"))); + scrollIntoView(field); + + slowSendKeys(By.id("orgAddr"), "경기도 성남시 분당구 판교역로 166, 비동 15층(백현동)"); + + // 업태 + slowSendKeys(By.id("orgSectors"), "금융 지원 서비스업"); + + // 종목 + slowSendKeys(By.id("orgIndustryType"), "전자상거래 소매업"); + + // 회사 전화번호 + closeDropdownIfOpen("orgAreaCode"); + selectCustomOption("orgAreaCode", "없음"); + slowSendKeys(By.id("orgPhoneNumber1"), "1644"); + slowSendKeys(By.id("orgPhoneNumber2"), "7405"); + + // 서비스명 + slowSendKeys(By.id("serviceName"), "카카오페이"); + + // 고객센터 전화번호 + selectCustomOption("scAreaCode", "없음"); + slowSendKeys(By.id("scPhoneNumber1"), "1644"); + slowSendKeys(By.id("scPhoneNumber2"), "7405"); + + // 여기에 파일 업로드 로직 추가 (사업자 등록증) + uploadFile("files", BUSINESS_LICENSE_FILE); + + // 기본 관리자 정보 + fillField("userId", generateUserId()); + fillField("domain", "kakao.com"); + WebElement checkEmailButton = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".btn_check .btn_check_email"))); + clickButtonSafely(checkEmailButton, "이메일 중복체크"); + handleAlert(); + Thread.sleep(INPUT_DELAY_MILLIS); + + slowSendKeys(By.id("userName"), "홍길동"); + + // 휴대폰 번호 + selectCustomOption("phoneMobile", "010"); + slowSendKeys(By.id("cellPhone1"), "1234"); + slowSendKeys(By.id("cellPhone2"), "1644"); + + verifyPhoneNumber(); + + slowSendKeys(By.id("password"), "bravo135!"); + Thread.sleep(INPUT_DELAY_MILLIS); //추가 대기 시간 + + slowSendKeys(By.id("password2"), "bravo135!"); + Thread.sleep(INPUT_DELAY_MILLIS); //추가 대기 시간 + + triggerBlurEvent(By.id("password2")); + + Thread.sleep(INPUT_DELAY_MILLIS); //추가 대기 시간 + + // 가입신청 버튼 클릭 + WebElement submitButton2 = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".btn_register"))); + submitButton2.click(); // 주석 처리하여 실제 제출은 하지 않습니다 + + Thread.sleep(10000); + } + + private void fillFieldAndHandleAlert(String fieldName, String value) throws InterruptedException { + WebElement field = wait.until(ExpectedConditions.presenceOfElementLocated(By.id(fieldName))); + field.clear(); + field.sendKeys(value); + Thread.sleep(INPUT_DELAY_MILLIS); + handleAlert(); + } + + + private void verifyPhoneNumber() throws InterruptedException { + + // 인증번호 받기 버튼 찾기 (여러 방법 시도) + WebElement getAuthButton = null; + try { + getAuthButton = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector(".btn_check .common_btn_type_2.cbt.btn_auth"))); + } catch (TimeoutException e) { + try { + getAuthButton = wait.until(ExpectedConditions.elementToBeClickable( + By.xpath("//a[contains(@class, 'btn_auth') and .//span[text()='인증번호 받기']]"))); + } catch (TimeoutException e2) { + getAuthButton = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("[hx-post*='/request_register_auth.do']"))); + } + } + + if (getAuthButton == null) { + throw new NoSuchElementException("인증번호 받기 버튼을 찾을 수 없습니다."); + } + + // 버튼 클릭 + clickButtonSafely(getAuthButton, "인증번호 받기"); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 알림창 처리 + handleAlert(); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 인증번호 입력 컨테이너가 나타날 때까지 대기 + WebElement authNumberContainer = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("authNumberContainer"))); + + // 인증번호 입력 + slowSendKeys(By.id("authNumber"), "123456"); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 인증번호 확인 버튼 클릭 + WebElement verifyButton = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector(".btn_verify_auth"))); + clickButtonSafely(verifyButton, "인증번호 확인"); + Thread.sleep(INPUT_DELAY_MILLIS); + + // 추가적인 알림창이 있다면 처리 + handleAlert(); + } + + + private void fillSplitFieldByName(String fieldName, String[] values) throws InterruptedException { + for (int i = 0; i < values.length; i++) { + WebElement field = wait.until(ExpectedConditions.presenceOfElementLocated(By.name(fieldName + (i + 1)))); + field.clear(); + field.sendKeys(values[i]); + Thread.sleep(INPUT_DELAY_MILLIS); + } + } + + + private void fillField(String fieldName, String value) throws InterruptedException { + WebElement field = wait.until(ExpectedConditions.presenceOfElementLocated(By.id(fieldName))); + field.clear(); + field.sendKeys(value); + Thread.sleep(INPUT_DELAY_MILLIS); + } + + private void selectCustomOption(String selectId, String optionValue) throws InterruptedException { + try { + // Wait for and click the select_selected div to open dropdown + WebElement selectSelected = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("#" + selectId + " .select_selected"))); + + // Wait for and verify the element doesn't have 'active' class before clicking + wait.until(ExpectedConditions.not( + ExpectedConditions.attributeContains(selectSelected, "class", "active"))); + + actions.moveToElement(selectSelected).click().perform(); + + // Wait for the dropdown to become visible by checking both conditions: + // 1. select_selected should have 'active' class + // 2. common_selecttype should not have 'select_hide' class + wait.until(ExpectedConditions.attributeContains(selectSelected, "class", "active")); + wait.until(ExpectedConditions.presenceOfElementLocated( + By.cssSelector("#" + selectId + " .common_selecttype:not(.select_hide)"))); + + // Find and click the option + WebElement option = wait.until(ExpectedConditions.elementToBeClickable( + By.cssSelector("#" + selectId + " .common_selecttype li"))); + actions.moveToElement(option).click().perform(); + + // After clicking, verify: + // 1. The dropdown is hidden again (select_hide class is present) + // 2. select_selected no longer has active class + // 3. The selected text is updated + wait.until(ExpectedConditions.presenceOfElementLocated( + By.cssSelector("#" + selectId + " .common_selecttype.select_hide"))); + wait.until(ExpectedConditions.not( + ExpectedConditions.attributeContains(selectSelected, "class", "active"))); + wait.until(ExpectedConditions.textToBe( + By.cssSelector("#" + selectId + " .select_selected"), optionValue)); + + Thread.sleep(INPUT_DELAY_MILLIS); + } catch (TimeoutException e) { + throw new RuntimeException("Failed to select option '" + optionValue + + "' from custom select '" + selectId + "'", e); + } + } + + // Utility method to check if dropdown is open + private boolean isDropdownOpen(String selectId) { + try { + WebElement selectSelected = driver.findElement(By.cssSelector("#" + selectId + " .select_selected")); + WebElement selectItems = driver.findElement(By.cssSelector("#" + selectId + " .common_selecttype")); + + return selectSelected.getAttribute("class").contains("active") && + !selectItems.getAttribute("class").contains("select_hide"); + } catch (Exception e) { + return false; + } + } + + // Utility method to get currently selected value + private String getSelectedValue(String selectId) { + return driver.findElement(By.cssSelector("#" + selectId + " .select_selected")) + .getText(); + } + + // Utility method to close dropdown if open + private void closeDropdownIfOpen(String selectId) { + if (isDropdownOpen(selectId)) { + actions.click(driver.findElement(By.cssSelector("body"))).perform(); + wait.until(ExpectedConditions.presenceOfElementLocated( + By.cssSelector("#" + selectId + " .common_selecttype.select_hide"))); + } + } + + + private String generateUserId() { + int currentId = readUserIdFromFile(); + int newId = currentId + 1; + writeUserIdToFile(newId); + return String.format("user%03d", newId); + } + + private int readUserIdFromFile() { + try (BufferedReader reader = new BufferedReader(new FileReader(USER_ID_FILE))) { + String line = reader.readLine(); + return line != null ? Integer.parseInt(line.trim()) : 0; + } catch (IOException e) { + System.out.println("파일을 읽는 중 오류가 발생했습니다. 새로운 ID를 1부터 시작합니다."); + return 0; + } + } + + private void writeUserIdToFile(int id) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(USER_ID_FILE))) { + writer.write(String.valueOf(id)); + } catch (IOException e) { + System.out.println("파일에 ID를 쓰는 중 오류가 발생했습니다."); + } + } +} diff --git a/src/test/java/com/eactive/apim/portal/apps/user/PortalUserRegisterFieldTest.java b/src/test/java/com/eactive/apim/portal/apps/user/PortalUserRegisterFieldTest.java new file mode 100644 index 0000000..dd20fdc --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/user/PortalUserRegisterFieldTest.java @@ -0,0 +1,49 @@ +package com.eactive.apim.portal.apps.user; + + +import com.eactive.apim.portal.apps.DTOFieldUtils; +import com.eactive.apim.portal.apps.user.dto.PortalUserRegistrationDTO; +import io.github.bonigarcia.wdm.WebDriverManager; +import java.util.List; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class PortalUserRegisterFieldTest extends BaseWebTest{ + + + + @BeforeAll + public void setupClass() { + WebDriverManager.chromedriver().setup(); + } + + @AfterEach + public void teardown() { + if (driver != null) { + driver.quit(); + } + } + + @Test + public void testForm() { + + String pageUrl = HOST_URL + "/signup/portalUser"; + Class dtoClass = PortalUserRegistrationDTO.class; + driver.get(pageUrl); + + List expectedFields = DTOFieldUtils.getFieldNames(dtoClass); + + for (String fieldName : expectedFields) { + List elements = driver.findElements(By.name(fieldName)); + assertTrue(elements.size() > 0, "Field '" + fieldName + "' is missing on the page"); + } + } + +} diff --git a/src/test/java/com/eactive/apim/portal/apps/user/SignupFileTest.java b/src/test/java/com/eactive/apim/portal/apps/user/SignupFileTest.java new file mode 100644 index 0000000..8813ea4 --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/user/SignupFileTest.java @@ -0,0 +1,84 @@ +package com.eactive.apim.portal.apps.user; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import com.eactive.apim.portal.PortalApplication; +import java.util.Objects; +import javax.servlet.http.Cookie; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.web.servlet.MockMvc; + +@SuppressWarnings("all") +@SpringBootTest(classes = PortalApplication.class) +@ActiveProfiles({"dev", "unittest"}) +@AutoConfigureMockMvc +class SignupFileTest { + + @Autowired + MockMvc mockMvc; + + @Test + void test() { + + try { + + byte[] fileContent = "test file content".getBytes(); + MockMultipartFile mockFile = new MockMultipartFile("files", "test.txt", "text/plain", fileContent); + + String csrfToken = Objects.requireNonNull(mockMvc.perform(get("/login")) + .andExpect(status().isOk()) + .andReturn().getResponse().getCookie("XSRF-TOKEN")).getValue(); + + MockHttpSession session = new MockHttpSession(); +// loginCsrf("hyunsp@gmail.com", "vhxkf123", session, csrfToken); + + // Call the endpoint and get the response + mockMvc.perform( + multipart("/signup/portalOrg") + .file(mockFile) + .param("termsOfUse", "on") + .param("privacyPolicy", "on") +// .param("nttSj", "Article File Test") +// .param("contents", "

wefwef

fwefwef

wefwef


") + .session(session) + .header("X-XSRF-TOKEN", csrfToken) + .cookie(new Cookie("XSRF-TOKEN", csrfToken)) + ) + .andExpect(status().is2xxSuccessful()); +// .andReturn(); + + // Verify the response +// String response = result.getResponse().getContentAsString(); +// assertEquals("File uploaded successfully", response); + + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + + +// MockHttpServletResponse loginCsrf(String username, String password, MockHttpSession session, String csrfToken) throws Exception { +// +// ResultActions result = mockMvc.perform(post("/actionLogin.do") +// .session(session) +// .param("id", username) +// .param("password", password) +// .header("X-XSRF-TOKEN", csrfToken) +// .cookie(new Cookie("XSRF-TOKEN", csrfToken))) +// .andExpect(status().is3xxRedirection()); +// +// return result.andReturn().getResponse(); +// +// } +} diff --git a/src/test/java/com/eactive/apim/portal/apps/user/SignupPageTest.java b/src/test/java/com/eactive/apim/portal/apps/user/SignupPageTest.java new file mode 100644 index 0000000..3136e9e --- /dev/null +++ b/src/test/java/com/eactive/apim/portal/apps/user/SignupPageTest.java @@ -0,0 +1,79 @@ +package com.eactive.apim.portal.apps.user; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Stream; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; + +@SuppressWarnings("all") +class SignupPageTest extends BaseWebTest { + + private final String USER_ID_FILE = "user_id_counter.txt"; + + @TestFactory + Stream testSignupScenarios() throws IOException { + Path csvPath = Paths.get("src", "test", "resources", "signup_test_cases.csv"); + return Files.lines(csvPath) + .skip(1) + .filter(s -> !s.startsWith("#"))// Skip header + .map(line -> line.split(",")) + .map(data -> DynamicTest.dynamicTest("Test: " + data[0], () -> { + runTest(data[1], data[2], data[3], data[4], data[5], data[6], data[7]); + })); + } + + private void runTest(String email, String phone, String verificationCode, + String name, String password, String confirmPassword, String expectedResult) throws InterruptedException { + navigateTo("http://devportal.elink365.net/join.do"); + Thread.sleep(1000); + + WebElement allCheckbox = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("all"))); + scrollIntoView(allCheckbox); + checkCheckbox(By.id("all")); + Thread.sleep(1000); + + WebElement registerButton = wait.until(ExpectedConditions.presenceOfElementLocated(By.className("btn_register"))); + scrollIntoView(registerButton); + slowClick(By.className("btn_register")); + Thread.sleep(3000); + + slowSendKeys(By.id("userId"), email); + slowSendKeys(By.id("cellPhone"), phone); + slowClick(By.className("btn_auth")); + + handleAlert(); + + slowSendKeys(By.id("authNumber"), verificationCode); + slowSendKeys(By.id("username"), name); + slowSendKeys(By.id("password"), password); + slowSendKeys(By.id("password2"), confirmPassword); + + Thread.sleep(1000); + + boolean isButtonEnabled = !isButtonDisabled(By.className("btn_register")); + + if (isButtonEnabled) { + slowClick(By.className("btn_register")); + + if ("회원 등록 완료".equals(expectedResult)) { + assertUrlContains("/user_register.do"); + assertElementText(By.xpath("//h3[contains(text(), '회원 등록 완료')]"), "회원 등록 완료"); + } else { + String result = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("validationUsernameInvalidFeedback"))).getText(); + Assertions.assertTrue(result.contains(expectedResult), + "Expected result '" + expectedResult + "' not found in actual result: " + result); + } + } else { + if ("Button Disabled".equals(expectedResult)) { + Assertions.assertFalse(isButtonEnabled, "Form is invalid as expected and the button is disabled"); + } + } + } +} diff --git a/src/test/resources/signup_test_cases.csv b/src/test/resources/signup_test_cases.csv new file mode 100644 index 0000000..afbe686 --- /dev/null +++ b/src/test/resources/signup_test_cases.csv @@ -0,0 +1,16 @@ +점검항목,이메일,휴대전화,인증번호,신청자명,비밀번호,비밀번호확인,예상결과 +이메일 형식 확인,invalid_email,01012345678,123456,홍길동,Strong@Password1,Strong@Password1,Button Disabled +이메일 중복 체크,hyunsp@gmail.com,01012345678,123456,홍길동,Strong@Password1,Strong@Password1,Button Disabled +휴대전화 형식 확인,test_user2@example.com,0101234567,123456,홍길동,Strong@Password1,Strong@Password1,Button Disabled +#휴대전화 중복 체크,test_user3@example.com,01012345678,123456,홍길동,Strong@Password1,Strong@Password1,Button Disabled +인증번호 유효성,test_user4@example.com,01012345678,12345,홍길동,Strong@Password1,Strong@Password1,Button Disabled +신청자명 유효성,test_user5@example.com,01012345678,123456,홍길동!@#,Strong@Password1,Strong@Password1,Button Disabled +비밀번호 복잡도,test_user6@example.com,01012345678,123456,홍길동,weak,weak,Button Disabled +비밀번호 확인 일치,test_user7@example.com,01012345678,123456,홍길동,Strong@Password1,DifferentPassword,Button Disabled +필수 필드 - 이메일,,01012345678,123456,홍길동,Strong@Password1,Strong@Password1,Button Disabled +#필수 필드 - 휴대전화,test_user8@example.com,,123456,홍길동,Strong@Password1,Strong@Password1,Button Disabled +필수 필드 - 인증번호,test_user9@example.com,01012345678,,홍길동,Strong@Password1,Strong@Password1,Button Disabled +#필수 필드 - 신청자명,test_user10@example.com,01012345678,123456,,Strong@Password1,Strong@Password1,Button Disabled +필수 필드 - 비밀번호,test_user11@example.com,01012345678,123456,홍길동,,Strong@Password1,Button Disabled +필수 필드 - 비밀번호 확인,test_user12@example.com,01012345678,123456,홍길동,Strong@Password1,,Button Disabled +#유효한 데이터 - 정상 가입,valid_user@example.com,01087654321,123456,김철수,Secure135!@#,Secure135!@#,회원 등록 완료 diff --git a/src/test/resources/test-files/business-license.pptx b/src/test/resources/test-files/business-license.pptx new file mode 100644 index 0000000..7b730ed Binary files /dev/null and b/src/test/resources/test-files/business-license.pptx differ diff --git a/src/test/resources/test1.csv b/src/test/resources/test1.csv new file mode 100644 index 0000000..a146f00 --- /dev/null +++ b/src/test/resources/test1.csv @@ -0,0 +1,2 @@ +점검항목,이메일,휴대전화,인증번호,신청자명,비밀번호,비밀번호확인,예상결과 +이메일 형식 확인,invalid_email,01012345678,123456,홍길동,Strong@Password1,Strong@Password1,Button Disabled diff --git a/개발자포탈.md b/개발자포탈.md new file mode 100644 index 0000000..41c3c11 --- /dev/null +++ b/개발자포탈.md @@ -0,0 +1,1206 @@ +# 개발자 포탈 사용 가이드 + +## 설치 후 작업 + +1. 개요 + +개발자 포탈 최초 설치 후, 최초 관리자를 등록 +한다. + +2. 화면 캡쳐 + +![최초 ADMIN 등록](docs%2Fimages%2Fadmin_register_view.png) + +3. 화면 소개 + +최초 설치 후 관리자 정보를 등록한다. (최초 1회만 등록 가능) + +4. 화면 요소 + +- 입력 항목 + - 이메일 주소 : 로그인 시 사용 + - 비밀번호 + - 비밀번호 확인 : 입력한 비밀번호와 동일 + - 이름 + - 휴대폰 번호 +- 저장 버튼 : 입력한 관리자 정보를 저장한다. + +5. 작업 가이드 + +- 신규 관리자 등록: http://서버/admin_register_view.do 에 접속하여 신규 관리자 정보를 등록한다. + +6. 문제 해결 + admin_register_view.do 페이지가 열리지 않는 경우 이미 사용자가 등록되어 있는지 확인한다. + +## 사용자 관리 + +1. 개요 + +- 내부 사용자 정보와 기업 사용자 정보를 관리한다. +- 기업 사용자 회원 가입을 위한 약관을 관리한다. +- 기업 사용자 회원 가입 기능을 제공한다. + +2. 구성 요소 + +- 내부 사용자 관리 +- 기업 사용자 관리 +- 기업 사용자 회원 가입 +- 약관 관리 + +### 내부 사용자 관리 + +1. 개요 + 포탈 운영을 위한 내부 사용자 정보를 관리한다. + +2. 구성 요소 + +- 내부 사용자 목록 +- 내부 사용자 등록 +- 내부 사용자 수정 + +#### 내부 사용자 목록 + +1. 개요 + +포탈에 등록된 내부 사용자 목록을 조회한다. + +2. 화면 캡쳐 + +![내부사용자 목록](docs%2Fimages%2Fstaff_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 내부 사용자 목록을 조회한다. +- 내부 사용자 목록은 페이징 처리되어 있다. +- 내부 사용자 정보 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 내부 사용자 목록을 조회한다. + - 삭제 버튼 : 선택된 사용자를 삭제한다. + - 등록 버튼 : 새로운 내부 사용자 등록화면으로 이동한다. +- 사용자 목록 + - ID + - 이름 + - 상태 + - 수정 버튼 : 선택된 사용자 수정화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : 사용자 관리 > 내부 사용자 관리를 클릭한다. +- 등록된 사용자 조회: 검색 조건 입력 후 조회 버튼을 클릭하여 사용자 목록을 조회한다. +- 신규 사용자 등록 : 등록 버튼을 클릭하여 신규 사용자를 등록한다. +- 기존 사용자 정보 수정 : 사용자 목록에서 수정 버튼을 클릭하여 기존 사용자 정보를 수정한다. +- 사용자 삭제 : 삭제할 사용자의 체크박스를 선택하고 삭제 버튼을 클릭하여 사용자를 삭제한다. + +#### 내부 사용자 등록 + +1. 개요 + +포탈에 새로운 내부 사용자를 등록한다. + +2. 화면 캡쳐 + ![내부 사용자 등록](docs%2Fimages%2Fstaff_user_register.png) + +3. 화면 소개 + +- 사용자의 기본 정보 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이메일 주소 : 로그인 시 사용 + - 비밀번호 + - 비밀번호 확인 : 입력한 비밀번호와 동일 + - 이름 + - 휴대폰 번호 +- 저장 버튼 : 입력한 사용자 정보를 저장한다. +- 목록 버튼 : 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 내부 사용자 목록 화면에서 등록 버튼을 클릭한다. +- 사용자 등록: 정보 입력 후 저장 버튼을 클릭하여 사용자를 등록한다. +- 등록 취소: 목록 버튼을 클릭하여 사용자 목록 화면으로 이동한다. + +#### 내부 사용자 수정 + +1. 개요 + +포탈에 등록된 내부 사용자 정보를 수정한다. + +2. 화면 캡쳐 + +![내부 사용자 수정](docs%2Fimages%2Fstaff_user_edit.png) + +3. 화면 소개 + +- 선택한 내부 사용자의 입력 정보 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 고유ID: 수정 불가 + - 이메일 주소 : 수정 불가 + - 이름 + - 휴대폰 번호 + - 사용자 상태 : 가입승인대기, 활성화, 비활성화, 잠김 + - 비밀번호 잠김: 잠금/해제 + - 잠금 횟수 : 로그인 시 비밀번호 오류 횟수 + - 가입일자 + - 잠금최종시점 : 잠금횟수 초과로 로그인이 잠긴 일자 + - 비밀번호변경일자 +- 저장 버튼 : 변경된 사용자 정보를 저장한다. +- 목록 버튼 : 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 내부 사용자 목록에서 원하는 사용자의 수정버튼을 클릭한다. +- 사용자 정보 변경 : 이름, 휴대폰 번호를 변경 후 저장한다. +- 사용자 상태 변경: 사용자 상태를 변경후 저장한다. +- 비밀번호 잠금 해제 : 비밀번호 잠금을 해제로 변경 후 저장한다. + +### 기업 사용자 관리 + +1. 개요 + +포탈 서비스를 사용하기 위한 외부 기업 고객의 사용자 정보를 관리한다. + +2. 구성 요소 + +- 기업 사용자 목록 +- 기업 사용자 등록 +- 기업 사용자 수정 + +#### 기업 사용자 목록 + +1. 개요 + +포탈에 등록된 기업 사용자 목록을 조회한다. + +2. 화면 캡쳐 + +![기업 사용자 목록](docs%2Fimages%2Fent_user_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 기업 사용자 목록을 조회한다. +- 기업 사용자 목록은 페이징 처리되어 있다. +- 기업 사용자 정보 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 내부 사용자 목록을 조회한다. + - 삭제 버튼 : 선택된 사용자를 삭제한다. + - 등록 버튼 : 새로운 내부 사용자를 등록한다. +- 사용자 목록 + - ID + - 회사명 + - 이름 + - 상태 + - 수정 버튼 : 선택된 사용자 수정화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 사용자 관리 > 기업 사용자 관리를 클릭한다. +- 등록된 사용자 조회: 검색 조건 입력 후 조회 버튼을 클릭하여 기업 사용자 목록을 조회한다. +- 신규 사용자 등록 : 등록 버튼을 클릭하여 신규 기업 사용자를 등록한다. +- 기존 사용자 정보 수정 : 기업 사용자 목록에서 수정 버튼을 클릭하여 기존 사용자 정보를 수정한다. +- 사용자 삭제 : 삭제할 기업 사용자의 체크박스를 선택하고 삭제 버튼을 클릭하여 기업 사용자를 삭제한다. + +#### 기업 사용자 등록 + +1. 개요 + +포탈에 새로운 기업 사용자를 등록한다. + +2. 화면 캡쳐 + ![기업 사용자 등록](docs%2Fimages%2Fent_user_register.png) + +3. 화면 소개 + +- 기업 사용자의 기본 정보 등록 폼과 기업 정보 등록폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 (개인정보) + - 이메일 주소 : 로그인 시 사용 + - 비밀번호 + - 비밀번호 확인 : 입력한 비밀번호와 동일 + - 이름 + - 휴대폰 번호 +- 입력 항목 (기업정보) + - 회사명 + - 대표자명 + - 사업자 등록번호 + - 법인등록번호 + - 업종코드 + - 우편번호 + - 주소 + - 상세주소 + - 사무실 전화번호 + - 팩스번호 +- 저장 버튼 : 입력한 정보를 저장한다. +- 목록 버튼 : 기업 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 기업 사용자 목록 화면에서 등록 버튼을 클릭한다. +- 기업 사용자 등록: 정보 입력 후 저장 버튼을 클릭하여 기업 사용자를 등록한다. +- 등록 취소: 목록 버튼을 클릭하여 기업 사용자 등록을 취소한다. + +#### 기업 사용자 수정 + +1. 개요 + +포탈에 등록된 기업 사용자 정보를 수정한다. + +2. 화면 캡쳐 + +![기업 사용자 수정](docs%2Fimages%2Fent_user_edit.png) + +3. 화면 소개 + +- 기업 사용자의 기본 정보 수정 폼과 기업 정보 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 (개인정보) + - 고유ID: 수정 불가 + - 이메일 주소 : 수정 불가 + - 이름 + - 휴대폰 번호 + - 사용자 상태 : 가입승인대기, 활성화, 비활성화, 잠김 + - 비밀번호 잠김: 잠금/해제 + - 잠금 횟수 : 로그인 시 비밀번호 오류 횟수 + - 가입일자 + - 잠금최종시점 : 잠금횟수 초과로 로그인이 잠긴 일자 + - 비밀번호변경일자 +- 입력항목 (기업정보) + - 회사명 + - 대표자명 + - 사업자 등록번호 + - 법인등록번호 + - 업종코드 + - 우편번호 + - 주소 + - 상세주소 + - 사무실 전화번호 + - 팩스번호 +- 저장 버튼 : 변경된 기업 사용자 정보를 저장한다. +- 목록 버튼 : 기업 사용자 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 기업 사용자 목록 화면에서 원하는 사용자의 수정 버튼을 클릭한다. +- 기업 사용자 정보 변경: 입력항목을 변경 후 저장한다. +- 기업 사용자 상태 변경: 기업 사용자 상태를 변경후 저장한다. +- 비밀번호 잠금 해제 : 비밀번호 잠금을 해제로 변경 후 저장한다. +- 등록 취소 : 목록 버튼을 클릭하여 기업 사용자 수정을 취소한다. + +### 기업 사용자 회원 가입 + +1. 개요 + +기업 사용자가 회원 가입 후 관리자 승인을 받아 포탈을 사용한다. + +2. 화면 캡쳐 + +![약관동의](docs%2Fimages%2Fuser_agreement.png) + +![회원가입](docs%2Fimages%2Fuser_register.png) + +3. 화면 소개 + +- 약관 동의 : 회원 가입을 위한 약관과 동의 체크 박스를 표시한다. +- 회원 가입 : 기업 사용자 입력 폼을 표시한다. + +4. 화면 요소 + +- 이용약관 + - 입력 항목 + - 이용약관 동의 + - 개인 정보 수집 및 이용 동의 + - 전체 동의: 표시된 모등 약관에 동의한다. + - 등록 버튼: 회원 가입 화면으로 이동한다. + +- 회원 가입 + - 입력 항목 + - 이메일 주소 + - 인증 번호 + - 신청자 명 + - 비밀 번호 + - 비밀 번호 확인 + - 인증번호 발송 버튼: 입력한 이메일 주소로 인증 번호를 발송한다. + - 등록 버튼: 입력한 사용자 정보를 등록한다. + +5. 작업 가이드 + +- 메뉴 접근: 로그인 화면에서 회원 가입을 클릭한다. +- 약관 동의: 약관을 읽고 동의에 체크 후 등록 버튼을 클릭하여 회원 가입 화면으로 이동한다. +- 회원 등록: 기업 사용자 정보 및 전송된 인증번호를 입력 후 등록 버튼을 클릭한다. 정상적으로 등록 시 완료화면이 표시된다. + +6. 문제 해결 + +- 회원 가입 시 약관을 표시하기 위해서는 [약관관리](#약관-관리)에 필요한 약관을 등록해야 한다. +- 약관 동의: 회원 가입을 위한 약관에 동의하지 않으면 회원 가입 등록화면으로 이동하지 않는다. +- 인증 번호 오류: 발송된 인증번호와 일치하지 않으면 정상적으로 등록이 불가능하다. +- 인증번호 발송 오류 : 메일 발송 시스템과 연계 오류시 사용이 불가능하다. +- 사용자 상태 오류 : 사용자 승인 전까지는 로그인이 불가능하다. + +### 약관 관리 + +1. 개요 + +- 포탈 운영을 위한 약관을 관리한다. +- 관리 약관의 종류는 서비스 이용약관, 개인정보 처리방침, 정보 제공 동의 , 마케팅 정보 수신동의 등이 있다. +- 등록된 약관은 상태로 관리되며, 발행 상태의 약관이 회원 가입시 표시된다. 최초 등록시 신규(TEMP)상태로 저장되며, 변경시 임시저장(DRAFT)로 관리된다. +- 임시저장 상태에서 발행을 하면 발행 (PUBLISHED)상태로 변경되며, 기존 발행(PUBLISHED) 상태의 약관은 보관 (ARCHIVED) 상태로 변경된다. + +2. 화면 캡쳐 + +![약관관리](docs%2Fimages%2Fagreements.png) + +3. 화면 소개 + +- 좌측에 사용가능한 약관 목록이 표시한다. +- 약관을 선택하면 해당 약관의 정보가 표시한다. + +4. 화면 요소 + +- 약관 목록: 선택 하면 우측에 약관 정보를 표시한다. +- 입력 항목 + - 제목 + - 버전: 자동 생성 + - 약관 내용: 에디터를 사용하여 약관 작성 + - 발행 일자: 자동 생성 (발행 시) + - 상태: TEMP, DRAFT, PUBLISHED, ARCHIVED 자동 생성 +- 신규 버튼: 새로운 버전의 약관을 생성한다. +- 저장 버튼: 편집한 약관을 저장한다. +- 삭제 버튼: 현재 표시되는 약관을 삭제한다. +- 발행 버튼: 현재 표시되는 약관을 발행한다. +- 버전 목록: 선택하면 해당 버전의 약관 내용이 표시된다. + +5. 작업 가이드 + +- 메뉴 접근: 시스템 관리 > 약관 관리를 클릭한다. +- 약관 신규 등록: 신규 버튼을 클릭하여 약관을 등록 후 저장한다. +- 약관 내용 수정: 원하는 버전의 약관을 클릭 후 내용 수정 후 저장한다. +- 약관 발행: 원하는 버전의 약관을 클릭후 발행 버튼을 클릭한다. +- 약관 삭제: 원하는 버전의 약관을 클릭 후 삭제 버튼을 클릭한다. + +6. 문제 해결 + +- 발행된 약관은 수정 삭제가 불가능 하므로, 수정이 필요하면 새로운 약관 발행해야 한다. + +## API 관리 + +1. 개요 + OPEN API 서비스를 위한 API 정보를 관리한다. + +2. 구성 요소 + +- API 관리 목록 +- API 등록 +- API 수정 + +### API 관리 목록 + +1. 개요 + +포탈에 등록된 API 목록을 조회한다. + +2. 화면 캡쳐 + +![API 목록](docs%2Fimages%2Fapi_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 API 목록을 조회한다. +- API 목록은 페이징 처리되어 있다. +- API 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 검색항목 : 이름, URL 중 선택 + - 검색어 : 검색 항목에 따라 입력 + - 조회 버튼 : 검색 조건에 따라 내부 API 목록을 조회한다. + - 삭제 버튼 : 선택된 API를 삭제한다. + - 등록 버튼 : 새로운 API 등록화면으로 이동한다. +- API 목록 + - ID : API ID + - 이름 : API 이름 + - URL : API URL + - 수정 버튼 : 선택된 API 수정화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: API관리 > API 관리를 클릭한다. +- 등록된 API 조회: 검색 조건 입력 후 조회 버튼을 클릭하여 API 목록을 조회한다. +- 신규 API 등록 : 등록 버튼을 클릭하여 신규 API를 등록한다. +- 기존 API 정보 수정 : API 목록에서 수정 버튼을 클릭하여 기존 API 정보를 수정한다. +- API 삭제 : 삭제할 API의 체크박스를 선택하고 삭제 버튼을 클릭하여 API를 삭제한다. + +### API 등록 + +1. 개요 + +포탈에 새로운 API를 등록한다. + +2. 화면 캡쳐 + +![API 등록](docs%2Fimages%2Fapi_mgmt_register.png) + +3. 화면 소개 + +- 신규 API 정보를 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름: 표시될 API 이름 + - method: POST, GET, PUT, DELETE 등 + - 도메인: 게이트웨이 호출 도메인 정보 (ex: http://localhost:8080) + - Path: 게이트웨이 호출 URL 정보 (ex: /api/v1/users) + - 설명: API에 대한 설명 (WYSIWYG 에디터 제공) + - API 스펙: swagger 형식의 json, editor로 작성 + - 첨부파일: 선택한 파일 첨부 + - 응답: json 응답 예제 +- 저장 버튼 : 입력한 API 정보를 저장한다. +- 목록 버튼 : API 목록 화면으로 이동한다. + + +5. 작업 가이드 + +- 메뉴 접근: API관리 화면에서 등록 버튼을 클릭한다. +- API 정보 등록 : API 정보를 입력 후 저장한다. +- API Swagger 작성: 표시된 샘플을 활용하여 API 스펙을 작성한다. +- 첨부 파일 등록: 첨부 파일 파일선택을 클릭하여 첨부할 파일을 선택 후 저장한다. +- 등록 취소: 목록 버튼을 클릭하여 API 목록 화면으로 이동한다. + +### API 수정 + +1. 개요 + +포탈에 등록된 API 정보를 수정한다. + +2. 화면 캡쳐 + +![API 수정](docs%2Fimages%2Fapi_mgmt_edit.png) + +3. 화면 소개 + +- 등록된 API 정보를 수정 폼을 제공한다. +- 등록된 첨부파일 목록을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름: 표시될 API 이름 + - method: POST, GET, PUT, DELETE 등 + - 도메인: 게이트웨이 호출 도메인 정보 (ex: http://localhost:8080) + - Path: 게이트웨이 호출 URL 정보 (ex: /api/v1/users) + - 설명: API에 대한 설명 (WYSIWYG 에디터 제공) + - API 스펙: swagger 형식의 json, editor로 작성 + - 첨부파일: 등록된 첨부 파일 목록 + - 응답: json 응답 예제 +- 저장 버튼 : 변경한 API 정보를 저장한다. +- 목록 버튼 : API 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: API관리 화면에서 원하는 API의 수정 버튼을 클릭한다. +- API 정보 변경: API 정보를 변경 후 저장한다. +- 첨부 파일 변경: 기존에 등록된 파일의 휴지통 버튼을 클릭하여 삭제 후, 새로운 첨부 파일을 선택 후 저장한다. +- 변경 취소 : 목록 버튼을 클릭하여 API 목록 화면으로 이동한다. + +## API 문서 + +1. 개요 + API 관리에서 등록한 API의 정보 및 Swagger UI를 제공한다. + +2. 구성 요소 + +- API 목록 +- API 상세 + +### API 목록 + +1. 개요 + API관리에서 등록한 API 를 목록 형태로 제공한다. + +2. 화면 캡쳐 + +![API 목록](docs%2Fimages%2Fapi_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 API 목록을 조회한다. +- API 목록은 페이징 처리되어 있다. + +4. 화면 요소 + +- 검색 조건 + - API이름 + - URL + - 검색 버튼 +- API 목록 + - API이름 + - URL + +5. 작업 가이드 + +- 메뉴 접근: 상단 API를 클릭한다. +- API 검색: API이름 또는 URL 을 입력 후 검색 버튼을 클릭한다. +- API 보기: API 목록에서 원하는 API 를 선택한다. + +### API 상세 + +1. 개요 + +OPEN API 서비스를 제공하기 위한 API 정보를 Swagger UI를 통해 제공한다. + +2. 화면 캡쳐 + +![API 기본 정보](docs%2Fimages%2Fapi_detail_1.png) +![Swagger UI](docs%2Fimages%2Fapi_detail_2.png) + +3. 화면 소개 + +- API 정보 탭과 DOCUMENT 탭으로 구성되어 있다. +- API 정보 탭을 선택하면 기본 정보 및 설명, 첨부파일 다운로드를 제공한다. +- DOCUMENT 탭을 선택하면 Swagger UI를 제공한다. + +4. 화면 요소 + +- API 기본 정보 탭 + - 기본 정보 + - 첨부 파일 목록 +- DOCUMENT 탭 + - Swagger UI +- 목록 버튼 + +5. 작업 가이드 + +- 메뉴 접근: API 목록에서 원하는 API 를 선택한다. +- 첨부 파일 다운로드 : 첨부 파일 목록에서 파일 이름을 클릭한다. +- API 테스트: Swagger UI에서 필요한 변수 입력 후 Try it out을 클릭한다. +- 목록 이동: 목록 버튼을 클릭하여 API 목록 화면으로 이동한다. + +## 커뮤니티 + +1. 개요 + +사용자 커뮤니케이션을 위한 게시판 및 FAQ 기능을 제공한다. + +2. 구성 요소 + +- 게시판 관리 +- FAQ 관리 + +### 게시판 관리 + +1. 개요 + +사용자 커뮤니케이션을 위한 게시판 관리 기능을 제공한다. + +2. 구성 요소 + +- 게시판 목록 +- 게시판 등록 +- 게시판 수정 +- 게시글 목록 +- 게시글 등록 +- 게시글 조회 +- 게시글 수정 + +#### 게시판 목록 + +1. 개요 + +포탈에 등록된 게시판 목록을 조회한다. + +2. 화면 캡쳐 + ![게시판 관리 목록](docs%2Fimages%2Fboard_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 내부 게시판 목록을 조회한다. +- 게시판 목록은 페이징 처리되어 있다. +- 게시판 정보 등록, 수정 및 삭제 기능을 제공한다. +- 게시판에 등록된 게시글 조회 화면으로 이동 가능하다. + +4. 화면 요소 + +- 검색 조건 + - 게시판 이름 + - 조회 버튼 : 검색 조건에 따라 게시판 목록을 조회한다. + - 삭제 버튼 : 선택한 게시판을 삭제한다. + - 등록 버튼 : 게시판 등록 화면으로 이동한다. +- 게시판 목록 + - ID + - 이름 + - 사용 여부 + - 수정 버튼 : 게시판 수정 화면으로 이동한다. + - 게시물 보기 버튼 : 게시글 목록 화면으로 이동한다. + + +5. 작업 가이드 + +- 메뉴 접근: 커뮤니티 관리 > 게시판 관리를 클릭한다. +- 등록된 게시판 조회 : 게시판 이름을 입력 후 조회 버튼을 클릭한다. +- 게시판 삭제 : 삭제할 게시판을 선택 후 삭제 버튼을 클릭한다. +- 신규 게시판 등록 : 등록 버튼을 클릭한다. +- 기존 게시판 수정 : 수정 버튼을 클릭한다. +- 등록된 게시물 보기 : 게시물 보기 버튼을 클릭한다. + +#### 게시판 등록 + +1. 개요 + +포탈에 게시판을 등록한다. + +2. 화면 캡쳐 + ![게시판 등록](docs%2Fimages%2Fboard_mgmt_register.png) + +3. 화면 소개 + +- 게시판 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 게시판 소개 + - 답장 가능 여부 + - 파일 첨부 가능 여부 + - 첨부 가능 파일 숫자 + - 사용 여부 + - 권한 설정 + +- 저장 버튼 : 입력한 게시판 정보를 저장한다. +- 목록 버튼 : 게시판 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 게시판 목록에서 등록 버튼을 클릭한다. +- 게시판 등록: 정보 입력 후 저장 버튼을 클릭한다. +- 게시판 권한 부여: 권한 별로 읽기, 쓰기, 수정, 삭제, Admin 권한의 체크박스를 선택 후 저장 버튼을 클릭한다. +- 등록 취소: 목록 버튼을 클릭한다. + +#### 게시판 수정 + +1. 개요 + +포탈에 등록된 게시판의 정보를 수정한다. + +2. 화면 캡쳐 + ![게시판 수정](docs%2Fimages%2Fboard_mgmt_edit.png) + +3. 화면 소개 + +- 게시판 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 게시판 소개 + - 답장 가능 여부 + - 파일 첨부 가능 여부 + - 첨부 가능 파일 숫자 + - 사용 여부 + - 권한 설정 + +- 저장 버튼 : 입력한 게시판 정보를 저장한다. +- 목록 버튼 : 게시판 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근: 게시판 목록에서 원하는 게시판의 수정 버튼을 클릭한다. +- 게시판 정보 수정: 정보 입력 후 저장 버튼을 클릭한다. +- 게시판 권한 부여: 권한 별로 읽기, 쓰기, 수정, 삭제, Admin 권한의 체크박스를 선택 후 저장 버튼을 클릭한다. +- 수정 취소: 목록 버튼을 클릭한다. + +#### 게시글 목록 + +1. 개요 + +게시판에 등록된 게시글을 관리한다. + +2. 화면 캡쳐 + ![게시글 목록](docs%2Fimages%2Farticle_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 게시글 목록을 조회한다. +- 게시글 목록은 페이징 처리되어 있다. +- 게시글 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 검색항목 : 제목, 내용 중 선택 + - 검색어 : 검색할 단어 입력 + - 검색 버튼: 검색 조건에 따라 게시글 목록을 조회한다. + - 삭제 버튼: 선택한 게시글을 삭제한다. + - 등록 버튼: 게시글 등록 화면으로 이동한다. +- 게시글 목록 + - 글 번호 + - 제목 + - 등록자 + - 등록일 + - 조회수 + +5. 작업 가이드 + +- 메뉴 접근 : 게시판 목록에서 원하는 게시판의 게시물 보기 버튼을 클릭한다. +- 게시글 검색 : 검색 조건을 선택 후 검색어를 입력하고 검색 버튼을 클릭한다. +- 게시글 등록 : 등록 버튼을 클릭한다. +- 게시물 삭제 : 삭제할 게시물을 선택 후 삭제 버튼을 클릭한다. + +#### 게시글 등록 + +1. 개요 + +게시판에 새로운 게시글을 등록한다. + +2. 화면 캡쳐 + ![게시글 등록](docs%2Fimages%2Farticle_mgmt_register.png) + +3. 화면 소개 + +- 게시글 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력항목 + - 작성자 (읽기 전용) + - 제목 + - 내용 + - 첨부 파일 +- 저장 버튼 : 입력한 게시글 정보를 저장한다. +- 목록 버튼 : 게시글 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : 게시글 목록에서 등록 버튼을 클릭한다. +- 새로운 게시글 등록 : 제목, 내용을 입력 후 저장 버튼을 클릭한다. +- 첨부 파일 등록 : 파일 선택을 클릭하여 파일을 선택 후 저장 버튼을 클릭한다. +- 등록 취소 : 목록 버튼을 클릭한다. + +#### 게시글 조회 + +1. 개요 + +게시글의 내용을 조회한다. + +2. 화면 캡쳐 + +![게시글 조회](docs%2Fimages%2Farticle_mgmt_view.png) + +3. 화면 소개 + +- 게시글의 내용을 조회한다. + +4. 화면 요소 + +- 조회 항목 + - 번호 + - 제목 + - 작성자 + - 작성일 + - 내용 +- 목록 버튼 : 게시글 목록 화면으로 이동한다. +- 답글 작성 : 답글 작성 화면으로 이동한다. +- 수정 버튼 : 게시글 수정 화면으로 이동한다. + +#### 게시글 수정 + +1. 개요 + +게시판에 등록된 게시글을 수정한다. + +2. 화면 캡쳐 + ![게시글 등록](docs%2Fimages%2Farticle_mgmt_edit.png) + +3. 화면 소개 + +- 게시글 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 작성자 (읽기 전용) + - 제목 + - 내용 (WYSIWYG 에디터) + - 첨부 파일 +- 저장 버튼 : 입력한 게시글 정보를 저장한다. +- 목록 버튼 : 게시글 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : 게시글 목록에서 원하는 게시글의 수정 버튼을 클릭한다. +- 게시글 수정 : 제목, 내용을 변경 후 저장 버튼을 클릭한다. +- 첨부 파일 변경: 기존에 등록된 파일의 휴지통 버튼을 클릭하여 삭제 후, 새로운 첨부 파일을 선택 후 저장한다. +- 수정 취소 : 목록 버튼을 클릭한다. + +### FAQ 관리 + +1. 개요 + +사용자 커뮤니케이션을 위한 FAQ 관리 기능을 제공한다. + +2. 구성 요소 + +- FAQ 목록 +- FAQ 등록 +- FAQ 수정 + +#### FAQ 목록 + +1. 개요 + +포탈에 등록된 FAQ 관리한다. + +2. 화면 캡쳐 + ![게시글 목록](docs%2Fimages%2Ffaq_mgmt_list.png) + +3. 화면 소개 + +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 FAQ 목록을 조회한다. +- FAQ 목록은 페이징 처리되어 있다. +- FAQ 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 검색 항목 : 제목, 내용 중 선택 + - 검색어 : 검색할 단어 입력 + - 조회 버튼: 검색 조건에 따라 FAQ 목록을 조회한다. + - 삭제 버튼: 선택한 FAQ를 삭제한다. + - 등록 버튼: FAQ 등록 화면으로 이동한다. +- FAQ 목록 + - 번호 + - 제목 + - 수정 + +5. 작업 가이드 + +- 메뉴 접근 : 커뮤니티 관리 > FAQ관리를 클릭한다. +- FAQ 검색 : 검색 조건을 선택 후 검색어를 입력하고 조회 버튼을 클릭한다. +- FAQ 등록 : 등록 버튼을 클릭한다. +- FAQ 삭제 : 삭제할 FAQ를 선택 후 삭제 버튼을 클릭한다. + +#### FAQ 등록 + +1. 개요 + +포탈에 새로운 FAQ를 등록한다. + +2. 화면 캡쳐 + ![FAQ 등록](docs%2Fimages%2Ffaq_mgmt_register.png) +3. 화면 소개 + +- FAQ 등록 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - FAQ 제목 + - 질문 내용 + - 답변 내용 (WYSIWYG 에디터 제공) +- 저장 버튼 : 입력한 FAQ 정보를 저장한다. +- 목록 버튼 : FAQ 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : FAQ 목록에서 등록 버튼을 클릭한다. +- FAQ 등록 : 제목, 질문 내용, 답변 내용을 입력 후 저장 버튼을 클릭한다. +- 등록 취소 : 목록 버튼을 클릭한다. + +#### FAQ 수정 + +1. 개요 + +포탈에 등록된 FAQ 내용을 수정한다. + +2. 화면 캡쳐 + ![FAQ 수정](docs%2Fimages%2Ffaq_mgmt_edit.png) +3. 화면 소개 + +- FAQ 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - FAQ 제목 + - 질문 내용 + - 답변 내용 (WYSIWYG 에디터 제공) +- 저장 버튼 : 수정된 FAQ 정보를 저장한다. +- 목록 버튼 : FAQ 목록 화면으로 이동한다. + +5. 작업 가이드 + +- 메뉴 접근 : FAQ 목록에서 선택할 FAQ의 수정 버튼을 클릭한다. +- FAQ 변경 : 제목, 질문 내용, 답변 내용을 변경 후 저장 버튼을 클릭한다. +- 변경 취소 : 목록 버튼을 클릭한다. + +## 메시지 템플릿 관리 + +1. 개요 + +포탈에서 발송하는 이메일 및 SMS 포맷을 관리할 수 있는 기능을 제공한다. +포탈에 등록된 이벤트 발생 시 해당 템플릿을 사용하여 이메일 및 SMS를 발송한다. + +2. 구성 요소 + +- 이메일 템플릿 관리 +- SMS 템플릿 관리 + +### 이메일 템플릿 관리 + +1. 개요 + +포탈에서 발송하는 이메일 포맷을 관리할 수 있는 기능을 제공한다. + +2. 화면 캡쳐 + ![이메일 템플릿 관리](docs%2Fimages%2Femail_template.png) + +3. 화면 소개 + +- 템플릿 목록 을 제공한다. +- 템플릿 상세 정보를 제공한다. + +4. 화면 요소 + +- 템플릿 목록 : 템플릿을 선택하면 선택한 템플릿의 정보가 우측에 표시된다. +- 템플릿 입력 항목: + - 제목 + - 활성화 체크박스 + - 내용 (WYSIWYG 에디터 제공) +- 저장 버튼 : 선택된 템플릿 정보를 저장한다. + +5. 작업 가이드 +- 메뉴 접근 : 시스템 관리 > 이메일 템플릿 관리를 클릭한다. +- 템플릿 등록 : 템플릿 목록에서 항목 선택 후 해당 템플릿의 내용을 입력 후 저장버튼을 클릭한다. 제목은 이메일 제목, 내용은 이메일로 발송된다. 제목, 내용에서 사용할 변수는 %변수명% 형태로 입력한다. +- 템플릿 미사용 : 템플릿 활성화 체크 박스를 해제 저장한다. +- 템플릿 사용 : 템플릿 활성화 체크 박스를 선택 후 저장한다. + + +### SMS 템플릿 관리 + +1. 개요 + 포탈에서 발송하는 SMS 포맷을 관리할 수 있는 기능을 제공한다. + +2. 화면 캡쳐 + ![이메일 템플릿 관리](docs%2Fimages%2Femail_template.png) + +3. 화면 소개 + +- 템플릿 목록을 제공한다. +- 템플릿 상세 정보를 제공한다. + +4. 화면 요소 + +- 템플릿 목록 : 템플릿을 선택하면 선택한 템플릿의 정보가 우측에 표시된다. +- 템플릿 입력 항목: + - 제목 + - 활성화 체크박스 + - 내용 (텍스트 형태로 입력) +- 저장 버튼 : 선택된 템플릿 정보를 저장한다. + +5. 작업 가이드 +- 메뉴 접근 : 시스템 관리 > SMS 템플릿 관리를 클릭한다. +- 템플릿 등록 : 템플릿 목록에서 항목 선택 후 해당 템플릿의 내용을 입력 후 저장버튼을 클릭한다. 내용만 SMS로 발송된다. +- 템플릿 미사용 : 템플릿 활성화 체크 박스를 해제 저장한다. +- 템플릿 사용 : 템플릿 활성화 체크 박스를 선택 후 저장한다. + + +## API 키 관리 + +1. 개요 + +OPEN API 서비스 사용을 위한 API 키를 관리한다. + +2. 구성 요소 + +- API 키 목록 +- API 키 등록 +- API 키 수정 + +### API 키 목록 + +1. 개요 + +기업사용자에게 발급된 API 키 목록을 조회할 수 있다. + +2. 화면 캡쳐 +![API 키 목록](docs%2Fimages%2Fapikey_mgmt_list.png) + +3. 화면 소개 +4. +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 API키 목록을 조회한다. +- API키 목록은 페이징 처리되어 있다. +- API키 등록, 수정 및 삭제 기능을 제공한다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 API키 목록을 조회한다. + - 삭제 버튼 : 선택된 API키를 삭제한다. + - 등록 버튼 : 새로운 API키를 등록한다. +- API 키 목록 + - 기관 + - 환경 + - 이름 + - 상태 + - 수정 버튼 : 선택된 API키 수정화면으로 이동한다. + +5. 작업 가이드 +- 메뉴 접근 : API관리 > API 키 관리를 클릭한다. +- 등록된 API키 조회 : 검색 조건 입력 후 API키 목록에서 조회 버튼을 클릭한다. +- 신규 API키 등록 : 등록 버튼을 클릭한다. +- API키 수정 : 수정 버튼을 클릭한다. +- API키 삭제 : 삭제할 API키의 체크박스를 선택하고 삭제 버튼을 클릭한다. + +### API 키 등록 + +1. 개요 + +포탈에 등록된 기업사용자에게 새로운 API 키를 발급한다. + +2. 화면 캡쳐 +![API 키 등록](docs%2Fimages%2Fapikey_mgmt_register.png) + +3. 화면 소개 +- API 키 등록폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 설명 + - 환경 (개발/운영) + - 소유자 + - Client ID (elink에서 발급된 Client ID) + - Client Secret (elink에서 발급된 Client Secret) +- 저장 버튼 : 입력한 정보를 저장한다. +- 목록 버튼 : API키 목록 화면으로 이동한다. + +5. 작업 가이드 +- 메뉴 접근 : API키 목록에서 등록 버튼을 클릭한다. +- 신규 API키 발급: eLink에서 API키 발급 후, 발급받은 정보를 API키 등록 화면에서 입력 후 저장한다. +- 등록 취소: 목록 버튼을 클릭하여 API키 등록을 취소한다. + +### API 키 수정 + +1. 개요 +포탈에 등록된 기업사용자에게 발급된 API 키 정보를 수정한다. + +2. 화면 캡쳐 +![API 키 수정](docs%2Fimages%2Fapikey_mgmt_edit.png) +3. 화면 소개 +- API 키 수정 폼을 제공한다. + +4. 화면 요소 + +- 입력 항목 + - 이름 + - 설명 + - 환경 (개발/운영) + - 소유자 (읽기 전용) + - Client ID (elink에서 발급된 Client ID) + - Client Secret (elink에서 발급된 Client Secret) +- 저장 버튼 : 입력한 정보를 저장한다. +- 목록 버튼 : API키 목록 화면으로 이동한다. + +5. 작업 가이드 +- 메뉴 접근 : API키 목록에서 원하는 API키의 수정 버튼을 클릭한다. +- API키 정보 변경: API키 정보를 수정 후 저장한다. +- 변경 취소: 목록 버튼을 클릭하여 API키 변경을 취소한다. + +## 승인 관리 + +1. 개요 + +- 외부 사용자 가입 승인 및 API키 사용을 위한 승인 기능을 제공한다. +- 기업 사용자가 회원 가입을 하면 승인 요청이 생성된다. +- 기업 사용자가 API 키 사용 요청을 하면 승인 요청이 생성된다. + +2. 구성 요소 + +- 승인 대기 +- 승인 이력 +- 승인 상세 + +### 승인 대기 + +1. 개요 + +사용자가 승인해야할 목록을 조회한다. + +2. 화면 캡쳐 +![승인 대기 목록](docs%2Fimages%2Fapproval_waiting.png) + +3. 화면 소개 +- 상단에 검색 조건과 검색 버튼이 있으며, 검색 조건에 따라 승인 대기 목록을 조회한다. +- 승인 대기 목록은 페이징 처리되어 있다. + +4. 화면 요소 + +- 검색 조건 + - 조회 버튼 : 검색 조건에 따라 승인 대기 목록을 조회한다. + +- 승인 대기 목록 + - 번호 + - 유형 (회원가입/사용자 API키) + - 제목 + - 요청 사용자 + - 요청 일자 + +5. 작업 가이드 + +- 메뉴 접근 : 승인 관리 > 승인 대기를 클릭한다. +- 승인 대기 조회 : 검색 조건을 입력 후 조회 버튼을 클릭한다. +- 승인 상세 조회 : 승인 대기 목록에서 원하는 승인 대기 항목을 클릭한다. + +### 승인 상세 + +1. 개요 + +사용자의 승인을 기다리는 내용을 조회한다. + +2. 화면 캡쳐 +![API키 승인상세](docs%2Fimages%2Fapproval_detail.png) +![사용자 승인상세](docs%2Fimages%2Fapproval_detail_user.png) + +3. 화면 소개 + +- 승인 내용 을 표시한다. +- 승인 /반려 버튼을 제공한다. + +4. 화면 요소 +- 승인 상세 내용 +- 목록 버튼 : 승인 대기 목록 화면으로 이동한다. +- 승인 버튼 : 승인한다. +- 반려 버튼 : 반려한다. + +5. 작업 가이드 +- 메뉴 접근: 승인 대기 목록에서 원하는 승인 대기 항목을 클릭한다. +- 승인: 승인 버튼을 클릭한다. +- 반려: 반려 버튼을 클릭한다. +- 취소: 목록 버튼을 클릭하여 승인 대기 화면으로 이동한다. + +## 준비사항 + +- 포탈 구축 시 의사 결정 및 준비 항목 + +1. 시스템 알림 및 인증 번호 발송을 위해 이메일 연동 필요 +2. 이메일, 발송 시스템 연계 방법 +3. 사용자 등록 후 사용자 승인 사용 여부 +4. API키 등록 / 변경시 승인 사용 여부 +5. 사용자 등록시 약관 및 개인정보 처리 방침 동의 여부 제공