diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp_main.iml b/.idea/modules/komp_main.iml index bb3080e..3dda587 100644 --- a/.idea/modules/komp_main.iml +++ b/.idea/modules/komp_main.iml @@ -1,5 +1,5 @@ - + @@ -12,24 +12,23 @@ - + + - + diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp_main.iml b/.idea/modules/komp_main.iml index bb3080e..3dda587 100644 --- a/.idea/modules/komp_main.iml +++ b/.idea/modules/komp_main.iml @@ -1,5 +1,5 @@ - + @@ -12,24 +12,23 @@ - + + - + diff --git a/.idea/modules/komp_test.iml b/.idea/modules/komp_test.iml index c66a9fc..0b505a9 100644 --- a/.idea/modules/komp_test.iml +++ b/.idea/modules/komp_test.iml @@ -1,5 +1,5 @@ - + @@ -9,23 +9,22 @@ - + diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp_main.iml b/.idea/modules/komp_main.iml index bb3080e..3dda587 100644 --- a/.idea/modules/komp_main.iml +++ b/.idea/modules/komp_main.iml @@ -1,5 +1,5 @@ - + @@ -12,24 +12,23 @@ - + + - + diff --git a/.idea/modules/komp_test.iml b/.idea/modules/komp_test.iml index c66a9fc..0b505a9 100644 --- a/.idea/modules/komp_test.iml +++ b/.idea/modules/komp_test.iml @@ -1,5 +1,5 @@ - + @@ -9,23 +9,22 @@ - + diff --git a/build.gradle b/build.gradle index 4ce248b..7f1b41c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'nl.astraeus' -version '0.0.3-SNAPSHOT' +version '0.0.4-SNAPSHOT' apply plugin: 'kotlin2js' apply plugin: 'idea' diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp_main.iml b/.idea/modules/komp_main.iml index bb3080e..3dda587 100644 --- a/.idea/modules/komp_main.iml +++ b/.idea/modules/komp_main.iml @@ -1,5 +1,5 @@ - + @@ -12,24 +12,23 @@ - + + - + diff --git a/.idea/modules/komp_test.iml b/.idea/modules/komp_test.iml index c66a9fc..0b505a9 100644 --- a/.idea/modules/komp_test.iml +++ b/.idea/modules/komp_test.iml @@ -1,5 +1,5 @@ - + @@ -9,23 +9,22 @@ - + diff --git a/build.gradle b/build.gradle index 4ce248b..7f1b41c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'nl.astraeus' -version '0.0.3-SNAPSHOT' +version '0.0.4-SNAPSHOT' apply plugin: 'kotlin2js' apply plugin: 'idea' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5998969..cd278d0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Wed May 10 19:56:18 CEST 2017 +#Wed Jun 14 13:25:37 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp_main.iml b/.idea/modules/komp_main.iml index bb3080e..3dda587 100644 --- a/.idea/modules/komp_main.iml +++ b/.idea/modules/komp_main.iml @@ -1,5 +1,5 @@ - + @@ -12,24 +12,23 @@ - + + - + diff --git a/.idea/modules/komp_test.iml b/.idea/modules/komp_test.iml index c66a9fc..0b505a9 100644 --- a/.idea/modules/komp_test.iml +++ b/.idea/modules/komp_test.iml @@ -1,5 +1,5 @@ - + @@ -9,23 +9,22 @@ - + diff --git a/build.gradle b/build.gradle index 4ce248b..7f1b41c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'nl.astraeus' -version '0.0.3-SNAPSHOT' +version '0.0.4-SNAPSHOT' apply plugin: 'kotlin2js' apply plugin: 'idea' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5998969..cd278d0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Wed May 10 19:56:18 CEST 2017 +#Wed Jun 14 13:25:37 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt b/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt deleted file mode 100644 index 9655be2..0000000 --- a/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt +++ /dev/null @@ -1,50 +0,0 @@ -package nl.astraeus.komp - -import kotlinx.html.DIV -import kotlinx.html.TagConsumer -import kotlinx.html.dom.create -import org.w3c.dom.HTMLElement -import kotlin.browser.document - -fun DIV.include(component: HtmlComponent) { - val result = component.render(this.consumer as TagConsumer) - - component.element = result - Komp.define(result, component) -} - -abstract class HtmlComponent { - var element: HTMLElement? = null - var rendered = false - - fun create(): HTMLElement { - var elem =element - if (elem != null) { - Komp.remove(elem) - } - - elem = render(document.create) - rendered = true - - Komp.define(elem, this) - - this.element = elem - - return elem - } - - abstract fun render(consumer: TagConsumer): HTMLElement - - open fun refresh() { - if (rendered) { - Komp.refresh(element) - } else { - update() - } - } - - open fun update() { - Komp.refresh(element) - } - -} diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp_main.iml b/.idea/modules/komp_main.iml index bb3080e..3dda587 100644 --- a/.idea/modules/komp_main.iml +++ b/.idea/modules/komp_main.iml @@ -1,5 +1,5 @@ - + @@ -12,24 +12,23 @@ - + + - + diff --git a/.idea/modules/komp_test.iml b/.idea/modules/komp_test.iml index c66a9fc..0b505a9 100644 --- a/.idea/modules/komp_test.iml +++ b/.idea/modules/komp_test.iml @@ -1,5 +1,5 @@ - + @@ -9,23 +9,22 @@ - + diff --git a/build.gradle b/build.gradle index 4ce248b..7f1b41c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'nl.astraeus' -version '0.0.3-SNAPSHOT' +version '0.0.4-SNAPSHOT' apply plugin: 'kotlin2js' apply plugin: 'idea' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5998969..cd278d0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Wed May 10 19:56:18 CEST 2017 +#Wed Jun 14 13:25:37 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt b/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt deleted file mode 100644 index 9655be2..0000000 --- a/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt +++ /dev/null @@ -1,50 +0,0 @@ -package nl.astraeus.komp - -import kotlinx.html.DIV -import kotlinx.html.TagConsumer -import kotlinx.html.dom.create -import org.w3c.dom.HTMLElement -import kotlin.browser.document - -fun DIV.include(component: HtmlComponent) { - val result = component.render(this.consumer as TagConsumer) - - component.element = result - Komp.define(result, component) -} - -abstract class HtmlComponent { - var element: HTMLElement? = null - var rendered = false - - fun create(): HTMLElement { - var elem =element - if (elem != null) { - Komp.remove(elem) - } - - elem = render(document.create) - rendered = true - - Komp.define(elem, this) - - this.element = elem - - return elem - } - - abstract fun render(consumer: TagConsumer): HTMLElement - - open fun refresh() { - if (rendered) { - Komp.refresh(element) - } else { - update() - } - } - - open fun update() { - Komp.refresh(element) - } - -} diff --git a/src/main/kotlin/nl/astraeus/komp/Komp.kt b/src/main/kotlin/nl/astraeus/komp/Komp.kt deleted file mode 100644 index 4b234bb..0000000 --- a/src/main/kotlin/nl/astraeus/komp/Komp.kt +++ /dev/null @@ -1,71 +0,0 @@ -package nl.astraeus.komp - -import org.w3c.dom.HTMLElement -import kotlin.collections.component1 -import kotlin.collections.component2 -import kotlin.collections.set - -/** - * User: rnentjes - * Date: 29-3-17 - * Time: 15:46 - */ - -object Komp { - - private val elements: MutableMap = HashMap() - private val elementList: MutableList = ArrayList() - - fun define(element: HTMLElement, component: HtmlComponent) { - elements[element] = component - elementList.add(component) - } - - fun create(parent: HTMLElement, component: HtmlComponent, insertAsFirst: Boolean = false) { - val element = component.create() - - if (insertAsFirst && parent.childElementCount > 0) { - parent.insertBefore(element, parent.firstChild) - } else { - parent.appendChild(element) - } - - elements[element] = component - elementList.add(component) - } - - fun remove(element: HTMLElement) { - val component = elements[element] - - elements.remove(element) - elementList.remove(component) - } - - @JsName("remove") - fun remove(component: HtmlComponent) { - for ((key, value) in elements) { - if (value == component) { - elements.remove(key) - } - } - elementList.remove(component) - } - - fun refresh(component: HtmlComponent) { - refresh(component.element) - } - - fun refresh(element: HTMLElement?) { - if (element != null) { - val comp = elements[element] - - if (element is HTMLElement && comp != null) { - val parent = element.parentElement - val newElement = comp.create() - - parent?.replaceChild(newElement, element) - } - } - } - -} diff --git a/.idea/modules/komp.iml b/.idea/modules/komp.iml index 74dcc6c..a1066ea 100644 --- a/.idea/modules/komp.iml +++ b/.idea/modules/komp.iml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/modules/komp_main.iml b/.idea/modules/komp_main.iml index bb3080e..3dda587 100644 --- a/.idea/modules/komp_main.iml +++ b/.idea/modules/komp_main.iml @@ -1,5 +1,5 @@ - + @@ -12,24 +12,23 @@ - + + - + diff --git a/.idea/modules/komp_test.iml b/.idea/modules/komp_test.iml index c66a9fc..0b505a9 100644 --- a/.idea/modules/komp_test.iml +++ b/.idea/modules/komp_test.iml @@ -1,5 +1,5 @@ - + @@ -9,23 +9,22 @@ - + diff --git a/build.gradle b/build.gradle index 4ce248b..7f1b41c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ group 'nl.astraeus' -version '0.0.3-SNAPSHOT' +version '0.0.4-SNAPSHOT' apply plugin: 'kotlin2js' apply plugin: 'idea' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5998969..cd278d0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Wed May 10 19:56:18 CEST 2017 +#Wed Jun 14 13:25:37 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt b/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt deleted file mode 100644 index 9655be2..0000000 --- a/src/main/kotlin/nl/astraeus/komp/HtmlComponent.kt +++ /dev/null @@ -1,50 +0,0 @@ -package nl.astraeus.komp - -import kotlinx.html.DIV -import kotlinx.html.TagConsumer -import kotlinx.html.dom.create -import org.w3c.dom.HTMLElement -import kotlin.browser.document - -fun DIV.include(component: HtmlComponent) { - val result = component.render(this.consumer as TagConsumer) - - component.element = result - Komp.define(result, component) -} - -abstract class HtmlComponent { - var element: HTMLElement? = null - var rendered = false - - fun create(): HTMLElement { - var elem =element - if (elem != null) { - Komp.remove(elem) - } - - elem = render(document.create) - rendered = true - - Komp.define(elem, this) - - this.element = elem - - return elem - } - - abstract fun render(consumer: TagConsumer): HTMLElement - - open fun refresh() { - if (rendered) { - Komp.refresh(element) - } else { - update() - } - } - - open fun update() { - Komp.refresh(element) - } - -} diff --git a/src/main/kotlin/nl/astraeus/komp/Komp.kt b/src/main/kotlin/nl/astraeus/komp/Komp.kt deleted file mode 100644 index 4b234bb..0000000 --- a/src/main/kotlin/nl/astraeus/komp/Komp.kt +++ /dev/null @@ -1,71 +0,0 @@ -package nl.astraeus.komp - -import org.w3c.dom.HTMLElement -import kotlin.collections.component1 -import kotlin.collections.component2 -import kotlin.collections.set - -/** - * User: rnentjes - * Date: 29-3-17 - * Time: 15:46 - */ - -object Komp { - - private val elements: MutableMap = HashMap() - private val elementList: MutableList = ArrayList() - - fun define(element: HTMLElement, component: HtmlComponent) { - elements[element] = component - elementList.add(component) - } - - fun create(parent: HTMLElement, component: HtmlComponent, insertAsFirst: Boolean = false) { - val element = component.create() - - if (insertAsFirst && parent.childElementCount > 0) { - parent.insertBefore(element, parent.firstChild) - } else { - parent.appendChild(element) - } - - elements[element] = component - elementList.add(component) - } - - fun remove(element: HTMLElement) { - val component = elements[element] - - elements.remove(element) - elementList.remove(component) - } - - @JsName("remove") - fun remove(component: HtmlComponent) { - for ((key, value) in elements) { - if (value == component) { - elements.remove(key) - } - } - elementList.remove(component) - } - - fun refresh(component: HtmlComponent) { - refresh(component.element) - } - - fun refresh(element: HTMLElement?) { - if (element != null) { - val comp = elements[element] - - if (element is HTMLElement && comp != null) { - val parent = element.parentElement - val newElement = comp.create() - - parent?.replaceChild(newElement, element) - } - } - } - -} diff --git a/src/main/kotlin/nl/astraeus/komp/Komponent.kt b/src/main/kotlin/nl/astraeus/komp/Komponent.kt new file mode 100644 index 0000000..92c5838 --- /dev/null +++ b/src/main/kotlin/nl/astraeus/komp/Komponent.kt @@ -0,0 +1,105 @@ +package nl.astraeus.komp + +import kotlinx.html.DIV +import kotlinx.html.TagConsumer +import kotlinx.html.dom.create +import org.w3c.dom.HTMLElement +import kotlin.browser.document + +fun DIV.include(component: Komponent) { + val result = component.render(this.consumer as TagConsumer) + + component.element = result + Komponent.define(result, component) +} + +abstract class Komponent { + var element: HTMLElement? = null + var rendered = false + + fun create(): HTMLElement { + var elem =element + if (elem != null) { + remove(elem) + } + + elem = render(document.create) + rendered = true + + define(elem, this) + + this.element = elem + + return elem + } + + abstract fun render(consumer: TagConsumer): HTMLElement + + open fun refresh() { + if (rendered) { + refresh(element) + } else { + update() + } + } + + open fun update() { + refresh(element) + } + + companion object { + + private val elements: MutableMap = HashMap() + private val elementList: MutableList = ArrayList() + + fun define(element: HTMLElement, component: Komponent) { + elements[element] = component + elementList.add(component) + } + + fun create(parent: HTMLElement, component: Komponent, insertAsFirst: Boolean = false) { + val element = component.create() + + if (insertAsFirst && parent.childElementCount > 0) { + parent.insertBefore(element, parent.firstChild) + } else { + parent.appendChild(element) + } + + elements[element] = component + elementList.add(component) + } + + fun remove(element: HTMLElement) { + val component = elements[element] + + elements.remove(element) + elementList.remove(component) + } + + @JsName("remove") + fun remove(component: Komponent) { + for ((key, value) in elements) { + if (value == component) { + elements.remove(key) + } + } + elementList.remove(component) + } + + fun refresh(component: Komponent) { + refresh(component.element) + } + + fun refresh(element: HTMLElement?) { + if (element != null) { + elements[element]?.let { + val parent = element.parentElement + val newElement = it.create() + + parent?.replaceChild(newElement, element) + } + } + } + } +}