diff --git a/build.gradle b/build.gradle index c0a5048..93aaf62 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'nl.astraeus' -version '0.0.7-SNAPSHOT' +version '0.0.8-SNAPSHOT' apply plugin: 'kotlin2js' apply plugin: 'idea' @@ -20,11 +20,11 @@ repositories { } ext { - kotlin_version = '1.1.51' + kotlin_version = '1.2.21' } buildscript { - ext.kotlin_version = '1.1.51' + ext.kotlin_version = '1.2.21' repositories { maven { url "http://nexus.astraeus.nl/nexus/content/groups/public" @@ -41,15 +41,6 @@ dependencies { compile 'org.jetbrains.kotlinx:kotlinx-html-js:0.6.4' } -compileKotlin2Js { - kotlinOptions.metaInfo = true - - compileKotlin2Js.kotlinOptions.sourceMap = true - compileKotlin2Js.kotlinOptions.outputFile = "${buildDir}/kotlinjs/komp.js" - compileKotlin2Js.kotlinOptions.suppressWarnings = true - compileKotlin2Js.kotlinOptions.verbose = true -} - uploadArchives { repositories { mavenDeployer { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 30d399d..a5fe1cb 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 24f7c83..be280be 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Sep 10 13:56:55 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-bin.zip diff --git a/gradlew b/gradlew index 91a7e26..cccdd3d 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,47 +6,6 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" @@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do fi done SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- +cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" -cd "$SAVED" >&- +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# 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 + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282..f955316 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@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= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@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= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/komp.iml b/komp.iml index c0d4c87..d5a90c6 100644 --- a/komp.iml +++ b/komp.iml @@ -1,28 +1,24 @@ - + - - + $MODULE_DIR$/build/classes/kotlin/test/komp_test.js + - - @@ -32,9 +28,7 @@ - - @@ -44,8 +38,8 @@ - + diff --git a/komp.ipr b/komp.ipr index 77ad56b..7bac7c7 100644 --- a/komp.ipr +++ b/komp.ipr @@ -1,5 +1,19 @@ + + + @@ -43,6 +57,9 @@ + + + + + + + @@ -143,13 +165,13 @@ - + - + - + diff --git a/src/main/kotlin/nl/astraeus/komp/Komponent.kt b/src/main/kotlin/nl/astraeus/komp/Komponent.kt index 5a36030..eb330a4 100644 --- a/src/main/kotlin/nl/astraeus/komp/Komponent.kt +++ b/src/main/kotlin/nl/astraeus/komp/Komponent.kt @@ -1,51 +1,24 @@ package nl.astraeus.komp -import kotlinx.html.* +import kotlinx.html.HtmlBlockTag +import kotlinx.html.TagConsumer import kotlinx.html.dom.create import org.w3c.dom.Element import org.w3c.dom.HTMLElement import kotlin.browser.document -fun SPAN.include(component: Komponent) { +fun HtmlBlockTag.include(component: Komponent) { val result = component.render(this.consumer as TagConsumer) component.element = result - Komponent.define(result, component) -} - -fun DIV.include(component: Komponent) { - val result = component.render(this.consumer as TagConsumer) - - component.element = result - Komponent.define(result, component) -} - -fun FORM.include(component: Komponent) { - val result = component.render(this.consumer as TagConsumer) - - component.element = result - Komponent.define(result, component) -} - -fun TD.include(component: Komponent) { - val result = component.render(this.consumer as TagConsumer) - - component.element = result - Komponent.define(result, component) -} - -fun TABLE.include(component: Komponent) { - val result = component.render(this.consumer as TagConsumer) - - component.element = result - Komponent.define(result, component) + nl.astraeus.komp.Komponent.define(result, component) } abstract class Komponent { var element: Element? = null var rendered = false - fun create(): HTMLElement { + open fun create(): HTMLElement { var elem =element if (elem != null) { remove(elem) diff --git a/src/main/kotlin/nl/astraeus/komp/SizedKomponent.kt b/src/main/kotlin/nl/astraeus/komp/SizedKomponent.kt new file mode 100644 index 0000000..c8f7118 --- /dev/null +++ b/src/main/kotlin/nl/astraeus/komp/SizedKomponent.kt @@ -0,0 +1,52 @@ +package nl.astraeus.komp + +import kotlinx.html.dom.create +import kotlinx.html.js.div +import kotlinx.html.style +import org.w3c.dom.HTMLElement +import kotlin.browser.document + +/** + * User: rnentjes + * Date: 31-1-18 + * Time: 15:58 + */ + +enum class SizeType { + HBAR, + VBAR +} + +abstract class SizedKomponent( + val left: Int, + val top: Int, + val width: Int, + val height: Int +): Komponent() { + var parent: SizedKomponent? = null + var type: SizeType = SizeType.HBAR + var size: Int = 0 + + constructor( + parent: SizedKomponent, + type: SizeType, + size: Int + ) :this(0,0,0,0) { + this.parent = parent + this.type = type + this.size = size + } + + override fun create(): HTMLElement { + val innerResult = super.create() + + val result = document.create.div { + style = "left: ${left}px; top: ${top}px; width: ${width}px; height: ${height}px;" // sizing here + } + + result.appendChild(innerResult) + this.element = result + return result + } + +}