This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 85b57efc08 ISIS-3097: Migrate Prism to Webjars
85b57efc08 is described below

commit 85b57efc0863d5f390a8485126b8f15538e59c2b
Author: andi-huber <[email protected]>
AuthorDate: Wed Jul 27 11:12:10 2022 +0200

    ISIS-3097: Migrate Prism to Webjars
---
 .../src/main/resources/static/css/application.css  |   6 +
 .../ui/vaa/components/AsciiDocFieldVaa.java        |   8 +-
 .../ui/wkt/components/AsciiDocComponentWkt.java    |  14 +-
 .../ui/wkt/components/MarkdownComponentWkt.java    |  13 +-
 valuetypes/prism/resources/pom.xml                 |   8 +
 .../org/apache/isis/valuetypes/prism/Prism.java    |  20 +-
 .../prism/{Prism.java => PrismLanguage.java}       |  33 ++-
 .../static/prism/css/prism1.20-default.css         | 142 -------------
 .../resources/static/prism/css/prism1.24.1-coy.css | 221 ---------------------
 .../static/prism/css/prism1.24.1-default.css       | 143 -------------
 .../main/resources/static/prism/js/prism1.20.js    |  13 --
 .../main/resources/static/prism/js/prism1.24.1.js  |  13 --
 .../valuetypes/prism/vaa/PrismResourcesVaa.java    |  14 +-
 valuetypes/prism/wicket/pom.xml                    |   6 +
 .../valuetypes/prism/wkt/PrismResourcesWkt.java    |  38 ++--
 .../valuetypes/prism/wkt/css/prism1.20-default.css | 142 -------------
 .../valuetypes/prism/wkt/css/prism1.24.1-coy.css   | 221 ---------------------
 .../prism/wkt/css/prism1.24.1-default.css          | 143 -------------
 .../isis/valuetypes/prism/wkt/js/prism1.20.js      |  13 --
 .../isis/valuetypes/prism/wkt/js/prism1.24.1.js    |  13 --
 .../scalars/markup/MarkupComponent_reloadJs.java   |  21 +-
 21 files changed, 119 insertions(+), 1126 deletions(-)

diff --git a/examples/demo/domain/src/main/resources/static/css/application.css 
b/examples/demo/domain/src/main/resources/static/css/application.css
index b877f3ba5d..8212eabf04 100644
--- a/examples/demo/domain/src/main/resources/static/css/application.css
+++ b/examples/demo/domain/src/main/resources/static/css/application.css
@@ -279,3 +279,9 @@ div.listingblock div.title {
     font-style: italic;
     color: darkred;
 }
+
+/* customized Prism theme COY */
+.listingblock pre[class*="language-"]::after, 
+.listingblock pre[class*="language-"]::before {
+       box-shadow: none;
+}
diff --git 
a/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java
 
b/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java
index 61370a6762..5ef32a2c60 100644
--- 
a/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java
+++ 
b/valuetypes/asciidoc/ui/vaadin/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/vaa/components/AsciiDocFieldVaa.java
@@ -18,12 +18,12 @@
  */
 package org.apache.isis.valuetypes.asciidoc.ui.vaa.components;
 
-import org.springframework.lang.Nullable;
-
 import com.vaadin.flow.component.Html;
 import com.vaadin.flow.component.customfield.CustomField;
 import com.vaadin.flow.component.html.Div;
 
+import org.springframework.lang.Nullable;
+
 import org.apache.isis.incubator.viewer.vaadin.ui.util.LocalResourceUtil;
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 import org.apache.isis.valuetypes.prism.vaa.PrismResourcesVaa;
@@ -41,7 +41,9 @@ public class AsciiDocFieldVaa extends CustomField<AsciiDoc> {
         add(div);
 
         
LocalResourceUtil.addStyleSheet(PrismResourcesVaa.getCssResourceReference());
-        LocalResourceUtil.executeJavaScript(PrismResourcesVaa::readJsResource);
+        
//LocalResourceUtil.executeJavaScript(PrismResourcesVaa::readJsResource);
+        //TODO potentially needs to be executed on page loaded ...
+        
LocalResourceUtil.addJavaScript(PrismResourcesVaa.getJsResourceReference());
     }
 
     @Override
diff --git 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
index 209b929a4e..0086c0fdcf 100644
--- 
a/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
+++ 
b/valuetypes/asciidoc/ui/wicket/src/main/java/org/apache/isis/valuetypes/asciidoc/ui/wkt/components/AsciiDocComponentWkt.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.valuetypes.asciidoc.ui.wkt.components;
 
+import java.util.List;
+
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.head.CssHeaderItem;
@@ -54,19 +56,21 @@ public class AsciiDocComponentWkt extends MarkupComponent {
     public void onComponentTagBody(final MarkupStream markupStream, final 
ComponentTag openTag) {
         val htmlContent = extractHtmlOrElse(getDefaultModelObject(), "" 
/*fallback*/);
         replaceComponentTagBody(markupStream, openTag,
-                MarkupComponent_reloadJs.decorate(htmlContent, jsRef()));
+                MarkupComponent_reloadJs.decorate(htmlContent, jsRefs()));
     }
 
     @Override
     public void renderHead(final IHeaderResponse response) {
         super.renderHead(response);
-
         
response.render(CssHeaderItem.forReference(PrismResourcesWkt.getCssResourceReferenceWkt()));
-        response.render(JavaScriptHeaderItem.forReference(jsRef()));
+        for(ResourceReference jsRef : jsRefs()) {
+            response.render(JavaScriptHeaderItem.forReference(jsRef));
+        }
     }
 
-    private static final ResourceReference jsRef() {
-        return PrismResourcesWkt.getJsResourceReferenceWkt();
+    private static final List<ResourceReference> jsRefs() {
+        return PrismResourcesWkt.getJsResourceReferencesWkt();
     }
 
+
 }
diff --git 
a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
 
b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
index fa873e8755..a82e1d8f2b 100644
--- 
a/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
+++ 
b/valuetypes/markdown/ui/wicket/src/main/java/org/apache/isis/valuetypes/markdown/ui/wkt/components/MarkdownComponentWkt.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.valuetypes.markdown.ui.wkt.components;
 
+import java.util.List;
+
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.markup.head.CssHeaderItem;
@@ -55,19 +57,20 @@ public class MarkdownComponentWkt extends MarkupComponent {
     public void onComponentTagBody(final MarkupStream markupStream, final 
ComponentTag openTag) {
         val htmlContent = extractHtmlOrElse(getDefaultModelObject(), "" 
/*fallback*/);
         replaceComponentTagBody(markupStream, openTag,
-                MarkupComponent_reloadJs.decorate(htmlContent, jsRef()));
+                MarkupComponent_reloadJs.decorate(htmlContent, jsRefs()));
     }
 
     @Override
     public void renderHead(final IHeaderResponse response) {
         super.renderHead(response);
-
         
response.render(CssHeaderItem.forReference(PrismResourcesWkt.getCssResourceReferenceWkt()));
-        response.render(JavaScriptHeaderItem.forReference(jsRef()));
+        for(ResourceReference jsRef : jsRefs()) {
+            response.render(JavaScriptHeaderItem.forReference(jsRef));
+        }
     }
 
-    private static final ResourceReference jsRef() {
-        return PrismResourcesWkt.getJsResourceReferenceWkt();
+    private static final List<ResourceReference> jsRefs() {
+        return PrismResourcesWkt.getJsResourceReferencesWkt();
     }
 
 }
diff --git a/valuetypes/prism/resources/pom.xml 
b/valuetypes/prism/resources/pom.xml
index 77eb268f15..74bddf0e5b 100644
--- a/valuetypes/prism/resources/pom.xml
+++ b/valuetypes/prism/resources/pom.xml
@@ -28,4 +28,12 @@
                
<git-plugin.propertiesDir>org/apache/isis/valuetypes/prism/resources</git-plugin.propertiesDir>
        </properties>
 
+       <dependencies>
+               <dependency>
+                   <groupId>org.webjars.bowergithub.prismjs</groupId>
+                   <artifactId>prism</artifactId>
+                   <version>1.28.0</version>
+               </dependency>
+       </dependencies>
+
 </project>
diff --git 
a/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
 
b/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
index 954475dee9..dcf2776731 100644
--- 
a/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
+++ 
b/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
@@ -22,16 +22,20 @@ import lombok.RequiredArgsConstructor;
 
 @RequiredArgsConstructor
 public enum Prism {
-    WICKET("1.24.1", "coy"),
-    VAADIN("1.24.1", "coy");
-//    WICKET("1.20", "default"),
-//    VAADIN("1.20", "default");
-    final String version;
-    final String theme;
+    DEFAULT(""),
+    COY("-coy"),
+    DARK("-dark"),
+    FUNKY("-funky"),
+    OKAIDIA("-okaidia"),
+    SOLARIZEDLIGHT("-solarizedlight"),
+    TOMORROW("-tomorrow"),
+    TWILIGHT("-twilight"),
+    ;
+    final String themeSuffix;
     public String cssFile() {
-        return "css/prism" + version + "-" + theme + ".css";
+        return "prism/themes/prism" + themeSuffix + ".min.css";
     }
     public String jsFile() {
-        return "js/prism" + version + ".js";
+        return "prism/prism" + ".js";
     }
 }
diff --git 
a/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
 
b/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/PrismLanguage.java
similarity index 64%
copy from 
valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
copy to 
valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/PrismLanguage.java
index 954475dee9..f79e0740a1 100644
--- 
a/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/Prism.java
+++ 
b/valuetypes/prism/resources/src/main/java/org/apache/isis/valuetypes/prism/PrismLanguage.java
@@ -18,20 +18,31 @@
  */
 package org.apache.isis.valuetypes.prism;
 
+import java.util.Arrays;
+import java.util.List;
+
 import lombok.RequiredArgsConstructor;
 
 @RequiredArgsConstructor
-public enum Prism {
-    WICKET("1.24.1", "coy"),
-    VAADIN("1.24.1", "coy");
-//    WICKET("1.20", "default"),
-//    VAADIN("1.20", "default");
-    final String version;
-    final String theme;
-    public String cssFile() {
-        return "css/prism" + version + "-" + theme + ".css";
-    }
+public enum PrismLanguage {
+    MARKUP("markup"),
+    CSS("css"),
+    CLIKE("clike"),
+    JAVA("java"),
+    JAVASCRIPT("javascript"),
+    ASCIIDOC("asciidoc"),
+    JAVADOC("javadoc"),
+    JAVADOCLIKE("javadoclike"),
+    JSON("json"),
+    PROPERTIES("properties"),
+    ;
+    final String languageSuffix;
     public String jsFile() {
-        return "js/prism" + version + ".js";
+        return "prism/components/prism-" + languageSuffix + ".min.js";
     }
+
+    public static List<PrismLanguage> mostCommon() {
+        return Arrays.asList(PrismLanguage.values());
+    }
+
 }
diff --git 
a/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.20-default.css
 
b/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.20-default.css
deleted file mode 100644
index 19ba63340c..0000000000
--- 
a/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.20-default.css
+++ /dev/null
@@ -1,142 +0,0 @@
-/* PrismJS 1.20.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
-       color: black;
-       background: none;
-       text-shadow: 0 1px white;
-       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-       font-size: 1em;
-       text-align: left;p
-       white-space: pre;
-       word-spacing: normal;
-       word-break: normal;
-       word-wrap: normal;
-       line-height: 1.5;
-
-       -moz-tab-size: 4;
-       -o-tab-size: 4;
-       tab-size: 4;
-
-       -webkit-hyphens: none;
-       -moz-hyphens: none;
-       -ms-hyphens: none;
-       hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] 
::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] 
::-moz-selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-@media print {
-       code[class*="language-"],
-       pre[class*="language-"] {
-               text-shadow: none;
-       }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-       padding: 1em;
-       margin: .5em 0;
-       overflow: auto;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-       background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-       padding: .1em;
-       border-radius: .3em;
-       white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-       color: slategray;
-}
-
-.token.punctuation {
-       color: #999;
-}
-
-.token.namespace {
-       opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-       color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-       color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-       color: #9a6e3a;
-       background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-       color: #07a;
-}
-
-.token.function,
-.token.class-name {
-       color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
-       color: #e90;
-}
-
-.token.important,
-.token.bold {
-       font-weight: bold;
-}
-.token.italic {
-       font-style: italic;
-}
-
-.token.entity {
-       cursor: help;
-}
-
diff --git 
a/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.24.1-coy.css
 
b/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.24.1-coy.css
deleted file mode 100644
index 821a75f63d..0000000000
--- 
a/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.24.1-coy.css
+++ /dev/null
@@ -1,221 +0,0 @@
-/* PrismJS 1.24.1
-https://prismjs.com/download.html#themes=prism-coy&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-/**
- * prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML
- * Based on https://github.com/tshedor/workshop-wp-theme (Example: 
http://workshop.kansan.com/category/sessions/basics or 
http://workshop.timshedor.com/category/sessions/basics);
- * @author Tim  Shedor
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
-       color: black;
-       background: none;
-       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-       font-size: 1em;
-       text-align: left;
-       white-space: pre;
-       word-spacing: normal;
-       word-break: normal;
-       word-wrap: normal;
-       line-height: 1.5;
-
-       -moz-tab-size: 4;
-       -o-tab-size: 4;
-       tab-size: 4;
-
-       -webkit-hyphens: none;
-       -moz-hyphens: none;
-       -ms-hyphens: none;
-       hyphens: none;
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-       position: relative;
-       margin: .5em 0;
-       overflow: visible;
-       padding: 0;
-}
-pre[class*="language-"]>code {
-       position: relative;
-       border-left: 3px solid #b2e26c;
-       box-shadow: -1px 0px 0px 0px #b2e26c, 0px 0px 0px 1px #dfdfdf;
-       background-color: #fdfdfd;
-       background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 
0.04) 50%);
-       background-size: 3em 3em;
-       background-origin: content-box;
-       background-attachment: local;
-}
-
-code[class*="language-"] {
-       max-height: inherit;
-       height: inherit;
-       padding: 0 1em;
-       display: block;
-       overflow: auto;
-}
-
-/* Margin bottom to accommodate shadow */
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-       background-color: #fdfdfd;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       margin-bottom: 1em;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-       position: relative;
-       padding: .2em;
-       border-radius: 0.3em;
-       color: #c92c2c;
-       border: 1px solid rgba(0, 0, 0, 0.1);
-       display: inline;
-       white-space: normal;
-}
-
-pre[class*="language-"]:before,
-pre[class*="language-"]:after {
-       content: '';
-       z-index: -2;
-       display: block;
-       position: absolute;
-       bottom: 0.75em;
-       left: 0.18em;
-       width: 40%;
-       height: 20%;
-       max-height: 13em;
-       box-shadow: 0px 13px 8px #979797;
-       -webkit-transform: rotate(-2deg);
-       -moz-transform: rotate(-2deg);
-       -ms-transform: rotate(-2deg);
-       -o-transform: rotate(-2deg);
-       transform: rotate(-2deg);
-}
-
-pre[class*="language-"]:after {
-       right: 0.75em;
-       left: auto;
-       -webkit-transform: rotate(2deg);
-       -moz-transform: rotate(2deg);
-       -ms-transform: rotate(2deg);
-       -o-transform: rotate(2deg);
-       transform: rotate(2deg);
-}
-
-.token.comment,
-.token.block-comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-       color: #7D8B99;
-}
-
-.token.punctuation {
-       color: #5F6364;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.function-name,
-.token.constant,
-.token.symbol,
-.token.deleted {
-       color: #c92c2c;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.function,
-.token.builtin,
-.token.inserted {
-       color: #2f9c0a;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.token.variable {
-       color: #a67f59;
-       background: rgba(255, 255, 255, 0.5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword,
-.token.class-name {
-       color: #1990b8;
-}
-
-.token.regex,
-.token.important {
-       color: #e90;
-}
-
-.language-css .token.string,
-.style .token.string {
-       color: #a67f59;
-       background: rgba(255, 255, 255, 0.5);
-}
-
-.token.important {
-       font-weight: normal;
-}
-
-.token.bold {
-       font-weight: bold;
-}
-.token.italic {
-       font-style: italic;
-}
-
-.token.entity {
-       cursor: help;
-}
-
-.token.namespace {
-       opacity: .7;
-}
-
-@media screen and (max-width: 767px) {
-       pre[class*="language-"]:before,
-       pre[class*="language-"]:after {
-               bottom: 14px;
-               box-shadow: none;
-       }
-
-}
-
-/* Plugin styles: Line Numbers */
-pre[class*="language-"].line-numbers.line-numbers {
-       padding-left: 0;
-}
-
-pre[class*="language-"].line-numbers.line-numbers code {
-       padding-left: 3.8em;
-}
-
-pre[class*="language-"].line-numbers.line-numbers .line-numbers-rows {
-       left: 0;
-}
-
-/* Plugin styles: Line Highlight */
-pre[class*="language-"][data-line] {
-       padding-top: 0;
-       padding-bottom: 0;
-       padding-left: 0;
-}
-pre[data-line] code {
-       position: relative;
-       padding-left: 4em;
-}
-pre .line-highlight {
-       margin-top: 0;
-}
-
diff --git 
a/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.24.1-default.css
 
b/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.24.1-default.css
deleted file mode 100644
index d97e1e7071..0000000000
--- 
a/valuetypes/prism/resources/src/main/resources/static/prism/css/prism1.24.1-default.css
+++ /dev/null
@@ -1,143 +0,0 @@
-/* PrismJS 1.24.1
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
-       color: black;
-       background: none;
-/*ISIS text-shadow: 0 1px white;*/
-       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-       font-size: 1em;
-       text-align: left;
-       white-space: pre;
-       word-spacing: normal;
-       word-break: normal;
-       word-wrap: normal;
-       line-height: 1.5;
-
-       -moz-tab-size: 4;
-       -o-tab-size: 4;
-       tab-size: 4;
-
-       -webkit-hyphens: none;
-       -moz-hyphens: none;
-       -ms-hyphens: none;
-       hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] 
::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] 
::-moz-selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-@media print {
-       code[class*="language-"],
-       pre[class*="language-"] {
-               text-shadow: none;
-       }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-       padding: 1em;
-       margin: .5em 0;
-       overflow: auto;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-       background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-       padding: .1em;
-       border-radius: .3em;
-       white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-       color: slategray;
-}
-
-.token.punctuation {
-       color: #999;
-}
-
-.token.namespace {
-       opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-       color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-       color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-       color: #9a6e3a;
-       /* This background color was intended by the author of this theme. */
-       background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-       color: #07a;
-}
-
-.token.function,
-.token.class-name {
-       color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
-       color: #e90;
-}
-
-.token.important,
-.token.bold {
-       font-weight: bold;
-}
-.token.italic {
-       font-style: italic;
-}
-
-.token.entity {
-       cursor: help;
-}
-
diff --git 
a/valuetypes/prism/resources/src/main/resources/static/prism/js/prism1.20.js 
b/valuetypes/prism/resources/src/main/resources/static/prism/js/prism1.20.js
deleted file mode 100644
index daec626b8a..0000000000
--- a/valuetypes/prism/resources/src/main/resources/static/prism/js/prism1.20.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/* PrismJS 1.20.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-var _self="undefined"!=typeof window?window:"undefined"!=typeof 
WorkerGlobalScope&&self instanceof 
WorkerGlobalScope?self:{},Prism=function(u){var 
c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,C={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function
 e(n){return n instanceof _?new 
_(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g,"
 ")},type:function(e){return [...]
-Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0},cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"a
 [...]
-!function(s){var 
e=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,lookbehind:!0,alias:"selector"}}},url:{pattern:RegExp("url\\((?:"+e.source+"|[^\n\r()]*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"
 [...]
-Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b
 [...]
-Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|i
 [...]
-!function(t){var n={pattern:/(^[ 
\t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\]\\]|\\.)*\]|[^\]\\]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},a=t.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\s\S]*(?:
 [...]
-!function(e){var 
t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|null|open|opens|package|private|protected|provides|public|record|requires|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,a=/\b[A-Z](?:\w*[a-z]\w*)?\b/;e.la
 [...]
-!function(p){var 
a=p.languages.javadoclike={parameter:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(a,"addSupport",{value:function(a,e){"string"==typeof
 a&&(a=[a]),a.forEach(function(a){!function(a,e){var 
n="doc-comment",t=p.languages[a];if(t){var r=t[n];if(!r){var 
o={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\* [...]
-!function(a){var 
e={code:{pattern:/(^(?:\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:a.languages.java,alias:"language-java"}};a.languages.javadoc=a.languages.extend("javadoclike",{}),a.languages.insertBefore("javadoc","keyword",{"class-name":[{pattern:/(@(?:exception|throws|see|link|linkplain|value)\s+(?:[a-z\d]+\.)*)[A-Z](?:\w*[a-z]\w*)?(?:\.[A-Z](?:\w*[a-z]\w*)?)*/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(@param\s+)<[A-Z]\w*>/,lookbehind:!0,inside:{punctuation:/[.<>]/}}
 [...]
-Prism.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,number:/-?\d+\.?\d*(?:e[+-]?\d+)?/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};
-Prism.languages.properties={comment:/^[ 
\t]*[#!].*$/m,"attr-value":{pattern:/(^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?: *[=:] *| 
))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?= *[=:] *| )/m,punctuation:/[=:]/};
diff --git 
a/valuetypes/prism/resources/src/main/resources/static/prism/js/prism1.24.1.js 
b/valuetypes/prism/resources/src/main/resources/static/prism/js/prism1.24.1.js
deleted file mode 100644
index bf705bfa01..0000000000
--- 
a/valuetypes/prism/resources/src/main/resources/static/prism/js/prism1.24.1.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/* PrismJS 1.24.1
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-var _self="undefined"!=typeof window?window:"undefined"!=typeof 
WorkerGlobalScope&&self instanceof 
WorkerGlobalScope?self:{},Prism=function(u){var 
c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function
 e(n){return n instanceof W?new 
W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g,"
 ")},type:function(e){r [...]
-Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata:/<!\[CDATA\[[\s\S]*?\]\]>/i,tag:{pattern:/<\/?(?
 [...]
-!function(s){var 
e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\bu
 [...]
-Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|c
 [...]
-Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|final
 [...]
-!function(t){var n={pattern:/(^[ 
\t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\[\]\\]|\\.)*\]|[^\[\]\\"'$`]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},a=t.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\
 [...]
-!function(e){var 
t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n="(^|[^
 [...]
-!function(p){var a=p.languages.javadoclike={parameter:{pattern:/(^[\t 
]*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t
 
]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(a,"addSupport",{value:function(a,e){"string"==typeof
 a&&(a=[a]),a.forEach(function(a){!function(a,e){var 
n="doc-comment",t=p.languages[a];if(t){var r=t[n];if(!r){var 
o={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]* [...]
-!function(a){var e=/(^(?:[\t 
]*(?:\*\s*)*))[^*\s].*$/m,n="(?:\\b[a-zA-Z]\\w+\\s*\\.\\s*)*\\b[A-Z]\\w*(?:\\s*<mem>)?|<mem>".replace(/<mem>/g,function(){return"#\\s*\\w+(?:\\s*\\([^()]*\\))?"});a.languages.javadoc=a.languages.extend("javadoclike",{}),a.languages.insertBefore("javadoc","keyword",{reference:{pattern:RegExp("(@(?:exception|throws|see|link|linkplain|value)\\s+(?:\\*\\s*)?)(?:"+n+")"),lookbehind:!0,inside:{function:{pattern:/(#\s*)\w+(?=\s*\()/,lookbehind:!0},field:{pattern:/(#
 [...]
-Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;
-Prism.languages.properties={comment:/^[ 
\t]*[#!].*$/m,"attr-value":{pattern:/(^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?: *[=:] *(?! )| 
))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?= *[=:]| )/m,punctuation:/[=:]/};
diff --git 
a/valuetypes/prism/vaadin/src/main/java/org/apache/isis/valuetypes/prism/vaa/PrismResourcesVaa.java
 
b/valuetypes/prism/vaadin/src/main/java/org/apache/isis/valuetypes/prism/vaa/PrismResourcesVaa.java
index 6e0913aa1a..cd3e5fa1d2 100644
--- 
a/valuetypes/prism/vaadin/src/main/java/org/apache/isis/valuetypes/prism/vaa/PrismResourcesVaa.java
+++ 
b/valuetypes/prism/vaadin/src/main/java/org/apache/isis/valuetypes/prism/vaa/PrismResourcesVaa.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.valuetypes.prism.vaa;
 
-import java.io.InputStream;
-
 import org.apache.isis.incubator.viewer.vaadin.ui.util.LocalResourceUtil;
 import org.apache.isis.valuetypes.prism.Prism;
 
@@ -30,17 +28,15 @@ import lombok.experimental.UtilityClass;
 public final class PrismResourcesVaa {
 
     @Getter(lazy = true) private static final 
LocalResourceUtil.ResourceDescriptor cssResourceReference =
-            
//LocalResourceUtil.ResourceDescriptor.webjars("prism/1.16.0/themes/prism.css");
-            LocalResourceUtil.ResourceDescriptor.staticRoot("prism/" + 
Prism.VAADIN.cssFile());
+            LocalResourceUtil.ResourceDescriptor.webjars(Prism.COY.cssFile());
 
 
     @Getter(lazy = true) private static final 
LocalResourceUtil.ResourceDescriptor jsResourceReference =
-            
//LocalResourceUtil.ResourceDescriptor.webjars("prism/1.16.0/prism.js");
-            LocalResourceUtil.ResourceDescriptor.staticRoot("prism/" + 
Prism.VAADIN.jsFile());
+            LocalResourceUtil.ResourceDescriptor.webjars(Prism.COY.jsFile());
 
-    public static InputStream readJsResource() {
-        return PrismResourcesVaa.class.getResourceAsStream("/static/prism/" + 
Prism.VAADIN.jsFile());
-    }
+//    public static InputStream readJsResource() {
+//        return PrismResourcesVaa.class.getResourceAsStream("/static/prism/" 
+ Prism.VAADIN.jsFile());
+//    }
 
 
 }
diff --git a/valuetypes/prism/wicket/pom.xml b/valuetypes/prism/wicket/pom.xml
index 0a079e42a8..25d423bdfa 100644
--- a/valuetypes/prism/wicket/pom.xml
+++ b/valuetypes/prism/wicket/pom.xml
@@ -68,6 +68,12 @@
             </exclusions>
         </dependency>
         
+        <!-- so we can pull in Prism via Maven -->
+        <dependency>
+            <groupId>de.agilecoders.wicket.webjars</groupId>
+            <artifactId>wicket-webjars</artifactId>
+        </dependency>
+        
        </dependencies>
 
 </project>
diff --git 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/PrismResourcesWkt.java
 
b/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/PrismResourcesWkt.java
index 3a562858a6..ec70873393 100644
--- 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/PrismResourcesWkt.java
+++ 
b/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/PrismResourcesWkt.java
@@ -18,28 +18,42 @@
  */
 package org.apache.isis.valuetypes.prism.wkt;
 
-import org.apache.wicket.request.resource.CssResourceReference;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.wicket.request.resource.ResourceReference;
 
 import org.apache.isis.valuetypes.prism.Prism;
+import org.apache.isis.valuetypes.prism.PrismLanguage;
 
+import 
de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
+import 
de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
 import lombok.Getter;
 import lombok.experimental.UtilityClass;
 
 @UtilityClass
 public final class PrismResourcesWkt{
 
-    //TODO convert to ContextRelativeResourceReference(s)
-
     @Getter(lazy = true) private static final ResourceReference 
cssResourceReferenceWkt =
-            //new WebjarsCssResourceReference("prism/1.16.0/themes/prism.css");
-            new CssResourceReference(PrismResourcesWkt.class,
-                    Prism.WICKET.cssFile());
-
-    @Getter(lazy = true) private static final ResourceReference 
jsResourceReferenceWkt =
-            //new 
WebjarsJavaScriptResourceReference("prism/1.16.0/components/prism-java.min.js");
-            new JavaScriptResourceReference(PrismResourcesWkt.class,
-                    Prism.WICKET.jsFile());
+            new WebjarsCssResourceReference(Prism.COY.cssFile());
+
+    @Getter(lazy = true) private static final List<ResourceReference> 
jsResourceReferencesWkt =
+            assembleJsResources();
+
+    // -- HELPER
+
+    /**
+     * Returns the main Prism JS resource + most common languages
+     */
+    private List<ResourceReference> assembleJsResources() {
+        final List<ResourceReference> resources = 
PrismLanguage.mostCommon().stream()
+                .map(PrismLanguage::jsFile)
+                .map(WebjarsJavaScriptResourceReference::new)
+                .collect(Collectors.toCollection(ArrayList::new));
+
+        resources.add(0, new 
WebjarsJavaScriptResourceReference(Prism.COY.jsFile()));
+        return resources;
+    }
 
 }
diff --git 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.20-default.css
 
b/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.20-default.css
deleted file mode 100644
index 27cc3746e4..0000000000
--- 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.20-default.css
+++ /dev/null
@@ -1,142 +0,0 @@
-/* PrismJS 1.20.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
-       color: black;
-       background: none;
-       text-shadow: 0 1px white;
-       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-       font-size: 1em;
-       text-align: left;
-       white-space: pre;
-       word-spacing: normal;
-       word-break: normal;
-       word-wrap: normal;
-       line-height: 1.5;
-
-       -moz-tab-size: 4;
-       -o-tab-size: 4;
-       tab-size: 4;
-
-       -webkit-hyphens: none;
-       -moz-hyphens: none;
-       -ms-hyphens: none;
-       hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] 
::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] 
::-moz-selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-@media print {
-       code[class*="language-"],
-       pre[class*="language-"] {
-               text-shadow: none;
-       }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-       padding: 1em;
-       margin: .5em 0;
-       overflow: auto;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-       background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-       padding: .1em;
-       border-radius: .3em;
-       white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-       color: slategray;
-}
-
-.token.punctuation {
-       color: #999;
-}
-
-.token.namespace {
-       opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-       color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-       color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-       color: #9a6e3a;
-       background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-       color: #07a;
-}
-
-.token.function,
-.token.class-name {
-       color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
-       color: #e90;
-}
-
-.token.important,
-.token.bold {
-       font-weight: bold;
-}
-.token.italic {
-       font-style: italic;
-}
-
-.token.entity {
-       cursor: help;
-}
-
diff --git 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-coy.css
 
b/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-coy.css
deleted file mode 100644
index 821a75f63d..0000000000
--- 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-coy.css
+++ /dev/null
@@ -1,221 +0,0 @@
-/* PrismJS 1.24.1
-https://prismjs.com/download.html#themes=prism-coy&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-/**
- * prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML
- * Based on https://github.com/tshedor/workshop-wp-theme (Example: 
http://workshop.kansan.com/category/sessions/basics or 
http://workshop.timshedor.com/category/sessions/basics);
- * @author Tim  Shedor
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
-       color: black;
-       background: none;
-       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-       font-size: 1em;
-       text-align: left;
-       white-space: pre;
-       word-spacing: normal;
-       word-break: normal;
-       word-wrap: normal;
-       line-height: 1.5;
-
-       -moz-tab-size: 4;
-       -o-tab-size: 4;
-       tab-size: 4;
-
-       -webkit-hyphens: none;
-       -moz-hyphens: none;
-       -ms-hyphens: none;
-       hyphens: none;
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-       position: relative;
-       margin: .5em 0;
-       overflow: visible;
-       padding: 0;
-}
-pre[class*="language-"]>code {
-       position: relative;
-       border-left: 3px solid #b2e26c;
-       box-shadow: -1px 0px 0px 0px #b2e26c, 0px 0px 0px 1px #dfdfdf;
-       background-color: #fdfdfd;
-       background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 
0.04) 50%);
-       background-size: 3em 3em;
-       background-origin: content-box;
-       background-attachment: local;
-}
-
-code[class*="language-"] {
-       max-height: inherit;
-       height: inherit;
-       padding: 0 1em;
-       display: block;
-       overflow: auto;
-}
-
-/* Margin bottom to accommodate shadow */
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-       background-color: #fdfdfd;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       margin-bottom: 1em;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-       position: relative;
-       padding: .2em;
-       border-radius: 0.3em;
-       color: #c92c2c;
-       border: 1px solid rgba(0, 0, 0, 0.1);
-       display: inline;
-       white-space: normal;
-}
-
-pre[class*="language-"]:before,
-pre[class*="language-"]:after {
-       content: '';
-       z-index: -2;
-       display: block;
-       position: absolute;
-       bottom: 0.75em;
-       left: 0.18em;
-       width: 40%;
-       height: 20%;
-       max-height: 13em;
-       box-shadow: 0px 13px 8px #979797;
-       -webkit-transform: rotate(-2deg);
-       -moz-transform: rotate(-2deg);
-       -ms-transform: rotate(-2deg);
-       -o-transform: rotate(-2deg);
-       transform: rotate(-2deg);
-}
-
-pre[class*="language-"]:after {
-       right: 0.75em;
-       left: auto;
-       -webkit-transform: rotate(2deg);
-       -moz-transform: rotate(2deg);
-       -ms-transform: rotate(2deg);
-       -o-transform: rotate(2deg);
-       transform: rotate(2deg);
-}
-
-.token.comment,
-.token.block-comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-       color: #7D8B99;
-}
-
-.token.punctuation {
-       color: #5F6364;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.function-name,
-.token.constant,
-.token.symbol,
-.token.deleted {
-       color: #c92c2c;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.function,
-.token.builtin,
-.token.inserted {
-       color: #2f9c0a;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.token.variable {
-       color: #a67f59;
-       background: rgba(255, 255, 255, 0.5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword,
-.token.class-name {
-       color: #1990b8;
-}
-
-.token.regex,
-.token.important {
-       color: #e90;
-}
-
-.language-css .token.string,
-.style .token.string {
-       color: #a67f59;
-       background: rgba(255, 255, 255, 0.5);
-}
-
-.token.important {
-       font-weight: normal;
-}
-
-.token.bold {
-       font-weight: bold;
-}
-.token.italic {
-       font-style: italic;
-}
-
-.token.entity {
-       cursor: help;
-}
-
-.token.namespace {
-       opacity: .7;
-}
-
-@media screen and (max-width: 767px) {
-       pre[class*="language-"]:before,
-       pre[class*="language-"]:after {
-               bottom: 14px;
-               box-shadow: none;
-       }
-
-}
-
-/* Plugin styles: Line Numbers */
-pre[class*="language-"].line-numbers.line-numbers {
-       padding-left: 0;
-}
-
-pre[class*="language-"].line-numbers.line-numbers code {
-       padding-left: 3.8em;
-}
-
-pre[class*="language-"].line-numbers.line-numbers .line-numbers-rows {
-       left: 0;
-}
-
-/* Plugin styles: Line Highlight */
-pre[class*="language-"][data-line] {
-       padding-top: 0;
-       padding-bottom: 0;
-       padding-left: 0;
-}
-pre[data-line] code {
-       position: relative;
-       padding-left: 4em;
-}
-pre .line-highlight {
-       margin-top: 0;
-}
-
diff --git 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-default.css
 
b/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-default.css
deleted file mode 100644
index d97e1e7071..0000000000
--- 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/css/prism1.24.1-default.css
+++ /dev/null
@@ -1,143 +0,0 @@
-/* PrismJS 1.24.1
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
-       color: black;
-       background: none;
-/*ISIS text-shadow: 0 1px white;*/
-       font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-       font-size: 1em;
-       text-align: left;
-       white-space: pre;
-       word-spacing: normal;
-       word-break: normal;
-       word-wrap: normal;
-       line-height: 1.5;
-
-       -moz-tab-size: 4;
-       -o-tab-size: 4;
-       tab-size: 4;
-
-       -webkit-hyphens: none;
-       -moz-hyphens: none;
-       -ms-hyphens: none;
-       hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] 
::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] 
::-moz-selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
-       text-shadow: none;
-       background: #b3d4fc;
-}
-
-@media print {
-       code[class*="language-"],
-       pre[class*="language-"] {
-               text-shadow: none;
-       }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-       padding: 1em;
-       margin: .5em 0;
-       overflow: auto;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
-       background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
-       padding: .1em;
-       border-radius: .3em;
-       white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-       color: slategray;
-}
-
-.token.punctuation {
-       color: #999;
-}
-
-.token.namespace {
-       opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-       color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-       color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-       color: #9a6e3a;
-       /* This background color was intended by the author of this theme. */
-       background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-       color: #07a;
-}
-
-.token.function,
-.token.class-name {
-       color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
-       color: #e90;
-}
-
-.token.important,
-.token.bold {
-       font-weight: bold;
-}
-.token.italic {
-       font-style: italic;
-}
-
-.token.entity {
-       cursor: help;
-}
-
diff --git 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.20.js
 
b/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.20.js
deleted file mode 100644
index daec626b8a..0000000000
--- 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.20.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/* PrismJS 1.20.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-var _self="undefined"!=typeof window?window:"undefined"!=typeof 
WorkerGlobalScope&&self instanceof 
WorkerGlobalScope?self:{},Prism=function(u){var 
c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,C={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function
 e(n){return n instanceof _?new 
_(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g,"
 ")},type:function(e){return [...]
-Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0},cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"a
 [...]
-!function(s){var 
e=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,lookbehind:!0,alias:"selector"}}},url:{pattern:RegExp("url\\((?:"+e.source+"|[^\n\r()]*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"
 [...]
-Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b
 [...]
-Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|i
 [...]
-!function(t){var n={pattern:/(^[ 
\t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\]\\]|\\.)*\]|[^\]\\]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},a=t.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\s\S]*(?:
 [...]
-!function(e){var 
t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|null|open|opens|package|private|protected|provides|public|record|requires|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,a=/\b[A-Z](?:\w*[a-z]\w*)?\b/;e.la
 [...]
-!function(p){var 
a=p.languages.javadoclike={parameter:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(a,"addSupport",{value:function(a,e){"string"==typeof
 a&&(a=[a]),a.forEach(function(a){!function(a,e){var 
n="doc-comment",t=p.languages[a];if(t){var r=t[n];if(!r){var 
o={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\* [...]
-!function(a){var 
e={code:{pattern:/(^(?:\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:a.languages.java,alias:"language-java"}};a.languages.javadoc=a.languages.extend("javadoclike",{}),a.languages.insertBefore("javadoc","keyword",{"class-name":[{pattern:/(@(?:exception|throws|see|link|linkplain|value)\s+(?:[a-z\d]+\.)*)[A-Z](?:\w*[a-z]\w*)?(?:\.[A-Z](?:\w*[a-z]\w*)?)*/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(@param\s+)<[A-Z]\w*>/,lookbehind:!0,inside:{punctuation:/[.<>]/}}
 [...]
-Prism.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,number:/-?\d+\.?\d*(?:e[+-]?\d+)?/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};
-Prism.languages.properties={comment:/^[ 
\t]*[#!].*$/m,"attr-value":{pattern:/(^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?: *[=:] *| 
))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+?(?= *[=:] *| )/m,punctuation:/[=:]/};
diff --git 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.24.1.js
 
b/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.24.1.js
deleted file mode 100644
index bf705bfa01..0000000000
--- 
a/valuetypes/prism/wicket/src/main/java/org/apache/isis/valuetypes/prism/wkt/js/prism1.24.1.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/* PrismJS 1.24.1
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+asciidoc+java+javadoc+javadoclike+json+properties
 */
-var _self="undefined"!=typeof window?window:"undefined"!=typeof 
WorkerGlobalScope&&self instanceof 
WorkerGlobalScope?self:{},Prism=function(u){var 
c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function
 e(n){return n instanceof W?new 
W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g,"
 ")},type:function(e){r [...]
-Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata:/<!\[CDATA\[[\s\S]*?\]\]>/i,tag:{pattern:/<\/?(?
 [...]
-!function(s){var 
e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\bu
 [...]
-Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|c
 [...]
-Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|final
 [...]
-!function(t){var n={pattern:/(^[ 
\t]*)\[(?!\[)(?:(["'$`])(?:(?!\2)[^\\]|\\.)*\2|\[(?:[^\[\]\\]|\\.)*\]|[^\[\]\\"'$`]|\\.)*\]/m,lookbehind:!0,inside:{quoted:{pattern:/([$`])(?:(?!\1)[^\\]|\\.)*\1/,inside:{punctuation:/^[$`]|[$`]$/}},interpreted:{pattern:/'(?:[^'\\]|\\.)*'/,inside:{punctuation:/^'|'$/}},string:/"(?:[^"\\]|\\.)*"/,variable:/\w+(?==)/,punctuation:/^\[|\]$|,/,operator:/=/,"attr-value":/(?!^\s+$).+/}},a=t.languages.asciidoc={"comment-block":{pattern:/^(\/{4,})(?:\r?\n|\r)(?:[\
 [...]
-!function(e){var 
t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n="(^|[^
 [...]
-!function(p){var a=p.languages.javadoclike={parameter:{pattern:/(^[\t 
]*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t
 
]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(a,"addSupport",{value:function(a,e){"string"==typeof
 a&&(a=[a]),a.forEach(function(a){!function(a,e){var 
n="doc-comment",t=p.languages[a];if(t){var r=t[n];if(!r){var 
o={"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]* [...]
-!function(a){var e=/(^(?:[\t 
]*(?:\*\s*)*))[^*\s].*$/m,n="(?:\\b[a-zA-Z]\\w+\\s*\\.\\s*)*\\b[A-Z]\\w*(?:\\s*<mem>)?|<mem>".replace(/<mem>/g,function(){return"#\\s*\\w+(?:\\s*\\([^()]*\\))?"});a.languages.javadoc=a.languages.extend("javadoclike",{}),a.languages.insertBefore("javadoc","keyword",{reference:{pattern:RegExp("(@(?:exception|throws|see|link|linkplain|value)\\s+(?:\\*\\s*)?)(?:"+n+")"),lookbehind:!0,inside:{function:{pattern:/(#\s*)\w+(?=\s*\()/,lookbehind:!0},field:{pattern:/(#
 [...]
-Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;
-Prism.languages.properties={comment:/^[ 
\t]*[#!].*$/m,"attr-value":{pattern:/(^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?: *[=:] *(?! )| 
))(?:\\(?:\r\n|[\s\S])|[^\\\r\n])+/m,lookbehind:!0},"attr-name":/^[ 
\t]*(?:\\(?:\r\n|[\s\S])|[^\\\s:=])+(?= *[=:]| )/m,punctuation:/[=:]/};
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java
index 8282dd6e84..99bc2731d0 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/markup/MarkupComponent_reloadJs.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.scalars.markup;
 
+import java.util.List;
 import java.util.UUID;
 
 import org.apache.wicket.request.IRequestHandler;
@@ -33,22 +34,24 @@ import lombok.val;
  */
 public class MarkupComponent_reloadJs {
 
-    public static CharSequence decorate(CharSequence htmlContent, 
ResourceReference jsRef) {
-
+    public static CharSequence decorate(final CharSequence htmlContent, final 
Iterable<ResourceReference> jsRefs) {
         val targetId = UUID.randomUUID().toString();
 
-        val sb = new StringBuilder();
-        sb
+        val sb = new StringBuilder()
         .append("<div id=\"").append(targetId).append("\">\n")
         .append(htmlContent)
-        .append("\n</div>\n")
-        .append("<script type=\"text/javascript\" src=\""+getUrl(jsRef)+"\" 
defer>\n")
-        .append("\n</script>\n");
-
+        .append("\n</div>\n");
+        for(ResourceReference jsRef : jsRefs) {
+            sb.append("<script type=\"text/javascript\" 
src=\""+getUrl(jsRef)+"\" defer></script>\n");
+        }
         return sb.toString();
     }
 
-    private static String getUrl(ResourceReference jsRef) {
+    public static CharSequence decorate(final CharSequence htmlContent, final 
ResourceReference jsRef) {
+        return decorate(htmlContent, List.of(jsRef));
+    }
+
+    private static String getUrl(final ResourceReference jsRef) {
         IRequestHandler handler = new ResourceReferenceRequestHandler(jsRef, 
null);
         return RequestCycle.get().urlFor(handler).toString();
     }

Reply via email to